Class DigestAlgorithms


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

      Fields 
      Modifier and Type Field Description
      private static java.util.Map<java.lang.String,​java.lang.String> allowedDigests
      Maps the name of a digest algorithm with its ID.
      private static java.util.Map<java.lang.String,​java.lang.Integer> bitLengths
      Maps algorithm names to output lengths in bits.
      private static IBouncyCastleFactory BOUNCY_CASTLE_FACTORY  
      private static java.util.Map<java.lang.String,​java.lang.String> digestNames
      Maps the digest IDs with the human-readable name of the digest algorithm.
      private static java.util.Map<java.lang.String,​java.lang.String> fixNames
      Maps digest algorithm that are unknown by the JDKs MessageDigest object to a known one.
      private static org.slf4j.Logger LOGGER  
      static java.lang.String RIPEMD160
      Algorithm available for signatures since PDF 1.7.
      static java.lang.String SHA1
      Algorithm available for signatures since PDF 1.3.
      static java.lang.String SHA256
      Algorithm available for signatures since PDF 1.6.
      static java.lang.String SHA3_256
      Algorithm available for signatures since PDF 2.0 extended by ISO/TS 32001.
      static java.lang.String SHA3_384
      Algorithm available for signatures since PDF 2.0 extended by ISO/TS 32001.
      static java.lang.String SHA3_512
      Algorithm available for signatures since PDF 2.0 extended by ISO/TS 32001.
      static java.lang.String SHA384
      Algorithm available for signatures since PDF 1.7.
      static java.lang.String SHA512
      Algorithm available for signatures since PDF 1.7.
      static java.lang.String SHAKE256
      Algorithm available for signatures since PDF 2.0 extended by ISO/TS 32001.
    • Method Summary

      All Methods Static Methods Concrete Methods 
      Modifier and Type Method Description
      static byte[] digest​(java.io.InputStream data, java.lang.String hashAlgorithm, IExternalDigest externalDigest)
      Create a digest based on the inputstream.
      static byte[] digest​(java.io.InputStream data, java.lang.String hashAlgorithm, java.lang.String provider)
      Creates a hash using a specific digest algorithm and a provider.
      static byte[] digest​(java.io.InputStream data, java.security.MessageDigest messageDigest)
      Create a digest based on the inputstream.
      static java.lang.String getAllowedDigest​(java.lang.String name)
      Returns the id of a digest algorithms that is allowed in PDF, or null if it isn't allowed.
      static java.lang.String getDigest​(java.lang.String oid)
      Gets the digest name for a certain id.
      static java.security.MessageDigest getMessageDigest​(java.lang.String hashAlgorithm, java.lang.String provider)
      Creates a MessageDigest object that can be used to create a hash.
      static java.security.MessageDigest getMessageDigestFromOid​(java.lang.String digestOid, java.lang.String provider)
      Get a digest algorithm.
      static int getOutputBitLength​(java.lang.String name)
      Retrieve the output length in bits of the given digest algorithm.
      static java.lang.String normalizeDigestName​(java.lang.String algo)
      Normalize the digest name.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • SHA1

        public static final java.lang.String SHA1
        Algorithm available for signatures since PDF 1.3.
        See Also:
        Constant Field Values
      • SHA256

        public static final java.lang.String SHA256
        Algorithm available for signatures since PDF 1.6.
        See Also:
        Constant Field Values
      • SHA384

        public static final java.lang.String SHA384
        Algorithm available for signatures since PDF 1.7.
        See Also:
        Constant Field Values
      • SHA512

        public static final java.lang.String SHA512
        Algorithm available for signatures since PDF 1.7.
        See Also:
        Constant Field Values
      • RIPEMD160

        public static final java.lang.String RIPEMD160
        Algorithm available for signatures since PDF 1.7.
        See Also:
        Constant Field Values
      • SHA3_256

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

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

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

        public static final java.lang.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:
        Constant Field Values
      • digestNames

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

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

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

        private static final java.util.Map<java.lang.String,​java.lang.Integer> bitLengths
        Maps algorithm names to output lengths in bits.
      • LOGGER

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

      • DigestAlgorithms

        public DigestAlgorithms()
    • Method Detail

      • getMessageDigestFromOid

        public static java.security.MessageDigest getMessageDigestFromOid​(java.lang.String digestOid,
                                                                          java.lang.String provider)
                                                                   throws java.security.NoSuchAlgorithmException,
                                                                          java.security.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:
        java.security.NoSuchAlgorithmException - thrown when a particular cryptographic algorithm is requested but is not available in the environment
        java.security.NoSuchProviderException - thrown when a particular security provider is requested but is not available in the environment
      • getMessageDigest

        public static java.security.MessageDigest getMessageDigest​(java.lang.String hashAlgorithm,
                                                                   java.lang.String provider)
                                                            throws java.security.NoSuchAlgorithmException,
                                                                   java.security.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:
        java.security.NoSuchAlgorithmException - thrown when a particular cryptographic algorithm is requested but is not available in the environment
        java.security.NoSuchProviderException - thrown when a particular security provider is requested but is not available in the environment
      • digest

        public static byte[] digest​(java.io.InputStream data,
                                    java.lang.String hashAlgorithm,
                                    java.lang.String provider)
                             throws java.security.GeneralSecurityException,
                                    java.io.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:
        java.security.GeneralSecurityException - when requested cryptographic algorithm or security provider is not available
        java.io.IOException - signals that an I/O exception has occurred
      • digest

        public static byte[] digest​(java.io.InputStream data,
                                    java.security.MessageDigest messageDigest)
                             throws java.io.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:
        java.io.IOException - signals that an I/O exception has occurred
      • digest

        public static byte[] digest​(java.io.InputStream data,
                                    java.lang.String hashAlgorithm,
                                    IExternalDigest externalDigest)
                             throws java.io.IOException,
                                    java.security.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:
        java.io.IOException - signals that an I/O exception has occurred.
        java.security.GeneralSecurityException - when something goes wrong in calculating the digest.
      • getDigest

        public static java.lang.String getDigest​(java.lang.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 java.lang.String normalizeDigestName​(java.lang.String algo)
        Normalize the digest name.
        Parameters:
        algo - the name to be normalized
        Returns:
        normalized name
      • getAllowedDigest

        public static java.lang.String getAllowedDigest​(java.lang.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​(java.lang.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