16e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrompackage org.bouncycastle.asn1.x500; 26e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom 36e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstromimport org.bouncycastle.asn1.ASN1Encodable; 46e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstromimport org.bouncycastle.asn1.ASN1EncodableVector; 54c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstromimport org.bouncycastle.asn1.ASN1Object; 66e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstromimport org.bouncycastle.asn1.ASN1ObjectIdentifier; 74c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstromimport org.bouncycastle.asn1.ASN1Primitive; 86e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstromimport org.bouncycastle.asn1.ASN1Sequence; 96e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstromimport org.bouncycastle.asn1.DERSequence; 106e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom 116e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrompublic class AttributeTypeAndValue 124c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom extends ASN1Object 136e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom{ 146e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom private ASN1ObjectIdentifier type; 156e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom private ASN1Encodable value; 166e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom 176e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom private AttributeTypeAndValue(ASN1Sequence seq) 186e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom { 196e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom type = (ASN1ObjectIdentifier)seq.getObjectAt(0); 206e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom value = (ASN1Encodable)seq.getObjectAt(1); 216e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom } 226e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom 236e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom public static AttributeTypeAndValue getInstance(Object o) 246e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom { 256e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom if (o instanceof AttributeTypeAndValue) 266e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom { 276e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom return (AttributeTypeAndValue)o; 286e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom } 296e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom else if (o != null) 306e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom { 316e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom return new AttributeTypeAndValue(ASN1Sequence.getInstance(o)); 326e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom } 336e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom 346e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom throw new IllegalArgumentException("null value in getInstance()"); 356e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom } 366e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom 376e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom public AttributeTypeAndValue( 386e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom ASN1ObjectIdentifier type, 396e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom ASN1Encodable value) 406e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom { 416e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom this.type = type; 426e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom this.value = value; 436e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom } 446e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom 456e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom public ASN1ObjectIdentifier getType() 466e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom { 476e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom return type; 486e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom } 496e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom 506e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom public ASN1Encodable getValue() 516e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom { 526e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom return value; 536e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom } 546e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom 556e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom /** 566e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom * <pre> 576e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom * AttributeTypeAndValue ::= SEQUENCE { 586e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom * type OBJECT IDENTIFIER, 596e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom * value ANY DEFINED BY type } 606e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom * </pre> 616e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom * @return a basic ASN.1 object representation. 626e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom */ 634c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom public ASN1Primitive toASN1Primitive() 646e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom { 656e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom ASN1EncodableVector v = new ASN1EncodableVector(); 666e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom 676e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom v.add(type); 686e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom v.add(value); 696e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom 706e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom return new DERSequence(v); 716e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom } 726e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom} 73