EncryptedData.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.BERSequence;
  6. import org.bouncycastle.asn1.BERTaggedObject;
  7. import org.bouncycastle.asn1.DERInteger;
  8. import org.bouncycastle.asn1.DERObject;
  9. import org.bouncycastle.asn1.ASN1EncodableVector;
  10. public class EncryptedData
  11. {
  12. private DERInteger            version;
  13. private EncryptedContentInfo  encryptedContentInfo;
  14. private ASN1Set               unprotectedAttrs;
  15. public EncryptedData(
  16.         EncryptedContentInfo    encryptedContentInfo,
  17.         ASN1Set                 unprotectedAttrs)
  18.     {
  19.         if (unprotectedAttrs != null)
  20.         {
  21.             this.version = new DERInteger(2);
  22.         }
  23.         else
  24.         {
  25.             this.version = new DERInteger(0);
  26.         }
  27. this.encryptedContentInfo = encryptedContentInfo;
  28. this.unprotectedAttrs = unprotectedAttrs;
  29. }
  30. public EncryptedData(
  31.         ASN1Sequence seq)
  32.     {
  33. this.version = (DERInteger)seq.getObjectAt(0);
  34. this.encryptedContentInfo = EncryptedContentInfo.getInstance(seq.getObjectAt(1));
  35. if (seq.size() > 2)
  36.         {
  37. this.unprotectedAttrs = ASN1Set.getInstance((ASN1TaggedObject)seq.getObjectAt(2), false);
  38. }
  39. }
  40.     /**
  41.      * return an EncryptedData object from the given object.
  42.      *
  43.      * @param obj the object we want converted.
  44.      * @exception IllegalArgumentException if the object cannot be converted.
  45.      */
  46. public static EncryptedData getInstance(
  47.         Object obj)
  48.     {
  49. if (obj == null || obj instanceof EncryptedData)
  50.         {
  51. return (EncryptedData)obj;
  52. }
  53. if (obj instanceof ASN1Sequence)
  54.         {
  55. return new EncryptedData((ASN1Sequence)obj);
  56. }
  57. throw new IllegalArgumentException(
  58.                 "Illegal object in EncryptedData: " + obj.getClass().getName());
  59. }
  60. public DERInteger getVersion()
  61.     {
  62. return version;
  63. }
  64. public EncryptedContentInfo getEncryptedContentInfo()
  65.     {
  66. return encryptedContentInfo;
  67. }
  68. public ASN1Set getUnprotectedAttrs()
  69.     {
  70. return unprotectedAttrs;
  71. }
  72.     /** 
  73.      * <pre>
  74.      * EncryptedData ::= SEQUENCE {
  75.      *  version CMSVersion,
  76.      *  encryptedContentInfo EncryptedContentInfo,
  77.      *  unprotectedAttrs [1] IMPLICIT UnprotectedAttributes OPTIONAL 
  78.      * }
  79.      * </pre>
  80.      */
  81. public DERObject getDERObject()
  82.     {
  83.         ASN1EncodableVector  v = new ASN1EncodableVector();
  84. v.add(version);
  85. v.add(encryptedContentInfo);
  86. if (unprotectedAttrs != null)
  87.         {
  88. v.add(new BERTaggedObject(false, 1, unprotectedAttrs));
  89. }
  90. return new BERSequence(v);
  91. }
  92. }