001package org.apache.commons.ssl.org.bouncycastle.asn1.x509;
002
003import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1Object;
004import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1OctetString;
005import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1Primitive;
006import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1TaggedObject;
007import org.apache.commons.ssl.org.bouncycastle.asn1.DEROctetString;
008
009/**
010 * The SubjectKeyIdentifier object.
011 * <pre>
012 * SubjectKeyIdentifier::= OCTET STRING
013 * </pre>
014 */
015public class SubjectKeyIdentifier
016    extends ASN1Object
017{
018    private byte[] keyidentifier;
019
020    public static SubjectKeyIdentifier getInstance(
021        ASN1TaggedObject obj,
022        boolean          explicit)
023    {
024        return getInstance(ASN1OctetString.getInstance(obj, explicit));
025    }
026
027    public static SubjectKeyIdentifier getInstance(
028        Object obj)
029    {
030        if (obj instanceof SubjectKeyIdentifier)
031        {
032            return (SubjectKeyIdentifier)obj;
033        }
034        else if (obj != null)
035        {
036            return new SubjectKeyIdentifier(ASN1OctetString.getInstance(obj));
037        }
038
039        return null;
040    }
041
042    public static SubjectKeyIdentifier fromExtensions(Extensions extensions)
043    {
044        return SubjectKeyIdentifier.getInstance(extensions.getExtensionParsedValue(Extension.subjectKeyIdentifier));
045    }
046
047    public SubjectKeyIdentifier(
048        byte[] keyid)
049    {
050        this.keyidentifier = keyid;
051    }
052
053    protected SubjectKeyIdentifier(
054        ASN1OctetString keyid)
055    {
056        this.keyidentifier = keyid.getOctets();
057    }
058
059    public byte[] getKeyIdentifier()
060    {
061        return keyidentifier;
062    }
063
064    public ASN1Primitive toASN1Primitive()
065    {
066        return new DEROctetString(keyidentifier);
067    }
068}