Статус: Новичок
Группы: Участники
Зарегистрирован: 24.07.2012(UTC) Сообщений: 9
|
Здравствуйте. Ситуация такая: у клиента стоит CSP + программка, которая подписывает файл, используя CryptoAPI. Файл и подпись (detached) передаются на сервер, где установлен JCP. Вот там-то, на сервере, не удается проверить подпись - всегда false :( Signature sig = Signature.getInstance(JCP.GOST_SIGN_NAME); byte[] pkcs7Bin = utils.fromBase64ToBinary(this.signature); X509Certificate cert = pkcs7.getCertificates()[0];
sig.initVerify(cert); sig.update(this.crtf_data); result = sig.verify(pkcs7Bin);
Отправлял на http://notary.cryptopro.ru/ подпись и файл - все нормально.
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 06.12.2008(UTC) Сообщений: 3,977 Откуда: Крипто-Про Сказал(а) «Спасибо»: 21 раз Поблагодарили: 708 раз в 669 постах
|
Здравствуйте. Если подпись в формате PKCS7, то можете посмотреть примеры CMS в samples_src.jar. Для совместимости с CSP попробуйте использовать алгоритм "CryptoProSignature".
|
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 24.07.2012(UTC) Сообщений: 9
|
Убрал перекодировку в UTF-16LE - заработало. MessageDigest считался неправильно. Спасибо.
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 24.07.2012(UTC) Сообщений: 9
|
Еще несколько вопросов.
1. Что-то не понял, как загрузить файлы CRL в JCP. Просветите. 2. В хранилище будут лежать сертификаты разных УЦ. И не будет лежать сертификат, которым подписан документ. Ну, сертификат я из подписи достану, но как в этом случае построить цепочку и проверить ее?
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 06.12.2008(UTC) Сообщений: 3,977 Откуда: Крипто-Про Сказал(а) «Спасибо»: 21 раз Поблагодарили: 708 раз в 669 постах
|
1. Для проверки статуса сертификата вам надо будет использовать PKIX - есть пример в samples_src.jar/OCSPValidateCert. Грузить надо будет программно (http) или используя PKIX. 2. В этом же примере (OCSPValidateCert) есть описание, как построить цепочку. http://cryptopro.ru/foru....aspx?g=posts&t=4905 - здесь обсуждалось построение цепочки. Отредактировано пользователем 27 июля 2012 г. 14:57:01(UTC)
| Причина: Не указана |
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 24.07.2012(UTC) Сообщений: 9
|
В примере сертификаты промежуточные и корневой берутся по заведомо известному алиасу. В моем случае алиасы неизвестны.
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 06.12.2008(UTC) Сообщений: 3,977 Откуда: Крипто-Про Сказал(а) «Спасибо»: 21 раз Поблагодарили: 708 раз в 669 постах
|
Получить из хранилища сертификатов алиасы и сертификаты можно так: Код:
KeyStore store = KeyStore.getInstance("CertStore", "JCP");
store.load(new FileInputStream("/path/to/cert/store"), "store_password".toCharArray());
Enumeration aliases = store.aliases();
while (aliases.hasMoreElements()) {
String alias = (String) aliases.nextElement();
System.out.println("Current alias: " + alias);
if (store.isCertificateEntry(alias)) {
System.out.println( ((X509Certificate)store.getCertificate(alias)).getSubjectDN() );
}
}
|
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 24.07.2012(UTC) Сообщений: 9
|
Это-то ясно. Как из сертификата однозначно идентифицировать его издателя? Сравнивать cert.issuerDN и store.getCertificate(alias)).getSubjectDN()?
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 06.12.2008(UTC) Сообщений: 3,977 Откуда: Крипто-Про Сказал(а) «Спасибо»: 21 раз Поблагодарили: 708 раз в 669 постах
|
Если в списке все сертфикаты - корневые, то передайте их в trustAnchor при построении цепочки: PKIX сам определит, кто издатель, и построит цепочку. |
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 24.07.2012(UTC) Сообщений: 9
|
Добрый день. При проверке подписи выдается ошибка: com.objsys.asn1j.runtime.Asn1TagMatchFailedException: ASN.1 decode error @ offset 0: Как я понимаю, скорее всего какие-то данные в сертификате имеют неверный тип. Прошу помочь разобраться. Отредактировано пользователем 14 сентября 2012 г. 16:36:49(UTC)
| Причина: Не указана Вложение(я): anketa.xls (20kb) загружен 11 раз(а). anketa.xls.p7s (3kb) загружен 12 раз(а).У Вас нет прав для просмотра или загрузки вложений. Попробуйте зарегистрироваться.
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close