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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline navrocky  
#1 Оставлено : 14 апреля 2025 г. 18:09:47(UTC)
navrocky

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

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

Сказал(а) «Спасибо»: 3 раз
Поблагодарили: 2 раз в 2 постах
Имеется публичный ключ (GOST R 34.10-2012 256 bit public key) в каком-то бинарном формате (64 байта, 512 бит) и это не формат ASN.1. Как его загрузить в PublicKey?

Я видел вот такой пример:

Код:
val keyFactory = KeyFactory.getInstance(algorithm, JCP.PROVIDER_NAME)
val pubKeySpec = X509EncodedKeySpec(pubKeyData)
val publicKey: PublicKey = keyFactory.generatePublic(pubKeySpec)


Но он не грузит ключ, выдается ошибка, что это не ASN1. Есть еще PKCS8EncodedKeySpec помимо X509EncodedKeySpec, но он тоже не грузит публичный ключ.

Подскажите пожалуйста, как можно загрузить этот ключ.

Единственный способ который я нашел, это сформировать структуру ASN1, положить в неё бинарный ключ и тогда он нормально загружается при помощи X509EncodedKeySpec:

Код:
Certificate SEQUENCE (2 elem)
    tbsCertificate TBSCertificate SEQUENCE (2 elem)
        serialNumber CertificateSerialNumber [?] OBJECT IDENTIFIER 1.2.643.7.1.1.1.1 gost2012PublicKey256 (GOST R 34.10-2012 256 bit public key)
        signature AlgorithmIdentifier SEQUENCE (2 elem)
            algorithm OBJECT IDENTIFIER 1.2.643.2.2.36.0 cryptoProSignXA (CryptoPro ell.curve XA for GOST R 34.10-2001)
            parameters ANY OBJECT IDENTIFIER 1.2.643.7.1.1.2.2 gost2012Digest256 (GOST R 34.11-2012 256 bit digest)
    signatureAlgorithm AlgorithmIdentifier [?] BIT STRING (528 bit) 0000010001000000000010000101101100010000101010010000111101000111111000…
вот сюда подставляю свой публичный ключ --->   algorithm OBJECT IDENTIFIER [?] OCTET STRING (64 byte) 085B10A90F47E3092829B2785C12DBC5621E933D8A2DA54DADE9C69E786CFB27560360…
Offline Евгений Афанасьев  
#2 Оставлено : 15 апреля 2025 г. 11:07:49(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 21 раз
Поблагодарили: 721 раз в 680 постах
Здравствуйте.
Чтобы создать открытый ключ из блоба, нужно в X509EncodedKeySpec передать ASN.1-объект SubjectPublicKeyInfo (аналогичный тому, что бывает в сертификате).
Offline navrocky  
#3 Оставлено : 15 апреля 2025 г. 11:29:37(UTC)
navrocky

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

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

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