001package org.apache.commons.ssl.org.bouncycastle.asn1.tsp; 002 003import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1EncodableVector; 004import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1Object; 005import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1OctetString; 006import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1Primitive; 007import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1Sequence; 008import org.apache.commons.ssl.org.bouncycastle.asn1.DEROctetString; 009import org.apache.commons.ssl.org.bouncycastle.asn1.DERSequence; 010import org.apache.commons.ssl.org.bouncycastle.asn1.x509.AlgorithmIdentifier; 011 012public class MessageImprint 013 extends ASN1Object 014{ 015 AlgorithmIdentifier hashAlgorithm; 016 byte[] hashedMessage; 017 018 /** 019 * @param o 020 * @return a MessageImprint object. 021 */ 022 public static MessageImprint getInstance(Object o) 023 { 024 if (o instanceof MessageImprint) 025 { 026 return (MessageImprint)o; 027 } 028 029 if (o != null) 030 { 031 return new MessageImprint(ASN1Sequence.getInstance(o)); 032 } 033 034 return null; 035 } 036 037 private MessageImprint( 038 ASN1Sequence seq) 039 { 040 this.hashAlgorithm = AlgorithmIdentifier.getInstance(seq.getObjectAt(0)); 041 this.hashedMessage = ASN1OctetString.getInstance(seq.getObjectAt(1)).getOctets(); 042 } 043 044 public MessageImprint( 045 AlgorithmIdentifier hashAlgorithm, 046 byte[] hashedMessage) 047 { 048 this.hashAlgorithm = hashAlgorithm; 049 this.hashedMessage = hashedMessage; 050 } 051 052 public AlgorithmIdentifier getHashAlgorithm() 053 { 054 return hashAlgorithm; 055 } 056 057 public byte[] getHashedMessage() 058 { 059 return hashedMessage; 060 } 061 062 /** 063 * <pre> 064 * MessageImprint ::= SEQUENCE { 065 * hashAlgorithm AlgorithmIdentifier, 066 * hashedMessage OCTET STRING } 067 * </pre> 068 */ 069 public ASN1Primitive toASN1Primitive() 070 { 071 ASN1EncodableVector v = new ASN1EncodableVector(); 072 073 v.add(hashAlgorithm); 074 v.add(new DEROctetString(hashedMessage)); 075 076 return new DERSequence(v); 077 } 078}