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; } /** *
     * 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)
     * 
* @deprecated use an ASN1Sequence of PolicyInformation */ public DERObject toASN1Object() { ASN1EncodableVector v = new ASN1EncodableVector(); // We only do policyIdentifier yet... for (int i=0;i