Author: ggregory Date: Sat May 14 00:17:26 2016 New Revision: 1743770 URL: http://svn.apache.org/viewvc?rev=1743770&view=rev Log: [CODEC-208] Make some DigestUtils APIs public.
Modified: commons/proper/codec/trunk/src/changes/changes.xml commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/digest/DigestUtils.java Modified: commons/proper/codec/trunk/src/changes/changes.xml URL: http://svn.apache.org/viewvc/commons/proper/codec/trunk/src/changes/changes.xml?rev=1743770&r1=1743769&r2=1743770&view=diff ============================================================================== --- commons/proper/codec/trunk/src/changes/changes.xml (original) +++ commons/proper/codec/trunk/src/changes/changes.xml Sat May 14 00:17:26 2016 @@ -46,6 +46,7 @@ The <action> type attribute can be add,u <action dev="sebb" type="fix" issue="CODEC-200" due-to="Luciano Vernaschi">Base32.HEX_DECODE_TABLE contains the wrong value 32</action> <action dev="ggregory" type="fix" issue="CODEC-207" due-to="Gary Gregory">Charsets Javadoc breaks build when using Java 8</action> <action dev="ggregory" type="fix" issue="CODEC-199" due-to="Yossi Tamari">Bug in HW rule in Soundex</action> + <action dev="ggregory" type="add" issue="CODEC-208" due-to="Gary Gregory">Make some DigestUtils APIs public</action> <action dev="ggregory" type="add" issue="CODEC-206" due-to="Gary Gregory">Add java.io.File APIs to DigestUtils</action> <action dev="ggregory" type="add" issue="CODEC-183" due-to="Steven Wurster">BaseNCodecOutputStream only supports writing EOF on close()</action> <action dev="ggregory" type="add" issue="CODEC-195" due-to="Gary Gregory">Support SHA-224 in DigestUtils on Java 8</action> Modified: commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/digest/DigestUtils.java URL: http://svn.apache.org/viewvc/commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/digest/DigestUtils.java?rev=1743770&r1=1743769&r2=1743770&view=diff ============================================================================== --- commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/digest/DigestUtils.java (original) +++ commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/digest/DigestUtils.java Sat May 14 00:17:26 2016 @@ -42,15 +42,16 @@ public class DigestUtils { /** * Read through an ByteBuffer and returns the digest for the data * - * @param digest + * @param messageDigest * The MessageDigest to use (e.g. MD5) * @param data * Data to digest * @return the digest * @throws IOException * On error reading from the stream + * @since 1.11 */ - private static byte[] digest(final MessageDigest messageDigest, final ByteBuffer data) { + public static byte[] digest(final MessageDigest messageDigest, final ByteBuffer data) { messageDigest.update(data); return messageDigest.digest(); } @@ -58,31 +59,33 @@ public class DigestUtils { /** * Read through a File and returns the digest for the data * - * @param digest + * @param messageDigest * The MessageDigest to use (e.g. MD5) * @param data * Data to digest * @return the digest * @throws IOException * On error reading from the stream + * @since 1.11 */ - private static byte[] digest(final MessageDigest digest, final File data) throws IOException { - return updateDigest(digest, data).digest(); + public static byte[] digest(final MessageDigest messageDigest, final File data) throws IOException { + return updateDigest(messageDigest, data).digest(); } /** * Read through an InputStream and returns the digest for the data * - * @param digest + * @param messageDigest * The MessageDigest to use (e.g. MD5) * @param data * Data to digest * @return the digest * @throws IOException * On error reading from the stream + * @since 1.11 */ - private static byte[] digest(final MessageDigest digest, final InputStream data) throws IOException { - return updateDigest(digest, data).digest(); + public static byte[] digest(final MessageDigest messageDigest, final InputStream data) throws IOException { + return updateDigest(messageDigest, data).digest(); } /** @@ -106,6 +109,29 @@ public class DigestUtils { } } + /** + * Returns a <code>MessageDigest</code> for the given <code>algorithm</code> or a default if there is a problem getting the algorithm. + * + * @param algorithm + * the name of the algorithm requested. See <a + * href="http://docs.oracle.com/javase/6/docs/technotes/guides/security/crypto/CryptoSpec.html#AppA" + * >Appendix A in the Java Cryptography Architecture Reference Guide</a> for information about standard + * algorithm names. + * @param defaultMessageDigest The default MessageDigest. + * @return A digest instance. + * @see MessageDigest#getInstance(String) + * @throws IllegalArgumentException + * when a {@link NoSuchAlgorithmException} is caught. + * @since 1.11 + */ + public static MessageDigest getDigest(final String algorithm, MessageDigest defaultMessageDigest) { + try { + return MessageDigest.getInstance(algorithm); + } catch (final Exception e) { + return defaultMessageDigest; + } + } + /** * Returns an MD2 MessageDigest. *