Статус: Участник
Группы: Участники
Зарегистрирован: 03.09.2009(UTC) Сообщений: 18
|
Здравствуйте. Есть ли в jcp (сопутствующих библиотеках) инструменты работы с расширениями сертификатов и СОС? Например, мне надо получить subjectKeyIdentifier Цитата:byte[] value = certificate.getExtensionValue("2.5.29.14") Могу ли я получить значение этого расширения? Спасибо
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 09.10.2008(UTC) Сообщений: 181
|
В JCP есть классы для работы с раширениями в пакете ru.CryptoPro.JCP.ASN.CertificateExtensions например SubjectKeyIdentifier. Код:byte[] bytes = certificate.getExtensionValue("2.5.29.14");
SubjectKeyIdentifier skid = new SubjectKeyIdentifier();
com.objsys.asn1j.runtime.Asn1BerDecodeBuffer buf = new Asn1BerDecodeBuffer(bytes);
skid.decode(buf);
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 03.09.2009(UTC) Сообщений: 18
|
спасибо! У меня не получилось достать таким же образом "2.5.29.35" - идентификатор ключа УЦ (класс AuthorityKeyIdentifier), и номер СОС CRLNumber ("2.5.29.20") . при декодировании Код:
byte[] bytes = certificate.getExtensionValue("2.5.29.35");
AuthorityKeyIdentifier akid = new AuthorityKeyIdentifier();
Asn1BerDecodeBuffer buf = new Asn1BerDecodeBuffer(bytes);
akid.decode(buf);
возникает ошибка Tag match failed: expected [UNIVERSAL 16], parsed [UNIVERSAL 4] Подскажите, пожалуйста, как правильно декодировать эти расширения. Спасибо
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 09.10.2008(UTC) Сообщений: 181
|
Напутал. Правильно так Цитата:bytes = certificate.getExtensionValue("2.5.29.14"); Asn1BerDecodeBuffer buf = new Asn1BerDecodeBuffer(bytes); Asn1OctetString str = new Asn1OctetString(); str.decode(buf); byte[] insideString = str.value; SubjectKeyIdentifier skid = new SubjectKeyIdentifier(); buf = new Asn1BerDecodeBuffer(insideString); skid.decode(buf); Для subjectKeyIdentifier работало из-за того что там один Asn1OctetString завернут в другой. Но неправильно выдавало не Identifier, который обычно хеш, а Identifier в Asn1OctetString. Т.е. в начале стоят лишние 2 байта: 4 (признак Asn1OctetString) и длина.
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 03.09.2009(UTC) Сообщений: 18
|
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close