iaik.pkcs.pkcs7
Class DigestInfo

java.lang.Object
  |
  +--iaik.pkcs.pkcs7.DigestInfo

public class DigestInfo
extends java.lang.Object
implements ASN1Type

This class implements the PKCS#7 DigestInfo type.

The PKCS#7 Cryptographic Message Standard specifies the DigestInfo type as ASN.1 structure whose BER encoded value serves as input for the digest-encryption process when creating a SignedData object.

 DigestInfo ::= SEQUENCE {
   digestAlgorithm DigestAlgorithmIdentifier,
   digest Digest }
 
Digest ::= OCTET STRING

The Signed-data content type is used for building digital signatures on some particular content for one or more signers. For each signer, a message digest is computed on the content (and any additional authenticated information) with a signer-specific message-digest algorithm. Resulting message digest and appertaining digest algorithm identifier are collected to form a DigestInfo object, which subsequently is DER encoded for being encrypted with the particular signerīs private key to finally produce the signer-specific digital signature. Signature value and some signer-related information are included into a SignerInfo structure. In that way, for every single signer a specific SignerInfo object is created. All SignerInfos are are collected together with the content for forming a SignedData structure.

The constructors and methods of this class are used by the SignerInfo class for building a DigestInfo to be fed to the digest encryption process, respectively - on the receiverīs side - for creating a DigestInfo on the "re-decrypted" DigestInfo ASN.1 structure when parsing for the inherent digest value.

This class only can be used for creating a DigestInfo for an already computed message digest. This class does not support any mechanisms for computing a message digest.

Example:

 //the message to be hashed:
 byte[] message = "Test data to be digested".getBytes();
 //compute the message digest:
 MessageDigest md = MessageDigest.getInstance("SHA");
 md.update(message);
 byte[] digest = md.digest();
 //create a DigestInfo object and supply the message digest just computed:
 DigestInfo digested_info = new DigestInfo(AlgorithmID.sha, digest);
 

See Also:
ContentInfo, SignerInfo, SignedData

Constructor Summary
DigestInfo(AlgorithmID digestAlgorithm, byte[] digest)
          Creates a new DigestInfo from a digest algorithm and a digest.
DigestInfo(ASN1Object obj)
          Creates a new DigestInfo from an ASN1Object.
 
Method Summary
 void decode(ASN1Object obj)
          Decodes the given ASN.1 DigestInfo object for parsing the internal structure.
 byte[] getDigest()
          Returns the digest value held by this DigestInfo.
 AlgorithmID getDigestAlgorithm()
          Returns the AlgorithmID of the message-digest algorithm (including any associated parameters) that has been used for calculating the digest on the content and any authenticated information.
 ASN1Object toASN1Object()
          Returns this DigestInfo as ASN1Object.
 byte[] toByteArray()
          Returns this DigestInfo as DER encoded byte array.
 java.lang.String toString()
          Returns a string giving some information about this DigestInfo object.
 java.lang.String toString(boolean detailed)
          Returns a string giving some - if requested - detailed information about this DigestInfo object.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

DigestInfo

public DigestInfo(AlgorithmID digestAlgorithm,
                  byte[] digest)
Creates a new DigestInfo from a digest algorithm and a digest.
Parameters:
digestAlgorithm - the identifier of the signer-specific digest algorithm (including any associated parameters)
digest - the digest value computed on the content and any authenticated data using the the signer-specific digest algorithm
See Also:
SignerInfo

DigestInfo

public DigestInfo(ASN1Object obj)
           throws CodingException
Creates a new DigestInfo from an ASN1Object.

The ASN1Object supplied to this constructor represents an already exisiting DigestInfo object that may have been created by calling toASN1Object.

Parameters:
obj - obj the PKCS#7 DigestInfo as ASN1Object
Throws:
CodingException - if the object can not be parsed
See Also:
SignerInfo.getDigest(java.security.PublicKey, byte[])
Method Detail

decode

public void decode(ASN1Object obj)
            throws CodingException
Decodes the given ASN.1 DigestInfo object for parsing the internal structure.

This method internally is called when creating a PKCS#7 DigestInfo object from an already existing DigestInfo object, supplied as ASN1Object.

Specified by:
decode in interface ASN1Type
Parameters:
obj - the PKCS#7 DigestInfo as ASN1Object
Throws:
CodingException - if the object can not be parsed

toASN1Object

public ASN1Object toASN1Object()
Returns this DigestInfo as ASN1Object.

The ASN1Object returned by this method may be used as parameter value when creating a DigestInfo object using the DigestInfo(ASN1Object obj) constructor.

Specified by:
toASN1Object in interface ASN1Type
Returns:
this DigestInfo as ASN1Object.

toByteArray

public byte[] toByteArray()
Returns this DigestInfo as DER encoded byte array.

This method may be used for DER encoding this DigestInfo object before passing it to the digest encryption process.

Returns:
this DigestInfo as DER encoded byte array

getDigestAlgorithm

public AlgorithmID getDigestAlgorithm()
Returns the AlgorithmID of the message-digest algorithm (including any associated parameters) that has been used for calculating the digest on the content and any authenticated information.
Returns:
the AlgorithmID of the message-digest algorithm

getDigest

public byte[] getDigest()
Returns the digest value held by this DigestInfo.
Returns:
the digest value in a byte array

toString

public java.lang.String toString()
Returns a string giving some information about this DigestInfo object.
Overrides:
toString in class java.lang.Object
Returns:
the string representation

toString

public java.lang.String toString(boolean detailed)
Returns a string giving some - if requested - detailed information about this DigestInfo object.
Parameters:
detailed - - whether or not to give detailed information
Returns:
the string representation