Ключевое слово в защите информации
КЛЮЧЕВОЕ СЛОВО
в защите информации
Получить ГОСТ TLS-сертификат для домена (SSL-сертификат)
Добро пожаловать, Гость! Чтобы использовать все возможности Вход или Регистрация.

Уведомление

Icon
Error

2 Страницы<12
Опции
К последнему сообщению К первому непрочитанному
Offline Евгений Афанасьев  
#11 Оставлено : 24 сентября 2018 г. 12:53:12(UTC)
Евгений Афанасьев

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 06.12.2008(UTC)
Сообщений: 3,924
Российская Федерация
Откуда: Крипто-Про

Сказал(а) «Спасибо»: 20 раз
Поблагодарили: 690 раз в 651 постах
Передайте в getInstance значение signOid, для хеширования - аналогично можно извлечь oid алгоритма хеширования.
Offline Capfunny  
#12 Оставлено : 24 сентября 2018 г. 13:31:15(UTC)
Capfunny

Статус: Участник

Группы: Участники
Зарегистрирован: 21.09.2018(UTC)
Сообщений: 24
Российская Федерация

Сказал(а) «Спасибо»: 9 раз
Автор: Евгений Афанасьев Перейти к цитате
Передайте в getInstance значение signOid, для хеширования - аналогично можно извлечь oid алгоритма хеширования.


getInstance принимает только строковые значения. если вызывать так: Signature.getInstance(info.signatureAlgorithm.algorithm.toString() ..., то получим ошибку:

java.security.NoSuchAlgorithmException: no such algorithm: { 1 2 643 7 1 1 1 1 } for provider JCP //строковое значение info.signatureAlgorithm.algorithm = "{ 1 2 643 7 1 1 1 1 }"

Впрочем даже если передавать стоку "1.2.643.7.1.1.1.1", то все равно та же ошибка:

java.security.NoSuchAlgorithmException: no such algorithm: 1.2.643.7.1.1.1.1 for provider JCP


Евгений, я наверное туплю, не могли бы вы расписать алгоритм подробней?

Отредактировано пользователем 24 сентября 2018 г. 13:43:48(UTC)  | Причина: Не указана

Offline Евгений Афанасьев  
#13 Оставлено : 24 сентября 2018 г. 14:27:44(UTC)
Евгений Афанасьев

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 06.12.2008(UTC)
Сообщений: 3,924
Российская Федерация
Откуда: Крипто-Про

Сказал(а) «Спасибо»: 20 раз
Поблагодарили: 690 раз в 651 постах
Прошу прощения, там оид алгоритма ключа. Есть варианты:
1) вы делаете if (oid == <gost_2001_oid>) { return sig_alg_2001; } else if (...) и т.д. для всех трех oid'ов, чтобы получить правильный алгоритм подписи, зная oid ключа из signatureAlgorithm;
2) рекомендуемый - попробуйте склеить <digest_oid> и <key_oid> из подписи (поля digestAlgorithm и signatureAlgorithm из elements[0], т.е. SignerInfo) через with, т.е. получится <digest_oid>with<key_oid>, такая пара должна быть в провайдере зарегистрирована. Получится, например, "1.2.643.7.1.1.2.2with1.2.643.7.1.1.1.1", т.е., фактически, "GOST3411_2012_256withGOST3410_2012_256";
3) рекомендуемый - в последней сборке на сайте было изменено определение алгоритма в Signature, он будет определен по алгоритму ключа, переданному в initSign/initVerify, потому значение в getInstance некритично.

Отредактировано пользователем 24 сентября 2018 г. 14:28:19(UTC)  | Причина: Не указана

thanks 1 пользователь поблагодарил Евгений Афанасьев за этот пост.
Capfunny оставлено 24.09.2018(UTC)
Offline Capfunny  
#14 Оставлено : 24 сентября 2018 г. 16:50:48(UTC)
Capfunny

Статус: Участник

Группы: Участники
Зарегистрирован: 21.09.2018(UTC)
Сообщений: 24
Российская Федерация

Сказал(а) «Спасибо»: 9 раз
Евгений, огромное спасибо, 2-й вариант отлично сработал!
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
2 Страницы<12
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.