Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 13,712   Сказал «Спасибо»: 574 раз Поблагодарили: 2303 раз в 1804 постах
|
Автор: Ragnarek  видоизменил слегка код, уже более внятная ошибка Код: $sd = new \CPSignedData();
$sd->set_Content($base64);
$check = $sd->Verify($sgn, 1, VERIFY_SIGNATURE_ONLY ); // 1 - отсоединенная
Получаю в ответ - 'Invalid Signature. (0x80090006)' По получению сертификата предварительно разобрался, но на деле еще не дошел, потому что дальше проверки продвинуться не могу установка ContentEncoding не используется? Пример подписи и проверки на js |
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 14.09.2017(UTC) Сообщений: 12  Откуда: Барнаул Поблагодарили: 2 раз в 1 постах
|
Автор: Андрей Писарев  установка ContentEncoding не используется?
Пробовал как с установкой кодировки, так и без $sd->set_ContentEncoding(BASE64_TO_BINARY); Вот прям в одной папке делаю Код:
root@thisisit:~# /opt/cprocsp/bin/amd64/cryptcp -verify c68a9bb1622149ca47913e38a86dd19c.png -f signature.sgn --detached
CryptCP 4.0 (c) "Crypto-Pro", 2002-2017.
Command prompt Utility for file signature and encryption.
The following certificate will be used:
RDN:*****
Valid from 05.04.2018 10:00:03 to 20.04.2019 10:10:03
Certificate chains are checked.
Folder './':
c68a9bb1622149ca47913e38a86dd19c.png... Signature verifying...
Signer: *****
Signature's verified.
[ErrorCode: 0x00000000]
Код:<?php
$data = base64_encode(file_get_contents('c68a9bb1622149ca47913e38a86dd19c.png'));
$sgn = file_get_contents('signature.sgn');
try
{
$sd = new \CPSignedData();
$sd->set_Content($data);
$sd->set_ContentEncoding(BASE64_TO_BINARY);
$check = $sd->Verify($sgn,1, 0);
printf('OK');
}
catch(Exception $e)
{
echo $e;
}
?>
Код:
root@thisisit:~# php7.1 test.php
Exception: Invalid Signature. (0x80090006) in /root/test.php:12
Stack trace:
#0 /root/test.php(12): CPSignedData->Verify('MIIOnAYJKoZIhvc...', 1, 0)
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 13,712   Сказал «Спасибо»: 574 раз Поблагодарили: 2303 раз в 1804 постах
|
set_ContentEncoding - нужно вызывать до set_Content. BASE64_TO_BINARY = 1 ? Цитата: // Значение свойства ContentEncoding должно быть задано // до заполнения свойства Content oSignedData.ContentEncoding = CADESCOM_BASE64_TO_BINARY; oSignedData.Content = dataToSign;
|
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 14.09.2017(UTC) Сообщений: 12  Откуда: Барнаул Поблагодарили: 2 раз в 1 постах
|
Автор: Андрей Писарев  set_ContentEncoding - нужно вызывать до set_Content. BASE64_TO_BINARY = 1 ? Цитата: // Значение свойства ContentEncoding должно быть задано // до заполнения свойства Content oSignedData.ContentEncoding = CADESCOM_BASE64_TO_BINARY; oSignedData.Content = dataToSign;
BASE64_TO_BINARY = 1 Если поместить set_ContentEncoding перед set_Content, то получую ошибку вообще другую Код:
root@thisisit:~# php7.1 test.php
Exception: Internal error. (0x80070490) in /root/test.php:11
Stack trace:
#0 /root/test.php(11): CPSignedData->Verify('MIIOnAYJKoZIhvc...', 1, 0)
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 13,712   Сказал «Спасибо»: 574 раз Поблагодарили: 2303 раз в 1804 постах
|
Цитата: $sd->Verify($sgn, true, VERIFY_SIGNATURE_AND_CERTIFICATE); В $sgn (или в Verify) поместите декодированные данные из base64 - такая же ошибка? |
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 14.09.2017(UTC) Сообщений: 12  Откуда: Барнаул Поблагодарили: 2 раз в 1 постах
|
Автор: Андрей Писарев  Цитата: $sd->Verify($sgn, true, VERIFY_SIGNATURE_AND_CERTIFICATE); В $sgn (или в Verify) поместите декодированные данные из base64 - такая же ошибка? Код:$sd = new \CPSignedData();
$sd->set_ContentEncoding(BASE64_TO_BINARY);
$sd->set_Content($data);
$sgn = base64_decode($sgn);
$check = $sd->Verify($sgn, true, VERIFY_SIGNATURE_AND_CERTIFICATE);
Такая же. Сейчас попробую библиотеку для 5.6 сбилдить.
Не, такая же ошибка, видимо дело не в версии php Отредактировано пользователем 22 августа 2018 г. 14:00:24(UTC)
| Причина: Не указана
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 14.09.2017(UTC) Сообщений: 12  Откуда: Барнаул Поблагодарили: 2 раз в 1 постах
|
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 13,712   Сказал «Спасибо»: 574 раз Поблагодарили: 2303 раз в 1804 постах
|
Автор: Ragnarek  есть идеи, предложения? В ЛС ссылку пришлите, чтобы скачать архив с файлами. |
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 14.09.2017(UTC) Сообщений: 12  Откуда: Барнаул Поблагодарили: 2 раз в 1 постах
|
Автор: Андрей Писарев  Автор: Ragnarek  есть идеи, предложения? В ЛС ссылку пришлите, чтобы скачать архив с файлами. отправил
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 13,712   Сказал «Спасибо»: 574 раз Поблагодарили: 2303 раз в 1804 постах
|
Проверить работу: /opt/cprocsp/src/phpcades/test_extension.php Цитата:$cert = SetupCertificate(CURRENT_USER_STORE, "My", STORE_OPEN_READ_ONLY, CERTIFICATE_FIND_SUBJECT_NAME, "test", 0, 1); Изменить на своё значение или сгенерировать для тестов такой сертификат (test) Далее проверить в php:
<?php
$data = base64_encode(file_get_contents('c68a9bb1622149ca47913e38a86dd19c.png')); $sgn = base64_decode(file_get_contents('signature.sgn'));
try { $sd = new \CPSignedData(); $sd->set_ContentEncoding(BASE64_TO_BINARY); $sd->set_Content($data); $check = $sd->Verify($sgn, 0, VERIFY_SIGNATURE_ONLY); printf('OK'); } catch(Exception $e) { echo $e; } ?>
|
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close