1 package org.bouncycastle.asn1.x509;
3 import org.bouncycastle.crypto.Digest;
4 import org.bouncycastle.crypto.digests.SHA1Digest;
5 import org.bouncycastle.asn1.*;
9 * SubjectKeyIdentifier::= OCTET STRING
12 public class SubjectKeyIdentifier
13 implements DEREncodable
15 private byte[] keyidentifier;
17 public SubjectKeyIdentifier(
20 this.keyidentifier=keyid;
23 public SubjectKeyIdentifier(
26 this.keyidentifier=keyid.getOctets();
32 * Calulates the keyidentifier using a SHA1 hash over the BIT STRING
33 * from SubjectPublicKeyInfo as defined in RFC2459.
36 public SubjectKeyIdentifier(
37 SubjectPublicKeyInfo spki)
39 Digest digest = new SHA1Digest();
40 byte[] resBuf = new byte[digest.getDigestSize()];
42 DERBitString derpk = new DERBitString(spki.getPublicKey());
43 byte[] bytes = derpk.getBytes();
44 digest.update(bytes, 0, bytes.length);
45 digest.doFinal(resBuf, 0);
46 this.keyidentifier=resBuf;
49 public byte[] getKeyIdentifier()
56 * SubjectKeyIdentifier := OCTET STRING
59 public DERObject getDERObject()
61 DEROctetString oct = new DEROctetString(keyidentifier);