Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Delphi Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 2 3 4 [5]      все
 Re: Электронный больничный ЭЛН  [new]
Shuraken
Member

Откуда:
Сообщений: 605
Занятно. Удалось выяснить следующую особенность.
При формировании сообщения внутрь него вкладывается публичный сертификат пользователя. После подписания сообщения оно шифруется сертификатом ФСС и отправляется на их сервер. Там сообщение расшифровывается их закрытым ключом, проверяется ЭЦП и формируется ответное сообщение. В него вкладывается публичный сертификат (по идее, тот же самый, которым я шифровал сообщение), подписывается и шифруется.
Если я правильно понял, шифровать они должны моим публичным сертификатом, взятым из подписанного сообщения. Поправьте, если я не прав. И после отправки я расшифровываю его своим закрытым ключом и обрабатываю.
Так вот особенность заключается в том, что я шифрую сообщение сертификатом ФСС с открытым ключом ГОСТ Р 34.10-2001 (512 bit), вкладывая внутрь свой сертификат с открытым ключом, а тестовый сервер, насколько я понял, шифрует ответное сообщение сертификатом ФСС с открытым ключом ГОСТ Р 34.10-2012 256 бит - по крайней мере, в узле <ds:X509Certificate></ds:X509Certificate> содержится именно он.
И когда я пытаюсь расшифровать данные своим сертификатом, он их расшифровать не может и ошибки не выдаёт.
Когда я подменяю сертификаты в сообщении и пытаюсь их расшифровать - ругается на плохие данные.

И как исправить эту ситуацию?
25 дек 18, 19:48    [21773303]     Ответить | Цитировать Сообщить модератору
 Re: Электронный больничный ЭЛН  [new]
Shuraken
Member

Откуда:
Сообщений: 605
maratvg,

благодарю Вас, получился нужный результат. Спасибо также форуму КриптоПро, где объяснили, что ещё надо сделать. Вы всё сказали правильно - действительно в ответе надо подменить их публичный сертификат своим. Но только до того, как отправить зашифрованное сообщение на сервер, надо в нём заменить их публичный сертификат своим, который и будет использоваться для шифрования. В этом случае ответ будет зашифрован моим сертификатом, и GostDecryptSOAP спокойно это расшифрует.
Теперь надо будет выяснить, почему GostDecryptSOAP работает исключительно с сертификатами по гост-2001.
26 дек 18, 16:52    [21774023]     Ответить | Цитировать Сообщить модератору
 Re: Электронный больничный ЭЛН  [new]
Jornada
Member

Откуда: Санкт-Петербург
Сообщений: 10
Shuraken,
Приветствую. Можно как то лично связаться с Вами? Тоже бьюсь ключами 2012 года. Я там письмо отправил на ваш регистрационный ящик, ответьте плиз..
26 дек 18, 17:31    [21774062]     Ответить | Цитировать Сообщить модератору
 Re: Электронный больничный ЭЛН  [new]
Shuraken
Member

Откуда:
Сообщений: 605
Jornada,

Shuraken28@yandex.ru
26 дек 18, 21:23    [21774271]     Ответить | Цитировать Сообщить модератору
 Re: Электронный больничный ЭЛН  [new]
Shuraken
Member

Откуда:
Сообщений: 605
Друзья!
Может кто-нибудь из вас проверить, как работают функции encryptMsg и decryptMsg? Выдают ли ошибку? А то я зарегистрировал типы, пытаюсь вызвать функции шифрования и дешифровки, а мне лезут ошибки. При этом в одной из предыдущих версий длл всё работает нормально. Поскольку здесь стоит ограничение в 150 Кб, выложил архив на яндекс-диск.

С уважением, Александр.

GostCryptography2020.rar
27 дек 18, 18:24    [21775116]     Ответить | Цитировать Сообщить модератору
 Re: Электронный больничный ЭЛН  [new]
sql2012
Member

Откуда: РФ
Сообщений: 656
Shuraken,

без тестового проекта... без xml... серьезно?
27 дек 18, 23:36    [21775325]     Ответить | Цитировать Сообщить модератору
 Re: Электронный больничный ЭЛН  [new]
Shuraken
Member

Откуда:
Сообщений: 605
sql2012,

Да, согласен. Вот проект. При запуске загружает список личных сертификатов с открытым ключом по гост-2001, гост-2012 256 бит и гост-2012 512 бит. При нажатии на кнопку "Зашифровать" пытается зашифровать xml из проекта выбранным сертификатом. Я не могу зашифровать сообщение сертификатами с гост-2012, а лишь одним сертификатом с гост-2001. Прошу проверить, будет ли шифроваться сообщение у вас сертификатами с гост-2012.

