Статус: Участник
Группы: Участники
Зарегистрирован: 01.06.2015(UTC) Сообщений: 11
|
Здравствуйте! У меня есть два файла - xml документ и открепленная подпись, полученные из Росреестра. Необходимо проверить соответствие подписи и документа, реализовать проверку на java. Проверяла через сайт https://www.gosuslugi.ru/pgu/eds/ - подпись верна, только сертификат просрочен, но для моей задачи это непринципиально. Самого файла сертификата у меня нет. Выполняю код: Код:Path sigPath = Paths.get("/home/user/tmp/xml/doc2188772.xml.sig");
byte[] signature = Files.readAllBytes(sigPath);
Path path = Paths.get("/home/user/tmp/xml/doc2188772.xml");
byte[] data = Files.readAllBytes(path);
PKCS7 pkcs7 = new PKCS7(signature);
X509Certificate[] certs = pkcs7.getCertificates();
final String signAlg = JCP.CRYPTOPRO_SIGN_NAME;
Signature sig = Signature.getInstance(signAlg);
X509Certificate cert = certs[0];
sig.initVerify(cert.getPublicKey());
sig.update(data);
result = sig.verify(signature);
Проверка всегда возвращает false, в чем может быть ошибка? Файлы во вложении. ![](/forum2/Themes/soclean/icon_file.gif) doc2188772.xml (327kb) загружен 3 раз(а).![](/forum2/Themes/soclean/icon_file.gif) doc2188772.xml.sig (5kb) загружен 4 раз(а).
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 13,479 ![Мужчина Мужчина](/forum2/Themes/soclean/male.gif) ![Российская Федерация Российская Федерация](/forum2/Content/images/flags/RU.png) Сказал «Спасибо»: 553 раз Поблагодарили: 2243 раз в 1749 постах
|
Здравствуйте.
А если использовать certs[1]?
Внутри doc2188772.xml.sig вложены сертификаты: УЦ и тем, которым необходимо проверять.
|
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 01.06.2015(UTC) Сообщений: 11
|
Тоже пробовала, результат тот же самый. Алгоритм пробовала разный, тоже не помогло.. А как вообще определить, какой алгоритм необходим для проверки? Провайдера тоже пробовала указать при создании подписи
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 06.12.2008(UTC) Сообщений: 4,003 ![Российская Федерация Российская Федерация](/forum2/Content/images/flags/RU.png) Откуда: Крипто-Про Сказал(а) «Спасибо»: 21 раз Поблагодарили: 714 раз в 674 постах
|
Здравствуйте. Посмотрите примеры CMS, CMSSign, CMSVerify в пакете CMS в архиве samples-sources.jar (в дистрибутиве JCP). В них создание и проверка подписи. P.S. Возможно, у объекта PKCS7 есть методы для проверки подписи. И главное - вы в sig.verify(signature); подаете signature, а это и есть CMS подпись. Подавать нужно "голую" подпись длиной 64 байта, ее, вероятно, можно извлечь из того же объекта PKCS7. Но опять же подпись проверится при условии, что она сделана с данных, а не атрибутов. Отредактировано пользователем 13 декабря 2016 г. 18:43:53(UTC)
| Причина: Не указана |
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 01.06.2015(UTC) Сообщений: 11
|
Что есть голая подпись? Я загрузила данные (неподписанные), я отдала файл подписи - они должны сопоставиться, разве нет? Примеры смотрела, verify оттуда и взят Отредактировано пользователем 13 декабря 2016 г. 18:49:07(UTC)
| Причина: Не указана
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 06.12.2008(UTC) Сообщений: 4,003 ![Российская Федерация Российская Федерация](/forum2/Content/images/flags/RU.png) Откуда: Крипто-Про Сказал(а) «Спасибо»: 21 раз Поблагодарили: 714 раз в 674 постах
|
Автор: daryaNeko ![Перейти к цитате Перейти к цитате](/forum2/Themes/soclean/icon_latest_reply.gif) Что есть голая подпись?
Я загрузила данные (неподписанные), я отдала файл подписи - они должны сопоставиться, разве нет? Примеры смотрела, verify оттуда и взят Есть разные форматы подписи, оформленные в в виде структур (PKCS7, CMS, CAdES). В чистом виде подпись имеет длину 64 байта (128 для ГОСТ 2012 (512)). Именно ее можно создать и проверить, используя Signature. Вы. вероятно, имеете дело с PKCS7. Эта подпись более сложная (поищите RFC), содержит атрибуты и т.п. Для ее проверки см. примеры из поста выше (там она выполняется иначе). Просто выполнить Signature недостаточно (с неправильными входящими данными). |
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close