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}