Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/quite/humla-spongycastle.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTim Whittington <bc@whittington.net.nz>2014-05-26 00:56:27 +0400
committerTim Whittington <bc@whittington.net.nz>2014-05-26 00:56:27 +0400
commit124c67ce9c8b7830c55c5675fe403f067574da53 (patch)
treeda90df10b8db9eab50449eeb84d59fe55f04a792 /core/src/main/java/org/bouncycastle/crypto/digests/SHA512tDigest.java
parentd9c5523df0b969c851272bc50d79269b3940c859 (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.java22
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;
+ }
+
}