Author: ggregory
Date: Sun Sep  2 18:08:45 2012
New Revision: 1380014

URL: http://svn.apache.org/viewvc?rev=1380014&view=rev
Log:
[CODEC-156] DigestUtils: add APIs named after standard alg name SHA-1.

Modified:
    commons/proper/codec/trunk/src/changes/changes.xml
    
commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/digest/DigestUtils.java
    
commons/proper/codec/trunk/src/test/java/org/apache/commons/codec/digest/DigestUtilsTest.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=1380014&r1=1380013&r2=1380014&view=diff
==============================================================================
--- commons/proper/codec/trunk/src/changes/changes.xml (original)
+++ commons/proper/codec/trunk/src/changes/changes.xml Sun Sep  2 18:08:45 2012
@@ -51,6 +51,9 @@ The <action> type attribute can be add,u
     </release>
     -->
     <release version="1.7" date="TBD" description="Feature and fix release.">
+      <action issue="CODEC-156" dev="ggregory" type="add" due-to="ggregory">
+        DigestUtils: add APIs named after standard alg name SHA-1.
+      </action>
       <action issue="CODEC-155" dev="ggregory" type="add" due-to="ggregory">
         DigestUtils.getDigest(String) should throw IllegalArgumentException 
instead of RuntimeException.
       </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=1380014&r1=1380013&r2=1380014&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
 Sun Sep  2 18:08:45 2012
@@ -103,6 +103,20 @@ public class DigestUtils {
     }
 
     /**
+     * Returns an SHA-1 digest.
+     *
+     * @return An SHA-1 digest instance.
+     * @throws IllegalArgumentException
+     *             when a {@link NoSuchAlgorithmException} is caught, which 
should never happen because SHA-1 is a
+     *             built-in algorithm
+     * @see MessageDigestAlgorithms#SHA_1
+     * @since 1.7
+     */
+    public static MessageDigest getSha1Digest() {
+        return getDigest(MessageDigestAlgorithms.SHA_1);
+    }
+
+    /**
      * Returns an SHA-256 digest.
      * <p>
      * Throws a <code>RuntimeException</code> on JRE versions prior to 1.4.0.
@@ -250,6 +264,18 @@ public class DigestUtils {
      * @param data
      *            Data to digest
      * @return SHA-1 digest
+     * @since 1.7
+     */
+    public static byte[] sha1(byte[] data) {
+        return getSha1Digest().digest(data);
+    }
+
+    /**
+     * Calculates the SHA-1 digest and returns the value as a 
<code>byte[]</code>.
+     *
+     * @param data
+     *            Data to digest
+     * @return SHA-1 digest
      * @throws IOException
      *             On error reading from the stream
      * @since 1.4
@@ -264,6 +290,20 @@ public class DigestUtils {
      * @param data
      *            Data to digest
      * @return SHA-1 digest
+     * @throws IOException
+     *             On error reading from the stream
+     * @since 1.7
+     */
+    public static byte[] sha1(InputStream data) throws IOException {
+        return digest(getSha1Digest(), data);
+    }
+
+    /**
+     * Calculates the SHA-1 digest and returns the value as a 
<code>byte[]</code>.
+     *
+     * @param data
+     *            Data to digest
+     * @return SHA-1 digest
      */
     public static byte[] sha(String data) {
         return sha(getBytesUtf8(data));
@@ -597,8 +637,8 @@ public class DigestUtils {
      * @return the updated {@link MessageDigest}
      * @since 1.7
      */
-    public static MessageDigest updateDigest(final MessageDigest 
messageDigest, final String valueToDigest) {
-        messageDigest.update(getBytesUtf8(valueToDigest));
+    public static MessageDigest updateDigest(final MessageDigest 
messageDigest, byte[] valueToDigest) {
+        messageDigest.update(valueToDigest);
         return messageDigest;
     }
 
@@ -612,8 +652,8 @@ public class DigestUtils {
      * @return the updated {@link MessageDigest}
      * @since 1.7
      */
-    public static MessageDigest updateDigest(final MessageDigest 
messageDigest, byte[] valueToDigest) {
-        messageDigest.update(valueToDigest);
+    public static MessageDigest updateDigest(final MessageDigest 
messageDigest, final String valueToDigest) {
+        messageDigest.update(getBytesUtf8(valueToDigest));
         return messageDigest;
     }
 }

Modified: 
commons/proper/codec/trunk/src/test/java/org/apache/commons/codec/digest/DigestUtilsTest.java
URL: 
http://svn.apache.org/viewvc/commons/proper/codec/trunk/src/test/java/org/apache/commons/codec/digest/DigestUtilsTest.java?rev=1380014&r1=1380013&r2=1380014&view=diff
==============================================================================
--- 
commons/proper/codec/trunk/src/test/java/org/apache/commons/codec/digest/DigestUtilsTest.java
 (original)
+++ 
commons/proper/codec/trunk/src/test/java/org/apache/commons/codec/digest/DigestUtilsTest.java
 Sun Sep  2 18:08:45 2012
@@ -182,7 +182,25 @@ public class DigestUtilsTest {
     }
 
     @Test
-    public void testUpdateWithByteArray(){
+    public void testSha1UpdateWithByteArray(){
+        final String d1 = "C'est un homme qui rentre dans un café, et plouf";
+        final String d2 = "C'est un homme, c'est qu'une tête, on lui offre un 
cadeau: 'oh... encore un chapeau!'";
+
+        MessageDigest messageDigest = DigestUtils.getSha1Digest();
+        messageDigest.update(d1.getBytes());
+        messageDigest.update(d2.getBytes());
+        final String expectedResult = 
Hex.encodeHexString(messageDigest.digest());
+
+        messageDigest = DigestUtils.getSha1Digest();
+        DigestUtils.updateDigest(messageDigest, d1.getBytes());
+        DigestUtils.updateDigest(messageDigest, d2.getBytes());
+        final String actualResult = 
Hex.encodeHexString(messageDigest.digest());
+
+        assertEquals(expectedResult, actualResult);
+    }
+
+    @Test
+    public void testShaUpdateWithByteArray(){
         final String d1 = "C'est un homme qui rentre dans un café, et plouf";
         final String d2 = "C'est un homme, c'est qu'une tête, on lui offre un 
cadeau: 'oh... encore un chapeau!'";
 
@@ -200,7 +218,25 @@ public class DigestUtilsTest {
     }
 
     @Test
-    public void testUpdateWithString(){
+    public void testSha1UpdateWithString(){
+        final String d1 = "C'est un homme qui rentre dans un café, et plouf";
+        final String d2 = "C'est un homme, c'est qu'une tête, on lui offre un 
cadeau: 'oh... encore un chapeau!'";
+
+        MessageDigest messageDigest = DigestUtils.getSha1Digest();
+        messageDigest.update(StringUtils.getBytesUtf8(d1));
+        messageDigest.update(StringUtils.getBytesUtf8(d2));
+        final String expectedResult = 
Hex.encodeHexString(messageDigest.digest());
+
+        messageDigest = DigestUtils.getSha1Digest();
+        DigestUtils.updateDigest(messageDigest, d1);
+        DigestUtils.updateDigest(messageDigest, d2);
+        final String actualResult = 
Hex.encodeHexString(messageDigest.digest());
+
+        assertEquals(expectedResult, actualResult);
+    }
+
+    @Test
+    public void testShaUpdateWithString(){
         final String d1 = "C'est un homme qui rentre dans un café, et plouf";
         final String d2 = "C'est un homme, c'est qu'une tête, on lui offre un 
cadeau: 'oh... encore un chapeau!'";
 


Reply via email to