Получить AuthorityCertIssuer в KalkanProvider
(0 чел.) 
  • Страница:
  • 1

ТЕМА: Получить AuthorityCertIssuer в KalkanProvider

Получить AuthorityCertIssuer в KalkanProvider 2 года, 12 мес. назад #2483

  • StalkAlex
  • Новый участник
  • Постов: 16
  • Репутация: 0
Доброе время суток, уважаемые разработчики и администраторы ресурса. Пытаюсь получить AuthorityKeyIdentifier из сертификата, используя методы из библиотеки Kalkan на Java.

X509Certificate certificate = ...

byte[] extensionValue = this.certificate.getExtensionValue("2.5.29.35");
ASN1OctetString akiOc = ASN1OctetString.getInstance(extensionValue);
AuthorityKeyIdentifier aki = AuthorityKeyIdentifier.getInstance(akiOc.getOctets());
String info = aki.getAuthorityCertIssuer().toString();


Но получаю тут getInstance(extensionValue) такой эксепшн:

[i]Exception in thread "main" java.lang.IllegalArgumentException: illegal object in getInstance: [B
at kz.gov.pki.kalkan.asn1.ASN1OctetString.getInstance(ASN1OctetString.java:66)[/i]

Подскажите, как сделать правильно?
Изменено: 2 года, 12 мес. назад от StalkAlex.

Re: Получить AuthorityCertIssuer в KalkanProvider 2 года, 12 мес. назад #2487

  • StalkAlex
  • Новый участник
  • Постов: 16
  • Репутация: 0
Изначально искал не в том месте, мне нужна была ссылка на корневой сертификат. Вот решение моей проблемы:
String oid = X509Extensions.AuthorityKeyIdentifier.getId();
        byte[] extensionValue = this.certificate.getExtensionValue(X509Extensions.AuthorityInfoAccess.getId());
        DEROctetString oct = (DEROctetString) (new ASN1InputStream(new ByteArrayInputStream(extensionValue)).readObject());
        AuthorityInformationAccess aia = AuthorityInformationAccess.getInstance(new ASN1InputStream(oct.getOctets()).readObject());
        AccessDescription[] accessDescriptions = aia.getAccessDescriptions();
        for(AccessDescription accessDescription: accessDescriptions) {
            GeneralName generalName = accessDescription.getAccessLocation();
            if (generalName.getTagNo() == GeneralName.uniformResourceIdentifier) {
                DERIA5String str = DERIA5String.getInstance(generalName.getName());
                String accessLocation = str.getString();                
            }
        }
Изменено: 2 года, 12 мес. назад от StalkAlex.
  • Страница:
  • 1
FaLang translation system by Faboba