Repository: groovy
Updated Branches:
  refs/heads/master 9638acdd7 -> 6a6e1f0ff


GROOVY-8780: Add `sha256` DGM(closes #793)


Project: http://git-wip-us.apache.org/repos/asf/groovy/repo
Commit: http://git-wip-us.apache.org/repos/asf/groovy/commit/6a6e1f0f
Tree: http://git-wip-us.apache.org/repos/asf/groovy/tree/6a6e1f0f
Diff: http://git-wip-us.apache.org/repos/asf/groovy/diff/6a6e1f0f

Branch: refs/heads/master
Commit: 6a6e1f0ff9c810fc4fac977c67bdb789b7a486bf
Parents: 9638acd
Author: Daniel Sun <[email protected]>
Authored: Sat Sep 8 13:48:36 2018 +0800
Committer: Daniel Sun <[email protected]>
Committed: Sat Sep 8 13:48:36 2018 +0800

----------------------------------------------------------------------
 .../groovy/runtime/EncodingGroovyMethods.java   | 21 ++++++++++++++++++++
 .../runtime/EncodingGroovyMethodsTest.java      |  6 ++++++
 2 files changed, 27 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/groovy/blob/6a6e1f0f/src/main/java/org/codehaus/groovy/runtime/EncodingGroovyMethods.java
----------------------------------------------------------------------
diff --git 
a/src/main/java/org/codehaus/groovy/runtime/EncodingGroovyMethods.java 
b/src/main/java/org/codehaus/groovy/runtime/EncodingGroovyMethods.java
index 273fc41..f2ec1e2 100644
--- a/src/main/java/org/codehaus/groovy/runtime/EncodingGroovyMethods.java
+++ b/src/main/java/org/codehaus/groovy/runtime/EncodingGroovyMethods.java
@@ -46,6 +46,7 @@ public class EncodingGroovyMethods {
     private static final char[] T_TABLE_URLSAFE = 
"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_=".toCharArray();
     private static final String CHUNK_SEPARATOR = "\r\n";
     private static final String MD5 = "MD5";
+    private static final String SHA_256 = "SHA-256";
 
     /**
      * Produce a Writable object which writes the Base64 encoding of the byte 
array.
@@ -390,6 +391,26 @@ public class EncodingGroovyMethods {
     }
 
     /**
+     * Calculate SHA-256 of the CharSequence instance
+     * @return SHA-256 value
+     * @throws NoSuchAlgorithmException if SHA-256 algorithm not found
+     * @since 2.5.3
+     */
+    public static String sha256(CharSequence self) throws 
NoSuchAlgorithmException {
+        return digest(self, SHA_256);
+    }
+
+    /**
+     * Calculate SHA-256 of the byte array
+     * @return SHA-256 value
+     * @throws NoSuchAlgorithmException if SHA-256 algorithm not found
+     * @since 2.5.3
+     */
+    public static String sha256(byte[] self) throws NoSuchAlgorithmException {
+        return digest(self, SHA_256);
+    }
+
+    /**
      * digest the CharSequence instance
      * @param algorithm the name of the algorithm requested, e.g. MD5, SHA-1, 
SHA-256, etc.
      * @return digested value

http://git-wip-us.apache.org/repos/asf/groovy/blob/6a6e1f0f/src/test/org/codehaus/groovy/runtime/EncodingGroovyMethodsTest.java
----------------------------------------------------------------------
diff --git 
a/src/test/org/codehaus/groovy/runtime/EncodingGroovyMethodsTest.java 
b/src/test/org/codehaus/groovy/runtime/EncodingGroovyMethodsTest.java
index 20c0897..527399c 100644
--- a/src/test/org/codehaus/groovy/runtime/EncodingGroovyMethodsTest.java
+++ b/src/test/org/codehaus/groovy/runtime/EncodingGroovyMethodsTest.java
@@ -29,6 +29,12 @@ public class EncodingGroovyMethodsTest {
     }
 
     @Test
+    public void sha256() throws Exception {
+        
Assert.assertEquals("6ca13d52ca70c883e0f0bb101e425a89e8624de51db2d2392593af6a84118090",
 EncodingGroovyMethods.sha256("abc123"));
+        
Assert.assertEquals("6ca13d52ca70c883e0f0bb101e425a89e8624de51db2d2392593af6a84118090",
 EncodingGroovyMethods.sha256("abc123".getBytes("UTF-8")));
+    }
+
+    @Test
     public void digest() throws Exception {
         Assert.assertEquals("e99a18c428cb38d5f260853678922e03", 
EncodingGroovyMethods.digest("abc123", "MD5"));
         Assert.assertEquals("e99a18c428cb38d5f260853678922e03", 
EncodingGroovyMethods.digest("abc123".getBytes("UTF-8"), "MD5"));

Reply via email to