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

CA认证

开发平台:

Java

  1. package org.bouncycastle.asn1.x509;
  2. import java.util.Enumeration;
  3. import org.bouncycastle.asn1.*;
  4. import org.bouncycastle.asn1.pkcs.PKCSObjectIdentifiers;
  5. /**
  6.  * <pre>
  7.  * DigestInfo::=SEQUENCE{
  8.  *          digestAlgorithm  AlgorithmIdentifier,
  9.  *          digest OCTET STRING }
  10.  * </pre>
  11.  */
  12. public class DigestInfo
  13.     implements DEREncodable
  14. {
  15.     private byte[]                  digest;
  16.     private AlgorithmIdentifier     algId;
  17.     public static DigestInfo getInstance(
  18.         ASN1TaggedObject obj,
  19.         boolean          explicit)
  20.     {
  21.         return getInstance(ASN1Sequence.getInstance(obj, explicit));
  22.     }
  23.     public static DigestInfo getInstance(
  24.         Object  obj)
  25.     {
  26.         if (obj instanceof DigestInfo)
  27.         {
  28.             return (DigestInfo)obj;
  29.         }
  30.         else if (obj instanceof ASN1Sequence)
  31.         {
  32.             return new DigestInfo((ASN1Sequence)obj);
  33.         }
  34.         throw new IllegalArgumentException("unknown object in factory");
  35.     }
  36.     public DigestInfo(
  37.         AlgorithmIdentifier  algId,
  38.         byte[]               digest)
  39.     {
  40.         this.digest = digest;
  41.         this.algId = algId;
  42.     }
  43.     public DigestInfo(
  44.         ASN1Sequence  obj)
  45.     {
  46.         Enumeration             e = obj.getObjects();
  47.         algId = AlgorithmIdentifier.getInstance(e.nextElement());
  48.         digest = ((ASN1OctetString)e.nextElement()).getOctets();
  49.     }
  50.     public AlgorithmIdentifier getAlgorithmId()
  51.     {
  52.         return algId;
  53.     }
  54.     public byte[] getDigest()
  55.     {
  56.         return digest;
  57.     }
  58.     public DERObject getDERObject()
  59.     {
  60.         ASN1EncodableVector  v = new ASN1EncodableVector();
  61.         v.add(algId);
  62.         v.add(new DEROctetString(digest));
  63.         return new DERSequence(v);
  64.     }
  65. }