iaik.cms
Class DigestInfo

java.lang.Object
  extended by iaik.cms.DigestInfo
All Implemented Interfaces:
ASN1Type

public class DigestInfo
extends java.lang.Object
implements ASN1Type

This class implements the PKCS#7 DigestInfo type.

The PKCS#7 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

Please note that PKCS#7 successor CMS (Cryptographic Message Syntax; RFC 5652) does not need the DigestInfo anymore. For RSA signing CMS uses immediately the PKCS#1 signature algorithm whereas PKCS#7 used the RSA encryption method and did the DigestInfo wrapping itself. This class only provides an utility for the SecurityProvider which may create RSA signatures by using a JCE Cipher engine for encrypting the digest requiring to do the DigestInfo wrapping outside.


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.
DigestInfo(byte[] array)
          Creates a new DigestInfo from its DER encoding.
 
Method Summary
 boolean checkDigestAlgorithm(AlgorithmID digestAlgorithm)
          Compares the digest algorithm of this DigestInfo with the given digest algorithm.
 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 digest algorithm (including any associated parameters)
digest - the digest value to be wrapped by a DigestInfo

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 - the DigestInfo as ASN1Object
Throws:
CodingException - if the object can not be parsed

DigestInfo

public DigestInfo(byte[] array)
           throws CodingException
Creates a new DigestInfo from its DER encoding.

Parameters:
array - the DER encoded DigestInfo
Throws:
CodingException - if an error occurs when decoding the DigestInfo
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 DigestInfo object from an already existing DigestInfo object, supplied as ASN1Object.

Specified by:
decode in interface ASN1Type
Parameters:
obj - the 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

checkDigestAlgorithm

public boolean checkDigestAlgorithm(AlgorithmID digestAlgorithm)
Compares the digest algorithm of this DigestInfo with the given digest algorithm. A digest algorithm check shall be performed during signature verification.

Parameters:
digestAlgorithm - the digest algorithm to be compared with the digest algorithm of this DigestInfo
Returns:
true if the two algorithm identifier are equal (NULL as parameter is treated as being equal to a missing parameter field), false if they are not equal

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

This Javadoc may contain text parts from text parts from IETF Internet Standard specifications (see copyright note).

IAIK-CMS 5.1, (c) 2002 IAIK, (c) 2003 - 2010 SIC