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

CA认证

开发平台:

Java

  1. package org.bouncycastle.asn1.cms;
  2. import org.bouncycastle.asn1.ASN1Sequence;
  3. import org.bouncycastle.asn1.ASN1Set;
  4. import org.bouncycastle.asn1.ASN1TaggedObject;
  5. import org.bouncycastle.asn1.DERSequence;
  6. import org.bouncycastle.asn1.DERTaggedObject;
  7. import org.bouncycastle.asn1.DERObject;
  8. import org.bouncycastle.asn1.DEREncodable;
  9. import org.bouncycastle.asn1.ASN1EncodableVector;
  10. public class OriginatorInfo
  11.     implements DEREncodable
  12. {
  13. private ASN1Set certs;
  14. private ASN1Set crls;
  15. public OriginatorInfo(
  16.         ASN1Set certs,
  17.         ASN1Set crls)
  18.     {
  19. this.certs = certs;
  20. this.crls = crls;
  21. }
  22. public OriginatorInfo(
  23.         ASN1Sequence seq)
  24.     {
  25. switch (seq.size())
  26.         {
  27.         case 0:     // empty
  28.             break;
  29.         case 1:
  30.             ASN1TaggedObject o = (ASN1TaggedObject)seq.getObjectAt(0);
  31.             switch (o.getTagNo())
  32.             {
  33.             case 0 :
  34.                 certs = ASN1Set.getInstance(o, false);
  35.                 break;
  36.             case 1 :
  37.                 crls = ASN1Set.getInstance(o, false);
  38.                 break;
  39.             default:
  40.                 throw new IllegalArgumentException("Bad tag in OriginatorInfo: " + o.getTagNo());
  41.             }
  42.             break;
  43.         case 2:
  44.             certs = ASN1Set.getInstance((ASN1TaggedObject)seq.getObjectAt(0), false);
  45.             crls  = ASN1Set.getInstance((ASN1TaggedObject)seq.getObjectAt(1), false);
  46.             break;
  47.         default:
  48.             throw new IllegalArgumentException("OriginatorInfo too big");
  49. }
  50. }
  51.     /**
  52.      * return an OriginatorInfo object from a tagged object.
  53.      *
  54.      * @param _ato the tagged object holding the object we want.
  55.      * @param _explicit true if the object is meant to be explicitly
  56.      *              tagged false otherwise.
  57.      * @exception IllegalArgumentException if the object held by the
  58.      *          tagged object cannot be converted.
  59.      */
  60. public static OriginatorInfo getInstance(
  61.         ASN1TaggedObject    obj,
  62.         boolean             explicit)
  63.     {
  64. return getInstance(ASN1Sequence.getInstance(obj, explicit));
  65. }
  66.     /**
  67.      * return an OriginatorInfo object from the given object.
  68.      *
  69.      * @param obj the object we want converted.
  70.      * @exception IllegalArgumentException if the object cannot be converted.
  71.      */
  72. public static OriginatorInfo getInstance(
  73.         Object obj)
  74.     {
  75. if (obj == null || obj instanceof OriginatorInfo)
  76.         {
  77. return (OriginatorInfo)obj;
  78. }
  79. if (obj instanceof ASN1Sequence)
  80.         {
  81. return new OriginatorInfo((ASN1Sequence)obj);
  82. }
  83. throw new IllegalArgumentException("Invalid OriginatorInfo: " + obj.getClass().getName());
  84. }
  85. public ASN1Set getCertificates()
  86.     {
  87. return certs;
  88. }
  89. public ASN1Set getCRLs()
  90.     {
  91. return crls;
  92. }
  93.     /** 
  94.      * <pre>
  95.      * OriginatorInfo ::= SEQUENCE {
  96.      *  certs [0] IMPLICIT CertificateSet OPTIONAL,
  97.      *  crls [1] IMPLICIT CertificateRevocationLists OPTIONAL 
  98.      * }
  99.      * </pre>
  100.      */
  101. public DERObject getDERObject()
  102.     {
  103.         ASN1EncodableVector  v = new ASN1EncodableVector();
  104. if (certs != null)
  105.         {
  106. v.add(new DERTaggedObject(false, 0, certs));
  107. }
  108. if (crls != null)
  109.         {
  110. v.add(new DERTaggedObject(false, 1, crls));
  111. }
  112. return new DERSequence(v);
  113. }
  114. }