Home | History | Annotate | Download | only in x509
      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