001package org.apache.commons.ssl.org.bouncycastle.asn1.x500; 002 003import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1Encodable; 004import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1EncodableVector; 005import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1Object; 006import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1ObjectIdentifier; 007import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1Primitive; 008import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1Sequence; 009import org.apache.commons.ssl.org.bouncycastle.asn1.DERSequence; 010 011public class AttributeTypeAndValue 012 extends ASN1Object 013{ 014 private ASN1ObjectIdentifier type; 015 private ASN1Encodable value; 016 017 private AttributeTypeAndValue(ASN1Sequence seq) 018 { 019 type = (ASN1ObjectIdentifier)seq.getObjectAt(0); 020 value = (ASN1Encodable)seq.getObjectAt(1); 021 } 022 023 public static AttributeTypeAndValue getInstance(Object o) 024 { 025 if (o instanceof AttributeTypeAndValue) 026 { 027 return (AttributeTypeAndValue)o; 028 } 029 else if (o != null) 030 { 031 return new AttributeTypeAndValue(ASN1Sequence.getInstance(o)); 032 } 033 034 throw new IllegalArgumentException("null value in getInstance()"); 035 } 036 037 public AttributeTypeAndValue( 038 ASN1ObjectIdentifier type, 039 ASN1Encodable value) 040 { 041 this.type = type; 042 this.value = value; 043 } 044 045 public ASN1ObjectIdentifier getType() 046 { 047 return type; 048 } 049 050 public ASN1Encodable getValue() 051 { 052 return value; 053 } 054 055 /** 056 * <pre> 057 * AttributeTypeAndValue ::= SEQUENCE { 058 * type OBJECT IDENTIFIER, 059 * value ANY DEFINED BY type } 060 * </pre> 061 * @return a basic ASN.1 object representation. 062 */ 063 public ASN1Primitive toASN1Primitive() 064 { 065 ASN1EncodableVector v = new ASN1EncodableVector(); 066 067 v.add(type); 068 v.add(value); 069 070 return new DERSequence(v); 071 } 072}