Статус: Новичок
Группы: Участники
Зарегистрирован: 01.12.2015(UTC) Сообщений: 5 ![Монако Монако](/forum2/Content/images/flags/MC.png)
|
Здравствуйте. Используем JCP 2.0 38481 для проверки валидности отсоединенной подписи. Есть подпись, в которой не передаются сертификаты (имею ввиду, что обьект certificates отстутствует, и после contentInfo следует обьект SET (согласно RFC-2315)). В обычном случае, для проверки подписи используется класс java.security.Signature, куда мы через initVerify передаем сертификат. В данном случае, насколько я понимаю, проверить валидность можно только используя публичный ключ. Вопрос в том как его получить имея файл подписи?
Для примера есть так же КриптоПро АРМ 5.2, и через нее получается проверить валидиность этой же пары файл-подпись. Как в данном случае АРМ осуществляет проверку, и возможна ли аналогичная реализация на JCP (собственно, как это можно реализовать)?
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 14.03.2011(UTC) Сообщений: 153 ![Мужчина Мужчина](/forum2/Themes/soclean/male.gif) Откуда: Санкт-Петербург Сказал «Спасибо»: 1 раз Поблагодарили: 7 раз в 5 постах
|
Вообще-то, JCP реализует стандарт JCA. Подпись - это значение некоторой функции. Размер выходных данных от 8 до 32 байт. Есть хеш функции - messageDigest, есть функции подписи - signer.
В КрипоПро CSP, чаще всего используется контейнер PKCS#7. В JCP есть набор компонентов для обслуживания контейнера. Некоторые разработчики используют оснастку от BouncyCastle Java. При создании контейнера подписи, чаще всего добавляют сертификат подписанта. Реже применяются параметры, определяющие сертификат подписанта. В качестве примера - сведения об издателе и серийный номер сертификата.
Средствами оснастки надо вытащить раздел "подписанные атрибуты". Там, обычно, хранится значение хеш функции и время подписания. Теперь, вам достаточно сравнить значение хеш функции от открепленного документа со значением, взятым из контейнера. Дату вы используете для проверки действия сертификата подписанта на момент создания подписи.
Почему у вас получилось проверить в АРМ? При работе с CSP API Lite, надо указывать сертификат и передавать блок контейнера подписи. Сертификат вы задаете отдельно.
Теперь, в оснастке BouncyCastle, вам надо прочитать контейнер и добавить к полученному объекту объект хранилища с сертификатом подписанта. Таким способом вы сможете средствами оснастки проверить подпись.
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close