diff options
author | Tim Whittington <bc@whittington.net.nz> | 2014-05-26 00:56:27 +0400 |
---|---|---|
committer | Tim Whittington <bc@whittington.net.nz> | 2014-05-26 00:56:27 +0400 |
commit | 124c67ce9c8b7830c55c5675fe403f067574da53 (patch) | |
tree | da90df10b8db9eab50449eeb84d59fe55f04a792 /core/src/main/java/org/bouncycastle/crypto/digests/SHA512tDigest.java | |
parent | d9c5523df0b969c851272bc50d79269b3940c859 (diff) |
Extend EncodableDigest implementation to all SHA-2 digests.
Diffstat (limited to 'core/src/main/java/org/bouncycastle/crypto/digests/SHA512tDigest.java')
-rw-r--r-- | core/src/main/java/org/bouncycastle/crypto/digests/SHA512tDigest.java | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/core/src/main/java/org/bouncycastle/crypto/digests/SHA512tDigest.java b/core/src/main/java/org/bouncycastle/crypto/digests/SHA512tDigest.java index 46154618..9abf73b4 100644 --- a/core/src/main/java/org/bouncycastle/crypto/digests/SHA512tDigest.java +++ b/core/src/main/java/org/bouncycastle/crypto/digests/SHA512tDigest.java @@ -2,6 +2,7 @@ package org.bouncycastle.crypto.digests; import org.bouncycastle.util.Memoable; import org.bouncycastle.util.MemoableResetException; +import org.bouncycastle.util.Pack; /** * FIPS 180-4 implementation of SHA-512/t @@ -53,6 +54,17 @@ public class SHA512tDigest reset(t); } + public SHA512tDigest(byte[] encodedState) + { + this(readDigestLength(encodedState)); + restoreState(encodedState); + } + + private static int readDigestLength(byte[] encodedState) + { + return Pack.bigEndianToInt(encodedState, encodedState.length - 4); + } + public String getAlgorithmName() { return "SHA-512/" + Integer.toString(digestLength * 8); @@ -202,4 +214,14 @@ public class SHA512tDigest this.H7t = t.H7t; this.H8t = t.H8t; } + + public byte[] getEncodedState() + { + final int baseSize = getEncodedStateSize(); + byte[] encoded = new byte[baseSize + 4]; + populateState(encoded); + Pack.intToBigEndian(digestLength * 8, encoded, baseSize); + return encoded; + } + } |