using System; using Org.BouncyCastle.Utilities; namespace Org.BouncyCastle.Asn1.Pkcs { public class AttributePkcs : Asn1Encodable { private readonly DerObjectIdentifier attrType; private readonly Asn1Set attrValues; /** * return an Attribute object from the given object. * * @param o the object we want converted. * @exception ArgumentException if the object cannot be converted. */ public static AttributePkcs GetInstance( object obj) { AttributePkcs attr = obj as AttributePkcs; if (obj == null || attr != null) { return attr; } Asn1Sequence seq = obj as Asn1Sequence; if (seq != null) { return new AttributePkcs(seq); } throw new ArgumentException("Unknown object in factory: " + Platform.GetTypeName(obj), "obj"); } private AttributePkcs( Asn1Sequence seq) { if (seq.Count != 2) throw new ArgumentException("Wrong number of elements in sequence", "seq"); attrType = DerObjectIdentifier.GetInstance(seq[0]); attrValues = Asn1Set.GetInstance(seq[1]); } public AttributePkcs( DerObjectIdentifier attrType, Asn1Set attrValues) { this.attrType = attrType; this.attrValues = attrValues; } public DerObjectIdentifier AttrType { get { return attrType; } } public Asn1Set AttrValues { get { return attrValues; } } /** * Produce an object suitable for an Asn1OutputStream. *
* Attr ::= Sequence { * attrType OBJECT IDENTIFIER, * attrValues Set OF AttributeValue * } **/ public override Asn1Object ToAsn1Object() { return new DerSequence(attrType, attrValues); } } }