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!'";