| package org.bouncycastle.asn1.x509; |
| |
| import java.util.Enumeration; |
| import java.util.Vector; |
| |
| import org.bouncycastle.asn1.ASN1Encodable; |
| import org.bouncycastle.asn1.ASN1EncodableVector; |
| import org.bouncycastle.asn1.ASN1Sequence; |
| import org.bouncycastle.asn1.ASN1TaggedObject; |
| import org.bouncycastle.asn1.DERObject; |
| import org.bouncycastle.asn1.DERObjectIdentifier; |
| import org.bouncycastle.asn1.DERSequence; |
| |
| public class CertificatePolicies |
| extends ASN1Encodable |
| { |
| static final DERObjectIdentifier anyPolicy = new DERObjectIdentifier("2.5.29.32.0"); |
| |
| Vector policies = new Vector(); |
| |
| /** |
| * @deprecated use an ASN1Sequence of PolicyInformation |
| */ |
| public static CertificatePolicies getInstance( |
| ASN1TaggedObject obj, |
| boolean explicit) |
| { |
| return getInstance(ASN1Sequence.getInstance(obj, explicit)); |
| } |
| |
| /** |
| * @deprecated use an ASN1Sequence of PolicyInformation |
| */ |
| public static CertificatePolicies getInstance( |
| Object obj) |
| { |
| if (obj instanceof CertificatePolicies) |
| { |
| return (CertificatePolicies)obj; |
| } |
| else if (obj instanceof ASN1Sequence) |
| { |
| return new CertificatePolicies((ASN1Sequence)obj); |
| } |
| |
| throw new IllegalArgumentException("unknown object in factory"); |
| } |
| |
| /** |
| * @deprecated use an ASN1Sequence of PolicyInformation |
| */ |
| public CertificatePolicies( |
| ASN1Sequence seq) |
| { |
| Enumeration e = seq.getObjects(); |
| while (e.hasMoreElements()) |
| { |
| ASN1Sequence s = ASN1Sequence.getInstance(e.nextElement()); |
| policies.addElement(s.getObjectAt(0)); |
| } |
| // For now we just don't handle PolicyQualifiers |
| } |
| |
| /** |
| * create a certificate policy with the given OID. |
| * @deprecated use an ASN1Sequence of PolicyInformation |
| */ |
| public CertificatePolicies( |
| DERObjectIdentifier p) |
| { |
| policies.addElement(p); |
| } |
| |
| /** |
| * create a certificate policy with the policy given by the OID represented |
| * by the string p. |
| * @deprecated use an ASN1Sequence of PolicyInformation |
| */ |
| public CertificatePolicies( |
| String p) |
| { |
| this(new DERObjectIdentifier(p)); |
| } |
| |
| public void addPolicy( |
| String p) |
| { |
| policies.addElement(new DERObjectIdentifier(p)); |
| } |
| |
| public String getPolicy(int nr) |
| { |
| if (policies.size() > nr) |
| { |
| return ((DERObjectIdentifier)policies.elementAt(nr)).getId(); |
| } |
| |
| return null; |
| } |
| |
| /** |
| * <pre> |
| * certificatePolicies ::= SEQUENCE SIZE (1..MAX) OF PolicyInformation |
| * |
| * PolicyInformation ::= SEQUENCE { |
| * policyIdentifier CertPolicyId, |
| * policyQualifiers SEQUENCE SIZE (1..MAX) OF |
| * PolicyQualifierInfo OPTIONAL } |
| * |
| * CertPolicyId ::= OBJECT IDENTIFIER |
| * |
| * PolicyQualifierInfo ::= SEQUENCE { |
| * policyQualifierId PolicyQualifierId, |
| * qualifier ANY DEFINED BY policyQualifierId } |
| * |
| * PolicyQualifierId ::= |
| * OBJECT IDENTIFIER (id-qt-cps | id-qt-unotice) |
| * </pre> |
| * @deprecated use an ASN1Sequence of PolicyInformation |
| */ |
| public DERObject toASN1Object() |
| { |
| ASN1EncodableVector v = new ASN1EncodableVector(); |
| |
| // We only do policyIdentifier yet... |
| for (int i=0;i<policies.size();i++) |
| { |
| v.add(new DERSequence((DERObjectIdentifier)policies.elementAt(i))); |
| } |
| |
| return new DERSequence(v); |
| } |
| |
| public String toString() |
| { |
| String p = null; |
| for (int i=0;i<policies.size();i++) |
| { |
| if (p != null) |
| { |
| p += ", "; |
| } |
| p += ((DERObjectIdentifier)policies.elementAt(i)).getId(); |
| } |
| return "CertificatePolicies: "+p; |
| } |
| } |