X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;ds=sidebyside;f=src%2Forg%2Fbouncycastle%2Fasn1%2Fx509%2FSubjectKeyIdentifier.java;fp=src%2Forg%2Fbouncycastle%2Fasn1%2Fx509%2FSubjectKeyIdentifier.java;h=0dd2b27db529082680ca6a287cb69c194a137ed2;hb=e5e9355b4f4e0e2c8de9068a71c1e3cc26fa9905;hp=0000000000000000000000000000000000000000;hpb=f35445729371789b3d496f426d7f87542f8e1a45;p=org.ibex.core.git diff --git a/src/org/bouncycastle/asn1/x509/SubjectKeyIdentifier.java b/src/org/bouncycastle/asn1/x509/SubjectKeyIdentifier.java new file mode 100644 index 0000000..0dd2b27 --- /dev/null +++ b/src/org/bouncycastle/asn1/x509/SubjectKeyIdentifier.java @@ -0,0 +1,64 @@ +package org.bouncycastle.asn1.x509; + +import org.bouncycastle.crypto.Digest; +import org.bouncycastle.crypto.digests.SHA1Digest; +import org.bouncycastle.asn1.*; + +/** + *
+ * SubjectKeyIdentifier::= OCTET STRING
+ * 
+ */ +public class SubjectKeyIdentifier + implements DEREncodable +{ + private byte[] keyidentifier; + + public SubjectKeyIdentifier( + byte[] keyid) + { + this.keyidentifier=keyid; + } + + public SubjectKeyIdentifier( + DEROctetString keyid) + { + this.keyidentifier=keyid.getOctets(); + + } + + /** + * + * Calulates the keyidentifier using a SHA1 hash over the BIT STRING + * from SubjectPublicKeyInfo as defined in RFC2459. + * + **/ + public SubjectKeyIdentifier( + SubjectPublicKeyInfo spki) + { + Digest digest = new SHA1Digest(); + byte[] resBuf = new byte[digest.getDigestSize()]; + + DERBitString derpk = new DERBitString(spki.getPublicKey()); + byte[] bytes = derpk.getBytes(); + digest.update(bytes, 0, bytes.length); + digest.doFinal(resBuf, 0); + this.keyidentifier=resBuf; + } + + public byte[] getKeyIdentifier() + { + return keyidentifier; + } + + /** + *
+     * SubjectKeyIdentifier := OCTET STRING
+     * 
+ */ + public DERObject getDERObject() + { + DEROctetString oct = new DEROctetString(keyidentifier); + return oct; + } +}