Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 12,691 Сказал «Спасибо»: 500 раз Поблагодарили: 2046 раз в 1586 постах
|
Автор: Васильев Михаил Автор: Санчир Момолдаев Вам выше Андрей * привел код для проверки. Его достаточно. Исключений нет? Проверка прошла : иначе ошибка Вам же не нужно подписывать ничего на сервере, следовательно не нужен и signer $sd->Verify($sm, 0, VERIFY_SIGNATURE_ONLY); тогда что указать в $sm в примере Андрея ? Это сама подпись. |
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 11.01.2021(UTC) Сообщений: 19 Сказал(а) «Спасибо»: 4 раз
|
Автор: Андрей * Автор: Васильев Михаил Автор: Санчир Момолдаев Вам выше Андрей * привел код для проверки. Его достаточно. Исключений нет? Проверка прошла : иначе ошибка Вам же не нужно подписывать ничего на сервере, следовательно не нужен и signer $sd->Verify($sm, 0, VERIFY_SIGNATURE_ONLY); тогда что указать в $sm в примере Андрея ? Это сама подпись. Правильно ли я понимаю, что для примера на странице https://www.cryptopro.ru...ge/cades_bes_sample.htmlзначение поля "Данные для подписи" я подставляю в $content, а значение поля "Подпись сформирована успешно" (после нажатия на Подписать) я подставляю в $sm (убрав переносы строк, разумеется) и потом по Вашему короткому примеру ? Если да, то тогда возникает ошибка на строке с $sd->Verify($sm, 0, VERIFY_SIGNATURE_ONLY); Internal error. (0x8009100E)
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 12,691 Сказал «Спасибо»: 500 раз Поблагодарили: 2046 раз в 1586 постах
|
На той странице присоединенная подпись, content не нужно передавать. |
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 12,691 Сказал «Спасибо»: 500 раз Поблагодарили: 2046 раз в 1586 постах
|
Код:
function SignatureCheck($data, $sgn, $detached, $IgnoreUntrustCA) {
...
если $detached = 1 - отсоединенная
$data, $sgn - бинарные данные, если уже закодированы в base64 - убрать base64_encode
...
$SignedData = new \CPSignedData();
$SignedData->set_ContentEncoding(BASE64_TO_BINARY);
if ($data)
{
$SignedData->set_Content(base64_encode($data));
}
try {
$SignedData->VerifyCades($sgn, 0x01, $detached);
Успешно проверена подпись и цепочка сертификатов
}
catch(Exception $e) {
/*
0x800B010A: Не удается построить цепочку сертификатов для доверенного корневого центра => установить через certmgr сертификат УЦ
*/
$result = false;
$SignatureCheckResult = $e->getMessage();
if (strpos($e->getMessage(), "0x800B010A")) {
$cert = GetSignerCert($SignedData);
$SignatureCheckResult = "Подпись корректна, но нет доверия к корневому сертификату УЦ";
if ($cert)
{
$SignatureCheckResult = $SignatureCheckResult . ": ". iconv('WINDOWS-1251', 'UTF-8', $cert->GetInfo('1'));
}
if ($IgnoreUntrustCA)
{
$result = true;
}
}
if (strpos($e->getMessage(), "0x80091004")) {
$SignatureCheckResult = "Подпись повреждена (Invalid cryptographic message), код ошибки: 0x80091004";
}
if (strpos($e->getMessage(), "0x800B010C")) {
$SignatureCheckResult = "Сертификат был отозван (код ошибки: 0x800B010C)";
}
}
|
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 11.01.2021(UTC) Сообщений: 19 Сказал(а) «Спасибо»: 4 раз
|
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 12,691 Сказал «Спасибо»: 500 раз Поблагодарили: 2046 раз в 1586 постах
|
Автор: Васильев Михаил Выше пример, изучили? Если присоединенная подпись - $data не передаётся, только $sgn + примечание о кодировке base64. |
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 11.01.2021(UTC) Сообщений: 19 Сказал(а) «Спасибо»: 4 раз
|
Автор: Андрей * Автор: Васильев Михаил Выше пример, изучили? Если присоединенная подпись - $data не передаётся, только $sgn + примечание о кодировке base64. ... if ($data) { //$SignedData->set_Content(base64_encode($data)); ТУТ Я ЗАКОМЕНТИРОВАЛ } .... $sgn = file_get_contents('sign.txt'); SignatureCheck($sgn, $sgn, 0, true); Internal error. (0x8009100E) ======================================== Если через утилиту проверить, то: CryptCP 5.0 (c) "КРИПТО-ПРО", 2002-2020. Утилита командной строки для подписи и шифрования файлов. Папка '/home/vm/sites/sso/public_html/public/': /home/vm/sites/sso/public_html/public/sign.txt... Проверка подписи... 0%Ошибка: Некорректное преобразование BASE64. ../../../../CSPbuild/CSP/samples/CPCrypt/DSign.cpp:2039: 0x20000067 [ErrorCode: 0x20000067] Отредактировано пользователем 13 января 2021 г. 10:31:35(UTC)
| Причина: Не указана
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 11.01.2021(UTC) Сообщений: 19 Сказал(а) «Спасибо»: 4 раз
|
Автор: Андрей * Автор: Васильев Михаил Выше пример, изучили? Если присоединенная подпись - $data не передаётся, только $sgn + примечание о кодировке base64. Я косячнул. Поправил файл с подписью и проверил его через утилиту: vm@patti:/opt/cprocsp/bin/amd64$ ./cryptcp -verify -verall /home/vm/sites/sso/public_html/public/sign.txt CryptCP 5.0 (c) "КРИПТО-ПРО", 2002-2020. Утилита командной строки для подписи и шифрования файлов. Папка '/home/vm/sites/sso/public_html/public/': /home/vm/sites/sso/public_html/public/sign.txt... Проверка подписи... Автор подписи: RU, Санкт-Петербург, Санкт-Петербург, ООО ТУТ ВСЁ ВЕРНО ПРО МОЮ ЭЦП НАПИСАНО !!!!!! Подпись проверена. [ErrorCode: 0x00000000]
Однако PHP-код продолжает ошибки: The revocation process could not continue - the certificate(s) could not be checked. (0x800B010E)
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 12,691 Сказал «Спасибо»: 500 раз Поблагодарили: 2046 раз в 1586 постах
|
Автор: Васильев Михаил Автор: Андрей * Автор: Васильев Михаил Выше пример, изучили? Если присоединенная подпись - $data не передаётся, только $sgn + примечание о кодировке base64. Я косячнул. Поправил файл с подписью и проверил его через утилиту: vm@patti:/opt/cprocsp/bin/amd64$ ./cryptcp -verify -verall /home/vm/sites/sso/public_html/public/sign.txt CryptCP 5.0 (c) "КРИПТО-ПРО", 2002-2020. Утилита командной строки для подписи и шифрования файлов. Папка '/home/vm/sites/sso/public_html/public/': /home/vm/sites/sso/public_html/public/sign.txt... Проверка подписи... Автор подписи: RU, Санкт-Петербург, Санкт-Петербург, ООО ТУТ ВСЁ ВЕРНО ПРО МОЮ ЭЦП НАПИСАНО !!!!!! Подпись проверена. [ErrorCode: 0x00000000]
Однако PHP-код продолжает ошибки: The revocation process could not continue - the certificate(s) could not be checked. (0x800B010E) добавьте: -xlongtype1 будет такая же ошибка Пробовали добавить CRL для сертификатов в цепочке? |
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 12,691 Сказал «Спасибо»: 500 раз Поблагодарили: 2046 раз в 1586 постах
|
Автор: Васильев Михаил $sgn = file_get_contents('sign.txt'); SignatureCheck($sgn, $sgn, 0, true);
Internal error. (0x8009100E) Да, так нельзя делать... |
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close