Статус: Эксперт
Группы: Участники
Зарегистрирован: 05.03.2015(UTC) Сообщений: 1,187  Откуда: Иркутская область Сказал(а) «Спасибо»: 77 раз Поблагодарили: 271 раз в 255 постах
|
Цитата:Помогите разобраться с ошибкой. Пытаюсь подписать запрос для отправки в СМЭВ. При попытке подписать XML в режиме CADESCOM_XML_SIGNATURE_TYPE_TEMPLATE, получаю ошибку "An error was encountered while processing an XML digital signature" Добрый день. Странно, что пример по структуре для смэв 2, да и то не хватает AppData. На смэв 3 вообще непохоже ни структурой ни подписью. Ближе к вопросу - предположу, что как минимум дело в том, что в шаблоне указаны алгоритмы гост-2001, а реальный ключ скорее всего гост-2012, так как гост-2001 запрещен в 2020 году. SignatureMethod должен совпадать с алгоритмом ключа, ну и реальный СМЭВ скорее всего откажется принимать смешанный вариант когда DigestMethod и SignatureMethod разных алгоритмов. Код:urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102012-gostr34112012-256
urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34112012-256
Цитата:1. Может ли данное расширение работать с ключами, на контейнеры которых установлен пароль? 2. Если нет, подскажите пожалуйста, методы в интерфейсе С, которые могут работать с такими запароленными контейнерами. 3. Как задать свой адрес ocsp-сервиса? Я правильно понимаю, что в таком случае проверка любой подписи, в сертификате которой не указан oscp, пойдет через этот "свой ocsp-сервис"? 4. Может ли так оказаться что после запроса в сторону своего ocsp-сервиса, продолжится проверка по crl спискам из сертификата подписи? 1. Нужно задать пароль до фактического использования ключа. Полагаю, что это возможно в расширении (точнее надо искать в справке). Многое зависит будет ли приложение в серверном режиме без пользователя или тихом режиме или пользователь сможет ввести пароль. Если пользователь может ввести пароль можно вообще не беспокоиться, а вот в серверном или тихом режиме пароль надо или задать в приложении или запомнить средствами криптопровайдера. 2. Насколько помню для этого можно использовать CryptSetProvParam PP_EXCHANGE_PIN (или PP_SIGNATURE_PIN) Там есть градации от криптопровайдера и носителя, некоторые носители поддерживают также смену пинкода этой функцией, но большинство только указывает пароль для следующей операции с ключом. 3. можно задать отдельно при проверке по мере необходимости. В справке говорится про специальные свойства хранилища сертификатов для сертификата УЦ - так можно адресовать конкретный УЦ. И потом уже групповая политика - для всех подписей. 4. полагаю да, если ocsp ответа не будет или сам ответ не удается проверить. Отредактировано пользователем 28 декабря 2020 г. 11:08:58(UTC)
| Причина: Не указана
|
 1 пользователь поблагодарил two_oceans за этот пост.
