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"));
