summaryrefslogtreecommitdiff
path: root/bcprov/src/main/java/org/bouncycastle/crypto/digests/OpenSSLDigest.java
diff options
context:
space:
mode:
Diffstat (limited to 'bcprov/src/main/java/org/bouncycastle/crypto/digests/OpenSSLDigest.java')
-rw-r--r--bcprov/src/main/java/org/bouncycastle/crypto/digests/OpenSSLDigest.java29
1 files changed, 19 insertions, 10 deletions
diff --git a/bcprov/src/main/java/org/bouncycastle/crypto/digests/OpenSSLDigest.java b/bcprov/src/main/java/org/bouncycastle/crypto/digests/OpenSSLDigest.java
index 2846725a..5aa1eeca 100644
--- a/bcprov/src/main/java/org/bouncycastle/crypto/digests/OpenSSLDigest.java
+++ b/bcprov/src/main/java/org/bouncycastle/crypto/digests/OpenSSLDigest.java
@@ -16,19 +16,24 @@
package org.bouncycastle.crypto.digests;
-import org.bouncycastle.crypto.Digest;
+import org.bouncycastle.crypto.ExtendedDigest;
+import org.bouncycastle.jcajce.provider.keystore.bc.BcKeyStoreSpi;
import java.security.DigestException;
import java.security.MessageDigest;
/**
- * Implements the BouncyCastle Digest interface using OpenSSL's EVP API.
+ * Implements the BouncyCastle Digest interface using OpenSSL's EVP API. This
+ * must be an ExtendedDigest for {@link BcKeyStoreSpi} to be able to use it.
*/
-public class OpenSSLDigest implements Digest {
+public class OpenSSLDigest implements ExtendedDigest {
private final MessageDigest delegate;
- public OpenSSLDigest(String algorithm) {
+ private final int byteSize;
+
+ public OpenSSLDigest(String algorithm, int byteSize) {
try {
delegate = MessageDigest.getInstance(algorithm, "AndroidOpenSSL");
+ this.byteSize = byteSize;
} catch (Exception e) {
throw new RuntimeException(e);
}
@@ -42,6 +47,10 @@ public class OpenSSLDigest implements Digest {
return delegate.getDigestLength();
}
+ public int getByteLength() {
+ return byteSize;
+ }
+
public void reset() {
delegate.reset();
}
@@ -63,26 +72,26 @@ public class OpenSSLDigest implements Digest {
}
public static class MD5 extends OpenSSLDigest {
- public MD5() { super("MD5"); }
+ public MD5() { super("MD5", 64); }
}
public static class SHA1 extends OpenSSLDigest {
- public SHA1() { super("SHA-1"); }
+ public SHA1() { super("SHA-1", 64); }
}
public static class SHA224 extends OpenSSLDigest {
- public SHA224() { super("SHA-224"); }
+ public SHA224() { super("SHA-224", 64); }
}
public static class SHA256 extends OpenSSLDigest {
- public SHA256() { super("SHA-256"); }
+ public SHA256() { super("SHA-256", 64); }
}
public static class SHA384 extends OpenSSLDigest {
- public SHA384() { super("SHA-384"); }
+ public SHA384() { super("SHA-384", 128); }
}
public static class SHA512 extends OpenSSLDigest {
- public SHA512() { super("SHA-512"); }
+ public SHA512() { super("SHA-512", 128); }
}
}