Задача
Создать внешнюю обработку для СМЭВ-3:
1. На форме обработки создать - 1 поле для ввода идентификатора сертификата электронной подписи (идентификатор берется из справочника СертификатыКлючейЭлектроннойПодписиИШифрования»)
2. 2-е поле для ввода текста (приложен ниже), который будет подписан ЭП
3. Флажек переключения (расчет хэш и подпись) по ГОСТ 34.11-94 или ГОСТ Р 34.10.2012
4. Кнопка «подписать» При ее нажатии текст будет подписан по нижеописанным требованиям. Выбор сертификата подписи происходит автоматически, т.е. находится сертификат в справочнике «СертификатыКлючейЭлектроннойПодписиИШифрования» по его идентификатору прописанному на форме обработки. Пароль на закрытый ключ сертификата должен прописан в коде (по умолчанию 12345678).
5. 3-е поле в нем отобразится уже подписанный вариант текста из 2-го поля
6. Обработка должна работать на конфигурации 1С:Библиотека стандартных подсистем, редакция 3.0 (3.0.1.142 )
Проверка осуществляется по схеме 1.2.
https://smev3.gosuslugi.ru/portal/checkxmlform.jsp ,при этом рабочий пока ГОСТ 34.11-94
Прикладываю текст который должен быть подписан и пройти проверку
<?xml version="1.0" encoding="utf-8"?><S:Envelope xmlns:S="
http://schemas.xmlsoap.org/soap/envelope/"><S:Body><GetResponseRequest xmlns:xsd="
http://www.w3.org/2001/XMLSchema" xmlns:xsi="
http://www.w3.org/2001/XMLSchema-instance" xmlns="urn://x-artefacts-smev-gov-ru/services/message-exchange/types/1.2"><MessageTypeSelector Id="SIGNED_BY_CALLER" xmlns="urn://x-artefacts-smev-gov-ru/services/message-exchange/types/basic/1.2"><Timestamp>2018-01-18T13:09:49.6183629+03:00</Timestamp></MessageTypeSelector><CallerInformationSystemSignature><Signature xmlns="
http://www.w3.org/2000/09/xmldsig#"><SignedInfo><CanonicalizationMethod Algorithm="
http://www.w3.org/2001/10/xml-exc-c14n#" /><SignatureMethod Algorithm="
http://www.w3.org/2001/04/xmldsig-more#gostr34102001-gostr3411" /><Reference URI="#SIGNED_BY_CALLER"><Transforms><Transform Algorithm="
http://www.w3.org/2001/10/xml-exc-c14n#" /><Transform Algorithm="urn://smev-gov-ru/xmldsig/transform" /></Transforms><DigestMethod Algorithm="
http://www.w3.org/2001/04/xmldsig-more#gostr3411" /><DigestValue>%DigestValue%</DigestValue></Reference></SignedInfo><SignatureValue>%SignatureValue%</SignatureValue><KeyInfo><X509Data><X509Certificate>%BinarySecurityToken%</X509Certificate></X509Data></KeyInfo></Signature></CallerInformationSystemSignature></GetResponseRequest></S:Body></S:Envelope>
Алгоритм подписания от техподдержки Минкомсвязи
1. При формировании подписи необходимо использовать именно те алгоритмы, которые указаны в Методических рекомендациях.
2. Напоминаем, алгоритм создания подписи следующий:
1. Берем все содержимое узлаSenderProvidedRequestData (или MessageTypeSelector)
2. Проводим его каноникализацию
3. Проводим нормализацию
4. Рассчитываем хэш, по нормализованным данным
5. Формируем ЭП-ОВ в CallerInformationSystemSignature
a. Содержимое хэша записываем в CallerInformationSystemSignature\Signature\SignedInfo\DigestValue
b. Проводим каноникализацию , затем нормализацию элемента CallerInformationSystemSignature\Signature\SignedInfo
c. Рассчитываем хэш, от данных после нормализации
d. Рассчитываем подпись от хэша на предыдущем этапе
e. Записываем значение подписи в CallerInformationSystemSignature\Signature\SignatureValue
f. Записываем значение сертификата для проверки в CallerInformationSystemSignature\Signature\KeyInfo\X509Data\X509Certificate
3. После подписания данных, данные не должны изменяться.
4. Для правильного подписания сообщений и формирования правильного полного конверта Вы можете использовать клиент СМЭВ 3, который доступен для скачивания на Технологическом портале СМЭВ 3.0 (
http://smev3.gosuslugi.ru/portal/) в разделе часто-задаваемые вопросы (инструкция по установке клиента внутри архива) и на главной странице Технологического портала СМЭВ-3