You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by gg...@apache.org on 2016/05/14 00:17:26 UTC

svn commit: r1743770 - in /commons/proper/codec/trunk/src: changes/changes.xml main/java/org/apache/commons/codec/digest/DigestUtils.java

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.
      *