Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 13,320 Сказал «Спасибо»: 549 раз Поблагодарили: 2207 раз в 1722 постах
|
Автор: GTAlex Мой код Код:
$signedData = new \CPSignedData();
$signedData->set_ContentEncoding(BASE64_TO_BINARY);
-------ВОТ ТУТ ПОТЕРЯНА ПЕРЕДАЧА ДАННЫХ ИЗ ФАЙЛА
$signedData->VerifyCades($signature, CADES_BES, 1);
$cpSigners = $signedData->get_Signers();
$cpSigner = $cpSigners->get_Item(1);
$signingTime = $cpSigner->get_SigningTime();
+ try\catch и проверки... VerifyCades без передачи подписанного - выдаёт ошибку тоже, код был упрощён...? |
|
1 пользователь поблагодарил Андрей * за этот пост.
|
GTAlex оставлено 13.09.2024(UTC)
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 28.12.2021(UTC) Сообщений: 171 Откуда: Нск Сказал(а) «Спасибо»: 66 раз Поблагодарили: 1 раз в 1 постах
|
Автор: Андрей * Автор: GTAlex Автор: Андрей * в signature в серверном коде (не вижу код) - что? Отсоединенная или присоединенная подпись? Отсоединенная подпись а почему тогда не передаётся подписанный контент? передается, пропустил строчку $signedData->set_Content($content); я не копипастом вставил, а собрал вырезав лишнее
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 28.12.2021(UTC) Сообщений: 171 Откуда: Нск Сказал(а) «Спасибо»: 66 раз Поблагодарили: 1 раз в 1 постах
|
выделил код отдельно Код:
$signedData = new \CPSignedData();
$signedData->set_ContentEncoding(BASE64_TO_BINARY);
$signedData->set_Content(file_get_contents('test.txt'));
try {
$signedData->VerifyCades(file_get_contents('test.txt.sig'), CADES_BES, 1);
} catch (Exception $exception) {
var_dump($exception->getMessage());
}
$cpSigners = $signedData->get_Signers();
$cpSigner = $cpSigners->get_Item(1);
try {
$signingTime = $cpSigner->get_SigningTime();
} catch (Exception $exception) {
var_dump($exception->getMessage());
}
echo 'done';
результат Код:
string(32) "Invalid Signature.
(0x80090006)"
string(45) "Cannot find object or property.
(0x80092004)"
done
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 13,320 Сказал «Спасибо»: 549 раз Поблагодарили: 2207 раз в 1722 постах
|
предлагаю внимательно посмотреть код, что передаётся, VerifyCades отрабатывает и что с проверками... Код:if ($result)
{
$signObject = $SignedData->get_Signers();
if ($signObject)
{
$sObj = $signObject->get_Item(1);
if ($sObj)
{
try
{
--- ВОТ ЗДЕСЬ падает? или не добирается до get_SigningTime ?
$SigningTime = $sObj->get_SigningTime();
}
catch(Exception $e)
{
$SignatureCheckResult = $SignatureCheckResult." Не удалось получить дату и время подписи, ошибка: ".$e->getMessage();
}
}
}
}
|
|
1 пользователь поблагодарил Андрей * за этот пост.
|
GTAlex оставлено 13.09.2024(UTC)
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 13,320 Сказал «Спасибо»: 549 раз Поблагодарили: 2207 раз в 1722 постах
|
Автор: GTAlex выделил код отдельно Код:
$signedData = new \CPSignedData();
$signedData->set_ContentEncoding(BASE64_TO_BINARY);
$signedData->set_Content(file_get_contents('test.txt'));
try {
$signedData->VerifyCades(file_get_contents('test.txt.sig'), CADES_BES, 1);
} catch (Exception $exception) {
var_dump($exception->getMessage());
}
$cpSigners = $signedData->get_Signers();
$cpSigner = $cpSigners->get_Item(1);
try {
$signingTime = $cpSigner->get_SigningTime();
} catch (Exception $exception) {
var_dump($exception->getMessage());
}
echo 'done';
результат Код:
[h]string(32) "Invalid Signature.[/h]
(0x80090006)"
string(45) "Cannot find object or property.
(0x80092004)"
done
Вот и ответ. Не будет доступа к атрибуту, если подпись не прошла проверку. Неправильно в коде... $signedData->set_Content(file_get_contents('test.txt')); - передаётся что? Бинарный контент, а выше указано, что он в base64 на входе должен быть. $signedData->set_Content( base64_encode (file_get_contents('test.txt') )); |
|
1 пользователь поблагодарил Андрей * за этот пост.
|
GTAlex оставлено 13.09.2024(UTC)
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 28.12.2021(UTC) Сообщений: 171 Откуда: Нск Сказал(а) «Спасибо»: 66 раз Поблагодарили: 1 раз в 1 постах
|
Автор: GTAlex $signingTime = $cpSigner->get_SigningTime();
падает тут (полный код выше запостил)
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 13,320 Сказал «Спасибо»: 549 раз Поблагодарили: 2207 раз в 1722 постах
|
а от клиента всё успешно, потому что в Content приходит сразу в base64 (из плагина, например).
|
|
1 пользователь поблагодарил Андрей * за этот пост.
|
GTAlex оставлено 13.09.2024(UTC)
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 28.12.2021(UTC) Сообщений: 171 Откуда: Нск Сказал(а) «Спасибо»: 66 раз Поблагодарили: 1 раз в 1 постах
|
Автор: Андрей * Вот и ответ. Не будет доступа к атрибуту, если подпись не прошла проверку.
Неправильно в коде... $signedData->set_Content(file_get_contents('test.txt')); - передаётся что? Бинарный контент, а выше указано, что он в base64 на входе должен быть.
$signedData->set_Content( base64_encode (file_get_contents('test.txt') ));
Спасибо огромное!
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 13,320 Сказал «Спасибо»: 549 раз Поблагодарили: 2207 раз в 1722 постах
|
Автор: GTAlex Автор: GTAlex $signingTime = $cpSigner->get_SigningTime();
падает тут (полный код выше запостил) так выше упало на VerifyCades, почему нет проверок этого? |
|
1 пользователь поблагодарил Андрей * за этот пост.
|
GTAlex оставлено 13.09.2024(UTC)
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 28.12.2021(UTC) Сообщений: 171 Откуда: Нск Сказал(а) «Спасибо»: 66 раз Поблагодарили: 1 раз в 1 постах
|
Автор: Андрей * а от клиента всё успешно, потому что в Content приходит сразу в base64 (из плагина, например).
понял, спасибо! вот я и думал, почему от клиента норм, а тут падает - вроде всё идентично ... а нифига :)
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close