DigestInfo.java revision e6bf3e8dfa2804891a82075cb469b736321b4827
1package org.bouncycastle.asn1.x509; 2 3import java.util.Enumeration; 4 5import org.bouncycastle.asn1.ASN1EncodableVector; 6import org.bouncycastle.asn1.ASN1Object; 7import org.bouncycastle.asn1.ASN1OctetString; 8import org.bouncycastle.asn1.ASN1Primitive; 9import org.bouncycastle.asn1.ASN1Sequence; 10import org.bouncycastle.asn1.ASN1TaggedObject; 11import org.bouncycastle.asn1.DEROctetString; 12import org.bouncycastle.asn1.DERSequence; 13 14/** 15 * The DigestInfo object. 16 * <pre> 17 * DigestInfo::=SEQUENCE{ 18 * digestAlgorithm AlgorithmIdentifier, 19 * digest OCTET STRING } 20 * </pre> 21 */ 22public class DigestInfo 23 extends ASN1Object 24{ 25 private byte[] digest; 26 private AlgorithmIdentifier algId; 27 28 public static DigestInfo getInstance( 29 ASN1TaggedObject obj, 30 boolean explicit) 31 { 32 return getInstance(ASN1Sequence.getInstance(obj, explicit)); 33 } 34 35 public static DigestInfo getInstance( 36 Object obj) 37 { 38 if (obj instanceof DigestInfo) 39 { 40 return (DigestInfo)obj; 41 } 42 else if (obj != null) 43 { 44 return new DigestInfo(ASN1Sequence.getInstance(obj)); 45 } 46 47 return null; 48 } 49 50 public DigestInfo( 51 AlgorithmIdentifier algId, 52 byte[] digest) 53 { 54 this.digest = digest; 55 this.algId = algId; 56 } 57 58 public DigestInfo( 59 ASN1Sequence obj) 60 { 61 Enumeration e = obj.getObjects(); 62 63 algId = AlgorithmIdentifier.getInstance(e.nextElement()); 64 digest = ASN1OctetString.getInstance(e.nextElement()).getOctets(); 65 } 66 67 public AlgorithmIdentifier getAlgorithmId() 68 { 69 return algId; 70 } 71 72 public byte[] getDigest() 73 { 74 return digest; 75 } 76 77 public ASN1Primitive toASN1Primitive() 78 { 79 ASN1EncodableVector v = new ASN1EncodableVector(); 80 81 v.add(algId); 82 v.add(new DEROctetString(digest)); 83 84 return new DERSequence(v); 85 } 86} 87