Home | History | Annotate | Download | only in x509
      1 package org.bouncycastle.asn1.x509;
      2 
      3 import org.bouncycastle.asn1.ASN1Encodable;
      4 import org.bouncycastle.asn1.ASN1EncodableVector;
      5 import org.bouncycastle.asn1.ASN1Object;
      6 import org.bouncycastle.asn1.ASN1ObjectIdentifier;
      7 import org.bouncycastle.asn1.ASN1Primitive;
      8 import org.bouncycastle.asn1.ASN1Sequence;
      9 import org.bouncycastle.asn1.DERIA5String;
     10 import org.bouncycastle.asn1.DERSequence;
     11 
     12 /**
     13  * Policy qualifiers, used in the X509V3 CertificatePolicies
     14  * extension.
     15  *
     16  * <pre>
     17  *   PolicyQualifierInfo ::= SEQUENCE {
     18  *       policyQualifierId  PolicyQualifierId,
     19  *       qualifier          ANY DEFINED BY policyQualifierId }
     20  *
     21  *  PolicyQualifierId ::= OBJECT IDENTIFIER ( id-qt-cps | id-qt-unotice )
     22  * </pre>
     23  */
     24 public class PolicyQualifierInfo
     25     extends ASN1Object
     26 {
     27    private ASN1ObjectIdentifier policyQualifierId;
     28    private ASN1Encodable        qualifier;
     29 
     30    /**
     31     * Creates a new <code>PolicyQualifierInfo</code> instance.
     32     *
     33     * @param policyQualifierId a <code>PolicyQualifierId</code> value
     34     * @param qualifier the qualifier, defined by the above field.
     35     */
     36    public PolicyQualifierInfo(
     37        ASN1ObjectIdentifier policyQualifierId,
     38        ASN1Encodable qualifier)
     39    {
     40       this.policyQualifierId = policyQualifierId;
     41       this.qualifier = qualifier;
     42    }
     43 
     44    /**
     45     * Creates a new <code>PolicyQualifierInfo</code> containing a
     46     * cPSuri qualifier.
     47     *
     48     * @param cps the CPS (certification practice statement) uri as a
     49     * <code>String</code>.
     50     */
     51    public PolicyQualifierInfo(
     52        String cps)
     53    {
     54       policyQualifierId = PolicyQualifierId.id_qt_cps;
     55       qualifier = new DERIA5String (cps);
     56    }
     57 
     58    /**
     59     * Creates a new <code>PolicyQualifierInfo</code> instance.
     60     *
     61     * @param as <code>PolicyQualifierInfo</code> X509 structure
     62     * encoded as an ASN1Sequence.
     63     * @deprecated use PolicyQualifierInfo.getInstance()
     64     */
     65    public PolicyQualifierInfo(
     66        ASN1Sequence as)
     67    {
     68         if (as.size() != 2)
     69         {
     70             throw new IllegalArgumentException("Bad sequence size: "
     71                     + as.size());
     72         }
     73 
     74         policyQualifierId = ASN1ObjectIdentifier.getInstance(as.getObjectAt(0));
     75         qualifier = as.getObjectAt(1);
     76    }
     77 
     78    public static PolicyQualifierInfo getInstance(
     79        Object obj)
     80    {
     81         if (obj instanceof PolicyQualifierInfo)
     82         {
     83             return (PolicyQualifierInfo)obj;
     84         }
     85         else if (obj != null)
     86         {
     87             return new PolicyQualifierInfo(ASN1Sequence.getInstance(obj));
     88         }
     89 
     90         return null;
     91    }
     92 
     93 
     94    public ASN1ObjectIdentifier getPolicyQualifierId()
     95    {
     96        return policyQualifierId;
     97    }
     98 
     99    public ASN1Encodable getQualifier()
    100    {
    101        return qualifier;
    102    }
    103 
    104    /**
    105     * Returns a DER-encodable representation of this instance.
    106     *
    107     * @return a <code>ASN1Primitive</code> value
    108     */
    109    public ASN1Primitive toASN1Primitive()
    110    {
    111       ASN1EncodableVector dev = new ASN1EncodableVector();
    112       dev.add(policyQualifierId);
    113       dev.add(qualifier);
    114 
    115       return new DERSequence(dev);
    116    }
    117 }
    118