С уважением, Александр.

К сообщению приложен файл (EncryptMessage.rar - 8Kb) cкачать
28 дек 18, 02:11    [21775370]     Ответить | Цитировать Сообщить модератору
 Re: Электронный больничный ЭЛН  [new]
sql2012
Member

Откуда: РФ
Сообщений: 656
Shuraken,

правильно всё сделал?
взял и поставил арм - http://fss.ru/ru/fund/download/55818/
получил тестовые сертификаты
скомпилировал и запустил приложение

2001 - Успешно
2012 - Набор ключей не определен.
2012-Strong - Набор ключей не определен.

для других ключей - выдает разные ошибки (исключения\плохой UID что-то там...)

К сообщению приложен файл. Размер - 36Kb
28 дек 18, 10:32    [21775497]     Ответить | Цитировать Сообщить модератору
 Re: Электронный больничный ЭЛН  [new]
sql2012
Member

Откуда: РФ
Сообщений: 656
Shuraken,

если из delphi запускать, падает в asm, потом выдает в итоге: Плохие данные

К сообщению приложен файл. Размер - 37Kb
28 дек 18, 10:39    [21775508]     Ответить | Цитировать Сообщить модератору
 Re: Электронный больничный ЭЛН  [new]
Shuraken
Member

Откуда:
Сообщений: 605
sql2012,

да, всё верно. Значит, проблема в их длл. Что самое странное, их арм работает с сертификатом фсс по гост-2012 256, я проверял, и данные нормально загружались. А когда пытаешься это сделать самостоятельно, то лезут ошибки... странно, почему так получается?
28 дек 18, 10:42    [21775512]     Ответить | Цитировать Сообщить модератору
 Re: Электронный больничный ЭЛН  [new]
Jornada
Member

Откуда: Санкт-Петербург
Сообщений: 10
Shuraken,

Только сегодня в группе ФСС писали, что брали DLL не из состава их ПО, а версию с гитхаба рахработчика. Тот вариант работает с сертификатом ФСС 2012 года
28 дек 18, 19:37    [21776026]     Ответить | Цитировать Сообщить модератору
 Re: Электронный больничный ЭЛН  [new]
Shuraken
Member

Откуда:
Сообщений: 605
Jornada
...брали DLL не из состава их ПО, а версию с гитхаба рахработчика.

А можно ссылочку?
29 дек 18, 19:47    [21776604]     Ответить | Цитировать Сообщить модератору
 Re: Электронный больничный ЭЛН  [new]
Shuraken
Member

Откуда:
Сообщений: 605
Пытаюсь разобраться с GostCryptography. Скачал версию с гитхаба разработчика: GostCryptography, батником собираю, получаю dll (во вложении). Пытаюсь regasm-ом зарегистрировать - пишет "ни одного типа не найдено". TlbExp создаёт GostCryptography.tlb, но он пустой (также во вложении).
Версия DLL (gostcryptography2020.dll во вложении), поставляемая с АРМ ФСС совпадает по номеру с версией разработчика (2.0.2), но больше на 6Кб и весь необходимый функционал у неё есть, который нормально регистрируется, нормально экспортируется в tlb-файл, нормально переводится в Делфи. Но при попытке шифрования через GostEncryptSOAP выдаёт ошибку: ASN.1 encoded byte array contains invalid structure "GostCryptography.ASN1.PKI.GOSTR34102001.GOSTR34102001PublicKeyParameters". При этом ошибка возникает как при использовании сертификата ФСС с открытым ключом по гост-2001, так и с ключом по гост-2012. Стоит КриптоПро и всё.
Что самое интересное, АРМ ФСС этой ошибки не выдаёт и спокойно загружает тестовые данные как на сертификате по гост-2001, так и по гост-2012.

Если несложно, проверьте пожалуйста, какая длл создаётся у вас при использовании версии с сайта разработчика? В ней также, как и у меня, отсутствуют ссылки на используемый функционал?
И такой вопрос: есть ли у кого-нибудь код шифрования сообщения при помощи gostcryptography.dll, но без использования класса GostEncryptSOAP. Если есть, можете поделиться?

С уважением, Александр.
15 янв 19, 12:43    [21785552]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 2 3 4 [5]      все
Все форумы / Delphi Ответить