1

bouncycastle 中,我可以从 KeyUsage 开始创建一个 DEROctetString。

那么如何从 DEROctetString 获取 KeyUsage 呢?

例子:

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

我需要这个,因为我能够使用 KeyUsage 扩展请求创建证书请求,但是,仅考虑到证书请求,我无法取回 KeyUsage 扩展。

4

2 回答 2

1

我找到了使用 ASN1InputStream 的解决方案:

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

这样可行!

于 2010-06-28T08:59:48.777 回答
0

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) }

所以为它创建 Octet String 是错误的。如果您创建 DERBitString,KeyUsage 有一个构造函数。

于 2010-06-28T00:36:16.133 回答