1 package org.bouncycastle.asn1.x509; 2 3 import org.bouncycastle.asn1.ASN1Object; 4 import org.bouncycastle.asn1.ASN1OctetString; 5 import org.bouncycastle.asn1.ASN1Primitive; 6 import org.bouncycastle.asn1.ASN1TaggedObject; 7 import org.bouncycastle.asn1.DEROctetString; 8 import org.bouncycastle.util.Arrays; 9 10 /** 11 * The SubjectKeyIdentifier object. 12 * <pre> 13 * SubjectKeyIdentifier::= OCTET STRING 14 * </pre> 15 */ 16 public class SubjectKeyIdentifier 17 extends ASN1Object 18 { 19 private byte[] keyidentifier; 20 21 public static SubjectKeyIdentifier getInstance( 22 ASN1TaggedObject obj, 23 boolean explicit) 24 { 25 return getInstance(ASN1OctetString.getInstance(obj, explicit)); 26 } 27 28 public static SubjectKeyIdentifier getInstance( 29 Object obj) 30 { 31 if (obj instanceof SubjectKeyIdentifier) 32 { 33 return (SubjectKeyIdentifier)obj; 34 } 35 else if (obj != null) 36 { 37 return new SubjectKeyIdentifier(ASN1OctetString.getInstance(obj)); 38 } 39 40 return null; 41 } 42 43 public static SubjectKeyIdentifier fromExtensions(Extensions extensions) 44 { 45 return SubjectKeyIdentifier.getInstance(extensions.getExtensionParsedValue(Extension.subjectKeyIdentifier)); 46 } 47 48 public SubjectKeyIdentifier( 49 byte[] keyid) 50 { 51 this.keyidentifier = Arrays.clone(keyid); 52 } 53 54 protected SubjectKeyIdentifier( 55 ASN1OctetString keyid) 56 { 57 this(keyid.getOctets()); 58 } 59 60 public byte[] getKeyIdentifier() 61 { 62 return Arrays.clone(keyidentifier); 63 } 64 65 public ASN1Primitive toASN1Primitive() 66 { 67 return new DEROctetString(getKeyIdentifier()); 68 } 69 } 70