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

CA认证

开发平台:

Java

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