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

Уведомление

Icon
Error

2 Страницы12>
Опции
К последнему сообщению К первому непрочитанному
Offline Bekiz  
#1 Оставлено : 8 февраля 2019 г. 10:22:54(UTC)
Bekiz

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

Группы: Участники
Зарегистрирован: 03.08.2015(UTC)
Сообщений: 12

Добрый день.

С помощью метода java.security.cert.X509Certificate.getPublicKey() пытаюсь вытащить публичный ключ из сертификата нового ГОСТа 2012 256 "Тестовый головной УЦ ООО "КРИПТО-ПРО" ГОСТ 2012 (УЦ 2.0)".
Получаю ошибку: algorithm identifier 1.2.643.7.1.1.1.1 in key not recognised

Подскажите, пожалуйста, каким образом можно получить публичный ключ стандартными методами java.security из нового ГОСТ 2012 256 сертификата?

Offline Евгений Афанасьев  
#2 Оставлено : 8 февраля 2019 г. 11:16:49(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 20 раз
Поблагодарили: 701 раз в 662 постах
Здравствуйте.
JCP установлен? Приведите пример, как получаете ключ.

Отредактировано пользователем 8 февраля 2019 г. 11:18:19(UTC)  | Причина: Не указана

Offline Bekiz  
#3 Оставлено : 8 февраля 2019 г. 11:25:36(UTC)
Bekiz

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

Группы: Участники
Зарегистрирован: 03.08.2015(UTC)
Сообщений: 12

Автор: Евгений Афанасьев Перейти к цитате
Здравствуйте.
JCP установлен? Приведите пример, как получаете ключ.


JCP версии 2.0
Через org.bouncycastle.cms.CMSSignedData.getSignerInfos().getSigners() получаю список подписантов.
Преобразую в org.bouncycastle.cms.SignerInformation si

DERSequence seq = (DERSequence)si.getUnsignedAttributes().get(PKCSObjectIdentifiers.id_aa_ets_certValues).getAttrValues().getObjectAt(0);
Вытаскиваю нужный сертификат в цикле:
X509CertificateStructure cs = X509CertificateStructure.getInstance(seq.getObjectAt(i));
X509Certificate c = new X509CertificateObject(cs);

И далее хочу получить публичный ключ:
c.getPublicKey()
Получаю ошибку.

Offline Евгений Афанасьев  
#4 Оставлено : 8 февраля 2019 г. 11:33:06(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 20 раз
Поблагодарили: 701 раз в 662 постах
X509Certificate - скорее всего, принадлежит BC, который может не знать про ГОСТ 2012, потому дает ошибку.
Offline Bekiz  
#5 Оставлено : 8 февраля 2019 г. 11:45:11(UTC)
Bekiz

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

Группы: Участники
Зарегистрирован: 03.08.2015(UTC)
Сообщений: 12

Автор: Евгений Афанасьев Перейти к цитате
X509Certificate - скорее всего, принадлежит BC, который может не знать про ГОСТ 2012, потому дает ошибку.


Каким классом я тогда могу вытащить публичный ключ из сертификата подписанта?
Offline Евгений Афанасьев  
#6 Оставлено : 8 февраля 2019 г. 13:54:55(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 20 раз
Поблагодарили: 701 раз в 662 постах
Попробуйте его пересоздать с помощью X509Certificate newCert = CertificateFactory.getInstance("X.509").generateCertificate(new ByteArrayInputStream(c.getEncoded()));
Offline Bekiz  
#7 Оставлено : 8 февраля 2019 г. 14:21:24(UTC)
Bekiz

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

Группы: Участники
Зарегистрирован: 03.08.2015(UTC)
Сообщений: 12

Автор: Евгений Афанасьев Перейти к цитате
Попробуйте его пересоздать с помощью X509Certificate newCert = CertificateFactory.getInstance("X.509").generateCertificate(new ByteArrayInputStream(c.getEncoded()));


Появилась новая ошибка: 1.2.643.7.1.1.3.2 Signature not available
Offline Евгений Афанасьев  
#8 Оставлено : 8 февраля 2019 г. 14:22:01(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 20 раз
Поблагодарили: 701 раз в 662 постах
Где появилась?
Offline Bekiz  
#9 Оставлено : 8 февраля 2019 г. 14:22:57(UTC)
Bekiz

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

Группы: Участники
Зарегистрирован: 03.08.2015(UTC)
Сообщений: 12

Автор: Евгений Афанасьев Перейти к цитате
Где появилась?


newCert.getPublicKey()
Offline Евгений Афанасьев  
#10 Оставлено : 8 февраля 2019 г. 14:27:27(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 20 раз
Поблагодарили: 701 раз в 662 постах
newCert - объект какого типа? И какого класса объект открытого ключа в нем (можно увидеть при отладке, раскрыв объект newCert)? Какая внутри реализация (не внешний X509Certificate или PublicKey).
Где-то делается Signature s = Signature.getInstance("1.2.643.7.1.1.3.2", "BC").
JCP из последних с сайта (первая пара версий 2.0 не поддерживала ГОСТ 2012)?

Отредактировано пользователем 8 февраля 2019 г. 14:29:10(UTC)  | Причина: Не указана

RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
2 Страницы12>
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.