Статус: Участник
Группы: Участники
Зарегистрирован: 20.11.2013(UTC) Сообщений: 20 Откуда: Киев Сказал(а) «Спасибо»: 3 раз
|
Очень надеюсь на снисхождение гуру КриптоПро. Пишу клиент для НБКИ. Послать подписанный запрос получилось, ответ верифицировать не могу. На форуме перечитала много, поиск толком не помог. Гугл тоже. Платформа: php с использованием Крипто Про ЭПЦ COM Подпись CADES_BES. Мой код:
function verifyMessage($sSignedMessage) { $oSignedData = new COM("CAdESCOM.CadesSignedData"); $CADESCOM_BASE64_TO_BINARY = 0x01; $oSignedData->ContentEncoding = $CADESCOM_BASE64_TO_BINARY; $CADESCOM_CADES_BES = 0x01; // Тип подписи CAdES BES. $CADESCOM_CADES_X_LONG_TYPE_1 = 0x5D; // Тип подписи CAdES-X Long Type 1. try { $oSignedData->VerifyCades($sSignedMessage, $CADESCOM_CADES_BES, false); } catch (Exception $e) { echo "Code: " . $e->getCode() . "<br />"; echo "File: " . $e->getFile() . "<br />"; echo "Line: " . $e->getLine() . "<br />"; echo "Message: " . iconv("cp1251", "UTF-8", $e->getMessage()) . "<br />"; //echo "Previous: " . $e->getPrevious() . "<br />"; echo "Trace: " . $e->getTrace() . "<br />"; echo "Trace as string: " . $e->getTraceAsString() . "<br />"; } }
Ошибка:
Code: -2147352567 File: D:\wamp\www\tests\vin\verifyobj.php Line: 114 Message: Source: CAdESCOM.CadesSignedData.1 Description: Криптографическое сообщение подписано автором, отсутствующем в указанном списке Trace: Array Trace as string: #0 D:\wamp\www\tests\vin\verifyobj.php(114): com->VerifyCades('MIAGCSqGSIb3DQE...', 1, false) #1 D:\wamp\www\tests\vin\verifyobj.php(201): verifyMessage('MIAGCSqGSIb3DQE...') #2 {main}
Прилагаю файлик с ответом от НБКИ. Вложение(я): answer.txt (3kb) загружен 10 раз(а).У Вас нет прав для просмотра или загрузки вложений. Попробуйте зарегистрироваться.
|
|
|
|
Статус: Сотрудник
Группы: Администраторы, Участники Зарегистрирован: 10.12.2008(UTC) Сообщений: 924 Откуда: Крипто-Про Поблагодарили: 99 раз в 95 постах
|
Здравствуйте! Каким образом и с использованием какого криптопровайдера создавалась подпись? Можете выложить файл с подписью, которая не проверяется? В конце приложенного файла answer.txt вот это: Цитата:Error: Resource has been moved or is unavailable. Please contact the forum admin. Отредактировано пользователем 24 декабря 2013 г. 13:02:48(UTC)
| Причина: Не указана
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 20.11.2013(UTC) Сообщений: 20 Откуда: Киев Сказал(а) «Спасибо»: 3 раз
|
День добрый еще раз. Файлик answer.txt содержит сообщение с присоединенной подписью. Форум не поддерживает загрузку файлов с расширением *.sig. Я приложу еще раз файл сообщения. Ну и просто выложу сообщение от НБКИ
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
Я думала, что возможно это проблема того, что я работаю из php/apache. (Хотя apache запускается с помощью локального пользователя). Но VBScript, тоже не работает и выдает аналогичную ошибку.
Dim oSignedData Set oSignedData = CreateObject("CAdESCOM.CadesSignedData") msg = "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" 'MsgBox msg oSignedData.VerifyCades msg MsgBox "Message verified"
Вложение(я): answer (3kb) загружен 3 раз(а).У Вас нет прав для просмотра или загрузки вложений. Попробуйте зарегистрироваться.
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 20.11.2013(UTC) Сообщений: 20 Откуда: Киев Сказал(а) «Спасибо»: 3 раз
|
Заметила, что форум добавляет сообщение в приложенный файл: Error: Resource has been moved or is unavailable. Please contact the forum admin. Можно просто скопировать сообщение в файл и уже его проверять. Еще с помощью vbs получилось получить лог
[1252] .\Externs.cpp(33) : /Init/ [1252] .\CPSettings.cpp(193) : /Init/ [1252] cpcspi: Thread: file:line function text xcode(dcode) level: 0 [1252] cpcsp: Thread: file:line text level: 0 [1252] cpui: Thread: file:line function text xcode(dcode) level: 0 [1252] .\Externs.cpp(33) : /Init/ [1252] .\CPSettings.cpp(193) : /Init/ [1252] cades.dll: {9024} /CCadesApp::InitInstance/ CadesApp.cpp(16) : hInstance=6E000000 [1252] cades.dll: {9024} /CadesVerifyMessage/ cades.cpp(2609) : (pVerifyPara=0x0020E734, dwSignerIndex=0, pbSignedBlob=0x002E9FA8, cbSignedBlob=1598, ppDecodedBlob=0x0020E780, ppVerificationInfo=0x0020E77C) [1252] cades.dll: {9024} /CadesMsgVerifySignatureImpl/ cades.cpp(1618) : Input parameters checked [1252] cades.dll: {9024} /CryptoPro::PKI::GetSignerCertIdEx/ GetCertID.inl(120) : (other)SigningCert attribute not found [1252] cades.dll: {9024} /ExtractReferencedValidationData/ ValidationEvidence.h(1112) : Signer certificate reference not found [1252] cades.dll: {9024} /CadesVerifyMessage/ cades.cpp(2629) : COleException, m_sc=0x8009200e [1252] cades.dll: {9024} /CadesVerifyMessage/ cades.cpp(2641) : (res=0, GetLastError=0x8009200e [1252] cades.dll: {9024} /CadesFreeVerificationInfo/ cades.cpp(2704) : (pVerificationInfo=0x047DD890) [1252] cades.dll: {9024} /CadesFreeVerificationInfo/ cades.cpp(2732) : (res=1, GetLastError=0x8009200e
Поискала на форуме тут, что советуют делать в данном случае, при такой ошибке. Цитата:Сертификат не обязательно должен находиться в локальном хранилище, но для проверки подписи или дополнения подписи CAdES-BES до других форматов он должен быть известен.
Необходимость сертификата при "улучшении" подписи зависит от формата подписи, до которого вы ее улучшаете. Часть форматов требует проведения проверки сертификата на отзыв, а провести такую проверку без сертификата нельзя.
Существуют ли способы указать сертификат при проверке и усовершенствовании, отличные от установки его в локальное хранилище, зависит от того, какие функции вы используете.
В таком случае не понятно другое. Если НБКИ не выдает этот сертификат я его могу установить, получив его через Крипто АРМ. А как тогда получить/указать его при использовании ЭПЦ COM не понятно.
|
|
|
|
Статус: Сотрудник
Группы: Администраторы, Участники Зарегистрирован: 10.12.2008(UTC) Сообщений: 924 Откуда: Крипто-Про Поблагодарили: 99 раз в 95 постах
|
Из лога видно, что в подписанном сообщении не удалось найти подписанный атрибут со ссылкой на сертификат. Как минимум один из следующих атрибутов должен присутствовать: - SigningCertificate (если алгоритм хэширования SHA1) - SigningCertificateV2 (для остальных алгоритмов хэширования) - OtherSigningCertificate (устарел) Если в подписанном сообщении нет ни одного из перечисленных атрибутов, то оно не соответствует формату CAdES-BES и проверить его при помощи метода VerifyCades не удастся. В приложенной вами подписи ни одного из требуемых атрибутов нет. Отредактировано пользователем 24 декабря 2013 г. 14:00:09(UTC)
| Причина: Не указана
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 20.11.2013(UTC) Сообщений: 20 Откуда: Киев Сказал(а) «Спасибо»: 3 раз
|
Спасибо за ответ. Хочу отметить, что в VBS не правильно указан тип подписи. Там используется CADESCOM_CADES_DEFAULT, который аналогичен CAdES-X Long Type 1. Но если использовать CAdES BES (oSignedData.VerifyCades msg, 93, False) в логах появляется то же самое.
Получается данным способом послать сообщение можно, но получить нельзя.
|
|
|
|
Статус: Сотрудник
Группы: Администраторы, Участники Зарегистрирован: 10.12.2008(UTC) Сообщений: 924 Откуда: Крипто-Про Поблагодарили: 99 раз в 95 постах
|
Ничего не поняла. Куда послать и откуда получить?
При помощи CAdESCOM можно создать подписанное сообщение и проверить подписанное сообщение. "Послать" и "получить" - нельзя.
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 20.11.2013(UTC) Сообщений: 20 Откуда: Киев Сказал(а) «Спасибо»: 3 раз
|
Ой, извините, что запутала вас. В моем случае при работе с НБКИ при помощи CAdESCOM можно создать подписанное сообщение. Послать его в НБКИ и получить подписанный ответ. Но проверить его с помощью CAdESCOM VerifyCades не получится. С помощью других утилит Крипто про сообщение проверить можно.
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 22.01.2008(UTC) Сообщений: 671 Откуда: Йошкар-Ола Сказал «Спасибо»: 3 раз Поблагодарили: 93 раз в 67 постах
|
Автор: maria.n Ой, извините, что запутала вас. В моем случае при работе с НБКИ при помощи CAdESCOM можно создать подписанное сообщение. Послать его в НБКИ и получить подписанный ответ. Но проверить его с помощью CAdESCOM VerifyCades не получится. С помощью других утилит Крипто про сообщение проверить можно. Марина, Елена сказала Вам, что функция VerifyCades проверяет только правильно сформированные сообщения CAdES-BES, а в Вашем сообщении отсвутствует правильно сформированный один атрибут (ссылка на сертификат подписанта по сути). |
С уважением, Юрий Строжевский |
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 20.11.2013(UTC) Сообщений: 20 Откуда: Киев Сказал(а) «Спасибо»: 3 раз
|
Но я это сообщение получаю от НБКИ. Я не могу сформировать для него этот атрибут.
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close