From de2fc78ad125287a0428f9826440b9f09db9e56c Mon Sep 17 00:00:00 2001 From: catbref Date: Mon, 2 Nov 2020 10:47:27 +0000 Subject: [PATCH] Add support for SHA256 digest of ByteBuffer in Crypto class --- src/main/java/org/qortal/crypto/Crypto.java | 22 +++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/src/main/java/org/qortal/crypto/Crypto.java b/src/main/java/org/qortal/crypto/Crypto.java index a21ac594..49cdd2fb 100644 --- a/src/main/java/org/qortal/crypto/Crypto.java +++ b/src/main/java/org/qortal/crypto/Crypto.java @@ -1,5 +1,6 @@ package org.qortal.crypto; +import java.nio.ByteBuffer; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import java.util.Arrays; @@ -42,6 +43,27 @@ public abstract class Crypto { } } + /** + * Returns 32-byte SHA-256 digest of message passed in input. + * + * @param input + * variable-length byte[] message + * @return byte[32] digest, or null if SHA-256 algorithm can't be accessed + */ + public static byte[] digest(ByteBuffer input) { + if (input == null) + return null; + + try { + // SHA2-256 + MessageDigest sha256 = MessageDigest.getInstance("SHA-256"); + sha256.update(input); + return sha256.digest(); + } catch (NoSuchAlgorithmException e) { + throw new RuntimeException("SHA-256 message digest not available"); + } + } + /** * Returns 32-byte digest of two rounds of SHA-256 on message passed in input. *