summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKenny Root <kroot@google.com>2014-02-25 23:52:00 +0000
committerGerrit Code Review <noreply-gerritcodereview@google.com>2014-02-25 23:52:01 +0000
commit0620ff904e6b109c38a0032f1c1df6bd05f6662f (patch)
tree46e11a0cf1a3b68129c34288e7d2b2de8aa22516
parent684e45f9b88f911c3a39aa2e2d2b559c7b1c0074 (diff)
parentbab34fd43afe55e6eae70a6467e61cef7f79008e (diff)
downloadbouncycastle-0620ff904e6b109c38a0032f1c1df6bd05f6662f.tar.gz
Merge "OpenSSLDigest needs to be ExtendedDigest"
-rw-r--r--bcprov/src/main/java/org/bouncycastle/crypto/digests/OpenSSLDigest.java29
-rw-r--r--patches/bcprov.patch33
2 files changed, 40 insertions, 22 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); }
}
}
diff --git a/patches/bcprov.patch b/patches/bcprov.patch
index 8bd81d66..034babf0 100644
--- a/patches/bcprov.patch
+++ b/patches/bcprov.patch
@@ -569,8 +569,8 @@ diff -Naur bcprov-jdk15on-150.orig/org/bouncycastle/crypto/digests/AndroidDigest
+}
diff -Naur bcprov-jdk15on-150.orig/org/bouncycastle/crypto/digests/OpenSSLDigest.java bcprov-jdk15on-150/org/bouncycastle/crypto/digests/OpenSSLDigest.java
--- bcprov-jdk15on-150.orig/org/bouncycastle/crypto/digests/OpenSSLDigest.java 1970-01-01 00:00:00.000000000 +0000
-+++ bcprov-jdk15on-150/org/bouncycastle/crypto/digests/OpenSSLDigest.java 2014-02-24 23:25:15.000000000 +0000
-@@ -0,0 +1,88 @@
++++ bcprov-jdk15on-150/org/bouncycastle/crypto/digests/OpenSSLDigest.java 2014-02-25 22:51:56.000000000 +0000
+@@ -0,0 +1,97 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
@@ -589,19 +589,24 @@ diff -Naur bcprov-jdk15on-150.orig/org/bouncycastle/crypto/digests/OpenSSLDigest
+
+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);
+ }
@@ -615,6 +620,10 @@ diff -Naur bcprov-jdk15on-150.orig/org/bouncycastle/crypto/digests/OpenSSLDigest
+ return delegate.getDigestLength();
+ }
+
++ public int getByteLength() {
++ return byteSize;
++ }
++
+ public void reset() {
+ delegate.reset();
+ }
@@ -636,27 +645,27 @@ diff -Naur bcprov-jdk15on-150.orig/org/bouncycastle/crypto/digests/OpenSSLDigest
+ }
+
+ 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); }
+ }
+}
diff -Naur bcprov-jdk15on-150.orig/org/bouncycastle/crypto/encodings/OAEPEncoding.java bcprov-jdk15on-150/org/bouncycastle/crypto/encodings/OAEPEncoding.java