package org.bouncycastle.x509; import org.bouncycastle.asn1.ASN1Encodable; import org.bouncycastle.asn1.ASN1EncodableVector; import org.bouncycastle.asn1.ASN1Set; import org.bouncycastle.asn1.DERObject; import org.bouncycastle.asn1.DERObjectIdentifier; import org.bouncycastle.asn1.DERSet; import org.bouncycastle.asn1.x509.Attribute; /** * Class for carrying the values in an X.509 Attribute. */ public class X509Attribute extends ASN1Encodable { Attribute attr; /** * @param at an object representing an attribute. */ X509Attribute( ASN1Encodable at) { this.attr = Attribute.getInstance(at); } /** * Create an X.509 Attribute with the type given by the passed in oid and * the value represented by an ASN.1 Set containing value. * * @param oid type of the attribute * @param value value object to go into the atribute's value set. */ public X509Attribute( String oid, ASN1Encodable value) { this.attr = new Attribute(new DERObjectIdentifier(oid), new DERSet(value)); } /** * Create an X.59 Attribute with the type given by the passed in oid and the * value represented by an ASN.1 Set containing the objects in value. * * @param oid type of the attribute * @param value vector of values to go in the attribute's value set. */ public X509Attribute( String oid, ASN1EncodableVector value) { this.attr = new Attribute(new DERObjectIdentifier(oid), new DERSet(value)); } public String getOID() { return attr.getAttrType().getId(); } public ASN1Encodable[] getValues() { ASN1Set s = attr.getAttrValues(); ASN1Encodable[] values = new ASN1Encodable[s.size()]; for (int i = 0; i != s.size(); i++) { values[i] = (ASN1Encodable)s.getObjectAt(i); } return values; } public DERObject toASN1Object() { return attr.toASN1Object(); } }