|
bsoft оставлено 14.01.2021(UTC)
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 01.03.2017(UTC) Сообщений: 70  Откуда: Москва Поблагодарили: 13 раз в 12 постах
|
Цитата:Цитата: 1. Может ли данное расширение работать с ключами, на контейнеры которых установлен пароль? 2. Если нет, подскажите пожалуйста, методы в интерфейсе С, которые могут работать с такими запароленными контейнерами. 3. Как задать свой адрес ocsp-сервиса? Я правильно понимаю, что в таком случае проверка любой подписи, в сертификате которой не указан oscp, пойдет через этот "свой ocsp-сервис"? 4. Может ли так оказаться что после запроса в сторону своего ocsp-сервиса, продолжится проверка по crl спискам из сертификата подписи?
1. Нужно задать пароль до фактического использования ключа. Полагаю, что это возможно в расширении (точнее надо искать в справке). Многое зависит будет ли приложение в серверном режиме без пользователя или тихом режиме или пользователь сможет ввести пароль. Если пользователь может ввести пароль можно вообще не беспокоиться, а вот в серверном или тихом режиме пароль надо или задать в приложении или запомнить средствами криптопровайдера. 2. Насколько помню для этого можно использовать CryptSetProvParam PP_EXCHANGE_PIN (или PP_SIGNATURE_PIN) Там есть градации от криптопровайдера и носителя, некоторые носители поддерживают также смену пинкода этой функцией, но большинство только указывает пароль для следующей операции с ключом. 3. можно задать отдельно при проверке по мере необходимости. В справке говорится про специальные свойства хранилища сертификатов для сертификата УЦ - так можно адресовать конкретный УЦ. И потом уже групповая политика - для всех подписей. 4. полагаю да, если ocsp ответа не будет или сам ответ не удается проверить. Добрый день. 1. Да, может. В коде задать пароль можно, используя свойтво Signer.KeyPin. 3. Можно воспользоваться групповыми политиками или задать в свойствах сертификата издателя для данного сертификата. Порядок обхода указан здесь. Если определить статус сертификата через OCSP не удалось, используются CRL. 4. Да. Отредактировано пользователем 28 декабря 2020 г. 12:27:54(UTC)
| Причина: Не указана
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 08.12.2020(UTC) Сообщений: 17  Сказал(а) «Спасибо»: 11 раз
|
Автор: two_oceans  Странно, что пример по структуре для смэв 2, да и то не хватает AppData. На смэв 3 вообще непохоже ни структурой ни подписью. Это Региональный СМЭВ. Оператор РСМЭВ создал на его базе функционал по централизованной регистрации заявлений на государственные (муниципальные) услуги. Я пишу адаптер для муниципальной информационной системы. Автор: two_oceans  Ближе к вопросу - предположу, что как минимум дело в том, что в шаблоне указаны алгоритмы гост-2001, а реальный ключ скорее всего гост-2012, так как гост-2001 запрещен в 2020 году. SignatureMethod должен совпадать с алгоритмом ключа, ну и реальный СМЭВ скорее всего откажется принимать смешанный вариант когда DigestMethod и SignatureMethod разных алгоритмов. Спасибо! Помогло.
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 25.11.2019(UTC) Сообщений: 28
Сказал(а) «Спасибо»: 1 раз
|
Добрый день. Не могу разобраться с отделенной подписью. Код:
import sys
sys.path.append(r'/usr/local/lib/python3.8/pycades.so')
import pycades
store = pycades.Store()
store.Open(pycades.CADESCOM_CONTAINER_STORE, pycades.CAPICOM_MY_STORE, pycades.CAPICOM_STORE_OPEN_MAXIMUM_ALLOWED)
certs = store.Certificates
print(certs.Count)
assert(certs.Count != 0), "Certificates with private key not found"
signer = pycades.Signer()
signer.Certificate = certs.Item(1)
content = "test"
signedData = pycades.SignedData()
signedData.Content = content
signature = signedData.SignCades(signer, pycades.CADESCOM_CADES_BES, True)
print("--Signature--")
print(signature)
print(len(signature))
print("----")
_signedData = pycades.SignedData()
_signedData.Content = content
_signedData.VerifyCades(signature, pycades.CADESCOM_CADES_BES, True)
Получаю подпись. Размер подписи (base64 c переносами) = 8180 символов. Далее создаю текстовый файл с содержимым "test" и пытаюсь проверить эту подпись в криптоАРМ. Получаю отрицательный результат. Создаю отделенную подпись при помощи расширения pycryptoprosdk. Проверяю в том же криптоАрме с тем же файлом "test" - получаю положительный вариант. При этом, если создать присоединенную подпись в pycades, то в криптоАрме она проверяется нормально. Так же в структуре подписи, созданной в pycades: Код:
SEQUENCE (2 elem)
OBJECT IDENTIFIER 1.2.840.113549.1.9.4 messageDigest (PKCS #9)
SET (1 elem)
OCTET STRING (32 byte) 8BE25D8DB2AF0414B08307B23EF01892DE51D0A164605B41BDDE36ADAC5C6413
В структуре подписи, созданной pycryptoprosdk: Код:
SEQUENCE (2 elem)
OBJECT IDENTIFIER 1.2.840.113549.1.9.4 messageDigest (PKCS #9)
SET (1 elem)
OCTET STRING (32 byte) 12A50838191B5504F1E5F2FD078714CF6B592B9D29AF99D0B10D8D02881C3857
Если хэшировать файл с содержимым "test" в консольной утилите, на выходе получаем хэш: Код:
/opt/cprocsp/bin/amd64/cryptcp -hash -dir /tmp -hashAlg 1.2.643.7.1.1.2.2 -hex /tmp/test
12A50838191B5504F1E5F2FD078714CF6B592B9D29AF99D0B10D8D02881C3857
При этом само расширение pycades собственную подпись проверяет успешно. Отредактировано пользователем 29 декабря 2020 г. 20:16:01(UTC)
| Причина: Не указана
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 25.11.2019(UTC) Сообщений: 28
Сказал(а) «Спасибо»: 1 раз
|
А можно ли, имея на руках подпись, используя данное расширение получить данные сертификата, ключем которого эта подпись создавалась?
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 03.12.2018(UTC) Сообщений: 633  Сказал(а) «Спасибо»: 59 раз Поблагодарили: 123 раз в 121 постах
|
Добрый день! обратите внимание на https://docs.cryptopro.r.../plugin/content-encodingзадайте ContentEncoding в CADESCOM_BASE64_TO_BINARY = 0x01 затем данные закодируйте в base64 и подайте в signedData.Content т.к. content = "test" в STRING_TO_UCS2LE будет иметь совершенно другой вид. |
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 25.11.2019(UTC) Сообщений: 28
Сказал(а) «Спасибо»: 1 раз
|
Автор: Санчир Момолдаев  Добрый день! обратите внимание на https://docs.cryptopro.r.../plugin/content-encodingзадайте ContentEncoding в CADESCOM_BASE64_TO_BINARY = 0x01 затем данные закодируйте в base64 и подайте в signedData.Content т.к. content = "test" в STRING_TO_UCS2LE будет иметь совершенно другой вид. Да, после установки CADESCOM_BASE64_TO_BINARY работает корректно. Благодарю )
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 03.12.2018(UTC) Сообщений: 633  Сказал(а) «Спасибо»: 59 раз Поблагодарили: 123 раз в 121 постах
|
Автор: mstdoc  А можно ли, имея на руках подпись, используя данное расширение получить данные сертификата, ключем которого эта подпись создавалась? у проверяемого SignedData получить список Signer и т.д. |
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 02.01.2021(UTC) Сообщений: 2
Сказал(а) «Спасибо»: 1 раз
|
Добрый день, я бы хотел создать сайт на django для учёбы, чтобы там была возможность войти по ЭЦП и организовать подписание документов. Возможно ли реализовать это при помощи данного расширения? Или есть готовые решения?
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 03.12.2018(UTC) Сообщений: 633  Сказал(а) «Спасибо»: 59 раз Поблагодарили: 123 раз в 121 постах
|
Автор: Clutcher  Добрый день, я бы хотел создать сайт на django для учёбы, чтобы там была возможность войти по ЭЦП и организовать подписание документов. Возможно ли реализовать это при помощи данного расширения? Или есть готовые решения? Добрый день. Именно на python примера нет. Общая мысль: у клиента должна подписываться некоторая уникальная строка которая приходит с сервера. На сервере проверяется подпись и сравниваются подписанные данные. Front: html + js (cades plugin) Backend: python + pycades |
|
 1 пользователь поблагодарил Санчир Момолдаев за этот пост.
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 25.11.2019(UTC) Сообщений: 28
Сказал(а) «Спасибо»: 1 раз
|
Добрый день. Подскажите пожалуйста такой момент. При использовании упрощенной функции CadesVerifyDetachedMessage в выходной структуре ppVerificationInfo присутствует поле dwStatus. В случае возникновения ошибки при проверке подписи, в данное поле попадает более подробный статус ошибки (https://docs.cryptopro.ru/cades/reference/cadesc/cadesc-struct/cades_verification_info) Код:CADES_VERIFY_SUCCESS Успешная проверка подписи.
CADES_VERIFY_INVALID_REFS_AND_VALUES Отсутствуют или имеют неправильный формат атрибуты со ссылками и значениями доказательств подлинности.
CADES_VERIFY_SIGNER_NOT_FOUND Сертификат, на ключе которого было подписано сообщение, не найден.
CADES_VERIFY_NO_VALID_SIGNATURE_TIMESTAMP В сообщении не найден действительный штамп времени на подпись.
CADES_VERIFY_REFS_AND_VALUES_NO_MATCH Значения ссылок на доказательства подлинности и сами доказательства, вложенные в сообщение, не соответствуют друг другу.
CADES_VERIFY_NO_CHAIN Не удалось построить цепочку для сертификата, на ключе которого подписано сообщение.
CADES_VERIFY_END_CERT_REVOCATION Ошибка проверки конечного сертификата на отзыв.
CADES_VERIFY_CHAIN_CERT_REVOCATION Ошибка проверки сертификата цепочки на отзыв.
CADES_VERIFY_BAD_SIGNATURE Сообщение содержит неверную подпись.
CADES_VERIFY_NO_VALID_CADES_C_TIMESTAMP В сообщении не найден действительный штамп времени на доказательства подлинности подписи.
CADES_VERIFY_ECONTENTTYPE_NO_MATCH Значение подписанного атрибута content-type не совпадает со значением, указанным в поле encapContentInfo.eContentType.
Можно ли подобный статус ошибки получить при использовании signedData.VerifyCades? Или эти статусы можно получить на основе полученного исключения? Если да, то где посмотреть список всех возможных исключений? Т.е. вопрос - как получить более человекопонятное описание ошибки, возникшей при проверке подписи?
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 08.12.2020(UTC) Сообщений: 17  Сказал(а) «Спасибо»: 11 раз
|
Подскажите что делать, чтобы при подписании XML кодировка не менялась. Вставил XML в signedXML: Код: # Подписываем запрос
signedXML = pycades.SignedXML()
signedXML.Content = etree.tostring(request_doc, pretty_print=False, encoding='unicode')
print(signedXML.Content)
Вывод: Код: ...
<soapenv:Body wsu:Id="BodyId-F6AC1DDCAC4D4FBF9078EEB332F502C4">
<v2:newActionRequest>
<v2:actionCode>action396</v2:actionCode>
<v2:addAppId>4334</v2:addAppId>
<v2:addAppIdCode>ogrn</v2:addAppIdCode>
<v2:addSocId>10000000456396</v2:addSocId>
<v2:addSocIdCode>atk</v2:addSocIdCode>
<v2:applicantId>1396</v2:applicantId>
<v2:date>2015-03-26T20:30:00</v2:date>
<v2:empFio>Смирнов Иван Сергеевич</v2:empFio>
<v2:empId>100000396</v2:empId>
<v2:empJob>Специалист</v2:empJob>
<v2:finished>false</v2:finished>
<v2:fromIS>ИС1</v2:fromIS>
<v2:innerId>5c0b8438-f979-11e4-9233-080027c60396</v2:innerId>
<v2:linkedAction>a506abf4-2432-4182-89c9-661fede25604</v2:linkedAction>
<v2:name>Новое событие!</v2:name>
<v2:orgName>Ведомство</v2:orgName>
<v2:ownerOrg>Ведомство2</v2:ownerOrg>
<v2:rguId>500000000456396</v2:rguId>
<v2:actionSoap>
<v2:path>/actionsoap/2015/05/26/a506abf4-2432-4182-89c9-661fede256604/_actionSoap400.xml</v2:path>
<v2:length>24</v2:length>
<v2:body>Tuj8Rj4fnj4j4nV44jv4894fNfj39HFh33</v2:body>
<v2:name>_actionSoap400.xml</v2:name>
</v2:actionSoap>
<v2:socId>2000000456396</v2:socId>
<v2:status>2</v2:status>
<v2:statusDate>2015-03-27T20:30:00</v2:statusDate>
<v2:toIS>ИС2</v2:toIS>
<v2:type>petition</v2:type>
<v2:uniqId>a506abf4-2432-4182-89c9-661fede25400</v2:uniqId>
</v2:newActionRequest>
</soapenv:Body>
...
После подписания результат перекодирован: Код:signedXML.SignatureType = pycades.CADESCOM_XML_SIGNATURE_TYPE_TEMPLATE
signedXML.SignatureMethod = "urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102012-gostr34112012-256"
signedXML.DigestMethod = "urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34112012-256"
request = signedXML.Sign(signer)
print(request)
Вывод: Код:
...
<soapenv:Body wsu:Id="BodyId-F6AC1DDCAC4D4FBF9078EEB332F502C4">
<v2:newActionRequest>
<v2:actionCode>action396</v2:actionCode>
<v2:addAppId>4334</v2:addAppId>
<v2:addAppIdCode>ogrn</v2:addAppIdCode>
<v2:addSocId>10000000456396</v2:addSocId>
<v2:addSocIdCode>atk</v2:addSocIdCode>
<v2:applicantId>1396</v2:applicantId>
<v2:date>2015-03-26T20:30:00</v2:date>
<v2:empFio>Смирнов Иван Сергеевич</v2:empFio>
<v2:empId>100000396</v2:empId>
<v2:empJob>Специалист</v2:empJob>
<v2:finished>false</v2:finished>
<v2:fromIS>ИС1</v2:fromIS>
<v2:innerId>5c0b8438-f979-11e4-9233-080027c60396</v2:innerId>
<v2:linkedAction>a506abf4-2432-4182-89c9-661fede25604</v2:linkedAction>
<v2:name>Новое событие!</v2:name>
<v2:orgName>Ведомство</v2:orgName>
<v2:ownerOrg>Ведомство2</v2:ownerOrg>
<v2:rguId>500000000456396</v2:rguId>
<v2:actionSoap>
<v2:path>/actionsoap/2015/05/26/a506abf4-2432-4182-89c9-661fede256604/_actionSoap400.xml</v2:path>
<v2:length>24</v2:length>
<v2:body>Tuj8Rj4fnj4j4nV44jv4894fNfj39HFh33</v2:body>
<v2:name>_actionSoap400.xml</v2:name>
</v2:actionSoap>
<v2:socId>2000000456396</v2:socId>
<v2:status>2</v2:status>
<v2:statusDate>2015-03-27T20:30:00</v2:statusDate>
<v2:toIS>ИС2</v2:toIS>
<v2:type>petition</v2:type>
<v2:uniqId>a506abf4-2432-4182-89c9-661fede25400</v2:uniqId>
</v2:newActionRequest>
</soapenv:Body>
...
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 01.03.2017(UTC) Сообщений: 70  Откуда: Москва Поблагодарили: 13 раз в 12 постах
|
Цитата:Т.е. вопрос - как получить более человекопонятное описание ошибки, возникшей при проверке подписи? Добрый день! Если возникает ошибка, то выбрасывается исключение с кодом возврата вида 0x8009100E. Этот код возврата аналогичен кодам ошибок на windows. Их описание можно найти, например, с помощью Microsoft Error Lookup Tool или просто вбить в поиск. Если этой информации недостаточно и надо узнать, на каком сертификате прерывается построение цепочки, можно задать системную переменную Код:export CP_PRINT_CHAIN_DETAIL=1
для вывода дебаговой информации при построении. Если этого тоже недостаточно, можно включить дебаговые записи для библиотек cades.
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 01.03.2017(UTC) Сообщений: 70  Откуда: Москва Поблагодарили: 13 раз в 12 постах
|
Цитата:Подскажите что делать, чтобы при подписании XML кодировка не менялась. В самом xml документе кодировка не указана?
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 25.11.2019(UTC) Сообщений: 28
Сказал(а) «Спасибо»: 1 раз
|
Автор: Ситдиков Денис  Цитата:Т.е. вопрос - как получить более человекопонятное описание ошибки, возникшей при проверке подписи? Добрый день! Если возникает ошибка, то выбрасывается исключение с кодом возврата вида 0x8009100E. Этот код возврата аналогичен кодам ошибок на windows. Их описание можно найти, например, с помощью Microsoft Error Lookup Tool или просто вбить в поиск. Спасибо. Но хотелось бы видеть весь перечень ошибок ДО момента их возникновения, чтобы встроить обработчик в свое приложение и показывать человеку понятное сообщение. Автор: Ситдиков Денис  Если этой информации недостаточно и надо узнать, на каком сертификате прерывается построение цепочки, можно задать системную переменную Код:export CP_PRINT_CHAIN_DETAIL=1
для вывода дебаговой информации при построении. Если этого тоже недостаточно, можно включить дебаговые записи для библиотек cades. К сожалению, в докере включить дебажные логи так и не удалось... Кроме того, задача стоит не в том, чтобы админ мог в логах посмотреть что произошло (хотя это тоже весьма полезная возможность), а чтобы человек прямо в процессе мог понять что пошло не так.
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 01.03.2017(UTC) Сообщений: 70  Откуда: Москва Поблагодарили: 13 раз в 12 постах
|
Цитата:Спасибо. Но хотелось бы видеть весь перечень ошибок ДО момента их возникновения, чтобы встроить обработчик в свое приложение и показывать человеку понятное сообщение. Посмотрите файл errormsg.cpp из архива с исходниками, там для части ошибок есть сопоставление кода возврата и описания ошибки. Более полного и подробного перечня нет.
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 08.12.2020(UTC) Сообщений: 17  Сказал(а) «Спасибо»: 11 раз
|
Автор: Ситдиков Денис  Цитата:Подскажите что делать, чтобы при подписании XML кодировка не менялась. В самом xml документе кодировка не указана? В XML кодировка не указана.
Код:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:v2="http://history.smev.ru/v2/" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
<soapenv:Header>
<wsse:Security soapenv:actor="http://smev.gosuslugi.ru/actors/smev">
<wsse:BinarySecurityToken EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary" ValueType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509v3" wsu:Id="CertId-0DA773FF46AF4146A6B28772356CBFC7">MIIC9DCCAqOgAwIBAgITEgBNeGnfO0Pn2Z8CSgABAE14aTAIBgYqhQMCAgMwfzEj
MCEGCSqGSIb3DQEJARYUc3VwcG9ydEBjcnlwdG9wcm8ucnUxCzAJBgNVBAYTAlJV
MQ8wDQYDVQQHEwZNb3Njb3cxFzAVBgNVBAoTDkNSWVBUTy1QUk8gTExDMSEwHwYD
VQQDExhDUllQVE8tUFJPIFRlc3QgQ2VudGVyIDIwHhcNMjAxMjE4MDUzNTQ2WhcN
MjEwMzE4MDU0NTQ2WjAPMQ0wCwYDVQQDDAR0ZXN0MGYwHwYIKoUDBwEBAQEwEwYH
KoUDAgIkAAYIKoUDBwEBAgIDQwAEQHoGxXpnW++v9D9J/9iMV+lkqMMdm17sfryC
glIhBx1EGrU1rBcPTHPo72QkYdqhWt0m3sK7UfazIU/X/gntqOmjggFhMIIBXTAO
BgNVHQ8BAf8EBAMCBPAwHQYDVR0OBBYEFPADAUN3heaoRqPiGj7I5bmOCC0NMB8G
A1UdIwQYMBaAFE6DPhRp7+xdepUrXxH+NzIWSVUrMFwGA1UdHwRVMFMwUaBPoE2G
S2h0dHA6Ly90ZXN0Y2EuY3J5cHRvcHJvLnJ1L0NlcnRFbnJvbGwvQ1JZUFRPLVBS
TyUyMFRlc3QlMjBDZW50ZXIlMjAyKDEpLmNybDCBrAYIKwYBBQUHAQEEgZ8wgZww
ZAYIKwYBBQUHMAKGWGh0dHA6Ly90ZXN0Y2EuY3J5cHRvcHJvLnJ1L0NlcnRFbnJv
bGwvdGVzdC1jYS0yMDE0X0NSWVBUTy1QUk8lMjBUZXN0JTIwQ2VudGVyJTIwMigx
KS5jcnQwNAYIKwYBBQUHMAGGKGh0dHA6Ly90ZXN0Y2EuY3J5cHRvcHJvLnJ1L29j
c3Avb2NzcC5zcmYwCAYGKoUDAgIDA0EAsx4uU1GKtVwpt17SNGuSJ1bvaRRImlFg
QoAlbR222GFmLMj2Q2Yaq/7fzGE1p3O6MpFzzaMyG4lv46eTsl4ePg==
</wsse:BinarySecurityToken>
<ds:Signature>
<ds:SignedInfo>
<ds:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
<ds:SignatureMethod Algorithm="urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102012-gostr34112012-256"/>
<ds:Reference URI="#BodyId-F6AC1DDCAC4D4FBF9078EEB332F502C4">
<ds:Transforms>
<ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
</ds:Transforms>
<ds:DigestMethod Algorithm="urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34112012-256"/>
<ds:DigestValue/>
</ds:Reference>
</ds:SignedInfo>
<ds:SignatureValue>
</ds:SignatureValue>
<ds:KeyInfo>
<wsse:SecurityTokenReference>
<wsse:Reference URI="#CertId-0DA773FF46AF4146A6B28772356CBFC7" ValueType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509v3"/>
</wsse:SecurityTokenReference>
</ds:KeyInfo>
</ds:Signature>
</wsse:Security>
</soapenv:Header>
<soapenv:Body wsu:Id="BodyId-F6AC1DDCAC4D4FBF9078EEB332F502C4">
<v2:newActionRequest>
<v2:actionCode>action396</v2:actionCode>
<v2:addAppId>4334</v2:addAppId>
<v2:addAppIdCode>ogrn</v2:addAppIdCode>
<v2:addSocId>10000000456396</v2:addSocId>
<v2:addSocIdCode>atk</v2:addSocIdCode>
<v2:applicantId>1396</v2:applicantId>
<v2:date>2015-03-26T20:30:00</v2:date>
<v2:empFio>Смирнов Иван Сергеевич</v2:empFio>
<v2:empId>100000396</v2:empId>
<v2:empJob>Специалист</v2:empJob>
<v2:finished>false</v2:finished>
<v2:fromIS>ИС1</v2:fromIS>
<v2:innerId>5c0b8438-f979-11e4-9233-080027c60396</v2:innerId>
<v2:linkedAction>a506abf4-2432-4182-89c9-661fede25604</v2:linkedAction>
<v2:name>Новое событие!</v2:name>
<v2:orgName>Ведомство</v2:orgName>
<v2:ownerOrg>Ведомство2</v2:ownerOrg>
<v2:rguId>500000000456396</v2:rguId>
<v2:actionSoap>
<v2:path>/actionsoap/2015/05/26/a506abf4-2432-4182-89c9-661fede256604/_actionSoap400.xml</v2:path>
<v2:length>24</v2:length>
<v2:body>Tuj8Rj4fnj4j4nV44jv4894fNfj39HFh33</v2:body>
<v2:name>_actionSoap400.xml</v2:name>
</v2:actionSoap>
<v2:socId>2000000456396</v2:socId>
<v2:status>2</v2:status>
<v2:statusDate>2015-03-27T20:30:00</v2:statusDate>
<v2:toIS>ИС2</v2:toIS>
<v2:type>petition</v2:type>
<v2:uniqId>a506abf4-2432-4182-89c9-661fede25400</v2:uniqId>
</v2:newActionRequest>
</soapenv:Body>
</soapenv:Envelope>
Отредактировано пользователем 13 января 2021 г. 2:03:59(UTC)
| Причина: Не указана
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 29.10.2020(UTC) Сообщений: 56  Сказал(а) «Спасибо»: 10 раз
|
Добрый день! С помощью pycades можно получить отпечаток сертификата из файла сертификата *.cer? Как это можно вообще сделать? Отредактировано пользователем 13 января 2021 г. 12:05:31(UTC)
| Причина: Не указана
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 01.03.2017(UTC) Сообщений: 70  Откуда: Москва Поблагодарили: 13 раз в 12 постах
|
Автор: nomhoi  Добрый день!
С помощью pycades можно получить отпечаток сертификата из файла сертификата *.cer? Как это можно вообще сделать? Добрый день! Certificate.Import + Certificate.Thumbprint ( объект Certificate) На вход Import подается сертификат в виде строки в base64.
|
 1 пользователь поблагодарил Ситдиков Денис за этот пост.
|
nomhoi оставлено 14.01.2021(UTC)
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 01.03.2017(UTC) Сообщений: 70  Откуда: Москва Поблагодарили: 13 раз в 12 постах
|
Автор: bsoft  Автор: Ситдиков Денис  Цитата:Подскажите что делать, чтобы при подписании XML кодировка не менялась. В самом xml документе кодировка не указана? В XML кодировка не указана.
Код:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:v2="http://history.smev.ru/v2/" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
<soapenv:Header>
<wsse:Security soapenv:actor="http://smev.gosuslugi.ru/actors/smev">
<wsse:BinarySecurityToken EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary" ValueType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509v3" wsu:Id="CertId-0DA773FF46AF4146A6B28772356CBFC7">MIIC9DCCAqOgAwIBAgITEgBNeGnfO0Pn2Z8CSgABAE14aTAIBgYqhQMCAgMwfzEj
MCEGCSqGSIb3DQEJARYUc3VwcG9ydEBjcnlwdG9wcm8ucnUxCzAJBgNVBAYTAlJV
MQ8wDQYDVQQHEwZNb3Njb3cxFzAVBgNVBAoTDkNSWVBUTy1QUk8gTExDMSEwHwYD
VQQDExhDUllQVE8tUFJPIFRlc3QgQ2VudGVyIDIwHhcNMjAxMjE4MDUzNTQ2WhcN
MjEwMzE4MDU0NTQ2WjAPMQ0wCwYDVQQDDAR0ZXN0MGYwHwYIKoUDBwEBAQEwEwYH
KoUDAgIkAAYIKoUDBwEBAgIDQwAEQHoGxXpnW++v9D9J/9iMV+lkqMMdm17sfryC
glIhBx1EGrU1rBcPTHPo72QkYdqhWt0m3sK7UfazIU/X/gntqOmjggFhMIIBXTAO
BgNVHQ8BAf8EBAMCBPAwHQYDVR0OBBYEFPADAUN3heaoRqPiGj7I5bmOCC0NMB8G
A1UdIwQYMBaAFE6DPhRp7+xdepUrXxH+NzIWSVUrMFwGA1UdHwRVMFMwUaBPoE2G
S2h0dHA6Ly90ZXN0Y2EuY3J5cHRvcHJvLnJ1L0NlcnRFbnJvbGwvQ1JZUFRPLVBS
TyUyMFRlc3QlMjBDZW50ZXIlMjAyKDEpLmNybDCBrAYIKwYBBQUHAQEEgZ8wgZww
ZAYIKwYBBQUHMAKGWGh0dHA6Ly90ZXN0Y2EuY3J5cHRvcHJvLnJ1L0NlcnRFbnJv
bGwvdGVzdC1jYS0yMDE0X0NSWVBUTy1QUk8lMjBUZXN0JTIwQ2VudGVyJTIwMigx
KS5jcnQwNAYIKwYBBQUHMAGGKGh0dHA6Ly90ZXN0Y2EuY3J5cHRvcHJvLnJ1L29j
c3Avb2NzcC5zcmYwCAYGKoUDAgIDA0EAsx4uU1GKtVwpt17SNGuSJ1bvaRRImlFg
QoAlbR222GFmLMj2Q2Yaq/7fzGE1p3O6MpFzzaMyG4lv46eTsl4ePg==
</wsse:BinarySecurityToken>
<ds:Signature>
<ds:SignedInfo>
<ds:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
<ds:SignatureMethod Algorithm="urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102012-gostr34112012-256"/>
<ds:Reference URI="#BodyId-F6AC1DDCAC4D4FBF9078EEB332F502C4">
<ds:Transforms>
<ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
</ds:Transforms>
<ds:DigestMethod Algorithm="urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34112012-256"/>
<ds:DigestValue/>
</ds:Reference>
</ds:SignedInfo>
<ds:SignatureValue>
</ds:SignatureValue>
<ds:KeyInfo>
<wsse:SecurityTokenReference>
<wsse:Reference URI="#CertId-0DA773FF46AF4146A6B28772356CBFC7" ValueType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509v3"/>
</wsse:SecurityTokenReference>
</ds:KeyInfo>
</ds:Signature>
</wsse:Security>
</soapenv:Header>
<soapenv:Body wsu:Id="BodyId-F6AC1DDCAC4D4FBF9078EEB332F502C4">
<v2:newActionRequest>
<v2:actionCode>action396</v2:actionCode>
<v2:addAppId>4334</v2:addAppId>
<v2:addAppIdCode>ogrn</v2:addAppIdCode>
<v2:addSocId>10000000456396</v2:addSocId>
<v2:addSocIdCode>atk</v2:addSocIdCode>
<v2:applicantId>1396</v2:applicantId>
<v2:date>2015-03-26T20:30:00</v2:date>
<v2:empFio>Смирнов Иван Сергеевич</v2:empFio>
<v2:empId>100000396</v2:empId>
<v2:empJob>Специалист</v2:empJob>
<v2:finished>false</v2:finished>
<v2:fromIS>ИС1</v2:fromIS>
<v2:innerId>5c0b8438-f979-11e4-9233-080027c60396</v2:innerId>
<v2:linkedAction>a506abf4-2432-4182-89c9-661fede25604</v2:linkedAction>
<v2:name>Новое событие!</v2:name>
<v2:orgName>Ведомство</v2:orgName>
<v2:ownerOrg>Ведомство2</v2:ownerOrg>
<v2:rguId>500000000456396</v2:rguId>
<v2:actionSoap>
<v2:path>/actionsoap/2015/05/26/a506abf4-2432-4182-89c9-661fede256604/_actionSoap400.xml</v2:path>
<v2:length>24</v2:length>
<v2:body>Tuj8Rj4fnj4j4nV44jv4894fNfj39HFh33</v2:body>
<v2:name>_actionSoap400.xml</v2:name>
</v2:actionSoap>
<v2:socId>2000000456396</v2:socId>
<v2:status>2</v2:status>
<v2:statusDate>2015-03-27T20:30:00</v2:statusDate>
<v2:toIS>ИС2</v2:toIS>
<v2:type>petition</v2:type>
<v2:uniqId>a506abf4-2432-4182-89c9-661fede25400</v2:uniqId>
</v2:newActionRequest>
</soapenv:Body>
</soapenv:Envelope>
Попробуйте явно задать кодировку в файле, как это сделано в примере. В интерфейсе объекта SignedXML это сделать нельзя.
|
 1 пользователь поблагодарил Ситдиков Денис за этот пост.
|
bsoft оставлено 14.01.2021(UTC)
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close