Class DigestAlgorithms

java.lang.Object
com.itextpdf.signatures.DigestAlgorithms

public class DigestAlgorithms extends Object
Class that contains a map with the different message digest algorithms.
  • Field Details

    • SHA1

      public static final String SHA1
      Algorithm available for signatures since PDF 1.3.
      See Also:
    • SHA256

      public static final String SHA256
      Algorithm available for signatures since PDF 1.6.
      See Also:
    • SHA384

      public static final String SHA384
      Algorithm available for signatures since PDF 1.7.
      See Also:
    • SHA512

      public static final String SHA512
      Algorithm available for signatures since PDF 1.7.
      See Also:
    • RIPEMD160

      public static final String RIPEMD160
      Algorithm available for signatures since PDF 1.7.
      See Also:
    • SHA3_256

      public static final String SHA3_256
      Algorithm available for signatures since PDF 2.0 extended by ISO/TS 32001.
      See Also:
    • SHA3_512

      public static final String SHA3_512
      Algorithm available for signatures since PDF 2.0 extended by ISO/TS 32001.
      See Also:
    • SHA3_384

      public static final String SHA3_384
      Algorithm available for signatures since PDF 2.0 extended by ISO/TS 32001.
      See Also:
    • SHAKE256

      public static final String SHAKE256
      Algorithm available for signatures since PDF 2.0 extended by ISO/TS 32001.

      The output length is fixed at 512 bits (64 bytes).

      See Also:
    • digestNames

      private static final Map<String,String> digestNames
      Maps the digest IDs with the human-readable name of the digest algorithm.
    • fixNames

      private static final Map<String,String> fixNames
      Maps digest algorithm that are unknown by the JDKs MessageDigest object to a known one.
    • allowedDigests

      private static final Map<String,String> allowedDigests
      Maps the name of a digest algorithm with its ID.
    • bitLengths

      private static final Map<String,Integer> bitLengths
      Maps algorithm names to output lengths in bits.
    • BOUNCY_CASTLE_FACTORY

      private static final IBouncyCastleFactory BOUNCY_CASTLE_FACTORY
    • LOGGER

      private static final org.slf4j.Logger LOGGER
  • Constructor Details

    • DigestAlgorithms

      public DigestAlgorithms()
  • Method Details

    • getMessageDigestFromOid

      public static MessageDigest getMessageDigestFromOid(String digestOid, String provider) throws NoSuchAlgorithmException, NoSuchProviderException
      Get a digest algorithm.
      Parameters:
      digestOid - oid of the digest algorithm
      provider - the provider you want to use to create the hash
      Returns:
      MessageDigest object
      Throws:
      NoSuchAlgorithmException - thrown when a particular cryptographic algorithm is requested but is not available in the environment
      NoSuchProviderException - thrown when a particular security provider is requested but is not available in the environment
    • getMessageDigest

      public static MessageDigest getMessageDigest(String hashAlgorithm, String provider) throws NoSuchAlgorithmException, NoSuchProviderException
      Creates a MessageDigest object that can be used to create a hash.
      Parameters:
      hashAlgorithm - the algorithm you want to use to create a hash
      provider - the provider you want to use to create the hash
      Returns:
      a MessageDigest object
      Throws:
      NoSuchAlgorithmException - thrown when a particular cryptographic algorithm is requested but is not available in the environment
      NoSuchProviderException - thrown when a particular security provider is requested but is not available in the environment
    • digest

      public static byte[] digest(InputStream data, String hashAlgorithm, String provider) throws GeneralSecurityException, IOException
      Creates a hash using a specific digest algorithm and a provider.
      Parameters:
      data - the message of which you want to create a hash
      hashAlgorithm - the algorithm used to create the hash
      provider - the provider used to create the hash
      Returns:
      the hash
      Throws:
      GeneralSecurityException - when requested cryptographic algorithm or security provider is not available
      IOException - signals that an I/O exception has occurred
    • digest

      public static byte[] digest(InputStream data, MessageDigest messageDigest) throws IOException
      Create a digest based on the inputstream.
      Parameters:
      data - data to be digested
      messageDigest - algorithm to be used
      Returns:
      digest of the data
      Throws:
      IOException - signals that an I/O exception has occurred
    • digest

      public static byte[] digest(InputStream data, String hashAlgorithm, IExternalDigest externalDigest) throws IOException, GeneralSecurityException
      Create a digest based on the inputstream.
      Parameters:
      data - data to be digested
      hashAlgorithm - algorithm to be used
      externalDigest - external digest to be used
      Returns:
      digest of the data.
      Throws:
      IOException - signals that an I/O exception has occurred.
      GeneralSecurityException - when something goes wrong in calculating the digest.
    • getDigest

      public static String getDigest(String oid)
      Gets the digest name for a certain id.
      Parameters:
      oid - an id (for instance "1.2.840.113549.2.5")
      Returns:
      a digest name (for instance "MD5")
    • normalizeDigestName

      public static String normalizeDigestName(String algo)
      Normalize the digest name.
      Parameters:
      algo - the name to be normalized
      Returns:
      normalized name
    • getAllowedDigest

      public static String getAllowedDigest(String name)
      Returns the id of a digest algorithms that is allowed in PDF, or null if it isn't allowed.
      Parameters:
      name - The name of the digest algorithm.
      Returns:
      An oid.
    • getOutputBitLength

      public static int getOutputBitLength(String name)
      Retrieve the output length in bits of the given digest algorithm.
      Parameters:
      name - the name of the digest algorithm
      Returns:
      the length of the output of the algorithm in bits