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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline mnbvcxz12  
#1 Оставлено : 6 июня 2024 г. 12:55:54(UTC)
mnbvcxz12

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

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

Сказал(а) «Спасибо»: 3 раз
Добрый день!

Необходимо в подпись добавить

cms.signerInfos.elements[0].sid.set_subjectKeyIdentifier();

SubjectKeyIdentifier subjectKeyIdentifier = new SubjectKeyIdentifier();
там есть 3 конструктора, не понятно что необходимо в конструкторы класть

на просторах интернета нашла такую инициализацию, но этот класс не из package ru.CryptoPro.JCP.ASN.CertificateExtensions;
PublicKey publicKey = ...;
SubjectKeyIdentifier subjectKeyIdentifier = new SubjectKeyIdentifier(publicKey);

на руках имею сертификат, String digestOid, String signOid, sign.

Вопрос как мне получить subjectKeyIdentifier?




Offline wellusion  
#2 Оставлено : 10 июня 2024 г. 10:16:04(UTC)
wellusion

Статус: Активный участник

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

Сказал(а) «Спасибо»: 14 раз
Поблагодарили: 1 раз в 1 постах
Добрый.
SubjectKeyIdentifier - тот, который org.bouncycastle.asn1.x509.SubjectKeyIdentifier? Тогда можно из сертификата излечь org.bouncycastle.asn1.x509.Extensions и потом получить экземпляр SubjectKeyIdentifier через метод SubjectKeyIdentifier.fromExtensions(extensions).
Offline mnbvcxz12  
#3 Оставлено : 18 июня 2024 г. 20:20:46(UTC)
mnbvcxz12

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

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

Сказал(а) «Спасибо»: 3 раз
нет который package ru.CryptoPro.JCP.ASN.CertificateExtensions
Offline mnbvcxz12  
#4 Оставлено : 18 июня 2024 г. 23:05:11(UTC)
mnbvcxz12

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

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

Сказал(а) «Спасибо»: 3 раз
Не понятно что класть в byte[], т.е как получить этот массив байт из сертификата cms.signerInfos.elements[0].sid.set_subjectKeyIdentifier (byte[])

Есть еще такой вызов метода KeyIdentifier keyIdentifier = ((X509CertImpl) cert).getSubjectKeyId();
, но как его сманить в subjectKeyIdentifier не понятно

Отредактировано пользователем 19 июня 2024 г. 0:11:55(UTC)  | Причина: Не указана

Offline Евгений Афанасьев  
#5 Оставлено : 20 июня 2024 г. 15:57:29(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 21 раз
Поблагодарили: 740 раз в 698 постах
Здравствуйте.
SubjectKeyIdentifier - расширение с идентификатором открытого ключа.
Пример кода:
Код:

X509Certificate cert = ...
TBSCertificate tbsCertificate = new TBSCertificate();
Asn1BerDecodeBuffer buf = new Asn1BerDecodeBuffer(cert.getTBSCertificate());
tbsCertificate.decode(buf);
OID SubjectKeyIdentifierOid = new OID("2.5.29.14");
Asn1ObjectIdentifier SubjectKeyIdentifierOId = new Asn1ObjectIdentifier(SubjectKeyIdentifierOid.value);
int len = tbsCertificate.extensions.elements.length;
SignerIdentifier sid = null;
for (int i = 0; i < len; i++) {
  if (tbsCertificate.extensions.elements[i].extnID.equals(SubjectKeyIdentifierOId)) {
    Asn1OctetString extnValue = tbsCertificate.extensions.elements[i].extnValue;
    sid = new SignerIdentifier();
    sid.set_subjectKeyIdentifier(extnValue);
  }
}
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.