1
package org.bouncycastle.asn1.x509;
3
import java.util.Enumeration;
4
import java.util.Vector;
6
import org.bouncycastle.asn1.ASN1Encodable;
7
import org.bouncycastle.asn1.ASN1EncodableVector;
8
import org.bouncycastle.asn1.ASN1Sequence;
9
import org.bouncycastle.asn1.DERObject;
10
import org.bouncycastle.asn1.DERSequence;
13
* This extension may contain further X.500 attributes of the subject. See also
17
* SubjectDirectoryAttributes ::= Attributes
18
* Attributes ::= SEQUENCE SIZE (1..MAX) OF Attribute
19
* Attribute ::= SEQUENCE
22
* values SET OF AttributeValue
25
* AttributeType ::= OBJECT IDENTIFIER
26
* AttributeValue ::= ANY DEFINED BY AttributeType
29
* @see org.bouncycastle.asn1.x509.X509Name for AttributeType ObjectIdentifiers.
31
public class SubjectDirectoryAttributes
34
private Vector attributes = new Vector();
36
public static SubjectDirectoryAttributes getInstance(
39
if (obj == null || obj instanceof SubjectDirectoryAttributes)
41
return (SubjectDirectoryAttributes)obj;
44
if (obj instanceof ASN1Sequence)
46
return new SubjectDirectoryAttributes((ASN1Sequence)obj);
49
throw new IllegalArgumentException("illegal object in getInstance: " + obj.getClass().getName());
53
* Constructor from ASN1Sequence.
55
* The sequence is of type SubjectDirectoryAttributes:
58
* SubjectDirectoryAttributes ::= Attributes
59
* Attributes ::= SEQUENCE SIZE (1..MAX) OF Attribute
60
* Attribute ::= SEQUENCE
63
* values SET OF AttributeValue
66
* AttributeType ::= OBJECT IDENTIFIER
67
* AttributeValue ::= ANY DEFINED BY AttributeType
73
public SubjectDirectoryAttributes(ASN1Sequence seq)
75
Enumeration e = seq.getObjects();
77
while (e.hasMoreElements())
79
ASN1Sequence s = ASN1Sequence.getInstance(e.nextElement());
80
attributes.addElement(new Attribute(s));
85
* Constructor from a vector of attributes.
87
* The vector consists of attributes of type {@link Attribute Attribute}
93
public SubjectDirectoryAttributes(Vector attributes)
95
Enumeration e = attributes.elements();
97
while (e.hasMoreElements())
99
this.attributes.addElement(e.nextElement());
104
* Produce an object suitable for an ASN1OutputStream.
109
* SubjectDirectoryAttributes ::= Attributes
110
* Attributes ::= SEQUENCE SIZE (1..MAX) OF Attribute
111
* Attribute ::= SEQUENCE
114
* values SET OF AttributeValue
117
* AttributeType ::= OBJECT IDENTIFIER
118
* AttributeValue ::= ANY DEFINED BY AttributeType
121
* @return a DERObject
123
public DERObject toASN1Object()
125
ASN1EncodableVector vec = new ASN1EncodableVector();
126
Enumeration e = attributes.elements();
128
while (e.hasMoreElements())
131
vec.add((Attribute)e.nextElement());
134
return new DERSequence(vec);
138
* @return Returns the attributes.
140
public Vector getAttributes()