CertificatePolicies.java
上传用户:lior1029
上传日期:2013-05-07
资源大小:209k
文件大小:3k
源码类别:

CA认证

开发平台:

Java

  1. package org.bouncycastle.asn1.x509;
  2. import java.math.BigInteger;
  3. import java.util.Vector;
  4. import java.util.Enumeration;
  5. import org.bouncycastle.asn1.*;
  6. public class CertificatePolicies
  7.     implements DEREncodable
  8. {
  9.     static final DERObjectIdentifier anyPolicy = new DERObjectIdentifier("2.5.29.32.0");
  10.     Vector policies = new Vector();
  11.     public static CertificatePolicies getInstance(
  12.         ASN1TaggedObject obj,
  13.         boolean explicit)
  14.     {
  15.         return getInstance(ASN1Sequence.getInstance(obj, explicit));
  16.     }
  17.     public static CertificatePolicies getInstance(
  18.         Object  obj)
  19.     {
  20.         if (obj instanceof CertificatePolicies)
  21.         {
  22.             return (CertificatePolicies)obj;
  23.         }
  24.         else if (obj instanceof ASN1Sequence)
  25.         {
  26.             return new CertificatePolicies((ASN1Sequence)obj);
  27.         }
  28.         throw new IllegalArgumentException("unknown object in factory");
  29.     }
  30.     public CertificatePolicies(
  31.         ASN1Sequence   seq)
  32.     {
  33.         Enumeration e = seq.getObjects();
  34.         while (e.hasMoreElements())
  35.         {
  36.             ASN1Sequence s = (ASN1Sequence)e.nextElement();
  37.             policies.addElement(s.getObjectAt(0));
  38.         }
  39.         // For now we just don't handle PolicyQualifiers
  40.     }
  41.     public CertificatePolicies(
  42.         String p)
  43.     {
  44.         policies.addElement(new DERObjectIdentifier(p));
  45.     }
  46.     public void addPolicy(
  47.         String p)
  48.     {
  49.         policies.addElement(new DERObjectIdentifier(p));
  50.     }
  51.     public String getPolicy(int nr)
  52.     {
  53.         if (policies.size() > nr)
  54.             return ((DERObjectIdentifier)policies.elementAt(nr)).getId();
  55.         return null;
  56.     }
  57.     /**
  58.      * <pre>
  59.      * certificatePolicies ::= SEQUENCE SIZE (1..MAX) OF PolicyInformation
  60.      *
  61.      * PolicyInformation ::= SEQUENCE {
  62.      *   policyIdentifier   CertPolicyId,
  63.      *   policyQualifiers   SEQUENCE SIZE (1..MAX) OF
  64.      *                           PolicyQualifierInfo OPTIONAL }
  65.      *
  66.      * CertPolicyId ::= OBJECT IDENTIFIER
  67.      *
  68.      * PolicyQualifierInfo ::= SEQUENCE {
  69.      *   policyQualifierId  PolicyQualifierId,
  70.      *   qualifier          ANY DEFINED BY policyQualifierId }
  71.      *
  72.      * PolicyQualifierId ::=
  73.      *   OBJECT IDENTIFIER ( id-qt-cps | id-qt-unotice )
  74.      * </pre>
  75.      */
  76.     public DERObject getDERObject()
  77.     {
  78.         ASN1EncodableVector  v = new ASN1EncodableVector();
  79.         // We only do policyIdentifier yet...
  80.         for (int i=0;i<policies.size();i++)
  81.         {
  82.             v.add(new DERSequence((DERObjectIdentifier)policies.elementAt(i)));
  83.         }
  84.         return new DERSequence(v);
  85.     }
  86.     public String toString()
  87.     {
  88.         String p = null;
  89.         for (int i=0;i<policies.size();i++)
  90.         {
  91.             if (p != null)
  92.                 p += ", ";
  93.             p += ((DERObjectIdentifier)policies.elementAt(i)).getId();
  94.         }
  95.         return "CertificatePolicies: "+p;
  96.     }
  97. }