Статус: Участник
Группы: Участники
Зарегистрирован: 14.09.2017(UTC) Сообщений: 12  Откуда: Барнаул Поблагодарили: 2 раз в 1 постах
|
Здравствуйте. Поставлен ряд задач: 1. Извлечь сертификат из отделенной подписи. 2. Проверить валидность сертификата и что подпись файла. Что имеется: Ubuntu 16.04 php 7.1 Установленные криптопро и sdk Вопросы: 1. Можно ли, и если можно то как, извлечь сертификат из отделенной подписи? 2. Какой алгоритм и реализация проверки подписанного файла. Пробую так: Код:
try
{
$sd = new \CPSignedData();
$sd->set_ContentEncoding(BASE64_TO_BINARY);
$sd->set_Content($base64);
$check = $sd->VerifyCades($sgn, CADES_BES, 1); // 1 - отсоединенная
printf('OK');
}
catch(Exception $e)
{
printf('Exception: ' . $e->getMessage() . "\n");
printf("FAIL\n");
}
Получаю 'Exception' with message 'The parameter is incorrect. (0x80070057)' При команде Код:/opt/cprocsp/bin/amd64/cryptcp -verify 7f589f0182c18c8f23776f18f5ba6d4b.jpg -f file.p7s
Получаю в ответ:  cert.jpg (41kb) загружен 35 раз(а).Причем информация из сертификата корректна. Является ли сообщение "Certificate chains are checked." признаком валидности сертификата? И как проверить подпись файла?
|
|
|
|
Статус: Сотрудник
Группы: Администраторы
Зарегистрирован: 12.12.2007(UTC) Сообщений: 6,405  Откуда: КРИПТО-ПРО Сказал «Спасибо»: 37 раз Поблагодарили: 720 раз в 624 постах
|
Примеры php смотрели? Приложите подпись и исходный файл в том виде, в котором проверяете. |
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 14.09.2017(UTC) Сообщений: 12  Откуда: Барнаул Поблагодарили: 2 раз в 1 постах
|
Автор: Максим Коллегин  Примеры php смотрели? Приложите подпись и исходный файл в том виде, в котором проверяете. Примеры здесь - Руководство разработчика по php не очень информативны. Если скажите где есть описание классов и методов для библиотеки, буду очень признателен. Файлы прилагаю.  files.zip (12kb) загружен 14 раз(а).Подпись создается плагином для браузера. Отредактировано пользователем 20 августа 2018 г. 9:30:56(UTC)
| Причина: Не указана
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 13,712   Сказал «Спасибо»: 574 раз Поблагодарили: 2303 раз в 1804 постах
|
Здравствуйте. У Вас ЭП-отсоединеная: -detached требуется. Цитата:cryptcp -verify "c68a9bb1622149ca47913e38a86dd19c.png" -f "c68a9bb1622149ca47913e38a86dd19c.png.sgn" -detached -nochain Проверяется без ошибок. |
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 13,712   Сказал «Спасибо»: 574 раз Поблагодарили: 2303 раз в 1804 постах
|
Интерфейс ICPSignedData SignedData.VerifyЦитата:SignedData.Verify( _ ByVal SignedMessage, _ [ ByVal bDetached ], _ [ ByVal VerifyFlag ] _ ) Указывая VerifyFlag - можно дополнительно проверить сертификат или только математическую корректность подписи. Пример - Проверка отделенной подписи. |
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 13,712   Сказал «Спасибо»: 574 раз Поблагодарили: 2303 раз в 1804 постах
|
Код:{
$sd = new \CPSignedData();
$sd->set_ContentEncoding(BASE64_TO_BINARY);
$sd->set_Content($base64);
$check = $sd->VerifyCades($sgn, CADES_BES, 1); // 1 - отсоединенная
printf('OK');
}
$sgn - корректно инициализировано значением подписи? |
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 14.09.2017(UTC) Сообщений: 12  Откуда: Барнаул Поблагодарили: 2 раз в 1 постах
|
Автор: Андрей Писарев  $sgn - корректно инициализировано значением подписи?
Храню в базе, как приходит с клиента, файл подписи, который прикладывал в архиве и есть эта подпись, но в целом направление понятно, буду ориентироваться на предложенные примеры. Попробую может удалить переводы строк. В консоли проверил, всё работает, спасибо. А вытащить сертификат из отделенной подписи есть какая нибудь возможность? Мне нужно проверить, что файл подписан сертификатом именно того пользователя, который загружает файл. Я могу получить и хранить как сертификат, так и его отпечаток для пользователя, то есть есть с чем сравнивать. Вопрос только в том, могу ли я из отделенной подписи получить серт.
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 14.09.2017(UTC) Сообщений: 12  Откуда: Барнаул Поблагодарили: 2 раз в 1 постах
|
видоизменил слегка код, уже более внятная ошибка Код: $sd = new \CPSignedData();
$sd->set_Content($base64);
$check = $sd->Verify($sgn, 1, VERIFY_SIGNATURE_ONLY ); // 1 - отсоединенная
Получаю в ответ - 'Invalid Signature. (0x80090006)' По получению сертификата предварительно разобрался, но на деле еще не дошел, потому что дальше проверки продвинуться не могу Отредактировано пользователем 20 августа 2018 г. 19:09:29(UTC)
| Причина: Не указана
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 13,712   Сказал «Спасибо»: 574 раз Поблагодарили: 2303 раз в 1804 постах
|
Автор: Ragnarek  Автор: Андрей Писарев  $sgn - корректно инициализировано значением подписи?
Храню в базе, как приходит с клиента, файл подписи, который прикладывал в архиве и есть эта подпись, но в целом направление понятно, буду ориентироваться на предложенные примеры. Попробую может удалить переводы строк. В консоли проверил, всё работает, спасибо. А вытащить сертификат из отделенной подписи есть какая нибудь возможность? Мне нужно проверить, что файл подписан сертификатом именно того пользователя, который загружает файл. Я могу получить и хранить как сертификат, так и его отпечаток для пользователя, то есть есть с чем сравнивать. Вопрос только в том, могу ли я из отделенной подписи получить серт. Свойство ICPSigner5:: SignatureStatusИнтерфейс ICPSignedData -> SignedData.Signers |
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 13,712   Сказал «Спасибо»: 574 раз Поблагодарили: 2303 раз в 1804 постах
|
Объект CPSigners -> CPSigner у Signer - есть Certificate -> свойства Thumbprint \ SerialNumber и т.д. по ссылке. |
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close