От DEROctetString к KeyUsage - PullRequest
       43

От DEROctetString к KeyUsage

1 голос
/ 28 июня 2010

В bouncycastle Я могу создать DEROctetString, начиная с KeyUsage.

Как получить KeyUsage, начиная с DEROctetString тогда?

Пример:

DEROctetString derString = new DEROctetString(new KeyUsage(KeyUsage.digitalSignature));
KeyUsage ku = ...(some code to get back KeyUsage starting from derString)...

Мне это нужно, потому что я могу создавать запросы сертификатов с помощью запроса расширения KeyUsage, но затем, учитывая только запрос сертификата, я не могу вернуть расширение KeyUsage.

Ответы [ 2 ]

1 голос
/ 28 июня 2010

Я нашел решение, используя ASN1InputStream:

ASN1InputStream ais = new ASN1InputStream(derOctetString.getOctetStream());
KeyUsage ku = new KeyUsage((DERBitString) ais.readObject());

Это работает!

0 голосов
/ 28 июня 2010

KeyUsage определено так в X.509,

 id-ce-keyUsage OBJECT IDENTIFIER ::=  { id-ce 15 }

 KeyUsage ::= BIT STRING {
      digitalSignature        (0),
      nonRepudiation          (1),
      keyEncipherment         (2),
      dataEncipherment        (3),
      keyAgreement            (4),
      keyCertSign             (5),
      cRLSign                 (6),
      encipherOnly            (7),
      decipherOnly            (8) }

Поэтому неправильно создавать для него строку октетов.Если вы создаете DERBitString, KeyUsage имеет конструктор для него.

...