diff options
author | Brian Carlstrom <bdc@google.com> | 2012-09-04 22:37:51 -0700 |
---|---|---|
committer | Brian Carlstrom <bdc@google.com> | 2012-09-10 17:12:56 -0700 |
commit | 4c111300c39cb2e27f07fc2ae3b00e23ed4443b2 (patch) | |
tree | 09f7bc25efefbfb90b4af3334f4c691eab0ea727 /patches | |
parent | d74998611292b4682daa644b5eefc3b61c0898a6 (diff) | |
download | android_external_bouncycastle-4c111300c39cb2e27f07fc2ae3b00e23ed4443b2.tar.gz android_external_bouncycastle-4c111300c39cb2e27f07fc2ae3b00e23ed4443b2.tar.bz2 android_external_bouncycastle-4c111300c39cb2e27f07fc2ae3b00e23ed4443b2.zip |
bouncycastle 1.47 upgrade
Change-Id: I601cc0dd434897d48c79abb67e9f833159135cce
Diffstat (limited to 'patches')
-rw-r--r-- | patches/README | 2 | ||||
-rw-r--r-- | patches/android.patch | 12399 |
2 files changed, 5454 insertions, 6947 deletions
diff --git a/patches/README b/patches/README index c0f5697..fa4c751 100644 --- a/patches/README +++ b/patches/README @@ -16,7 +16,6 @@ Other performance (both speed and memory) and correctness changes: - singleton DERNull (BouncyCastle now does this but we make constructor private to be sure) - similarly made DERBoolean constructor private and moved to DERBoolean.{getInstance,TRUE,FALSE} - removed use of Boolean constructor -- DERPrintableString interns its internal String values - DERObjectIdentifier interns its internal String indentifer value - changed uses of 'new Integer' to 'Integer.valueOf' - X509CertificateObject.getEncoded caches its result @@ -29,7 +28,6 @@ Other performance (both speed and memory) and correctness changes: - Fixed cut & paste instanceof error in EncryptedPrivateKeyInfo - Make BouncyCastleProvider.PROVIDER_NAME final - Added wrapper for SecretKeyFactory.PBKDF2WithHmacSHA1 -- Added DSA support to JDKKeyManager.engineGetKeySpec - Fixed CertBlacklist to do a by-value comparison of public keys Other security changes: diff --git a/patches/android.patch b/patches/android.patch index 40a24f8..33df91a 100644 --- a/patches/android.patch +++ b/patches/android.patch @@ -1,23 +1,9 @@ -diff -Naur bcprov-jdk16-146.orig/org/bouncycastle/asn1/ASN1InputStream.java bcprov-jdk16-146/org/bouncycastle/asn1/ASN1InputStream.java ---- bcprov-jdk16-146.orig/org/bouncycastle/asn1/ASN1InputStream.java 2011-02-23 20:08:56.000000000 +0000 -+++ bcprov-jdk16-146/org/bouncycastle/asn1/ASN1InputStream.java 2012-07-27 18:48:00.011478563 +0000 -@@ -363,7 +363,9 @@ - case BMP_STRING: - return new DERBMPString(bytes); - case BOOLEAN: -- return new ASN1Boolean(bytes); -+ // BEGIN android-changed -+ return DERBoolean.getInstance(bytes); -+ // END android-changed - case ENUMERATED: - return new ASN1Enumerated(bytes); - case GENERALIZED_TIME: -diff -Naur bcprov-jdk16-146.orig/org/bouncycastle/asn1/ASN1Null.java bcprov-jdk16-146/org/bouncycastle/asn1/ASN1Null.java ---- bcprov-jdk16-146.orig/org/bouncycastle/asn1/ASN1Null.java 2011-02-23 20:08:56.000000000 +0000 -+++ bcprov-jdk16-146/org/bouncycastle/asn1/ASN1Null.java 2012-07-27 18:47:59.981477999 +0000 +diff -Naur bcprov-jdk15on-147.orig/org/bouncycastle/asn1/ASN1Null.java bcprov-jdk15on-147/org/bouncycastle/asn1/ASN1Null.java +--- bcprov-jdk15on-147.orig/org/bouncycastle/asn1/ASN1Null.java 2012-03-22 15:11:48.000000000 +0000 ++++ bcprov-jdk15on-147/org/bouncycastle/asn1/ASN1Null.java 2012-09-11 00:12:44.000000000 +0000 @@ -8,9 +8,11 @@ public abstract class ASN1Null - extends ASN1Object + extends ASN1Primitive { - public ASN1Null() + // BEGIN android-changed @@ -26,23 +12,23 @@ diff -Naur bcprov-jdk16-146.orig/org/bouncycastle/asn1/ASN1Null.java bcprov-jdk1 } + // END android-changed - public int hashCode() + public static ASN1Null getInstance(Object o) { -diff -Naur bcprov-jdk16-146.orig/org/bouncycastle/asn1/DERBoolean.java bcprov-jdk16-146/org/bouncycastle/asn1/DERBoolean.java ---- bcprov-jdk16-146.orig/org/bouncycastle/asn1/DERBoolean.java 2011-02-23 20:08:56.000000000 +0000 -+++ bcprov-jdk16-146/org/bouncycastle/asn1/DERBoolean.java 2012-07-27 18:47:59.981477999 +0000 -@@ -5,7 +5,9 @@ - public class DERBoolean - extends ASN1Object - { -- byte value; +diff -Naur bcprov-jdk15on-147.orig/org/bouncycastle/asn1/DERBoolean.java bcprov-jdk15on-147/org/bouncycastle/asn1/DERBoolean.java +--- bcprov-jdk15on-147.orig/org/bouncycastle/asn1/DERBoolean.java 2012-03-22 15:11:48.000000000 +0000 ++++ bcprov-jdk15on-147/org/bouncycastle/asn1/DERBoolean.java 2012-09-11 00:12:44.000000000 +0000 +@@ -10,7 +10,9 @@ + private static final byte[] TRUE_VALUE = new byte[] { (byte)0xff }; + private static final byte[] FALSE_VALUE = new byte[] { 0 }; + +- private byte[] value; + // BEGIN android-changed -+ private final byte value; ++ final private byte[] value; + // END android-changed - public static final DERBoolean FALSE = new DERBoolean(false); - public static final DERBoolean TRUE = new DERBoolean(true); -@@ -35,6 +37,17 @@ + public static final ASN1Boolean FALSE = new ASN1Boolean(false); + public static final ASN1Boolean TRUE = new ASN1Boolean(true); +@@ -46,6 +48,17 @@ return (value ? TRUE : FALSE); } @@ -55,44 +41,25 @@ diff -Naur bcprov-jdk16-146.orig/org/bouncycastle/asn1/DERBoolean.java bcprov-jd + { + return (octets[0] != 0) ? TRUE : FALSE; + } -+ // END android-added + ++ // END android-added /** * return a Boolean from a tagged object. * -@@ -56,23 +69,29 @@ - } - else - { -- return new DERBoolean(((ASN1OctetString)o).getOctets()); -+ // BEGIN android-changed -+ return getInstance(((ASN1OctetString)o).getOctets()); -+ // END android-changed +@@ -71,7 +84,9 @@ } } -- public DERBoolean( -- byte[] value) -- { -- if (value.length != 1) -- { -- throw new IllegalArgumentException("byte value should have 1 byte in it"); -- } -- -- this.value = value[0]; -- } -+ // BEGIN android-removed -+ // public DERBoolean( -+ // byte[] value) -+ // { -+ // if (value.length != 1) -+ // { -+ // throw new IllegalArgumentException("byte value should have 1 byte in it"); -+ // } -+ // -+ // this.value = value[0]; -+ // } -+ // END android-removed +- DERBoolean( ++ // BEGIN android-changed ++ protected DERBoolean( ++ // END android-changed + byte[] value) + { + if (value.length != 1) +@@ -93,8 +108,10 @@ + } + } - public DERBoolean( + // BEGIN android-changed @@ -100,19 +67,14 @@ diff -Naur bcprov-jdk16-146.orig/org/bouncycastle/asn1/DERBoolean.java bcprov-jd boolean value) + // END android-changed { - this.value = (value) ? (byte)0xff : (byte)0; + this.value = (value) ? TRUE_VALUE : FALSE_VALUE; } -diff -Naur bcprov-jdk16-146.orig/org/bouncycastle/asn1/DERNull.java bcprov-jdk16-146/org/bouncycastle/asn1/DERNull.java ---- bcprov-jdk16-146.orig/org/bouncycastle/asn1/DERNull.java 2011-02-23 20:08:56.000000000 +0000 -+++ bcprov-jdk16-146/org/bouncycastle/asn1/DERNull.java 2012-07-27 18:47:59.981477999 +0000 -@@ -10,9 +10,13 @@ - { - public static final DERNull INSTANCE = new DERNull(); +diff -Naur bcprov-jdk15on-147.orig/org/bouncycastle/asn1/DERNull.java bcprov-jdk15on-147/org/bouncycastle/asn1/DERNull.java +--- bcprov-jdk15on-147.orig/org/bouncycastle/asn1/DERNull.java 2012-03-22 15:11:48.000000000 +0000 ++++ bcprov-jdk15on-147/org/bouncycastle/asn1/DERNull.java 2012-09-11 00:12:44.000000000 +0000 +@@ -12,7 +12,9 @@ -- byte[] zeroBytes = new byte[0]; -+ // BEGIN android-changed -+ private static final byte[] zeroBytes = new byte[0]; -+ // END android-changed + private static final byte[] zeroBytes = new byte[0]; - public DERNull() + // BEGIN android-changed @@ -121,10 +83,10 @@ diff -Naur bcprov-jdk16-146.orig/org/bouncycastle/asn1/DERNull.java bcprov-jdk16 { } -diff -Naur bcprov-jdk16-146.orig/org/bouncycastle/asn1/DERObjectIdentifier.java bcprov-jdk16-146/org/bouncycastle/asn1/DERObjectIdentifier.java ---- bcprov-jdk16-146.orig/org/bouncycastle/asn1/DERObjectIdentifier.java 2011-02-23 20:08:56.000000000 +0000 -+++ bcprov-jdk16-146/org/bouncycastle/asn1/DERObjectIdentifier.java 2012-07-27 18:48:00.011478563 +0000 -@@ -110,7 +110,13 @@ +diff -Naur bcprov-jdk15on-147.orig/org/bouncycastle/asn1/DERObjectIdentifier.java bcprov-jdk15on-147/org/bouncycastle/asn1/DERObjectIdentifier.java +--- bcprov-jdk15on-147.orig/org/bouncycastle/asn1/DERObjectIdentifier.java 2012-03-22 15:11:48.000000000 +0000 ++++ bcprov-jdk15on-147/org/bouncycastle/asn1/DERObjectIdentifier.java 2012-09-11 00:12:44.000000000 +0000 +@@ -117,7 +117,13 @@ } } @@ -139,7 +101,7 @@ diff -Naur bcprov-jdk16-146.orig/org/bouncycastle/asn1/DERObjectIdentifier.java } public DERObjectIdentifier( -@@ -121,7 +127,13 @@ +@@ -128,7 +134,13 @@ throw new IllegalArgumentException("string " + identifier + " not an OID"); } @@ -154,59 +116,37 @@ diff -Naur bcprov-jdk16-146.orig/org/bouncycastle/asn1/DERObjectIdentifier.java } public String getId() -diff -Naur bcprov-jdk16-146.orig/org/bouncycastle/asn1/DERPrintableString.java bcprov-jdk16-146/org/bouncycastle/asn1/DERPrintableString.java ---- bcprov-jdk16-146.orig/org/bouncycastle/asn1/DERPrintableString.java 2011-02-23 20:08:56.000000000 +0000 -+++ bcprov-jdk16-146/org/bouncycastle/asn1/DERPrintableString.java 2012-07-27 18:48:00.011478563 +0000 -@@ -9,7 +9,9 @@ - extends ASN1Object - implements DERString +diff -Naur bcprov-jdk15on-147.orig/org/bouncycastle/asn1/DERPrintableString.java bcprov-jdk15on-147/org/bouncycastle/asn1/DERPrintableString.java +--- bcprov-jdk15on-147.orig/org/bouncycastle/asn1/DERPrintableString.java 2012-03-22 15:11:48.000000000 +0000 ++++ bcprov-jdk15on-147/org/bouncycastle/asn1/DERPrintableString.java 2012-09-11 00:12:44.000000000 +0000 +@@ -12,7 +12,9 @@ + extends ASN1Primitive + implements ASN1String { -- String string; +- private byte[] string; + // BEGIN android-changed -+ private final String string; ++ private final byte[] string; + // END android-changed /** * return a printable string from the passed in object. -@@ -65,7 +67,9 @@ - cs[i] = (char)(string[i] & 0xff); - } - -- this.string = new String(cs); -+ // BEGIN android-changed -+ this.string = new String(cs).intern(); -+ // END android-changed - } - - /** -@@ -94,7 +98,9 @@ - throw new IllegalArgumentException("string contains illegal characters"); - } - -- this.string = string; -+ // BEGIN android-changed -+ this.string = string.intern(); -+ // END android-changed - } - - public String getString() -diff -Naur bcprov-jdk16-146.orig/org/bouncycastle/asn1/cms/ContentInfo.java bcprov-jdk16-146/org/bouncycastle/asn1/cms/ContentInfo.java ---- bcprov-jdk16-146.orig/org/bouncycastle/asn1/cms/ContentInfo.java 2011-02-23 20:08:56.000000000 +0000 -+++ bcprov-jdk16-146/org/bouncycastle/asn1/cms/ContentInfo.java 2012-07-27 18:48:00.011478563 +0000 +diff -Naur bcprov-jdk15on-147.orig/org/bouncycastle/asn1/cms/ContentInfo.java bcprov-jdk15on-147/org/bouncycastle/asn1/cms/ContentInfo.java +--- bcprov-jdk15on-147.orig/org/bouncycastle/asn1/cms/ContentInfo.java 2012-03-22 15:11:48.000000000 +0000 ++++ bcprov-jdk15on-147/org/bouncycastle/asn1/cms/ContentInfo.java 2012-09-11 00:12:44.000000000 +0000 @@ -12,7 +12,9 @@ public class ContentInfo - extends ASN1Encodable + extends ASN1Object - implements CMSObjectIdentifiers + // BEGIN android-removed + // implements CMSObjectIdentifiers + // END android-removed { private ASN1ObjectIdentifier contentType; - private DEREncodable content; -diff -Naur bcprov-jdk16-146.orig/org/bouncycastle/asn1/pkcs/EncryptedPrivateKeyInfo.java bcprov-jdk16-146/org/bouncycastle/asn1/pkcs/EncryptedPrivateKeyInfo.java ---- bcprov-jdk16-146.orig/org/bouncycastle/asn1/pkcs/EncryptedPrivateKeyInfo.java 2011-02-23 20:08:56.000000000 +0000 -+++ bcprov-jdk16-146/org/bouncycastle/asn1/pkcs/EncryptedPrivateKeyInfo.java 2012-07-27 18:48:00.011478563 +0000 + private ASN1Encodable content; +diff -Naur bcprov-jdk15on-147.orig/org/bouncycastle/asn1/pkcs/EncryptedPrivateKeyInfo.java bcprov-jdk15on-147/org/bouncycastle/asn1/pkcs/EncryptedPrivateKeyInfo.java +--- bcprov-jdk15on-147.orig/org/bouncycastle/asn1/pkcs/EncryptedPrivateKeyInfo.java 2012-03-22 15:11:48.000000000 +0000 ++++ bcprov-jdk15on-147/org/bouncycastle/asn1/pkcs/EncryptedPrivateKeyInfo.java 2012-09-11 00:12:44.000000000 +0000 @@ -37,10 +37,13 @@ public static EncryptedPrivateKeyInfo getInstance( Object obj) @@ -219,12 +159,12 @@ diff -Naur bcprov-jdk16-146.orig/org/bouncycastle/asn1/pkcs/EncryptedPrivateKeyI return (EncryptedPrivateKeyInfo)obj; } + // END android-changed - else if (obj instanceof ASN1Sequence) + else if (obj != null) { - return new EncryptedPrivateKeyInfo((ASN1Sequence)obj); -diff -Naur bcprov-jdk16-146.orig/org/bouncycastle/asn1/pkcs/PKCSObjectIdentifiers.java bcprov-jdk16-146/org/bouncycastle/asn1/pkcs/PKCSObjectIdentifiers.java ---- bcprov-jdk16-146.orig/org/bouncycastle/asn1/pkcs/PKCSObjectIdentifiers.java 2011-02-23 20:08:56.000000000 +0000 -+++ bcprov-jdk16-146/org/bouncycastle/asn1/pkcs/PKCSObjectIdentifiers.java 2012-07-27 18:47:59.981477999 +0000 + return new EncryptedPrivateKeyInfo(ASN1Sequence.getInstance(obj)); +diff -Naur bcprov-jdk15on-147.orig/org/bouncycastle/asn1/pkcs/PKCSObjectIdentifiers.java bcprov-jdk15on-147/org/bouncycastle/asn1/pkcs/PKCSObjectIdentifiers.java +--- bcprov-jdk15on-147.orig/org/bouncycastle/asn1/pkcs/PKCSObjectIdentifiers.java 2012-03-22 15:11:48.000000000 +0000 ++++ bcprov-jdk15on-147/org/bouncycastle/asn1/pkcs/PKCSObjectIdentifiers.java 2012-09-11 00:12:44.000000000 +0000 @@ -10,8 +10,10 @@ // static final ASN1ObjectIdentifier pkcs_1 = new ASN1ObjectIdentifier("1.2.840.113549.1.1"); @@ -280,9 +220,9 @@ diff -Naur bcprov-jdk16-146.orig/org/bouncycastle/asn1/pkcs/PKCSObjectIdentifier static final ASN1ObjectIdentifier id_hmacWithSHA256 = digestAlgorithm.branch("9"); static final ASN1ObjectIdentifier id_hmacWithSHA384 = digestAlgorithm.branch("10"); static final ASN1ObjectIdentifier id_hmacWithSHA512 = digestAlgorithm.branch("11"); -diff -Naur bcprov-jdk16-146.orig/org/bouncycastle/asn1/pkcs/RSAESOAEPparams.java bcprov-jdk16-146/org/bouncycastle/asn1/pkcs/RSAESOAEPparams.java ---- bcprov-jdk16-146.orig/org/bouncycastle/asn1/pkcs/RSAESOAEPparams.java 2011-02-23 20:08:56.000000000 +0000 -+++ bcprov-jdk16-146/org/bouncycastle/asn1/pkcs/RSAESOAEPparams.java 2012-07-27 18:47:59.981477999 +0000 +diff -Naur bcprov-jdk15on-147.orig/org/bouncycastle/asn1/pkcs/RSAESOAEPparams.java bcprov-jdk15on-147/org/bouncycastle/asn1/pkcs/RSAESOAEPparams.java +--- bcprov-jdk15on-147.orig/org/bouncycastle/asn1/pkcs/RSAESOAEPparams.java 2012-03-22 15:11:48.000000000 +0000 ++++ bcprov-jdk15on-147/org/bouncycastle/asn1/pkcs/RSAESOAEPparams.java 2012-09-11 00:12:44.000000000 +0000 @@ -19,7 +19,9 @@ private AlgorithmIdentifier maskGenAlgorithm; private AlgorithmIdentifier pSourceAlgorithm; @@ -294,24 +234,24 @@ diff -Naur bcprov-jdk16-146.orig/org/bouncycastle/asn1/pkcs/RSAESOAEPparams.java public final static AlgorithmIdentifier DEFAULT_MASK_GEN_FUNCTION = new AlgorithmIdentifier(PKCSObjectIdentifiers.id_mgf1, DEFAULT_HASH_ALGORITHM); public final static AlgorithmIdentifier DEFAULT_P_SOURCE_ALGORITHM = new AlgorithmIdentifier(PKCSObjectIdentifiers.id_pSpecified, new DEROctetString(new byte[0])); -diff -Naur bcprov-jdk16-146.orig/org/bouncycastle/asn1/pkcs/RSASSAPSSparams.java bcprov-jdk16-146/org/bouncycastle/asn1/pkcs/RSASSAPSSparams.java ---- bcprov-jdk16-146.orig/org/bouncycastle/asn1/pkcs/RSASSAPSSparams.java 2011-02-23 20:08:56.000000000 +0000 -+++ bcprov-jdk16-146/org/bouncycastle/asn1/pkcs/RSASSAPSSparams.java 2012-07-27 18:47:59.981477999 +0000 -@@ -20,7 +20,9 @@ - private DERInteger saltLength; - private DERInteger trailerField; +diff -Naur bcprov-jdk15on-147.orig/org/bouncycastle/asn1/pkcs/RSASSAPSSparams.java bcprov-jdk15on-147/org/bouncycastle/asn1/pkcs/RSASSAPSSparams.java +--- bcprov-jdk15on-147.orig/org/bouncycastle/asn1/pkcs/RSASSAPSSparams.java 2012-03-22 15:11:48.000000000 +0000 ++++ bcprov-jdk15on-147/org/bouncycastle/asn1/pkcs/RSASSAPSSparams.java 2012-09-11 00:12:44.000000000 +0000 +@@ -22,7 +22,9 @@ + private ASN1Integer saltLength; + private ASN1Integer trailerField; - public final static AlgorithmIdentifier DEFAULT_HASH_ALGORITHM = new AlgorithmIdentifier(OIWObjectIdentifiers.idSHA1, new DERNull()); + // BEGIN android-changed + public final static AlgorithmIdentifier DEFAULT_HASH_ALGORITHM = new AlgorithmIdentifier(OIWObjectIdentifiers.idSHA1, DERNull.INSTANCE); + // END android-changed public final static AlgorithmIdentifier DEFAULT_MASK_GEN_FUNCTION = new AlgorithmIdentifier(PKCSObjectIdentifiers.id_mgf1, DEFAULT_HASH_ALGORITHM); - public final static DERInteger DEFAULT_SALT_LENGTH = new DERInteger(20); - public final static DERInteger DEFAULT_TRAILER_FIELD = new DERInteger(1); -diff -Naur bcprov-jdk16-146.orig/org/bouncycastle/asn1/util/ASN1Dump.java bcprov-jdk16-146/org/bouncycastle/asn1/util/ASN1Dump.java ---- bcprov-jdk16-146.orig/org/bouncycastle/asn1/util/ASN1Dump.java 2011-02-23 20:08:56.000000000 +0000 -+++ bcprov-jdk16-146/org/bouncycastle/asn1/util/ASN1Dump.java 2012-07-27 18:48:00.011478563 +0000 -@@ -79,7 +79,9 @@ + public final static ASN1Integer DEFAULT_SALT_LENGTH = new ASN1Integer(20); + public final static ASN1Integer DEFAULT_TRAILER_FIELD = new ASN1Integer(1); +diff -Naur bcprov-jdk15on-147.orig/org/bouncycastle/asn1/util/ASN1Dump.java bcprov-jdk15on-147/org/bouncycastle/asn1/util/ASN1Dump.java +--- bcprov-jdk15on-147.orig/org/bouncycastle/asn1/util/ASN1Dump.java 2012-03-22 15:11:48.000000000 +0000 ++++ bcprov-jdk15on-147/org/bouncycastle/asn1/util/ASN1Dump.java 2012-09-11 00:12:44.000000000 +0000 +@@ -78,7 +78,9 @@ { Object o = e.nextElement(); @@ -322,10 +262,10 @@ diff -Naur bcprov-jdk16-146.orig/org/bouncycastle/asn1/util/ASN1Dump.java bcprov { buf.append(tab); buf.append("NULL"); -diff -Naur bcprov-jdk16-146.orig/org/bouncycastle/asn1/x509/AttCertIssuer.java bcprov-jdk16-146/org/bouncycastle/asn1/x509/AttCertIssuer.java ---- bcprov-jdk16-146.orig/org/bouncycastle/asn1/x509/AttCertIssuer.java 2011-02-23 20:08:56.000000000 +0000 -+++ bcprov-jdk16-146/org/bouncycastle/asn1/x509/AttCertIssuer.java 2012-07-27 18:48:00.011478563 +0000 -@@ -45,7 +45,7 @@ +diff -Naur bcprov-jdk15on-147.orig/org/bouncycastle/asn1/x509/AttCertIssuer.java bcprov-jdk15on-147/org/bouncycastle/asn1/x509/AttCertIssuer.java +--- bcprov-jdk15on-147.orig/org/bouncycastle/asn1/x509/AttCertIssuer.java 2012-03-22 15:11:48.000000000 +0000 ++++ bcprov-jdk15on-147/org/bouncycastle/asn1/x509/AttCertIssuer.java 2012-09-11 00:12:44.000000000 +0000 +@@ -46,7 +46,7 @@ ASN1TaggedObject obj, boolean explicit) { @@ -334,32 +274,57 @@ diff -Naur bcprov-jdk16-146.orig/org/bouncycastle/asn1/x509/AttCertIssuer.java b } /** -diff -Naur bcprov-jdk16-146.orig/org/bouncycastle/asn1/x509/BasicConstraints.java bcprov-jdk16-146/org/bouncycastle/asn1/x509/BasicConstraints.java ---- bcprov-jdk16-146.orig/org/bouncycastle/asn1/x509/BasicConstraints.java 2011-02-23 20:08:56.000000000 +0000 -+++ bcprov-jdk16-146/org/bouncycastle/asn1/x509/BasicConstraints.java 2012-07-27 18:48:00.011478563 +0000 +diff -Naur bcprov-jdk15on-147.orig/org/bouncycastle/asn1/x509/AuthorityKeyIdentifier.java bcprov-jdk15on-147/org/bouncycastle/asn1/x509/AuthorityKeyIdentifier.java +--- bcprov-jdk15on-147.orig/org/bouncycastle/asn1/x509/AuthorityKeyIdentifier.java 2012-03-22 15:11:48.000000000 +0000 ++++ bcprov-jdk15on-147/org/bouncycastle/asn1/x509/AuthorityKeyIdentifier.java 2012-09-11 00:12:44.000000000 +0000 +@@ -14,7 +14,9 @@ + import org.bouncycastle.asn1.DERSequence; + import org.bouncycastle.asn1.DERTaggedObject; + import org.bouncycastle.crypto.Digest; +-import org.bouncycastle.crypto.digests.SHA1Digest; ++// BEGIN android-changed ++import org.bouncycastle.crypto.digests.OpenSSLDigest; ++// END android-changed + + /** + * The AuthorityKeyIdentifier object. +@@ -101,7 +103,9 @@ + public AuthorityKeyIdentifier( + SubjectPublicKeyInfo spki) + { +- Digest digest = new SHA1Digest(); ++ // BEGIN android-changed ++ Digest digest = new OpenSSLDigest.SHA1(); ++ // END android-changed + byte[] resBuf = new byte[digest.getDigestSize()]; + + byte[] bytes = spki.getPublicKeyData().getBytes(); +@@ -119,7 +123,9 @@ + GeneralNames name, + BigInteger serialNumber) + { +- Digest digest = new SHA1Digest(); ++ // BEGIN android-changed ++ Digest digest = new OpenSSLDigest.SHA1(); ++ // END android-changed + byte[] resBuf = new byte[digest.getDigestSize()]; + + byte[] bytes = spki.getPublicKeyData().getBytes(); +diff -Naur bcprov-jdk15on-147.orig/org/bouncycastle/asn1/x509/BasicConstraints.java bcprov-jdk15on-147/org/bouncycastle/asn1/x509/BasicConstraints.java +--- bcprov-jdk15on-147.orig/org/bouncycastle/asn1/x509/BasicConstraints.java 2012-03-22 15:11:48.000000000 +0000 ++++ bcprov-jdk15on-147/org/bouncycastle/asn1/x509/BasicConstraints.java 2012-09-11 00:12:44.000000000 +0000 @@ -14,7 +14,9 @@ public class BasicConstraints - extends ASN1Encodable + extends ASN1Object { - DERBoolean cA = new DERBoolean(false); + // BEGIN android-changed + DERBoolean cA = DERBoolean.FALSE; + // END android-changed - DERInteger pathLenConstraint = null; + ASN1Integer pathLenConstraint = null; public static BasicConstraints getInstance( -@@ -89,7 +91,9 @@ - { - if (cA) - { -- this.cA = new DERBoolean(cA); -+ // BEGIN android-changed -+ this.cA = DERBoolean.getInstance(cA); -+ // END android-changed - this.pathLenConstraint = new DERInteger(pathLenConstraint); - } - else -@@ -104,7 +108,9 @@ +@@ -81,7 +83,9 @@ { if (cA) { @@ -370,7 +335,7 @@ diff -Naur bcprov-jdk16-146.orig/org/bouncycastle/asn1/x509/BasicConstraints.jav } else { -@@ -121,7 +127,9 @@ +@@ -98,7 +102,9 @@ public BasicConstraints( int pathLenConstraint) { @@ -378,12 +343,26 @@ diff -Naur bcprov-jdk16-146.orig/org/bouncycastle/asn1/x509/BasicConstraints.jav + // BEGIN android-changed + this.cA = DERBoolean.TRUE; + // END android-changed - this.pathLenConstraint = new DERInteger(pathLenConstraint); + this.pathLenConstraint = new ASN1Integer(pathLenConstraint); } -diff -Naur bcprov-jdk16-146.orig/org/bouncycastle/asn1/x509/IssuingDistributionPoint.java bcprov-jdk16-146/org/bouncycastle/asn1/x509/IssuingDistributionPoint.java ---- bcprov-jdk16-146.orig/org/bouncycastle/asn1/x509/IssuingDistributionPoint.java 2011-02-23 20:08:56.000000000 +0000 -+++ bcprov-jdk16-146/org/bouncycastle/asn1/x509/IssuingDistributionPoint.java 2012-07-27 18:48:00.011478563 +0000 +diff -Naur bcprov-jdk15on-147.orig/org/bouncycastle/asn1/x509/CRLReason.java bcprov-jdk15on-147/org/bouncycastle/asn1/x509/CRLReason.java +--- bcprov-jdk15on-147.orig/org/bouncycastle/asn1/x509/CRLReason.java 2012-03-22 15:11:48.000000000 +0000 ++++ bcprov-jdk15on-147/org/bouncycastle/asn1/x509/CRLReason.java 2012-09-11 00:12:44.000000000 +0000 +@@ -138,7 +138,9 @@ + + public static CRLReason lookup(int value) + { +- Integer idx = new Integer(value); ++ // BEGIN android-changed ++ Integer idx = Integer.valueOf(value); ++ // END android-changed + + if (!table.containsKey(idx)) + { +diff -Naur bcprov-jdk15on-147.orig/org/bouncycastle/asn1/x509/IssuingDistributionPoint.java bcprov-jdk15on-147/org/bouncycastle/asn1/x509/IssuingDistributionPoint.java +--- bcprov-jdk15on-147.orig/org/bouncycastle/asn1/x509/IssuingDistributionPoint.java 2012-03-22 15:11:48.000000000 +0000 ++++ bcprov-jdk15on-147/org/bouncycastle/asn1/x509/IssuingDistributionPoint.java 2012-09-11 00:12:44.000000000 +0000 @@ -96,11 +96,15 @@ } if (onlyContainsUserCerts) @@ -420,10 +399,35 @@ diff -Naur bcprov-jdk16-146.orig/org/bouncycastle/asn1/x509/IssuingDistributionP } seq = new DERSequence(vec); -diff -Naur bcprov-jdk16-146.orig/org/bouncycastle/asn1/x509/X509Extensions.java bcprov-jdk16-146/org/bouncycastle/asn1/x509/X509Extensions.java ---- bcprov-jdk16-146.orig/org/bouncycastle/asn1/x509/X509Extensions.java 2011-02-23 20:08:56.000000000 +0000 -+++ bcprov-jdk16-146/org/bouncycastle/asn1/x509/X509Extensions.java 2012-07-27 18:48:00.011478563 +0000 -@@ -400,7 +400,9 @@ +diff -Naur bcprov-jdk15on-147.orig/org/bouncycastle/asn1/x509/SubjectKeyIdentifier.java bcprov-jdk15on-147/org/bouncycastle/asn1/x509/SubjectKeyIdentifier.java +--- bcprov-jdk15on-147.orig/org/bouncycastle/asn1/x509/SubjectKeyIdentifier.java 2012-03-22 15:11:48.000000000 +0000 ++++ bcprov-jdk15on-147/org/bouncycastle/asn1/x509/SubjectKeyIdentifier.java 2012-09-11 00:12:44.000000000 +0000 +@@ -6,7 +6,9 @@ + import org.bouncycastle.asn1.ASN1TaggedObject; + import org.bouncycastle.asn1.DEROctetString; + import org.bouncycastle.crypto.Digest; +-import org.bouncycastle.crypto.digests.SHA1Digest; ++// BEGIN android-changed ++import org.bouncycastle.crypto.digests.OpenSSLDigest; ++// END android-changed + + /** + * The SubjectKeyIdentifier object. +@@ -119,7 +121,9 @@ + + private static byte[] getDigest(SubjectPublicKeyInfo spki) + { +- Digest digest = new SHA1Digest(); ++ // BEGIN android-changed ++ Digest digest = new OpenSSLDigest.SHA1(); ++ // END android-changed + byte[] resBuf = new byte[digest.getDigestSize()]; + + byte[] bytes = spki.getPublicKeyData().getBytes(); +diff -Naur bcprov-jdk15on-147.orig/org/bouncycastle/asn1/x509/X509Extensions.java bcprov-jdk15on-147/org/bouncycastle/asn1/x509/X509Extensions.java +--- bcprov-jdk15on-147.orig/org/bouncycastle/asn1/x509/X509Extensions.java 2012-03-22 15:11:48.000000000 +0000 ++++ bcprov-jdk15on-147/org/bouncycastle/asn1/x509/X509Extensions.java 2012-09-11 00:12:44.000000000 +0000 +@@ -408,7 +408,9 @@ if (ext.isCritical()) { @@ -434,10 +438,10 @@ diff -Naur bcprov-jdk16-146.orig/org/bouncycastle/asn1/x509/X509Extensions.java } v.add(ext.getValue()); -diff -Naur bcprov-jdk16-146.orig/org/bouncycastle/asn1/x509/X509Name.java bcprov-jdk16-146/org/bouncycastle/asn1/x509/X509Name.java ---- bcprov-jdk16-146.orig/org/bouncycastle/asn1/x509/X509Name.java 2011-02-23 20:08:56.000000000 +0000 -+++ bcprov-jdk16-146/org/bouncycastle/asn1/x509/X509Name.java 2012-07-27 18:48:00.011478563 +0000 -@@ -249,8 +249,10 @@ +diff -Naur bcprov-jdk15on-147.orig/org/bouncycastle/asn1/x509/X509Name.java bcprov-jdk15on-147/org/bouncycastle/asn1/x509/X509Name.java +--- bcprov-jdk15on-147.orig/org/bouncycastle/asn1/x509/X509Name.java 2012-03-22 15:11:48.000000000 +0000 ++++ bcprov-jdk15on-147/org/bouncycastle/asn1/x509/X509Name.java 2012-09-11 00:12:44.000000000 +0000 +@@ -255,8 +255,10 @@ */ public static final Hashtable SymbolLookUp = DefaultLookUp; @@ -450,9 +454,9 @@ diff -Naur bcprov-jdk16-146.orig/org/bouncycastle/asn1/x509/X509Name.java bcprov static { -@@ -432,7 +434,9 @@ - { - values.addElement("#" + bytesToString(Hex.encode(value.getDERObject().getDEREncoded()))); +@@ -445,7 +447,9 @@ + throw new IllegalArgumentException("cannot encode value"); + } } - added.addElement((i != 0) ? TRUE : FALSE); // to allow earlier JDK compatibility + // BEGIN android-changed @@ -461,7 +465,7 @@ diff -Naur bcprov-jdk16-146.orig/org/bouncycastle/asn1/x509/X509Name.java bcprov } } } -@@ -689,7 +693,9 @@ +@@ -702,7 +706,9 @@ if (index == -1) { @@ -472,9 +476,9 @@ diff -Naur bcprov-jdk16-146.orig/org/bouncycastle/asn1/x509/X509Name.java bcprov } String name = token.substring(0, index); -diff -Naur bcprov-jdk16-146.orig/org/bouncycastle/asn1/x509/X509NameTokenizer.java bcprov-jdk16-146/org/bouncycastle/asn1/x509/X509NameTokenizer.java ---- bcprov-jdk16-146.orig/org/bouncycastle/asn1/x509/X509NameTokenizer.java 2011-02-23 20:08:56.000000000 +0000 -+++ bcprov-jdk16-146/org/bouncycastle/asn1/x509/X509NameTokenizer.java 2012-07-27 18:48:00.011478563 +0000 +diff -Naur bcprov-jdk15on-147.orig/org/bouncycastle/asn1/x509/X509NameTokenizer.java bcprov-jdk15on-147/org/bouncycastle/asn1/x509/X509NameTokenizer.java +--- bcprov-jdk15on-147.orig/org/bouncycastle/asn1/x509/X509NameTokenizer.java 2012-03-22 15:11:48.000000000 +0000 ++++ bcprov-jdk15on-147/org/bouncycastle/asn1/x509/X509NameTokenizer.java 2012-09-11 00:12:44.000000000 +0000 @@ -58,6 +58,17 @@ } else @@ -493,16 +497,9 @@ diff -Naur bcprov-jdk16-146.orig/org/bouncycastle/asn1/x509/X509NameTokenizer.ja buf.append(c); } escaped = false; -@@ -96,4 +107,4 @@ - index = end; - return buf.toString().trim(); - } --} -+} -\ No newline at end of file -diff -Naur bcprov-jdk16-146.orig/org/bouncycastle/crypto/PBEParametersGenerator.java bcprov-jdk16-146/org/bouncycastle/crypto/PBEParametersGenerator.java ---- bcprov-jdk16-146.orig/org/bouncycastle/crypto/PBEParametersGenerator.java 2011-02-23 20:08:56.000000000 +0000 -+++ bcprov-jdk16-146/org/bouncycastle/crypto/PBEParametersGenerator.java 2012-07-27 18:48:00.021478751 +0000 +diff -Naur bcprov-jdk15on-147.orig/org/bouncycastle/crypto/PBEParametersGenerator.java bcprov-jdk15on-147/org/bouncycastle/crypto/PBEParametersGenerator.java +--- bcprov-jdk15on-147.orig/org/bouncycastle/crypto/PBEParametersGenerator.java 2012-03-22 15:11:48.000000000 +0000 ++++ bcprov-jdk15on-147/org/bouncycastle/crypto/PBEParametersGenerator.java 2012-09-11 00:12:44.000000000 +0000 @@ -136,7 +136,8 @@ public static byte[] PKCS12PasswordToBytes( char[] password) @@ -520,9 +517,9 @@ diff -Naur bcprov-jdk16-146.orig/org/bouncycastle/crypto/PBEParametersGenerator. + // END android-changed } } -diff -Naur bcprov-jdk16-146.orig/org/bouncycastle/crypto/digests/OpenSSLDigest.java bcprov-jdk16-146/org/bouncycastle/crypto/digests/OpenSSLDigest.java ---- bcprov-jdk16-146.orig/org/bouncycastle/crypto/digests/OpenSSLDigest.java 1970-01-01 00:00:00.000000000 +0000 -+++ bcprov-jdk16-146/org/bouncycastle/crypto/digests/OpenSSLDigest.java 2012-07-27 18:48:00.021478751 +0000 +diff -Naur bcprov-jdk15on-147.orig/org/bouncycastle/crypto/digests/OpenSSLDigest.java bcprov-jdk15on-147/org/bouncycastle/crypto/digests/OpenSSLDigest.java +--- bcprov-jdk15on-147.orig/org/bouncycastle/crypto/digests/OpenSSLDigest.java 1970-01-01 00:00:00.000000000 +0000 ++++ bcprov-jdk15on-147/org/bouncycastle/crypto/digests/OpenSSLDigest.java 2012-09-11 00:12:44.000000000 +0000 @@ -0,0 +1,159 @@ +/* + * Copyright (C) 2008 The Android Open Source Project @@ -683,19 +680,75 @@ diff -Naur bcprov-jdk16-146.orig/org/bouncycastle/crypto/digests/OpenSSLDigest.j + public SHA512() { super("SHA-512", EVP_MD, SIZE, BLOCK_SIZE); } + } +} -diff -Naur bcprov-jdk16-146.orig/org/bouncycastle/crypto/engines/RC2Engine.java bcprov-jdk16-146/org/bouncycastle/crypto/engines/RC2Engine.java ---- bcprov-jdk16-146.orig/org/bouncycastle/crypto/engines/RC2Engine.java 2011-02-23 20:08:56.000000000 +0000 -+++ bcprov-jdk16-146/org/bouncycastle/crypto/engines/RC2Engine.java 2012-07-27 18:48:00.011478563 +0000 -@@ -313,4 +313,4 @@ - out[outOff + 6] = (byte)x76; - out[outOff + 7] = (byte)(x76 >> 8); +diff -Naur bcprov-jdk15on-147.orig/org/bouncycastle/crypto/encodings/OAEPEncoding.java bcprov-jdk15on-147/org/bouncycastle/crypto/encodings/OAEPEncoding.java +--- bcprov-jdk15on-147.orig/org/bouncycastle/crypto/encodings/OAEPEncoding.java 2012-03-22 15:11:48.000000000 +0000 ++++ bcprov-jdk15on-147/org/bouncycastle/crypto/encodings/OAEPEncoding.java 2012-09-11 00:12:44.000000000 +0000 +@@ -4,7 +4,9 @@ + import org.bouncycastle.crypto.CipherParameters; + import org.bouncycastle.crypto.Digest; + import org.bouncycastle.crypto.InvalidCipherTextException; +-import org.bouncycastle.crypto.digests.SHA1Digest; ++// BEGIN android-changed ++import org.bouncycastle.crypto.digests.OpenSSLDigest; ++// END android-changed + import org.bouncycastle.crypto.params.ParametersWithRandom; + + import java.security.SecureRandom; +@@ -26,7 +28,9 @@ + public OAEPEncoding( + AsymmetricBlockCipher cipher) + { +- this(cipher, new SHA1Digest(), null); ++ // BEGIN android-changed ++ this(cipher, new OpenSSLDigest.SHA1(), null); ++ // END android-changed } --} -+} -\ No newline at end of file -diff -Naur bcprov-jdk16-146.orig/org/bouncycastle/crypto/generators/DHParametersHelper.java bcprov-jdk16-146/org/bouncycastle/crypto/generators/DHParametersHelper.java ---- bcprov-jdk16-146.orig/org/bouncycastle/crypto/generators/DHParametersHelper.java 2011-02-23 20:08:56.000000000 +0000 -+++ bcprov-jdk16-146/org/bouncycastle/crypto/generators/DHParametersHelper.java 2012-07-27 18:48:00.021478751 +0000 + + public OAEPEncoding( +diff -Naur bcprov-jdk15on-147.orig/org/bouncycastle/crypto/encodings/PKCS1Encoding.java bcprov-jdk15on-147/org/bouncycastle/crypto/encodings/PKCS1Encoding.java +--- bcprov-jdk15on-147.orig/org/bouncycastle/crypto/encodings/PKCS1Encoding.java 2012-03-22 15:11:48.000000000 +0000 ++++ bcprov-jdk15on-147/org/bouncycastle/crypto/encodings/PKCS1Encoding.java 2012-09-11 00:12:44.000000000 +0000 +@@ -206,6 +206,12 @@ + { + throw new InvalidCipherTextException("unknown block type"); + } ++ // BEGIN android-added ++ if ((type == 1 && forPrivateKey) || (type == 2 && !forPrivateKey)) ++ { ++ throw new InvalidCipherTextException("invalid block type " + type); ++ } ++ // END android-added + + if (useStrictLength && block.length != engine.getOutputBlockSize()) + { +diff -Naur bcprov-jdk15on-147.orig/org/bouncycastle/crypto/engines/DESedeWrapEngine.java bcprov-jdk15on-147/org/bouncycastle/crypto/engines/DESedeWrapEngine.java +--- bcprov-jdk15on-147.orig/org/bouncycastle/crypto/engines/DESedeWrapEngine.java 2012-03-22 15:11:48.000000000 +0000 ++++ bcprov-jdk15on-147/org/bouncycastle/crypto/engines/DESedeWrapEngine.java 2012-09-11 00:12:44.000000000 +0000 +@@ -6,7 +6,9 @@ + import org.bouncycastle.crypto.Digest; + import org.bouncycastle.crypto.InvalidCipherTextException; + import org.bouncycastle.crypto.Wrapper; +-import org.bouncycastle.crypto.digests.SHA1Digest; ++// BEGIN android-changed ++import org.bouncycastle.crypto.digests.OpenSSLDigest; ++// END android-changed + import org.bouncycastle.crypto.modes.CBCBlockCipher; + import org.bouncycastle.crypto.params.KeyParameter; + import org.bouncycastle.crypto.params.ParametersWithIV; +@@ -52,7 +54,9 @@ + // + // checksum digest + // +- Digest sha1 = new SHA1Digest(); ++ // BEGIN android-changed ++ Digest sha1 = new OpenSSLDigest.SHA1(); ++ // END android-changed + byte[] digest = new byte[20]; + + /** +diff -Naur bcprov-jdk15on-147.orig/org/bouncycastle/crypto/generators/DHParametersHelper.java bcprov-jdk15on-147/org/bouncycastle/crypto/generators/DHParametersHelper.java +--- bcprov-jdk15on-147.orig/org/bouncycastle/crypto/generators/DHParametersHelper.java 2012-03-22 15:11:48.000000000 +0000 ++++ bcprov-jdk15on-147/org/bouncycastle/crypto/generators/DHParametersHelper.java 2012-09-11 00:12:44.000000000 +0000 @@ -3,10 +3,17 @@ import java.math.BigInteger; import java.security.SecureRandom; @@ -746,16 +799,102 @@ diff -Naur bcprov-jdk16-146.orig/org/bouncycastle/crypto/generators/DHParameters return new BigInteger[] { p, q }; } -diff -Naur bcprov-jdk16-146.orig/org/bouncycastle/crypto/macs/HMac.java bcprov-jdk16-146/org/bouncycastle/crypto/macs/HMac.java ---- bcprov-jdk16-146.orig/org/bouncycastle/crypto/macs/HMac.java 2011-02-23 20:08:56.000000000 +0000 -+++ bcprov-jdk16-146/org/bouncycastle/crypto/macs/HMac.java 2012-07-27 18:48:00.021478751 +0000 -@@ -32,23 +32,23 @@ +diff -Naur bcprov-jdk15on-147.orig/org/bouncycastle/crypto/generators/DSAParametersGenerator.java bcprov-jdk15on-147/org/bouncycastle/crypto/generators/DSAParametersGenerator.java +--- bcprov-jdk15on-147.orig/org/bouncycastle/crypto/generators/DSAParametersGenerator.java 2012-03-22 15:11:48.000000000 +0000 ++++ bcprov-jdk15on-147/org/bouncycastle/crypto/generators/DSAParametersGenerator.java 2012-09-11 00:12:44.000000000 +0000 +@@ -1,8 +1,9 @@ + package org.bouncycastle.crypto.generators; + + import org.bouncycastle.crypto.Digest; +-import org.bouncycastle.crypto.digests.SHA1Digest; +-import org.bouncycastle.crypto.digests.SHA256Digest; ++// BEGIN android-changed ++import org.bouncycastle.crypto.digests.OpenSSLDigest; ++// END android-changed + import org.bouncycastle.crypto.params.DSAParameters; + import org.bouncycastle.crypto.params.DSAValidationParameters; + import org.bouncycastle.util.Arrays; +@@ -75,7 +76,9 @@ + byte[] part1 = new byte[20]; + byte[] part2 = new byte[20]; + byte[] u = new byte[20]; +- SHA1Digest sha1 = new SHA1Digest(); ++ // BEGIN android-changed ++ Digest sha1 = new OpenSSLDigest.SHA1(); ++ // END android-changed + int n = (L - 1) / 160; + byte[] w = new byte[L / 8]; + +@@ -166,7 +169,9 @@ + { + // A.1.1.2 Generation of the Probable Primes p and q Using an Approved Hash Function + // FIXME This should be configurable (digest size in bits must be >= N) +- Digest d = new SHA256Digest(); ++ // BEGIN android-changed ++ Digest d = new OpenSSLDigest.SHA256(); ++ // END android-changed + int outlen = d.getDigestSize() * 8; + + // 1. Check that the (L, N) pair is in the list of acceptable (L, N pairs) (see Section 4.2). If +diff -Naur bcprov-jdk15on-147.orig/org/bouncycastle/crypto/generators/OpenSSLPBEParametersGenerator.java bcprov-jdk15on-147/org/bouncycastle/crypto/generators/OpenSSLPBEParametersGenerator.java +--- bcprov-jdk15on-147.orig/org/bouncycastle/crypto/generators/OpenSSLPBEParametersGenerator.java 2012-03-22 15:11:48.000000000 +0000 ++++ bcprov-jdk15on-147/org/bouncycastle/crypto/generators/OpenSSLPBEParametersGenerator.java 2012-09-11 00:12:44.000000000 +0000 +@@ -3,7 +3,9 @@ + import org.bouncycastle.crypto.CipherParameters; + import org.bouncycastle.crypto.Digest; + import org.bouncycastle.crypto.PBEParametersGenerator; +-import org.bouncycastle.crypto.digests.MD5Digest; ++// BEGIN android-changed ++import org.bouncycastle.crypto.digests.OpenSSLDigest; ++// END android-changed + import org.bouncycastle.crypto.params.KeyParameter; + import org.bouncycastle.crypto.params.ParametersWithIV; + +@@ -17,7 +19,9 @@ + public class OpenSSLPBEParametersGenerator + extends PBEParametersGenerator + { +- private Digest digest = new MD5Digest(); ++ // BEGIN android-changed ++ private Digest digest = new OpenSSLDigest.MD5(); ++ // END android-changed + + /** + * Construct a OpenSSL Parameters generator. +diff -Naur bcprov-jdk15on-147.orig/org/bouncycastle/crypto/generators/PKCS5S2ParametersGenerator.java bcprov-jdk15on-147/org/bouncycastle/crypto/generators/PKCS5S2ParametersGenerator.java +--- bcprov-jdk15on-147.orig/org/bouncycastle/crypto/generators/PKCS5S2ParametersGenerator.java 2012-03-22 15:11:48.000000000 +0000 ++++ bcprov-jdk15on-147/org/bouncycastle/crypto/generators/PKCS5S2ParametersGenerator.java 2012-09-11 00:12:44.000000000 +0000 +@@ -4,7 +4,9 @@ + import org.bouncycastle.crypto.Digest; + import org.bouncycastle.crypto.Mac; + import org.bouncycastle.crypto.PBEParametersGenerator; +-import org.bouncycastle.crypto.digests.SHA1Digest; ++// BEGIN android-changed ++import org.bouncycastle.crypto.digests.OpenSSLDigest; ++// END android-changed + import org.bouncycastle.crypto.macs.HMac; + import org.bouncycastle.crypto.params.KeyParameter; + import org.bouncycastle.crypto.params.ParametersWithIV; +@@ -27,7 +29,9 @@ + */ + public PKCS5S2ParametersGenerator() + { +- this(new SHA1Digest()); ++ // BEGIN android-changed ++ this(new OpenSSLDigest.SHA1()); ++ // END android-changed + } + + public PKCS5S2ParametersGenerator(Digest digest) +diff -Naur bcprov-jdk15on-147.orig/org/bouncycastle/crypto/macs/HMac.java bcprov-jdk15on-147/org/bouncycastle/crypto/macs/HMac.java +--- bcprov-jdk15on-147.orig/org/bouncycastle/crypto/macs/HMac.java 2012-03-22 15:11:48.000000000 +0000 ++++ bcprov-jdk15on-147/org/bouncycastle/crypto/macs/HMac.java 2012-09-11 00:12:44.000000000 +0000 +@@ -32,23 +32,31 @@ { blockLengths = new Hashtable(); - blockLengths.put("GOST3411", new Integer(32)); -+ blockLengths.put("GOST3411", Integer.valueOf(32)); - +- - blockLengths.put("MD2", new Integer(16)); - blockLengths.put("MD4", new Integer(64)); - blockLengths.put("MD5", new Integer(64)); @@ -768,30 +907,59 @@ diff -Naur bcprov-jdk16-146.orig/org/bouncycastle/crypto/macs/HMac.java bcprov-j - blockLengths.put("SHA-256", new Integer(64)); - blockLengths.put("SHA-384", new Integer(128)); - blockLengths.put("SHA-512", new Integer(128)); -+ blockLengths.put("MD2", Integer.valueOf(16)); -+ blockLengths.put("MD4", Integer.valueOf(64)); +- +- blockLengths.put("Tiger", new Integer(64)); +- blockLengths.put("Whirlpool", new Integer(64)); ++ // BEGIN android-removed ++ // blockLengths.put("GOST3411", Integer.valueOf(32)); ++ // ++ // blockLengths.put("MD2", Integer.valueOf(16)); ++ // blockLengths.put("MD4", Integer.valueOf(64)); ++ // END android-removed + blockLengths.put("MD5", Integer.valueOf(64)); + -+ blockLengths.put("RIPEMD128", Integer.valueOf(64)); -+ blockLengths.put("RIPEMD160", Integer.valueOf(64)); ++ // BEGIN android-removed ++ // blockLengths.put("RIPEMD128", Integer.valueOf(64)); ++ // blockLengths.put("RIPEMD160", Integer.valueOf(64)); ++ // END android-removed + + blockLengths.put("SHA-1", Integer.valueOf(64)); -+ blockLengths.put("SHA-224", Integer.valueOf(64)); ++ // BEGIN android-removed ++ // blockLengths.put("SHA-224", Integer.valueOf(64)); ++ // END android-removed + blockLengths.put("SHA-256", Integer.valueOf(64)); + blockLengths.put("SHA-384", Integer.valueOf(128)); + blockLengths.put("SHA-512", Integer.valueOf(128)); - -- blockLengths.put("Tiger", new Integer(64)); -- blockLengths.put("Whirlpool", new Integer(64)); -+ blockLengths.put("Tiger", Integer.valueOf(64)); -+ blockLengths.put("Whirlpool", Integer.valueOf(64)); ++ ++ // BEGIN android-removed ++ // blockLengths.put("Tiger", Integer.valueOf(64)); ++ // blockLengths.put("Whirlpool", Integer.valueOf(64)); ++ // END android-removed } private static int getByteLength( -diff -Naur bcprov-jdk16-146.orig/org/bouncycastle/crypto/signers/RSADigestSigner.java bcprov-jdk16-146/org/bouncycastle/crypto/signers/RSADigestSigner.java ---- bcprov-jdk16-146.orig/org/bouncycastle/crypto/signers/RSADigestSigner.java 2011-02-23 20:08:56.000000000 +0000 -+++ bcprov-jdk16-146/org/bouncycastle/crypto/signers/RSADigestSigner.java 2012-07-27 18:48:00.021478751 +0000 -@@ -46,8 +46,10 @@ +diff -Naur bcprov-jdk15on-147.orig/org/bouncycastle/crypto/signers/RSADigestSigner.java bcprov-jdk15on-147/org/bouncycastle/crypto/signers/RSADigestSigner.java +--- bcprov-jdk15on-147.orig/org/bouncycastle/crypto/signers/RSADigestSigner.java 2012-03-22 15:11:48.000000000 +0000 ++++ bcprov-jdk15on-147/org/bouncycastle/crypto/signers/RSADigestSigner.java 2012-09-11 00:12:44.000000000 +0000 +@@ -39,18 +39,24 @@ + */ + static + { +- oidMap.put("RIPEMD128", TeleTrusTObjectIdentifiers.ripemd128); +- oidMap.put("RIPEMD160", TeleTrusTObjectIdentifiers.ripemd160); +- oidMap.put("RIPEMD256", TeleTrusTObjectIdentifiers.ripemd256); ++ // BEGIN android-removed ++ // oidMap.put("RIPEMD128", TeleTrusTObjectIdentifiers.ripemd128); ++ // oidMap.put("RIPEMD160", TeleTrusTObjectIdentifiers.ripemd160); ++ // oidMap.put("RIPEMD256", TeleTrusTObjectIdentifiers.ripemd256); ++ // END android-removed + + oidMap.put("SHA-1", X509ObjectIdentifiers.id_SHA1); +- oidMap.put("SHA-224", NISTObjectIdentifiers.id_sha224); ++ // BEGIN android-removed ++ // oidMap.put("SHA-224", NISTObjectIdentifiers.id_sha224); ++ // END android-removed + oidMap.put("SHA-256", NISTObjectIdentifiers.id_sha256); oidMap.put("SHA-384", NISTObjectIdentifiers.id_sha384); oidMap.put("SHA-512", NISTObjectIdentifiers.id_sha512); @@ -804,12 +972,12 @@ diff -Naur bcprov-jdk16-146.orig/org/bouncycastle/crypto/signers/RSADigestSigner oidMap.put("MD5", PKCSObjectIdentifiers.md5); } -diff -Naur bcprov-jdk16-146.orig/org/bouncycastle/crypto/util/PrivateKeyFactory.java bcprov-jdk16-146/org/bouncycastle/crypto/util/PrivateKeyFactory.java ---- bcprov-jdk16-146.orig/org/bouncycastle/crypto/util/PrivateKeyFactory.java 2011-02-23 20:08:56.000000000 +0000 -+++ bcprov-jdk16-146/org/bouncycastle/crypto/util/PrivateKeyFactory.java 2012-07-27 18:48:00.031478939 +0000 -@@ -12,7 +12,9 @@ - import org.bouncycastle.asn1.DERObject; - import org.bouncycastle.asn1.DERObjectIdentifier; +diff -Naur bcprov-jdk15on-147.orig/org/bouncycastle/crypto/util/PrivateKeyFactory.java bcprov-jdk15on-147/org/bouncycastle/crypto/util/PrivateKeyFactory.java +--- bcprov-jdk15on-147.orig/org/bouncycastle/crypto/util/PrivateKeyFactory.java 2012-03-22 15:11:48.000000000 +0000 ++++ bcprov-jdk15on-147/org/bouncycastle/crypto/util/PrivateKeyFactory.java 2012-09-11 00:12:44.000000000 +0000 +@@ -11,7 +11,9 @@ + import org.bouncycastle.asn1.ASN1Sequence; + import org.bouncycastle.asn1.DERInteger; import org.bouncycastle.asn1.nist.NISTNamedCurves; -import org.bouncycastle.asn1.oiw.ElGamalParameter; +// BEGIN android-removed @@ -818,9 +986,9 @@ diff -Naur bcprov-jdk16-146.orig/org/bouncycastle/crypto/util/PrivateKeyFactory. import org.bouncycastle.asn1.oiw.OIWObjectIdentifiers; import org.bouncycastle.asn1.pkcs.DHParameter; import org.bouncycastle.asn1.pkcs.PKCSObjectIdentifiers; -@@ -20,7 +22,9 @@ - import org.bouncycastle.asn1.pkcs.RSAPrivateKeyStructure; - import org.bouncycastle.asn1.sec.ECPrivateKeyStructure; +@@ -19,7 +21,9 @@ + import org.bouncycastle.asn1.pkcs.RSAPrivateKey; + import org.bouncycastle.asn1.sec.ECPrivateKey; import org.bouncycastle.asn1.sec.SECNamedCurves; -import org.bouncycastle.asn1.teletrust.TeleTrusTNamedCurves; +// BEGIN android-removed @@ -829,7 +997,7 @@ diff -Naur bcprov-jdk16-146.orig/org/bouncycastle/crypto/util/PrivateKeyFactory. import org.bouncycastle.asn1.x509.AlgorithmIdentifier; import org.bouncycastle.asn1.x509.DSAParameter; import org.bouncycastle.asn1.x9.X962NamedCurves; -@@ -34,8 +38,10 @@ +@@ -33,8 +37,10 @@ import org.bouncycastle.crypto.params.DSAPrivateKeyParameters; import org.bouncycastle.crypto.params.ECDomainParameters; import org.bouncycastle.crypto.params.ECPrivateKeyParameters; @@ -842,55 +1010,53 @@ diff -Naur bcprov-jdk16-146.orig/org/bouncycastle/crypto/util/PrivateKeyFactory. import org.bouncycastle.crypto.params.RSAPrivateCrtKeyParameters; /** -@@ -103,15 +109,17 @@ +@@ -100,14 +106,16 @@ return new DHPrivateKeyParameters(derX.getValue(), dhParams); } -- else if (algId.getObjectId().equals(OIWObjectIdentifiers.elGamalAlgorithm)) +- else if (algId.getAlgorithm().equals(OIWObjectIdentifiers.elGamalAlgorithm)) - { -- ElGamalParameter params = new ElGamalParameter( -- (ASN1Sequence)keyInfo.getAlgorithmId().getParameters()); -- DERInteger derX = (DERInteger)keyInfo.getPrivateKey(); +- ElGamalParameter params = new ElGamalParameter((ASN1Sequence)algId.getParameters()); +- DERInteger derX = (DERInteger)keyInfo.parsePrivateKey(); - - return new ElGamalPrivateKeyParameters(derX.getValue(), new ElGamalParameters( - params.getP(), params.getG())); - } + // BEGIN android-removed -+ // else if (algId.getObjectId().equals(OIWObjectIdentifiers.elGamalAlgorithm)) ++ // else if (algId.getAlgorithm().equals(OIWObjectIdentifiers.elGamalAlgorithm)) + // { -+ // ElGamalParameter params = new ElGamalParameter( -+ // (ASN1Sequence)keyInfo.getAlgorithmId().getParameters()); -+ // DERInteger derX = (DERInteger)keyInfo.getPrivateKey(); ++ // ElGamalParameter params = new ElGamalParameter((ASN1Sequence)algId.getParameters()); ++ // DERInteger derX = (DERInteger)keyInfo.parsePrivateKey(); + // + // return new ElGamalPrivateKeyParameters(derX.getValue(), new ElGamalParameters( + // params.getP(), params.getG())); + // } + // END android-removed - else if (algId.getObjectId().equals(X9ObjectIdentifiers.id_dsa)) + else if (algId.getAlgorithm().equals(X9ObjectIdentifiers.id_dsa)) { - DERInteger derX = (DERInteger)keyInfo.getPrivateKey(); -@@ -145,10 +153,12 @@ + DERInteger derX = (DERInteger)keyInfo.parsePrivateKey(); +@@ -140,10 +148,12 @@ { - ecP = NISTNamedCurves.getByOID(oid); + x9 = NISTNamedCurves.getByOID(oid); -- if (ecP == null) +- if (x9 == null) - { -- ecP = TeleTrusTNamedCurves.getByOID(oid); +- x9 = TeleTrusTNamedCurves.getByOID(oid); - } + // BEGIN android-removed -+ // if (ecP == null) ++ // if (x9 == null) + // { -+ // ecP = TeleTrusTNamedCurves.getByOID(oid); ++ // x9 = TeleTrusTNamedCurves.getByOID(oid); + // } + // END android-removed } } - -diff -Naur bcprov-jdk16-146.orig/org/bouncycastle/crypto/util/PublicKeyFactory.java bcprov-jdk16-146/org/bouncycastle/crypto/util/PublicKeyFactory.java ---- bcprov-jdk16-146.orig/org/bouncycastle/crypto/util/PublicKeyFactory.java 2011-02-23 20:08:56.000000000 +0000 -+++ bcprov-jdk16-146/org/bouncycastle/crypto/util/PublicKeyFactory.java 2012-07-27 18:48:00.031478939 +0000 -@@ -15,12 +15,16 @@ - import org.bouncycastle.asn1.DERObjectIdentifier; + } +diff -Naur bcprov-jdk15on-147.orig/org/bouncycastle/crypto/util/PublicKeyFactory.java bcprov-jdk15on-147/org/bouncycastle/crypto/util/PublicKeyFactory.java +--- bcprov-jdk15on-147.orig/org/bouncycastle/crypto/util/PublicKeyFactory.java 2012-03-22 15:11:48.000000000 +0000 ++++ bcprov-jdk15on-147/org/bouncycastle/crypto/util/PublicKeyFactory.java 2012-09-11 00:12:44.000000000 +0000 +@@ -13,13 +13,17 @@ + import org.bouncycastle.asn1.DERInteger; import org.bouncycastle.asn1.DEROctetString; import org.bouncycastle.asn1.nist.NISTNamedCurves; -import org.bouncycastle.asn1.oiw.ElGamalParameter; @@ -900,6 +1066,7 @@ diff -Naur bcprov-jdk16-146.orig/org/bouncycastle/crypto/util/PublicKeyFactory.j import org.bouncycastle.asn1.oiw.OIWObjectIdentifiers; import org.bouncycastle.asn1.pkcs.DHParameter; import org.bouncycastle.asn1.pkcs.PKCSObjectIdentifiers; + import org.bouncycastle.asn1.pkcs.RSAPublicKey; import org.bouncycastle.asn1.sec.SECNamedCurves; -import org.bouncycastle.asn1.teletrust.TeleTrusTNamedCurves; +// BEGIN android-removed @@ -907,8 +1074,8 @@ diff -Naur bcprov-jdk16-146.orig/org/bouncycastle/crypto/util/PublicKeyFactory.j +// END android-removed import org.bouncycastle.asn1.x509.AlgorithmIdentifier; import org.bouncycastle.asn1.x509.DSAParameter; - import org.bouncycastle.asn1.x509.RSAPublicKeyStructure; -@@ -42,8 +46,10 @@ + import org.bouncycastle.asn1.x509.SubjectPublicKeyInfo; +@@ -40,8 +44,10 @@ import org.bouncycastle.crypto.params.DSAPublicKeyParameters; import org.bouncycastle.crypto.params.ECDomainParameters; import org.bouncycastle.crypto.params.ECPublicKeyParameters; @@ -921,55 +1088,4665 @@ diff -Naur bcprov-jdk16-146.orig/org/bouncycastle/crypto/util/PublicKeyFactory.j import org.bouncycastle.crypto.params.RSAKeyParameters; /** -@@ -139,15 +145,17 @@ +@@ -135,14 +141,16 @@ return new DHPublicKeyParameters(derY.getValue(), dhParams); } -- else if (algId.getObjectId().equals(OIWObjectIdentifiers.elGamalAlgorithm)) +- else if (algId.getAlgorithm().equals(OIWObjectIdentifiers.elGamalAlgorithm)) - { -- ElGamalParameter params = new ElGamalParameter( -- (ASN1Sequence)keyInfo.getAlgorithmId().getParameters()); -- DERInteger derY = (DERInteger)keyInfo.getPublicKey(); +- ElGamalParameter params = new ElGamalParameter((ASN1Sequence)algId.getParameters()); +- DERInteger derY = (DERInteger)keyInfo.parsePublicKey(); - - return new ElGamalPublicKeyParameters(derY.getValue(), new ElGamalParameters( - params.getP(), params.getG())); - } + // BEGIN android-removed -+ // else if (algId.getObjectId().equals(OIWObjectIdentifiers.elGamalAlgorithm)) ++ // else if (algId.getAlgorithm().equals(OIWObjectIdentifiers.elGamalAlgorithm)) + // { -+ // ElGamalParameter params = new ElGamalParameter( -+ // (ASN1Sequence)keyInfo.getAlgorithmId().getParameters()); -+ // DERInteger derY = (DERInteger)keyInfo.getPublicKey(); ++ // ElGamalParameter params = new ElGamalParameter((ASN1Sequence)algId.getParameters()); ++ // DERInteger derY = (DERInteger)keyInfo.parsePublicKey(); + // + // return new ElGamalPublicKeyParameters(derY.getValue(), new ElGamalParameters( + // params.getP(), params.getG())); + // } + // END android-removed - else if (algId.getObjectId().equals(X9ObjectIdentifiers.id_dsa) - || algId.getObjectId().equals(OIWObjectIdentifiers.dsaWithSHA1)) + else if (algId.getAlgorithm().equals(X9ObjectIdentifiers.id_dsa) + || algId.getAlgorithm().equals(OIWObjectIdentifiers.dsaWithSHA1)) { -@@ -182,10 +190,12 @@ +@@ -177,10 +185,12 @@ { - ecP = NISTNamedCurves.getByOID(oid); + x9 = NISTNamedCurves.getByOID(oid); -- if (ecP == null) +- if (x9 == null) - { -- ecP = TeleTrusTNamedCurves.getByOID(oid); +- x9 = TeleTrusTNamedCurves.getByOID(oid); - } + // BEGIN android-removed -+ // if (ecP == null) ++ // if (x9 == null) + // { -+ // ecP = TeleTrusTNamedCurves.getByOID(oid); ++ // x9 = TeleTrusTNamedCurves.getByOID(oid); + // } + // END android-removed } } + } +diff -Naur bcprov-jdk15on-147.orig/org/bouncycastle/jcajce/provider/asymmetric/DSA.java bcprov-jdk15on-147/org/bouncycastle/jcajce/provider/asymmetric/DSA.java +--- bcprov-jdk15on-147.orig/org/bouncycastle/jcajce/provider/asymmetric/DSA.java 2012-03-22 15:11:48.000000000 +0000 ++++ bcprov-jdk15on-147/org/bouncycastle/jcajce/provider/asymmetric/DSA.java 2012-09-11 00:12:44.000000000 +0000 +@@ -27,26 +27,34 @@ + provider.addAlgorithm("KeyPairGenerator.DSA", PREFIX + "KeyPairGeneratorSpi"); + provider.addAlgorithm("KeyFactory.DSA", PREFIX + "KeyFactorySpi"); + +- provider.addAlgorithm("Signature.DSA", PREFIX + "DSASigner$stdDSA"); ++ // BEGIN android-changed ++ provider.addAlgorithm("Signature.SHA1withDSA", PREFIX + "DSASigner$stdDSA"); ++ // END android-changed + provider.addAlgorithm("Signature.NONEWITHDSA", PREFIX + "DSASigner$noneDSA"); + + provider.addAlgorithm("Alg.Alias.Signature.RAWDSA", "NONEWITHDSA"); + +- addSignatureAlgorithm(provider, "SHA224", "DSA", PREFIX + "DSASigner$dsa224", NISTObjectIdentifiers.dsa_with_sha224); +- addSignatureAlgorithm(provider, "SHA256", "DSA", PREFIX + "DSASigner$dsa256", NISTObjectIdentifiers.dsa_with_sha256); +- addSignatureAlgorithm(provider, "SHA384", "DSA", PREFIX + "DSASigner$dsa384", NISTObjectIdentifiers.dsa_with_sha384); +- addSignatureAlgorithm(provider, "SHA512", "DSA", PREFIX + "DSASigner$dsa512", NISTObjectIdentifiers.dsa_with_sha512); +- +- provider.addAlgorithm("Alg.Alias.Signature.SHA/DSA", "DSA"); +- provider.addAlgorithm("Alg.Alias.Signature.SHA1withDSA", "DSA"); +- provider.addAlgorithm("Alg.Alias.Signature.SHA1WITHDSA", "DSA"); +- provider.addAlgorithm("Alg.Alias.Signature.1.3.14.3.2.26with1.2.840.10040.4.1", "DSA"); +- provider.addAlgorithm("Alg.Alias.Signature.1.3.14.3.2.26with1.2.840.10040.4.3", "DSA"); +- provider.addAlgorithm("Alg.Alias.Signature.DSAwithSHA1", "DSA"); +- provider.addAlgorithm("Alg.Alias.Signature.DSAWITHSHA1", "DSA"); +- provider.addAlgorithm("Alg.Alias.Signature.SHA1WithDSA", "DSA"); +- provider.addAlgorithm("Alg.Alias.Signature.DSAWithSHA1", "DSA"); +- provider.addAlgorithm("Alg.Alias.Signature.1.2.840.10040.4.3", "DSA"); ++ // BEGIN android-removed ++ // addSignatureAlgorithm(provider, "SHA224", "DSA", PREFIX + "DSASigner$dsa224", NISTObjectIdentifiers.dsa_with_sha224); ++ // addSignatureAlgorithm(provider, "SHA256", "DSA", PREFIX + "DSASigner$dsa256", NISTObjectIdentifiers.dsa_with_sha256); ++ // addSignatureAlgorithm(provider, "SHA384", "DSA", PREFIX + "DSASigner$dsa384", NISTObjectIdentifiers.dsa_with_sha384); ++ // addSignatureAlgorithm(provider, "SHA512", "DSA", PREFIX + "DSASigner$dsa512", NISTObjectIdentifiers.dsa_with_sha512); ++ // END android-removed ++ ++ // BEGIN android-added ++ provider.addAlgorithm("Alg.Alias.Signature.DSA", "SHA1withDSA"); ++ // END android-added ++ // BEGIN android-changed ++ provider.addAlgorithm("Alg.Alias.Signature.SHA/DSA", "SHA1withDSA"); ++ provider.addAlgorithm("Alg.Alias.Signature.SHA1WITHDSA", "SHA1withDSA"); ++ provider.addAlgorithm("Alg.Alias.Signature.1.3.14.3.2.26with1.2.840.10040.4.1", "SHA1withDSA"); ++ provider.addAlgorithm("Alg.Alias.Signature.1.3.14.3.2.26with1.2.840.10040.4.3", "SHA1withDSA"); ++ provider.addAlgorithm("Alg.Alias.Signature.DSAwithSHA1", "SHA1withDSA"); ++ provider.addAlgorithm("Alg.Alias.Signature.DSAWITHSHA1", "SHA1withDSA"); ++ provider.addAlgorithm("Alg.Alias.Signature.SHA1WithDSA", "SHA1withDSA"); ++ provider.addAlgorithm("Alg.Alias.Signature.DSAWithSHA1", "SHA1withDSA"); ++ provider.addAlgorithm("Alg.Alias.Signature.1.2.840.10040.4.3", "SHA1withDSA"); ++ // END android-changed + + AsymmetricKeyInfoConverter keyFact = new KeyFactorySpi(); + +diff -Naur bcprov-jdk15on-147.orig/org/bouncycastle/jcajce/provider/asymmetric/EC.java bcprov-jdk15on-147/org/bouncycastle/jcajce/provider/asymmetric/EC.java +--- bcprov-jdk15on-147.orig/org/bouncycastle/jcajce/provider/asymmetric/EC.java 2012-03-22 15:11:48.000000000 +0000 ++++ bcprov-jdk15on-147/org/bouncycastle/jcajce/provider/asymmetric/EC.java 2012-09-11 00:12:44.000000000 +0000 +@@ -1,7 +1,9 @@ + package org.bouncycastle.jcajce.provider.asymmetric; + +-import org.bouncycastle.asn1.eac.EACObjectIdentifiers; +-import org.bouncycastle.asn1.teletrust.TeleTrusTObjectIdentifiers; ++// BEGIN android-removed ++// import org.bouncycastle.asn1.eac.EACObjectIdentifiers; ++// import org.bouncycastle.asn1.teletrust.TeleTrusTObjectIdentifiers; ++// END android-removed + import org.bouncycastle.asn1.x9.X9ObjectIdentifiers; + import org.bouncycastle.jcajce.provider.asymmetric.ec.KeyFactorySpi; + import org.bouncycastle.jcajce.provider.config.ConfigurableProvider; +@@ -21,33 +23,43 @@ + public void configure(ConfigurableProvider provider) + { + provider.addAlgorithm("KeyAgreement.ECDH", PREFIX + "KeyAgreementSpi$DH"); +- provider.addAlgorithm("KeyAgreement.ECDHC", PREFIX + "KeyAgreementSpi$DHC"); +- provider.addAlgorithm("KeyAgreement.ECMQV", PREFIX + "KeyAgreementSpi$MQV"); +- provider.addAlgorithm("KeyAgreement." + X9ObjectIdentifiers.dhSinglePass_stdDH_sha1kdf_scheme, PREFIX + "KeyAgreementSpi$DHwithSHA1KDF"); +- provider.addAlgorithm("KeyAgreement." + X9ObjectIdentifiers.mqvSinglePass_sha1kdf_scheme, PREFIX + "KeyAgreementSpi$MQVwithSHA1KDF"); ++ // BEGIN android-removed ++ // provider.addAlgorithm("KeyAgreement.ECDHC", PREFIX + "KeyAgreementSpi$DHC"); ++ // provider.addAlgorithm("KeyAgreement.ECMQV", PREFIX + "KeyAgreementSpi$MQV"); ++ // provider.addAlgorithm("KeyAgreement." + X9ObjectIdentifiers.dhSinglePass_stdDH_sha1kdf_scheme, PREFIX + "KeyAgreementSpi$DHwithSHA1KDF"); ++ // provider.addAlgorithm("KeyAgreement." + X9ObjectIdentifiers.mqvSinglePass_sha1kdf_scheme, PREFIX + "KeyAgreementSpi$MQVwithSHA1KDF"); ++ // END android-removed + + registerOid(provider, X9ObjectIdentifiers.id_ecPublicKey, "EC", new KeyFactorySpi.EC()); + // TODO Should this be an alias for ECDH? + registerOid(provider, X9ObjectIdentifiers.dhSinglePass_stdDH_sha1kdf_scheme, "EC", new KeyFactorySpi.EC()); +- registerOid(provider, X9ObjectIdentifiers.mqvSinglePass_sha1kdf_scheme, "ECMQV", new KeyFactorySpi.ECMQV()); +- +- registerOidAlgorithmParameters(provider, X9ObjectIdentifiers.id_ecPublicKey, "EC"); +- // TODO Should this be an alias for ECDH? +- registerOidAlgorithmParameters(provider, X9ObjectIdentifiers.dhSinglePass_stdDH_sha1kdf_scheme, "EC"); +- registerOidAlgorithmParameters(provider, X9ObjectIdentifiers.mqvSinglePass_sha1kdf_scheme, "EC"); ++ // BEGIN android-removed ++ // registerOid(provider, X9ObjectIdentifiers.mqvSinglePass_sha1kdf_scheme, "ECMQV", new KeyFactorySpi.ECMQV()); ++ // END android-removed ++ ++ // BEGIN android-removed ++ // registerOidAlgorithmParameters(provider, X9ObjectIdentifiers.id_ecPublicKey, "EC"); ++ // // TODO Should this be an alias for ECDH? ++ // registerOidAlgorithmParameters(provider, X9ObjectIdentifiers.dhSinglePass_stdDH_sha1kdf_scheme, "EC"); ++ // registerOidAlgorithmParameters(provider, X9ObjectIdentifiers.mqvSinglePass_sha1kdf_scheme, "EC"); ++ // END android-removed -diff -Naur bcprov-jdk16-146.orig/org/bouncycastle/jce/ECNamedCurveTable.java bcprov-jdk16-146/org/bouncycastle/jce/ECNamedCurveTable.java ---- bcprov-jdk16-146.orig/org/bouncycastle/jce/ECNamedCurveTable.java 2011-02-23 20:08:56.000000000 +0000 -+++ bcprov-jdk16-146/org/bouncycastle/jce/ECNamedCurveTable.java 2012-07-27 18:48:00.031478939 +0000 + provider.addAlgorithm("KeyFactory.EC", PREFIX + "KeyFactorySpi$EC"); +- provider.addAlgorithm("KeyFactory.ECDSA", PREFIX + "KeyFactorySpi$ECDSA"); +- provider.addAlgorithm("KeyFactory.ECDH", PREFIX + "KeyFactorySpi$ECDH"); +- provider.addAlgorithm("KeyFactory.ECDHC", PREFIX + "KeyFactorySpi$ECDHC"); +- provider.addAlgorithm("KeyFactory.ECMQV", PREFIX + "KeyFactorySpi$ECMQV"); ++ // BEGIN android-removed ++ // provider.addAlgorithm("KeyFactory.ECDSA", PREFIX + "KeyFactorySpi$ECDSA"); ++ // provider.addAlgorithm("KeyFactory.ECDH", PREFIX + "KeyFactorySpi$ECDH"); ++ // provider.addAlgorithm("KeyFactory.ECDHC", PREFIX + "KeyFactorySpi$ECDHC"); ++ // provider.addAlgorithm("KeyFactory.ECMQV", PREFIX + "KeyFactorySpi$ECMQV"); ++ // END android-removed + + provider.addAlgorithm("KeyPairGenerator.EC", PREFIX + "KeyPairGeneratorSpi$EC"); +- provider.addAlgorithm("KeyPairGenerator.ECDSA", PREFIX + "KeyPairGeneratorSpi$ECDSA"); +- provider.addAlgorithm("KeyPairGenerator.ECDH", PREFIX + "KeyPairGeneratorSpi$ECDH"); +- provider.addAlgorithm("KeyPairGenerator.ECDHC", PREFIX + "KeyPairGeneratorSpi$ECDHC"); +- provider.addAlgorithm("KeyPairGenerator.ECIES", PREFIX + "KeyPairGeneratorSpi$ECDH"); +- provider.addAlgorithm("KeyPairGenerator.ECMQV", PREFIX + "KeyPairGeneratorSpi$ECMQV"); ++ // BEGIN android-removed ++ // provider.addAlgorithm("KeyPairGenerator.ECDSA", PREFIX + "KeyPairGeneratorSpi$ECDSA"); ++ // provider.addAlgorithm("KeyPairGenerator.ECDH", PREFIX + "KeyPairGeneratorSpi$ECDH"); ++ // provider.addAlgorithm("KeyPairGenerator.ECDHC", PREFIX + "KeyPairGeneratorSpi$ECDHC"); ++ // provider.addAlgorithm("KeyPairGenerator.ECIES", PREFIX + "KeyPairGeneratorSpi$ECDH"); ++ // provider.addAlgorithm("KeyPairGenerator.ECMQV", PREFIX + "KeyPairGeneratorSpi$ECMQV"); ++ // END android-removed + + provider.addAlgorithm("Signature.ECDSA", PREFIX + "SignatureSpi$ecDSA"); + provider.addAlgorithm("Signature.NONEwithECDSA", PREFIX + "SignatureSpi$ecDSAnone"); +@@ -59,23 +71,29 @@ + provider.addAlgorithm("Alg.Alias.Signature.SHA1WithECDSA", "ECDSA"); + provider.addAlgorithm("Alg.Alias.Signature.ECDSAWithSHA1", "ECDSA"); + provider.addAlgorithm("Alg.Alias.Signature.1.2.840.10045.4.1", "ECDSA"); +- provider.addAlgorithm("Alg.Alias.Signature." + TeleTrusTObjectIdentifiers.ecSignWithSha1, "ECDSA"); +- +- addSignatureAlgorithm(provider, "SHA224", "ECDSA", PREFIX + "SignatureSpi$ecDSA224", X9ObjectIdentifiers.ecdsa_with_SHA224); ++ // BEGIN android-removed ++ // provider.addAlgorithm("Alg.Alias.Signature." + TeleTrusTObjectIdentifiers.ecSignWithSha1, "ECDSA"); ++ // END android-removed ++ ++ // BEGIN android-removed ++ // addSignatureAlgorithm(provider, "SHA224", "ECDSA", PREFIX + "SignatureSpi$ecDSA224", X9ObjectIdentifiers.ecdsa_with_SHA224); ++ // END android-removed + addSignatureAlgorithm(provider, "SHA256", "ECDSA", PREFIX + "SignatureSpi$ecDSA256", X9ObjectIdentifiers.ecdsa_with_SHA256); + addSignatureAlgorithm(provider, "SHA384", "ECDSA", PREFIX + "SignatureSpi$ecDSA384", X9ObjectIdentifiers.ecdsa_with_SHA384); + addSignatureAlgorithm(provider, "SHA512", "ECDSA", PREFIX + "SignatureSpi$ecDSA512", X9ObjectIdentifiers.ecdsa_with_SHA512); +- addSignatureAlgorithm(provider, "RIPEMD160", "ECDSA", PREFIX + "SignatureSpi$ecDSARipeMD160",TeleTrusTObjectIdentifiers.ecSignWithRipemd160); +- +- provider.addAlgorithm("Signature.SHA1WITHECNR", PREFIX + "SignatureSpi$ecNR"); +- provider.addAlgorithm("Signature.SHA224WITHECNR", PREFIX + "SignatureSpi$ecNR224"); +- provider.addAlgorithm("Signature.SHA256WITHECNR", PREFIX + "SignatureSpi$ecNR256"); +- provider.addAlgorithm("Signature.SHA384WITHECNR", PREFIX + "SignatureSpi$ecNR384"); +- provider.addAlgorithm("Signature.SHA512WITHECNR", PREFIX + "SignatureSpi$ecNR512"); +- +- addSignatureAlgorithm(provider, "SHA1", "CVC-ECDSA", PREFIX + "SignatureSpi$ecCVCDSA", EACObjectIdentifiers.id_TA_ECDSA_SHA_1); +- addSignatureAlgorithm(provider, "SHA224", "CVC-ECDSA", PREFIX + "SignatureSpi$ecCVCDSA224", EACObjectIdentifiers.id_TA_ECDSA_SHA_224); +- addSignatureAlgorithm(provider, "SHA256", "CVC-ECDSA", PREFIX + "SignatureSpi$ecCVCDSA256", EACObjectIdentifiers.id_TA_ECDSA_SHA_256); ++ // BEGIN android-removed ++ // addSignatureAlgorithm(provider, "RIPEMD160", "ECDSA", PREFIX + "SignatureSpi$ecDSARipeMD160",TeleTrusTObjectIdentifiers.ecSignWithRipemd160); ++ // ++ // provider.addAlgorithm("Signature.SHA1WITHECNR", PREFIX + "SignatureSpi$ecNR"); ++ // provider.addAlgorithm("Signature.SHA224WITHECNR", PREFIX + "SignatureSpi$ecNR224"); ++ // provider.addAlgorithm("Signature.SHA256WITHECNR", PREFIX + "SignatureSpi$ecNR256"); ++ // provider.addAlgorithm("Signature.SHA384WITHECNR", PREFIX + "SignatureSpi$ecNR384"); ++ // provider.addAlgorithm("Signature.SHA512WITHECNR", PREFIX + "SignatureSpi$ecNR512"); ++ // ++ // addSignatureAlgorithm(provider, "SHA1", "CVC-ECDSA", PREFIX + "SignatureSpi$ecCVCDSA", EACObjectIdentifiers.id_TA_ECDSA_SHA_1); ++ // addSignatureAlgorithm(provider, "SHA224", "CVC-ECDSA", PREFIX + "SignatureSpi$ecCVCDSA224", EACObjectIdentifiers.id_TA_ECDSA_SHA_224); ++ // addSignatureAlgorithm(provider, "SHA256", "CVC-ECDSA", PREFIX + "SignatureSpi$ecCVCDSA256", EACObjectIdentifiers.id_TA_ECDSA_SHA_256); ++ // END android-removed + } + } + } +diff -Naur bcprov-jdk15on-147.orig/org/bouncycastle/jcajce/provider/asymmetric/RSA.java bcprov-jdk15on-147/org/bouncycastle/jcajce/provider/asymmetric/RSA.java +--- bcprov-jdk15on-147.orig/org/bouncycastle/jcajce/provider/asymmetric/RSA.java 2012-03-22 15:11:48.000000000 +0000 ++++ bcprov-jdk15on-147/org/bouncycastle/jcajce/provider/asymmetric/RSA.java 2012-09-11 00:12:44.000000000 +0000 @@ -3,7 +3,9 @@ + import org.bouncycastle.asn1.ASN1ObjectIdentifier; + import org.bouncycastle.asn1.oiw.OIWObjectIdentifiers; + import org.bouncycastle.asn1.pkcs.PKCSObjectIdentifiers; +-import org.bouncycastle.asn1.teletrust.TeleTrusTObjectIdentifiers; ++// BEGIN android-removed ++// import org.bouncycastle.asn1.teletrust.TeleTrusTObjectIdentifiers; ++// END android-removed + import org.bouncycastle.asn1.x509.X509ObjectIdentifiers; + import org.bouncycastle.jcajce.provider.asymmetric.rsa.KeyFactorySpi; + import org.bouncycastle.jcajce.provider.config.ConfigurableProvider; +@@ -24,41 +26,49 @@ + public void configure(ConfigurableProvider provider) + { + provider.addAlgorithm("AlgorithmParameters.OAEP", PREFIX + "AlgorithmParametersSpi$OAEP"); +- provider.addAlgorithm("AlgorithmParameters.PSS", PREFIX + "AlgorithmParametersSpi$PSS"); +- +- provider.addAlgorithm("Alg.Alias.AlgorithmParameters.RSAPSS", "PSS"); +- provider.addAlgorithm("Alg.Alias.AlgorithmParameters.RSASSA-PSS", "PSS"); +- +- provider.addAlgorithm("Alg.Alias.AlgorithmParameters.SHA224withRSA/PSS", "PSS"); +- provider.addAlgorithm("Alg.Alias.AlgorithmParameters.SHA256withRSA/PSS", "PSS"); +- provider.addAlgorithm("Alg.Alias.AlgorithmParameters.SHA384withRSA/PSS", "PSS"); +- provider.addAlgorithm("Alg.Alias.AlgorithmParameters.SHA512withRSA/PSS", "PSS"); +- +- provider.addAlgorithm("Alg.Alias.AlgorithmParameters.SHA224WITHRSAANDMGF1", "PSS"); +- provider.addAlgorithm("Alg.Alias.AlgorithmParameters.SHA256WITHRSAANDMGF1", "PSS"); +- provider.addAlgorithm("Alg.Alias.AlgorithmParameters.SHA384WITHRSAANDMGF1", "PSS"); +- provider.addAlgorithm("Alg.Alias.AlgorithmParameters.SHA512WITHRSAANDMGF1", "PSS"); +- provider.addAlgorithm("Alg.Alias.AlgorithmParameters.RAWRSAPSS", "PSS"); +- provider.addAlgorithm("Alg.Alias.AlgorithmParameters.NONEWITHRSAPSS", "PSS"); +- provider.addAlgorithm("Alg.Alias.AlgorithmParameters.NONEWITHRSASSA-PSS", "PSS"); +- provider.addAlgorithm("Alg.Alias.AlgorithmParameters.NONEWITHRSAANDMGF1", "PSS"); ++ // BEGIN android-removed ++ // provider.addAlgorithm("AlgorithmParameters.PSS", PREFIX + "AlgorithmParametersSpi$PSS"); ++ // ++ // provider.addAlgorithm("Alg.Alias.AlgorithmParameters.RSAPSS", "PSS"); ++ // provider.addAlgorithm("Alg.Alias.AlgorithmParameters.RSASSA-PSS", "PSS"); ++ // ++ // provider.addAlgorithm("Alg.Alias.AlgorithmParameters.SHA224withRSA/PSS", "PSS"); ++ // provider.addAlgorithm("Alg.Alias.AlgorithmParameters.SHA256withRSA/PSS", "PSS"); ++ // provider.addAlgorithm("Alg.Alias.AlgorithmParameters.SHA384withRSA/PSS", "PSS"); ++ // provider.addAlgorithm("Alg.Alias.AlgorithmParameters.SHA512withRSA/PSS", "PSS"); ++ // ++ // provider.addAlgorithm("Alg.Alias.AlgorithmParameters.SHA224WITHRSAANDMGF1", "PSS"); ++ // provider.addAlgorithm("Alg.Alias.AlgorithmParameters.SHA256WITHRSAANDMGF1", "PSS"); ++ // provider.addAlgorithm("Alg.Alias.AlgorithmParameters.SHA384WITHRSAANDMGF1", "PSS"); ++ // provider.addAlgorithm("Alg.Alias.AlgorithmParameters.SHA512WITHRSAANDMGF1", "PSS"); ++ // provider.addAlgorithm("Alg.Alias.AlgorithmParameters.RAWRSAPSS", "PSS"); ++ // provider.addAlgorithm("Alg.Alias.AlgorithmParameters.NONEWITHRSAPSS", "PSS"); ++ // provider.addAlgorithm("Alg.Alias.AlgorithmParameters.NONEWITHRSASSA-PSS", "PSS"); ++ // provider.addAlgorithm("Alg.Alias.AlgorithmParameters.NONEWITHRSAANDMGF1", "PSS"); ++ // END android-removed + + provider.addAlgorithm("Cipher.RSA", PREFIX + "CipherSpi$NoPadding"); +- provider.addAlgorithm("Cipher.RSA/RAW", PREFIX + "CipherSpi$NoPadding"); +- provider.addAlgorithm("Cipher.RSA/PKCS1", PREFIX + "CipherSpi$PKCS1v1_5Padding"); +- provider.addAlgorithm("Cipher.1.2.840.113549.1.1.1", PREFIX + "CipherSpi$PKCS1v1_5Padding"); +- provider.addAlgorithm("Cipher.2.5.8.1.1", PREFIX + "CipherSpi$PKCS1v1_5Padding"); +- provider.addAlgorithm("Cipher.RSA/1", PREFIX + "CipherSpi$PKCS1v1_5Padding_PrivateOnly"); +- provider.addAlgorithm("Cipher.RSA/2", PREFIX + "CipherSpi$PKCS1v1_5Padding_PublicOnly"); +- provider.addAlgorithm("Cipher.RSA/OAEP", PREFIX + "CipherSpi$OAEPPadding"); +- provider.addAlgorithm("Cipher." + PKCSObjectIdentifiers.id_RSAES_OAEP, PREFIX + "CipherSpi$OAEPPadding"); +- provider.addAlgorithm("Cipher.RSA/ISO9796-1", PREFIX + "CipherSpi$ISO9796d1Padding"); ++ // BEGIN android-changed ++ provider.addAlgorithm("Alg.Alias.Cipher.RSA/RAW", "RSA"); ++ // END android-changed ++ // BEGIN android-removed ++ // provider.addAlgorithm("Cipher.RSA/PKCS1", PREFIX + "CipherSpi$PKCS1v1_5Padding"); ++ // provider.addAlgorithm("Cipher.1.2.840.113549.1.1.1", PREFIX + "CipherSpi$PKCS1v1_5Padding"); ++ // provider.addAlgorithm("Cipher.2.5.8.1.1", PREFIX + "CipherSpi$PKCS1v1_5Padding"); ++ // provider.addAlgorithm("Cipher.RSA/1", PREFIX + "CipherSpi$PKCS1v1_5Padding_PrivateOnly"); ++ // provider.addAlgorithm("Cipher.RSA/2", PREFIX + "CipherSpi$PKCS1v1_5Padding_PublicOnly"); ++ // provider.addAlgorithm("Cipher.RSA/OAEP", PREFIX + "CipherSpi$OAEPPadding"); ++ // provider.addAlgorithm("Cipher." + PKCSObjectIdentifiers.id_RSAES_OAEP, PREFIX + "CipherSpi$OAEPPadding"); ++ // provider.addAlgorithm("Cipher.RSA/ISO9796-1", PREFIX + "CipherSpi$ISO9796d1Padding"); ++ // END android-removed + + provider.addAlgorithm("Alg.Alias.Cipher.RSA//RAW", "RSA"); + provider.addAlgorithm("Alg.Alias.Cipher.RSA//NOPADDING", "RSA"); +- provider.addAlgorithm("Alg.Alias.Cipher.RSA//PKCS1PADDING", "RSA/PKCS1"); +- provider.addAlgorithm("Alg.Alias.Cipher.RSA//OAEPPADDING", "RSA/OAEP"); +- provider.addAlgorithm("Alg.Alias.Cipher.RSA//ISO9796-1PADDING", "RSA/ISO9796-1"); ++ // BEGIN android-removed ++ // provider.addAlgorithm("Alg.Alias.Cipher.RSA//PKCS1PADDING", "RSA/PKCS1"); ++ // provider.addAlgorithm("Alg.Alias.Cipher.RSA//OAEPPADDING", "RSA/OAEP"); ++ // provider.addAlgorithm("Alg.Alias.Cipher.RSA//ISO9796-1PADDING", "RSA/ISO9796-1"); ++ // END android-removed + + provider.addAlgorithm("KeyFactory.RSA", PREFIX + "KeyFactorySpi"); + provider.addAlgorithm("KeyPairGenerator.RSA", PREFIX + "KeyPairGeneratorSpi"); +@@ -68,101 +78,111 @@ + registerOid(provider, PKCSObjectIdentifiers.rsaEncryption, "RSA", keyFact); + registerOid(provider, X509ObjectIdentifiers.id_ea_rsa, "RSA", keyFact); + registerOid(provider, PKCSObjectIdentifiers.id_RSAES_OAEP, "RSA", keyFact); +- registerOid(provider, PKCSObjectIdentifiers.id_RSASSA_PSS, "RSA", keyFact); +- +- registerOidAlgorithmParameters(provider, PKCSObjectIdentifiers.rsaEncryption, "RSA"); +- registerOidAlgorithmParameters(provider, X509ObjectIdentifiers.id_ea_rsa, "RSA"); +- registerOidAlgorithmParameters(provider, PKCSObjectIdentifiers.id_RSAES_OAEP, "OAEP"); +- registerOidAlgorithmParameters(provider, PKCSObjectIdentifiers.id_RSASSA_PSS, "PSS"); +- +- +- provider.addAlgorithm("Signature.RSASSA-PSS", PREFIX + "PSSSignatureSpi$PSSwithRSA"); +- provider.addAlgorithm("Signature." + PKCSObjectIdentifiers.id_RSASSA_PSS, PREFIX + "PSSSignatureSpi$PSSwithRSA"); +- provider.addAlgorithm("Signature.OID." + PKCSObjectIdentifiers.id_RSASSA_PSS, PREFIX + "PSSSignatureSpi$PSSwithRSA"); +- +- provider.addAlgorithm("Signature.SHA224withRSA/PSS", PREFIX + "PSSSignatureSpi$SHA224withRSA"); +- provider.addAlgorithm("Signature.SHA256withRSA/PSS", PREFIX + "PSSSignatureSpi$SHA256withRSA"); +- provider.addAlgorithm("Signature.SHA384withRSA/PSS", PREFIX + "PSSSignatureSpi$SHA384withRSA"); +- provider.addAlgorithm("Signature.SHA512withRSA/PSS", PREFIX + "PSSSignatureSpi$SHA512withRSA"); +- +- provider.addAlgorithm("Signature.RSA", PREFIX + "DigestSignatureSpi$noneRSA"); +- provider.addAlgorithm("Signature.RAWRSASSA-PSS", PREFIX + "PSSSignatureSpi$nonePSS"); +- +- provider.addAlgorithm("Alg.Alias.Signature.RAWRSA", "RSA"); +- provider.addAlgorithm("Alg.Alias.Signature.NONEWITHRSA", "RSA"); +- provider.addAlgorithm("Alg.Alias.Signature.RAWRSAPSS", "RAWRSASSA-PSS"); +- provider.addAlgorithm("Alg.Alias.Signature.NONEWITHRSAPSS", "RAWRSASSA-PSS"); +- provider.addAlgorithm("Alg.Alias.Signature.NONEWITHRSASSA-PSS", "RAWRSASSA-PSS"); +- provider.addAlgorithm("Alg.Alias.Signature.NONEWITHRSAANDMGF1", "RAWRSASSA-PSS"); +- provider.addAlgorithm("Alg.Alias.Signature.RSAPSS", "RSASSA-PSS"); +- +- +- provider.addAlgorithm("Alg.Alias.Signature.SHA224withRSAandMGF1", "SHA224withRSA/PSS"); +- provider.addAlgorithm("Alg.Alias.Signature.SHA256withRSAandMGF1", "SHA256withRSA/PSS"); +- provider.addAlgorithm("Alg.Alias.Signature.SHA384withRSAandMGF1", "SHA384withRSA/PSS"); +- provider.addAlgorithm("Alg.Alias.Signature.SHA512withRSAandMGF1", "SHA512withRSA/PSS"); +- provider.addAlgorithm("Alg.Alias.Signature.SHA224WITHRSAANDMGF1", "SHA224withRSA/PSS"); +- provider.addAlgorithm("Alg.Alias.Signature.SHA256WITHRSAANDMGF1", "SHA256withRSA/PSS"); +- provider.addAlgorithm("Alg.Alias.Signature.SHA384WITHRSAANDMGF1", "SHA384withRSA/PSS"); +- provider.addAlgorithm("Alg.Alias.Signature.SHA512WITHRSAANDMGF1", "SHA512withRSA/PSS"); +- +- if (provider.hasAlgorithm("MessageDigest", "MD2")) +- { +- addDigestSignature(provider, "MD2", PREFIX + "DigestSignatureSpi$MD2", PKCSObjectIdentifiers.md2WithRSAEncryption); +- } +- +- if (provider.hasAlgorithm("MessageDigest", "MD2")) +- { +- addDigestSignature(provider, "MD4", PREFIX + "DigestSignatureSpi$MD4", PKCSObjectIdentifiers.md4WithRSAEncryption); +- } +- +- if (provider.hasAlgorithm("MessageDigest", "MD2")) +- { +- addDigestSignature(provider, "MD5", PREFIX + "DigestSignatureSpi$MD5", PKCSObjectIdentifiers.md5WithRSAEncryption); +- provider.addAlgorithm("Signature.MD5withRSA/ISO9796-2", PREFIX + "ISOSignatureSpi$MD5WithRSAEncryption"); +- provider.addAlgorithm("Alg.Alias.Signature.MD5WithRSA/ISO9796-2", "MD5withRSA/ISO9796-2"); +- } ++ // BEGIN android-removed ++ // registerOid(provider, PKCSObjectIdentifiers.id_RSASSA_PSS, "RSA", keyFact); ++ // ++ // registerOidAlgorithmParameters(provider, PKCSObjectIdentifiers.rsaEncryption, "RSA"); ++ // registerOidAlgorithmParameters(provider, X509ObjectIdentifiers.id_ea_rsa, "RSA"); ++ // registerOidAlgorithmParameters(provider, PKCSObjectIdentifiers.id_RSAES_OAEP, "OAEP"); ++ // registerOidAlgorithmParameters(provider, PKCSObjectIdentifiers.id_RSASSA_PSS, "PSS"); ++ // ++ // ++ // provider.addAlgorithm("Signature.RSASSA-PSS", PREFIX + "PSSSignatureSpi$PSSwithRSA"); ++ // provider.addAlgorithm("Signature." + PKCSObjectIdentifiers.id_RSASSA_PSS, PREFIX + "PSSSignatureSpi$PSSwithRSA"); ++ // provider.addAlgorithm("Signature.OID." + PKCSObjectIdentifiers.id_RSASSA_PSS, PREFIX + "PSSSignatureSpi$PSSwithRSA"); ++ // ++ // provider.addAlgorithm("Signature.SHA224withRSA/PSS", PREFIX + "PSSSignatureSpi$SHA224withRSA"); ++ // provider.addAlgorithm("Signature.SHA256withRSA/PSS", PREFIX + "PSSSignatureSpi$SHA256withRSA"); ++ // provider.addAlgorithm("Signature.SHA384withRSA/PSS", PREFIX + "PSSSignatureSpi$SHA384withRSA"); ++ // provider.addAlgorithm("Signature.SHA512withRSA/PSS", PREFIX + "PSSSignatureSpi$SHA512withRSA"); ++ // ++ // provider.addAlgorithm("Signature.RSA", PREFIX + "DigestSignatureSpi$noneRSA"); ++ // provider.addAlgorithm("Signature.RAWRSASSA-PSS", PREFIX + "PSSSignatureSpi$nonePSS"); ++ // ++ // provider.addAlgorithm("Alg.Alias.Signature.RAWRSA", "RSA"); ++ // provider.addAlgorithm("Alg.Alias.Signature.NONEWITHRSA", "RSA"); ++ // provider.addAlgorithm("Alg.Alias.Signature.RAWRSAPSS", "RAWRSASSA-PSS"); ++ // provider.addAlgorithm("Alg.Alias.Signature.NONEWITHRSAPSS", "RAWRSASSA-PSS"); ++ // provider.addAlgorithm("Alg.Alias.Signature.NONEWITHRSASSA-PSS", "RAWRSASSA-PSS"); ++ // provider.addAlgorithm("Alg.Alias.Signature.NONEWITHRSAANDMGF1", "RAWRSASSA-PSS"); ++ // provider.addAlgorithm("Alg.Alias.Signature.RSAPSS", "RSASSA-PSS"); ++ // ++ // ++ // provider.addAlgorithm("Alg.Alias.Signature.SHA224withRSAandMGF1", "SHA224withRSA/PSS"); ++ // provider.addAlgorithm("Alg.Alias.Signature.SHA256withRSAandMGF1", "SHA256withRSA/PSS"); ++ // provider.addAlgorithm("Alg.Alias.Signature.SHA384withRSAandMGF1", "SHA384withRSA/PSS"); ++ // provider.addAlgorithm("Alg.Alias.Signature.SHA512withRSAandMGF1", "SHA512withRSA/PSS"); ++ // provider.addAlgorithm("Alg.Alias.Signature.SHA224WITHRSAANDMGF1", "SHA224withRSA/PSS"); ++ // provider.addAlgorithm("Alg.Alias.Signature.SHA256WITHRSAANDMGF1", "SHA256withRSA/PSS"); ++ // provider.addAlgorithm("Alg.Alias.Signature.SHA384WITHRSAANDMGF1", "SHA384withRSA/PSS"); ++ // provider.addAlgorithm("Alg.Alias.Signature.SHA512WITHRSAANDMGF1", "SHA512withRSA/PSS"); ++ // ++ // if (provider.hasAlgorithm("MessageDigest", "MD2")) ++ // { ++ // addDigestSignature(provider, "MD2", PREFIX + "DigestSignatureSpi$MD2", PKCSObjectIdentifiers.md2WithRSAEncryption); ++ // } ++ // ++ // if (provider.hasAlgorithm("MessageDigest", "MD2")) ++ // { ++ // addDigestSignature(provider, "MD4", PREFIX + "DigestSignatureSpi$MD4", PKCSObjectIdentifiers.md4WithRSAEncryption); ++ // } ++ // ++ // if (provider.hasAlgorithm("MessageDigest", "MD2")) ++ // { ++ // addDigestSignature(provider, "MD5", PREFIX + "DigestSignatureSpi$MD5", PKCSObjectIdentifiers.md5WithRSAEncryption); ++ // provider.addAlgorithm("Signature.MD5withRSA/ISO9796-2", PREFIX + "ISOSignatureSpi$MD5WithRSAEncryption"); ++ // provider.addAlgorithm("Alg.Alias.Signature.MD5WithRSA/ISO9796-2", "MD5withRSA/ISO9796-2"); ++ // } ++ // END android-removed + + if (provider.hasAlgorithm("MessageDigest", "SHA1")) + { +- provider.addAlgorithm("Alg.Alias.AlgorithmParameters.SHA1withRSA/PSS", "PSS"); +- provider.addAlgorithm("Alg.Alias.AlgorithmParameters.SHA1WITHRSAANDMGF1", "PSS"); +- provider.addAlgorithm("Signature.SHA1withRSA/PSS", PREFIX + "PSSSignatureSpi$SHA1withRSA"); +- provider.addAlgorithm("Alg.Alias.Signature.SHA1withRSAandMGF1", "SHA1withRSA/PSS"); +- provider.addAlgorithm("Alg.Alias.Signature.SHA1WITHRSAANDMGF1", "SHA1withRSA/PSS"); ++ // BEGIN android-removed ++ // provider.addAlgorithm("Alg.Alias.AlgorithmParameters.SHA1withRSA/PSS", "PSS"); ++ // provider.addAlgorithm("Alg.Alias.AlgorithmParameters.SHA1WITHRSAANDMGF1", "PSS"); ++ // provider.addAlgorithm("Signature.SHA1withRSA/PSS", PREFIX + "PSSSignatureSpi$SHA1withRSA"); ++ // provider.addAlgorithm("Alg.Alias.Signature.SHA1withRSAandMGF1", "SHA1withRSA/PSS"); ++ // provider.addAlgorithm("Alg.Alias.Signature.SHA1WITHRSAANDMGF1", "SHA1withRSA/PSS"); ++ // END android-removed + + addDigestSignature(provider, "SHA1", PREFIX + "DigestSignatureSpi$SHA1", PKCSObjectIdentifiers.sha1WithRSAEncryption); + +- provider.addAlgorithm("Alg.Alias.Signature.SHA1WithRSA/ISO9796-2", "SHA1withRSA/ISO9796-2"); +- provider.addAlgorithm("Signature.SHA1withRSA/ISO9796-2", PREFIX + "ISOSignatureSpi$SHA1WithRSAEncryption"); ++ // BEGIN android-removed ++ // provider.addAlgorithm("Alg.Alias.Signature.SHA1WithRSA/ISO9796-2", "SHA1withRSA/ISO9796-2"); ++ // provider.addAlgorithm("Signature.SHA1withRSA/ISO9796-2", PREFIX + "ISOSignatureSpi$SHA1WithRSAEncryption"); ++ // END android-removed + provider.addAlgorithm("Alg.Alias.Signature." + OIWObjectIdentifiers.sha1WithRSA, "SHA1WITHRSA"); + provider.addAlgorithm("Alg.Alias.Signature.OID." + OIWObjectIdentifiers.sha1WithRSA, "SHA1WITHRSA"); + } + +- addDigestSignature(provider, "SHA224", PREFIX + "DigestSignatureSpi$SHA224", PKCSObjectIdentifiers.sha224WithRSAEncryption); ++ // BEGIN android-removed ++ // addDigestSignature(provider, "SHA224", PREFIX + "DigestSignatureSpi$SHA224", PKCSObjectIdentifiers.sha224WithRSAEncryption); ++ // END android-removed + addDigestSignature(provider, "SHA256", PREFIX + "DigestSignatureSpi$SHA256", PKCSObjectIdentifiers.sha256WithRSAEncryption); + addDigestSignature(provider, "SHA384", PREFIX + "DigestSignatureSpi$SHA384", PKCSObjectIdentifiers.sha384WithRSAEncryption); + addDigestSignature(provider, "SHA512", PREFIX + "DigestSignatureSpi$SHA512", PKCSObjectIdentifiers.sha512WithRSAEncryption); + +- if (provider.hasAlgorithm("MessageDigest", "RIPEMD128")) +- { +- addDigestSignature(provider, "RIPEMD128", PREFIX + "DigestSignatureSpi$RIPEMD128", TeleTrusTObjectIdentifiers.rsaSignatureWithripemd128); +- addDigestSignature(provider, "RMD128", PREFIX + "DigestSignatureSpi$RIPEMD128", null); +- } +- +- if (provider.hasAlgorithm("MessageDigest", "RIPEMD160")) +- { +- addDigestSignature(provider, "RIPEMD160", PREFIX + "DigestSignatureSpi$RIPEMD160", TeleTrusTObjectIdentifiers.rsaSignatureWithripemd160); +- addDigestSignature(provider, "RMD160", PREFIX + "DigestSignatureSpi$RIPEMD160", null); +- provider.addAlgorithm("Alg.Alias.Signature.RIPEMD160WithRSA/ISO9796-2", "RIPEMD160withRSA/ISO9796-2"); +- provider.addAlgorithm("Signature.RIPEMD160withRSA/ISO9796-2", PREFIX + "ISOSignatureSpi$RIPEMD160WithRSAEncryption"); +- } +- +- if (provider.hasAlgorithm("MessageDigest", "RIPEMD256")) +- { +- addDigestSignature(provider, "RIPEMD256", PREFIX + "DigestSignatureSpi$RIPEMD256", TeleTrusTObjectIdentifiers.rsaSignatureWithripemd256); +- addDigestSignature(provider, "RMD256", PREFIX + "DigestSignatureSpi$RIPEMD256", null); +- } ++ // BEGIN android-removed ++ // if (provider.hasAlgorithm("MessageDigest", "RIPEMD128")) ++ // { ++ // addDigestSignature(provider, "RIPEMD128", PREFIX + "DigestSignatureSpi$RIPEMD128", TeleTrusTObjectIdentifiers.rsaSignatureWithripemd128); ++ // addDigestSignature(provider, "RMD128", PREFIX + "DigestSignatureSpi$RIPEMD128", null); ++ // } ++ // ++ // if (provider.hasAlgorithm("MessageDigest", "RIPEMD160")) ++ // { ++ // addDigestSignature(provider, "RIPEMD160", PREFIX + "DigestSignatureSpi$RIPEMD160", TeleTrusTObjectIdentifiers.rsaSignatureWithripemd160); ++ // addDigestSignature(provider, "RMD160", PREFIX + "DigestSignatureSpi$RIPEMD160", null); ++ // provider.addAlgorithm("Alg.Alias.Signature.RIPEMD160WithRSA/ISO9796-2", "RIPEMD160withRSA/ISO9796-2"); ++ // provider.addAlgorithm("Signature.RIPEMD160withRSA/ISO9796-2", PREFIX + "ISOSignatureSpi$RIPEMD160WithRSAEncryption"); ++ // } ++ // ++ // if (provider.hasAlgorithm("MessageDigest", "RIPEMD256")) ++ // { ++ // addDigestSignature(provider, "RIPEMD256", PREFIX + "DigestSignatureSpi$RIPEMD256", TeleTrusTObjectIdentifiers.rsaSignatureWithripemd256); ++ // addDigestSignature(provider, "RMD256", PREFIX + "DigestSignatureSpi$RIPEMD256", null); ++ // } ++ // END android-removed + } + + private void addDigestSignature( +diff -Naur bcprov-jdk15on-147.orig/org/bouncycastle/jcajce/provider/asymmetric/X509.java bcprov-jdk15on-147/org/bouncycastle/jcajce/provider/asymmetric/X509.java +--- bcprov-jdk15on-147.orig/org/bouncycastle/jcajce/provider/asymmetric/X509.java 2012-03-22 15:11:48.000000000 +0000 ++++ bcprov-jdk15on-147/org/bouncycastle/jcajce/provider/asymmetric/X509.java 2012-09-11 00:12:44.000000000 +0000 +@@ -18,8 +18,10 @@ + + public void configure(ConfigurableProvider provider) + { +- provider.addAlgorithm("KeyFactory.X.509", "org.bouncycastle.jcajce.provider.asymmetric.x509.KeyFactory"); +- provider.addAlgorithm("Alg.Alias.KeyFactory.X509", "X.509"); ++ // BEGIN android-removed ++ // provider.addAlgorithm("KeyFactory.X.509", "org.bouncycastle.jcajce.provider.asymmetric.x509.KeyFactory"); ++ // provider.addAlgorithm("Alg.Alias.KeyFactory.X509", "X.509"); ++ // END android-removed + + // + // certificate factories. +diff -Naur bcprov-jdk15on-147.orig/org/bouncycastle/jcajce/provider/asymmetric/dh/KeyAgreementSpi.java bcprov-jdk15on-147/org/bouncycastle/jcajce/provider/asymmetric/dh/KeyAgreementSpi.java +--- bcprov-jdk15on-147.orig/org/bouncycastle/jcajce/provider/asymmetric/dh/KeyAgreementSpi.java 2012-03-22 15:11:48.000000000 +0000 ++++ bcprov-jdk15on-147/org/bouncycastle/jcajce/provider/asymmetric/dh/KeyAgreementSpi.java 2012-09-11 00:12:44.000000000 +0000 +@@ -35,10 +35,12 @@ + + static + { +- Integer i64 = new Integer(64); +- Integer i192 = new Integer(192); +- Integer i128 = new Integer(128); +- Integer i256 = new Integer(256); ++ // BEGIN android-changed ++ Integer i64 = Integer.valueOf(64); ++ Integer i192 = Integer.valueOf(192); ++ Integer i128 = Integer.valueOf(128); ++ Integer i256 = Integer.valueOf(256); ++ // END android-changed + + algorithms.put("DES", i64); + algorithms.put("DESEDE", i192); +diff -Naur bcprov-jdk15on-147.orig/org/bouncycastle/jcajce/provider/asymmetric/dh/KeyPairGeneratorSpi.java bcprov-jdk15on-147/org/bouncycastle/jcajce/provider/asymmetric/dh/KeyPairGeneratorSpi.java +--- bcprov-jdk15on-147.orig/org/bouncycastle/jcajce/provider/asymmetric/dh/KeyPairGeneratorSpi.java 2012-03-22 15:11:48.000000000 +0000 ++++ bcprov-jdk15on-147/org/bouncycastle/jcajce/provider/asymmetric/dh/KeyPairGeneratorSpi.java 2012-09-11 00:12:44.000000000 +0000 +@@ -63,7 +63,9 @@ + { + if (!initialised) + { +- Integer paramStrength = new Integer(strength); ++ // BEGIN android-changed ++ Integer paramStrength = Integer.valueOf(strength); ++ // END android-changed + + if (params.containsKey(paramStrength)) + { +diff -Naur bcprov-jdk15on-147.orig/org/bouncycastle/jcajce/provider/asymmetric/dsa/DSASigner.java bcprov-jdk15on-147/org/bouncycastle/jcajce/provider/asymmetric/dsa/DSASigner.java +--- bcprov-jdk15on-147.orig/org/bouncycastle/jcajce/provider/asymmetric/dsa/DSASigner.java 2012-03-22 15:11:48.000000000 +0000 ++++ bcprov-jdk15on-147/org/bouncycastle/jcajce/provider/asymmetric/dsa/DSASigner.java 2012-09-11 00:12:44.000000000 +0000 +@@ -23,11 +23,16 @@ + import org.bouncycastle.crypto.DSA; + import org.bouncycastle.crypto.Digest; + import org.bouncycastle.crypto.digests.NullDigest; +-import org.bouncycastle.crypto.digests.SHA1Digest; +-import org.bouncycastle.crypto.digests.SHA224Digest; +-import org.bouncycastle.crypto.digests.SHA256Digest; +-import org.bouncycastle.crypto.digests.SHA384Digest; +-import org.bouncycastle.crypto.digests.SHA512Digest; ++// BEGIN android-added ++import org.bouncycastle.crypto.digests.OpenSSLDigest; ++// END android-added ++// BEGIN android-removed ++// import org.bouncycastle.crypto.digests.SHA1Digest; ++// import org.bouncycastle.crypto.digests.SHA224Digest; ++// import org.bouncycastle.crypto.digests.SHA256Digest; ++// import org.bouncycastle.crypto.digests.SHA384Digest; ++// import org.bouncycastle.crypto.digests.SHA512Digest; ++// END android-removed + import org.bouncycastle.crypto.params.ParametersWithRandom; + + public class DSASigner +@@ -228,45 +233,49 @@ + { + public stdDSA() + { +- super(new SHA1Digest(), new org.bouncycastle.crypto.signers.DSASigner()); ++ // BEGIN android-changed ++ super(new OpenSSLDigest.SHA1(), new org.bouncycastle.crypto.signers.DSASigner()); ++ // END android-changed + } + } + +- static public class dsa224 +- extends DSASigner +- { +- public dsa224() +- { +- super(new SHA224Digest(), new org.bouncycastle.crypto.signers.DSASigner()); +- } +- } +- +- static public class dsa256 +- extends DSASigner +- { +- public dsa256() +- { +- super(new SHA256Digest(), new org.bouncycastle.crypto.signers.DSASigner()); +- } +- } +- +- static public class dsa384 +- extends DSASigner +- { +- public dsa384() +- { +- super(new SHA384Digest(), new org.bouncycastle.crypto.signers.DSASigner()); +- } +- } +- +- static public class dsa512 +- extends DSASigner +- { +- public dsa512() +- { +- super(new SHA512Digest(), new org.bouncycastle.crypto.signers.DSASigner()); +- } +- } ++ // BEGIN android-removed ++ // static public class dsa224 ++ // extends DSASigner ++ // { ++ // public dsa224() ++ // { ++ // super(new SHA224Digest(), new org.bouncycastle.crypto.signers.DSASigner()); ++ // } ++ // } ++ // ++ // static public class dsa256 ++ // extends DSASigner ++ // { ++ // public dsa256() ++ // { ++ // super(new SHA256Digest(), new org.bouncycastle.crypto.signers.DSASigner()); ++ // } ++ // } ++ // ++ // static public class dsa384 ++ // extends DSASigner ++ // { ++ // public dsa384() ++ // { ++ // super(new SHA384Digest(), new org.bouncycastle.crypto.signers.DSASigner()); ++ // } ++ // } ++ // ++ // static public class dsa512 ++ // extends DSASigner ++ // { ++ // public dsa512() ++ // { ++ // super(new SHA512Digest(), new org.bouncycastle.crypto.signers.DSASigner()); ++ // } ++ // } ++ // END android-removed + + static public class noneDSA + extends DSASigner +diff -Naur bcprov-jdk15on-147.orig/org/bouncycastle/jcajce/provider/asymmetric/ec/BCECPrivateKey.java bcprov-jdk15on-147/org/bouncycastle/jcajce/provider/asymmetric/ec/BCECPrivateKey.java +--- bcprov-jdk15on-147.orig/org/bouncycastle/jcajce/provider/asymmetric/ec/BCECPrivateKey.java 2012-03-22 15:11:48.000000000 +0000 ++++ bcprov-jdk15on-147/org/bouncycastle/jcajce/provider/asymmetric/ec/BCECPrivateKey.java 2012-09-11 00:12:44.000000000 +0000 +@@ -20,7 +20,9 @@ + import org.bouncycastle.asn1.DERNull; import org.bouncycastle.asn1.DERObjectIdentifier; + import org.bouncycastle.asn1.cryptopro.CryptoProObjectIdentifiers; +-import org.bouncycastle.asn1.cryptopro.ECGOST3410NamedCurves; ++// BEGIN android-removed ++// import org.bouncycastle.asn1.cryptopro.ECGOST3410NamedCurves; ++// END android-removed + import org.bouncycastle.asn1.pkcs.PrivateKeyInfo; + import org.bouncycastle.asn1.x509.AlgorithmIdentifier; + import org.bouncycastle.asn1.x509.SubjectPublicKeyInfo; +@@ -222,21 +224,23 @@ + ASN1ObjectIdentifier oid = ASN1ObjectIdentifier.getInstance(params.getParameters()); + X9ECParameters ecP = ECUtil.getNamedCurveByOid(oid); + +- if (ecP == null) // GOST Curve +- { +- ECDomainParameters gParam = ECGOST3410NamedCurves.getByOID(oid); +- EllipticCurve ellipticCurve = EC5Util.convertCurve(gParam.getCurve(), gParam.getSeed()); +- +- ecSpec = new ECNamedCurveSpec( +- ECGOST3410NamedCurves.getName(oid), +- ellipticCurve, +- new ECPoint( +- gParam.getG().getX().toBigInteger(), +- gParam.getG().getY().toBigInteger()), +- gParam.getN(), +- gParam.getH()); +- } +- else ++ // BEGIN android-removed ++ // if (ecP == null) // GOST Curve ++ // { ++ // ECDomainParameters gParam = ECGOST3410NamedCurves.getByOID(oid); ++ // EllipticCurve ellipticCurve = EC5Util.convertCurve(gParam.getCurve(), gParam.getSeed()); ++ // ++ // ecSpec = new ECNamedCurveSpec( ++ // ECGOST3410NamedCurves.getName(oid), ++ // ellipticCurve, ++ // new ECPoint( ++ // gParam.getG().getX().toBigInteger(), ++ // gParam.getG().getY().toBigInteger()), ++ // gParam.getN(), ++ // gParam.getH()); ++ // } ++ // else ++ // END android-removed + { + EllipticCurve ellipticCurve = EC5Util.convertCurve(ecP.getCurve(), ecP.getSeed()); + +diff -Naur bcprov-jdk15on-147.orig/org/bouncycastle/jcajce/provider/asymmetric/ec/ECUtil.java bcprov-jdk15on-147/org/bouncycastle/jcajce/provider/asymmetric/ec/ECUtil.java +--- bcprov-jdk15on-147.orig/org/bouncycastle/jcajce/provider/asymmetric/ec/ECUtil.java 2012-03-22 15:11:48.000000000 +0000 ++++ bcprov-jdk15on-147/org/bouncycastle/jcajce/provider/asymmetric/ec/ECUtil.java 2012-09-11 00:12:44.000000000 +0000 +@@ -5,10 +5,14 @@ + import java.security.PublicKey; + + import org.bouncycastle.asn1.ASN1ObjectIdentifier; +-import org.bouncycastle.asn1.cryptopro.ECGOST3410NamedCurves; ++// BEGIN android-removed ++// import org.bouncycastle.asn1.cryptopro.ECGOST3410NamedCurves; ++// END android-removed + import org.bouncycastle.asn1.nist.NISTNamedCurves; + import org.bouncycastle.asn1.sec.SECNamedCurves; +-import org.bouncycastle.asn1.teletrust.TeleTrusTNamedCurves; ++// BEGIN android-removed ++// import org.bouncycastle.asn1.teletrust.TeleTrusTNamedCurves; ++// END android-removed + import org.bouncycastle.asn1.x9.X962NamedCurves; + import org.bouncycastle.asn1.x9.X9ECParameters; + import org.bouncycastle.crypto.params.AsymmetricKeyParameter; +@@ -166,14 +170,16 @@ + { + oid = NISTNamedCurves.getOID(name); + } +- if (oid == null) +- { +- oid = TeleTrusTNamedCurves.getOID(name); +- } +- if (oid == null) +- { +- oid = ECGOST3410NamedCurves.getOID(name); +- } ++ // BEGIN android-removed ++ // if (oid == null) ++ // { ++ // oid = TeleTrusTNamedCurves.getOID(name); ++ // } ++ // if (oid == null) ++ // { ++ // oid = ECGOST3410NamedCurves.getOID(name); ++ // } ++ // END android-removed + } + + return oid; +@@ -191,10 +197,12 @@ + { + params = NISTNamedCurves.getByOID(oid); + } +- if (params == null) +- { +- params = TeleTrusTNamedCurves.getByOID(oid); +- } ++ // BEGIN android-removed ++ // if (params == null) ++ // { ++ // params = TeleTrusTNamedCurves.getByOID(oid); ++ // } ++ // END android-removed + } + + return params; +@@ -212,14 +220,16 @@ + { + name = NISTNamedCurves.getName(oid); + } +- if (name == null) +- { +- name = TeleTrusTNamedCurves.getName(oid); +- } +- if (name == null) +- { +- name = ECGOST3410NamedCurves.getName(oid); +- } ++ // BEGIN android-removed ++ // if (name == null) ++ // { ++ // name = TeleTrusTNamedCurves.getName(oid); ++ // } ++ // if (name == null) ++ // { ++ // name = ECGOST3410NamedCurves.getName(oid); ++ // } ++ // END android-removed + } + + return name; +diff -Naur bcprov-jdk15on-147.orig/org/bouncycastle/jcajce/provider/asymmetric/ec/KeyAgreementSpi.java bcprov-jdk15on-147/org/bouncycastle/jcajce/provider/asymmetric/ec/KeyAgreementSpi.java +--- bcprov-jdk15on-147.orig/org/bouncycastle/jcajce/provider/asymmetric/ec/KeyAgreementSpi.java 2012-03-22 15:11:48.000000000 +0000 ++++ bcprov-jdk15on-147/org/bouncycastle/jcajce/provider/asymmetric/ec/KeyAgreementSpi.java 2012-09-11 00:12:44.000000000 +0000 +@@ -23,20 +23,26 @@ + import org.bouncycastle.crypto.CipherParameters; + import org.bouncycastle.crypto.DerivationFunction; + import org.bouncycastle.crypto.agreement.ECDHBasicAgreement; +-import org.bouncycastle.crypto.agreement.ECDHCBasicAgreement; +-import org.bouncycastle.crypto.agreement.ECMQVBasicAgreement; +-import org.bouncycastle.crypto.agreement.kdf.DHKDFParameters; +-import org.bouncycastle.crypto.agreement.kdf.ECDHKEKGenerator; ++// BEGIN android-removed ++// import org.bouncycastle.crypto.agreement.ECDHCBasicAgreement; ++// import org.bouncycastle.crypto.agreement.ECMQVBasicAgreement; ++// import org.bouncycastle.crypto.agreement.kdf.DHKDFParameters; ++// import org.bouncycastle.crypto.agreement.kdf.ECDHKEKGenerator; ++// END android-removed + import org.bouncycastle.crypto.digests.SHA1Digest; + import org.bouncycastle.crypto.params.ECDomainParameters; + import org.bouncycastle.crypto.params.ECPrivateKeyParameters; + import org.bouncycastle.crypto.params.ECPublicKeyParameters; +-import org.bouncycastle.crypto.params.MQVPrivateParameters; +-import org.bouncycastle.crypto.params.MQVPublicParameters; ++// BEGIN android-removed ++// import org.bouncycastle.crypto.params.MQVPrivateParameters; ++// import org.bouncycastle.crypto.params.MQVPublicParameters; ++// END android-removed + import org.bouncycastle.jce.interfaces.ECPrivateKey; + import org.bouncycastle.jce.interfaces.ECPublicKey; +-import org.bouncycastle.jce.interfaces.MQVPrivateKey; +-import org.bouncycastle.jce.interfaces.MQVPublicKey; ++// BEGIN android-removed ++// import org.bouncycastle.jce.interfaces.MQVPrivateKey; ++// import org.bouncycastle.jce.interfaces.MQVPublicKey; ++// END android-removed + + /** + * Diffie-Hellman key agreement using elliptic curve keys, ala IEEE P1363 +@@ -52,9 +58,11 @@ + + static + { +- Integer i128 = new Integer(128); +- Integer i192 = new Integer(192); +- Integer i256 = new Integer(256); ++ // BEGIN android-changed ++ Integer i128 = Integer.valueOf(128); ++ Integer i192 = Integer.valueOf(192); ++ Integer i256 = Integer.valueOf(256); ++ // END android-changed + + algorithms.put(NISTObjectIdentifiers.id_aes128_CBC.getId(), i128); + algorithms.put(NISTObjectIdentifiers.id_aes192_CBC.getId(), i192); +@@ -69,7 +77,9 @@ + private BigInteger result; + private ECDomainParameters parameters; + private BasicAgreement agreement; +- private DerivationFunction kdf; ++ // BEGIN android-removed ++ // private DerivationFunction kdf; ++ // END android-removed + + private byte[] bigIntToBytes( + BigInteger r) +@@ -84,7 +94,9 @@ + { + this.kaAlgorithm = kaAlgorithm; + this.agreement = agreement; +- this.kdf = kdf; ++ // BEGIN android-removed ++ // this.kdf = kdf; ++ // END android-removed + } + + protected Key engineDoPhase( +@@ -103,25 +115,27 @@ + } + + CipherParameters pubKey; +- if (agreement instanceof ECMQVBasicAgreement) +- { +- if (!(key instanceof MQVPublicKey)) +- { +- throw new InvalidKeyException(kaAlgorithm + " key agreement requires " +- + getSimpleName(MQVPublicKey.class) + " for doPhase"); +- } +- +- MQVPublicKey mqvPubKey = (MQVPublicKey)key; +- ECPublicKeyParameters staticKey = (ECPublicKeyParameters) +- ECUtil.generatePublicKeyParameter(mqvPubKey.getStaticKey()); +- ECPublicKeyParameters ephemKey = (ECPublicKeyParameters) +- ECUtil.generatePublicKeyParameter(mqvPubKey.getEphemeralKey()); +- +- pubKey = new MQVPublicParameters(staticKey, ephemKey); +- +- // TODO Validate that all the keys are using the same parameters? +- } +- else ++ // BEGIN android-removed ++ // if (agreement instanceof ECMQVBasicAgreement) ++ // { ++ // if (!(key instanceof MQVPublicKey)) ++ // { ++ // throw new InvalidKeyException(kaAlgorithm + " key agreement requires " ++ // + getSimpleName(MQVPublicKey.class) + " for doPhase"); ++ // } ++ // ++ // MQVPublicKey mqvPubKey = (MQVPublicKey)key; ++ // ECPublicKeyParameters staticKey = (ECPublicKeyParameters) ++ // ECUtil.generatePublicKeyParameter(mqvPubKey.getStaticKey()); ++ // ECPublicKeyParameters ephemKey = (ECPublicKeyParameters) ++ // ECUtil.generatePublicKeyParameter(mqvPubKey.getEphemeralKey()); ++ // ++ // pubKey = new MQVPublicParameters(staticKey, ephemKey); ++ // ++ // // TODO Validate that all the keys are using the same parameters? ++ // } ++ // else ++ // END android-removed + { + if (!(key instanceof ECPublicKey)) + { +@@ -142,11 +156,13 @@ + protected byte[] engineGenerateSecret() + throws IllegalStateException + { +- if (kdf != null) +- { +- throw new UnsupportedOperationException( +- "KDF can only be used when algorithm is known"); +- } ++ // BEGIN android-removed ++ // if (kdf != null) ++ // { ++ // throw new UnsupportedOperationException( ++ // "KDF can only be used when algorithm is known"); ++ // } ++ // END android-removed + + return bigIntToBytes(result); + } +@@ -174,23 +190,25 @@ + { + byte[] secret = bigIntToBytes(result); + +- if (kdf != null) +- { +- if (!algorithms.containsKey(algorithm)) +- { +- throw new NoSuchAlgorithmException("unknown algorithm encountered: " + algorithm); +- } +- +- int keySize = ((Integer)algorithms.get(algorithm)).intValue(); +- +- DHKDFParameters params = new DHKDFParameters(new DERObjectIdentifier(algorithm), keySize, secret); +- +- byte[] keyBytes = new byte[keySize / 8]; +- kdf.init(params); +- kdf.generateBytes(keyBytes, 0, keyBytes.length); +- secret = keyBytes; +- } +- else ++ // BEGIN android-removed ++ // if (kdf != null) ++ // { ++ // if (!algorithms.containsKey(algorithm)) ++ // { ++ // throw new NoSuchAlgorithmException("unknown algorithm encountered: " + algorithm); ++ // } ++ // ++ // int keySize = ((Integer)algorithms.get(algorithm)).intValue(); ++ // ++ // DHKDFParameters params = new DHKDFParameters(new DERObjectIdentifier(algorithm), keySize, secret); ++ // ++ // byte[] keyBytes = new byte[keySize / 8]; ++ // kdf.init(params); ++ // kdf.generateBytes(keyBytes, 0, keyBytes.length); ++ // secret = keyBytes; ++ // } ++ // else ++ // END android-removed + { + // TODO Should we be ensuring the key is the right length? + } +@@ -218,35 +236,37 @@ + private void initFromKey(Key key) + throws InvalidKeyException + { +- if (agreement instanceof ECMQVBasicAgreement) +- { +- if (!(key instanceof MQVPrivateKey)) +- { +- throw new InvalidKeyException(kaAlgorithm + " key agreement requires " +- + getSimpleName(MQVPrivateKey.class) + " for initialisation"); +- } +- +- MQVPrivateKey mqvPrivKey = (MQVPrivateKey)key; +- ECPrivateKeyParameters staticPrivKey = (ECPrivateKeyParameters) +- ECUtil.generatePrivateKeyParameter(mqvPrivKey.getStaticPrivateKey()); +- ECPrivateKeyParameters ephemPrivKey = (ECPrivateKeyParameters) +- ECUtil.generatePrivateKeyParameter(mqvPrivKey.getEphemeralPrivateKey()); +- +- ECPublicKeyParameters ephemPubKey = null; +- if (mqvPrivKey.getEphemeralPublicKey() != null) +- { +- ephemPubKey = (ECPublicKeyParameters) +- ECUtil.generatePublicKeyParameter(mqvPrivKey.getEphemeralPublicKey()); +- } +- +- MQVPrivateParameters localParams = new MQVPrivateParameters(staticPrivKey, ephemPrivKey, ephemPubKey); +- this.parameters = staticPrivKey.getParameters(); +- +- // TODO Validate that all the keys are using the same parameters? +- +- agreement.init(localParams); +- } +- else ++ // BEGIN android-removed ++ // if (agreement instanceof ECMQVBasicAgreement) ++ // { ++ // if (!(key instanceof MQVPrivateKey)) ++ // { ++ // throw new InvalidKeyException(kaAlgorithm + " key agreement requires " ++ // + getSimpleName(MQVPrivateKey.class) + " for initialisation"); ++ // } ++ // ++ // MQVPrivateKey mqvPrivKey = (MQVPrivateKey)key; ++ // ECPrivateKeyParameters staticPrivKey = (ECPrivateKeyParameters) ++ // ECUtil.generatePrivateKeyParameter(mqvPrivKey.getStaticPrivateKey()); ++ // ECPrivateKeyParameters ephemPrivKey = (ECPrivateKeyParameters) ++ // ECUtil.generatePrivateKeyParameter(mqvPrivKey.getEphemeralPrivateKey()); ++ // ++ // ECPublicKeyParameters ephemPubKey = null; ++ // if (mqvPrivKey.getEphemeralPublicKey() != null) ++ // { ++ // ephemPubKey = (ECPublicKeyParameters) ++ // ECUtil.generatePublicKeyParameter(mqvPrivKey.getEphemeralPublicKey()); ++ // } ++ // ++ // MQVPrivateParameters localParams = new MQVPrivateParameters(staticPrivKey, ephemPrivKey, ephemPubKey); ++ // this.parameters = staticPrivKey.getParameters(); ++ // ++ // // TODO Validate that all the keys are using the same parameters? ++ // ++ // agreement.init(localParams); ++ // } ++ // else ++ // END android-removed + { + if (!(key instanceof ECPrivateKey)) + { +@@ -277,39 +297,41 @@ + } + } + +- public static class DHC +- extends KeyAgreementSpi +- { +- public DHC() +- { +- super("ECDHC", new ECDHCBasicAgreement(), null); +- } +- } +- +- public static class MQV +- extends KeyAgreementSpi +- { +- public MQV() +- { +- super("ECMQV", new ECMQVBasicAgreement(), null); +- } +- } +- +- public static class DHwithSHA1KDF +- extends KeyAgreementSpi +- { +- public DHwithSHA1KDF() +- { +- super("ECDHwithSHA1KDF", new ECDHBasicAgreement(), new ECDHKEKGenerator(new SHA1Digest())); +- } +- } +- +- public static class MQVwithSHA1KDF +- extends KeyAgreementSpi +- { +- public MQVwithSHA1KDF() +- { +- super("ECMQVwithSHA1KDF", new ECMQVBasicAgreement(), new ECDHKEKGenerator(new SHA1Digest())); +- } +- } ++ // BEGIN android-removed ++ // public static class DHC ++ // extends KeyAgreementSpi ++ // { ++ // public DHC() ++ // { ++ // super("ECDHC", new ECDHCBasicAgreement(), null); ++ // } ++ // } ++ // ++ // public static class MQV ++ // extends KeyAgreementSpi ++ // { ++ // public MQV() ++ // { ++ // super("ECMQV", new ECMQVBasicAgreement(), null); ++ // } ++ // } ++ // ++ // public static class DHwithSHA1KDF ++ // extends KeyAgreementSpi ++ // { ++ // public DHwithSHA1KDF() ++ // { ++ // super("ECDHwithSHA1KDF", new ECDHBasicAgreement(), new ECDHKEKGenerator(new SHA1Digest())); ++ // } ++ // } ++ // ++ // public static class MQVwithSHA1KDF ++ // extends KeyAgreementSpi ++ // { ++ // public MQVwithSHA1KDF() ++ // { ++ // super("ECMQVwithSHA1KDF", new ECMQVBasicAgreement(), new ECDHKEKGenerator(new SHA1Digest())); ++ // } ++ // } ++ // END android-removed + } +diff -Naur bcprov-jdk15on-147.orig/org/bouncycastle/jcajce/provider/asymmetric/ec/KeyFactorySpi.java bcprov-jdk15on-147/org/bouncycastle/jcajce/provider/asymmetric/ec/KeyFactorySpi.java +--- bcprov-jdk15on-147.orig/org/bouncycastle/jcajce/provider/asymmetric/ec/KeyFactorySpi.java 2012-03-22 15:11:48.000000000 +0000 ++++ bcprov-jdk15on-147/org/bouncycastle/jcajce/provider/asymmetric/ec/KeyFactorySpi.java 2012-09-11 00:12:44.000000000 +0000 +@@ -200,14 +200,16 @@ + } + } + +- public static class ECGOST3410 +- extends KeyFactorySpi +- { +- public ECGOST3410() +- { +- super("ECGOST3410", BouncyCastleProvider.CONFIGURATION); +- } +- } ++ // BEGIN android-removed ++ // public static class ECGOST3410 ++ // extends KeyFactorySpi ++ // { ++ // public ECGOST3410() ++ // { ++ // super("ECGOST3410", BouncyCastleProvider.CONFIGURATION); ++ // } ++ // } ++ // END android-removed + + public static class ECDH + extends KeyFactorySpi +diff -Naur bcprov-jdk15on-147.orig/org/bouncycastle/jcajce/provider/asymmetric/ec/KeyPairGeneratorSpi.java bcprov-jdk15on-147/org/bouncycastle/jcajce/provider/asymmetric/ec/KeyPairGeneratorSpi.java +--- bcprov-jdk15on-147.orig/org/bouncycastle/jcajce/provider/asymmetric/ec/KeyPairGeneratorSpi.java 2012-03-22 15:11:48.000000000 +0000 ++++ bcprov-jdk15on-147/org/bouncycastle/jcajce/provider/asymmetric/ec/KeyPairGeneratorSpi.java 2012-09-11 00:12:44.000000000 +0000 +@@ -12,7 +12,9 @@ + import org.bouncycastle.asn1.ASN1ObjectIdentifier; + import org.bouncycastle.asn1.nist.NISTNamedCurves; + import org.bouncycastle.asn1.sec.SECNamedCurves; +-import org.bouncycastle.asn1.teletrust.TeleTrusTNamedCurves; ++// BEGIN android-removed ++// import org.bouncycastle.asn1.teletrust.TeleTrusTNamedCurves; ++// END android-removed + import org.bouncycastle.asn1.x9.X962NamedCurves; + import org.bouncycastle.asn1.x9.X9ECParameters; + import org.bouncycastle.crypto.AsymmetricCipherKeyPair; +@@ -55,13 +57,15 @@ + static { + ecParameters = new Hashtable(); + +- ecParameters.put(new Integer(192), new ECGenParameterSpec("prime192v1")); // a.k.a P-192 +- ecParameters.put(new Integer(239), new ECGenParameterSpec("prime239v1")); +- ecParameters.put(new Integer(256), new ECGenParameterSpec("prime256v1")); // a.k.a P-256 +- +- ecParameters.put(new Integer(224), new ECGenParameterSpec("P-224")); +- ecParameters.put(new Integer(384), new ECGenParameterSpec("P-384")); +- ecParameters.put(new Integer(521), new ECGenParameterSpec("P-521")); ++ // BEGIN android-changed ++ ecParameters.put(Integer.valueOf(192), new ECGenParameterSpec("prime192v1")); // a.k.a P-192 ++ ecParameters.put(Integer.valueOf(239), new ECGenParameterSpec("prime239v1")); ++ ecParameters.put(Integer.valueOf(256), new ECGenParameterSpec("prime256v1")); // a.k.a P-256 ++ ++ ecParameters.put(Integer.valueOf(224), new ECGenParameterSpec("P-224")); ++ ecParameters.put(Integer.valueOf(384), new ECGenParameterSpec("P-384")); ++ ecParameters.put(Integer.valueOf(521), new ECGenParameterSpec("P-521")); ++ // END android-changed + } + + public EC() +@@ -85,8 +89,16 @@ + SecureRandom random) + { + this.strength = strength; ++ // BEGIN android-added ++ if (random != null) { ++ // END android-added + this.random = random; +- ECGenParameterSpec ecParams = (ECGenParameterSpec)ecParameters.get(new Integer(strength)); ++ // BEGIN android-added ++ } ++ // END android-added ++ // BEGIN android-changed ++ ECGenParameterSpec ecParams = (ECGenParameterSpec)ecParameters.get(Integer.valueOf(strength)); ++ // END android-changed + + if (ecParams != null) + { +@@ -110,6 +122,11 @@ + SecureRandom random) + throws InvalidAlgorithmParameterException + { ++ // BEGIN android-added ++ if (random == null) { ++ random = this.random; ++ } ++ // END android-added + if (params instanceof ECParameterSpec) + { + ECParameterSpec p = (ECParameterSpec)params; +@@ -154,10 +171,12 @@ + { + ecP = NISTNamedCurves.getByName(curveName); + } +- if (ecP == null) +- { +- ecP = TeleTrusTNamedCurves.getByName(curveName); +- } ++ // BEGIN android-removed ++ // if (ecP == null) ++ // { ++ // ecP = TeleTrusTNamedCurves.getByName(curveName); ++ // } ++ // END android-removed + if (ecP == null) + { + // See if it's actually an OID string (SunJSSE ServerHandshaker setupEphemeralECDHKeys bug) +@@ -173,10 +192,12 @@ + { + ecP = NISTNamedCurves.getByOID(oid); + } +- if (ecP == null) +- { +- ecP = TeleTrusTNamedCurves.getByOID(oid); +- } ++ // BEGIN android-removed ++ // if (ecP == null) ++ // { ++ // ecP = TeleTrusTNamedCurves.getByOID(oid); ++ // } ++ // END android-removed + if (ecP == null) + { + throw new InvalidAlgorithmParameterException("unknown curve OID: " + curveName); +@@ -231,7 +252,15 @@ + { + if (!initialised) + { +- throw new IllegalStateException("EC Key Pair Generator not initialised"); ++ // BEGIN android-removed ++ // throw new IllegalStateException("EC Key Pair Generator not initialised"); ++ // END android-removed ++ // BEGIN android-added ++ /* ++ * KeyPairGenerator documentation says that a default initialization must be provided ++ */ ++ initialize(192, random); ++ // END android-added + } + + AsymmetricCipherKeyPair pair = engine.generateKeyPair(); +diff -Naur bcprov-jdk15on-147.orig/org/bouncycastle/jcajce/provider/asymmetric/ec/SignatureSpi.java bcprov-jdk15on-147/org/bouncycastle/jcajce/provider/asymmetric/ec/SignatureSpi.java +--- bcprov-jdk15on-147.orig/org/bouncycastle/jcajce/provider/asymmetric/ec/SignatureSpi.java 2012-03-22 15:11:48.000000000 +0000 ++++ bcprov-jdk15on-147/org/bouncycastle/jcajce/provider/asymmetric/ec/SignatureSpi.java 2012-09-11 00:12:44.000000000 +0000 +@@ -18,15 +18,22 @@ + import org.bouncycastle.crypto.DSA; + import org.bouncycastle.crypto.Digest; + import org.bouncycastle.crypto.digests.NullDigest; +-import org.bouncycastle.crypto.digests.RIPEMD160Digest; +-import org.bouncycastle.crypto.digests.SHA1Digest; +-import org.bouncycastle.crypto.digests.SHA224Digest; +-import org.bouncycastle.crypto.digests.SHA256Digest; +-import org.bouncycastle.crypto.digests.SHA384Digest; +-import org.bouncycastle.crypto.digests.SHA512Digest; ++// BEGIN android-added ++import org.bouncycastle.crypto.digests.OpenSSLDigest; ++// END android-added ++// BEGIN android-removed ++// import org.bouncycastle.crypto.digests.RIPEMD160Digest; ++// import org.bouncycastle.crypto.digests.SHA1Digest; ++// import org.bouncycastle.crypto.digests.SHA224Digest; ++// import org.bouncycastle.crypto.digests.SHA256Digest; ++// import org.bouncycastle.crypto.digests.SHA384Digest; ++// import org.bouncycastle.crypto.digests.SHA512Digest; ++// END android-removed + import org.bouncycastle.crypto.params.ParametersWithRandom; + import org.bouncycastle.crypto.signers.ECDSASigner; +-import org.bouncycastle.crypto.signers.ECNRSigner; ++// BEGIN android-removed ++// import org.bouncycastle.crypto.signers.ECNRSigner; ++// END android-removed + import org.bouncycastle.jcajce.provider.asymmetric.util.DSABase; + import org.bouncycastle.jcajce.provider.asymmetric.util.DSAEncoder; + import org.bouncycastle.jce.interfaces.ECKey; +@@ -108,7 +115,9 @@ + { + public ecDSA() + { +- super(new SHA1Digest(), new ECDSASigner(), new StdDSAEncoder()); ++ // BEGIN android-changed ++ super(new OpenSSLDigest.SHA1(), new ECDSASigner(), new StdDSAEncoder()); ++ // END android-changed + } + } + +@@ -121,21 +130,25 @@ + } + } + +- static public class ecDSA224 +- extends SignatureSpi +- { +- public ecDSA224() +- { +- super(new SHA224Digest(), new ECDSASigner(), new StdDSAEncoder()); +- } +- } ++ // BEGIN android-removed ++ // static public class ecDSA224 ++ // extends SignatureSpi ++ // { ++ // public ecDSA224() ++ // { ++ // super(new SHA224Digest(), new ECDSASigner(), new StdDSAEncoder()); ++ // } ++ // } ++ // END android-removed + + static public class ecDSA256 + extends SignatureSpi + { + public ecDSA256() + { +- super(new SHA256Digest(), new ECDSASigner(), new StdDSAEncoder()); ++ // BEGIN android-changed ++ super(new OpenSSLDigest.SHA256(), new ECDSASigner(), new StdDSAEncoder()); ++ // END android-changed + } + } + +@@ -144,7 +157,9 @@ + { + public ecDSA384() + { +- super(new SHA384Digest(), new ECDSASigner(), new StdDSAEncoder()); ++ // BEGIN android-changed ++ super(new OpenSSLDigest.SHA384(), new ECDSASigner(), new StdDSAEncoder()); ++ // END android-changed + } + } + +@@ -153,90 +168,94 @@ + { + public ecDSA512() + { +- super(new SHA512Digest(), new ECDSASigner(), new StdDSAEncoder()); +- } +- } +- +- static public class ecDSARipeMD160 +- extends SignatureSpi +- { +- public ecDSARipeMD160() +- { +- super(new RIPEMD160Digest(), new ECDSASigner(), new StdDSAEncoder()); +- } +- } +- +- static public class ecNR +- extends SignatureSpi +- { +- public ecNR() +- { +- super(new SHA1Digest(), new ECNRSigner(), new StdDSAEncoder()); +- } +- } +- +- static public class ecNR224 +- extends SignatureSpi +- { +- public ecNR224() +- { +- super(new SHA224Digest(), new ECNRSigner(), new StdDSAEncoder()); +- } +- } +- +- static public class ecNR256 +- extends SignatureSpi +- { +- public ecNR256() +- { +- super(new SHA256Digest(), new ECNRSigner(), new StdDSAEncoder()); +- } +- } +- +- static public class ecNR384 +- extends SignatureSpi +- { +- public ecNR384() +- { +- super(new SHA384Digest(), new ECNRSigner(), new StdDSAEncoder()); +- } +- } +- +- static public class ecNR512 +- extends SignatureSpi +- { +- public ecNR512() +- { +- super(new SHA512Digest(), new ECNRSigner(), new StdDSAEncoder()); +- } +- } +- +- static public class ecCVCDSA +- extends SignatureSpi +- { +- public ecCVCDSA() +- { +- super(new SHA1Digest(), new ECDSASigner(), new CVCDSAEncoder()); +- } +- } +- +- static public class ecCVCDSA224 +- extends SignatureSpi +- { +- public ecCVCDSA224() +- { +- super(new SHA224Digest(), new ECDSASigner(), new CVCDSAEncoder()); +- } +- } +- +- static public class ecCVCDSA256 +- extends SignatureSpi +- { +- public ecCVCDSA256() +- { +- super(new SHA256Digest(), new ECDSASigner(), new CVCDSAEncoder()); +- } +- } ++ // BEGIN android-changed ++ super(new OpenSSLDigest.SHA512(), new ECDSASigner(), new StdDSAEncoder()); ++ // END android-changed ++ } ++ } ++ ++ // BEGIN android-removed ++ // static public class ecDSARipeMD160 ++ // extends SignatureSpi ++ // { ++ // public ecDSARipeMD160() ++ // { ++ // super(new RIPEMD160Digest(), new ECDSASigner(), new StdDSAEncoder()); ++ // } ++ // } ++ // ++ // static public class ecNR ++ // extends SignatureSpi ++ // { ++ // public ecNR() ++ // { ++ // super(new SHA1Digest(), new ECNRSigner(), new StdDSAEncoder()); ++ // } ++ // } ++ // ++ // static public class ecNR224 ++ // extends SignatureSpi ++ // { ++ // public ecNR224() ++ // { ++ // super(new SHA224Digest(), new ECNRSigner(), new StdDSAEncoder()); ++ // } ++ // } ++ // ++ // static public class ecNR256 ++ // extends SignatureSpi ++ // { ++ // public ecNR256() ++ // { ++ // super(new SHA256Digest(), new ECNRSigner(), new StdDSAEncoder()); ++ // } ++ // } ++ // ++ // static public class ecNR384 ++ // extends SignatureSpi ++ // { ++ // public ecNR384() ++ // { ++ // super(new SHA384Digest(), new ECNRSigner(), new StdDSAEncoder()); ++ // } ++ // } ++ // ++ // static public class ecNR512 ++ // extends SignatureSpi ++ // { ++ // public ecNR512() ++ // { ++ // super(new SHA512Digest(), new ECNRSigner(), new StdDSAEncoder()); ++ // } ++ // } ++ // ++ // static public class ecCVCDSA ++ // extends SignatureSpi ++ // { ++ // public ecCVCDSA() ++ // { ++ // super(new SHA1Digest(), new ECDSASigner(), new CVCDSAEncoder()); ++ // } ++ // } ++ // ++ // static public class ecCVCDSA224 ++ // extends SignatureSpi ++ // { ++ // public ecCVCDSA224() ++ // { ++ // super(new SHA224Digest(), new ECDSASigner(), new CVCDSAEncoder()); ++ // } ++ // } ++ // ++ // static public class ecCVCDSA256 ++ // extends SignatureSpi ++ // { ++ // public ecCVCDSA256() ++ // { ++ // super(new SHA256Digest(), new ECDSASigner(), new CVCDSAEncoder()); ++ // } ++ // } ++ // END android-removed + + private static class StdDSAEncoder + implements DSAEncoder +diff -Naur bcprov-jdk15on-147.orig/org/bouncycastle/jcajce/provider/asymmetric/rsa/AlgorithmParametersSpi.java bcprov-jdk15on-147/org/bouncycastle/jcajce/provider/asymmetric/rsa/AlgorithmParametersSpi.java +--- bcprov-jdk15on-147.orig/org/bouncycastle/jcajce/provider/asymmetric/rsa/AlgorithmParametersSpi.java 2012-03-22 15:11:48.000000000 +0000 ++++ bcprov-jdk15on-147/org/bouncycastle/jcajce/provider/asymmetric/rsa/AlgorithmParametersSpi.java 2012-09-11 00:12:44.000000000 +0000 +@@ -55,11 +55,15 @@ + { + AlgorithmIdentifier hashAlgorithm = new AlgorithmIdentifier( + DigestFactory.getOID(currentSpec.getDigestAlgorithm()), +- new DERNull()); ++ // BEGIN android-changed ++ DERNull.INSTANCE); ++ // END android-changed + MGF1ParameterSpec mgfSpec = (MGF1ParameterSpec)currentSpec.getMGFParameters(); + AlgorithmIdentifier maskGenAlgorithm = new AlgorithmIdentifier( + PKCSObjectIdentifiers.id_mgf1, +- new AlgorithmIdentifier(DigestFactory.getOID(mgfSpec.getDigestAlgorithm()), new DERNull())); ++ // BEGIN android-changed ++ new AlgorithmIdentifier(DigestFactory.getOID(mgfSpec.getDigestAlgorithm()), DERNull.INSTANCE)); ++ // END android-changed + PSource.PSpecified pSource = (PSource.PSpecified)currentSpec.getPSource(); + AlgorithmIdentifier pSourceAlgorithm = new AlgorithmIdentifier( + PKCSObjectIdentifiers.id_pSpecified, new DEROctetString(pSource.getValue())); +@@ -170,11 +174,15 @@ + PSSParameterSpec pssSpec = currentSpec; + AlgorithmIdentifier hashAlgorithm = new AlgorithmIdentifier( + DigestFactory.getOID(pssSpec.getDigestAlgorithm()), +- new DERNull()); ++ // BEGIN android-changed ++ DERNull.INSTANCE); ++ // END android-changed + MGF1ParameterSpec mgfSpec = (MGF1ParameterSpec)pssSpec.getMGFParameters(); + AlgorithmIdentifier maskGenAlgorithm = new AlgorithmIdentifier( + PKCSObjectIdentifiers.id_mgf1, +- new AlgorithmIdentifier(DigestFactory.getOID(mgfSpec.getDigestAlgorithm()), new DERNull())); ++ // BEGIN android-changed ++ new AlgorithmIdentifier(DigestFactory.getOID(mgfSpec.getDigestAlgorithm()), DERNull.INSTANCE)); ++ // END android-changed + RSASSAPSSparams pssP = new RSASSAPSSparams(hashAlgorithm, maskGenAlgorithm, new ASN1Integer(pssSpec.getSaltLength()), new ASN1Integer(pssSpec.getTrailerField())); + + return pssP.getEncoded("DER"); +diff -Naur bcprov-jdk15on-147.orig/org/bouncycastle/jcajce/provider/asymmetric/rsa/BCRSAPrivateCrtKey.java bcprov-jdk15on-147/org/bouncycastle/jcajce/provider/asymmetric/rsa/BCRSAPrivateCrtKey.java +--- bcprov-jdk15on-147.orig/org/bouncycastle/jcajce/provider/asymmetric/rsa/BCRSAPrivateCrtKey.java 2012-03-22 15:11:48.000000000 +0000 ++++ bcprov-jdk15on-147/org/bouncycastle/jcajce/provider/asymmetric/rsa/BCRSAPrivateCrtKey.java 2012-09-11 00:12:44.000000000 +0000 +@@ -127,7 +127,9 @@ + */ + public byte[] getEncoded() + { +- return KeyUtil.getEncodedPrivateKeyInfo(new AlgorithmIdentifier(PKCSObjectIdentifiers.rsaEncryption, new DERNull()), new RSAPrivateKey(getModulus(), getPublicExponent(), getPrivateExponent(), getPrimeP(), getPrimeQ(), getPrimeExponentP(), getPrimeExponentQ(), getCrtCoefficient())); ++ // BEGIN android-changed ++ return KeyUtil.getEncodedPrivateKeyInfo(new AlgorithmIdentifier(PKCSObjectIdentifiers.rsaEncryption, DERNull.INSTANCE), new RSAPrivateKey(getModulus(), getPublicExponent(), getPrivateExponent(), getPrimeP(), getPrimeQ(), getPrimeExponentP(), getPrimeExponentQ(), getCrtCoefficient())); ++ // END android-changed + } + + /** +diff -Naur bcprov-jdk15on-147.orig/org/bouncycastle/jcajce/provider/asymmetric/rsa/BCRSAPrivateKey.java bcprov-jdk15on-147/org/bouncycastle/jcajce/provider/asymmetric/rsa/BCRSAPrivateKey.java +--- bcprov-jdk15on-147.orig/org/bouncycastle/jcajce/provider/asymmetric/rsa/BCRSAPrivateKey.java 2012-03-22 15:11:48.000000000 +0000 ++++ bcprov-jdk15on-147/org/bouncycastle/jcajce/provider/asymmetric/rsa/BCRSAPrivateKey.java 2012-09-11 00:12:44.000000000 +0000 +@@ -78,7 +78,9 @@ + + public byte[] getEncoded() + { +- return KeyUtil.getEncodedPrivateKeyInfo(new AlgorithmIdentifier(PKCSObjectIdentifiers.rsaEncryption, new DERNull()), new org.bouncycastle.asn1.pkcs.RSAPrivateKey(getModulus(), ZERO, getPrivateExponent(), ZERO, ZERO, ZERO, ZERO, ZERO)); ++ // BEGIN android-changed ++ return KeyUtil.getEncodedPrivateKeyInfo(new AlgorithmIdentifier(PKCSObjectIdentifiers.rsaEncryption, DERNull.INSTANCE), new org.bouncycastle.asn1.pkcs.RSAPrivateKey(getModulus(), ZERO, getPrivateExponent(), ZERO, ZERO, ZERO, ZERO, ZERO)); ++ // END android-changed + } + + public boolean equals(Object o) +diff -Naur bcprov-jdk15on-147.orig/org/bouncycastle/jcajce/provider/asymmetric/rsa/BCRSAPublicKey.java bcprov-jdk15on-147/org/bouncycastle/jcajce/provider/asymmetric/rsa/BCRSAPublicKey.java +--- bcprov-jdk15on-147.orig/org/bouncycastle/jcajce/provider/asymmetric/rsa/BCRSAPublicKey.java 2012-03-22 15:11:48.000000000 +0000 ++++ bcprov-jdk15on-147/org/bouncycastle/jcajce/provider/asymmetric/rsa/BCRSAPublicKey.java 2012-09-11 00:12:44.000000000 +0000 +@@ -89,7 +89,9 @@ + + public byte[] getEncoded() + { +- return KeyUtil.getEncodedSubjectPublicKeyInfo(new AlgorithmIdentifier(PKCSObjectIdentifiers.rsaEncryption, new DERNull()), new org.bouncycastle.asn1.pkcs.RSAPublicKey(getModulus(), getPublicExponent())); ++ // BEGIN android-changed ++ return KeyUtil.getEncodedSubjectPublicKeyInfo(new AlgorithmIdentifier(PKCSObjectIdentifiers.rsaEncryption, DERNull.INSTANCE), new org.bouncycastle.asn1.pkcs.RSAPublicKey(getModulus(), getPublicExponent())); ++ // END android-changed + } + + public int hashCode() +diff -Naur bcprov-jdk15on-147.orig/org/bouncycastle/jcajce/provider/asymmetric/rsa/CipherSpi.java bcprov-jdk15on-147/org/bouncycastle/jcajce/provider/asymmetric/rsa/CipherSpi.java +--- bcprov-jdk15on-147.orig/org/bouncycastle/jcajce/provider/asymmetric/rsa/CipherSpi.java 2012-03-22 15:11:48.000000000 +0000 ++++ bcprov-jdk15on-147/org/bouncycastle/jcajce/provider/asymmetric/rsa/CipherSpi.java 2012-09-11 00:12:44.000000000 +0000 +@@ -26,7 +26,9 @@ + import org.bouncycastle.crypto.CipherParameters; + import org.bouncycastle.crypto.Digest; + import org.bouncycastle.crypto.InvalidCipherTextException; +-import org.bouncycastle.crypto.encodings.ISO9796d1Encoding; ++// BEGIN android-removed ++// import org.bouncycastle.crypto.encodings.ISO9796d1Encoding; ++// END android-removed + import org.bouncycastle.crypto.encodings.OAEPEncoding; + import org.bouncycastle.crypto.encodings.PKCS1Encoding; + import org.bouncycastle.crypto.engines.RSABlindedEngine; +@@ -197,10 +199,12 @@ + { + cipher = new PKCS1Encoding(new RSABlindedEngine()); + } +- else if (pad.equals("ISO9796-1PADDING")) +- { +- cipher = new ISO9796d1Encoding(new RSABlindedEngine()); +- } ++ // BEGIN android-removed ++ // else if (pad.equals("ISO9796-1PADDING")) ++ // { ++ // cipher = new ISO9796d1Encoding(new RSABlindedEngine()); ++ // } ++ // END android-removed + else if (pad.equals("OAEPWITHMD5ANDMGF1PADDING")) + { + initFromSpec(new OAEPParameterSpec("MD5", "MGF1", new MGF1ParameterSpec("MD5"), PSource.PSpecified.DEFAULT)); +@@ -213,10 +217,12 @@ + { + initFromSpec(OAEPParameterSpec.DEFAULT); + } +- else if (pad.equals("OAEPWITHSHA224ANDMGF1PADDING") || pad.equals("OAEPWITHSHA-224ANDMGF1PADDING")) +- { +- initFromSpec(new OAEPParameterSpec("SHA-224", "MGF1", new MGF1ParameterSpec("SHA-224"), PSource.PSpecified.DEFAULT)); +- } ++ // BEGIN android-removed ++ // else if (pad.equals("OAEPWITHSHA224ANDMGF1PADDING") || pad.equals("OAEPWITHSHA-224ANDMGF1PADDING")) ++ // { ++ // initFromSpec(new OAEPParameterSpec("SHA-224", "MGF1", new MGF1ParameterSpec("SHA-224"), PSource.PSpecified.DEFAULT)); ++ // } ++ // END android-removed + else if (pad.equals("OAEPWITHSHA256ANDMGF1PADDING") || pad.equals("OAEPWITHSHA-256ANDMGF1PADDING")) + { + initFromSpec(new OAEPParameterSpec("SHA-256", "MGF1", MGF1ParameterSpec.SHA256, PSource.PSpecified.DEFAULT)); +@@ -534,48 +540,50 @@ + } + } + +- static public class PKCS1v1_5Padding +- extends CipherSpi +- { +- public PKCS1v1_5Padding() +- { +- super(new PKCS1Encoding(new RSABlindedEngine())); +- } +- } +- +- static public class PKCS1v1_5Padding_PrivateOnly +- extends CipherSpi +- { +- public PKCS1v1_5Padding_PrivateOnly() +- { +- super(false, true, new PKCS1Encoding(new RSABlindedEngine())); +- } +- } +- +- static public class PKCS1v1_5Padding_PublicOnly +- extends CipherSpi +- { +- public PKCS1v1_5Padding_PublicOnly() +- { +- super(true, false, new PKCS1Encoding(new RSABlindedEngine())); +- } +- } +- +- static public class OAEPPadding +- extends CipherSpi +- { +- public OAEPPadding() +- { +- super(OAEPParameterSpec.DEFAULT); +- } +- } +- +- static public class ISO9796d1Padding +- extends CipherSpi +- { +- public ISO9796d1Padding() +- { +- super(new ISO9796d1Encoding(new RSABlindedEngine())); +- } +- } ++ // BEGIN android-removed ++ // static public class PKCS1v1_5Padding ++ // extends CipherSpi ++ // { ++ // public PKCS1v1_5Padding() ++ // { ++ // super(new PKCS1Encoding(new RSABlindedEngine())); ++ // } ++ // } ++ // ++ // static public class PKCS1v1_5Padding_PrivateOnly ++ // extends CipherSpi ++ // { ++ // public PKCS1v1_5Padding_PrivateOnly() ++ // { ++ // super(false, true, new PKCS1Encoding(new RSABlindedEngine())); ++ // } ++ // } ++ // ++ // static public class PKCS1v1_5Padding_PublicOnly ++ // extends CipherSpi ++ // { ++ // public PKCS1v1_5Padding_PublicOnly() ++ // { ++ // super(true, false, new PKCS1Encoding(new RSABlindedEngine())); ++ // } ++ // } ++ // ++ // static public class OAEPPadding ++ // extends CipherSpi ++ // { ++ // public OAEPPadding() ++ // { ++ // super(OAEPParameterSpec.DEFAULT); ++ // } ++ // } ++ // ++ // static public class ISO9796d1Padding ++ // extends CipherSpi ++ // { ++ // public ISO9796d1Padding() ++ // { ++ // super(new ISO9796d1Encoding(new RSABlindedEngine())); ++ // } ++ // } ++ // END android-removed + } +diff -Naur bcprov-jdk15on-147.orig/org/bouncycastle/jcajce/provider/asymmetric/rsa/DigestSignatureSpi.java bcprov-jdk15on-147/org/bouncycastle/jcajce/provider/asymmetric/rsa/DigestSignatureSpi.java +--- bcprov-jdk15on-147.orig/org/bouncycastle/jcajce/provider/asymmetric/rsa/DigestSignatureSpi.java 2012-03-22 15:11:48.000000000 +0000 ++++ bcprov-jdk15on-147/org/bouncycastle/jcajce/provider/asymmetric/rsa/DigestSignatureSpi.java 2012-09-11 00:12:44.000000000 +0000 +@@ -17,24 +17,31 @@ + import org.bouncycastle.asn1.nist.NISTObjectIdentifiers; + import org.bouncycastle.asn1.oiw.OIWObjectIdentifiers; + import org.bouncycastle.asn1.pkcs.PKCSObjectIdentifiers; +-import org.bouncycastle.asn1.teletrust.TeleTrusTObjectIdentifiers; ++// BEGIN android-removed ++// import org.bouncycastle.asn1.teletrust.TeleTrusTObjectIdentifiers; ++// END android-removed + import org.bouncycastle.asn1.x509.AlgorithmIdentifier; + import org.bouncycastle.asn1.x509.DigestInfo; + import org.bouncycastle.crypto.AsymmetricBlockCipher; + import org.bouncycastle.crypto.CipherParameters; + import org.bouncycastle.crypto.Digest; +-import org.bouncycastle.crypto.digests.MD2Digest; +-import org.bouncycastle.crypto.digests.MD4Digest; +-import org.bouncycastle.crypto.digests.MD5Digest; +-import org.bouncycastle.crypto.digests.NullDigest; +-import org.bouncycastle.crypto.digests.RIPEMD128Digest; +-import org.bouncycastle.crypto.digests.RIPEMD160Digest; +-import org.bouncycastle.crypto.digests.RIPEMD256Digest; +-import org.bouncycastle.crypto.digests.SHA1Digest; +-import org.bouncycastle.crypto.digests.SHA224Digest; +-import org.bouncycastle.crypto.digests.SHA256Digest; +-import org.bouncycastle.crypto.digests.SHA384Digest; +-import org.bouncycastle.crypto.digests.SHA512Digest; ++// BEGIN android-removed ++// import org.bouncycastle.crypto.digests.MD2Digest; ++// import org.bouncycastle.crypto.digests.MD4Digest; ++// import org.bouncycastle.crypto.digests.MD5Digest; ++// import org.bouncycastle.crypto.digests.NullDigest; ++// import org.bouncycastle.crypto.digests.RIPEMD128Digest; ++// import org.bouncycastle.crypto.digests.RIPEMD160Digest; ++// import org.bouncycastle.crypto.digests.RIPEMD256Digest; ++// import org.bouncycastle.crypto.digests.SHA1Digest; ++// import org.bouncycastle.crypto.digests.SHA224Digest; ++// import org.bouncycastle.crypto.digests.SHA256Digest; ++// import org.bouncycastle.crypto.digests.SHA384Digest; ++// import org.bouncycastle.crypto.digests.SHA512Digest; ++// END android-removed ++// BEGIN android-added ++import org.bouncycastle.crypto.digests.OpenSSLDigest; ++// END android-added + import org.bouncycastle.crypto.encodings.PKCS1Encoding; + import org.bouncycastle.crypto.engines.RSABlindedEngine; + +@@ -261,25 +268,31 @@ + { + public SHA1() + { +- super(OIWObjectIdentifiers.idSHA1, new SHA1Digest(), new PKCS1Encoding(new RSABlindedEngine())); ++ // BEGIN android-changed ++ super(OIWObjectIdentifiers.idSHA1, new OpenSSLDigest.SHA1(), new PKCS1Encoding(new RSABlindedEngine())); ++ // END android-changed + } + } + +- static public class SHA224 +- extends DigestSignatureSpi +- { +- public SHA224() +- { +- super(NISTObjectIdentifiers.id_sha224, new SHA224Digest(), new PKCS1Encoding(new RSABlindedEngine())); +- } +- } ++ // BEGIN android-removed ++ // static public class SHA224 ++ // extends DigestSignatureSpi ++ // { ++ // public SHA224() ++ // { ++ // super(NISTObjectIdentifiers.id_sha224, new SHA224Digest(), new PKCS1Encoding(new RSABlindedEngine())); ++ // } ++ // } ++ // END android-removed + + static public class SHA256 + extends DigestSignatureSpi + { + public SHA256() + { +- super(NISTObjectIdentifiers.id_sha256, new SHA256Digest(), new PKCS1Encoding(new RSABlindedEngine())); ++ // BEGIN android-changed ++ super(NISTObjectIdentifiers.id_sha256, new OpenSSLDigest.SHA256(), new PKCS1Encoding(new RSABlindedEngine())); ++ // END android-changed + } + } + +@@ -288,7 +301,9 @@ + { + public SHA384() + { +- super(NISTObjectIdentifiers.id_sha384, new SHA384Digest(), new PKCS1Encoding(new RSABlindedEngine())); ++ // BEGIN android-changed ++ super(NISTObjectIdentifiers.id_sha384, new OpenSSLDigest.SHA384(), new PKCS1Encoding(new RSABlindedEngine())); ++ // END android-changed + } + } + +@@ -297,70 +312,78 @@ + { + public SHA512() + { +- super(NISTObjectIdentifiers.id_sha512, new SHA512Digest(), new PKCS1Encoding(new RSABlindedEngine())); +- } +- } +- +- static public class MD2 +- extends DigestSignatureSpi +- { +- public MD2() +- { +- super(PKCSObjectIdentifiers.md2, new MD2Digest(), new PKCS1Encoding(new RSABlindedEngine())); ++ // BEGIN android-changed ++ super(NISTObjectIdentifiers.id_sha512, new OpenSSLDigest.SHA512(), new PKCS1Encoding(new RSABlindedEngine())); ++ // END android-changed + } + } + +- static public class MD4 +- extends DigestSignatureSpi +- { +- public MD4() +- { +- super(PKCSObjectIdentifiers.md4, new MD4Digest(), new PKCS1Encoding(new RSABlindedEngine())); +- } +- } ++ // BEGIN android-removed ++ // static public class MD2 ++ // extends DigestSignatureSpi ++ // { ++ // public MD2() ++ // { ++ // super(PKCSObjectIdentifiers.md2, new MD2Digest(), new PKCS1Encoding(new RSABlindedEngine())); ++ // } ++ // } ++ // ++ // static public class MD4 ++ // extends DigestSignatureSpi ++ // { ++ // public MD4() ++ // { ++ // super(PKCSObjectIdentifiers.md4, new MD4Digest(), new PKCS1Encoding(new RSABlindedEngine())); ++ // } ++ // } ++ // END android-removed + + static public class MD5 + extends DigestSignatureSpi + { + public MD5() + { +- super(PKCSObjectIdentifiers.md5, new MD5Digest(), new PKCS1Encoding(new RSABlindedEngine())); ++ // BEGIN android-changed ++ super(PKCSObjectIdentifiers.md5, new OpenSSLDigest.MD5(), new PKCS1Encoding(new RSABlindedEngine())); ++ // END android-changed + } + } + +- static public class RIPEMD160 +- extends DigestSignatureSpi +- { +- public RIPEMD160() +- { +- super(TeleTrusTObjectIdentifiers.ripemd160, new RIPEMD160Digest(), new PKCS1Encoding(new RSABlindedEngine())); +- } +- } +- +- static public class RIPEMD128 +- extends DigestSignatureSpi +- { +- public RIPEMD128() +- { +- super(TeleTrusTObjectIdentifiers.ripemd128, new RIPEMD128Digest(), new PKCS1Encoding(new RSABlindedEngine())); +- } +- } +- +- static public class RIPEMD256 +- extends DigestSignatureSpi +- { +- public RIPEMD256() +- { +- super(TeleTrusTObjectIdentifiers.ripemd256, new RIPEMD256Digest(), new PKCS1Encoding(new RSABlindedEngine())); +- } +- } +- +- static public class noneRSA +- extends DigestSignatureSpi +- { +- public noneRSA() +- { +- super(new NullDigest(), new PKCS1Encoding(new RSABlindedEngine())); +- } +- } ++ // BEGIN android-removed ++ // static public class RIPEMD160 ++ // extends DigestSignatureSpi ++ // { ++ // public RIPEMD160() ++ // { ++ // super(TeleTrusTObjectIdentifiers.ripemd160, new RIPEMD160Digest(), new PKCS1Encoding(new RSABlindedEngine())); ++ // } ++ // } ++ // ++ // static public class RIPEMD128 ++ // extends DigestSignatureSpi ++ // { ++ // public RIPEMD128() ++ // { ++ // super(TeleTrusTObjectIdentifiers.ripemd128, new RIPEMD128Digest(), new PKCS1Encoding(new RSABlindedEngine())); ++ // } ++ // } ++ // ++ // static public class RIPEMD256 ++ // extends DigestSignatureSpi ++ // { ++ // public RIPEMD256() ++ // { ++ // super(TeleTrusTObjectIdentifiers.ripemd256, new RIPEMD256Digest(), new PKCS1Encoding(new RSABlindedEngine())); ++ // } ++ // } ++ // ++ // static public class noneRSA ++ // extends DigestSignatureSpi ++ // { ++ // public noneRSA() ++ // { ++ // super(new NullDigest(), new PKCS1Encoding(new RSABlindedEngine())); ++ // } ++ // } ++ // END android-removed + } +diff -Naur bcprov-jdk15on-147.orig/org/bouncycastle/jcajce/provider/asymmetric/util/BaseCipherSpi.java bcprov-jdk15on-147/org/bouncycastle/jcajce/provider/asymmetric/util/BaseCipherSpi.java +--- bcprov-jdk15on-147.orig/org/bouncycastle/jcajce/provider/asymmetric/util/BaseCipherSpi.java 2012-03-22 15:11:48.000000000 +0000 ++++ bcprov-jdk15on-147/org/bouncycastle/jcajce/provider/asymmetric/util/BaseCipherSpi.java 2012-09-11 00:12:44.000000000 +0000 +@@ -18,8 +18,10 @@ + import javax.crypto.NoSuchPaddingException; + import javax.crypto.spec.IvParameterSpec; + import javax.crypto.spec.PBEParameterSpec; +-import javax.crypto.spec.RC2ParameterSpec; +-import javax.crypto.spec.RC5ParameterSpec; ++// BEGIN android-removed ++// import javax.crypto.spec.RC2ParameterSpec; ++// import javax.crypto.spec.RC5ParameterSpec; ++// END android-removed + import javax.crypto.spec.SecretKeySpec; + + import org.bouncycastle.asn1.pkcs.PrivateKeyInfo; +@@ -37,8 +39,10 @@ + { + IvParameterSpec.class, + PBEParameterSpec.class, +- RC2ParameterSpec.class, +- RC5ParameterSpec.class ++ // BEGIN android-removed ++ // RC2ParameterSpec.class, ++ // RC5ParameterSpec.class ++ // END android-removed + }; + + +diff -Naur bcprov-jdk15on-147.orig/org/bouncycastle/jcajce/provider/asymmetric/x509/PKIXCertPath.java bcprov-jdk15on-147/org/bouncycastle/jcajce/provider/asymmetric/x509/PKIXCertPath.java +--- bcprov-jdk15on-147.orig/org/bouncycastle/jcajce/provider/asymmetric/x509/PKIXCertPath.java 2012-03-22 15:11:48.000000000 +0000 ++++ bcprov-jdk15on-147/org/bouncycastle/jcajce/provider/asymmetric/x509/PKIXCertPath.java 2012-09-11 00:12:44.000000000 +0000 +@@ -36,7 +36,9 @@ + import org.bouncycastle.asn1.pkcs.SignedData; + import org.bouncycastle.jce.provider.BouncyCastleProvider; + import org.bouncycastle.util.io.pem.PemObject; +-import org.bouncycastle.util.io.pem.PemWriter; ++// BEGIN android-removed ++// import org.bouncycastle.util.io.pem.PemWriter; ++// END android-removed + + /** + * CertPath implementation for X.509 certificates. +@@ -298,27 +300,29 @@ + return toDEREncoded(new ContentInfo( + PKCSObjectIdentifiers.signedData, sd)); + } +- else if (encoding.equalsIgnoreCase("PEM")) +- { +- ByteArrayOutputStream bOut = new ByteArrayOutputStream(); +- PemWriter pWrt = new PemWriter(new OutputStreamWriter(bOut)); +- +- try +- { +- for (int i = 0; i != certificates.size(); i++) +- { +- pWrt.writeObject(new PemObject("CERTIFICATE", ((X509Certificate)certificates.get(i)).getEncoded())); +- } +- +- pWrt.close(); +- } +- catch (Exception e) +- { +- throw new CertificateEncodingException("can't encode certificate for PEM encoded path"); +- } +- +- return bOut.toByteArray(); +- } ++ // BEGIN android-removed ++ // else if (encoding.equalsIgnoreCase("PEM")) ++ // { ++ // ByteArrayOutputStream bOut = new ByteArrayOutputStream(); ++ // PemWriter pWrt = new PemWriter(new OutputStreamWriter(bOut)); ++ // ++ // try ++ // { ++ // for (int i = 0; i != certificates.size(); i++) ++ // { ++ // pWrt.writeObject(new PemObject("CERTIFICATE", ((X509Certificate)certificates.get(i)).getEncoded())); ++ // } ++ // ++ // pWrt.close(); ++ // } ++ // catch (Exception e) ++ // { ++ // throw new CertificateEncodingException("can't encode certificate for PEM encoded path"); ++ // } ++ // ++ // return bOut.toByteArray(); ++ // } ++ // END android-removed + else + { + throw new CertificateEncodingException("unsupported encoding: " + encoding); +diff -Naur bcprov-jdk15on-147.orig/org/bouncycastle/jcajce/provider/symmetric/AES.java bcprov-jdk15on-147/org/bouncycastle/jcajce/provider/symmetric/AES.java +--- bcprov-jdk15on-147.orig/org/bouncycastle/jcajce/provider/symmetric/AES.java 2012-03-22 15:11:48.000000000 +0000 ++++ bcprov-jdk15on-147/org/bouncycastle/jcajce/provider/symmetric/AES.java 2012-09-11 00:12:44.000000000 +0000 +@@ -1,31 +1,43 @@ + package org.bouncycastle.jcajce.provider.symmetric; + +-import java.security.AlgorithmParameters; +-import java.security.InvalidAlgorithmParameterException; ++// BEGIN android-removed ++// import java.security.AlgorithmParameters; ++// import java.security.InvalidAlgorithmParameterException; ++// END android-removed + import java.security.SecureRandom; +-import java.security.spec.AlgorithmParameterSpec; +- +-import javax.crypto.spec.IvParameterSpec; ++// BEGIN android-removed ++// import java.security.spec.AlgorithmParameterSpec; ++// ++// import javax.crypto.spec.IvParameterSpec; ++// END android-removed + + import org.bouncycastle.asn1.nist.NISTObjectIdentifiers; + import org.bouncycastle.crypto.BufferedBlockCipher; + import org.bouncycastle.crypto.CipherKeyGenerator; + import org.bouncycastle.crypto.engines.AESFastEngine; + import org.bouncycastle.crypto.engines.AESWrapEngine; +-import org.bouncycastle.crypto.engines.RFC3211WrapEngine; +-import org.bouncycastle.crypto.macs.CMac; ++// BEGIN android-removed ++// import org.bouncycastle.crypto.engines.RFC3211WrapEngine; ++// import org.bouncycastle.crypto.macs.CMac; ++// END android-removed + import org.bouncycastle.crypto.modes.CBCBlockCipher; + import org.bouncycastle.crypto.modes.CFBBlockCipher; + import org.bouncycastle.crypto.modes.OFBBlockCipher; + import org.bouncycastle.jcajce.provider.config.ConfigurableProvider; +-import org.bouncycastle.jcajce.provider.symmetric.util.BaseAlgorithmParameterGenerator; ++// BEGIN android-removed ++// import org.bouncycastle.jcajce.provider.symmetric.util.BaseAlgorithmParameterGenerator; ++// END android-removed + import org.bouncycastle.jcajce.provider.symmetric.util.BaseBlockCipher; + import org.bouncycastle.jcajce.provider.symmetric.util.BaseKeyGenerator; +-import org.bouncycastle.jcajce.provider.symmetric.util.BaseMac; ++// BEGIN android-removed ++// import org.bouncycastle.jcajce.provider.symmetric.util.BaseMac; ++// END android-removed + import org.bouncycastle.jcajce.provider.symmetric.util.BaseWrapCipher; + import org.bouncycastle.jcajce.provider.symmetric.util.IvAlgorithmParameters; + import org.bouncycastle.jcajce.provider.util.AlgorithmProvider; +-import org.bouncycastle.jce.provider.BouncyCastleProvider; ++// BEGIN android-removed ++// import org.bouncycastle.jce.provider.BouncyCastleProvider; ++// END android-removed + + public final class AES + { +@@ -69,15 +81,17 @@ + } + } + +- public static class AESCMAC +- extends BaseMac +- { +- public AESCMAC() +- { +- super(new CMac(new AESFastEngine())); +- } +- } +- ++ // BEGIN android-removed ++ // public static class AESCMAC ++ // extends BaseMac ++ // { ++ // public AESCMAC() ++ // { ++ // super(new CMac(new AESFastEngine())); ++ // } ++ // } ++ // END android-removed ++ + static public class Wrap + extends BaseWrapCipher + { +@@ -86,15 +100,17 @@ + super(new AESWrapEngine()); + } + } +- +- public static class RFC3211Wrap +- extends BaseWrapCipher +- { +- public RFC3211Wrap() +- { +- super(new RFC3211WrapEngine(new AESFastEngine()), 16); +- } +- } ++ ++ // BEGIN android-removed ++ // public static class RFC3211Wrap ++ // extends BaseWrapCipher ++ // { ++ // public RFC3211Wrap() ++ // { ++ // super(new RFC3211WrapEngine(new AESFastEngine()), 16); ++ // } ++ // } ++ // END android-removed + + public static class KeyGen + extends BaseKeyGenerator +@@ -110,70 +126,72 @@ + } + } + +- public static class KeyGen128 +- extends KeyGen +- { +- public KeyGen128() +- { +- super(128); +- } +- } +- +- public static class KeyGen192 +- extends KeyGen +- { +- public KeyGen192() +- { +- super(192); +- } +- } +- +- public static class KeyGen256 +- extends KeyGen +- { +- public KeyGen256() +- { +- super(256); +- } +- } +- +- public static class AlgParamGen +- extends BaseAlgorithmParameterGenerator +- { +- protected void engineInit( +- AlgorithmParameterSpec genParamSpec, +- SecureRandom random) +- throws InvalidAlgorithmParameterException +- { +- throw new InvalidAlgorithmParameterException("No supported AlgorithmParameterSpec for AES parameter generation."); +- } +- +- protected AlgorithmParameters engineGenerateParameters() +- { +- byte[] iv = new byte[16]; +- +- if (random == null) +- { +- random = new SecureRandom(); +- } +- +- random.nextBytes(iv); +- +- AlgorithmParameters params; +- +- try +- { +- params = AlgorithmParameters.getInstance("AES", BouncyCastleProvider.PROVIDER_NAME); +- params.init(new IvParameterSpec(iv)); +- } +- catch (Exception e) +- { +- throw new RuntimeException(e.getMessage()); +- } +- +- return params; +- } +- } ++ // BEGIN android-removed ++ // public static class KeyGen128 ++ // extends KeyGen ++ // { ++ // public KeyGen128() ++ // { ++ // super(128); ++ // } ++ // } ++ // ++ // public static class KeyGen192 ++ // extends KeyGen ++ // { ++ // public KeyGen192() ++ // { ++ // super(192); ++ // } ++ // } ++ // ++ // public static class KeyGen256 ++ // extends KeyGen ++ // { ++ // public KeyGen256() ++ // { ++ // super(256); ++ // } ++ // } ++ // ++ // public static class AlgParamGen ++ // extends BaseAlgorithmParameterGenerator ++ // { ++ // protected void engineInit( ++ // AlgorithmParameterSpec genParamSpec, ++ // SecureRandom random) ++ // throws InvalidAlgorithmParameterException ++ // { ++ // throw new InvalidAlgorithmParameterException("No supported AlgorithmParameterSpec for AES parameter generation."); ++ // } ++ // ++ // protected AlgorithmParameters engineGenerateParameters() ++ // { ++ // byte[] iv = new byte[16]; ++ // ++ // if (random == null) ++ // { ++ // random = new SecureRandom(); ++ // } ++ // ++ // random.nextBytes(iv); ++ // ++ // AlgorithmParameters params; ++ // ++ // try ++ // { ++ // params = AlgorithmParameters.getInstance("AES", BouncyCastleProvider.PROVIDER_NAME); ++ // params.init(new IvParameterSpec(iv)); ++ // } ++ // catch (Exception e) ++ // { ++ // throw new RuntimeException(e.getMessage()); ++ // } ++ // ++ // return params; ++ // } ++ // } ++ // END android-removed + + public static class AlgParams + extends IvAlgorithmParameters +@@ -212,58 +230,66 @@ + provider.addAlgorithm("Alg.Alias.AlgorithmParameters." + NISTObjectIdentifiers.id_aes192_CBC, "AES"); + provider.addAlgorithm("Alg.Alias.AlgorithmParameters." + NISTObjectIdentifiers.id_aes256_CBC, "AES"); + +- provider.addAlgorithm("AlgorithmParameterGenerator.AES", PREFIX + "$AlgParamGen"); +- provider.addAlgorithm("Alg.Alias.AlgorithmParameterGenerator." + wrongAES128, "AES"); +- provider.addAlgorithm("Alg.Alias.AlgorithmParameterGenerator." + wrongAES192, "AES"); +- provider.addAlgorithm("Alg.Alias.AlgorithmParameterGenerator." + wrongAES256, "AES"); +- provider.addAlgorithm("Alg.Alias.AlgorithmParameterGenerator." + NISTObjectIdentifiers.id_aes128_CBC, "AES"); +- provider.addAlgorithm("Alg.Alias.AlgorithmParameterGenerator." + NISTObjectIdentifiers.id_aes192_CBC, "AES"); +- provider.addAlgorithm("Alg.Alias.AlgorithmParameterGenerator." + NISTObjectIdentifiers.id_aes256_CBC, "AES"); ++ // BEGIN android-removed ++ // provider.addAlgorithm("AlgorithmParameterGenerator.AES", PREFIX + "$AlgParamGen"); ++ // provider.addAlgorithm("Alg.Alias.AlgorithmParameterGenerator." + wrongAES128, "AES"); ++ // provider.addAlgorithm("Alg.Alias.AlgorithmParameterGenerator." + wrongAES192, "AES"); ++ // provider.addAlgorithm("Alg.Alias.AlgorithmParameterGenerator." + wrongAES256, "AES"); ++ // provider.addAlgorithm("Alg.Alias.AlgorithmParameterGenerator." + NISTObjectIdentifiers.id_aes128_CBC, "AES"); ++ // provider.addAlgorithm("Alg.Alias.AlgorithmParameterGenerator." + NISTObjectIdentifiers.id_aes192_CBC, "AES"); ++ // provider.addAlgorithm("Alg.Alias.AlgorithmParameterGenerator." + NISTObjectIdentifiers.id_aes256_CBC, "AES"); ++ // END android-removed + + provider.addAlgorithm("Cipher.AES", PREFIX + "$ECB"); + provider.addAlgorithm("Alg.Alias.Cipher." + wrongAES128, "AES"); + provider.addAlgorithm("Alg.Alias.Cipher." + wrongAES192, "AES"); + provider.addAlgorithm("Alg.Alias.Cipher." + wrongAES256, "AES"); +- provider.addAlgorithm("Cipher." + NISTObjectIdentifiers.id_aes128_ECB, PREFIX + "$ECB"); +- provider.addAlgorithm("Cipher." + NISTObjectIdentifiers.id_aes192_ECB, PREFIX + "$ECB"); +- provider.addAlgorithm("Cipher." + NISTObjectIdentifiers.id_aes256_ECB, PREFIX + "$ECB"); +- provider.addAlgorithm("Cipher." + NISTObjectIdentifiers.id_aes128_CBC, PREFIX + "$CBC"); +- provider.addAlgorithm("Cipher." + NISTObjectIdentifiers.id_aes192_CBC, PREFIX + "$CBC"); +- provider.addAlgorithm("Cipher." + NISTObjectIdentifiers.id_aes256_CBC, PREFIX + "$CBC"); +- provider.addAlgorithm("Cipher." + NISTObjectIdentifiers.id_aes128_OFB, PREFIX + "$OFB"); +- provider.addAlgorithm("Cipher." + NISTObjectIdentifiers.id_aes192_OFB, PREFIX + "$OFB"); +- provider.addAlgorithm("Cipher." + NISTObjectIdentifiers.id_aes256_OFB, PREFIX + "$OFB"); +- provider.addAlgorithm("Cipher." + NISTObjectIdentifiers.id_aes128_CFB, PREFIX + "$CFB"); +- provider.addAlgorithm("Cipher." + NISTObjectIdentifiers.id_aes192_CFB, PREFIX + "$CFB"); +- provider.addAlgorithm("Cipher." + NISTObjectIdentifiers.id_aes256_CFB, PREFIX + "$CFB"); ++ // BEGIN android-removed ++ // provider.addAlgorithm("Cipher." + NISTObjectIdentifiers.id_aes128_ECB, PREFIX + "$ECB"); ++ // provider.addAlgorithm("Cipher." + NISTObjectIdentifiers.id_aes192_ECB, PREFIX + "$ECB"); ++ // provider.addAlgorithm("Cipher." + NISTObjectIdentifiers.id_aes256_ECB, PREFIX + "$ECB"); ++ // provider.addAlgorithm("Cipher." + NISTObjectIdentifiers.id_aes128_CBC, PREFIX + "$CBC"); ++ // provider.addAlgorithm("Cipher." + NISTObjectIdentifiers.id_aes192_CBC, PREFIX + "$CBC"); ++ // provider.addAlgorithm("Cipher." + NISTObjectIdentifiers.id_aes256_CBC, PREFIX + "$CBC"); ++ // provider.addAlgorithm("Cipher." + NISTObjectIdentifiers.id_aes128_OFB, PREFIX + "$OFB"); ++ // provider.addAlgorithm("Cipher." + NISTObjectIdentifiers.id_aes192_OFB, PREFIX + "$OFB"); ++ // provider.addAlgorithm("Cipher." + NISTObjectIdentifiers.id_aes256_OFB, PREFIX + "$OFB"); ++ // provider.addAlgorithm("Cipher." + NISTObjectIdentifiers.id_aes128_CFB, PREFIX + "$CFB"); ++ // provider.addAlgorithm("Cipher." + NISTObjectIdentifiers.id_aes192_CFB, PREFIX + "$CFB"); ++ // provider.addAlgorithm("Cipher." + NISTObjectIdentifiers.id_aes256_CFB, PREFIX + "$CFB"); ++ // END android-removed + provider.addAlgorithm("Cipher.AESWRAP", PREFIX + "$Wrap"); + provider.addAlgorithm("Alg.Alias.Cipher." + NISTObjectIdentifiers.id_aes128_wrap, "AESWRAP"); + provider.addAlgorithm("Alg.Alias.Cipher." + NISTObjectIdentifiers.id_aes192_wrap, "AESWRAP"); + provider.addAlgorithm("Alg.Alias.Cipher." + NISTObjectIdentifiers.id_aes256_wrap, "AESWRAP"); +- provider.addAlgorithm("Cipher.AESRFC3211WRAP", PREFIX + "$RFC3211Wrap"); ++ // BEGIN android-removed ++ // provider.addAlgorithm("Cipher.AESRFC3211WRAP", PREFIX + "$RFC3211Wrap"); ++ // END android-removed + + provider.addAlgorithm("KeyGenerator.AES", PREFIX + "$KeyGen"); +- provider.addAlgorithm("KeyGenerator." + wrongAES128, PREFIX + "$KeyGen128"); +- provider.addAlgorithm("KeyGenerator." + wrongAES192, PREFIX + "$KeyGen192"); +- provider.addAlgorithm("KeyGenerator." + wrongAES256, PREFIX + "$KeyGen256"); +- provider.addAlgorithm("KeyGenerator." + NISTObjectIdentifiers.id_aes128_ECB, PREFIX + "$KeyGen128"); +- provider.addAlgorithm("KeyGenerator." + NISTObjectIdentifiers.id_aes128_CBC, PREFIX + "$KeyGen128"); +- provider.addAlgorithm("KeyGenerator." + NISTObjectIdentifiers.id_aes128_OFB, PREFIX + "$KeyGen128"); +- provider.addAlgorithm("KeyGenerator." + NISTObjectIdentifiers.id_aes128_CFB, PREFIX + "$KeyGen128"); +- provider.addAlgorithm("KeyGenerator." + NISTObjectIdentifiers.id_aes192_ECB, PREFIX + "$KeyGen192"); +- provider.addAlgorithm("KeyGenerator." + NISTObjectIdentifiers.id_aes192_CBC, PREFIX + "$KeyGen192"); +- provider.addAlgorithm("KeyGenerator." + NISTObjectIdentifiers.id_aes192_OFB, PREFIX + "$KeyGen192"); +- provider.addAlgorithm("KeyGenerator." + NISTObjectIdentifiers.id_aes192_CFB, PREFIX + "$KeyGen192"); +- provider.addAlgorithm("KeyGenerator." + NISTObjectIdentifiers.id_aes256_ECB, PREFIX + "$KeyGen256"); +- provider.addAlgorithm("KeyGenerator." + NISTObjectIdentifiers.id_aes256_CBC, PREFIX + "$KeyGen256"); +- provider.addAlgorithm("KeyGenerator." + NISTObjectIdentifiers.id_aes256_OFB, PREFIX + "$KeyGen256"); +- provider.addAlgorithm("KeyGenerator." + NISTObjectIdentifiers.id_aes256_CFB, PREFIX + "$KeyGen256"); +- provider.addAlgorithm("KeyGenerator.AESWRAP", PREFIX + "$KeyGen"); +- provider.addAlgorithm("KeyGenerator." + NISTObjectIdentifiers.id_aes128_wrap, PREFIX + "$KeyGen128"); +- provider.addAlgorithm("KeyGenerator." + NISTObjectIdentifiers.id_aes192_wrap, PREFIX + "$KeyGen192"); +- provider.addAlgorithm("KeyGenerator." + NISTObjectIdentifiers.id_aes256_wrap, PREFIX + "$KeyGen256"); +- +- provider.addAlgorithm("Mac.AESCMAC", PREFIX + "$AESCMAC"); ++ // BEGIN android-removed ++ // provider.addAlgorithm("KeyGenerator." + wrongAES128, PREFIX + "$KeyGen128"); ++ // provider.addAlgorithm("KeyGenerator." + wrongAES192, PREFIX + "$KeyGen192"); ++ // provider.addAlgorithm("KeyGenerator." + wrongAES256, PREFIX + "$KeyGen256"); ++ // provider.addAlgorithm("KeyGenerator." + NISTObjectIdentifiers.id_aes128_ECB, PREFIX + "$KeyGen128"); ++ // provider.addAlgorithm("KeyGenerator." + NISTObjectIdentifiers.id_aes128_CBC, PREFIX + "$KeyGen128"); ++ // provider.addAlgorithm("KeyGenerator." + NISTObjectIdentifiers.id_aes128_OFB, PREFIX + "$KeyGen128"); ++ // provider.addAlgorithm("KeyGenerator." + NISTObjectIdentifiers.id_aes128_CFB, PREFIX + "$KeyGen128"); ++ // provider.addAlgorithm("KeyGenerator." + NISTObjectIdentifiers.id_aes192_ECB, PREFIX + "$KeyGen192"); ++ // provider.addAlgorithm("KeyGenerator." + NISTObjectIdentifiers.id_aes192_CBC, PREFIX + "$KeyGen192"); ++ // provider.addAlgorithm("KeyGenerator." + NISTObjectIdentifiers.id_aes192_OFB, PREFIX + "$KeyGen192"); ++ // provider.addAlgorithm("KeyGenerator." + NISTObjectIdentifiers.id_aes192_CFB, PREFIX + "$KeyGen192"); ++ // provider.addAlgorithm("KeyGenerator." + NISTObjectIdentifiers.id_aes256_ECB, PREFIX + "$KeyGen256"); ++ // provider.addAlgorithm("KeyGenerator." + NISTObjectIdentifiers.id_aes256_CBC, PREFIX + "$KeyGen256"); ++ // provider.addAlgorithm("KeyGenerator." + NISTObjectIdentifiers.id_aes256_OFB, PREFIX + "$KeyGen256"); ++ // provider.addAlgorithm("KeyGenerator." + NISTObjectIdentifiers.id_aes256_CFB, PREFIX + "$KeyGen256"); ++ // provider.addAlgorithm("KeyGenerator.AESWRAP", PREFIX + "$KeyGen"); ++ // provider.addAlgorithm("KeyGenerator." + NISTObjectIdentifiers.id_aes128_wrap, PREFIX + "$KeyGen128"); ++ // provider.addAlgorithm("KeyGenerator." + NISTObjectIdentifiers.id_aes192_wrap, PREFIX + "$KeyGen192"); ++ // provider.addAlgorithm("KeyGenerator." + NISTObjectIdentifiers.id_aes256_wrap, PREFIX + "$KeyGen256"); ++ // ++ // provider.addAlgorithm("Mac.AESCMAC", PREFIX + "$AESCMAC"); ++ // END android-removed + } + } + } +diff -Naur bcprov-jdk15on-147.orig/org/bouncycastle/jcajce/provider/symmetric/ARC4.java bcprov-jdk15on-147/org/bouncycastle/jcajce/provider/symmetric/ARC4.java +--- bcprov-jdk15on-147.orig/org/bouncycastle/jcajce/provider/symmetric/ARC4.java 2012-03-22 15:11:48.000000000 +0000 ++++ bcprov-jdk15on-147/org/bouncycastle/jcajce/provider/symmetric/ARC4.java 2012-09-11 00:12:44.000000000 +0000 +@@ -27,7 +27,9 @@ + { + public KeyGen() + { +- super("RC4", 128, new CipherKeyGenerator()); ++ // BEGIN android-changed ++ super("ARC4", 128, new CipherKeyGenerator()); ++ // END android-changed + } + } + +diff -Naur bcprov-jdk15on-147.orig/org/bouncycastle/jcajce/provider/symmetric/Blowfish.java bcprov-jdk15on-147/org/bouncycastle/jcajce/provider/symmetric/Blowfish.java +--- bcprov-jdk15on-147.orig/org/bouncycastle/jcajce/provider/symmetric/Blowfish.java 2012-03-22 15:11:48.000000000 +0000 ++++ bcprov-jdk15on-147/org/bouncycastle/jcajce/provider/symmetric/Blowfish.java 2012-09-11 00:12:44.000000000 +0000 +@@ -64,7 +64,9 @@ + { + + provider.addAlgorithm("Cipher.BLOWFISH", PREFIX + "$ECB"); +- provider.addAlgorithm("Cipher.1.3.6.1.4.1.3029.1.2", PREFIX + "$CBC"); ++ // BEGIN android-removed ++ // provider.addAlgorithm("Cipher.1.3.6.1.4.1.3029.1.2", PREFIX + "$CBC"); ++ // END android-removed + provider.addAlgorithm("KeyGenerator.BLOWFISH", PREFIX + "$KeyGen"); + provider.addAlgorithm("Alg.Alias.KeyGenerator.1.3.6.1.4.1.3029.1.2", "BLOWFISH"); + provider.addAlgorithm("AlgorithmParameters.BLOWFISH", PREFIX + "$AlgParams"); +diff -Naur bcprov-jdk15on-147.orig/org/bouncycastle/jcajce/provider/symmetric/DES.java bcprov-jdk15on-147/org/bouncycastle/jcajce/provider/symmetric/DES.java +--- bcprov-jdk15on-147.orig/org/bouncycastle/jcajce/provider/symmetric/DES.java 2012-03-22 15:11:48.000000000 +0000 ++++ bcprov-jdk15on-147/org/bouncycastle/jcajce/provider/symmetric/DES.java 2012-09-11 00:12:44.000000000 +0000 +@@ -16,11 +16,15 @@ + import org.bouncycastle.asn1.oiw.OIWObjectIdentifiers; + import org.bouncycastle.crypto.KeyGenerationParameters; + import org.bouncycastle.crypto.engines.DESEngine; +-import org.bouncycastle.crypto.engines.RFC3211WrapEngine; ++// BEGIN android-removed ++// import org.bouncycastle.crypto.engines.RFC3211WrapEngine; ++// END android-removed + import org.bouncycastle.crypto.generators.DESKeyGenerator; + import org.bouncycastle.crypto.macs.CBCBlockCipherMac; +-import org.bouncycastle.crypto.macs.CFBBlockCipherMac; +-import org.bouncycastle.crypto.macs.CMac; ++// BEGIN android-removed ++// import org.bouncycastle.crypto.macs.CFBBlockCipherMac; ++// import org.bouncycastle.crypto.macs.CMac; ++// END android-removed + import org.bouncycastle.crypto.modes.CBCBlockCipher; + import org.bouncycastle.crypto.paddings.ISO7816d4Padding; + import org.bouncycastle.jcajce.provider.config.ConfigurableProvider; +@@ -48,115 +52,117 @@ + } + } + +- static public class CBC +- extends BaseBlockCipher +- { +- public CBC() +- { +- super(new CBCBlockCipher(new DESEngine()), 64); +- } +- } +- +- /** +- * DES CFB8 +- */ +- public static class DESCFB8 +- extends BaseMac +- { +- public DESCFB8() +- { +- super(new CFBBlockCipherMac(new DESEngine())); +- } +- } +- +- /** +- * DES64 +- */ +- public static class DES64 +- extends BaseMac +- { +- public DES64() +- { +- super(new CBCBlockCipherMac(new DESEngine(), 64)); +- } +- } +- +- /** +- * DES64with7816-4Padding +- */ +- public static class DES64with7816d4 +- extends BaseMac +- { +- public DES64with7816d4() +- { +- super(new CBCBlockCipherMac(new DESEngine(), 64, new ISO7816d4Padding())); +- } +- } +- +- public static class CBCMAC +- extends BaseMac +- { +- public CBCMAC() +- { +- super(new CBCBlockCipherMac(new DESEngine())); +- } +- } +- +- static public class CMAC +- extends BaseMac +- { +- public CMAC() +- { +- super(new CMac(new DESEngine())); +- } +- } +- +- public static class RFC3211 +- extends BaseWrapCipher +- { +- public RFC3211() +- { +- super(new RFC3211WrapEngine(new DESEngine()), 8); +- } +- } +- +- public static class AlgParamGen +- extends BaseAlgorithmParameterGenerator +- { +- protected void engineInit( +- AlgorithmParameterSpec genParamSpec, +- SecureRandom random) +- throws InvalidAlgorithmParameterException +- { +- throw new InvalidAlgorithmParameterException("No supported AlgorithmParameterSpec for DES parameter generation."); +- } +- +- protected AlgorithmParameters engineGenerateParameters() +- { +- byte[] iv = new byte[8]; +- +- if (random == null) +- { +- random = new SecureRandom(); +- } +- +- random.nextBytes(iv); +- +- AlgorithmParameters params; +- +- try +- { +- params = AlgorithmParameters.getInstance("DES", BouncyCastleProvider.PROVIDER_NAME); +- params.init(new IvParameterSpec(iv)); +- } +- catch (Exception e) +- { +- throw new RuntimeException(e.getMessage()); +- } +- +- return params; +- } +- } ++ // BEGIN android-removed ++ // static public class CBC ++ // extends BaseBlockCipher ++ // { ++ // public CBC() ++ // { ++ // super(new CBCBlockCipher(new DESEngine()), 64); ++ // } ++ // } ++ // ++ // /** ++ // * DES CFB8 ++ // */ ++ // public static class DESCFB8 ++ // extends BaseMac ++ // { ++ // public DESCFB8() ++ // { ++ // super(new CFBBlockCipherMac(new DESEngine())); ++ // } ++ // } ++ // ++ // /** ++ // * DES64 ++ // */ ++ // public static class DES64 ++ // extends BaseMac ++ // { ++ // public DES64() ++ // { ++ // super(new CBCBlockCipherMac(new DESEngine(), 64)); ++ // } ++ // } ++ // ++ // /** ++ // * DES64with7816-4Padding ++ // */ ++ // public static class DES64with7816d4 ++ // extends BaseMac ++ // { ++ // public DES64with7816d4() ++ // { ++ // super(new CBCBlockCipherMac(new DESEngine(), 64, new ISO7816d4Padding())); ++ // } ++ // } ++ // ++ // public static class CBCMAC ++ // extends BaseMac ++ // { ++ // public CBCMAC() ++ // { ++ // super(new CBCBlockCipherMac(new DESEngine())); ++ // } ++ // } ++ // ++ // static public class CMAC ++ // extends BaseMac ++ // { ++ // public CMAC() ++ // { ++ // super(new CMac(new DESEngine())); ++ // } ++ // } ++ // ++ // public static class RFC3211 ++ // extends BaseWrapCipher ++ // { ++ // public RFC3211() ++ // { ++ // super(new RFC3211WrapEngine(new DESEngine()), 8); ++ // } ++ // } ++ // ++ // public static class AlgParamGen ++ // extends BaseAlgorithmParameterGenerator ++ // { ++ // protected void engineInit( ++ // AlgorithmParameterSpec genParamSpec, ++ // SecureRandom random) ++ // throws InvalidAlgorithmParameterException ++ // { ++ // throw new InvalidAlgorithmParameterException("No supported AlgorithmParameterSpec for DES parameter generation."); ++ // } ++ // ++ // protected AlgorithmParameters engineGenerateParameters() ++ // { ++ // byte[] iv = new byte[8]; ++ // ++ // if (random == null) ++ // { ++ // random = new SecureRandom(); ++ // } ++ // ++ // random.nextBytes(iv); ++ // ++ // AlgorithmParameters params; ++ // ++ // try ++ // { ++ // params = AlgorithmParameters.getInstance("DES", BouncyCastleProvider.PROVIDER_NAME); ++ // params.init(new IvParameterSpec(iv)); ++ // } ++ // catch (Exception e) ++ // { ++ // throw new RuntimeException(e.getMessage()); ++ // } ++ // ++ // return params; ++ // } ++ // } ++ // END android-removed + + /** + * DES - the default for this is to generate a key in +@@ -263,36 +269,42 @@ + { + + provider.addAlgorithm("Cipher.DES", PREFIX + "$ECB"); +- provider.addAlgorithm("Cipher." + OIWObjectIdentifiers.desCBC, PREFIX + "$CBC"); +- +- addAlias(provider, OIWObjectIdentifiers.desCBC, "DES"); +- +- provider.addAlgorithm("Cipher.DESRFC3211WRAP", PREFIX + "$RFC3211"); ++ // BEGIN android-removed ++ // provider.addAlgorithm("Cipher." + OIWObjectIdentifiers.desCBC, PREFIX + "$CBC"); ++ // ++ // addAlias(provider, OIWObjectIdentifiers.desCBC, "DES"); ++ // ++ // provider.addAlgorithm("Cipher.DESRFC3211WRAP", PREFIX + "$RFC3211"); ++ // END android-removed + + provider.addAlgorithm("KeyGenerator.DES", PREFIX + "$KeyGenerator"); + + provider.addAlgorithm("SecretKeyFactory.DES", PREFIX + "$KeyFactory"); + +- provider.addAlgorithm("Mac.DESCMAC", PREFIX + "$CMAC"); +- provider.addAlgorithm("Mac.DESMAC", PREFIX + "$CBCMAC"); +- provider.addAlgorithm("Alg.Alias.Mac.DES", "DESMAC"); +- +- provider.addAlgorithm("Mac.DESMAC/CFB8", PREFIX + "$DESCFB8"); +- provider.addAlgorithm("Alg.Alias.Mac.DES/CFB8", "DESMAC/CFB8"); +- +- provider.addAlgorithm("Mac.DESMAC64", PREFIX + "$DES64"); +- provider.addAlgorithm("Alg.Alias.Mac.DES64", "DESMAC64"); +- +- provider.addAlgorithm("Mac.DESMAC64WITHISO7816-4PADDING", PREFIX + "$DES64with7816d4"); +- provider.addAlgorithm("Alg.Alias.Mac.DES64WITHISO7816-4PADDING", "DESMAC64WITHISO7816-4PADDING"); +- provider.addAlgorithm("Alg.Alias.Mac.DESISO9797ALG1MACWITHISO7816-4PADDING", "DESMAC64WITHISO7816-4PADDING"); +- provider.addAlgorithm("Alg.Alias.Mac.DESISO9797ALG1WITHISO7816-4PADDING", "DESMAC64WITHISO7816-4PADDING"); ++ // BEGIN android-removed ++ // provider.addAlgorithm("Mac.DESCMAC", PREFIX + "$CMAC"); ++ // provider.addAlgorithm("Mac.DESMAC", PREFIX + "$CBCMAC"); ++ // provider.addAlgorithm("Alg.Alias.Mac.DES", "DESMAC"); ++ // ++ // provider.addAlgorithm("Mac.DESMAC/CFB8", PREFIX + "$DESCFB8"); ++ // provider.addAlgorithm("Alg.Alias.Mac.DES/CFB8", "DESMAC/CFB8"); ++ // ++ // provider.addAlgorithm("Mac.DESMAC64", PREFIX + "$DES64"); ++ // provider.addAlgorithm("Alg.Alias.Mac.DES64", "DESMAC64"); ++ // ++ // provider.addAlgorithm("Mac.DESMAC64WITHISO7816-4PADDING", PREFIX + "$DES64with7816d4"); ++ // provider.addAlgorithm("Alg.Alias.Mac.DES64WITHISO7816-4PADDING", "DESMAC64WITHISO7816-4PADDING"); ++ // provider.addAlgorithm("Alg.Alias.Mac.DESISO9797ALG1MACWITHISO7816-4PADDING", "DESMAC64WITHISO7816-4PADDING"); ++ // provider.addAlgorithm("Alg.Alias.Mac.DESISO9797ALG1WITHISO7816-4PADDING", "DESMAC64WITHISO7816-4PADDING"); ++ // END android-removed + + provider.addAlgorithm("AlgorithmParameters.DES", PACKAGE + ".util.IvAlgorithmParameters"); + provider.addAlgorithm("Alg.Alias.AlgorithmParameters." + OIWObjectIdentifiers.desCBC, "DES"); + +- provider.addAlgorithm("AlgorithmParameterGenerator.DES", PREFIX + "$AlgParamGen"); +- provider.addAlgorithm("Alg.Alias.AlgorithmParameterGenerator." + OIWObjectIdentifiers.desCBC, "DES"); ++ // BEGIN android-removed ++ // provider.addAlgorithm("AlgorithmParameterGenerator.DES", PREFIX + "$AlgParamGen"); ++ // provider.addAlgorithm("Alg.Alias.AlgorithmParameterGenerator." + OIWObjectIdentifiers.desCBC, "DES"); ++ // END android-removed + } + + private void addAlias(ConfigurableProvider provider, ASN1ObjectIdentifier oid, String name) +diff -Naur bcprov-jdk15on-147.orig/org/bouncycastle/jcajce/provider/symmetric/DESede.java bcprov-jdk15on-147/org/bouncycastle/jcajce/provider/symmetric/DESede.java +--- bcprov-jdk15on-147.orig/org/bouncycastle/jcajce/provider/symmetric/DESede.java 2012-03-22 15:11:48.000000000 +0000 ++++ bcprov-jdk15on-147/org/bouncycastle/jcajce/provider/symmetric/DESede.java 2012-09-11 00:12:44.000000000 +0000 +@@ -1,30 +1,42 @@ + package org.bouncycastle.jcajce.provider.symmetric; + +-import java.security.AlgorithmParameters; +-import java.security.InvalidAlgorithmParameterException; ++// BEGIN android-removed ++// import java.security.AlgorithmParameters; ++// import java.security.InvalidAlgorithmParameterException; ++// END android-removed + import java.security.SecureRandom; +-import java.security.spec.AlgorithmParameterSpec; ++// BEGIN android-removed ++// import java.security.spec.AlgorithmParameterSpec; ++// END android-removed + import java.security.spec.InvalidKeySpecException; + import java.security.spec.KeySpec; + + import javax.crypto.SecretKey; + import javax.crypto.spec.DESedeKeySpec; +-import javax.crypto.spec.IvParameterSpec; ++// BEGIN android-removed ++// import javax.crypto.spec.IvParameterSpec; ++// END android-removed + import javax.crypto.spec.SecretKeySpec; + + import org.bouncycastle.asn1.pkcs.PKCSObjectIdentifiers; + import org.bouncycastle.crypto.KeyGenerationParameters; + import org.bouncycastle.crypto.engines.DESedeEngine; + import org.bouncycastle.crypto.engines.DESedeWrapEngine; +-import org.bouncycastle.crypto.engines.RFC3211WrapEngine; ++// BEGIN android-removed ++// import org.bouncycastle.crypto.engines.RFC3211WrapEngine; ++// END android-removed + import org.bouncycastle.crypto.generators.DESedeKeyGenerator; + import org.bouncycastle.crypto.macs.CBCBlockCipherMac; +-import org.bouncycastle.crypto.macs.CFBBlockCipherMac; +-import org.bouncycastle.crypto.macs.CMac; ++// BEGIN android-removed ++// import org.bouncycastle.crypto.macs.CFBBlockCipherMac; ++// import org.bouncycastle.crypto.macs.CMac; ++// END android-removed + import org.bouncycastle.crypto.modes.CBCBlockCipher; + import org.bouncycastle.crypto.paddings.ISO7816d4Padding; + import org.bouncycastle.jcajce.provider.config.ConfigurableProvider; +-import org.bouncycastle.jcajce.provider.symmetric.util.BaseAlgorithmParameterGenerator; ++// BEGIN android-removed ++// import org.bouncycastle.jcajce.provider.symmetric.util.BaseAlgorithmParameterGenerator; ++// END android-removed + import org.bouncycastle.jcajce.provider.symmetric.util.BaseBlockCipher; + import org.bouncycastle.jcajce.provider.symmetric.util.BaseKeyGenerator; + import org.bouncycastle.jcajce.provider.symmetric.util.BaseMac; +@@ -57,17 +69,19 @@ + } + } + +- /** +- * DESede CFB8 +- */ +- public static class DESedeCFB8 +- extends BaseMac +- { +- public DESedeCFB8() +- { +- super(new CFBBlockCipherMac(new DESedeEngine())); +- } +- } ++ // BEGIN android-removed ++ // /** ++ // * DESede CFB8 ++ // */ ++ // public static class DESedeCFB8 ++ // extends BaseMac ++ // { ++ // public DESedeCFB8() ++ // { ++ // super(new CFBBlockCipherMac(new DESedeEngine())); ++ // } ++ // } ++ // END android-removed + + /** + * DESede64 +@@ -102,15 +116,17 @@ + } + } + +- static public class CMAC +- extends BaseMac +- { +- public CMAC() +- { +- super(new CMac(new DESedeEngine())); +- } +- } +- ++ // BEGIN android-removed ++ // static public class CMAC ++ // extends BaseMac ++ // { ++ // public CMAC() ++ // { ++ // super(new CMac(new DESedeEngine())); ++ // } ++ // } ++ // END android-removed ++ + public static class Wrap + extends BaseWrapCipher + { +@@ -119,15 +135,17 @@ + super(new DESedeWrapEngine()); + } + } +- +- public static class RFC3211 +- extends BaseWrapCipher +- { +- public RFC3211() +- { +- super(new RFC3211WrapEngine(new DESedeEngine()), 8); +- } +- } ++ ++ // BEGIN android-removed ++ // public static class RFC3211 ++ // extends BaseWrapCipher ++ // { ++ // public RFC3211() ++ // { ++ // super(new RFC3211WrapEngine(new DESedeEngine()), 8); ++ // } ++ // } ++ // END android-removed + + /** + * DESede - the default for this is to generate a key in +@@ -217,43 +235,45 @@ + } + } + +- public static class AlgParamGen +- extends BaseAlgorithmParameterGenerator +- { +- protected void engineInit( +- AlgorithmParameterSpec genParamSpec, +- SecureRandom random) +- throws InvalidAlgorithmParameterException +- { +- throw new InvalidAlgorithmParameterException("No supported AlgorithmParameterSpec for DES parameter generation."); +- } +- +- protected AlgorithmParameters engineGenerateParameters() +- { +- byte[] iv = new byte[8]; +- +- if (random == null) +- { +- random = new SecureRandom(); +- } +- +- random.nextBytes(iv); +- +- AlgorithmParameters params; +- +- try +- { +- params = AlgorithmParameters.getInstance("DES", BouncyCastleProvider.PROVIDER_NAME); +- params.init(new IvParameterSpec(iv)); +- } +- catch (Exception e) +- { +- throw new RuntimeException(e.getMessage()); +- } +- +- return params; +- } +- } ++ // BEGIN android-removed ++ // public static class AlgParamGen ++ // extends BaseAlgorithmParameterGenerator ++ // { ++ // protected void engineInit( ++ // AlgorithmParameterSpec genParamSpec, ++ // SecureRandom random) ++ // throws InvalidAlgorithmParameterException ++ // { ++ // throw new InvalidAlgorithmParameterException("No supported AlgorithmParameterSpec for DES parameter generation."); ++ // } ++ // ++ // protected AlgorithmParameters engineGenerateParameters() ++ // { ++ // byte[] iv = new byte[8]; ++ // ++ // if (random == null) ++ // { ++ // random = new SecureRandom(); ++ // } ++ // ++ // random.nextBytes(iv); ++ // ++ // AlgorithmParameters params; ++ // ++ // try ++ // { ++ // params = AlgorithmParameters.getInstance("DES", BouncyCastleProvider.PROVIDER_NAME); ++ // params.init(new IvParameterSpec(iv)); ++ // } ++ // catch (Exception e) ++ // { ++ // throw new RuntimeException(e.getMessage()); ++ // } ++ // ++ // return params; ++ // } ++ // } ++ // END android-removed + + static public class KeyFactory + extends BaseSecretKeyFactory +@@ -337,18 +357,28 @@ + public void configure(ConfigurableProvider provider) + { + provider.addAlgorithm("Cipher.DESEDE", PREFIX + "$ECB"); +- provider.addAlgorithm("Cipher." + PKCSObjectIdentifiers.des_EDE3_CBC, PREFIX + "$CBC"); ++ // BEGIN android-removed ++ // provider.addAlgorithm("Cipher." + PKCSObjectIdentifiers.des_EDE3_CBC, PREFIX + "$CBC"); ++ // END android-removed + provider.addAlgorithm("Cipher.DESEDEWRAP", PREFIX + "$Wrap"); +- provider.addAlgorithm("Cipher." + PKCSObjectIdentifiers.id_alg_CMS3DESwrap, PREFIX + "$Wrap"); +- provider.addAlgorithm("Cipher.DESEDERFC3211WRAP", PREFIX + "$RFC3211"); ++ // BEGIN android-changed ++ provider.addAlgorithm("Alg.Alias.Cipher." + PKCSObjectIdentifiers.id_alg_CMS3DESwrap, "DESEDEWRAP"); ++ // END android-changed ++ // BEGIN android-removed ++ // provider.addAlgorithm("Cipher.DESEDERFC3211WRAP", PREFIX + "$RFC3211"); ++ // END android-removed + + if (provider.hasAlgorithm("MessageDigest", "SHA-1")) + { + provider.addAlgorithm("Cipher.PBEWITHSHAAND3-KEYTRIPLEDES-CBC", PREFIX + "$PBEWithSHAAndDES3Key"); +- provider.addAlgorithm("Cipher.BROKENPBEWITHSHAAND3-KEYTRIPLEDES-CBC", PREFIX + "$BrokePBEWithSHAAndDES3Key"); +- provider.addAlgorithm("Cipher.OLDPBEWITHSHAAND3-KEYTRIPLEDES-CBC", PREFIX + "$OldPBEWithSHAAndDES3Key"); ++ // BEGIN android-removed ++ // provider.addAlgorithm("Cipher.BROKENPBEWITHSHAAND3-KEYTRIPLEDES-CBC", PREFIX + "$BrokePBEWithSHAAndDES3Key"); ++ // provider.addAlgorithm("Cipher.OLDPBEWITHSHAAND3-KEYTRIPLEDES-CBC", PREFIX + "$OldPBEWithSHAAndDES3Key"); ++ // END android-removed + provider.addAlgorithm("Cipher.PBEWITHSHAAND2-KEYTRIPLEDES-CBC", PREFIX + "$PBEWithSHAAndDES2Key"); +- provider.addAlgorithm("Cipher.BROKENPBEWITHSHAAND2-KEYTRIPLEDES-CBC", PREFIX + "$BrokePBEWithSHAAndDES2Key"); ++ // BEGIN android-removed ++ // provider.addAlgorithm("Cipher.BROKENPBEWITHSHAAND2-KEYTRIPLEDES-CBC", PREFIX + "$BrokePBEWithSHAAndDES2Key"); ++ // END android-removed + provider.addAlgorithm("Alg.Alias.Cipher." + PKCSObjectIdentifiers.pbeWithSHAAnd3_KeyTripleDES_CBC, "PBEWITHSHAAND3-KEYTRIPLEDES-CBC"); + provider.addAlgorithm("Alg.Alias.Cipher." + PKCSObjectIdentifiers.pbeWithSHAAnd2_KeyTripleDES_CBC, "PBEWITHSHAAND2-KEYTRIPLEDES-CBC"); + provider.addAlgorithm("Alg.Alias.Cipher.PBEWITHSHA1ANDDESEDE", "PBEWITHSHAAND3-KEYTRIPLEDES-CBC"); +@@ -357,31 +387,37 @@ + } + + provider.addAlgorithm("KeyGenerator.DESEDE", PREFIX + "$KeyGenerator"); +- provider.addAlgorithm("KeyGenerator." + PKCSObjectIdentifiers.des_EDE3_CBC, PREFIX + "$KeyGenerator3"); +- provider.addAlgorithm("KeyGenerator.DESEDEWRAP", PREFIX + "$KeyGenerator"); ++ // BEGIN android-removed ++ // provider.addAlgorithm("KeyGenerator." + PKCSObjectIdentifiers.des_EDE3_CBC, PREFIX + "$KeyGenerator3"); ++ // provider.addAlgorithm("KeyGenerator.DESEDEWRAP", PREFIX + "$KeyGenerator"); ++ // END android-removed + + provider.addAlgorithm("SecretKeyFactory.DESEDE", PREFIX + "$KeyFactory"); + +- provider.addAlgorithm("Mac.DESEDECMAC", PREFIX + "$CMAC"); +- provider.addAlgorithm("Mac.DESEDEMAC", PREFIX + "$CBCMAC"); +- provider.addAlgorithm("Alg.Alias.Mac.DESEDE", "DESEDEMAC"); +- +- provider.addAlgorithm("Mac.DESEDEMAC/CFB8", PREFIX + "$DESedeCFB8"); +- provider.addAlgorithm("Alg.Alias.Mac.DESEDE/CFB8", "DESEDEMAC/CFB8"); +- +- provider.addAlgorithm("Mac.DESEDEMAC64", PREFIX + "$DESede64"); +- provider.addAlgorithm("Alg.Alias.Mac.DESEDE64", "DESEDEMAC64"); +- +- provider.addAlgorithm("Mac.DESEDEMAC64WITHISO7816-4PADDING", PREFIX + "$DESede64with7816d4"); +- provider.addAlgorithm("Alg.Alias.Mac.DESEDE64WITHISO7816-4PADDING", "DESEDEMAC64WITHISO7816-4PADDING"); +- provider.addAlgorithm("Alg.Alias.Mac.DESEDEISO9797ALG1MACWITHISO7816-4PADDING", "DESEDEMAC64WITHISO7816-4PADDING"); +- provider.addAlgorithm("Alg.Alias.Mac.DESEDEISO9797ALG1WITHISO7816-4PADDING", "DESEDEMAC64WITHISO7816-4PADDING"); ++ // BEGIN android-removed ++ // provider.addAlgorithm("Mac.DESEDECMAC", PREFIX + "$CMAC"); ++ // provider.addAlgorithm("Mac.DESEDEMAC", PREFIX + "$CBCMAC"); ++ // provider.addAlgorithm("Alg.Alias.Mac.DESEDE", "DESEDEMAC"); ++ // ++ // provider.addAlgorithm("Mac.DESEDEMAC/CFB8", PREFIX + "$DESedeCFB8"); ++ // provider.addAlgorithm("Alg.Alias.Mac.DESEDE/CFB8", "DESEDEMAC/CFB8"); ++ // ++ // provider.addAlgorithm("Mac.DESEDEMAC64", PREFIX + "$DESede64"); ++ // provider.addAlgorithm("Alg.Alias.Mac.DESEDE64", "DESEDEMAC64"); ++ // ++ // provider.addAlgorithm("Mac.DESEDEMAC64WITHISO7816-4PADDING", PREFIX + "$DESede64with7816d4"); ++ // provider.addAlgorithm("Alg.Alias.Mac.DESEDE64WITHISO7816-4PADDING", "DESEDEMAC64WITHISO7816-4PADDING"); ++ // provider.addAlgorithm("Alg.Alias.Mac.DESEDEISO9797ALG1MACWITHISO7816-4PADDING", "DESEDEMAC64WITHISO7816-4PADDING"); ++ // provider.addAlgorithm("Alg.Alias.Mac.DESEDEISO9797ALG1WITHISO7816-4PADDING", "DESEDEMAC64WITHISO7816-4PADDING"); ++ // END android-removed + + provider.addAlgorithm("AlgorithmParameters.DESEDE", PACKAGE + ".util.IvAlgorithmParameters"); + provider.addAlgorithm("Alg.Alias.AlgorithmParameters." + PKCSObjectIdentifiers.des_EDE3_CBC, "DESEDE"); + +- provider.addAlgorithm("AlgorithmParameterGenerator.DESEDE", PREFIX + "$AlgParamGen"); +- provider.addAlgorithm("Alg.Alias.AlgorithmParameterGenerator." + PKCSObjectIdentifiers.des_EDE3_CBC, "DESEDE"); ++ // BEGIN android-removed ++ // provider.addAlgorithm("AlgorithmParameterGenerator.DESEDE", PREFIX + "$AlgParamGen"); ++ // provider.addAlgorithm("Alg.Alias.AlgorithmParameterGenerator." + PKCSObjectIdentifiers.des_EDE3_CBC, "DESEDE"); ++ // END android-removed + } + } + } +diff -Naur bcprov-jdk15on-147.orig/org/bouncycastle/jcajce/provider/symmetric/util/BaseAlgorithmParameters.java bcprov-jdk15on-147/org/bouncycastle/jcajce/provider/symmetric/util/BaseAlgorithmParameters.java +--- bcprov-jdk15on-147.orig/org/bouncycastle/jcajce/provider/symmetric/util/BaseAlgorithmParameters.java 2012-03-22 15:11:48.000000000 +0000 ++++ bcprov-jdk15on-147/org/bouncycastle/jcajce/provider/symmetric/util/BaseAlgorithmParameters.java 2012-09-11 00:12:44.000000000 +0000 +@@ -7,13 +7,17 @@ + + import javax.crypto.spec.IvParameterSpec; + import javax.crypto.spec.PBEParameterSpec; +-import javax.crypto.spec.RC2ParameterSpec; ++// BEGIN android-removed ++// import javax.crypto.spec.RC2ParameterSpec; ++// END android-removed + + import org.bouncycastle.asn1.ASN1Encoding; + import org.bouncycastle.asn1.ASN1Primitive; + import org.bouncycastle.asn1.pkcs.PBKDF2Params; + import org.bouncycastle.asn1.pkcs.PKCS12PBEParams; +-import org.bouncycastle.asn1.pkcs.RC2CBCParameter; ++// BEGIN android-removed ++// import org.bouncycastle.asn1.pkcs.RC2CBCParameter; ++// END android-removed + import org.bouncycastle.util.Arrays; + + public abstract class BaseAlgorithmParameters +@@ -39,177 +43,179 @@ + protected abstract AlgorithmParameterSpec localEngineGetParameterSpec(Class paramSpec) + throws InvalidParameterSpecException; + +- public static class RC2AlgorithmParameters +- extends BaseAlgorithmParameters +- { +- private static final short[] table = { +- 0xbd, 0x56, 0xea, 0xf2, 0xa2, 0xf1, 0xac, 0x2a, 0xb0, 0x93, 0xd1, 0x9c, 0x1b, 0x33, 0xfd, 0xd0, +- 0x30, 0x04, 0xb6, 0xdc, 0x7d, 0xdf, 0x32, 0x4b, 0xf7, 0xcb, 0x45, 0x9b, 0x31, 0xbb, 0x21, 0x5a, +- 0x41, 0x9f, 0xe1, 0xd9, 0x4a, 0x4d, 0x9e, 0xda, 0xa0, 0x68, 0x2c, 0xc3, 0x27, 0x5f, 0x80, 0x36, +- 0x3e, 0xee, 0xfb, 0x95, 0x1a, 0xfe, 0xce, 0xa8, 0x34, 0xa9, 0x13, 0xf0, 0xa6, 0x3f, 0xd8, 0x0c, +- 0x78, 0x24, 0xaf, 0x23, 0x52, 0xc1, 0x67, 0x17, 0xf5, 0x66, 0x90, 0xe7, 0xe8, 0x07, 0xb8, 0x60, +- 0x48, 0xe6, 0x1e, 0x53, 0xf3, 0x92, 0xa4, 0x72, 0x8c, 0x08, 0x15, 0x6e, 0x86, 0x00, 0x84, 0xfa, +- 0xf4, 0x7f, 0x8a, 0x42, 0x19, 0xf6, 0xdb, 0xcd, 0x14, 0x8d, 0x50, 0x12, 0xba, 0x3c, 0x06, 0x4e, +- 0xec, 0xb3, 0x35, 0x11, 0xa1, 0x88, 0x8e, 0x2b, 0x94, 0x99, 0xb7, 0x71, 0x74, 0xd3, 0xe4, 0xbf, +- 0x3a, 0xde, 0x96, 0x0e, 0xbc, 0x0a, 0xed, 0x77, 0xfc, 0x37, 0x6b, 0x03, 0x79, 0x89, 0x62, 0xc6, +- 0xd7, 0xc0, 0xd2, 0x7c, 0x6a, 0x8b, 0x22, 0xa3, 0x5b, 0x05, 0x5d, 0x02, 0x75, 0xd5, 0x61, 0xe3, +- 0x18, 0x8f, 0x55, 0x51, 0xad, 0x1f, 0x0b, 0x5e, 0x85, 0xe5, 0xc2, 0x57, 0x63, 0xca, 0x3d, 0x6c, +- 0xb4, 0xc5, 0xcc, 0x70, 0xb2, 0x91, 0x59, 0x0d, 0x47, 0x20, 0xc8, 0x4f, 0x58, 0xe0, 0x01, 0xe2, +- 0x16, 0x38, 0xc4, 0x6f, 0x3b, 0x0f, 0x65, 0x46, 0xbe, 0x7e, 0x2d, 0x7b, 0x82, 0xf9, 0x40, 0xb5, +- 0x1d, 0x73, 0xf8, 0xeb, 0x26, 0xc7, 0x87, 0x97, 0x25, 0x54, 0xb1, 0x28, 0xaa, 0x98, 0x9d, 0xa5, +- 0x64, 0x6d, 0x7a, 0xd4, 0x10, 0x81, 0x44, 0xef, 0x49, 0xd6, 0xae, 0x2e, 0xdd, 0x76, 0x5c, 0x2f, +- 0xa7, 0x1c, 0xc9, 0x09, 0x69, 0x9a, 0x83, 0xcf, 0x29, 0x39, 0xb9, 0xe9, 0x4c, 0xff, 0x43, 0xab +- }; +- +- private static final short[] ekb = { +- 0x5d, 0xbe, 0x9b, 0x8b, 0x11, 0x99, 0x6e, 0x4d, 0x59, 0xf3, 0x85, 0xa6, 0x3f, 0xb7, 0x83, 0xc5, +- 0xe4, 0x73, 0x6b, 0x3a, 0x68, 0x5a, 0xc0, 0x47, 0xa0, 0x64, 0x34, 0x0c, 0xf1, 0xd0, 0x52, 0xa5, +- 0xb9, 0x1e, 0x96, 0x43, 0x41, 0xd8, 0xd4, 0x2c, 0xdb, 0xf8, 0x07, 0x77, 0x2a, 0xca, 0xeb, 0xef, +- 0x10, 0x1c, 0x16, 0x0d, 0x38, 0x72, 0x2f, 0x89, 0xc1, 0xf9, 0x80, 0xc4, 0x6d, 0xae, 0x30, 0x3d, +- 0xce, 0x20, 0x63, 0xfe, 0xe6, 0x1a, 0xc7, 0xb8, 0x50, 0xe8, 0x24, 0x17, 0xfc, 0x25, 0x6f, 0xbb, +- 0x6a, 0xa3, 0x44, 0x53, 0xd9, 0xa2, 0x01, 0xab, 0xbc, 0xb6, 0x1f, 0x98, 0xee, 0x9a, 0xa7, 0x2d, +- 0x4f, 0x9e, 0x8e, 0xac, 0xe0, 0xc6, 0x49, 0x46, 0x29, 0xf4, 0x94, 0x8a, 0xaf, 0xe1, 0x5b, 0xc3, +- 0xb3, 0x7b, 0x57, 0xd1, 0x7c, 0x9c, 0xed, 0x87, 0x40, 0x8c, 0xe2, 0xcb, 0x93, 0x14, 0xc9, 0x61, +- 0x2e, 0xe5, 0xcc, 0xf6, 0x5e, 0xa8, 0x5c, 0xd6, 0x75, 0x8d, 0x62, 0x95, 0x58, 0x69, 0x76, 0xa1, +- 0x4a, 0xb5, 0x55, 0x09, 0x78, 0x33, 0x82, 0xd7, 0xdd, 0x79, 0xf5, 0x1b, 0x0b, 0xde, 0x26, 0x21, +- 0x28, 0x74, 0x04, 0x97, 0x56, 0xdf, 0x3c, 0xf0, 0x37, 0x39, 0xdc, 0xff, 0x06, 0xa4, 0xea, 0x42, +- 0x08, 0xda, 0xb4, 0x71, 0xb0, 0xcf, 0x12, 0x7a, 0x4e, 0xfa, 0x6c, 0x1d, 0x84, 0x00, 0xc8, 0x7f, +- 0x91, 0x45, 0xaa, 0x2b, 0xc2, 0xb1, 0x8f, 0xd5, 0xba, 0xf2, 0xad, 0x19, 0xb2, 0x67, 0x36, 0xf7, +- 0x0f, 0x0a, 0x92, 0x7d, 0xe3, 0x9d, 0xe9, 0x90, 0x3e, 0x23, 0x27, 0x66, 0x13, 0xec, 0x81, 0x15, +- 0xbd, 0x22, 0xbf, 0x9f, 0x7e, 0xa9, 0x51, 0x4b, 0x4c, 0xfb, 0x02, 0xd3, 0x70, 0x86, 0x31, 0xe7, +- 0x3b, 0x05, 0x03, 0x54, 0x60, 0x48, 0x65, 0x18, 0xd2, 0xcd, 0x5f, 0x32, 0x88, 0x0e, 0x35, 0xfd +- }; +- +- private byte[] iv; +- private int parameterVersion = 58; +- +- protected byte[] engineGetEncoded() +- { +- return Arrays.clone(iv); +- } +- +- protected byte[] engineGetEncoded( +- String format) +- throws IOException +- { +- if (this.isASN1FormatString(format)) +- { +- if (parameterVersion == -1) +- { +- return new RC2CBCParameter(engineGetEncoded()).getEncoded(); +- } +- else +- { +- return new RC2CBCParameter(parameterVersion, engineGetEncoded()).getEncoded(); +- } +- } +- +- if (format.equals("RAW")) +- { +- return engineGetEncoded(); +- } +- +- return null; +- } +- +- protected AlgorithmParameterSpec localEngineGetParameterSpec( +- Class paramSpec) +- throws InvalidParameterSpecException +- { +- if (paramSpec == RC2ParameterSpec.class) +- { +- if (parameterVersion != -1) +- { +- if (parameterVersion < 256) +- { +- return new RC2ParameterSpec(ekb[parameterVersion], iv); +- } +- else +- { +- return new RC2ParameterSpec(parameterVersion, iv); +- } +- } +- } +- +- if (paramSpec == IvParameterSpec.class) +- { +- return new IvParameterSpec(iv); +- } +- +- throw new InvalidParameterSpecException("unknown parameter spec passed to RC2 parameters object."); +- } +- +- protected void engineInit( +- AlgorithmParameterSpec paramSpec) +- throws InvalidParameterSpecException +- { +- if (paramSpec instanceof IvParameterSpec) +- { +- this.iv = ((IvParameterSpec)paramSpec).getIV(); +- } +- else if (paramSpec instanceof RC2ParameterSpec) +- { +- int effKeyBits = ((RC2ParameterSpec)paramSpec).getEffectiveKeyBits(); +- if (effKeyBits != -1) +- { +- if (effKeyBits < 256) +- { +- parameterVersion = table[effKeyBits]; +- } +- else +- { +- parameterVersion = effKeyBits; +- } +- } +- +- this.iv = ((RC2ParameterSpec)paramSpec).getIV(); +- } +- else +- { +- throw new InvalidParameterSpecException("IvParameterSpec or RC2ParameterSpec required to initialise a RC2 parameters algorithm parameters object"); +- } +- } +- +- protected void engineInit( +- byte[] params) +- throws IOException +- { +- this.iv = Arrays.clone(params); +- } +- +- protected void engineInit( +- byte[] params, +- String format) +- throws IOException +- { +- if (this.isASN1FormatString(format)) +- { +- RC2CBCParameter p = RC2CBCParameter.getInstance(ASN1Primitive.fromByteArray(params)); +- +- if (p.getRC2ParameterVersion() != null) +- { +- parameterVersion = p.getRC2ParameterVersion().intValue(); +- } +- +- iv = p.getIV(); +- +- return; +- } +- +- if (format.equals("RAW")) +- { +- engineInit(params); +- return; +- } +- +- throw new IOException("Unknown parameters format in IV parameters object"); +- } +- +- protected String engineToString() +- { +- return "RC2 Parameters"; +- } +- } ++ // BEGIN android-removed ++ // public static class RC2AlgorithmParameters ++ // extends BaseAlgorithmParameters ++ // { ++ // private static final short[] table = { ++ // 0xbd, 0x56, 0xea, 0xf2, 0xa2, 0xf1, 0xac, 0x2a, 0xb0, 0x93, 0xd1, 0x9c, 0x1b, 0x33, 0xfd, 0xd0, ++ // 0x30, 0x04, 0xb6, 0xdc, 0x7d, 0xdf, 0x32, 0x4b, 0xf7, 0xcb, 0x45, 0x9b, 0x31, 0xbb, 0x21, 0x5a, ++ // 0x41, 0x9f, 0xe1, 0xd9, 0x4a, 0x4d, 0x9e, 0xda, 0xa0, 0x68, 0x2c, 0xc3, 0x27, 0x5f, 0x80, 0x36, ++ // 0x3e, 0xee, 0xfb, 0x95, 0x1a, 0xfe, 0xce, 0xa8, 0x34, 0xa9, 0x13, 0xf0, 0xa6, 0x3f, 0xd8, 0x0c, ++ // 0x78, 0x24, 0xaf, 0x23, 0x52, 0xc1, 0x67, 0x17, 0xf5, 0x66, 0x90, 0xe7, 0xe8, 0x07, 0xb8, 0x60, ++ // 0x48, 0xe6, 0x1e, 0x53, 0xf3, 0x92, 0xa4, 0x72, 0x8c, 0x08, 0x15, 0x6e, 0x86, 0x00, 0x84, 0xfa, ++ // 0xf4, 0x7f, 0x8a, 0x42, 0x19, 0xf6, 0xdb, 0xcd, 0x14, 0x8d, 0x50, 0x12, 0xba, 0x3c, 0x06, 0x4e, ++ // 0xec, 0xb3, 0x35, 0x11, 0xa1, 0x88, 0x8e, 0x2b, 0x94, 0x99, 0xb7, 0x71, 0x74, 0xd3, 0xe4, 0xbf, ++ // 0x3a, 0xde, 0x96, 0x0e, 0xbc, 0x0a, 0xed, 0x77, 0xfc, 0x37, 0x6b, 0x03, 0x79, 0x89, 0x62, 0xc6, ++ // 0xd7, 0xc0, 0xd2, 0x7c, 0x6a, 0x8b, 0x22, 0xa3, 0x5b, 0x05, 0x5d, 0x02, 0x75, 0xd5, 0x61, 0xe3, ++ // 0x18, 0x8f, 0x55, 0x51, 0xad, 0x1f, 0x0b, 0x5e, 0x85, 0xe5, 0xc2, 0x57, 0x63, 0xca, 0x3d, 0x6c, ++ // 0xb4, 0xc5, 0xcc, 0x70, 0xb2, 0x91, 0x59, 0x0d, 0x47, 0x20, 0xc8, 0x4f, 0x58, 0xe0, 0x01, 0xe2, ++ // 0x16, 0x38, 0xc4, 0x6f, 0x3b, 0x0f, 0x65, 0x46, 0xbe, 0x7e, 0x2d, 0x7b, 0x82, 0xf9, 0x40, 0xb5, ++ // 0x1d, 0x73, 0xf8, 0xeb, 0x26, 0xc7, 0x87, 0x97, 0x25, 0x54, 0xb1, 0x28, 0xaa, 0x98, 0x9d, 0xa5, ++ // 0x64, 0x6d, 0x7a, 0xd4, 0x10, 0x81, 0x44, 0xef, 0x49, 0xd6, 0xae, 0x2e, 0xdd, 0x76, 0x5c, 0x2f, ++ // 0xa7, 0x1c, 0xc9, 0x09, 0x69, 0x9a, 0x83, 0xcf, 0x29, 0x39, 0xb9, 0xe9, 0x4c, 0xff, 0x43, 0xab ++ // }; ++ // ++ // private static final short[] ekb = { ++ // 0x5d, 0xbe, 0x9b, 0x8b, 0x11, 0x99, 0x6e, 0x4d, 0x59, 0xf3, 0x85, 0xa6, 0x3f, 0xb7, 0x83, 0xc5, ++ // 0xe4, 0x73, 0x6b, 0x3a, 0x68, 0x5a, 0xc0, 0x47, 0xa0, 0x64, 0x34, 0x0c, 0xf1, 0xd0, 0x52, 0xa5, ++ // 0xb9, 0x1e, 0x96, 0x43, 0x41, 0xd8, 0xd4, 0x2c, 0xdb, 0xf8, 0x07, 0x77, 0x2a, 0xca, 0xeb, 0xef, ++ // 0x10, 0x1c, 0x16, 0x0d, 0x38, 0x72, 0x2f, 0x89, 0xc1, 0xf9, 0x80, 0xc4, 0x6d, 0xae, 0x30, 0x3d, ++ // 0xce, 0x20, 0x63, 0xfe, 0xe6, 0x1a, 0xc7, 0xb8, 0x50, 0xe8, 0x24, 0x17, 0xfc, 0x25, 0x6f, 0xbb, ++ // 0x6a, 0xa3, 0x44, 0x53, 0xd9, 0xa2, 0x01, 0xab, 0xbc, 0xb6, 0x1f, 0x98, 0xee, 0x9a, 0xa7, 0x2d, ++ // 0x4f, 0x9e, 0x8e, 0xac, 0xe0, 0xc6, 0x49, 0x46, 0x29, 0xf4, 0x94, 0x8a, 0xaf, 0xe1, 0x5b, 0xc3, ++ // 0xb3, 0x7b, 0x57, 0xd1, 0x7c, 0x9c, 0xed, 0x87, 0x40, 0x8c, 0xe2, 0xcb, 0x93, 0x14, 0xc9, 0x61, ++ // 0x2e, 0xe5, 0xcc, 0xf6, 0x5e, 0xa8, 0x5c, 0xd6, 0x75, 0x8d, 0x62, 0x95, 0x58, 0x69, 0x76, 0xa1, ++ // 0x4a, 0xb5, 0x55, 0x09, 0x78, 0x33, 0x82, 0xd7, 0xdd, 0x79, 0xf5, 0x1b, 0x0b, 0xde, 0x26, 0x21, ++ // 0x28, 0x74, 0x04, 0x97, 0x56, 0xdf, 0x3c, 0xf0, 0x37, 0x39, 0xdc, 0xff, 0x06, 0xa4, 0xea, 0x42, ++ // 0x08, 0xda, 0xb4, 0x71, 0xb0, 0xcf, 0x12, 0x7a, 0x4e, 0xfa, 0x6c, 0x1d, 0x84, 0x00, 0xc8, 0x7f, ++ // 0x91, 0x45, 0xaa, 0x2b, 0xc2, 0xb1, 0x8f, 0xd5, 0xba, 0xf2, 0xad, 0x19, 0xb2, 0x67, 0x36, 0xf7, ++ // 0x0f, 0x0a, 0x92, 0x7d, 0xe3, 0x9d, 0xe9, 0x90, 0x3e, 0x23, 0x27, 0x66, 0x13, 0xec, 0x81, 0x15, ++ // 0xbd, 0x22, 0xbf, 0x9f, 0x7e, 0xa9, 0x51, 0x4b, 0x4c, 0xfb, 0x02, 0xd3, 0x70, 0x86, 0x31, 0xe7, ++ // 0x3b, 0x05, 0x03, 0x54, 0x60, 0x48, 0x65, 0x18, 0xd2, 0xcd, 0x5f, 0x32, 0x88, 0x0e, 0x35, 0xfd ++ // }; ++ // ++ // private byte[] iv; ++ // private int parameterVersion = 58; ++ // ++ // protected byte[] engineGetEncoded() ++ // { ++ // return Arrays.clone(iv); ++ // } ++ // ++ // protected byte[] engineGetEncoded( ++ // String format) ++ // throws IOException ++ // { ++ // if (this.isASN1FormatString(format)) ++ // { ++ // if (parameterVersion == -1) ++ // { ++ // return new RC2CBCParameter(engineGetEncoded()).getEncoded(); ++ // } ++ // else ++ // { ++ // return new RC2CBCParameter(parameterVersion, engineGetEncoded()).getEncoded(); ++ // } ++ // } ++ // ++ // if (format.equals("RAW")) ++ // { ++ // return engineGetEncoded(); ++ // } ++ // ++ // return null; ++ // } ++ // ++ // protected AlgorithmParameterSpec localEngineGetParameterSpec( ++ // Class paramSpec) ++ // throws InvalidParameterSpecException ++ // { ++ // if (paramSpec == RC2ParameterSpec.class) ++ // { ++ // if (parameterVersion != -1) ++ // { ++ // if (parameterVersion < 256) ++ // { ++ // return new RC2ParameterSpec(ekb[parameterVersion], iv); ++ // } ++ // else ++ // { ++ // return new RC2ParameterSpec(parameterVersion, iv); ++ // } ++ // } ++ // } ++ // ++ // if (paramSpec == IvParameterSpec.class) ++ // { ++ // return new IvParameterSpec(iv); ++ // } ++ // ++ // throw new InvalidParameterSpecException("unknown parameter spec passed to RC2 parameters object."); ++ // } ++ // ++ // protected void engineInit( ++ // AlgorithmParameterSpec paramSpec) ++ // throws InvalidParameterSpecException ++ // { ++ // if (paramSpec instanceof IvParameterSpec) ++ // { ++ // this.iv = ((IvParameterSpec)paramSpec).getIV(); ++ // } ++ // else if (paramSpec instanceof RC2ParameterSpec) ++ // { ++ // int effKeyBits = ((RC2ParameterSpec)paramSpec).getEffectiveKeyBits(); ++ // if (effKeyBits != -1) ++ // { ++ // if (effKeyBits < 256) ++ // { ++ // parameterVersion = table[effKeyBits]; ++ // } ++ // else ++ // { ++ // parameterVersion = effKeyBits; ++ // } ++ // } ++ // ++ // this.iv = ((RC2ParameterSpec)paramSpec).getIV(); ++ // } ++ // else ++ // { ++ // throw new InvalidParameterSpecException("IvParameterSpec or RC2ParameterSpec required to initialise a RC2 parameters algorithm parameters object"); ++ // } ++ // } ++ // ++ // protected void engineInit( ++ // byte[] params) ++ // throws IOException ++ // { ++ // this.iv = Arrays.clone(params); ++ // } ++ // ++ // protected void engineInit( ++ // byte[] params, ++ // String format) ++ // throws IOException ++ // { ++ // if (this.isASN1FormatString(format)) ++ // { ++ // RC2CBCParameter p = RC2CBCParameter.getInstance(ASN1Primitive.fromByteArray(params)); ++ // ++ // if (p.getRC2ParameterVersion() != null) ++ // { ++ // parameterVersion = p.getRC2ParameterVersion().intValue(); ++ // } ++ // ++ // iv = p.getIV(); ++ // ++ // return; ++ // } ++ // ++ // if (format.equals("RAW")) ++ // { ++ // engineInit(params); ++ // return; ++ // } ++ // ++ // throw new IOException("Unknown parameters format in IV parameters object"); ++ // } ++ // ++ // protected String engineToString() ++ // { ++ // return "RC2 Parameters"; ++ // } ++ // } ++ // END android-removed + + public static class PBKDF2 + extends BaseAlgorithmParameters +diff -Naur bcprov-jdk15on-147.orig/org/bouncycastle/jcajce/provider/symmetric/util/BaseBlockCipher.java bcprov-jdk15on-147/org/bouncycastle/jcajce/provider/symmetric/util/BaseBlockCipher.java +--- bcprov-jdk15on-147.orig/org/bouncycastle/jcajce/provider/symmetric/util/BaseBlockCipher.java 2012-03-22 15:11:48.000000000 +0000 ++++ bcprov-jdk15on-147/org/bouncycastle/jcajce/provider/symmetric/util/BaseBlockCipher.java 2012-09-11 00:12:44.000000000 +0000 +@@ -17,8 +17,10 @@ + import javax.crypto.ShortBufferException; + import javax.crypto.spec.IvParameterSpec; + import javax.crypto.spec.PBEParameterSpec; +-import javax.crypto.spec.RC2ParameterSpec; +-import javax.crypto.spec.RC5ParameterSpec; ++// BEGIN android-removed ++// import javax.crypto.spec.RC2ParameterSpec; ++// import javax.crypto.spec.RC5ParameterSpec; ++// END android-removed + + import org.bouncycastle.crypto.BufferedBlockCipher; + import org.bouncycastle.crypto.CipherParameters; +@@ -29,12 +31,18 @@ + import org.bouncycastle.crypto.modes.CCMBlockCipher; + import org.bouncycastle.crypto.modes.CFBBlockCipher; + import org.bouncycastle.crypto.modes.CTSBlockCipher; +-import org.bouncycastle.crypto.modes.EAXBlockCipher; ++// BEGIN android-removed ++// import org.bouncycastle.crypto.modes.EAXBlockCipher; ++// END android-removed + import org.bouncycastle.crypto.modes.GCMBlockCipher; +-import org.bouncycastle.crypto.modes.GOFBBlockCipher; ++// BEGIN android-removed ++// import org.bouncycastle.crypto.modes.GOFBBlockCipher; ++// END android-removed + import org.bouncycastle.crypto.modes.OFBBlockCipher; +-import org.bouncycastle.crypto.modes.OpenPGPCFBBlockCipher; +-import org.bouncycastle.crypto.modes.PGPCFBBlockCipher; ++// BEGIN android-removed ++// import org.bouncycastle.crypto.modes.OpenPGPCFBBlockCipher; ++// import org.bouncycastle.crypto.modes.PGPCFBBlockCipher; ++// END android-removed + import org.bouncycastle.crypto.modes.SICBlockCipher; + import org.bouncycastle.crypto.paddings.BlockCipherPadding; + import org.bouncycastle.crypto.paddings.ISO10126d2Padding; +@@ -46,11 +54,17 @@ + import org.bouncycastle.crypto.params.KeyParameter; + import org.bouncycastle.crypto.params.ParametersWithIV; + import org.bouncycastle.crypto.params.ParametersWithRandom; +-import org.bouncycastle.crypto.params.ParametersWithSBox; ++// BEGIN android-removed ++// import org.bouncycastle.crypto.params.ParametersWithSBox; ++// END android-removed + import org.bouncycastle.crypto.params.RC2Parameters; +-import org.bouncycastle.crypto.params.RC5Parameters; ++// BEGIN android-removed ++// import org.bouncycastle.crypto.params.RC5Parameters; ++// END android-removed + import org.bouncycastle.jce.provider.BouncyCastleProvider; +-import org.bouncycastle.jce.spec.GOST28147ParameterSpec; ++// BEGIN android-removed ++// import org.bouncycastle.jce.spec.GOST28147ParameterSpec; ++// END android-removed + import org.bouncycastle.jce.spec.RepeatedSecretKeySpec; + import org.bouncycastle.util.Strings; + +@@ -63,11 +77,15 @@ + // + private Class[] availableSpecs = + { +- RC2ParameterSpec.class, +- RC5ParameterSpec.class, ++ // BEGIN android-removed ++ // RC2ParameterSpec.class, ++ // RC5ParameterSpec.class, ++ // END android-removed + IvParameterSpec.class, + PBEParameterSpec.class, +- GOST28147ParameterSpec.class ++ // BEGIN android-removed ++ // GOST28147ParameterSpec.class ++ // END android-removed + }; + + private org.bouncycastle.crypto.BlockCipher baseEngine; +@@ -222,20 +240,22 @@ + new CFBBlockCipher(baseEngine, 8 * baseEngine.getBlockSize())); + } + } +- else if (modeName.startsWith("PGP")) +- { +- boolean inlineIV = modeName.equalsIgnoreCase("PGPCFBwithIV"); +- +- ivLength = baseEngine.getBlockSize(); +- cipher = new BufferedGenericBlockCipher( +- new PGPCFBBlockCipher(baseEngine, inlineIV)); +- } +- else if (modeName.equalsIgnoreCase("OpenPGPCFB")) +- { +- ivLength = 0; +- cipher = new BufferedGenericBlockCipher( +- new OpenPGPCFBBlockCipher(baseEngine)); +- } ++ // BEGIN android-removed ++ // else if (modeName.startsWith("PGP")) ++ // { ++ // boolean inlineIV = modeName.equalsIgnoreCase("PGPCFBwithIV"); ++ ++ // ivLength = baseEngine.getBlockSize(); ++ // cipher = new BufferedGenericBlockCipher( ++ // new PGPCFBBlockCipher(baseEngine, inlineIV)); ++ // } ++ // else if (modeName.equalsIgnoreCase("OpenPGPCFB")) ++ // { ++ // ivLength = 0; ++ // cipher = new BufferedGenericBlockCipher( ++ // new OpenPGPCFBBlockCipher(baseEngine)); ++ // } ++ // END android-removed + else if (modeName.startsWith("SIC")) + { + ivLength = baseEngine.getBlockSize(); +@@ -252,12 +272,14 @@ + cipher = new BufferedGenericBlockCipher(new BufferedBlockCipher( + new SICBlockCipher(baseEngine))); + } +- else if (modeName.startsWith("GOFB")) +- { +- ivLength = baseEngine.getBlockSize(); +- cipher = new BufferedGenericBlockCipher(new BufferedBlockCipher( +- new GOFBBlockCipher(baseEngine))); +- } ++ // BEGIN android-removed ++ // else if (modeName.startsWith("GOFB")) ++ // { ++ // ivLength = baseEngine.getBlockSize(); ++ // cipher = new BufferedGenericBlockCipher(new BufferedBlockCipher( ++ // new GOFBBlockCipher(baseEngine))); ++ // } ++ // END android-removed + else if (modeName.startsWith("CTS")) + { + ivLength = baseEngine.getBlockSize(); +@@ -268,11 +290,13 @@ + ivLength = baseEngine.getBlockSize(); + cipher = new AEADGenericBlockCipher(new CCMBlockCipher(baseEngine)); + } +- else if (modeName.startsWith("EAX")) +- { +- ivLength = baseEngine.getBlockSize(); +- cipher = new AEADGenericBlockCipher(new EAXBlockCipher(baseEngine)); +- } ++ // BEGIN android-removed ++ // else if (modeName.startsWith("EAX")) ++ // { ++ // ivLength = baseEngine.getBlockSize(); ++ // cipher = new AEADGenericBlockCipher(new EAXBlockCipher(baseEngine)); ++ // } ++ // END android-removed + else if (modeName.startsWith("GCM")) + { + ivLength = baseEngine.getBlockSize(); +@@ -441,63 +465,65 @@ + param = new KeyParameter(key.getEncoded()); + } + } +- else if (params instanceof GOST28147ParameterSpec) +- { +- GOST28147ParameterSpec gost28147Param = (GOST28147ParameterSpec)params; +- +- param = new ParametersWithSBox( +- new KeyParameter(key.getEncoded()), ((GOST28147ParameterSpec)params).getSbox()); +- +- if (gost28147Param.getIV() != null && ivLength != 0) +- { +- param = new ParametersWithIV(param, gost28147Param.getIV()); +- ivParam = (ParametersWithIV)param; +- } +- } +- else if (params instanceof RC2ParameterSpec) +- { +- RC2ParameterSpec rc2Param = (RC2ParameterSpec)params; +- +- param = new RC2Parameters(key.getEncoded(), ((RC2ParameterSpec)params).getEffectiveKeyBits()); +- +- if (rc2Param.getIV() != null && ivLength != 0) +- { +- param = new ParametersWithIV(param, rc2Param.getIV()); +- ivParam = (ParametersWithIV)param; +- } +- } +- else if (params instanceof RC5ParameterSpec) +- { +- RC5ParameterSpec rc5Param = (RC5ParameterSpec)params; +- +- param = new RC5Parameters(key.getEncoded(), ((RC5ParameterSpec)params).getRounds()); +- if (baseEngine.getAlgorithmName().startsWith("RC5")) +- { +- if (baseEngine.getAlgorithmName().equals("RC5-32")) +- { +- if (rc5Param.getWordSize() != 32) +- { +- throw new InvalidAlgorithmParameterException("RC5 already set up for a word size of 32 not " + rc5Param.getWordSize() + "."); +- } +- } +- else if (baseEngine.getAlgorithmName().equals("RC5-64")) +- { +- if (rc5Param.getWordSize() != 64) +- { +- throw new InvalidAlgorithmParameterException("RC5 already set up for a word size of 64 not " + rc5Param.getWordSize() + "."); +- } +- } +- } +- else +- { +- throw new InvalidAlgorithmParameterException("RC5 parameters passed to a cipher that is not RC5."); +- } +- if ((rc5Param.getIV() != null) && (ivLength != 0)) +- { +- param = new ParametersWithIV(param, rc5Param.getIV()); +- ivParam = (ParametersWithIV)param; +- } +- } ++ // BEGIN android-removed ++ // else if (params instanceof GOST28147ParameterSpec) ++ // { ++ // GOST28147ParameterSpec gost28147Param = (GOST28147ParameterSpec)params; ++ // ++ // param = new ParametersWithSBox( ++ // new KeyParameter(key.getEncoded()), ((GOST28147ParameterSpec)params).getSbox()); ++ // ++ // if (gost28147Param.getIV() != null && ivLength != 0) ++ // { ++ // param = new ParametersWithIV(param, gost28147Param.getIV()); ++ // ivParam = (ParametersWithIV)param; ++ // } ++ // } ++ // else if (params instanceof RC2ParameterSpec) ++ // { ++ // RC2ParameterSpec rc2Param = (RC2ParameterSpec)params; ++ // ++ // param = new RC2Parameters(key.getEncoded(), ((RC2ParameterSpec)params).getEffectiveKeyBits()); ++ // ++ // if (rc2Param.getIV() != null && ivLength != 0) ++ // { ++ // param = new ParametersWithIV(param, rc2Param.getIV()); ++ // ivParam = (ParametersWithIV)param; ++ // } ++ // } ++ // else if (params instanceof RC5ParameterSpec) ++ // { ++ // RC5ParameterSpec rc5Param = (RC5ParameterSpec)params; ++ // ++ // param = new RC5Parameters(key.getEncoded(), ((RC5ParameterSpec)params).getRounds()); ++ // if (baseEngine.getAlgorithmName().startsWith("RC5")) ++ // { ++ // if (baseEngine.getAlgorithmName().equals("RC5-32")) ++ // { ++ // if (rc5Param.getWordSize() != 32) ++ // { ++ // throw new InvalidAlgorithmParameterException("RC5 already set up for a word size of 32 not " + rc5Param.getWordSize() + "."); ++ // } ++ // } ++ // else if (baseEngine.getAlgorithmName().equals("RC5-64")) ++ // { ++ // if (rc5Param.getWordSize() != 64) ++ // { ++ // throw new InvalidAlgorithmParameterException("RC5 already set up for a word size of 64 not " + rc5Param.getWordSize() + "."); ++ // } ++ // } ++ // } ++ // else ++ // { ++ // throw new InvalidAlgorithmParameterException("RC5 parameters passed to a cipher that is not RC5."); ++ // } ++ // if ((rc5Param.getIV() != null) && (ivLength != 0)) ++ // { ++ // param = new ParametersWithIV(param, rc5Param.getIV()); ++ // ivParam = (ParametersWithIV)param; ++ // } ++ // } ++ // END android-removed + else + { + throw new InvalidAlgorithmParameterException("unknown parameter type."); +@@ -701,10 +727,20 @@ + int inputLen, + byte[] output, + int outputOffset) +- throws IllegalBlockSizeException, BadPaddingException ++ throws IllegalBlockSizeException, BadPaddingException, ShortBufferException + { ++ // BEGIN android-note ++ // added ShortBufferException to the throws statement ++ // END android-note + int len = 0; + ++ // BEGIN android-added ++ int outputLen = cipher.getOutputSize(inputLen); ++ ++ if (outputLen + outputOffset > output.length) { ++ throw new ShortBufferException("need at least " + outputLen + " bytes"); ++ } ++ // BEGIN android-added + if (inputLen != 0) + { + len = cipher.processBytes(input, inputOffset, inputLen, output, outputOffset); +diff -Naur bcprov-jdk15on-147.orig/org/bouncycastle/jcajce/provider/symmetric/util/BaseKeyGenerator.java bcprov-jdk15on-147/org/bouncycastle/jcajce/provider/symmetric/util/BaseKeyGenerator.java +--- bcprov-jdk15on-147.orig/org/bouncycastle/jcajce/provider/symmetric/util/BaseKeyGenerator.java 2012-03-22 15:11:48.000000000 +0000 ++++ bcprov-jdk15on-147/org/bouncycastle/jcajce/provider/symmetric/util/BaseKeyGenerator.java 2012-09-11 00:12:44.000000000 +0000 +@@ -56,6 +56,11 @@ + { + try + { ++ // BEGIN android-added ++ if (random == null) { ++ random = new SecureRandom(); ++ } ++ // END android-added + engine.init(new KeyGenerationParameters(random, keySize)); + uninitialised = false; + } +diff -Naur bcprov-jdk15on-147.orig/org/bouncycastle/jcajce/provider/symmetric/util/BaseMac.java bcprov-jdk15on-147/org/bouncycastle/jcajce/provider/symmetric/util/BaseMac.java +--- bcprov-jdk15on-147.orig/org/bouncycastle/jcajce/provider/symmetric/util/BaseMac.java 2012-03-22 15:11:48.000000000 +0000 ++++ bcprov-jdk15on-147/org/bouncycastle/jcajce/provider/symmetric/util/BaseMac.java 2012-09-11 00:12:44.000000000 +0000 +@@ -11,25 +11,34 @@ + + import org.bouncycastle.crypto.CipherParameters; + import org.bouncycastle.crypto.Mac; +-import org.bouncycastle.crypto.digests.MD2Digest; +-import org.bouncycastle.crypto.digests.MD4Digest; +-import org.bouncycastle.crypto.digests.MD5Digest; +-import org.bouncycastle.crypto.digests.RIPEMD128Digest; +-import org.bouncycastle.crypto.digests.RIPEMD160Digest; +-import org.bouncycastle.crypto.digests.SHA1Digest; +-import org.bouncycastle.crypto.digests.SHA224Digest; +-import org.bouncycastle.crypto.digests.SHA256Digest; +-import org.bouncycastle.crypto.digests.SHA384Digest; +-import org.bouncycastle.crypto.digests.SHA512Digest; +-import org.bouncycastle.crypto.digests.TigerDigest; ++// BEGIN android-removed ++// import org.bouncycastle.crypto.digests.MD2Digest; ++// import org.bouncycastle.crypto.digests.MD4Digest; ++// import org.bouncycastle.crypto.digests.MD5Digest; ++// import org.bouncycastle.crypto.digests.RIPEMD128Digest; ++// import org.bouncycastle.crypto.digests.RIPEMD160Digest; ++// import org.bouncycastle.crypto.digests.SHA1Digest; ++// import org.bouncycastle.crypto.digests.SHA224Digest; ++// import org.bouncycastle.crypto.digests.SHA256Digest; ++// import org.bouncycastle.crypto.digests.SHA384Digest; ++// import org.bouncycastle.crypto.digests.SHA512Digest; ++// import org.bouncycastle.crypto.digests.TigerDigest; ++// END android-removed ++// BEGIN android-added ++import org.bouncycastle.crypto.digests.OpenSSLDigest; ++// END android-added + import org.bouncycastle.crypto.engines.DESEngine; + import org.bouncycastle.crypto.engines.RC2Engine; + import org.bouncycastle.crypto.macs.CBCBlockCipherMac; +-import org.bouncycastle.crypto.macs.CFBBlockCipherMac; +-import org.bouncycastle.crypto.macs.GOST28147Mac; ++// BEGIN android-removed ++// import org.bouncycastle.crypto.macs.CFBBlockCipherMac; ++// import org.bouncycastle.crypto.macs.GOST28147Mac; ++// END android-removed + import org.bouncycastle.crypto.macs.HMac; +-import org.bouncycastle.crypto.macs.ISO9797Alg3Mac; +-import org.bouncycastle.crypto.macs.OldHMac; ++// BEGIN android-removed ++// import org.bouncycastle.crypto.macs.ISO9797Alg3Mac; ++// import org.bouncycastle.crypto.macs.OldHMac; ++// END android-removed + import org.bouncycastle.crypto.paddings.ISO7816d4Padding; + import org.bouncycastle.crypto.params.KeyParameter; + import org.bouncycastle.crypto.params.ParametersWithIV; +@@ -179,91 +188,93 @@ + } + } + +- /** +- * GOST28147 +- */ +- public static class GOST28147 +- extends BaseMac +- { +- public GOST28147() +- { +- super(new GOST28147Mac()); +- } +- } +- +- +- +- /** +- * DES +- */ +- public static class DESCFB8 +- extends BaseMac +- { +- public DESCFB8() +- { +- super(new CFBBlockCipherMac(new DESEngine())); +- } +- } +- +- /** +- * RC2CFB8 +- */ +- public static class RC2CFB8 +- extends BaseMac +- { +- public RC2CFB8() +- { +- super(new CFBBlockCipherMac(new RC2Engine())); +- } +- } +- +- /** +- * DES9797Alg3with7816-4Padding +- */ +- public static class DES9797Alg3with7816d4 +- extends BaseMac +- { +- public DES9797Alg3with7816d4() +- { +- super(new ISO9797Alg3Mac(new DESEngine(), new ISO7816d4Padding())); +- } +- } +- +- /** +- * DES9797Alg3 +- */ +- public static class DES9797Alg3 +- extends BaseMac +- { +- public DES9797Alg3() +- { +- super(new ISO9797Alg3Mac(new DESEngine())); +- } +- } +- +- /** +- * MD2 HMac +- */ +- public static class MD2 +- extends BaseMac +- { +- public MD2() +- { +- super(new HMac(new MD2Digest())); +- } +- } +- +- /** +- * MD4 HMac +- */ +- public static class MD4 +- extends BaseMac +- { +- public MD4() +- { +- super(new HMac(new MD4Digest())); +- } +- } ++ // BEGIN android-removed ++ // /** ++ // * GOST28147 ++ // */ ++ // public static class GOST28147 ++ // extends BaseMac ++ // { ++ // public GOST28147() ++ // { ++ // super(new GOST28147Mac()); ++ // } ++ // } ++ // ++ // ++ // ++ // /** ++ // * DES ++ // */ ++ // public static class DESCFB8 ++ // extends BaseMac ++ // { ++ // public DESCFB8() ++ // { ++ // super(new CFBBlockCipherMac(new DESEngine())); ++ // } ++ // } ++ // ++ // /** ++ // * RC2CFB8 ++ // */ ++ // public static class RC2CFB8 ++ // extends BaseMac ++ // { ++ // public RC2CFB8() ++ // { ++ // super(new CFBBlockCipherMac(new RC2Engine())); ++ // } ++ // } ++ // ++ // /** ++ // * DES9797Alg3with7816-4Padding ++ // */ ++ // public static class DES9797Alg3with7816d4 ++ // extends BaseMac ++ // { ++ // public DES9797Alg3with7816d4() ++ // { ++ // super(new ISO9797Alg3Mac(new DESEngine(), new ISO7816d4Padding())); ++ // } ++ // } ++ // ++ // /** ++ // * DES9797Alg3 ++ // */ ++ // public static class DES9797Alg3 ++ // extends BaseMac ++ // { ++ // public DES9797Alg3() ++ // { ++ // super(new ISO9797Alg3Mac(new DESEngine())); ++ // } ++ // } ++ // ++ // /** ++ // * MD2 HMac ++ // */ ++ // public static class MD2 ++ // extends BaseMac ++ // { ++ // public MD2() ++ // { ++ // super(new HMac(new MD2Digest())); ++ // } ++ // } ++ // ++ // /** ++ // * MD4 HMac ++ // */ ++ // public static class MD4 ++ // extends BaseMac ++ // { ++ // public MD4() ++ // { ++ // super(new HMac(new MD4Digest())); ++ // } ++ // } ++ // END android-removed + + /** + * MD5 HMac +@@ -273,7 +284,9 @@ + { + public MD5() + { +- super(new HMac(new MD5Digest())); ++ // BEGIN android-changed ++ super(new HMac(new OpenSSLDigest.MD5())); ++ // END android-changed + } + } + +@@ -285,21 +298,25 @@ + { + public SHA1() + { +- super(new HMac(new SHA1Digest())); ++ // BEGIN android-changed ++ super(new HMac(new OpenSSLDigest.SHA1())); ++ // END android-changed + } + } + +- /** +- * SHA-224 HMac +- */ +- public static class SHA224 +- extends BaseMac +- { +- public SHA224() +- { +- super(new HMac(new SHA224Digest())); +- } +- } ++ // BEGIN android-removed ++ // /** ++ // * SHA-224 HMac ++ // */ ++ // public static class SHA224 ++ // extends BaseMac ++ // { ++ // public SHA224() ++ // { ++ // super(new HMac(new SHA224Digest())); ++ // } ++ // } ++ // END android-removed + + /** + * SHA-256 HMac +@@ -309,7 +326,7 @@ + { + public SHA256() + { +- super(new HMac(new SHA256Digest())); ++ super(new HMac(new OpenSSLDigest.SHA256())); + } + } + +@@ -321,18 +338,20 @@ + { + public SHA384() + { +- super(new HMac(new SHA384Digest())); ++ super(new HMac(new OpenSSLDigest.SHA384())); + } + } + +- public static class OldSHA384 +- extends BaseMac +- { +- public OldSHA384() +- { +- super(new OldHMac(new SHA384Digest())); +- } +- } ++ // BEGIN android-removed ++ // public static class OldSHA384 ++ // extends BaseMac ++ // { ++ // public OldSHA384() ++ // { ++ // super(new OldHMac(new SHA384Digest())); ++ // } ++ // } ++ // END android-removed + + /** + * SHA-512 HMac +@@ -342,75 +361,77 @@ + { + public SHA512() + { +- super(new HMac(new SHA512Digest())); +- } +- } +- +- /** +- * SHA-512 HMac +- */ +- public static class OldSHA512 +- extends BaseMac +- { +- public OldSHA512() +- { +- super(new OldHMac(new SHA512Digest())); +- } +- } +- +- /** +- * RIPEMD128 HMac +- */ +- public static class RIPEMD128 +- extends BaseMac +- { +- public RIPEMD128() +- { +- super(new HMac(new RIPEMD128Digest())); +- } +- } +- +- /** +- * RIPEMD160 HMac +- */ +- public static class RIPEMD160 +- extends BaseMac +- { +- public RIPEMD160() +- { +- super(new HMac(new RIPEMD160Digest())); +- } +- } +- +- /** +- * Tiger HMac +- */ +- public static class Tiger +- extends BaseMac +- { +- public Tiger() +- { +- super(new HMac(new TigerDigest())); ++ super(new HMac(new OpenSSLDigest.SHA512())); + } + } + ++ // BEGIN android-removed ++ // /** ++ // * SHA-512 HMac ++ // */ ++ // public static class OldSHA512 ++ // extends BaseMac ++ // { ++ // public OldSHA512() ++ // { ++ // super(new OldHMac(new SHA512Digest())); ++ // } ++ // } ++ // ++ // /** ++ // * RIPEMD128 HMac ++ // */ ++ // public static class RIPEMD128 ++ // extends BaseMac ++ // { ++ // public RIPEMD128() ++ // { ++ // super(new HMac(new RIPEMD128Digest())); ++ // } ++ // } + // +- // PKCS12 states that the same algorithm should be used +- // for the key generation as is used in the HMAC, so that +- // is what we do here. ++ // /** ++ // * RIPEMD160 HMac ++ // */ ++ // public static class RIPEMD160 ++ // extends BaseMac ++ // { ++ // public RIPEMD160() ++ // { ++ // super(new HMac(new RIPEMD160Digest())); ++ // } ++ // } + // +- +- /** +- * PBEWithHmacRIPEMD160 +- */ +- public static class PBEWithRIPEMD160 +- extends BaseMac +- { +- public PBEWithRIPEMD160() +- { +- super(new HMac(new RIPEMD160Digest()), PKCS12, RIPEMD160, 160); +- } +- } ++ // /** ++ // * Tiger HMac ++ // */ ++ // public static class Tiger ++ // extends BaseMac ++ // { ++ // public Tiger() ++ // { ++ // super(new HMac(new TigerDigest())); ++ // } ++ // } ++ // ++ // // ++ // // PKCS12 states that the same algorithm should be used ++ // // for the key generation as is used in the HMAC, so that ++ // // is what we do here. ++ // // ++ // ++ // /** ++ // * PBEWithHmacRIPEMD160 ++ // */ ++ // public static class PBEWithRIPEMD160 ++ // extends BaseMac ++ // { ++ // public PBEWithRIPEMD160() ++ // { ++ // super(new HMac(new RIPEMD160Digest()), PKCS12, RIPEMD160, 160); ++ // } ++ // } ++ // END android-removed + + /** + * PBEWithHmacSHA +@@ -420,19 +441,23 @@ + { + public PBEWithSHA() + { +- super(new HMac(new SHA1Digest()), PKCS12, SHA1, 160); ++ // BEGIN android-changed ++ super(new HMac(new OpenSSLDigest.SHA1()), PKCS12, SHA1, 160); ++ // END android-changed + } + } + +- /** +- * PBEWithHmacTiger +- */ +- public static class PBEWithTiger +- extends BaseMac +- { +- public PBEWithTiger() +- { +- super(new HMac(new TigerDigest()), PKCS12, TIGER, 192); +- } +- } ++ // BEGIN android-removed ++ // /** ++ // * PBEWithHmacTiger ++ // */ ++ // public static class PBEWithTiger ++ // extends BaseMac ++ // { ++ // public PBEWithTiger() ++ // { ++ // super(new HMac(new TigerDigest()), PKCS12, TIGER, 192); ++ // } ++ // } ++ // END android-removed + } +diff -Naur bcprov-jdk15on-147.orig/org/bouncycastle/jcajce/provider/symmetric/util/BaseStreamCipher.java bcprov-jdk15on-147/org/bouncycastle/jcajce/provider/symmetric/util/BaseStreamCipher.java +--- bcprov-jdk15on-147.orig/org/bouncycastle/jcajce/provider/symmetric/util/BaseStreamCipher.java 2012-03-22 15:11:48.000000000 +0000 ++++ bcprov-jdk15on-147/org/bouncycastle/jcajce/provider/symmetric/util/BaseStreamCipher.java 2012-09-11 00:12:44.000000000 +0000 +@@ -13,8 +13,10 @@ + import javax.crypto.ShortBufferException; + import javax.crypto.spec.IvParameterSpec; + import javax.crypto.spec.PBEParameterSpec; +-import javax.crypto.spec.RC2ParameterSpec; +-import javax.crypto.spec.RC5ParameterSpec; ++// BEGIN android-removed ++// import javax.crypto.spec.RC2ParameterSpec; ++// import javax.crypto.spec.RC5ParameterSpec; ++// END android-removed + + import org.bouncycastle.crypto.BlockCipher; + import org.bouncycastle.crypto.CipherParameters; +@@ -34,8 +36,10 @@ + // + private Class[] availableSpecs = + { +- RC2ParameterSpec.class, +- RC5ParameterSpec.class, ++ // BEGIN android-removed ++ // RC2ParameterSpec.class, ++ // RC5ParameterSpec.class, ++ // END android-removed + IvParameterSpec.class, + PBEParameterSpec.class + }; +diff -Naur bcprov-jdk15on-147.orig/org/bouncycastle/jcajce/provider/symmetric/util/BaseWrapCipher.java bcprov-jdk15on-147/org/bouncycastle/jcajce/provider/symmetric/util/BaseWrapCipher.java +--- bcprov-jdk15on-147.orig/org/bouncycastle/jcajce/provider/symmetric/util/BaseWrapCipher.java 2012-03-22 15:11:48.000000000 +0000 ++++ bcprov-jdk15on-147/org/bouncycastle/jcajce/provider/symmetric/util/BaseWrapCipher.java 2012-09-11 00:12:44.000000000 +0000 +@@ -22,8 +22,10 @@ + import javax.crypto.ShortBufferException; + import javax.crypto.spec.IvParameterSpec; + import javax.crypto.spec.PBEParameterSpec; +-import javax.crypto.spec.RC2ParameterSpec; +-import javax.crypto.spec.RC5ParameterSpec; ++// BEGIN android-removed ++// import javax.crypto.spec.RC2ParameterSpec; ++// import javax.crypto.spec.RC5ParameterSpec; ++// END android-removed + import javax.crypto.spec.SecretKeySpec; + + import org.bouncycastle.asn1.pkcs.PrivateKeyInfo; +@@ -45,8 +47,10 @@ + { + IvParameterSpec.class, + PBEParameterSpec.class, +- RC2ParameterSpec.class, +- RC5ParameterSpec.class ++ // BEGIN android-removed ++ // RC2ParameterSpec.class, ++ // RC5ParameterSpec.class ++ // END android-removed + }; + + protected int pbeType = PKCS12; +@@ -258,16 +262,19 @@ + return null; + } + ++ // BEGIN android-changed ++ // added ShortBufferException to throws statement + protected int engineDoFinal( + byte[] input, + int inputOffset, + int inputLen, + byte[] output, + int outputOffset) +- throws IllegalBlockSizeException, BadPaddingException ++ throws IllegalBlockSizeException, BadPaddingException, ShortBufferException + { + return 0; + } ++ // END android-changed + + protected byte[] engineWrap( + Key key) +@@ -300,7 +307,12 @@ + byte[] wrappedKey, + String wrappedKeyAlgorithm, + int wrappedKeyType) +- throws InvalidKeyException ++ // BEGIN android-removed ++ // throws InvalidKeyException ++ // END android-removed ++ // BEGIN android-added ++ throws InvalidKeyException, NoSuchAlgorithmException ++ // END android-added + { + byte[] encoded; + try +@@ -376,10 +388,12 @@ + { + throw new InvalidKeyException("Unknown key type " + e.getMessage()); + } +- catch (NoSuchAlgorithmException e) +- { +- throw new InvalidKeyException("Unknown key type " + e.getMessage()); +- } ++ // BEGIN android-removed ++ // catch (NoSuchAlgorithmException e) ++ // { ++ // throw new InvalidKeyException("Unknown key type " + e.getMessage()); ++ // } ++ // END android-removed + catch (InvalidKeySpecException e2) + { + throw new InvalidKeyException("Unknown key type " + e2.getMessage()); +diff -Naur bcprov-jdk15on-147.orig/org/bouncycastle/jcajce/provider/symmetric/util/PBE.java bcprov-jdk15on-147/org/bouncycastle/jcajce/provider/symmetric/util/PBE.java +--- bcprov-jdk15on-147.orig/org/bouncycastle/jcajce/provider/symmetric/util/PBE.java 2012-03-22 15:11:48.000000000 +0000 ++++ bcprov-jdk15on-147/org/bouncycastle/jcajce/provider/symmetric/util/PBE.java 2012-09-11 00:12:44.000000000 +0000 +@@ -7,12 +7,17 @@ + + import org.bouncycastle.crypto.CipherParameters; + import org.bouncycastle.crypto.PBEParametersGenerator; +-import org.bouncycastle.crypto.digests.MD2Digest; +-import org.bouncycastle.crypto.digests.MD5Digest; +-import org.bouncycastle.crypto.digests.RIPEMD160Digest; +-import org.bouncycastle.crypto.digests.SHA1Digest; +-import org.bouncycastle.crypto.digests.SHA256Digest; +-import org.bouncycastle.crypto.digests.TigerDigest; ++// BEGIN android-removed ++// import org.bouncycastle.crypto.digests.MD2Digest; ++// import org.bouncycastle.crypto.digests.MD5Digest; ++// import org.bouncycastle.crypto.digests.RIPEMD160Digest; ++// import org.bouncycastle.crypto.digests.SHA1Digest; ++// import org.bouncycastle.crypto.digests.SHA256Digest; ++// import org.bouncycastle.crypto.digests.TigerDigest; ++// END android-removed ++// BEGIN android-added ++import org.bouncycastle.crypto.digests.OpenSSLDigest; ++// END android-added + import org.bouncycastle.crypto.generators.OpenSSLPBEParametersGenerator; + import org.bouncycastle.crypto.generators.PKCS12ParametersGenerator; + import org.bouncycastle.crypto.generators.PKCS5S1ParametersGenerator; +@@ -28,10 +33,14 @@ + // + static final int MD5 = 0; + static final int SHA1 = 1; +- static final int RIPEMD160 = 2; +- static final int TIGER = 3; ++ // BEGIN android-removed ++ // static final int RIPEMD160 = 2; ++ // static final int TIGER = 3; ++ // END android-removed + static final int SHA256 = 4; +- static final int MD2 = 5; ++ // BEGIN android-removed ++ // static final int MD2 = 5; ++ // END android-removed + + static final int PKCS5S1 = 0; + static final int PKCS5S2 = 1; +@@ -53,14 +62,20 @@ + { + switch (hash) + { +- case MD2: +- generator = new PKCS5S1ParametersGenerator(new MD2Digest()); +- break; ++ // BEGIN android-removed ++ // case MD2: ++ // generator = new PKCS5S1ParametersGenerator(new MD2Digest()); ++ // break; ++ // END android-removed + case MD5: +- generator = new PKCS5S1ParametersGenerator(new MD5Digest()); ++ // BEGIN android-changed ++ generator = new PKCS5S1ParametersGenerator(new OpenSSLDigest.MD5()); ++ // END android-changed + break; + case SHA1: +- generator = new PKCS5S1ParametersGenerator(new SHA1Digest()); ++ // BEGIN android-changed ++ generator = new PKCS5S1ParametersGenerator(new OpenSSLDigest.SHA1()); ++ // END android-changed + break; + default: + throw new IllegalStateException("PKCS5 scheme 1 only supports MD2, MD5 and SHA1."); +@@ -74,23 +89,33 @@ + { + switch (hash) + { +- case MD2: +- generator = new PKCS12ParametersGenerator(new MD2Digest()); +- break; ++ // BEGIN android-removed ++ // case MD2: ++ // generator = new PKCS12ParametersGenerator(new MD2Digest()); ++ // break; ++ // END android-removed + case MD5: +- generator = new PKCS12ParametersGenerator(new MD5Digest()); ++ // BEGIN android-changed ++ generator = new PKCS12ParametersGenerator(new OpenSSLDigest.MD5()); ++ // END android-changed + break; + case SHA1: +- generator = new PKCS12ParametersGenerator(new SHA1Digest()); +- break; +- case RIPEMD160: +- generator = new PKCS12ParametersGenerator(new RIPEMD160Digest()); +- break; +- case TIGER: +- generator = new PKCS12ParametersGenerator(new TigerDigest()); ++ // BEGIN android-changed ++ generator = new PKCS12ParametersGenerator(new OpenSSLDigest.SHA1()); ++ // END android-changed + break; ++ // BEGIN android-removed ++ // case RIPEMD160: ++ // generator = new PKCS12ParametersGenerator(new RIPEMD160Digest()); ++ // break; ++ // case TIGER: ++ // generator = new PKCS12ParametersGenerator(new TigerDigest()); ++ // break; ++ // END android-removed + case SHA256: +- generator = new PKCS12ParametersGenerator(new SHA256Digest()); ++ // BEGIN android-changed ++ generator = new PKCS12ParametersGenerator(new OpenSSLDigest.SHA256()); ++ // END android-changed + break; + default: + throw new IllegalStateException("unknown digest scheme for PBE encryption."); +diff -Naur bcprov-jdk15on-147.orig/org/bouncycastle/jcajce/provider/util/DigestFactory.java bcprov-jdk15on-147/org/bouncycastle/jcajce/provider/util/DigestFactory.java +--- bcprov-jdk15on-147.orig/org/bouncycastle/jcajce/provider/util/DigestFactory.java 2012-03-22 15:11:48.000000000 +0000 ++++ bcprov-jdk15on-147/org/bouncycastle/jcajce/provider/util/DigestFactory.java 2012-09-11 00:12:44.000000000 +0000 +@@ -10,19 +10,26 @@ + import org.bouncycastle.asn1.oiw.OIWObjectIdentifiers; + import org.bouncycastle.asn1.pkcs.PKCSObjectIdentifiers; + import org.bouncycastle.crypto.Digest; +-import org.bouncycastle.crypto.digests.MD5Digest; +-import org.bouncycastle.crypto.digests.SHA1Digest; +-import org.bouncycastle.crypto.digests.SHA224Digest; +-import org.bouncycastle.crypto.digests.SHA256Digest; +-import org.bouncycastle.crypto.digests.SHA384Digest; +-import org.bouncycastle.crypto.digests.SHA512Digest; ++// BEGIN android-removed ++// import org.bouncycastle.crypto.digests.MD5Digest; ++// import org.bouncycastle.crypto.digests.SHA1Digest; ++// import org.bouncycastle.crypto.digests.SHA224Digest; ++// import org.bouncycastle.crypto.digests.SHA256Digest; ++// import org.bouncycastle.crypto.digests.SHA384Digest; ++// import org.bouncycastle.crypto.digests.SHA512Digest; ++// END android-removed ++// BEGIN android-added ++import org.bouncycastle.crypto.digests.OpenSSLDigest; ++// END android-added + import org.bouncycastle.util.Strings; + + public class DigestFactory + { + private static Set md5 = new HashSet(); + private static Set sha1 = new HashSet(); +- private static Set sha224 = new HashSet(); ++ // BEGIN android-removed ++ // private static Set sha224 = new HashSet(); ++ // END android-removed + private static Set sha256 = new HashSet(); + private static Set sha384 = new HashSet(); + private static Set sha512 = new HashSet(); +@@ -38,9 +45,11 @@ + sha1.add("SHA-1"); + sha1.add(OIWObjectIdentifiers.idSHA1.getId()); + +- sha224.add("SHA224"); +- sha224.add("SHA-224"); +- sha224.add(NISTObjectIdentifiers.id_sha224.getId()); ++ // BEGIN android-removed ++ // sha224.add("SHA224"); ++ // sha224.add("SHA-224"); ++ // sha224.add(NISTObjectIdentifiers.id_sha224.getId()); ++ // END android-removed + + sha256.add("SHA256"); + sha256.add("SHA-256"); +@@ -61,9 +70,11 @@ + oids.put("SHA-1", OIWObjectIdentifiers.idSHA1); + oids.put(OIWObjectIdentifiers.idSHA1.getId(), OIWObjectIdentifiers.idSHA1); + +- oids.put("SHA224", NISTObjectIdentifiers.id_sha224); +- oids.put("SHA-224", NISTObjectIdentifiers.id_sha224); +- oids.put(NISTObjectIdentifiers.id_sha224.getId(), NISTObjectIdentifiers.id_sha224); ++ // BEGIN android-removed ++ // oids.put("SHA224", NISTObjectIdentifiers.id_sha224); ++ // oids.put("SHA-224", NISTObjectIdentifiers.id_sha224); ++ // oids.put(NISTObjectIdentifiers.id_sha224.getId(), NISTObjectIdentifiers.id_sha224); ++ // END android-removed + + oids.put("SHA256", NISTObjectIdentifiers.id_sha256); + oids.put("SHA-256", NISTObjectIdentifiers.id_sha256); +@@ -85,27 +96,39 @@ + + if (sha1.contains(digestName)) + { +- return new SHA1Digest(); ++ // BEGIN android-changed ++ return new OpenSSLDigest.SHA1(); ++ // END android-changed + } + if (md5.contains(digestName)) + { +- return new MD5Digest(); +- } +- if (sha224.contains(digestName)) +- { +- return new SHA224Digest(); +- } ++ // BEGIN android-changed ++ return new OpenSSLDigest.MD5(); ++ // END android-changed ++ } ++ // BEGIN android-removed ++ // if (sha224.contains(digestName)) ++ // { ++ // return new SHA224Digest(); ++ // } ++ // END android-removed + if (sha256.contains(digestName)) + { +- return new SHA256Digest(); ++ // BEGIN android-changed ++ return new OpenSSLDigest.SHA256(); ++ // END android-changed + } + if (sha384.contains(digestName)) + { +- return new SHA384Digest(); ++ // BEGIN android-changed ++ return new OpenSSLDigest.SHA384(); ++ // END android-changed + } + if (sha512.contains(digestName)) + { +- return new SHA512Digest(); ++ // BEGIN android-changed ++ return new OpenSSLDigest.SHA512(); ++ // END android-changed + } + + return null; +@@ -116,7 +139,9 @@ + String digest2) + { + return (sha1.contains(digest1) && sha1.contains(digest2)) +- || (sha224.contains(digest1) && sha224.contains(digest2)) ++ // BEGIN android-removed ++ // || (sha224.contains(digest1) && sha224.contains(digest2)) ++ // END android-removed + || (sha256.contains(digest1) && sha256.contains(digest2)) + || (sha384.contains(digest1) && sha384.contains(digest2)) + || (sha512.contains(digest1) && sha512.contains(digest2)) +diff -Naur bcprov-jdk15on-147.orig/org/bouncycastle/jce/ECNamedCurveTable.java bcprov-jdk15on-147/org/bouncycastle/jce/ECNamedCurveTable.java +--- bcprov-jdk15on-147.orig/org/bouncycastle/jce/ECNamedCurveTable.java 2012-03-22 15:11:48.000000000 +0000 ++++ bcprov-jdk15on-147/org/bouncycastle/jce/ECNamedCurveTable.java 2012-09-11 00:12:44.000000000 +0000 +@@ -6,7 +6,9 @@ + import org.bouncycastle.asn1.ASN1ObjectIdentifier; import org.bouncycastle.asn1.nist.NISTNamedCurves; import org.bouncycastle.asn1.sec.SECNamedCurves; -import org.bouncycastle.asn1.teletrust.TeleTrusTNamedCurves; @@ -990,7 +5767,7 @@ diff -Naur bcprov-jdk16-146.orig/org/bouncycastle/jce/ECNamedCurveTable.java bcp - { - try - { -- ecP = TeleTrusTNamedCurves.getByOID(new DERObjectIdentifier(name)); +- ecP = TeleTrusTNamedCurves.getByOID(new ASN1ObjectIdentifier(name)); - } - catch (IllegalArgumentException e) - { @@ -1006,7 +5783,7 @@ diff -Naur bcprov-jdk16-146.orig/org/bouncycastle/jce/ECNamedCurveTable.java bcp + // { + // try + // { -+ // ecP = TeleTrusTNamedCurves.getByOID(new DERObjectIdentifier(name)); ++ // ecP = TeleTrusTNamedCurves.getByOID(new ASN1ObjectIdentifier(name)); + // } + // catch (IllegalArgumentException e) + // { @@ -1029,10 +5806,21 @@ diff -Naur bcprov-jdk16-146.orig/org/bouncycastle/jce/ECNamedCurveTable.java bcp return v.elements(); } -diff -Naur bcprov-jdk16-146.orig/org/bouncycastle/jce/PKCS10CertificationRequest.java bcprov-jdk16-146/org/bouncycastle/jce/PKCS10CertificationRequest.java ---- bcprov-jdk16-146.orig/org/bouncycastle/jce/PKCS10CertificationRequest.java 2011-02-23 20:08:56.000000000 +0000 -+++ bcprov-jdk16-146/org/bouncycastle/jce/PKCS10CertificationRequest.java 2012-07-27 18:48:00.041479127 +0000 -@@ -80,15 +80,20 @@ +diff -Naur bcprov-jdk15on-147.orig/org/bouncycastle/jce/PKCS10CertificationRequest.java bcprov-jdk15on-147/org/bouncycastle/jce/PKCS10CertificationRequest.java +--- bcprov-jdk15on-147.orig/org/bouncycastle/jce/PKCS10CertificationRequest.java 2012-03-22 15:11:48.000000000 +0000 ++++ bcprov-jdk15on-147/org/bouncycastle/jce/PKCS10CertificationRequest.java 2012-09-11 00:12:44.000000000 +0000 +@@ -37,7 +37,9 @@ + import org.bouncycastle.asn1.pkcs.CertificationRequestInfo; + import org.bouncycastle.asn1.pkcs.PKCSObjectIdentifiers; + import org.bouncycastle.asn1.pkcs.RSASSAPSSparams; +-import org.bouncycastle.asn1.teletrust.TeleTrusTObjectIdentifiers; ++// BEGIN android-removed ++// import org.bouncycastle.asn1.teletrust.TeleTrusTObjectIdentifiers; ++// END android-removed + import org.bouncycastle.asn1.x509.AlgorithmIdentifier; + import org.bouncycastle.asn1.x509.SubjectPublicKeyInfo; + import org.bouncycastle.asn1.x509.X509Name; +@@ -81,15 +83,20 @@ static { @@ -1057,7 +5845,7 @@ diff -Naur bcprov-jdk16-146.orig/org/bouncycastle/jce/PKCS10CertificationRequest algorithms.put("SHA256WITHRSAENCRYPTION", PKCSObjectIdentifiers.sha256WithRSAEncryption); algorithms.put("SHA256WITHRSA", PKCSObjectIdentifiers.sha256WithRSAEncryption); algorithms.put("SHA384WITHRSAENCRYPTION", PKCSObjectIdentifiers.sha384WithRSAEncryption); -@@ -96,57 +101,78 @@ +@@ -97,57 +104,78 @@ algorithms.put("SHA512WITHRSAENCRYPTION", PKCSObjectIdentifiers.sha512WithRSAEncryption); algorithms.put("SHA512WITHRSA", PKCSObjectIdentifiers.sha512WithRSAEncryption); algorithms.put("SHA1WITHRSAANDMGF1", PKCSObjectIdentifiers.id_RSASSA_PSS); @@ -1156,7 +5944,7 @@ diff -Naur bcprov-jdk16-146.orig/org/bouncycastle/jce/PKCS10CertificationRequest oids.put(NISTObjectIdentifiers.dsa_with_sha256, "SHA256WITHDSA"); // -@@ -160,35 +186,53 @@ +@@ -161,35 +189,53 @@ // The parameters field SHALL be NULL for RSA based signature algorithms. // noParams.add(X9ObjectIdentifiers.ecdsa_with_SHA1); @@ -1221,7 +6009,7 @@ diff -Naur bcprov-jdk16-146.orig/org/bouncycastle/jce/PKCS10CertificationRequest params.put("SHA512WITHRSAANDMGF1", creatPSSParams(sha512AlgId, 64)); } -@@ -594,10 +638,12 @@ +@@ -595,10 +641,12 @@ { return "SHA1"; } @@ -1238,7 +6026,7 @@ diff -Naur bcprov-jdk16-146.orig/org/bouncycastle/jce/PKCS10CertificationRequest else if (NISTObjectIdentifiers.id_sha256.equals(digestAlgOID)) { return "SHA256"; -@@ -610,22 +656,24 @@ +@@ -611,22 +659,24 @@ { return "SHA512"; } @@ -1279,12 +6067,12 @@ diff -Naur bcprov-jdk16-146.orig/org/bouncycastle/jce/PKCS10CertificationRequest else { return digestAlgOID.getId(); -diff -Naur bcprov-jdk16-146.orig/org/bouncycastle/jce/provider/BouncyCastleProvider.java bcprov-jdk16-146/org/bouncycastle/jce/provider/BouncyCastleProvider.java ---- bcprov-jdk16-146.orig/org/bouncycastle/jce/provider/BouncyCastleProvider.java 2011-02-23 20:08:56.000000000 +0000 -+++ bcprov-jdk16-146/org/bouncycastle/jce/provider/BouncyCastleProvider.java 2012-07-27 18:48:00.031478939 +0000 -@@ -45,7 +45,10 @@ +diff -Naur bcprov-jdk15on-147.orig/org/bouncycastle/jce/provider/BouncyCastleProvider.java bcprov-jdk15on-147/org/bouncycastle/jce/provider/BouncyCastleProvider.java +--- bcprov-jdk15on-147.orig/org/bouncycastle/jce/provider/BouncyCastleProvider.java 2012-03-22 15:11:48.000000000 +0000 ++++ bcprov-jdk15on-147/org/bouncycastle/jce/provider/BouncyCastleProvider.java 2012-09-11 00:12:44.000000000 +0000 +@@ -48,7 +48,10 @@ { - private static String info = "BouncyCastle Security Provider v1.46"; + private static String info = "BouncyCastle Security Provider v1.47"; - public static String PROVIDER_NAME = "BC"; + // BEGIN android-changed @@ -1292,27 +6080,54 @@ diff -Naur bcprov-jdk16-146.orig/org/bouncycastle/jce/provider/BouncyCastleProvi + public static final String PROVIDER_NAME = "BC"; + // END android-changed - /* - * Configurable symmetric ciphers -@@ -53,8 +56,14 @@ - private static final String SYMMETRIC_CIPHER_PACKAGE = "org.bouncycastle.jce.provider.symmetric."; + public static final ProviderConfiguration CONFIGURATION = new BouncyCastleProviderConfiguration(); + +@@ -61,8 +64,13 @@ + private static final String SYMMETRIC_CIPHER_PACKAGE = "org.bouncycastle.jcajce.provider.symmetric."; private static final String[] SYMMETRIC_CIPHERS = { -- "AES", "ARC4", "Blowfish", "Camellia", "CAST5", "CAST6", "DESede", "Grainv1", "Grain128", "HC128", "HC256", "IDEA", -- "Noekeon", "RC5", "RC6", "Rijndael", "Salsa20", "SEED", "Serpent", "Skipjack", "TEA", "Twofish", "VMPC", "VMPCKSA3", "XTEA" +- "AES", "ARC4", "Blowfish", "Camellia", "CAST5", "CAST6", "DES", "DESede", "GOST28147", "Grainv1", "Grain128", "HC128", "HC256", "IDEA", +- "Noekeon", "RC2", "RC5", "RC6", "Rijndael", "Salsa20", "SEED", "Serpent", "Skipjack", "TEA", "Twofish", "VMPC", "VMPCKSA3", "XTEA" + // BEGIN android-removed -+ // "AES", "ARC4", "Blowfish", "Camellia", "CAST5", "CAST6", "DESede", "Grainv1", "Grain128", "HC128", "HC256", "IDEA", -+ // "Noekeon", "RC5", "RC6", "Rijndael", "Salsa20", "SEED", "Serpent", "Skipjack", "TEA", "Twofish", "VMPC", "VMPCKSA3", "XTEA" ++ // "AES", "ARC4", "Blowfish", "Camellia", "CAST5", "CAST6", "DES", "DESede", "GOST28147", "Grainv1", "Grain128", "HC128", "HC256", "IDEA", ++ // "Noekeon", "RC2", "RC5", "RC6", "Rijndael", "Salsa20", "SEED", "Serpent", "Skipjack", "TEA", "Twofish", "VMPC", "VMPCKSA3", "XTEA" + // END android-removed + // BEGIN android-added -+ "AES", "ARC4", "Blowfish", "DESede", ++ "AES", "ARC4", "Blowfish", "DES", "DESede", ++ // END android-added + }; + + /* +@@ -79,7 +87,12 @@ + + private static final String[] ASYMMETRIC_CIPHERS = + { +- "DSA", "DH", "EC", "RSA", "GOST", "ECGOST", "ElGamal" ++ // BEGIN android-removed ++ // "DSA", "DH", "EC", "RSA", "GOST", "ECGOST", "ElGamal" ++ // END android-removed ++ // BEGIN android-added ++ "DSA", "DH", "EC", "RSA", + // END android-added -+ }; /* -@@ -90,26 +99,28 @@ - loadAlgorithms(SYMMETRIC_CIPHER_PACKAGE, SYMMETRIC_CIPHERS); +@@ -88,7 +101,12 @@ + private static final String DIGEST_PACKAGE = "org.bouncycastle.jcajce.provider.digest."; + private static final String[] DIGESTS = + { +- "GOST3411", "MD2", "MD4", "MD5", "SHA1", "RIPEMD128", "RIPEMD160", "RIPEMD256", "RIPEMD320", "SHA224", "SHA256", "SHA384", "SHA512", "Tiger", "Whirlpool" ++ // BEGIN android-removed ++ // "GOST3411", "MD2", "MD4", "MD5", "SHA1", "RIPEMD128", "RIPEMD160", "RIPEMD256", "RIPEMD320", "SHA224", "SHA256", "SHA384", "SHA512", "Tiger", "Whirlpool" ++ // END android-removed ++ // BEGIN android-added ++ "MD5", "SHA1", "SHA256", "SHA384", "SHA512", ++ // END android-added + }; + + /** +@@ -120,26 +138,28 @@ + loadAlgorithms(ASYMMETRIC_CIPHER_PACKAGE, ASYMMETRIC_CIPHERS); - // @@ -1360,7 +6175,7 @@ diff -Naur bcprov-jdk16-146.orig/org/bouncycastle/jce/provider/BouncyCastleProvi // -@@ -118,14 +129,24 @@ +@@ -148,14 +168,24 @@ put("KeyStore.BKS", "org.bouncycastle.jce.provider.JDKKeyStore"); put("KeyStore.BouncyCastle", "org.bouncycastle.jce.provider.JDKKeyStore$BouncyCastleStore"); put("KeyStore.PKCS12", "org.bouncycastle.jce.provider.JDKPKCS12KeyStore$BCPKCS12KeyStore"); @@ -1393,67 +6208,22 @@ diff -Naur bcprov-jdk16-146.orig/org/bouncycastle/jce/provider/BouncyCastleProvi put("Alg.Alias.KeyStore.UBER", "BouncyCastle"); put("Alg.Alias.KeyStore.BOUNCYCASTLE", "BouncyCastle"); -@@ -142,44 +163,63 @@ - // - put("AlgorithmParameterGenerator.DH", "org.bouncycastle.jce.provider.JDKAlgorithmParameterGenerator$DH"); - put("AlgorithmParameterGenerator.DSA", "org.bouncycastle.jce.provider.JDKAlgorithmParameterGenerator$DSA"); -- put("AlgorithmParameterGenerator.GOST3410", "org.bouncycastle.jce.provider.JDKAlgorithmParameterGenerator$GOST3410"); -- put("AlgorithmParameterGenerator.ELGAMAL", "org.bouncycastle.jce.provider.JDKAlgorithmParameterGenerator$ElGamal"); -- put("AlgorithmParameterGenerator.DES", "org.bouncycastle.jce.provider.JDKAlgorithmParameterGenerator$DES"); -- put("AlgorithmParameterGenerator.DESEDE", "org.bouncycastle.jce.provider.JDKAlgorithmParameterGenerator$DES"); -- put("AlgorithmParameterGenerator." + PKCSObjectIdentifiers.des_EDE3_CBC, "org.bouncycastle.jce.provider.JDKAlgorithmParameterGenerator$DES"); -- put("AlgorithmParameterGenerator." + OIWObjectIdentifiers.desCBC, "org.bouncycastle.jce.provider.JDKAlgorithmParameterGenerator$DES"); -- put("AlgorithmParameterGenerator.RC2", "org.bouncycastle.jce.provider.JDKAlgorithmParameterGenerator$RC2"); -- put("AlgorithmParameterGenerator.1.2.840.113549.3.2", "org.bouncycastle.jce.provider.JDKAlgorithmParameterGenerator$RC2"); -+ // BEGIN android-removed -+ // put("AlgorithmParameterGenerator.GOST3410", "org.bouncycastle.jce.provider.JDKAlgorithmParameterGenerator$GOST3410"); -+ // put("AlgorithmParameterGenerator.ELGAMAL", "org.bouncycastle.jce.provider.JDKAlgorithmParameterGenerator$ElGamal"); -+ // put("AlgorithmParameterGenerator.DES", "org.bouncycastle.jce.provider.JDKAlgorithmParameterGenerator$DES"); -+ // put("AlgorithmParameterGenerator.DESEDE", "org.bouncycastle.jce.provider.JDKAlgorithmParameterGenerator$DES"); -+ // put("AlgorithmParameterGenerator." + PKCSObjectIdentifiers.des_EDE3_CBC, "org.bouncycastle.jce.provider.JDKAlgorithmParameterGenerator$DES"); -+ // put("AlgorithmParameterGenerator." + OIWObjectIdentifiers.desCBC, "org.bouncycastle.jce.provider.JDKAlgorithmParameterGenerator$DES"); -+ // put("AlgorithmParameterGenerator.RC2", "org.bouncycastle.jce.provider.JDKAlgorithmParameterGenerator$RC2"); -+ // put("AlgorithmParameterGenerator.1.2.840.113549.3.2", "org.bouncycastle.jce.provider.JDKAlgorithmParameterGenerator$RC2"); -+ // END android-removed - - put("Alg.Alias.AlgorithmParameterGenerator.DIFFIEHELLMAN", "DH"); -- put("Alg.Alias.AlgorithmParameterGenerator.GOST-3410", "GOST3410"); -+ // BEGIN android-removed -+ // put("Alg.Alias.AlgorithmParameterGenerator.GOST-3410", "GOST3410"); -+ // END android-removed +@@ -164,29 +194,41 @@ // // algorithm parameters // - put("AlgorithmParameters.OAEP", "org.bouncycastle.jce.provider.JDKAlgorithmParameters$OAEP"); -- put("AlgorithmParameters.PSS", "org.bouncycastle.jce.provider.JDKAlgorithmParameters$PSS"); -+ // BEGIN android-removed -+ // put("AlgorithmParameters.PSS", "org.bouncycastle.jce.provider.JDKAlgorithmParameters$PSS"); -+ // END android-removed - put("AlgorithmParameters.DH", "org.bouncycastle.jce.provider.JDKAlgorithmParameters$DH"); - put("Alg.Alias.AlgorithmParameters.DIFFIEHELLMAN", "DH"); - put("AlgorithmParameters.DSA", "org.bouncycastle.jce.provider.JDKAlgorithmParameters$DSA"); -- put("AlgorithmParameters.ELGAMAL", "org.bouncycastle.jce.provider.JDKAlgorithmParameters$ElGamal"); - put("AlgorithmParameters.IES", "org.bouncycastle.jce.provider.JDKAlgorithmParameters$IES"); + // BEGIN android-removed -+ // put("AlgorithmParameters.ELGAMAL", "org.bouncycastle.jce.provider.JDKAlgorithmParameters$ElGamal"); + // put("AlgorithmParameters.IES", "org.bouncycastle.jce.provider.JDKAlgorithmParameters$IES"); + // END android-removed put("AlgorithmParameters.PKCS12PBE", "org.bouncycastle.jce.provider.JDKAlgorithmParameters$PKCS12PBE"); -- put("AlgorithmParameters." + PKCSObjectIdentifiers.des_EDE3_CBC, "org.bouncycastle.jce.provider.JDKAlgorithmParameters$IVAlgorithmParameters"); + - put("AlgorithmParameters." + PKCSObjectIdentifiers.id_PBKDF2, "org.bouncycastle.jce.provider.JDKAlgorithmParameters$PBKDF2"); -- -- put("AlgorithmParameters.GOST3410", "org.bouncycastle.jce.provider.JDKAlgorithmParameters$GOST3410"); -- put("Alg.Alias.AlgorithmParameters.GOST-3410", "GOST3410"); -+ // BEGIN android-changed -+ // redundant with below -+ // put("Alg.Alias.AlgorithmParameters." + PKCSObjectIdentifiers.des_EDE3_CBC, "DESede"); -+ // END android-changed + // BEGIN android-removed + // put("AlgorithmParameters." + PKCSObjectIdentifiers.id_PBKDF2, "org.bouncycastle.jce.provider.JDKAlgorithmParameters$PBKDF2"); -+ // -+ // put("AlgorithmParameters.GOST3410", "org.bouncycastle.jce.provider.JDKAlgorithmParameters$GOST3410"); -+ // put("Alg.Alias.AlgorithmParameters.GOST-3410", "GOST3410"); + // END android-removed + + put("Alg.Alias.AlgorithmParameters.PBEWITHSHA1ANDRC2", "PKCS12PBE"); - put("Alg.Alias.AlgorithmParameters.PBEWITHSHAAND3-KEYTRIPLEDES", "PKCS12PBE"); - put("Alg.Alias.AlgorithmParameters.PBEWITHSHAAND2-KEYTRIPLEDES", "PKCS12PBE"); @@ -1481,57 +6251,16 @@ diff -Naur bcprov-jdk16-146.orig/org/bouncycastle/jce/provider/BouncyCastleProvi put("Alg.Alias.AlgorithmParameters.PBEWITHSHAAND40BITRC2-CBC", "PKCS12PBE"); put("Alg.Alias.AlgorithmParameters.PBEWITHSHAAND40BITRC4", "PKCS12PBE"); put("Alg.Alias.AlgorithmParameters.PBEWITHSHAAND128BITRC2-CBC", "PKCS12PBE"); -@@ -193,7 +233,7 @@ - put("Alg.Alias.AlgorithmParameters.1.2.840.113549.1.12.1.5", "PKCS12PBE"); - put("Alg.Alias.AlgorithmParameters.1.2.840.113549.1.12.1.6", "PKCS12PBE"); - put("Alg.Alias.AlgorithmParameters.PBEWithSHAAnd3KeyTripleDES", "PKCS12PBE"); -- -+ - put("Alg.Alias.AlgorithmParameters." + BCObjectIdentifiers.bc_pbe_sha1_pkcs12_aes128_cbc.getId(), "PKCS12PBE"); - put("Alg.Alias.AlgorithmParameters." + BCObjectIdentifiers.bc_pbe_sha1_pkcs12_aes192_cbc.getId(), "PKCS12PBE"); - put("Alg.Alias.AlgorithmParameters." + BCObjectIdentifiers.bc_pbe_sha1_pkcs12_aes256_cbc.getId(), "PKCS12PBE"); -@@ -203,22 +243,24 @@ - - put("Alg.Alias.AlgorithmParameters." + PKCSObjectIdentifiers.id_RSAES_OAEP, "OAEP"); - -- put("Alg.Alias.AlgorithmParameters.RSAPSS", "PSS"); -- put("Alg.Alias.AlgorithmParameters.RSASSA-PSS", "PSS"); -- put("Alg.Alias.AlgorithmParameters." + PKCSObjectIdentifiers.id_RSASSA_PSS, "PSS"); -- put("Alg.Alias.AlgorithmParameters.SHA1withRSA/PSS", "PSS"); -- put("Alg.Alias.AlgorithmParameters.SHA224withRSA/PSS", "PSS"); -- put("Alg.Alias.AlgorithmParameters.SHA256withRSA/PSS", "PSS"); -- put("Alg.Alias.AlgorithmParameters.SHA384withRSA/PSS", "PSS"); -- put("Alg.Alias.AlgorithmParameters.SHA512withRSA/PSS", "PSS"); -- put("Alg.Alias.AlgorithmParameters.SHA1WITHRSAANDMGF1", "PSS"); -- put("Alg.Alias.AlgorithmParameters.SHA224WITHRSAANDMGF1", "PSS"); -- put("Alg.Alias.AlgorithmParameters.SHA256WITHRSAANDMGF1", "PSS"); -- put("Alg.Alias.AlgorithmParameters.SHA384WITHRSAANDMGF1", "PSS"); -- put("Alg.Alias.AlgorithmParameters.SHA512WITHRSAANDMGF1", "PSS"); -- put("Alg.Alias.AlgorithmParameters.RAWRSAPSS", "PSS"); -- put("Alg.Alias.AlgorithmParameters.NONEWITHRSAPSS", "PSS"); -- put("Alg.Alias.AlgorithmParameters.NONEWITHRSASSA-PSS", "PSS"); + put("Alg.Alias.AlgorithmParameters.PBEWITHSHAAND128BITRC4", "PKCS12PBE"); + put("Alg.Alias.AlgorithmParameters.PBEWITHSHAANDTWOFISH", "PKCS12PBE"); +- put("Alg.Alias.AlgorithmParameters.PBEWITHSHAANDTWOFISH-CBC", "PKCS12PBE"); + // BEGIN android-removed -+ // put("Alg.Alias.AlgorithmParameters.RSAPSS", "PSS"); -+ // put("Alg.Alias.AlgorithmParameters.RSASSA-PSS", "PSS"); -+ // put("Alg.Alias.AlgorithmParameters." + PKCSObjectIdentifiers.id_RSASSA_PSS, "PSS"); -+ // put("Alg.Alias.AlgorithmParameters.SHA1withRSA/PSS", "PSS"); -+ // put("Alg.Alias.AlgorithmParameters.SHA224withRSA/PSS", "PSS"); -+ // put("Alg.Alias.AlgorithmParameters.SHA256withRSA/PSS", "PSS"); -+ // put("Alg.Alias.AlgorithmParameters.SHA384withRSA/PSS", "PSS"); -+ // put("Alg.Alias.AlgorithmParameters.SHA512withRSA/PSS", "PSS"); -+ // put("Alg.Alias.AlgorithmParameters.SHA1WITHRSAANDMGF1", "PSS"); -+ // put("Alg.Alias.AlgorithmParameters.SHA224WITHRSAANDMGF1", "PSS"); -+ // put("Alg.Alias.AlgorithmParameters.SHA256WITHRSAANDMGF1", "PSS"); -+ // put("Alg.Alias.AlgorithmParameters.SHA384WITHRSAANDMGF1", "PSS"); -+ // put("Alg.Alias.AlgorithmParameters.SHA512WITHRSAANDMGF1", "PSS"); -+ // put("Alg.Alias.AlgorithmParameters.RAWRSAPSS", "PSS"); -+ // put("Alg.Alias.AlgorithmParameters.NONEWITHRSAPSS", "PSS"); -+ // put("Alg.Alias.AlgorithmParameters.NONEWITHRSASSA-PSS", "PSS"); ++ // put("Alg.Alias.AlgorithmParameters.PBEWITHSHAANDTWOFISH-CBC", "PKCS12PBE"); + // END android-removed - - put("Alg.Alias.AlgorithmParameters.PBEWITHSHAAND128BITAES-CBC-BC", "PKCS12PBE"); - put("Alg.Alias.AlgorithmParameters.PBEWITHSHAAND192BITAES-CBC-BC", "PKCS12PBE"); -@@ -235,12 +277,14 @@ + put("Alg.Alias.AlgorithmParameters.1.2.840.113549.1.12.1.1", "PKCS12PBE"); + put("Alg.Alias.AlgorithmParameters.1.2.840.113549.1.12.1.2", "PKCS12PBE"); + put("Alg.Alias.AlgorithmParameters.1.2.840.113549.1.12.1.3", "PKCS12PBE"); +@@ -217,12 +259,14 @@ put("Alg.Alias.AlgorithmParameters.PBEWITHSHA-256AND128BITAES-CBC-BC","PKCS12PBE"); put("Alg.Alias.AlgorithmParameters.PBEWITHSHA-256AND192BITAES-CBC-BC","PKCS12PBE"); put("Alg.Alias.AlgorithmParameters.PBEWITHSHA-256AND256BITAES-CBC-BC","PKCS12PBE"); @@ -1552,95 +6281,19 @@ diff -Naur bcprov-jdk16-146.orig/org/bouncycastle/jce/provider/BouncyCastleProvi // // key agreement -@@ -252,71 +296,91 @@ - // cipher engines - // - put("Cipher.DES", "org.bouncycastle.jce.provider.JCEBlockCipher$DES"); -- put("Cipher." + OIWObjectIdentifiers.desCBC, "org.bouncycastle.jce.provider.JCEBlockCipher$DESCBC"); -- -- put("Cipher.RC2", "org.bouncycastle.jce.provider.JCEBlockCipher$RC2"); -- put("Cipher.RC2WRAP", "org.bouncycastle.jce.provider.WrapCipherSpi$RC2Wrap"); -- put("Cipher.1.2.840.113549.1.9.16.3.7", "org.bouncycastle.jce.provider.WrapCipherSpi$RC2Wrap"); -- -- put("Cipher.1.2.840.113549.3.2", "org.bouncycastle.jce.provider.JCEBlockCipher$RC2CBC"); -+ // BEGIN android-removed -+ // put("Cipher." + OIWObjectIdentifiers.desCBC, "org.bouncycastle.jce.provider.JCEBlockCipher$DESCBC"); -+ // -+ // put("Cipher.RC2", "org.bouncycastle.jce.provider.JCEBlockCipher$RC2"); -+ // put("Cipher.RC2WRAP", "org.bouncycastle.jce.provider.WrapCipherSpi$RC2Wrap"); -+ // put("Cipher.1.2.840.113549.1.9.16.3.7", "org.bouncycastle.jce.provider.WrapCipherSpi$RC2Wrap"); -+ // -+ // put("Cipher.1.2.840.113549.3.2", "org.bouncycastle.jce.provider.JCEBlockCipher$RC2CBC"); -+ // END android-removed - +@@ -235,16 +279,22 @@ put("Alg.Alias.Cipher.PBEWithSHAAnd3KeyTripleDES", "PBEWITHSHAAND3-KEYTRIPLEDES-CBC"); -- put("Cipher.GOST28147", "org.bouncycastle.jce.provider.JCEBlockCipher$GOST28147"); -- put("Alg.Alias.Cipher.GOST", "GOST28147"); -- put("Alg.Alias.Cipher.GOST-28147", "GOST28147"); -- put("Cipher." + CryptoProObjectIdentifiers.gostR28147_cbc, "org.bouncycastle.jce.provider.JCEBlockCipher$GOST28147cbc"); -+ // BEGIN android-removed -+ // put("Cipher.GOST28147", "org.bouncycastle.jce.provider.JCEBlockCipher$GOST28147"); -+ // put("Alg.Alias.Cipher.GOST", "GOST28147"); -+ // put("Alg.Alias.Cipher.GOST-28147", "GOST28147"); -+ // put("Cipher." + CryptoProObjectIdentifiers.gostR28147_cbc, "org.bouncycastle.jce.provider.JCEBlockCipher$GOST28147cbc"); -+ // END android-removed - put("Cipher.RSA", "org.bouncycastle.jce.provider.JCERSACipher$NoPadding"); -- put("Cipher.RSA/RAW", "org.bouncycastle.jce.provider.JCERSACipher$NoPadding"); -- put("Cipher.RSA/PKCS1", "org.bouncycastle.jce.provider.JCERSACipher$PKCS1v1_5Padding"); -- put("Cipher.1.2.840.113549.1.1.1", "org.bouncycastle.jce.provider.JCERSACipher$PKCS1v1_5Padding"); -- put("Cipher.2.5.8.1.1", "org.bouncycastle.jce.provider.JCERSACipher$PKCS1v1_5Padding"); -- put("Cipher.RSA/1", "org.bouncycastle.jce.provider.JCERSACipher$PKCS1v1_5Padding_PrivateOnly"); -- put("Cipher.RSA/2", "org.bouncycastle.jce.provider.JCERSACipher$PKCS1v1_5Padding_PublicOnly"); -- put("Cipher.RSA/OAEP", "org.bouncycastle.jce.provider.JCERSACipher$OAEPPadding"); -- put("Cipher." + PKCSObjectIdentifiers.id_RSAES_OAEP, "org.bouncycastle.jce.provider.JCERSACipher$OAEPPadding"); -- put("Cipher.RSA/ISO9796-1", "org.bouncycastle.jce.provider.JCERSACipher$ISO9796d1Padding"); -- - put("Cipher.ECIES", "org.bouncycastle.jce.provider.JCEIESCipher$ECIES"); - put("Cipher.BrokenECIES", "org.bouncycastle.jce.provider.JCEIESCipher$BrokenECIES"); - put("Cipher.IES", "org.bouncycastle.jce.provider.JCEIESCipher$IES"); - put("Cipher.BrokenIES", "org.bouncycastle.jce.provider.JCEIESCipher$BrokenIES"); -- put("Cipher.ELGAMAL", "org.bouncycastle.jce.provider.JCEElGamalCipher$NoPadding"); -- put("Cipher.ELGAMAL/PKCS1", "org.bouncycastle.jce.provider.JCEElGamalCipher$PKCS1v1_5Padding"); -+ // BEGIN android-changed -+ put("Alg.Alias.Cipher.RSA/RAW", "RSA"); -+ // END android-changed + // BEGIN android-removed -+ // put("Cipher.RSA/PKCS1", "org.bouncycastle.jce.provider.JCERSACipher$PKCS1v1_5Padding"); -+ // put("Cipher.1.2.840.113549.1.1.1", "org.bouncycastle.jce.provider.JCERSACipher$PKCS1v1_5Padding"); -+ // put("Cipher.2.5.8.1.1", "org.bouncycastle.jce.provider.JCERSACipher$PKCS1v1_5Padding"); -+ // put("Cipher.RSA/1", "org.bouncycastle.jce.provider.JCERSACipher$PKCS1v1_5Padding_PrivateOnly"); -+ // put("Cipher.RSA/2", "org.bouncycastle.jce.provider.JCERSACipher$PKCS1v1_5Padding_PublicOnly"); -+ // put("Cipher.RSA/OAEP", "org.bouncycastle.jce.provider.JCERSACipher$OAEPPadding"); -+ // put("Cipher." + PKCSObjectIdentifiers.id_RSAES_OAEP, "org.bouncycastle.jce.provider.JCERSACipher$OAEPPadding"); -+ // put("Cipher.RSA/ISO9796-1", "org.bouncycastle.jce.provider.JCERSACipher$ISO9796d1Padding"); -+ // + // put("Cipher.ECIES", "org.bouncycastle.jce.provider.JCEIESCipher$ECIES"); + // put("Cipher.BrokenECIES", "org.bouncycastle.jce.provider.JCEIESCipher$BrokenECIES"); + // put("Cipher.IES", "org.bouncycastle.jce.provider.JCEIESCipher$IES"); + // put("Cipher.BrokenIES", "org.bouncycastle.jce.provider.JCEIESCipher$BrokenIES"); -+ // put("Cipher.ELGAMAL", "org.bouncycastle.jce.provider.JCEElGamalCipher$NoPadding"); -+ // put("Cipher.ELGAMAL/PKCS1", "org.bouncycastle.jce.provider.JCEElGamalCipher$PKCS1v1_5Padding"); -+ // END android-removed - - put("Alg.Alias.Cipher.RSA//RAW", "RSA"); - put("Alg.Alias.Cipher.RSA//NOPADDING", "RSA"); -- put("Alg.Alias.Cipher.RSA//PKCS1PADDING", "RSA/PKCS1"); -- put("Alg.Alias.Cipher.RSA//OAEPPADDING", "RSA/OAEP"); -- put("Alg.Alias.Cipher.RSA//ISO9796-1PADDING", "RSA/ISO9796-1"); -- -- put("Alg.Alias.Cipher.ELGAMAL/ECB/PKCS1PADDING", "ELGAMAL/PKCS1"); -- put("Alg.Alias.Cipher.ELGAMAL/NONE/PKCS1PADDING", "ELGAMAL/PKCS1"); -- put("Alg.Alias.Cipher.ELGAMAL/NONE/NOPADDING", "ELGAMAL"); -+ // BEGIN android-removed -+ // put("Alg.Alias.Cipher.RSA//PKCS1PADDING", "RSA/PKCS1"); -+ // put("Alg.Alias.Cipher.RSA//OAEPPADDING", "RSA/OAEP"); -+ // put("Alg.Alias.Cipher.RSA//ISO9796-1PADDING", "RSA/ISO9796-1"); -+ // -+ // put("Alg.Alias.Cipher.ELGAMAL/ECB/PKCS1PADDING", "ELGAMAL/PKCS1"); -+ // put("Alg.Alias.Cipher.ELGAMAL/NONE/PKCS1PADDING", "ELGAMAL/PKCS1"); -+ // put("Alg.Alias.Cipher.ELGAMAL/NONE/NOPADDING", "ELGAMAL"); + // END android-removed put("Cipher.PBEWITHMD5ANDDES", "org.bouncycastle.jce.provider.JCEBlockCipher$PBEWithMD5AndDES"); @@ -1655,50 +6308,9 @@ diff -Naur bcprov-jdk16-146.orig/org/bouncycastle/jce/provider/BouncyCastleProvi + // put("Cipher.BROKENPBEWITHSHA1ANDDES", "org.bouncycastle.jce.provider.BrokenJCEBlockCipher$BrokePBEWithSHA1AndDES"); + // END android-removed put("Cipher.PBEWITHSHA1ANDRC2", "org.bouncycastle.jce.provider.JCEBlockCipher$PBEWithSHA1AndRC2"); - put("Cipher.PBEWITHSHAAND3-KEYTRIPLEDES-CBC", "org.bouncycastle.jce.provider.JCEBlockCipher$PBEWithSHAAndDES3Key"); -- put("Cipher.BROKENPBEWITHSHAAND3-KEYTRIPLEDES-CBC", "org.bouncycastle.jce.provider.BrokenJCEBlockCipher$BrokePBEWithSHAAndDES3Key"); -- put("Cipher.OLDPBEWITHSHAAND3-KEYTRIPLEDES-CBC", "org.bouncycastle.jce.provider.BrokenJCEBlockCipher$OldPBEWithSHAAndDES3Key"); -+ // BEGIN android-removed -+ // put("Cipher.BROKENPBEWITHSHAAND3-KEYTRIPLEDES-CBC", "org.bouncycastle.jce.provider.BrokenJCEBlockCipher$BrokePBEWithSHAAndDES3Key"); -+ // put("Cipher.OLDPBEWITHSHAAND3-KEYTRIPLEDES-CBC", "org.bouncycastle.jce.provider.BrokenJCEBlockCipher$OldPBEWithSHAAndDES3Key"); -+ // END android-removed - put("Cipher.PBEWITHSHAAND2-KEYTRIPLEDES-CBC", "org.bouncycastle.jce.provider.JCEBlockCipher$PBEWithSHAAndDES2Key"); -- put("Cipher.BROKENPBEWITHSHAAND2-KEYTRIPLEDES-CBC", "org.bouncycastle.jce.provider.BrokenJCEBlockCipher$BrokePBEWithSHAAndDES2Key"); -+ // BEGIN android-removed -+ // put("Cipher.BROKENPBEWITHSHAAND2-KEYTRIPLEDES-CBC", "org.bouncycastle.jce.provider.BrokenJCEBlockCipher$BrokePBEWithSHAAndDES2Key"); -+ // END android-removed - put("Cipher.PBEWITHSHAAND128BITRC2-CBC", "org.bouncycastle.jce.provider.JCEBlockCipher$PBEWithSHAAnd128BitRC2"); - put("Cipher.PBEWITHSHAAND40BITRC2-CBC", "org.bouncycastle.jce.provider.JCEBlockCipher$PBEWithSHAAnd40BitRC2"); - put("Cipher.PBEWITHSHAAND128BITRC4", "org.bouncycastle.jce.provider.JCEStreamCipher$PBEWithSHAAnd128BitRC4"); - put("Cipher.PBEWITHSHAAND40BITRC4", "org.bouncycastle.jce.provider.JCEStreamCipher$PBEWithSHAAnd40BitRC4"); - -- put("Alg.Alias.Cipher.PBEWITHSHA1AND3-KEYTRIPLEDES-CBC", "Cipher.PBEWITHSHAAND3-KEYTRIPLEDES-CBC"); -- put("Alg.Alias.Cipher.PBEWITHSHA1AND2-KEYTRIPLEDES-CBC", "Cipher.PBEWITHSHAAND2-KEYTRIPLEDES-CBC"); -- put("Alg.Alias.Cipher.PBEWITHSHA1AND128BITRC2-CBC", "Cipher.PBEWITHSHAAND128BITRC2-CBC"); -- put("Alg.Alias.Cipher.PBEWITHSHA1AND40BITRC2-CBC", "Cipher.PBEWITHSHAAND40BITRC2-CBC"); -- put("Alg.Alias.Cipher.PBEWITHSHA1AND128BITRC4", "Cipher.PBEWITHSHAAND128BITRC4"); -- put("Alg.Alias.Cipher.PBEWITHSHA1AND40BITRC4", "Cipher.PBEWITHSHAAND40BITRC4"); -+ // BEGIN android-changed -+ put("Alg.Alias.Cipher.PBEWITHSHA1AND3-KEYTRIPLEDES-CBC", "PBEWITHSHAAND3-KEYTRIPLEDES-CBC"); -+ put("Alg.Alias.Cipher.PBEWITHSHA1AND2-KEYTRIPLEDES-CBC", "PBEWITHSHAAND2-KEYTRIPLEDES-CBC"); -+ put("Alg.Alias.Cipher.PBEWITHSHA1AND128BITRC2-CBC", "PBEWITHSHAAND128BITRC2-CBC"); -+ put("Alg.Alias.Cipher.PBEWITHSHA1AND40BITRC2-CBC", "PBEWITHSHAAND40BITRC2-CBC"); -+ put("Alg.Alias.Cipher.PBEWITHSHA1AND128BITRC4", "PBEWITHSHAAND128BITRC4"); -+ put("Alg.Alias.Cipher.PBEWITHSHA1AND40BITRC4", "PBEWITHSHAAND40BITRC4"); -+ // END android-changed - put("Alg.Alias.Cipher." + BCObjectIdentifiers.bc_pbe_sha1_pkcs12_aes128_cbc.getId(), "PBEWITHSHAAND128BITAES-CBC-BC"); - put("Alg.Alias.Cipher." + BCObjectIdentifiers.bc_pbe_sha1_pkcs12_aes192_cbc.getId(), "PBEWITHSHAAND192BITAES-CBC-BC"); -@@ -324,7 +388,7 @@ - put("Alg.Alias.Cipher." + BCObjectIdentifiers.bc_pbe_sha256_pkcs12_aes128_cbc.getId(), "PBEWITHSHA256AND128BITAES-CBC-BC"); - put("Alg.Alias.Cipher." + BCObjectIdentifiers.bc_pbe_sha256_pkcs12_aes192_cbc.getId(), "PBEWITHSHA256AND192BITAES-CBC-BC"); - put("Alg.Alias.Cipher." + BCObjectIdentifiers.bc_pbe_sha256_pkcs12_aes256_cbc.getId(), "PBEWITHSHA256AND256BITAES-CBC-BC"); -- -+ - put("Cipher.PBEWITHSHAAND128BITAES-CBC-BC", "org.bouncycastle.jce.provider.JCEBlockCipher$PBEWithAESCBC"); - put("Cipher.PBEWITHSHAAND192BITAES-CBC-BC", "org.bouncycastle.jce.provider.JCEBlockCipher$PBEWithAESCBC"); - put("Cipher.PBEWITHSHAAND256BITAES-CBC-BC", "org.bouncycastle.jce.provider.JCEBlockCipher$PBEWithAESCBC"); -@@ -346,10 +410,12 @@ + put("Cipher.PBEWITHSHAAND128BITRC2-CBC", "org.bouncycastle.jce.provider.JCEBlockCipher$PBEWithSHAAnd128BitRC2"); +@@ -286,10 +336,12 @@ put("Cipher.PBEWITHMD5AND256BITAES-CBC-OPENSSL", "org.bouncycastle.jce.provider.JCEBlockCipher$PBEWithAESCBC"); put("Cipher.PBEWITHSHAANDTWOFISH-CBC", "org.bouncycastle.jce.provider.JCEBlockCipher$PBEWithSHAAndTwofish"); @@ -1715,113 +6327,17 @@ diff -Naur bcprov-jdk16-146.orig/org/bouncycastle/jce/provider/BouncyCastleProvi put("Alg.Alias.Cipher." + PKCSObjectIdentifiers.pbeWithMD5AndDES_CBC, "PBEWITHMD5ANDDES"); put("Alg.Alias.Cipher." + PKCSObjectIdentifiers.pbeWithMD5AndRC2_CBC, "PBEWITHMD5ANDDES"); put("Alg.Alias.Cipher." + PKCSObjectIdentifiers.pbeWithSHA1AndDES_CBC, "PBEWITHSHA1ANDDES"); -@@ -368,13 +434,15 @@ - put("KeyGenerator.DES", "org.bouncycastle.jce.provider.JCEKeyGenerator$DES"); - put("Alg.Alias.KeyGenerator." + OIWObjectIdentifiers.desCBC, "DES"); - -- put("KeyGenerator.RC2", "org.bouncycastle.jce.provider.JCEKeyGenerator$RC2"); -- put("KeyGenerator.1.2.840.113549.3.2", "org.bouncycastle.jce.provider.JCEKeyGenerator$RC2"); -- -- put("KeyGenerator.GOST28147", "org.bouncycastle.jce.provider.JCEKeyGenerator$GOST28147"); -- put("Alg.Alias.KeyGenerator.GOST", "GOST28147"); -- put("Alg.Alias.KeyGenerator.GOST-28147", "GOST28147"); -- put("Alg.Alias.KeyGenerator." + CryptoProObjectIdentifiers.gostR28147_cbc, "GOST28147"); -+ // BEGIN android-removed -+ // put("KeyGenerator.RC2", "org.bouncycastle.jce.provider.JCEKeyGenerator$RC2"); -+ // put("KeyGenerator.1.2.840.113549.3.2", "org.bouncycastle.jce.provider.JCEKeyGenerator$RC2"); -+ // -+ // put("KeyGenerator.GOST28147", "org.bouncycastle.jce.provider.JCEKeyGenerator$GOST28147"); -+ // put("Alg.Alias.KeyGenerator.GOST", "GOST28147"); -+ // put("Alg.Alias.KeyGenerator.GOST-28147", "GOST28147"); -+ // put("Alg.Alias.KeyGenerator." + CryptoProObjectIdentifiers.gostR28147_cbc, "GOST28147"); -+ // END android-removed - - // - // key pair generators. -@@ -382,14 +450,18 @@ - put("KeyPairGenerator.RSA", "org.bouncycastle.jce.provider.JDKKeyPairGenerator$RSA"); - put("KeyPairGenerator.DH", "org.bouncycastle.jce.provider.JDKKeyPairGenerator$DH"); - put("KeyPairGenerator.DSA", "org.bouncycastle.jce.provider.JDKKeyPairGenerator$DSA"); -- put("KeyPairGenerator.ELGAMAL", "org.bouncycastle.jce.provider.JDKKeyPairGenerator$ElGamal"); -+ // BEGIN android-removed -+ // put("KeyPairGenerator.ELGAMAL", "org.bouncycastle.jce.provider.JDKKeyPairGenerator$ElGamal"); -+ // END android-removed - - put("Alg.Alias.KeyPairGenerator.1.2.840.113549.1.1.1", "RSA"); - put("Alg.Alias.KeyPairGenerator.DIFFIEHELLMAN", "DH"); - -- put("KeyPairGenerator.GOST3410", "org.bouncycastle.jce.provider.JDKKeyPairGenerator$GOST3410"); -- put("Alg.Alias.KeyPairGenerator.GOST-3410", "GOST3410"); -- put("Alg.Alias.KeyPairGenerator.GOST-3410-94", "GOST3410"); -+ // BEGIN android-removed -+ // put("KeyPairGenerator.GOST3410", "org.bouncycastle.jce.provider.JDKKeyPairGenerator$GOST3410"); -+ // put("Alg.Alias.KeyPairGenerator.GOST-3410", "GOST3410"); -+ // put("Alg.Alias.KeyPairGenerator.GOST-3410-94", "GOST3410"); -+ // END android-removed - - // - // key factories -@@ -397,20 +469,24 @@ - put("KeyFactory.RSA", "org.bouncycastle.jce.provider.JDKKeyFactory$RSA"); - put("KeyFactory.DH", "org.bouncycastle.jce.provider.JDKKeyFactory$DH"); - put("KeyFactory.DSA", "org.bouncycastle.jce.provider.JDKKeyFactory$DSA"); -- put("KeyFactory.ELGAMAL", "org.bouncycastle.jce.provider.JDKKeyFactory$ElGamal"); -- put("KeyFactory.ElGamal", "org.bouncycastle.jce.provider.JDKKeyFactory$ElGamal"); -- -- put("KeyFactory.X.509", "org.bouncycastle.jce.provider.JDKKeyFactory$X509"); -+ // BEGIN android-removed -+ // put("KeyFactory.ELGAMAL", "org.bouncycastle.jce.provider.JDKKeyFactory$ElGamal"); -+ // put("KeyFactory.ElGamal", "org.bouncycastle.jce.provider.JDKKeyFactory$ElGamal"); -+ // -+ // put("KeyFactory.X.509", "org.bouncycastle.jce.provider.JDKKeyFactory$X509"); -+ // END android-removed - - put("Alg.Alias.KeyFactory.1.2.840.113549.1.1.1", "RSA"); - put("Alg.Alias.KeyFactory.1.2.840.10040.4.1", "DSA"); - - put("Alg.Alias.KeyFactory.DIFFIEHELLMAN", "DH"); - -- put("KeyFactory.GOST3410", "org.bouncycastle.jce.provider.JDKKeyFactory$GOST3410"); -- put("Alg.Alias.KeyFactory.GOST-3410", "GOST3410"); -- put("Alg.Alias.KeyFactory.GOST-3410-94", "GOST3410"); -- put("Alg.Alias.KeyFactory." + CryptoProObjectIdentifiers.gostR3410_94, "GOST3410"); -+ // BEGIN android-removed -+ // put("KeyFactory.GOST3410", "org.bouncycastle.jce.provider.JDKKeyFactory$GOST3410"); -+ // put("Alg.Alias.KeyFactory.GOST-3410", "GOST3410"); -+ // put("Alg.Alias.KeyFactory.GOST-3410-94", "GOST3410"); -+ // put("Alg.Alias.KeyFactory." + CryptoProObjectIdentifiers.gostR3410_94, "GOST3410"); -+ // END android-removed - - // - // Algorithm parameters -@@ -418,24 +494,34 @@ - put("AlgorithmParameters.DES", "org.bouncycastle.jce.provider.JDKAlgorithmParameters$IVAlgorithmParameters"); - put("Alg.Alias.AlgorithmParameters." + OIWObjectIdentifiers.desCBC, "DES"); - put("AlgorithmParameters.DESEDE", "org.bouncycastle.jce.provider.JDKAlgorithmParameters$IVAlgorithmParameters"); -- put("AlgorithmParameters." + PKCSObjectIdentifiers.des_EDE3_CBC, "org.bouncycastle.jce.provider.JDKAlgorithmParameters$IVAlgorithmParameters"); -- put("AlgorithmParameters.RC2", "org.bouncycastle.jce.provider.JDKAlgorithmParameters$RC2AlgorithmParameters"); -- put("AlgorithmParameters.1.2.840.113549.3.2", "org.bouncycastle.jce.provider.JDKAlgorithmParameters$RC2AlgorithmParameters"); -+ // BEGIN android-changed -+ put("Alg.Alias.AlgorithmParameters." + PKCSObjectIdentifiers.des_EDE3_CBC, "DESEDE"); -+ // END android-changed -+ // BEGIN android-removed -+ // put("AlgorithmParameters.RC2", "org.bouncycastle.jce.provider.JDKAlgorithmParameters$RC2AlgorithmParameters"); -+ // put("AlgorithmParameters.1.2.840.113549.3.2", "org.bouncycastle.jce.provider.JDKAlgorithmParameters$RC2AlgorithmParameters"); -+ // END android-removed - +@@ -326,16 +378,20 @@ // // secret key factories. // - put("SecretKeyFactory.DES", "org.bouncycastle.jce.provider.JCESecretKeyFactory$DES"); - put("SecretKeyFactory.PBEWITHMD2ANDDES", "org.bouncycastle.jce.provider.JCESecretKeyFactory$PBEWithMD2AndDES"); - - put("Alg.Alias.SecretKeyFactory." + PKCSObjectIdentifiers.pbeWithMD2AndDES_CBC, "PBEWITHMD2ANDDES"); - put("Alg.Alias.SecretKeyFactory." + PKCSObjectIdentifiers.pbeWithMD2AndRC2_CBC, "PBEWITHMD2ANDRC2"); + // BEGIN android-removed + // put("SecretKeyFactory.PBEWITHMD2ANDDES", "org.bouncycastle.jce.provider.JCESecretKeyFactory$PBEWithMD2AndDES"); -+ // END android-removed -+ -+ // BEGIN android-removed ++ // + // put("Alg.Alias.SecretKeyFactory." + PKCSObjectIdentifiers.pbeWithMD2AndDES_CBC, "PBEWITHMD2ANDDES"); + // put("Alg.Alias.SecretKeyFactory." + PKCSObjectIdentifiers.pbeWithMD2AndRC2_CBC, "PBEWITHMD2ANDRC2"); + // END android-removed @@ -1837,7 +6353,7 @@ diff -Naur bcprov-jdk16-146.orig/org/bouncycastle/jce/provider/BouncyCastleProvi put("SecretKeyFactory.PBEWITHMD5ANDDES", "org.bouncycastle.jce.provider.JCESecretKeyFactory$PBEWithMD5AndDES"); put("SecretKeyFactory.PBEWITHMD5ANDRC2", "org.bouncycastle.jce.provider.JCESecretKeyFactory$PBEWithMD5AndRC2"); put("SecretKeyFactory.PBEWITHSHA1ANDDES", "org.bouncycastle.jce.provider.JCESecretKeyFactory$PBEWithSHA1AndDES"); -@@ -447,31 +533,41 @@ +@@ -347,31 +403,39 @@ put("SecretKeyFactory.PBEWITHSHAAND128BITRC2-CBC", "org.bouncycastle.jce.provider.JCESecretKeyFactory$PBEWithSHAAnd128BitRC2"); put("SecretKeyFactory.PBEWITHSHAAND40BITRC2-CBC", "org.bouncycastle.jce.provider.JCESecretKeyFactory$PBEWithSHAAnd40BitRC2"); put("SecretKeyFactory.PBEWITHSHAANDTWOFISH-CBC", "org.bouncycastle.jce.provider.JCESecretKeyFactory$PBEWithSHAAndTwofish"); @@ -1875,9 +6391,7 @@ diff -Naur bcprov-jdk16-146.orig/org/bouncycastle/jce/provider/BouncyCastleProvi + // put("Alg.Alias.SecretKeyFactory.BROKENPBEWITHSHAAND3-KEYTRIPLEDES-CBC", "PBE/PKCS12"); + // put("Alg.Alias.SecretKeyFactory.BROKENPBEWITHSHAAND2-KEYTRIPLEDES-CBC", "PBE/PKCS12"); + // put("Alg.Alias.SecretKeyFactory.OLDPBEWITHSHAANDTWOFISH-CBC", "PBE/PKCS12"); -+ // END android-removed -+ -+ // BEGIN android-removed ++ // + // put("Alg.Alias.SecretKeyFactory.PBEWITHMD2ANDDES-CBC", "PBEWITHMD2ANDDES"); + // put("Alg.Alias.SecretKeyFactory.PBEWITHMD2ANDRC2-CBC", "PBEWITHMD2ANDRC2"); + // END android-removed @@ -1894,7 +6408,7 @@ diff -Naur bcprov-jdk16-146.orig/org/bouncycastle/jce/provider/BouncyCastleProvi put("Alg.Alias.SecretKeyFactory." + PKCSObjectIdentifiers.pbeWithMD5AndDES_CBC, "PBEWITHMD5ANDDES"); put("Alg.Alias.SecretKeyFactory." + PKCSObjectIdentifiers.pbeWithMD5AndRC2_CBC, "PBEWITHMD5ANDRC2"); put("Alg.Alias.SecretKeyFactory." + PKCSObjectIdentifiers.pbeWithSHA1AndDES_CBC, "PBEWITHSHA1ANDDES"); -@@ -508,6 +604,10 @@ +@@ -408,20 +472,31 @@ put("Alg.Alias.SecretKeyFactory." + BCObjectIdentifiers.bc_pbe_sha256_pkcs12_aes128_cbc.getId(), "PBEWITHSHA256AND128BITAES-CBC-BC"); put("Alg.Alias.SecretKeyFactory." + BCObjectIdentifiers.bc_pbe_sha256_pkcs12_aes192_cbc.getId(), "PBEWITHSHA256AND192BITAES-CBC-BC"); put("Alg.Alias.SecretKeyFactory." + BCObjectIdentifiers.bc_pbe_sha256_pkcs12_aes256_cbc.getId(), "PBEWITHSHA256AND256BITAES-CBC-BC"); @@ -1905,9 +6419,6 @@ diff -Naur bcprov-jdk16-146.orig/org/bouncycastle/jce/provider/BouncyCastleProvi addMacAlgorithms(); -@@ -516,16 +616,23 @@ - addSignatureAlgorithms(); - // Certification Path API - put("CertPathValidator.RFC3281", "org.bouncycastle.jce.provider.PKIXAttrCertPathValidatorSpi"); - put("CertPathBuilder.RFC3281", "org.bouncycastle.jce.provider.PKIXAttrCertPathBuilderSpi"); @@ -1936,15 +6447,10 @@ diff -Naur bcprov-jdk16-146.orig/org/bouncycastle/jce/provider/BouncyCastleProvi } private void loadAlgorithms(String packageName, String[] names) -@@ -586,42 +693,46 @@ - // +@@ -469,21 +544,25 @@ private void addMacAlgorithms() { -- put("Mac.DESMAC", "org.bouncycastle.jce.provider.JCEMac$DES"); -- put("Alg.Alias.Mac.DES", "DESMAC"); -- put("Mac.DESMAC/CFB8", "org.bouncycastle.jce.provider.JCEMac$DESCFB8"); -- put("Alg.Alias.Mac.DES/CFB8", "DESMAC/CFB8"); -- + - put("Mac.DESWITHISO9797", "org.bouncycastle.jce.provider.JCEMac$DES9797Alg3"); - put("Alg.Alias.Mac.DESISO9797MAC", "DESWITHISO9797"); - @@ -1953,27 +6459,10 @@ diff -Naur bcprov-jdk16-146.orig/org/bouncycastle/jce/provider/BouncyCastleProvi - put("Mac.ISO9797ALG3WITHISO7816-4PADDING", "org.bouncycastle.jce.provider.JCEMac$DES9797Alg3with7816d4"); - put("Alg.Alias.Mac.ISO9797ALG3MACWITHISO7816-4PADDING", "ISO9797ALG3WITHISO7816-4PADDING"); - -- put("Mac.RC2MAC", "org.bouncycastle.jce.provider.JCEMac$RC2"); -- put("Alg.Alias.Mac.RC2", "RC2MAC"); -- put("Mac.RC2MAC/CFB8", "org.bouncycastle.jce.provider.JCEMac$RC2CFB8"); -- put("Alg.Alias.Mac.RC2/CFB8", "RC2MAC/CFB8"); -- -- -- put("Mac.GOST28147MAC", "org.bouncycastle.jce.provider.JCEMac$GOST28147"); -- put("Alg.Alias.Mac.GOST28147", "GOST28147MAC"); -- - put("Mac.OLDHMACSHA384", "org.bouncycastle.jce.provider.JCEMac$OldSHA384"); - - put("Mac.OLDHMACSHA512", "org.bouncycastle.jce.provider.JCEMac$OldSHA512"); -- -- addHMACAlgorithm("MD2", "org.bouncycastle.jce.provider.JCEMac$MD2", "org.bouncycastle.jce.provider.JCEKeyGenerator$MD2HMAC"); -- addHMACAlgorithm("MD4", "org.bouncycastle.jce.provider.JCEMac$MD4", "org.bouncycastle.jce.provider.JCEKeyGenerator$MD4HMAC"); + // BEGIN android-removed -+ // put("Mac.DESMAC", "org.bouncycastle.jce.provider.JCEMac$DES"); -+ // put("Alg.Alias.Mac.DES", "DESMAC"); -+ // put("Mac.DESMAC/CFB8", "org.bouncycastle.jce.provider.JCEMac$DESCFB8"); -+ // put("Alg.Alias.Mac.DES/CFB8", "DESMAC/CFB8"); -+ // + // put("Mac.DESWITHISO9797", "org.bouncycastle.jce.provider.JCEMac$DES9797Alg3"); + // put("Alg.Alias.Mac.DESISO9797MAC", "DESWITHISO9797"); + // @@ -1982,54 +6471,9 @@ diff -Naur bcprov-jdk16-146.orig/org/bouncycastle/jce/provider/BouncyCastleProvi + // put("Mac.ISO9797ALG3WITHISO7816-4PADDING", "org.bouncycastle.jce.provider.JCEMac$DES9797Alg3with7816d4"); + // put("Alg.Alias.Mac.ISO9797ALG3MACWITHISO7816-4PADDING", "ISO9797ALG3WITHISO7816-4PADDING"); + // -+ // put("Mac.RC2MAC", "org.bouncycastle.jce.provider.JCEMac$RC2"); -+ // put("Alg.Alias.Mac.RC2", "RC2MAC"); -+ // put("Mac.RC2MAC/CFB8", "org.bouncycastle.jce.provider.JCEMac$RC2CFB8"); -+ // put("Alg.Alias.Mac.RC2/CFB8", "RC2MAC/CFB8"); -+ // -+ // -+ // put("Mac.GOST28147MAC", "org.bouncycastle.jce.provider.JCEMac$GOST28147"); -+ // put("Alg.Alias.Mac.GOST28147", "GOST28147MAC"); -+ // + // put("Mac.OLDHMACSHA384", "org.bouncycastle.jce.provider.JCEMac$OldSHA384"); + // + // put("Mac.OLDHMACSHA512", "org.bouncycastle.jce.provider.JCEMac$OldSHA512"); -+ // -+ // addHMACAlgorithm("MD2", "org.bouncycastle.jce.provider.JCEMac$MD2", "org.bouncycastle.jce.provider.JCEKeyGenerator$MD2HMAC"); -+ // addHMACAlgorithm("MD4", "org.bouncycastle.jce.provider.JCEMac$MD4", "org.bouncycastle.jce.provider.JCEKeyGenerator$MD4HMAC"); -+ // END android-removed - addHMACAlgorithm("MD5", "org.bouncycastle.jce.provider.JCEMac$MD5", "org.bouncycastle.jce.provider.JCEKeyGenerator$MD5HMAC"); - addHMACAlias("MD5", IANAObjectIdentifiers.hmacMD5); - - addHMACAlgorithm("SHA1", "org.bouncycastle.jce.provider.JCEMac$SHA1", "org.bouncycastle.jce.provider.JCEKeyGenerator$HMACSHA1"); - addHMACAlias("SHA1", PKCSObjectIdentifiers.id_hmacWithSHA1); - addHMACAlias("SHA1", IANAObjectIdentifiers.hmacSHA1); -- addHMACAlgorithm("SHA224", "org.bouncycastle.jce.provider.JCEMac$SHA224", "org.bouncycastle.jce.provider.JCEKeyGenerator$HMACSHA224"); -- addHMACAlias("SHA224", PKCSObjectIdentifiers.id_hmacWithSHA224); -+ // BEGIN android-removed -+ // addHMACAlgorithm("SHA224", "org.bouncycastle.jce.provider.JCEMac$SHA224", "org.bouncycastle.jce.provider.JCEKeyGenerator$HMACSHA224"); -+ // addHMACAlias("SHA224", PKCSObjectIdentifiers.id_hmacWithSHA224); -+ // END android-removed - addHMACAlgorithm("SHA256", "org.bouncycastle.jce.provider.JCEMac$SHA256", "org.bouncycastle.jce.provider.JCEKeyGenerator$HMACSHA256"); - addHMACAlias("SHA256", PKCSObjectIdentifiers.id_hmacWithSHA256); - addHMACAlgorithm("SHA384", "org.bouncycastle.jce.provider.JCEMac$SHA384", "org.bouncycastle.jce.provider.JCEKeyGenerator$HMACSHA384"); -@@ -629,16 +740,20 @@ - addHMACAlgorithm("SHA512", "org.bouncycastle.jce.provider.JCEMac$SHA512", "org.bouncycastle.jce.provider.JCEKeyGenerator$HMACSHA512"); - addHMACAlias("SHA512", PKCSObjectIdentifiers.id_hmacWithSHA512); - -- addHMACAlgorithm("RIPEMD128", "org.bouncycastle.jce.provider.JCEMac$RIPEMD128", "org.bouncycastle.jce.provider.JCEKeyGenerator$RIPEMD128HMAC"); -- addHMACAlgorithm("RIPEMD160", "org.bouncycastle.jce.provider.JCEMac$RIPEMD160", "org.bouncycastle.jce.provider.JCEKeyGenerator$RIPEMD160HMAC"); -- addHMACAlias("RIPEMD160", IANAObjectIdentifiers.hmacRIPEMD160); -- -- addHMACAlgorithm("TIGER", "org.bouncycastle.jce.provider.JCEMac$Tiger", "org.bouncycastle.jce.provider.JCEKeyGenerator$HMACTIGER"); -- addHMACAlias("TIGER", IANAObjectIdentifiers.hmacTIGER); -+ // BEGIN android-removed -+ // addHMACAlgorithm("RIPEMD128", "org.bouncycastle.jce.provider.JCEMac$RIPEMD128", "org.bouncycastle.jce.provider.JCEKeyGenerator$RIPEMD128HMAC"); -+ // addHMACAlgorithm("RIPEMD160", "org.bouncycastle.jce.provider.JCEMac$RIPEMD160", "org.bouncycastle.jce.provider.JCEKeyGenerator$RIPEMD160HMAC"); -+ // addHMACAlias("RIPEMD160", IANAObjectIdentifiers.hmacRIPEMD160); -+ // -+ // addHMACAlgorithm("TIGER", "org.bouncycastle.jce.provider.JCEMac$Tiger", "org.bouncycastle.jce.provider.JCEKeyGenerator$HMACTIGER"); -+ // addHMACAlias("TIGER", IANAObjectIdentifiers.hmacTIGER); + // END android-removed put("Mac.PBEWITHHMACSHA", "org.bouncycastle.jce.provider.JCEMac$PBEWithSHA"); @@ -2041,411 +6485,9 @@ diff -Naur bcprov-jdk16-146.orig/org/bouncycastle/jce/provider/BouncyCastleProvi put("Alg.Alias.Mac.1.3.14.3.2.26", "PBEWITHHMACSHA"); } -@@ -676,9 +791,11 @@ - put("Alg.Alias.MessageDigest.SHA1", "SHA-1"); - put("Alg.Alias.MessageDigest.SHA", "SHA-1"); - put("Alg.Alias.MessageDigest." + OIWObjectIdentifiers.idSHA1, "SHA-1"); -- put("MessageDigest.SHA-224", "org.bouncycastle.jce.provider.JDKMessageDigest$SHA224"); -- put("Alg.Alias.MessageDigest.SHA224", "SHA-224"); -- put("Alg.Alias.MessageDigest." + NISTObjectIdentifiers.id_sha224, "SHA-224"); -+ // BEGIN android-removed -+ // put("MessageDigest.SHA-224", "org.bouncycastle.jce.provider.JDKMessageDigest$SHA224"); -+ // put("Alg.Alias.MessageDigest.SHA224", "SHA-224"); -+ // put("Alg.Alias.MessageDigest." + NISTObjectIdentifiers.id_sha224, "SHA-224"); -+ // END android-removed - put("MessageDigest.SHA-256", "org.bouncycastle.jce.provider.JDKMessageDigest$SHA256"); - put("Alg.Alias.MessageDigest.SHA256", "SHA-256"); - put("Alg.Alias.MessageDigest." + NISTObjectIdentifiers.id_sha256, "SHA-256"); -@@ -689,27 +806,31 @@ - put("Alg.Alias.MessageDigest.SHA512", "SHA-512"); - put("Alg.Alias.MessageDigest." + NISTObjectIdentifiers.id_sha512, "SHA-512"); - -- put("MessageDigest.MD2", "org.bouncycastle.jce.provider.JDKMessageDigest$MD2"); -- put("Alg.Alias.MessageDigest." + PKCSObjectIdentifiers.md2, "MD2"); -- put("MessageDigest.MD4", "org.bouncycastle.jce.provider.JDKMessageDigest$MD4"); -- put("Alg.Alias.MessageDigest." + PKCSObjectIdentifiers.md4, "MD4"); -+ // BEGIN android-removed -+ // put("MessageDigest.MD2", "org.bouncycastle.jce.provider.JDKMessageDigest$MD2"); -+ // put("Alg.Alias.MessageDigest." + PKCSObjectIdentifiers.md2, "MD2"); -+ // put("MessageDigest.MD4", "org.bouncycastle.jce.provider.JDKMessageDigest$MD4"); -+ // put("Alg.Alias.MessageDigest." + PKCSObjectIdentifiers.md4, "MD4"); -+ // END android-removed - put("MessageDigest.MD5", "org.bouncycastle.jce.provider.JDKMessageDigest$MD5"); - put("Alg.Alias.MessageDigest." + PKCSObjectIdentifiers.md5, "MD5"); -- put("MessageDigest.RIPEMD128", "org.bouncycastle.jce.provider.JDKMessageDigest$RIPEMD128"); -- put("Alg.Alias.MessageDigest." + TeleTrusTObjectIdentifiers.ripemd128, "RIPEMD128"); -- put("MessageDigest.RIPEMD160", "org.bouncycastle.jce.provider.JDKMessageDigest$RIPEMD160"); -- put("Alg.Alias.MessageDigest." + TeleTrusTObjectIdentifiers.ripemd160, "RIPEMD160"); -- put("MessageDigest.RIPEMD256", "org.bouncycastle.jce.provider.JDKMessageDigest$RIPEMD256"); -- put("Alg.Alias.MessageDigest." + TeleTrusTObjectIdentifiers.ripemd256, "RIPEMD256"); -- put("MessageDigest.RIPEMD320", "org.bouncycastle.jce.provider.JDKMessageDigest$RIPEMD320"); -- put("MessageDigest.Tiger", "org.bouncycastle.jce.provider.JDKMessageDigest$Tiger"); -- -- put("MessageDigest.WHIRLPOOL", "org.bouncycastle.jce.provider.JDKMessageDigest$Whirlpool"); -- -- put("MessageDigest.GOST3411", "org.bouncycastle.jce.provider.JDKMessageDigest$GOST3411"); -- put("Alg.Alias.MessageDigest.GOST", "GOST3411"); -- put("Alg.Alias.MessageDigest.GOST-3411", "GOST3411"); -- put("Alg.Alias.MessageDigest." + CryptoProObjectIdentifiers.gostR3411, "GOST3411"); -+ // BEGIN android-removed -+ // put("MessageDigest.RIPEMD128", "org.bouncycastle.jce.provider.JDKMessageDigest$RIPEMD128"); -+ // put("Alg.Alias.MessageDigest." + TeleTrusTObjectIdentifiers.ripemd128, "RIPEMD128"); -+ // put("MessageDigest.RIPEMD160", "org.bouncycastle.jce.provider.JDKMessageDigest$RIPEMD160"); -+ // put("Alg.Alias.MessageDigest." + TeleTrusTObjectIdentifiers.ripemd160, "RIPEMD160"); -+ // put("MessageDigest.RIPEMD256", "org.bouncycastle.jce.provider.JDKMessageDigest$RIPEMD256"); -+ // put("Alg.Alias.MessageDigest." + TeleTrusTObjectIdentifiers.ripemd256, "RIPEMD256"); -+ // put("MessageDigest.RIPEMD320", "org.bouncycastle.jce.provider.JDKMessageDigest$RIPEMD320"); -+ // put("MessageDigest.Tiger", "org.bouncycastle.jce.provider.JDKMessageDigest$Tiger"); -+ -+ // put("MessageDigest.WHIRLPOOL", "org.bouncycastle.jce.provider.JDKMessageDigest$Whirlpool"); -+ -+ // put("MessageDigest.GOST3411", "org.bouncycastle.jce.provider.JDKMessageDigest$GOST3411"); -+ // put("Alg.Alias.MessageDigest.GOST", "GOST3411"); -+ // put("Alg.Alias.MessageDigest.GOST-3411", "GOST3411"); -+ // put("Alg.Alias.MessageDigest." + CryptoProObjectIdentifiers.gostR3411, "GOST3411"); -+ // END android-removed - } - - // -@@ -717,55 +838,70 @@ - // - private void addSignatureAlgorithms() - { -- put("Signature.MD2WithRSAEncryption", "org.bouncycastle.jce.provider.JDKDigestSignature$MD2WithRSAEncryption"); -- put("Signature.MD4WithRSAEncryption", "org.bouncycastle.jce.provider.JDKDigestSignature$MD4WithRSAEncryption"); -+ // BEGIN android-removed -+ // Dropping MD2 -+ // put("Signature.MD2WithRSAEncryption", "org.bouncycastle.jce.provider.JDKDigestSignature$MD2WithRSAEncryption"); -+ // put("Signature.MD4WithRSAEncryption", "org.bouncycastle.jce.provider.JDKDigestSignature$MD4WithRSAEncryption"); -+ // END android-removed - put("Signature.MD5WithRSAEncryption", "org.bouncycastle.jce.provider.JDKDigestSignature$MD5WithRSAEncryption"); - put("Signature.SHA1WithRSAEncryption", "org.bouncycastle.jce.provider.JDKDigestSignature$SHA1WithRSAEncryption"); -- put("Signature.SHA224WithRSAEncryption", "org.bouncycastle.jce.provider.JDKDigestSignature$SHA224WithRSAEncryption"); -+ // BEGIN android-removed -+ // put("Signature.SHA224WithRSAEncryption", "org.bouncycastle.jce.provider.JDKDigestSignature$SHA224WithRSAEncryption"); -+ // END android-removed - put("Signature.SHA256WithRSAEncryption", "org.bouncycastle.jce.provider.JDKDigestSignature$SHA256WithRSAEncryption"); - put("Signature.SHA384WithRSAEncryption", "org.bouncycastle.jce.provider.JDKDigestSignature$SHA384WithRSAEncryption"); - put("Signature.SHA512WithRSAEncryption", "org.bouncycastle.jce.provider.JDKDigestSignature$SHA512WithRSAEncryption"); -- put("Signature.RIPEMD160WithRSAEncryption", "org.bouncycastle.jce.provider.JDKDigestSignature$RIPEMD160WithRSAEncryption"); -- put("Signature.RIPEMD128WithRSAEncryption", "org.bouncycastle.jce.provider.JDKDigestSignature$RIPEMD128WithRSAEncryption"); -- put("Signature.RIPEMD256WithRSAEncryption", "org.bouncycastle.jce.provider.JDKDigestSignature$RIPEMD256WithRSAEncryption"); -- put("Signature.DSA", "org.bouncycastle.jce.provider.JDKDSASigner$stdDSA"); -+ // BEGIN android-removed -+ // put("Signature.RIPEMD160WithRSAEncryption", "org.bouncycastle.jce.provider.JDKDigestSignature$RIPEMD160WithRSAEncryption"); -+ // put("Signature.RIPEMD128WithRSAEncryption", "org.bouncycastle.jce.provider.JDKDigestSignature$RIPEMD128WithRSAEncryption"); -+ // put("Signature.RIPEMD256WithRSAEncryption", "org.bouncycastle.jce.provider.JDKDigestSignature$RIPEMD256WithRSAEncryption"); -+ // END android-removed -+ // BEGIN android-changed -+ put("Signature.SHA1withDSA", "org.bouncycastle.jce.provider.JDKDSASigner$stdDSA"); -+ // END android-changed - put("Signature.NONEWITHDSA", "org.bouncycastle.jce.provider.JDKDSASigner$noneDSA"); -- put("Signature.SHA1withRSA/ISO9796-2", "org.bouncycastle.jce.provider.JDKISOSignature$SHA1WithRSAEncryption"); -- put("Signature.MD5withRSA/ISO9796-2", "org.bouncycastle.jce.provider.JDKISOSignature$MD5WithRSAEncryption"); -- put("Signature.RIPEMD160withRSA/ISO9796-2", "org.bouncycastle.jce.provider.JDKISOSignature$RIPEMD160WithRSAEncryption"); -- -- put("Signature.RSASSA-PSS", "org.bouncycastle.jce.provider.JDKPSSSigner$PSSwithRSA"); -- put("Signature." + PKCSObjectIdentifiers.id_RSASSA_PSS, "org.bouncycastle.jce.provider.JDKPSSSigner$PSSwithRSA"); -- put("Signature.SHA1withRSA/PSS", "org.bouncycastle.jce.provider.JDKPSSSigner$SHA1withRSA"); -- put("Signature.SHA224withRSA/PSS", "org.bouncycastle.jce.provider.JDKPSSSigner$SHA224withRSA"); -- put("Signature.SHA256withRSA/PSS", "org.bouncycastle.jce.provider.JDKPSSSigner$SHA256withRSA"); -- put("Signature.SHA384withRSA/PSS", "org.bouncycastle.jce.provider.JDKPSSSigner$SHA384withRSA"); -- put("Signature.SHA512withRSA/PSS", "org.bouncycastle.jce.provider.JDKPSSSigner$SHA512withRSA"); -- -- put("Signature.RSA", "org.bouncycastle.jce.provider.JDKDigestSignature$noneRSA"); -- put("Signature.RAWRSASSA-PSS", "org.bouncycastle.jce.provider.JDKPSSSigner$nonePSS"); -+ // BEGIN android-removed -+ // put("Signature.SHA1withRSA/ISO9796-2", "org.bouncycastle.jce.provider.JDKISOSignature$SHA1WithRSAEncryption"); -+ // put("Signature.MD5withRSA/ISO9796-2", "org.bouncycastle.jce.provider.JDKISOSignature$MD5WithRSAEncryption"); -+ // put("Signature.RIPEMD160withRSA/ISO9796-2", "org.bouncycastle.jce.provider.JDKISOSignature$RIPEMD160WithRSAEncryption"); -+ // -+ // put("Signature.RSASSA-PSS", "org.bouncycastle.jce.provider.JDKPSSSigner$PSSwithRSA"); -+ // put("Signature." + PKCSObjectIdentifiers.id_RSASSA_PSS, "org.bouncycastle.jce.provider.JDKPSSSigner$PSSwithRSA"); -+ // put("Signature.SHA1withRSA/PSS", "org.bouncycastle.jce.provider.JDKPSSSigner$SHA1withRSA"); -+ // put("Signature.SHA224withRSA/PSS", "org.bouncycastle.jce.provider.JDKPSSSigner$SHA224withRSA"); -+ // put("Signature.SHA256withRSA/PSS", "org.bouncycastle.jce.provider.JDKPSSSigner$SHA256withRSA"); -+ // put("Signature.SHA384withRSA/PSS", "org.bouncycastle.jce.provider.JDKPSSSigner$SHA384withRSA"); -+ // put("Signature.SHA512withRSA/PSS", "org.bouncycastle.jce.provider.JDKPSSSigner$SHA512withRSA"); -+ // -+ // put("Signature.RSA", "org.bouncycastle.jce.provider.JDKDigestSignature$noneRSA"); -+ // put("Signature.RAWRSASSA-PSS", "org.bouncycastle.jce.provider.JDKPSSSigner$nonePSS"); -+ // END android-removed - - put("Alg.Alias.Signature.RAWDSA", "NONEWITHDSA"); - -- put("Alg.Alias.Signature.RAWRSA", "RSA"); -- put("Alg.Alias.Signature.NONEWITHRSA", "RSA"); -- put("Alg.Alias.Signature.RAWRSAPSS", "RAWRSASSA-PSS"); -- put("Alg.Alias.Signature.NONEWITHRSAPSS", "RAWRSASSA-PSS"); -- put("Alg.Alias.Signature.NONEWITHRSASSA-PSS", "RAWRSASSA-PSS"); -- -- put("Alg.Alias.Signature.RSAPSS", "RSASSA-PSS"); -- -- put("Alg.Alias.Signature.SHA1withRSAandMGF1", "SHA1withRSA/PSS"); -- put("Alg.Alias.Signature.SHA224withRSAandMGF1", "SHA224withRSA/PSS"); -- put("Alg.Alias.Signature.SHA256withRSAandMGF1", "SHA256withRSA/PSS"); -- put("Alg.Alias.Signature.SHA384withRSAandMGF1", "SHA384withRSA/PSS"); -- put("Alg.Alias.Signature.SHA512withRSAandMGF1", "SHA512withRSA/PSS"); -- -- put("Alg.Alias.Signature.MD2withRSAEncryption", "MD2WithRSAEncryption"); -- put("Alg.Alias.Signature.MD4withRSAEncryption", "MD4WithRSAEncryption"); -+ // BEGIN android-removed -+ // put("Alg.Alias.Signature.RAWRSA", "RSA"); -+ // put("Alg.Alias.Signature.NONEWITHRSA", "RSA"); -+ // put("Alg.Alias.Signature.RAWRSAPSS", "RAWRSASSA-PSS"); -+ // put("Alg.Alias.Signature.NONEWITHRSAPSS", "RAWRSASSA-PSS"); -+ // put("Alg.Alias.Signature.NONEWITHRSASSA-PSS", "RAWRSASSA-PSS"); -+ // -+ // put("Alg.Alias.Signature.RSAPSS", "RSASSA-PSS"); -+ // -+ // put("Alg.Alias.Signature.SHA1withRSAandMGF1", "SHA1withRSA/PSS"); -+ // put("Alg.Alias.Signature.SHA224withRSAandMGF1", "SHA224withRSA/PSS"); -+ // put("Alg.Alias.Signature.SHA256withRSAandMGF1", "SHA256withRSA/PSS"); -+ // put("Alg.Alias.Signature.SHA384withRSAandMGF1", "SHA384withRSA/PSS"); -+ // put("Alg.Alias.Signature.SHA512withRSAandMGF1", "SHA512withRSA/PSS"); -+ // -+ // put("Alg.Alias.Signature.MD2withRSAEncryption", "MD2WithRSAEncryption"); -+ // put("Alg.Alias.Signature.MD4withRSAEncryption", "MD4WithRSAEncryption"); -+ // END android-removed - put("Alg.Alias.Signature.MD5withRSAEncryption", "MD5WithRSAEncryption"); - put("Alg.Alias.Signature.SHA1withRSAEncryption", "SHA1WithRSAEncryption"); -- put("Alg.Alias.Signature.SHA224withRSAEncryption", "SHA224WithRSAEncryption"); -+ // BEGIN android-removed -+ // put("Alg.Alias.Signature.SHA224withRSAEncryption", "SHA224WithRSAEncryption"); -+ // END android-removed - - put("Alg.Alias.Signature.SHA256withRSAEncryption", "SHA256WithRSAEncryption"); - put("Alg.Alias.Signature.SHA384withRSAEncryption", "SHA384WithRSAEncryption"); -@@ -779,24 +915,30 @@ - put("Alg.Alias.Signature.SHA384WITHRSAENCRYPTION", "SHA384WithRSAEncryption"); - put("Alg.Alias.Signature.SHA512WITHRSAENCRYPTION", "SHA512WithRSAEncryption"); - -- put("Alg.Alias.Signature.RIPEMD160withRSAEncryption", "RIPEMD160WithRSAEncryption"); -- -- put("Alg.Alias.Signature." + PKCSObjectIdentifiers.md2WithRSAEncryption, "MD2WithRSAEncryption"); -- put("Alg.Alias.Signature.MD2WithRSA", "MD2WithRSAEncryption"); -- put("Alg.Alias.Signature.MD2withRSA", "MD2WithRSAEncryption"); -- put("Alg.Alias.Signature.MD2/RSA", "MD2WithRSAEncryption"); -+ // BEGIN android-removed -+ // Dropping MD2 -+ // put("Alg.Alias.Signature.RIPEMD160withRSAEncryption", "RIPEMD160WithRSAEncryption"); -+ // put("Alg.Alias.Signature." + PKCSObjectIdentifiers.md2WithRSAEncryption, "MD2WithRSAEncryption"); -+ // put("Alg.Alias.Signature.MD2WithRSA", "MD2WithRSAEncryption"); -+ // put("Alg.Alias.Signature.MD2withRSA", "MD2WithRSAEncryption"); -+ // put("Alg.Alias.Signature.MD2/RSA", "MD2WithRSAEncryption"); -+ // END android-removed - put("Alg.Alias.Signature.MD5WithRSA", "MD5WithRSAEncryption"); - put("Alg.Alias.Signature.MD5withRSA", "MD5WithRSAEncryption"); - put("Alg.Alias.Signature.MD5/RSA", "MD5WithRSAEncryption"); - put("Alg.Alias.Signature." + PKCSObjectIdentifiers.md5WithRSAEncryption, "MD5WithRSAEncryption"); -- put("Alg.Alias.Signature.MD4WithRSA", "MD4WithRSAEncryption"); -- put("Alg.Alias.Signature.MD4withRSA", "MD4WithRSAEncryption"); -- put("Alg.Alias.Signature.MD4/RSA", "MD4WithRSAEncryption"); -- put("Alg.Alias.Signature." + PKCSObjectIdentifiers.md4WithRSAEncryption, "MD4WithRSAEncryption"); -+ // BEGIN android-removed -+ // put("Alg.Alias.Signature.MD4WithRSA", "MD4WithRSAEncryption"); -+ // put("Alg.Alias.Signature.MD4withRSA", "MD4WithRSAEncryption"); -+ // put("Alg.Alias.Signature.MD4/RSA", "MD4WithRSAEncryption"); -+ // put("Alg.Alias.Signature." + PKCSObjectIdentifiers.md4WithRSAEncryption, "MD4WithRSAEncryption"); -+ // END android-removed - put("Alg.Alias.Signature.SHA1WithRSA", "SHA1WithRSAEncryption"); - put("Alg.Alias.Signature.SHA1withRSA", "SHA1WithRSAEncryption"); -- put("Alg.Alias.Signature.SHA224WithRSA", "SHA224WithRSAEncryption"); -- put("Alg.Alias.Signature.SHA224withRSA", "SHA224WithRSAEncryption"); -+ // BEGIN android-removed -+ // put("Alg.Alias.Signature.SHA224WithRSA", "SHA224WithRSAEncryption"); -+ // put("Alg.Alias.Signature.SHA224withRSA", "SHA224WithRSAEncryption"); -+ // END android-removed - put("Alg.Alias.Signature.SHA256WithRSA", "SHA256WithRSAEncryption"); - put("Alg.Alias.Signature.SHA256withRSA", "SHA256WithRSAEncryption"); - put("Alg.Alias.Signature.SHA384WithRSA", "SHA384WithRSAEncryption"); -@@ -806,92 +948,110 @@ - put("Alg.Alias.Signature.SHA1/RSA", "SHA1WithRSAEncryption"); - put("Alg.Alias.Signature.SHA-1/RSA", "SHA1WithRSAEncryption"); - put("Alg.Alias.Signature." + PKCSObjectIdentifiers.sha1WithRSAEncryption, "SHA1WithRSAEncryption"); -- put("Alg.Alias.Signature." + PKCSObjectIdentifiers.sha224WithRSAEncryption, "SHA224WithRSAEncryption"); -+ // BEGIN android-removed -+ // put("Alg.Alias.Signature." + PKCSObjectIdentifiers.sha224WithRSAEncryption, "SHA224WithRSAEncryption"); -+ // END android-removed - put("Alg.Alias.Signature." + PKCSObjectIdentifiers.sha256WithRSAEncryption, "SHA256WithRSAEncryption"); - put("Alg.Alias.Signature." + PKCSObjectIdentifiers.sha384WithRSAEncryption, "SHA384WithRSAEncryption"); - put("Alg.Alias.Signature." + PKCSObjectIdentifiers.sha512WithRSAEncryption, "SHA512WithRSAEncryption"); - put("Alg.Alias.Signature.1.3.14.3.2.26with1.2.840.113549.1.1.1", "SHA1WithRSAEncryption"); - put("Alg.Alias.Signature.1.3.14.3.2.26with1.2.840.113549.1.1.5", "SHA1WithRSAEncryption"); - put("Alg.Alias.Signature.1.2.840.113549.2.5with1.2.840.113549.1.1.1", "MD5WithRSAEncryption"); -- put("Alg.Alias.Signature.RIPEMD160WithRSA", "RIPEMD160WithRSAEncryption"); -- put("Alg.Alias.Signature.RIPEMD160withRSA", "RIPEMD160WithRSAEncryption"); -- put("Alg.Alias.Signature.RIPEMD128WithRSA", "RIPEMD128WithRSAEncryption"); -- put("Alg.Alias.Signature.RIPEMD128withRSA", "RIPEMD128WithRSAEncryption"); -- put("Alg.Alias.Signature.RIPEMD256WithRSA", "RIPEMD256WithRSAEncryption"); -- put("Alg.Alias.Signature.RIPEMD256withRSA", "RIPEMD256WithRSAEncryption"); -- put("Alg.Alias.Signature.RIPEMD-160/RSA", "RIPEMD160WithRSAEncryption"); -- put("Alg.Alias.Signature.RMD160withRSA", "RIPEMD160WithRSAEncryption"); -- put("Alg.Alias.Signature.RMD160/RSA", "RIPEMD160WithRSAEncryption"); -- put("Alg.Alias.Signature.1.3.36.3.3.1.2", "RIPEMD160WithRSAEncryption"); -- put("Alg.Alias.Signature.1.3.36.3.3.1.3", "RIPEMD128WithRSAEncryption"); -- put("Alg.Alias.Signature.1.3.36.3.3.1.4", "RIPEMD256WithRSAEncryption"); -+ // BEGIN android-removed -+ // put("Alg.Alias.Signature.RIPEMD160WithRSA", "RIPEMD160WithRSAEncryption"); -+ // put("Alg.Alias.Signature.RIPEMD160withRSA", "RIPEMD160WithRSAEncryption"); -+ // put("Alg.Alias.Signature.RIPEMD128WithRSA", "RIPEMD128WithRSAEncryption"); -+ // put("Alg.Alias.Signature.RIPEMD128withRSA", "RIPEMD128WithRSAEncryption"); -+ // put("Alg.Alias.Signature.RIPEMD256WithRSA", "RIPEMD256WithRSAEncryption"); -+ // put("Alg.Alias.Signature.RIPEMD256withRSA", "RIPEMD256WithRSAEncryption"); -+ // put("Alg.Alias.Signature.RIPEMD-160/RSA", "RIPEMD160WithRSAEncryption"); -+ // put("Alg.Alias.Signature.RMD160withRSA", "RIPEMD160WithRSAEncryption"); -+ // put("Alg.Alias.Signature.RMD160/RSA", "RIPEMD160WithRSAEncryption"); -+ // put("Alg.Alias.Signature.1.3.36.3.3.1.2", "RIPEMD160WithRSAEncryption"); -+ // put("Alg.Alias.Signature.1.3.36.3.3.1.3", "RIPEMD128WithRSAEncryption"); -+ // put("Alg.Alias.Signature.1.3.36.3.3.1.4", "RIPEMD256WithRSAEncryption"); -+ // END android-removed - put("Alg.Alias.Signature." + OIWObjectIdentifiers.sha1WithRSA, "SHA1WithRSAEncryption"); - -- put("Alg.Alias.Signature.MD2WITHRSAENCRYPTION", "MD2WithRSAEncryption"); -+ // BEGIN android-removed -+ // put("Alg.Alias.Signature.MD2WITHRSAENCRYPTION", "MD2WithRSAEncryption"); -+ // END android-removed - put("Alg.Alias.Signature.MD5WITHRSAENCRYPTION", "MD5WithRSAEncryption"); - put("Alg.Alias.Signature.SHA1WITHRSAENCRYPTION", "SHA1WithRSAEncryption"); -- put("Alg.Alias.Signature.RIPEMD160WITHRSAENCRYPTION", "RIPEMD160WithRSAEncryption"); -+ // BEGIN android-removed -+ // put("Alg.Alias.Signature.RIPEMD160WITHRSAENCRYPTION", "RIPEMD160WithRSAEncryption"); -+ // END android-removed - - put("Alg.Alias.Signature.MD5WITHRSA", "MD5WithRSAEncryption"); - put("Alg.Alias.Signature.SHA1WITHRSA", "SHA1WithRSAEncryption"); -- put("Alg.Alias.Signature.RIPEMD160WITHRSA", "RIPEMD160WithRSAEncryption"); -- put("Alg.Alias.Signature.RMD160WITHRSA", "RIPEMD160WithRSAEncryption"); -- put("Alg.Alias.Signature.RIPEMD160WITHRSA", "RIPEMD160WithRSAEncryption"); -- -- addSignatureAlgorithm("SHA224", "DSA", "org.bouncycastle.jce.provider.JDKDSASigner$dsa224", NISTObjectIdentifiers.dsa_with_sha224); -- addSignatureAlgorithm("SHA256", "DSA", "org.bouncycastle.jce.provider.JDKDSASigner$dsa256", NISTObjectIdentifiers.dsa_with_sha256); -- addSignatureAlgorithm("SHA384", "DSA", "org.bouncycastle.jce.provider.JDKDSASigner$dsa384", NISTObjectIdentifiers.dsa_with_sha384); -- addSignatureAlgorithm("SHA512", "DSA", "org.bouncycastle.jce.provider.JDKDSASigner$dsa512", NISTObjectIdentifiers.dsa_with_sha512); -- -- put("Alg.Alias.Signature.SHA/DSA", "DSA"); -- put("Alg.Alias.Signature.SHA1withDSA", "DSA"); -- put("Alg.Alias.Signature.SHA1WITHDSA", "DSA"); -- put("Alg.Alias.Signature.1.3.14.3.2.26with1.2.840.10040.4.1", "DSA"); -- put("Alg.Alias.Signature.1.3.14.3.2.26with1.2.840.10040.4.3", "DSA"); -- put("Alg.Alias.Signature.DSAwithSHA1", "DSA"); -- put("Alg.Alias.Signature.DSAWITHSHA1", "DSA"); -- put("Alg.Alias.Signature.SHA1WithDSA", "DSA"); -- put("Alg.Alias.Signature.DSAWithSHA1", "DSA"); -- put("Alg.Alias.Signature.1.2.840.10040.4.3", "DSA"); -- put("Alg.Alias.Signature.MD5WithRSA/ISO9796-2", "MD5withRSA/ISO9796-2"); -- put("Alg.Alias.Signature.SHA1WithRSA/ISO9796-2", "SHA1withRSA/ISO9796-2"); -- put("Alg.Alias.Signature.RIPEMD160WithRSA/ISO9796-2", "RIPEMD160withRSA/ISO9796-2"); -- -- put("Signature.ECGOST3410", "org.bouncycastle.jce.provider.JDKGOST3410Signer$ecgost3410"); -- put("Alg.Alias.Signature.ECGOST-3410", "ECGOST3410"); -- put("Alg.Alias.Signature.GOST-3410-2001", "ECGOST3410"); -- put("Alg.Alias.Signature.GOST3411withECGOST3410", "ECGOST3410"); -- put("Alg.Alias.Signature.GOST3411WITHECGOST3410", "ECGOST3410"); -- put("Alg.Alias.Signature.GOST3411WithECGOST3410", "ECGOST3410"); -- put("Alg.Alias.Signature." + CryptoProObjectIdentifiers.gostR3411_94_with_gostR3410_2001, "ECGOST3410"); -- -- put("Signature.GOST3410", "org.bouncycastle.jce.provider.JDKGOST3410Signer$gost3410"); -- put("Alg.Alias.Signature.GOST-3410", "GOST3410"); -- put("Alg.Alias.Signature.GOST-3410-94", "GOST3410"); -- put("Alg.Alias.Signature.GOST3411withGOST3410", "GOST3410"); -- put("Alg.Alias.Signature.GOST3411WITHGOST3410", "GOST3410"); -- put("Alg.Alias.Signature.GOST3411WithGOST3410", "GOST3410"); -- put("Alg.Alias.Signature." + CryptoProObjectIdentifiers.gostR3411_94_with_gostR3410_94, "GOST3410"); -- } -- -- private void addSignatureAlgorithm( -- String digest, -- String algorithm, -- String className, -- DERObjectIdentifier oid) -- { -- String mainName = digest + "WITH" + algorithm; -- String jdk11Variation1 = digest + "with" + algorithm; -- String jdk11Variation2 = digest + "With" + algorithm; -- String alias = digest + "/" + algorithm; -- -- put("Signature." + mainName, className); -- put("Alg.Alias.Signature." + jdk11Variation1, mainName); -- put("Alg.Alias.Signature." + jdk11Variation2, mainName); -- put("Alg.Alias.Signature." + alias, mainName); -- put("Alg.Alias.Signature." + oid, mainName); -- put("Alg.Alias.Signature.OID." + oid, mainName); -- } -+ // BEGIN android-removed -+ // put("Alg.Alias.Signature.RIPEMD160WITHRSA", "RIPEMD160WithRSAEncryption"); -+ // put("Alg.Alias.Signature.RMD160WITHRSA", "RIPEMD160WithRSAEncryption"); -+ // put("Alg.Alias.Signature.RIPEMD160WITHRSA", "RIPEMD160WithRSAEncryption"); -+ // END android-removed -+ -+ // BEGIN android-removed -+ // addSignatureAlgorithm("SHA224", "DSA", "org.bouncycastle.jce.provider.JDKDSASigner$dsa224", NISTObjectIdentifiers.dsa_with_sha224); -+ // addSignatureAlgorithm("SHA256", "DSA", "org.bouncycastle.jce.provider.JDKDSASigner$dsa256", NISTObjectIdentifiers.dsa_with_sha256); -+ // addSignatureAlgorithm("SHA384", "DSA", "org.bouncycastle.jce.provider.JDKDSASigner$dsa384", NISTObjectIdentifiers.dsa_with_sha384); -+ // addSignatureAlgorithm("SHA512", "DSA", "org.bouncycastle.jce.provider.JDKDSASigner$dsa512", NISTObjectIdentifiers.dsa_with_sha512); -+ // END android-removed -+ -+ // BEGIN android-changed -+ put("Alg.Alias.Signature.SHA/DSA", "SHA1withDSA"); -+ put("Alg.Alias.Signature.DSA", "SHA1withDSA"); -+ put("Alg.Alias.Signature.SHA1WITHDSA", "SHA1withDSA"); -+ put("Alg.Alias.Signature.1.3.14.3.2.26with1.2.840.10040.4.1", "SHA1withDSA"); -+ put("Alg.Alias.Signature.1.3.14.3.2.26with1.2.840.10040.4.3", "SHA1withDSA"); -+ put("Alg.Alias.Signature.DSAwithSHA1", "SHA1withDSA"); -+ put("Alg.Alias.Signature.DSAWITHSHA1", "SHA1withDSA"); -+ put("Alg.Alias.Signature.SHA1WithDSA", "SHA1withDSA"); -+ put("Alg.Alias.Signature.DSAWithSHA1", "SHA1withDSA"); -+ put("Alg.Alias.Signature.1.2.840.10040.4.3", "SHA1withDSA"); -+ // END android-changed -+ // BEGIN android-removed -+ // put("Alg.Alias.Signature.MD5WithRSA/ISO9796-2", "MD5withRSA/ISO9796-2"); -+ // put("Alg.Alias.Signature.SHA1WithRSA/ISO9796-2", "SHA1withRSA/ISO9796-2"); -+ // put("Alg.Alias.Signature.RIPEMD160WithRSA/ISO9796-2", "RIPEMD160withRSA/ISO9796-2"); -+ // -+ // put("Signature.ECGOST3410", "org.bouncycastle.jce.provider.JDKGOST3410Signer$ecgost3410"); -+ // put("Alg.Alias.Signature.ECGOST-3410", "ECGOST3410"); -+ // put("Alg.Alias.Signature.GOST-3410-2001", "ECGOST3410"); -+ // put("Alg.Alias.Signature.GOST3411withECGOST3410", "ECGOST3410"); -+ // put("Alg.Alias.Signature.GOST3411WITHECGOST3410", "ECGOST3410"); -+ // put("Alg.Alias.Signature.GOST3411WithECGOST3410", "ECGOST3410"); -+ // put("Alg.Alias.Signature." + CryptoProObjectIdentifiers.gostR3411_94_with_gostR3410_2001, "ECGOST3410"); -+ // -+ // put("Signature.GOST3410", "org.bouncycastle.jce.provider.JDKGOST3410Signer$gost3410"); -+ // put("Alg.Alias.Signature.GOST-3410", "GOST3410"); -+ // put("Alg.Alias.Signature.GOST-3410-94", "GOST3410"); -+ // put("Alg.Alias.Signature.GOST3411withGOST3410", "GOST3410"); -+ // put("Alg.Alias.Signature.GOST3411WITHGOST3410", "GOST3410"); -+ // put("Alg.Alias.Signature.GOST3411WithGOST3410", "GOST3410"); -+ // put("Alg.Alias.Signature." + CryptoProObjectIdentifiers.gostR3411_94_with_gostR3410_94, "GOST3410"); -+ // END android-removed -+ } -+ -+ // BEGIN android-removed -+ // private void addSignatureAlgorithm( -+ // String digest, -+ // String algorithm, -+ // String className, -+ // DERObjectIdentifier oid) -+ // { -+ // String mainName = digest + "WITH" + algorithm; -+ // String jdk11Variation1 = digest + "with" + algorithm; -+ // String jdk11Variation2 = digest + "With" + algorithm; -+ // String alias = digest + "/" + algorithm; -+ // -+ // put("Signature." + mainName, className); -+ // put("Alg.Alias.Signature." + jdk11Variation1, mainName); -+ // put("Alg.Alias.Signature." + jdk11Variation2, mainName); -+ // put("Alg.Alias.Signature." + alias, mainName); -+ // put("Alg.Alias.Signature." + oid, mainName); -+ // put("Alg.Alias.Signature.OID." + oid, mainName); -+ // } -+ // END android-removed - - public void setParameter(String parameterName, Object parameter) - { -diff -Naur bcprov-jdk16-146.orig/org/bouncycastle/jce/provider/CertBlacklist.java bcprov-jdk16-146/org/bouncycastle/jce/provider/CertBlacklist.java ---- bcprov-jdk16-146.orig/org/bouncycastle/jce/provider/CertBlacklist.java 1970-01-01 00:00:00.000000000 +0000 -+++ bcprov-jdk16-146/org/bouncycastle/jce/provider/CertBlacklist.java 2012-07-27 18:48:00.031478939 +0000 +diff -Naur bcprov-jdk15on-147.orig/org/bouncycastle/jce/provider/CertBlacklist.java bcprov-jdk15on-147/org/bouncycastle/jce/provider/CertBlacklist.java +--- bcprov-jdk15on-147.orig/org/bouncycastle/jce/provider/CertBlacklist.java 1970-01-01 00:00:00.000000000 +0000 ++++ bcprov-jdk15on-147/org/bouncycastle/jce/provider/CertBlacklist.java 2012-09-11 00:12:44.000000000 +0000 @@ -0,0 +1,177 @@ +/* + * Copyright (C) 2012 The Android Open Source Project @@ -2624,20 +6666,12 @@ diff -Naur bcprov-jdk16-146.orig/org/bouncycastle/jce/provider/CertBlacklist.jav + } + +} -diff -Naur bcprov-jdk16-146.orig/org/bouncycastle/jce/provider/CertPathValidatorUtilities.java bcprov-jdk16-146/org/bouncycastle/jce/provider/CertPathValidatorUtilities.java ---- bcprov-jdk16-146.orig/org/bouncycastle/jce/provider/CertPathValidatorUtilities.java 2011-02-23 20:08:56.000000000 +0000 -+++ bcprov-jdk16-146/org/bouncycastle/jce/provider/CertPathValidatorUtilities.java 2012-07-27 18:48:00.031478939 +0000 -@@ -24,6 +24,7 @@ - import java.security.spec.DSAPublicKeySpec; - import java.text.ParseException; - import java.util.ArrayList; -+import java.util.Arrays; - import java.util.Collection; - import java.util.Date; - import java.util.Enumeration; -@@ -59,13 +60,17 @@ - import org.bouncycastle.asn1.x509.PolicyInformation; +diff -Naur bcprov-jdk15on-147.orig/org/bouncycastle/jce/provider/CertPathValidatorUtilities.java bcprov-jdk15on-147/org/bouncycastle/jce/provider/CertPathValidatorUtilities.java +--- bcprov-jdk15on-147.orig/org/bouncycastle/jce/provider/CertPathValidatorUtilities.java 2012-03-22 15:11:48.000000000 +0000 ++++ bcprov-jdk15on-147/org/bouncycastle/jce/provider/CertPathValidatorUtilities.java 2012-09-11 00:12:44.000000000 +0000 +@@ -61,13 +61,17 @@ import org.bouncycastle.asn1.x509.SubjectPublicKeyInfo; + import org.bouncycastle.asn1.x509.X509Extension; import org.bouncycastle.asn1.x509.X509Extensions; -import org.bouncycastle.jce.X509LDAPCertStoreParameters; +// BEGIN android-removed @@ -2655,18 +6689,18 @@ diff -Naur bcprov-jdk16-146.orig/org/bouncycastle/jce/provider/CertPathValidator import org.bouncycastle.x509.X509AttributeCertificate; import org.bouncycastle.x509.X509CRLStoreSelector; import org.bouncycastle.x509.X509CertStoreSelector; -@@ -250,7 +255,9 @@ +@@ -247,7 +251,9 @@ { // look for URI - List list = (List) it.next(); + List list = (List)it.next(); - if (list.get(0).equals(new Integer(GeneralName.uniformResourceIdentifier))) + // BEGIN android-changed + if (list.get(0).equals(Integer.valueOf(GeneralName.uniformResourceIdentifier))) + // END android-changed { // found - String temp = (String) list.get(1); -@@ -660,38 +667,40 @@ + String temp = (String)list.get(1); +@@ -655,38 +661,40 @@ { try { @@ -2739,13 +6773,13 @@ diff -Naur bcprov-jdk16-146.orig/org/bouncycastle/jce/provider/CertPathValidator } catch (Exception e) { -@@ -758,35 +767,37 @@ +@@ -751,33 +759,35 @@ return certs; } - protected static Collection findCertificates(X509AttributeCertStoreSelector certSelect, - List certStores) -- throws AnnotatedException +- throws AnnotatedException - { - Set certs = new HashSet(); - Iterator iter = certStores.iterator(); @@ -2763,9 +6797,7 @@ diff -Naur bcprov-jdk16-146.orig/org/bouncycastle/jce/provider/CertPathValidator - } - catch (StoreException e) - { -- throw -- -- new AnnotatedException( +- throw new AnnotatedException( - "Problem while picking certificates from X.509 store.", e); - } - } @@ -2775,7 +6807,7 @@ diff -Naur bcprov-jdk16-146.orig/org/bouncycastle/jce/provider/CertPathValidator + // BEGIN android-removed + // protected static Collection findCertificates(X509AttributeCertStoreSelector certSelect, + // List certStores) -+ // throws AnnotatedException ++ // throws AnnotatedException + // { + // Set certs = new HashSet(); + // Iterator iter = certStores.iterator(); @@ -2793,9 +6825,7 @@ diff -Naur bcprov-jdk16-146.orig/org/bouncycastle/jce/provider/CertPathValidator + // } + // catch (StoreException e) + // { -+ // throw -+ // -+ // new AnnotatedException( ++ // throw new AnnotatedException( + // "Problem while picking certificates from X.509 store.", e); + // } + // } @@ -2806,10 +6836,10 @@ diff -Naur bcprov-jdk16-146.orig/org/bouncycastle/jce/provider/CertPathValidator protected static void addAdditionalStoresFromCRLDistributionPoint( CRLDistPoint crldp, ExtendedPKIXParameters pkixParams) -diff -Naur bcprov-jdk16-146.orig/org/bouncycastle/jce/provider/JCEBlockCipher.java bcprov-jdk16-146/org/bouncycastle/jce/provider/JCEBlockCipher.java ---- bcprov-jdk16-146.orig/org/bouncycastle/jce/provider/JCEBlockCipher.java 2011-02-23 20:08:56.000000000 +0000 -+++ bcprov-jdk16-146/org/bouncycastle/jce/provider/JCEBlockCipher.java 2012-07-27 18:48:00.031478939 +0000 -@@ -17,8 +17,10 @@ +diff -Naur bcprov-jdk15on-147.orig/org/bouncycastle/jce/provider/JCEBlockCipher.java bcprov-jdk15on-147/org/bouncycastle/jce/provider/JCEBlockCipher.java +--- bcprov-jdk15on-147.orig/org/bouncycastle/jce/provider/JCEBlockCipher.java 2012-03-22 15:11:48.000000000 +0000 ++++ bcprov-jdk15on-147/org/bouncycastle/jce/provider/JCEBlockCipher.java 2012-09-11 00:12:44.000000000 +0000 +@@ -18,8 +18,10 @@ import javax.crypto.ShortBufferException; import javax.crypto.spec.IvParameterSpec; import javax.crypto.spec.PBEParameterSpec; @@ -2823,9 +6853,9 @@ diff -Naur bcprov-jdk16-146.orig/org/bouncycastle/jce/provider/JCEBlockCipher.ja import org.bouncycastle.crypto.BlockCipher; import org.bouncycastle.crypto.BufferedBlockCipher; @@ -28,7 +30,9 @@ + import org.bouncycastle.crypto.InvalidCipherTextException; import org.bouncycastle.crypto.engines.AESFastEngine; import org.bouncycastle.crypto.engines.DESEngine; - import org.bouncycastle.crypto.engines.DESedeEngine; -import org.bouncycastle.crypto.engines.GOST28147Engine; +// BEGIN android-removed +// import org.bouncycastle.crypto.engines.GOST28147Engine; @@ -2833,7 +6863,7 @@ diff -Naur bcprov-jdk16-146.orig/org/bouncycastle/jce/provider/JCEBlockCipher.ja import org.bouncycastle.crypto.engines.RC2Engine; import org.bouncycastle.crypto.engines.TwofishEngine; import org.bouncycastle.crypto.modes.AEADBlockCipher; -@@ -36,12 +40,16 @@ +@@ -36,12 +40,18 @@ import org.bouncycastle.crypto.modes.CCMBlockCipher; import org.bouncycastle.crypto.modes.CFBBlockCipher; import org.bouncycastle.crypto.modes.CTSBlockCipher; @@ -2842,7 +6872,10 @@ diff -Naur bcprov-jdk16-146.orig/org/bouncycastle/jce/provider/JCEBlockCipher.ja +// import org.bouncycastle.crypto.modes.EAXBlockCipher; +// END android-removed import org.bouncycastle.crypto.modes.GCMBlockCipher; - import org.bouncycastle.crypto.modes.GOFBBlockCipher; +-import org.bouncycastle.crypto.modes.GOFBBlockCipher; ++// BEGIN android-removed ++// import org.bouncycastle.crypto.modes.GOFBBlockCipher; ++// END android-removed import org.bouncycastle.crypto.modes.OFBBlockCipher; -import org.bouncycastle.crypto.modes.OpenPGPCFBBlockCipher; -import org.bouncycastle.crypto.modes.PGPCFBBlockCipher; @@ -2853,24 +6886,28 @@ diff -Naur bcprov-jdk16-146.orig/org/bouncycastle/jce/provider/JCEBlockCipher.ja import org.bouncycastle.crypto.modes.SICBlockCipher; import org.bouncycastle.crypto.paddings.BlockCipherPadding; import org.bouncycastle.crypto.paddings.ISO10126d2Padding; -@@ -53,10 +61,12 @@ +@@ -53,12 +63,16 @@ import org.bouncycastle.crypto.params.KeyParameter; import org.bouncycastle.crypto.params.ParametersWithIV; import org.bouncycastle.crypto.params.ParametersWithRandom; -import org.bouncycastle.crypto.params.ParametersWithSBox; -import org.bouncycastle.crypto.params.RC2Parameters; -import org.bouncycastle.crypto.params.RC5Parameters; --import org.bouncycastle.jce.spec.GOST28147ParameterSpec; +// BEGIN android-removed +// import org.bouncycastle.crypto.params.ParametersWithSBox; +// import org.bouncycastle.crypto.params.RC2Parameters; +// import org.bouncycastle.crypto.params.RC5Parameters; ++// END android-removed + import org.bouncycastle.jcajce.provider.symmetric.util.BCPBEKey; + import org.bouncycastle.jcajce.provider.symmetric.util.PBE; +-import org.bouncycastle.jce.spec.GOST28147ParameterSpec; ++// BEGIN android-removed +// import org.bouncycastle.jce.spec.GOST28147ParameterSpec; +// END android-removed + import org.bouncycastle.jce.spec.RepeatedSecretKeySpec; import org.bouncycastle.util.Strings; - public class JCEBlockCipher extends WrapCipherSpi -@@ -67,11 +77,15 @@ +@@ -71,11 +85,15 @@ // private Class[] availableSpecs = { @@ -2889,7 +6926,7 @@ diff -Naur bcprov-jdk16-146.orig/org/bouncycastle/jce/provider/JCEBlockCipher.ja }; private BlockCipher baseEngine; -@@ -226,20 +240,22 @@ +@@ -232,20 +250,22 @@ new CFBBlockCipher(baseEngine, 8 * baseEngine.getBlockSize())); } } @@ -2926,7 +6963,28 @@ diff -Naur bcprov-jdk16-146.orig/org/bouncycastle/jce/provider/JCEBlockCipher.ja else if (modeName.startsWith("SIC")) { ivLength = baseEngine.getBlockSize(); -@@ -272,11 +288,13 @@ +@@ -262,12 +282,14 @@ + cipher = new BufferedGenericBlockCipher(new BufferedBlockCipher( + new SICBlockCipher(baseEngine))); + } +- else if (modeName.startsWith("GOFB")) +- { +- ivLength = baseEngine.getBlockSize(); +- cipher = new BufferedGenericBlockCipher(new BufferedBlockCipher( +- new GOFBBlockCipher(baseEngine))); +- } ++ // BEGIN android-removed ++ // else if (modeName.startsWith("GOFB")) ++ // { ++ // ivLength = baseEngine.getBlockSize(); ++ // cipher = new BufferedGenericBlockCipher(new BufferedBlockCipher( ++ // new GOFBBlockCipher(baseEngine))); ++ // } ++ // END android-removed + else if (modeName.startsWith("CTS")) + { + ivLength = baseEngine.getBlockSize(); +@@ -278,11 +300,13 @@ ivLength = baseEngine.getBlockSize(); cipher = new AEADGenericBlockCipher(new CCMBlockCipher(baseEngine)); } @@ -2945,7 +7003,7 @@ diff -Naur bcprov-jdk16-146.orig/org/bouncycastle/jce/provider/JCEBlockCipher.ja else if (modeName.startsWith("GCM")) { ivLength = baseEngine.getBlockSize(); -@@ -365,13 +383,15 @@ +@@ -371,13 +395,15 @@ throw new InvalidKeyException("Key for algorithm " + key.getAlgorithm() + " not suitable for symmetric enryption."); } @@ -2968,7 +7026,7 @@ diff -Naur bcprov-jdk16-146.orig/org/bouncycastle/jce/provider/JCEBlockCipher.ja // // a note on iv's - if ivLength is zero the IV gets ignored (we don't use it). -@@ -437,63 +457,65 @@ +@@ -451,63 +477,65 @@ param = new KeyParameter(key.getEncoded()); } } @@ -3091,7 +7149,7 @@ diff -Naur bcprov-jdk16-146.orig/org/bouncycastle/jce/provider/JCEBlockCipher.ja else { throw new InvalidAlgorithmParameterException("unknown parameter type."); -@@ -697,10 +719,21 @@ +@@ -711,10 +739,21 @@ int inputLen, byte[] output, int outputOffset) @@ -3114,7 +7172,7 @@ diff -Naur bcprov-jdk16-146.orig/org/bouncycastle/jce/provider/JCEBlockCipher.ja if (inputLen != 0) { len = cipher.processBytes(input, inputOffset, inputLen, output, outputOffset); -@@ -742,62 +775,64 @@ +@@ -756,62 +795,64 @@ } } @@ -3235,150 +7293,11 @@ diff -Naur bcprov-jdk16-146.orig/org/bouncycastle/jce/provider/JCEBlockCipher.ja /** * PBEWithMD5AndDES -@@ -822,7 +857,7 @@ - super(new CBCBlockCipher(new RC2Engine())); - } - } -- -+ - /** - * PBEWithSHA1AndDES - */ -@@ -870,7 +905,7 @@ - super(new CBCBlockCipher(new DESedeEngine())); - } - } -- -+ - /** - * PBEWithSHAAnd128BitRC2-CBC - */ -@@ -894,7 +929,7 @@ - super(new CBCBlockCipher(new RC2Engine())); - } - } -- -+ - /** - * PBEWithSHAAndTwofish-CBC - */ -@@ -906,7 +941,7 @@ - super(new CBCBlockCipher(new TwofishEngine())); - } - } -- -+ - /** - * PBEWithAES-CBC - */ -diff -Naur bcprov-jdk16-146.orig/org/bouncycastle/jce/provider/JCEDHKeyAgreement.java bcprov-jdk16-146/org/bouncycastle/jce/provider/JCEDHKeyAgreement.java ---- bcprov-jdk16-146.orig/org/bouncycastle/jce/provider/JCEDHKeyAgreement.java 2011-02-23 20:08:56.000000000 +0000 -+++ bcprov-jdk16-146/org/bouncycastle/jce/provider/JCEDHKeyAgreement.java 2012-07-27 18:48:00.031478939 +0000 -@@ -36,10 +36,12 @@ - - static - { -- Integer i64 = new Integer(64); -- Integer i192 = new Integer(192); -- Integer i128 = new Integer(128); -- Integer i256 = new Integer(256); -+ // BEGIN android-changed -+ Integer i64 = Integer.valueOf(64); -+ Integer i192 = Integer.valueOf(192); -+ Integer i128 = Integer.valueOf(128); -+ Integer i256 = Integer.valueOf(256); -+ // END android-changed - - algorithms.put("DES", i64); - algorithms.put("DESEDE", i192); -diff -Naur bcprov-jdk16-146.orig/org/bouncycastle/jce/provider/JCEDigestUtil.java bcprov-jdk16-146/org/bouncycastle/jce/provider/JCEDigestUtil.java ---- bcprov-jdk16-146.orig/org/bouncycastle/jce/provider/JCEDigestUtil.java 2011-02-23 20:08:56.000000000 +0000 -+++ bcprov-jdk16-146/org/bouncycastle/jce/provider/JCEDigestUtil.java 2012-07-27 18:48:00.031478939 +0000 -@@ -12,7 +12,9 @@ - import org.bouncycastle.crypto.Digest; - import org.bouncycastle.crypto.digests.MD5Digest; - import org.bouncycastle.crypto.digests.SHA1Digest; --import org.bouncycastle.crypto.digests.SHA224Digest; -+// BEGIN android-removed -+// import org.bouncycastle.crypto.digests.SHA224Digest; -+// END android-removed - import org.bouncycastle.crypto.digests.SHA256Digest; - import org.bouncycastle.crypto.digests.SHA384Digest; - import org.bouncycastle.crypto.digests.SHA512Digest; -@@ -22,7 +24,9 @@ - { - private static Set md5 = new HashSet(); - private static Set sha1 = new HashSet(); -- private static Set sha224 = new HashSet(); -+ // BEGIN android-removed -+ // private static Set sha224 = new HashSet(); -+ // END android-removed - private static Set sha256 = new HashSet(); - private static Set sha384 = new HashSet(); - private static Set sha512 = new HashSet(); -@@ -38,9 +42,11 @@ - sha1.add("SHA-1"); - sha1.add(OIWObjectIdentifiers.idSHA1.getId()); - -- sha224.add("SHA224"); -- sha224.add("SHA-224"); -- sha224.add(NISTObjectIdentifiers.id_sha224.getId()); -+ // BEGIN android-removed -+ // sha224.add("SHA224"); -+ // sha224.add("SHA-224"); -+ // sha224.add(NISTObjectIdentifiers.id_sha224.getId()); -+ // END android-removed - - sha256.add("SHA256"); - sha256.add("SHA-256"); -@@ -61,9 +67,11 @@ - oids.put("SHA-1", OIWObjectIdentifiers.idSHA1); - oids.put(OIWObjectIdentifiers.idSHA1.getId(), OIWObjectIdentifiers.idSHA1); - -- oids.put("SHA224", NISTObjectIdentifiers.id_sha224); -- oids.put("SHA-224", NISTObjectIdentifiers.id_sha224); -- oids.put(NISTObjectIdentifiers.id_sha224.getId(), NISTObjectIdentifiers.id_sha224); -+ // BEGIN android-removed -+ // oids.put("SHA224", NISTObjectIdentifiers.id_sha224); -+ // oids.put("SHA-224", NISTObjectIdentifiers.id_sha224); -+ // oids.put(NISTObjectIdentifiers.id_sha224.getId(), NISTObjectIdentifiers.id_sha224); -+ // END android-removed - - oids.put("SHA256", NISTObjectIdentifiers.id_sha256); - oids.put("SHA-256", NISTObjectIdentifiers.id_sha256); -@@ -91,10 +99,12 @@ - { - return new MD5Digest(); - } -- if (sha224.contains(digestName)) -- { -- return new SHA224Digest(); -- } -+ // BEGIN android-removed -+ // if (sha224.contains(digestName)) -+ // { -+ // return new SHA224Digest(); -+ // } -+ // END android-removed - if (sha256.contains(digestName)) - { - return new SHA256Digest(); -@@ -116,7 +126,9 @@ - String digest2) - { - return (sha1.contains(digest1) && sha1.contains(digest2)) -- || (sha224.contains(digest1) && sha224.contains(digest2)) -+ // BEGIN android-removed -+ // || (sha224.contains(digest1) && sha224.contains(digest2)) -+ // END android-removed - || (sha256.contains(digest1) && sha256.contains(digest2)) - || (sha384.contains(digest1) && sha384.contains(digest2)) - || (sha512.contains(digest1) && sha512.contains(digest2)) -diff -Naur bcprov-jdk16-146.orig/org/bouncycastle/jce/provider/JCEECPrivateKey.java bcprov-jdk16-146/org/bouncycastle/jce/provider/JCEECPrivateKey.java ---- bcprov-jdk16-146.orig/org/bouncycastle/jce/provider/JCEECPrivateKey.java 2011-02-23 20:08:56.000000000 +0000 -+++ bcprov-jdk16-146/org/bouncycastle/jce/provider/JCEECPrivateKey.java 2012-07-27 18:48:00.031478939 +0000 -@@ -20,7 +20,9 @@ - import org.bouncycastle.asn1.DERObject; +diff -Naur bcprov-jdk15on-147.orig/org/bouncycastle/jce/provider/JCEECPrivateKey.java bcprov-jdk15on-147/org/bouncycastle/jce/provider/JCEECPrivateKey.java +--- bcprov-jdk15on-147.orig/org/bouncycastle/jce/provider/JCEECPrivateKey.java 2012-03-22 15:11:48.000000000 +0000 ++++ bcprov-jdk15on-147/org/bouncycastle/jce/provider/JCEECPrivateKey.java 2012-09-11 00:12:44.000000000 +0000 +@@ -21,7 +21,9 @@ + import org.bouncycastle.asn1.DERNull; import org.bouncycastle.asn1.DERObjectIdentifier; import org.bouncycastle.asn1.cryptopro.CryptoProObjectIdentifiers; -import org.bouncycastle.asn1.cryptopro.ECGOST3410NamedCurves; @@ -3388,8 +7307,8 @@ diff -Naur bcprov-jdk16-146.orig/org/bouncycastle/jce/provider/JCEECPrivateKey.j import org.bouncycastle.asn1.pkcs.PrivateKeyInfo; import org.bouncycastle.asn1.sec.ECPrivateKeyStructure; import org.bouncycastle.asn1.x509.AlgorithmIdentifier; -@@ -199,21 +201,23 @@ - DERObjectIdentifier oid = (DERObjectIdentifier)params.getParameters(); +@@ -203,21 +205,23 @@ + ASN1ObjectIdentifier oid = ASN1ObjectIdentifier.getInstance(params.getParameters()); X9ECParameters ecP = ECUtil.getNamedCurveByOid(oid); - if (ecP == null) // GOST Curve @@ -3427,30 +7346,30 @@ diff -Naur bcprov-jdk16-146.orig/org/bouncycastle/jce/provider/JCEECPrivateKey.j { EllipticCurve ellipticCurve = EC5Util.convertCurve(ecP.getCurve(), ecP.getSeed()); -@@ -324,11 +328,13 @@ - keyStructure = new ECPrivateKeyStructure(this.getS(), params); - } +@@ -331,11 +335,13 @@ -- if (algorithm.equals("ECGOST3410")) -- { -- info = new PrivateKeyInfo(new AlgorithmIdentifier(CryptoProObjectIdentifiers.gostR3410_2001, params.getDERObject()), keyStructure.getDERObject()); -- } -- else -+ // BEGIN android-removed -+ // if (algorithm.equals("ECGOST3410")) -+ // { -+ // info = new PrivateKeyInfo(new AlgorithmIdentifier(CryptoProObjectIdentifiers.gostR3410_2001, params.getDERObject()), keyStructure.getDERObject()); -+ // } -+ // else -+ // END android-removed + try { +- if (algorithm.equals("ECGOST3410")) +- { +- info = new PrivateKeyInfo(new AlgorithmIdentifier(CryptoProObjectIdentifiers.gostR3410_2001, params.toASN1Primitive()), keyStructure.toASN1Primitive()); +- } +- else ++ // BEGIN android-removed ++ // if (algorithm.equals("ECGOST3410")) ++ // { ++ // info = new PrivateKeyInfo(new AlgorithmIdentifier(CryptoProObjectIdentifiers.gostR3410_2001, params.toASN1Primitive()), keyStructure.toASN1Primitive()); ++ // } ++ // else ++ // END android-removed + { - info = new PrivateKeyInfo(new AlgorithmIdentifier(X9ObjectIdentifiers.id_ecPublicKey, params.getDERObject()), keyStructure.getDERObject()); -diff -Naur bcprov-jdk16-146.orig/org/bouncycastle/jce/provider/JCEECPublicKey.java bcprov-jdk16-146/org/bouncycastle/jce/provider/JCEECPublicKey.java ---- bcprov-jdk16-146.orig/org/bouncycastle/jce/provider/JCEECPublicKey.java 2011-02-23 20:08:56.000000000 +0000 -+++ bcprov-jdk16-146/org/bouncycastle/jce/provider/JCEECPublicKey.java 2012-07-27 18:48:00.031478939 +0000 -@@ -20,8 +20,10 @@ - import org.bouncycastle.asn1.DERObjectIdentifier; + info = new PrivateKeyInfo(new AlgorithmIdentifier(X9ObjectIdentifiers.id_ecPublicKey, params.toASN1Primitive()), keyStructure.toASN1Primitive()); +diff -Naur bcprov-jdk15on-147.orig/org/bouncycastle/jce/provider/JCEECPublicKey.java bcprov-jdk15on-147/org/bouncycastle/jce/provider/JCEECPublicKey.java +--- bcprov-jdk15on-147.orig/org/bouncycastle/jce/provider/JCEECPublicKey.java 2012-03-22 15:11:48.000000000 +0000 ++++ bcprov-jdk15on-147/org/bouncycastle/jce/provider/JCEECPublicKey.java 2012-09-11 00:12:44.000000000 +0000 +@@ -19,8 +19,10 @@ + import org.bouncycastle.asn1.DERNull; import org.bouncycastle.asn1.DEROctetString; import org.bouncycastle.asn1.cryptopro.CryptoProObjectIdentifiers; -import org.bouncycastle.asn1.cryptopro.ECGOST3410NamedCurves; @@ -3462,17 +7381,15 @@ diff -Naur bcprov-jdk16-146.orig/org/bouncycastle/jce/provider/JCEECPublicKey.ja import org.bouncycastle.asn1.x509.AlgorithmIdentifier; import org.bouncycastle.asn1.x509.SubjectPublicKeyInfo; import org.bouncycastle.asn1.x9.X962Parameters; -@@ -31,11 +33,15 @@ - import org.bouncycastle.asn1.x9.X9ObjectIdentifiers; - import org.bouncycastle.crypto.params.ECDomainParameters; - import org.bouncycastle.crypto.params.ECPublicKeyParameters; +@@ -33,9 +35,13 @@ + import org.bouncycastle.jcajce.provider.asymmetric.ec.EC5Util; + import org.bouncycastle.jcajce.provider.asymmetric.ec.ECUtil; + import org.bouncycastle.jcajce.provider.asymmetric.util.KeyUtil; -import org.bouncycastle.jce.ECGOST3410NamedCurveTable; +// BEGIN android-removed +// import org.bouncycastle.jce.ECGOST3410NamedCurveTable; +// END android-removed import org.bouncycastle.jce.interfaces.ECPointEncoder; - import org.bouncycastle.jce.provider.asymmetric.ec.EC5Util; - import org.bouncycastle.jce.provider.asymmetric.ec.ECUtil; -import org.bouncycastle.jce.spec.ECNamedCurveParameterSpec; +// BEGIN android-removed +// import org.bouncycastle.jce.spec.ECNamedCurveParameterSpec; @@ -3514,7 +7431,7 @@ diff -Naur bcprov-jdk16-146.orig/org/bouncycastle/jce/provider/JCEECPublicKey.ja - - try - { -- key = (ASN1OctetString) ASN1Object.fromByteArray(bits.getBytes()); +- key = (ASN1OctetString) ASN1Primitive.fromByteArray(bits.getBytes()); - } - catch (IOException ex) - { @@ -3563,7 +7480,7 @@ diff -Naur bcprov-jdk16-146.orig/org/bouncycastle/jce/provider/JCEECPublicKey.ja + // + // try + // { -+ // key = (ASN1OctetString) ASN1Object.fromByteArray(bits.getBytes()); ++ // key = (ASN1OctetString) ASN1Primitive.fromByteArray(bits.getBytes()); + // } + // catch (IOException ex) + // { @@ -3605,7 +7522,7 @@ diff -Naur bcprov-jdk16-146.orig/org/bouncycastle/jce/provider/JCEECPublicKey.ja + // else + // END android-removed { - X962Parameters params = new X962Parameters((DERObject)info.getAlgorithmId().getParameters()); + X962Parameters params = new X962Parameters((ASN1Primitive)info.getAlgorithmId().getParameters()); ECCurve curve; @@ -315,45 +327,47 @@ ASN1Encodable params; @@ -3647,7 +7564,7 @@ diff -Naur bcprov-jdk16-146.orig/org/bouncycastle/jce/provider/JCEECPublicKey.ja - extractBytes(encKey, 0, bX); - extractBytes(encKey, 32, bY); - -- info = new SubjectPublicKeyInfo(new AlgorithmIdentifier(CryptoProObjectIdentifiers.gostR3410_2001, params.getDERObject()), new DEROctetString(encKey)); +- info = new SubjectPublicKeyInfo(new AlgorithmIdentifier(CryptoProObjectIdentifiers.gostR3410_2001, params), new DEROctetString(encKey)); - } - else + // BEGIN android-removed @@ -3687,281 +7604,47 @@ diff -Naur bcprov-jdk16-146.orig/org/bouncycastle/jce/provider/JCEECPublicKey.ja + // extractBytes(encKey, 0, bX); + // extractBytes(encKey, 32, bY); + // -+ // info = new SubjectPublicKeyInfo(new AlgorithmIdentifier(CryptoProObjectIdentifiers.gostR3410_2001, params.getDERObject()), new DEROctetString(encKey)); ++ // info = new SubjectPublicKeyInfo(new AlgorithmIdentifier(CryptoProObjectIdentifiers.gostR3410_2001, params), new DEROctetString(encKey)); + // } + // else + // END android-removed { if (ecSpec instanceof ECNamedCurveSpec) { -diff -Naur bcprov-jdk16-146.orig/org/bouncycastle/jce/provider/JCEKeyGenerator.java bcprov-jdk16-146/org/bouncycastle/jce/provider/JCEKeyGenerator.java ---- bcprov-jdk16-146.orig/org/bouncycastle/jce/provider/JCEKeyGenerator.java 2011-02-23 20:08:56.000000000 +0000 -+++ bcprov-jdk16-146/org/bouncycastle/jce/provider/JCEKeyGenerator.java 2012-07-27 18:48:00.031478939 +0000 -@@ -57,6 +57,11 @@ - { - try - { -+ // BEGIN android-added -+ if (random == null) { -+ random = new SecureRandom(); -+ } -+ // END android-added - engine.init(new KeyGenerationParameters(random, keySize)); - uninitialised = false; - } -@@ -93,56 +98,60 @@ - } - } - -- /** -- * RC2 -- */ -- public static class RC2 -- extends JCEKeyGenerator -- { -- public RC2() -- { -- super("RC2", 128, new CipherKeyGenerator()); -- } -- } -- -- /** -- * GOST28147 -- */ -- public static class GOST28147 -- extends JCEKeyGenerator -- { -- public GOST28147() -- { -- super("GOST28147", 256, new CipherKeyGenerator()); -- } -- } -+ // BEGIN android-removed -+ // /** -+ // * RC2 -+ // */ -+ // public static class RC2 -+ // extends JCEKeyGenerator -+ // { -+ // public RC2() -+ // { -+ // super("RC2", 128, new CipherKeyGenerator()); -+ // } -+ // } -+ // -+ // /** -+ // * GOST28147 -+ // */ -+ // public static class GOST28147 -+ // extends JCEKeyGenerator -+ // { -+ // public GOST28147() -+ // { -+ // super("GOST28147", 256, new CipherKeyGenerator()); -+ // } -+ // } -+ // END android-removed - - // HMAC Related secret keys.. - -- /** -- * MD2HMAC -- */ -- public static class MD2HMAC -- extends JCEKeyGenerator -- { -- public MD2HMAC() -- { -- super("HMACMD2", 128, new CipherKeyGenerator()); -- } -- } -- -- -- /** -- * MD4HMAC -- */ -- public static class MD4HMAC -- extends JCEKeyGenerator -- { -- public MD4HMAC() -- { -- super("HMACMD4", 128, new CipherKeyGenerator()); -- } -- } -+ // BEGIN android-removed -+ // /** -+ // * MD2HMAC -+ // */ -+ // public static class MD2HMAC -+ // extends JCEKeyGenerator -+ // { -+ // public MD2HMAC() -+ // { -+ // super("HMACMD2", 128, new CipherKeyGenerator()); -+ // } -+ // } -+ // -+ // -+ // /** -+ // * MD4HMAC -+ // */ -+ // public static class MD4HMAC -+ // extends JCEKeyGenerator -+ // { -+ // public MD4HMAC() -+ // { -+ // super("HMACMD4", 128, new CipherKeyGenerator()); -+ // } -+ // } -+ // END android-removed - - /** - * MD5HMAC -@@ -157,29 +166,29 @@ - } - - -- /** -- * RIPE128HMAC -- */ -- public static class RIPEMD128HMAC -- extends JCEKeyGenerator -- { -- public RIPEMD128HMAC() -- { -- super("HMACRIPEMD128", 128, new CipherKeyGenerator()); -- } -- } -- -- /** -- * RIPE160HMAC -- */ -- public static class RIPEMD160HMAC -- extends JCEKeyGenerator -- { -- public RIPEMD160HMAC() -- { -- super("HMACRIPEMD160", 160, new CipherKeyGenerator()); -- } -- } -+ // /** -+ // * RIPE128HMAC -+ // */ -+ // public static class RIPEMD128HMAC -+ // extends JCEKeyGenerator -+ // { -+ // public RIPEMD128HMAC() -+ // { -+ // super("HMACRIPEMD128", 128, new CipherKeyGenerator()); -+ // } -+ // } -+ -+ // /** -+ // * RIPE160HMAC -+ // */ -+ // public static class RIPEMD160HMAC -+ // extends JCEKeyGenerator -+ // { -+ // public RIPEMD160HMAC() -+ // { -+ // super("HMACRIPEMD160", 160, new CipherKeyGenerator()); -+ // } -+ // } - - - /** -@@ -194,17 +203,19 @@ - } - } - -- /** -- * HMACSHA224 -- */ -- public static class HMACSHA224 -- extends JCEKeyGenerator -- { -- public HMACSHA224() -- { -- super("HMACSHA224", 224, new CipherKeyGenerator()); -- } -- } -+ // BEGIN android-removed -+ // /** -+ // * HMACSHA224 -+ // */ -+ // public static class HMACSHA224 -+ // extends JCEKeyGenerator -+ // { -+ // public HMACSHA224() -+ // { -+ // super("HMACSHA224", 224, new CipherKeyGenerator()); -+ // } -+ // } -+ // END android-removed - - /** - * HMACSHA256 -@@ -242,15 +253,17 @@ - } - } - -- /** -- * HMACTIGER -- */ -- public static class HMACTIGER -- extends JCEKeyGenerator -- { -- public HMACTIGER() -- { -- super("HMACTIGER", 192, new CipherKeyGenerator()); -- } -- } -+ // BEGIN android-removed -+ // /** -+ // * HMACTIGER -+ // */ -+ // public static class HMACTIGER -+ // extends JCEKeyGenerator -+ // { -+ // public HMACTIGER() -+ // { -+ // super("HMACTIGER", 192, new CipherKeyGenerator()); -+ // } -+ // } -+ // END android-removed - } -diff -Naur bcprov-jdk16-146.orig/org/bouncycastle/jce/provider/JCEMac.java bcprov-jdk16-146/org/bouncycastle/jce/provider/JCEMac.java ---- bcprov-jdk16-146.orig/org/bouncycastle/jce/provider/JCEMac.java 2011-02-23 20:08:56.000000000 +0000 -+++ bcprov-jdk16-146/org/bouncycastle/jce/provider/JCEMac.java 2012-07-27 18:48:00.031478939 +0000 -@@ -11,25 +11,39 @@ +diff -Naur bcprov-jdk15on-147.orig/org/bouncycastle/jce/provider/JCEMac.java bcprov-jdk15on-147/org/bouncycastle/jce/provider/JCEMac.java +--- bcprov-jdk15on-147.orig/org/bouncycastle/jce/provider/JCEMac.java 2012-03-22 15:11:48.000000000 +0000 ++++ bcprov-jdk15on-147/org/bouncycastle/jce/provider/JCEMac.java 2012-09-11 00:12:44.000000000 +0000 +@@ -11,24 +11,35 @@ import org.bouncycastle.crypto.CipherParameters; import org.bouncycastle.crypto.Mac; -import org.bouncycastle.crypto.digests.MD2Digest; -import org.bouncycastle.crypto.digests.MD4Digest; -+// BEGIN android-removed -+// import org.bouncycastle.crypto.digests.MD2Digest; -+// import org.bouncycastle.crypto.digests.MD4Digest; -+// END android-removed - import org.bouncycastle.crypto.digests.MD5Digest; +-import org.bouncycastle.crypto.digests.MD5Digest; -import org.bouncycastle.crypto.digests.RIPEMD128Digest; -import org.bouncycastle.crypto.digests.RIPEMD160Digest; +-import org.bouncycastle.crypto.digests.SHA1Digest; +-import org.bouncycastle.crypto.digests.SHA224Digest; +-import org.bouncycastle.crypto.digests.SHA256Digest; +-import org.bouncycastle.crypto.digests.SHA384Digest; +-import org.bouncycastle.crypto.digests.SHA512Digest; +-import org.bouncycastle.crypto.digests.TigerDigest; +// BEGIN android-removed ++// import org.bouncycastle.crypto.digests.MD2Digest; ++// import org.bouncycastle.crypto.digests.MD4Digest; ++// import org.bouncycastle.crypto.digests.MD5Digest; +// import org.bouncycastle.crypto.digests.RIPEMD128Digest; +// import org.bouncycastle.crypto.digests.RIPEMD160Digest; -+// END android-removed - import org.bouncycastle.crypto.digests.SHA1Digest; --import org.bouncycastle.crypto.digests.SHA224Digest; -+// BEGIN android-removed ++// import org.bouncycastle.crypto.digests.SHA1Digest; +// import org.bouncycastle.crypto.digests.SHA224Digest; -+// END android-removed - import org.bouncycastle.crypto.digests.SHA256Digest; - import org.bouncycastle.crypto.digests.SHA384Digest; - import org.bouncycastle.crypto.digests.SHA512Digest; --import org.bouncycastle.crypto.digests.TigerDigest; -+// BEGIN android-removed ++// import org.bouncycastle.crypto.digests.SHA256Digest; ++// import org.bouncycastle.crypto.digests.SHA384Digest; ++// import org.bouncycastle.crypto.digests.SHA512Digest; +// import org.bouncycastle.crypto.digests.TigerDigest; +// END android-removed ++// BEGIN android-added ++import org.bouncycastle.crypto.digests.OpenSSLDigest; ++// END android-added import org.bouncycastle.crypto.engines.DESEngine; -import org.bouncycastle.crypto.engines.RC2Engine; +// BEGIN android-removed @@ -3969,10 +7652,8 @@ diff -Naur bcprov-jdk16-146.orig/org/bouncycastle/jce/provider/JCEMac.java bcpro +// END android-removed import org.bouncycastle.crypto.macs.CBCBlockCipherMac; -import org.bouncycastle.crypto.macs.CFBBlockCipherMac; --import org.bouncycastle.crypto.macs.GOST28147Mac; +// BEGIN android-removed +// import org.bouncycastle.crypto.macs.CFBBlockCipherMac; -+// import org.bouncycastle.crypto.macs.GOST28147Mac; +// END android-removed import org.bouncycastle.crypto.macs.HMac; -import org.bouncycastle.crypto.macs.ISO9797Alg3Mac; @@ -3984,7 +7665,7 @@ diff -Naur bcprov-jdk16-146.orig/org/bouncycastle/jce/provider/JCEMac.java bcpro import org.bouncycastle.crypto.paddings.ISO7816d4Padding; import org.bouncycastle.crypto.params.KeyParameter; import org.bouncycastle.crypto.params.ParametersWithIV; -@@ -143,115 +157,117 @@ +@@ -144,109 +155,111 @@ * the classes that extend directly off us. */ @@ -4001,29 +7682,30 @@ diff -Naur bcprov-jdk16-146.orig/org/bouncycastle/jce/provider/JCEMac.java bcpro - } - - /** -- * RC2 +- * DES 64 bit MAC - */ -- public static class RC2 +- public static class DES64 - extends JCEMac - { -- public RC2() +- public DES64() - { -- super(new CBCBlockCipherMac(new RC2Engine())); +- super(new CBCBlockCipherMac(new DESEngine(), 64)); - } - } - - /** -- * GOST28147 +- * RC2 - */ -- public static class GOST28147 +- public static class RC2 - extends JCEMac - { -- public GOST28147() +- public RC2() - { -- super(new GOST28147Mac()); +- super(new CBCBlockCipherMac(new RC2Engine())); - } - } - +- - - - /** @@ -4041,14 +7723,7 @@ diff -Naur bcprov-jdk16-146.orig/org/bouncycastle/jce/provider/JCEMac.java bcpro - /** - * RC2CFB8 - */ -- public static class RC2CFB8 -- extends JCEMac -- { -- public RC2CFB8() -- { -- super(new CFBBlockCipherMac(new RC2Engine())); -- } -- } +- - - /** - * DES9797Alg3with7816-4Padding @@ -4111,31 +7786,32 @@ diff -Naur bcprov-jdk16-146.orig/org/bouncycastle/jce/provider/JCEMac.java bcpro + // } + // + // /** -+ // * RC2 ++ // * DES 64 bit MAC + // */ -+ // public static class RC2 ++ // public static class DES64 + // extends JCEMac + // { -+ // public RC2() ++ // public DES64() + // { -+ // super(new CBCBlockCipherMac(new RC2Engine())); ++ // super(new CBCBlockCipherMac(new DESEngine(), 64)); + // } + // } + // + // /** -+ // * GOST28147 ++ // * RC2 + // */ -+ // public static class GOST28147 ++ // public static class RC2 + // extends JCEMac + // { -+ // public GOST28147() ++ // public RC2() + // { -+ // super(new GOST28147Mac()); ++ // super(new CBCBlockCipherMac(new RC2Engine())); + // } + // } + // + // + // ++ // + // /** + // * DES + // */ @@ -4151,14 +7827,7 @@ diff -Naur bcprov-jdk16-146.orig/org/bouncycastle/jce/provider/JCEMac.java bcpro + // /** + // * RC2CFB8 + // */ -+ // public static class RC2CFB8 -+ // extends JCEMac -+ // { -+ // public RC2CFB8() -+ // { -+ // super(new CFBBlockCipherMac(new RC2Engine())); -+ // } -+ // } ++ // + // + // /** + // * DES9797Alg3with7816-4Padding @@ -4211,20 +7880,28 @@ diff -Naur bcprov-jdk16-146.orig/org/bouncycastle/jce/provider/JCEMac.java bcpro /** * MD5 HMac -@@ -264,7 +280,7 @@ - super(new HMac(new MD5Digest())); +@@ -256,7 +269,9 @@ + { + public MD5() + { +- super(new HMac(new MD5Digest())); ++ // BEGIN android-changed ++ super(new HMac(new OpenSSLDigest.MD5())); ++ // END android-changed } } -- -+ - /** - * SHA1 HMac - */ -@@ -276,18 +292,20 @@ - super(new HMac(new SHA1Digest())); + +@@ -268,21 +283,25 @@ + { + public SHA1() + { +- super(new HMac(new SHA1Digest())); ++ // BEGIN android-changed ++ super(new HMac(new OpenSSLDigest.SHA1())); ++ // END android-changed } } -- + - /** - * SHA-224 HMac - */ @@ -4236,7 +7913,6 @@ diff -Naur bcprov-jdk16-146.orig/org/bouncycastle/jce/provider/JCEMac.java bcpro - super(new HMac(new SHA224Digest())); - } - } -+ + // BEGIN android-removed + // /** + // * SHA-224 HMac @@ -4253,20 +7929,28 @@ diff -Naur bcprov-jdk16-146.orig/org/bouncycastle/jce/provider/JCEMac.java bcpro /** * SHA-256 HMac -@@ -300,7 +318,7 @@ - super(new HMac(new SHA256Digest())); +@@ -292,7 +311,9 @@ + { + public SHA256() + { +- super(new HMac(new SHA256Digest())); ++ // BEGIN android-changed ++ super(new HMac(new OpenSSLDigest.SHA256())); ++ // END android-changed } } -- -+ - /** - * SHA-384 HMac - */ -@@ -312,15 +330,17 @@ - super(new HMac(new SHA384Digest())); + +@@ -304,18 +325,22 @@ + { + public SHA384() + { +- super(new HMac(new SHA384Digest())); ++ // BEGIN android-changed ++ super(new HMac(new OpenSSLDigest.SHA384())); ++ // END android-changed } } -- + - public static class OldSHA384 - extends JCEMac - { @@ -4275,7 +7959,6 @@ diff -Naur bcprov-jdk16-146.orig/org/bouncycastle/jce/provider/JCEMac.java bcpro - super(new OldHMac(new SHA384Digest())); - } - } -+ + // BEGIN android-removed + // public static class OldSHA384 + // extends JCEMac @@ -4289,11 +7972,17 @@ diff -Naur bcprov-jdk16-146.orig/org/bouncycastle/jce/provider/JCEMac.java bcpro /** * SHA-512 HMac -@@ -333,73 +353,75 @@ - super(new HMac(new SHA512Digest())); +@@ -325,75 +350,80 @@ + { + public SHA512() + { +- super(new HMac(new SHA512Digest())); ++ // BEGIN android-changed ++ super(new HMac(new OpenSSLDigest.SHA512())); ++ // END android-changed } } -- + - /** - * SHA-512 HMac - */ @@ -4382,7 +8071,6 @@ diff -Naur bcprov-jdk16-146.orig/org/bouncycastle/jce/provider/JCEMac.java bcpro - super(new HMac(new RIPEMD160Digest()), PKCS12, RIPEMD160, 160); - } - } -- + // /** + // * RIPEMD160 HMac + // */ @@ -4425,15 +8113,20 @@ diff -Naur bcprov-jdk16-146.orig/org/bouncycastle/jce/provider/JCEMac.java bcpro + // } + // } + // END android-removed -+ + /** * PBEWithHmacSHA - */ -@@ -411,16 +433,18 @@ - super(new HMac(new SHA1Digest()), PKCS12, SHA1, 160); +@@ -403,19 +433,23 @@ + { + public PBEWithSHA() + { +- super(new HMac(new SHA1Digest()), PKCS12, SHA1, 160); ++ // BEGIN android-changed ++ super(new HMac(new OpenSSLDigest.SHA1()), PKCS12, SHA1, 160); ++ // END android-changed } } -- + - /** - * PBEWithHmacTiger - */ @@ -4445,7 +8138,6 @@ diff -Naur bcprov-jdk16-146.orig/org/bouncycastle/jce/provider/JCEMac.java bcpro - super(new HMac(new TigerDigest()), PKCS12, TIGER, 192); - } - } -+ + // BEGIN android-removed + // /** + // * PBEWithHmacTiger @@ -4460,150 +8152,52 @@ diff -Naur bcprov-jdk16-146.orig/org/bouncycastle/jce/provider/JCEMac.java bcpro + // } + // END android-removed } -diff -Naur bcprov-jdk16-146.orig/org/bouncycastle/jce/provider/JCERSACipher.java bcprov-jdk16-146/org/bouncycastle/jce/provider/JCERSACipher.java ---- bcprov-jdk16-146.orig/org/bouncycastle/jce/provider/JCERSACipher.java 2011-02-23 20:08:56.000000000 +0000 -+++ bcprov-jdk16-146/org/bouncycastle/jce/provider/JCERSACipher.java 2012-07-27 18:48:00.031478939 +0000 -@@ -535,48 +535,50 @@ - } - } - -- static public class PKCS1v1_5Padding -- extends JCERSACipher -- { -- public PKCS1v1_5Padding() -- { -- super(new PKCS1Encoding(new RSABlindedEngine())); -- } -- } -- -- static public class PKCS1v1_5Padding_PrivateOnly -- extends JCERSACipher -- { -- public PKCS1v1_5Padding_PrivateOnly() -- { -- super(false, true, new PKCS1Encoding(new RSABlindedEngine())); -- } -- } -- -- static public class PKCS1v1_5Padding_PublicOnly -- extends JCERSACipher -- { -- public PKCS1v1_5Padding_PublicOnly() -- { -- super(true, false, new PKCS1Encoding(new RSABlindedEngine())); -- } -- } -- -- static public class OAEPPadding -- extends JCERSACipher -- { -- public OAEPPadding() -- { -- super(OAEPParameterSpec.DEFAULT); -- } -- } -- -- static public class ISO9796d1Padding -- extends JCERSACipher -- { -- public ISO9796d1Padding() -- { -- super(new ISO9796d1Encoding(new RSABlindedEngine())); -- } -- } -+ // BEGIN android-removed -+ // static public class PKCS1v1_5Padding -+ // extends JCERSACipher -+ // { -+ // public PKCS1v1_5Padding() -+ // { -+ // super(new PKCS1Encoding(new RSABlindedEngine())); -+ // } -+ // } -+ // -+ // static public class PKCS1v1_5Padding_PrivateOnly -+ // extends JCERSACipher -+ // { -+ // public PKCS1v1_5Padding_PrivateOnly() -+ // { -+ // super(false, true, new PKCS1Encoding(new RSABlindedEngine())); -+ // } -+ // } -+ // -+ // static public class PKCS1v1_5Padding_PublicOnly -+ // extends JCERSACipher -+ // { -+ // public PKCS1v1_5Padding_PublicOnly() -+ // { -+ // super(true, false, new PKCS1Encoding(new RSABlindedEngine())); -+ // } -+ // } -+ // -+ // static public class OAEPPadding -+ // extends JCERSACipher -+ // { -+ // public OAEPPadding() -+ // { -+ // super(OAEPParameterSpec.DEFAULT); -+ // } -+ // } -+ // -+ // static public class ISO9796d1Padding -+ // extends JCERSACipher -+ // { -+ // public ISO9796d1Padding() -+ // { -+ // super(new ISO9796d1Encoding(new RSABlindedEngine())); -+ // } -+ // } -+ // END android-removed - } -diff -Naur bcprov-jdk16-146.orig/org/bouncycastle/jce/provider/JCERSAPrivateCrtKey.java bcprov-jdk16-146/org/bouncycastle/jce/provider/JCERSAPrivateCrtKey.java ---- bcprov-jdk16-146.orig/org/bouncycastle/jce/provider/JCERSAPrivateCrtKey.java 2011-02-23 20:08:56.000000000 +0000 -+++ bcprov-jdk16-146/org/bouncycastle/jce/provider/JCERSAPrivateCrtKey.java 2012-07-27 18:48:00.031478939 +0000 -@@ -125,7 +125,9 @@ +diff -Naur bcprov-jdk15on-147.orig/org/bouncycastle/jce/provider/JCERSAPrivateCrtKey.java bcprov-jdk15on-147/org/bouncycastle/jce/provider/JCERSAPrivateCrtKey.java +--- bcprov-jdk15on-147.orig/org/bouncycastle/jce/provider/JCERSAPrivateCrtKey.java 2012-03-22 15:11:48.000000000 +0000 ++++ bcprov-jdk15on-147/org/bouncycastle/jce/provider/JCERSAPrivateCrtKey.java 2012-09-11 00:12:44.000000000 +0000 +@@ -127,7 +127,9 @@ */ public byte[] getEncoded() { -- PrivateKeyInfo info = new PrivateKeyInfo(new AlgorithmIdentifier(PKCSObjectIdentifiers.rsaEncryption, new DERNull()), new RSAPrivateKeyStructure(getModulus(), getPublicExponent(), getPrivateExponent(), getPrimeP(), getPrimeQ(), getPrimeExponentP(), getPrimeExponentQ(), getCrtCoefficient()).getDERObject()); +- return KeyUtil.getEncodedPrivateKeyInfo(new AlgorithmIdentifier(PKCSObjectIdentifiers.rsaEncryption, new DERNull()), new RSAPrivateKey(getModulus(), getPublicExponent(), getPrivateExponent(), getPrimeP(), getPrimeQ(), getPrimeExponentP(), getPrimeExponentQ(), getCrtCoefficient())); + // BEGIN android-changed -+ PrivateKeyInfo info = new PrivateKeyInfo(new AlgorithmIdentifier(PKCSObjectIdentifiers.rsaEncryption, DERNull.INSTANCE), new RSAPrivateKeyStructure(getModulus(), getPublicExponent(), getPrivateExponent(), getPrimeP(), getPrimeQ(), getPrimeExponentP(), getPrimeExponentQ(), getCrtCoefficient()).getDERObject()); ++ return KeyUtil.getEncodedPrivateKeyInfo(new AlgorithmIdentifier(PKCSObjectIdentifiers.rsaEncryption, DERNull.INSTANCE), new RSAPrivateKey(getModulus(), getPublicExponent(), getPrivateExponent(), getPrimeP(), getPrimeQ(), getPrimeExponentP(), getPrimeExponentQ(), getCrtCoefficient())); + // END android-changed - - return info.getDEREncoded(); } -diff -Naur bcprov-jdk16-146.orig/org/bouncycastle/jce/provider/JCERSAPrivateKey.java bcprov-jdk16-146/org/bouncycastle/jce/provider/JCERSAPrivateKey.java ---- bcprov-jdk16-146.orig/org/bouncycastle/jce/provider/JCERSAPrivateKey.java 2011-02-23 20:08:56.000000000 +0000 -+++ bcprov-jdk16-146/org/bouncycastle/jce/provider/JCERSAPrivateKey.java 2012-07-27 18:48:00.031478939 +0000 -@@ -77,7 +77,9 @@ + + /** +diff -Naur bcprov-jdk15on-147.orig/org/bouncycastle/jce/provider/JCERSAPrivateKey.java bcprov-jdk15on-147/org/bouncycastle/jce/provider/JCERSAPrivateKey.java +--- bcprov-jdk15on-147.orig/org/bouncycastle/jce/provider/JCERSAPrivateKey.java 2012-03-22 15:11:48.000000000 +0000 ++++ bcprov-jdk15on-147/org/bouncycastle/jce/provider/JCERSAPrivateKey.java 2012-09-11 00:12:44.000000000 +0000 +@@ -78,7 +78,9 @@ public byte[] getEncoded() { -- PrivateKeyInfo info = new PrivateKeyInfo(new AlgorithmIdentifier(PKCSObjectIdentifiers.rsaEncryption, new DERNull()), new RSAPrivateKeyStructure(getModulus(), ZERO, getPrivateExponent(), ZERO, ZERO, ZERO, ZERO, ZERO).getDERObject()); +- return KeyUtil.getEncodedPrivateKeyInfo(new AlgorithmIdentifier(PKCSObjectIdentifiers.rsaEncryption, new DERNull()), new org.bouncycastle.asn1.pkcs.RSAPrivateKey(getModulus(), ZERO, getPrivateExponent(), ZERO, ZERO, ZERO, ZERO, ZERO)); + // BEGIN android-changed -+ PrivateKeyInfo info = new PrivateKeyInfo(new AlgorithmIdentifier(PKCSObjectIdentifiers.rsaEncryption, DERNull.INSTANCE), new RSAPrivateKeyStructure(getModulus(), ZERO, getPrivateExponent(), ZERO, ZERO, ZERO, ZERO, ZERO).getDERObject()); ++ return KeyUtil.getEncodedPrivateKeyInfo(new AlgorithmIdentifier(PKCSObjectIdentifiers.rsaEncryption, DERNull.INSTANCE), new org.bouncycastle.asn1.pkcs.RSAPrivateKey(getModulus(), ZERO, getPrivateExponent(), ZERO, ZERO, ZERO, ZERO, ZERO)); + // END android-changed - - return info.getDEREncoded(); } -diff -Naur bcprov-jdk16-146.orig/org/bouncycastle/jce/provider/JCERSAPublicKey.java bcprov-jdk16-146/org/bouncycastle/jce/provider/JCERSAPublicKey.java ---- bcprov-jdk16-146.orig/org/bouncycastle/jce/provider/JCERSAPublicKey.java 2011-02-23 20:08:56.000000000 +0000 -+++ bcprov-jdk16-146/org/bouncycastle/jce/provider/JCERSAPublicKey.java 2012-07-27 18:48:00.031478939 +0000 -@@ -90,7 +90,9 @@ + + public boolean equals(Object o) +diff -Naur bcprov-jdk15on-147.orig/org/bouncycastle/jce/provider/JCERSAPublicKey.java bcprov-jdk15on-147/org/bouncycastle/jce/provider/JCERSAPublicKey.java +--- bcprov-jdk15on-147.orig/org/bouncycastle/jce/provider/JCERSAPublicKey.java 2012-03-22 15:11:48.000000000 +0000 ++++ bcprov-jdk15on-147/org/bouncycastle/jce/provider/JCERSAPublicKey.java 2012-09-11 00:12:44.000000000 +0000 +@@ -91,7 +91,9 @@ public byte[] getEncoded() { -- SubjectPublicKeyInfo info = new SubjectPublicKeyInfo(new AlgorithmIdentifier(PKCSObjectIdentifiers.rsaEncryption, new DERNull()), new RSAPublicKeyStructure(getModulus(), getPublicExponent()).getDERObject()); +- return KeyUtil.getEncodedSubjectPublicKeyInfo(new AlgorithmIdentifier(PKCSObjectIdentifiers.rsaEncryption, new DERNull()), new RSAPublicKeyStructure(getModulus(), getPublicExponent())); + // BEGIN android-changed -+ SubjectPublicKeyInfo info = new SubjectPublicKeyInfo(new AlgorithmIdentifier(PKCSObjectIdentifiers.rsaEncryption, DERNull.INSTANCE), new RSAPublicKeyStructure(getModulus(), getPublicExponent()).getDERObject()); ++ return KeyUtil.getEncodedSubjectPublicKeyInfo(new AlgorithmIdentifier(PKCSObjectIdentifiers.rsaEncryption, DERNull.INSTANCE), new RSAPublicKeyStructure(getModulus(), getPublicExponent())); + // END android-changed - - return info.getDEREncoded(); } -diff -Naur bcprov-jdk16-146.orig/org/bouncycastle/jce/provider/JCESecretKeyFactory.java bcprov-jdk16-146/org/bouncycastle/jce/provider/JCESecretKeyFactory.java ---- bcprov-jdk16-146.orig/org/bouncycastle/jce/provider/JCESecretKeyFactory.java 2011-02-23 20:08:56.000000000 +0000 -+++ bcprov-jdk16-146/org/bouncycastle/jce/provider/JCESecretKeyFactory.java 2012-07-27 18:48:00.031478939 +0000 -@@ -250,29 +250,31 @@ + + public int hashCode() +diff -Naur bcprov-jdk15on-147.orig/org/bouncycastle/jce/provider/JCESecretKeyFactory.java bcprov-jdk15on-147/org/bouncycastle/jce/provider/JCESecretKeyFactory.java +--- bcprov-jdk15on-147.orig/org/bouncycastle/jce/provider/JCESecretKeyFactory.java 2012-03-22 15:11:48.000000000 +0000 ++++ bcprov-jdk15on-147/org/bouncycastle/jce/provider/JCESecretKeyFactory.java 2012-09-11 00:12:44.000000000 +0000 +@@ -252,29 +252,31 @@ } } @@ -4658,7 +8252,7 @@ diff -Naur bcprov-jdk16-146.orig/org/bouncycastle/jce/provider/JCESecretKeyFacto /** * PBEWithMD5AndDES -@@ -406,17 +408,19 @@ +@@ -408,17 +410,19 @@ } } @@ -4689,7 +8283,7 @@ diff -Naur bcprov-jdk16-146.orig/org/bouncycastle/jce/provider/JCESecretKeyFacto /** * PBEWithHmacSHA -@@ -430,17 +434,19 @@ +@@ -432,17 +436,19 @@ } } @@ -4720,7 +8314,7 @@ diff -Naur bcprov-jdk16-146.orig/org/bouncycastle/jce/provider/JCESecretKeyFacto /** * PBEWithSHA1And128BitAES-BC -@@ -549,4 +555,56 @@ +@@ -551,4 +557,56 @@ super("PBEWithMD5And256BitAES-CBC-OpenSSL", null, true, OPENSSL, MD5, 256, 128); } } @@ -4769,7 +8363,7 @@ diff -Naur bcprov-jdk16-146.orig/org/bouncycastle/jce/provider/JCESecretKeyFacto + int ivSize = -1; + CipherParameters param = Util.makePBEMacParameters(pbeSpec, scheme, digest, keySize); + -+ return new JCEPBEKey(this.algName, this.algOid, scheme, digest, keySize, ivSize, pbeSpec, param); ++ return new BCPBEKey(this.algName, this.algOid, scheme, digest, keySize, ivSize, pbeSpec, param); + } + + throw new InvalidKeySpecException("Invalid KeySpec"); @@ -4777,10 +8371,10 @@ diff -Naur bcprov-jdk16-146.orig/org/bouncycastle/jce/provider/JCESecretKeyFacto + } + // END android-added } -diff -Naur bcprov-jdk16-146.orig/org/bouncycastle/jce/provider/JCEStreamCipher.java bcprov-jdk16-146/org/bouncycastle/jce/provider/JCEStreamCipher.java ---- bcprov-jdk16-146.orig/org/bouncycastle/jce/provider/JCEStreamCipher.java 2011-02-23 20:08:56.000000000 +0000 -+++ bcprov-jdk16-146/org/bouncycastle/jce/provider/JCEStreamCipher.java 2012-07-27 18:48:00.041479127 +0000 -@@ -13,20 +13,26 @@ +diff -Naur bcprov-jdk15on-147.orig/org/bouncycastle/jce/provider/JCEStreamCipher.java bcprov-jdk15on-147/org/bouncycastle/jce/provider/JCEStreamCipher.java +--- bcprov-jdk15on-147.orig/org/bouncycastle/jce/provider/JCEStreamCipher.java 2012-03-22 15:11:48.000000000 +0000 ++++ bcprov-jdk15on-147/org/bouncycastle/jce/provider/JCEStreamCipher.java 2012-09-11 00:12:44.000000000 +0000 +@@ -14,20 +14,26 @@ import javax.crypto.ShortBufferException; import javax.crypto.spec.IvParameterSpec; import javax.crypto.spec.PBEParameterSpec; @@ -4814,7 +8408,7 @@ diff -Naur bcprov-jdk16-146.orig/org/bouncycastle/jce/provider/JCEStreamCipher.j import org.bouncycastle.crypto.modes.CFBBlockCipher; import org.bouncycastle.crypto.modes.OFBBlockCipher; import org.bouncycastle.crypto.params.KeyParameter; -@@ -40,8 +46,10 @@ +@@ -44,8 +50,10 @@ // private Class[] availableSpecs = { @@ -4827,7 +8421,7 @@ diff -Naur bcprov-jdk16-146.orig/org/bouncycastle/jce/provider/JCEStreamCipher.j IvParameterSpec.class, PBEParameterSpec.class }; -@@ -370,125 +378,127 @@ +@@ -376,125 +384,127 @@ * The ciphers that inherit from us. */ @@ -5074,1262 +8668,24 @@ diff -Naur bcprov-jdk16-146.orig/org/bouncycastle/jce/provider/JCEStreamCipher.j /** * PBEWithSHAAnd128BitRC4 -@@ -501,7 +511,7 @@ - super(new RC4Engine(), 0); - } - } -- -+ - /** - * PBEWithSHAAnd40BitRC4 - */ -diff -Naur bcprov-jdk16-146.orig/org/bouncycastle/jce/provider/JDKAlgorithmParameterGenerator.java bcprov-jdk16-146/org/bouncycastle/jce/provider/JDKAlgorithmParameterGenerator.java ---- bcprov-jdk16-146.orig/org/bouncycastle/jce/provider/JDKAlgorithmParameterGenerator.java 2011-02-23 20:08:56.000000000 +0000 -+++ bcprov-jdk16-146/org/bouncycastle/jce/provider/JDKAlgorithmParameterGenerator.java 2012-07-27 18:48:00.031478939 +0000 -@@ -11,18 +11,24 @@ - import javax.crypto.spec.DHGenParameterSpec; - import javax.crypto.spec.DHParameterSpec; - import javax.crypto.spec.IvParameterSpec; --import javax.crypto.spec.RC2ParameterSpec; -+// BEGIN android-removed -+// import javax.crypto.spec.RC2ParameterSpec; -+// END android-removed - - import org.bouncycastle.crypto.generators.DHParametersGenerator; - import org.bouncycastle.crypto.generators.DSAParametersGenerator; --import org.bouncycastle.crypto.generators.ElGamalParametersGenerator; --import org.bouncycastle.crypto.generators.GOST3410ParametersGenerator; -+// BEGIN android-removed -+// import org.bouncycastle.crypto.generators.ElGamalParametersGenerator; -+// import org.bouncycastle.crypto.generators.GOST3410ParametersGenerator; -+// END android-removed - import org.bouncycastle.crypto.params.DHParameters; - import org.bouncycastle.crypto.params.DSAParameters; --import org.bouncycastle.crypto.params.ElGamalParameters; --import org.bouncycastle.crypto.params.GOST3410Parameters; --import org.bouncycastle.jce.spec.GOST3410ParameterSpec; --import org.bouncycastle.jce.spec.GOST3410PublicKeyParameterSetSpec; -+// BEGIN android-removed -+// import org.bouncycastle.crypto.params.ElGamalParameters; -+// import org.bouncycastle.crypto.params.GOST3410Parameters; -+// import org.bouncycastle.jce.spec.GOST3410ParameterSpec; -+// import org.bouncycastle.jce.spec.GOST3410PublicKeyParameterSetSpec; -+// END android-removed - - public abstract class JDKAlgorithmParameterGenerator - extends AlgorithmParameterGeneratorSpi -@@ -145,196 +151,198 @@ - } - } - -- public static class GOST3410 -- extends JDKAlgorithmParameterGenerator -- { -- protected void engineInit( -- AlgorithmParameterSpec genParamSpec, -- SecureRandom random) -- throws InvalidAlgorithmParameterException -- { -- throw new InvalidAlgorithmParameterException("No supported AlgorithmParameterSpec for GOST3410 parameter generation."); -- } -- -- protected AlgorithmParameters engineGenerateParameters() -- { -- GOST3410ParametersGenerator pGen = new GOST3410ParametersGenerator(); -- -- if (random != null) -- { -- pGen.init(strength, 2, random); -- } -- else -- { -- pGen.init(strength, 2, new SecureRandom()); -- } -- -- GOST3410Parameters p = pGen.generateParameters(); -- -- AlgorithmParameters params; -- -- try -- { -- params = AlgorithmParameters.getInstance("GOST3410", BouncyCastleProvider.PROVIDER_NAME); -- params.init(new GOST3410ParameterSpec(new GOST3410PublicKeyParameterSetSpec(p.getP(), p.getQ(), p.getA()))); -- } -- catch (Exception e) -- { -- throw new RuntimeException(e.getMessage()); -- } -- -- return params; -- } -- } -- -- public static class ElGamal -- extends JDKAlgorithmParameterGenerator -- { -- private int l = 0; -- -- protected void engineInit( -- AlgorithmParameterSpec genParamSpec, -- SecureRandom random) -- throws InvalidAlgorithmParameterException -- { -- if (!(genParamSpec instanceof DHGenParameterSpec)) -- { -- throw new InvalidAlgorithmParameterException("DH parameter generator requires a DHGenParameterSpec for initialisation"); -- } -- DHGenParameterSpec spec = (DHGenParameterSpec)genParamSpec; -- -- this.strength = spec.getPrimeSize(); -- this.l = spec.getExponentSize(); -- this.random = random; -- } -- -- protected AlgorithmParameters engineGenerateParameters() -- { -- ElGamalParametersGenerator pGen = new ElGamalParametersGenerator(); -- -- if (random != null) -- { -- pGen.init(strength, 20, random); -- } -- else -- { -- pGen.init(strength, 20, new SecureRandom()); -- } -- -- ElGamalParameters p = pGen.generateParameters(); -- -- AlgorithmParameters params; -- -- try -- { -- params = AlgorithmParameters.getInstance("ElGamal", BouncyCastleProvider.PROVIDER_NAME); -- params.init(new DHParameterSpec(p.getP(), p.getG(), l)); -- } -- catch (Exception e) -- { -- throw new RuntimeException(e.getMessage()); -- } -- -- return params; -- } -- } -- -- public static class DES -- extends JDKAlgorithmParameterGenerator -- { -- protected void engineInit( -- AlgorithmParameterSpec genParamSpec, -- SecureRandom random) -- throws InvalidAlgorithmParameterException -- { -- throw new InvalidAlgorithmParameterException("No supported AlgorithmParameterSpec for DES parameter generation."); -- } -- -- protected AlgorithmParameters engineGenerateParameters() -- { -- byte[] iv = new byte[8]; -- -- if (random == null) -- { -- random = new SecureRandom(); -- } -- -- random.nextBytes(iv); -- -- AlgorithmParameters params; -- -- try -- { -- params = AlgorithmParameters.getInstance("DES", BouncyCastleProvider.PROVIDER_NAME); -- params.init(new IvParameterSpec(iv)); -- } -- catch (Exception e) -- { -- throw new RuntimeException(e.getMessage()); -- } -- -- return params; -- } -- } -- -- public static class RC2 -- extends JDKAlgorithmParameterGenerator -- { -- RC2ParameterSpec spec = null; -- -- protected void engineInit( -- AlgorithmParameterSpec genParamSpec, -- SecureRandom random) -- throws InvalidAlgorithmParameterException -- { -- if (genParamSpec instanceof RC2ParameterSpec) -- { -- spec = (RC2ParameterSpec)genParamSpec; -- return; -- } -- -- throw new InvalidAlgorithmParameterException("No supported AlgorithmParameterSpec for RC2 parameter generation."); -- } -- -- protected AlgorithmParameters engineGenerateParameters() -- { -- AlgorithmParameters params; -- -- if (spec == null) -- { -- byte[] iv = new byte[8]; -- -- if (random == null) -- { -- random = new SecureRandom(); -- } -- -- random.nextBytes(iv); -- -- try -- { -- params = AlgorithmParameters.getInstance("RC2", BouncyCastleProvider.PROVIDER_NAME); -- params.init(new IvParameterSpec(iv)); -- } -- catch (Exception e) -- { -- throw new RuntimeException(e.getMessage()); -- } -- } -- else -- { -- try -- { -- params = AlgorithmParameters.getInstance("RC2", BouncyCastleProvider.PROVIDER_NAME); -- params.init(spec); -- } -- catch (Exception e) -- { -- throw new RuntimeException(e.getMessage()); -- } -- } -- -- return params; -- } -- } -+ // BEGIN android-removed -+ // public static class GOST3410 -+ // extends JDKAlgorithmParameterGenerator -+ // { -+ // protected void engineInit( -+ // AlgorithmParameterSpec genParamSpec, -+ // SecureRandom random) -+ // throws InvalidAlgorithmParameterException -+ // { -+ // throw new InvalidAlgorithmParameterException("No supported AlgorithmParameterSpec for GOST3410 parameter generation."); -+ // } -+ // -+ // protected AlgorithmParameters engineGenerateParameters() -+ // { -+ // GOST3410ParametersGenerator pGen = new GOST3410ParametersGenerator(); -+ // -+ // if (random != null) -+ // { -+ // pGen.init(strength, 2, random); -+ // } -+ // else -+ // { -+ // pGen.init(strength, 2, new SecureRandom()); -+ // } -+ // -+ // GOST3410Parameters p = pGen.generateParameters(); -+ // -+ // AlgorithmParameters params; -+ // -+ // try -+ // { -+ // params = AlgorithmParameters.getInstance("GOST3410", BouncyCastleProvider.PROVIDER_NAME); -+ // params.init(new GOST3410ParameterSpec(new GOST3410PublicKeyParameterSetSpec(p.getP(), p.getQ(), p.getA()))); -+ // } -+ // catch (Exception e) -+ // { -+ // throw new RuntimeException(e.getMessage()); -+ // } -+ // -+ // return params; -+ // } -+ // } -+ // -+ // public static class ElGamal -+ // extends JDKAlgorithmParameterGenerator -+ // { -+ // private int l = 0; -+ // -+ // protected void engineInit( -+ // AlgorithmParameterSpec genParamSpec, -+ // SecureRandom random) -+ // throws InvalidAlgorithmParameterException -+ // { -+ // if (!(genParamSpec instanceof DHGenParameterSpec)) -+ // { -+ // throw new InvalidAlgorithmParameterException("DH parameter generator requires a DHGenParameterSpec for initialisation"); -+ // } -+ // DHGenParameterSpec spec = (DHGenParameterSpec)genParamSpec; -+ // -+ // this.strength = spec.getPrimeSize(); -+ // this.l = spec.getExponentSize(); -+ // this.random = random; -+ // } -+ // -+ // protected AlgorithmParameters engineGenerateParameters() -+ // { -+ // ElGamalParametersGenerator pGen = new ElGamalParametersGenerator(); -+ // -+ // if (random != null) -+ // { -+ // pGen.init(strength, 20, random); -+ // } -+ // else -+ // { -+ // pGen.init(strength, 20, new SecureRandom()); -+ // } -+ // -+ // ElGamalParameters p = pGen.generateParameters(); -+ // -+ // AlgorithmParameters params; -+ // -+ // try -+ // { -+ // params = AlgorithmParameters.getInstance("ElGamal", BouncyCastleProvider.PROVIDER_NAME); -+ // params.init(new DHParameterSpec(p.getP(), p.getG(), l)); -+ // } -+ // catch (Exception e) -+ // { -+ // throw new RuntimeException(e.getMessage()); -+ // } -+ // -+ // return params; -+ // } -+ // } -+ // -+ // public static class DES -+ // extends JDKAlgorithmParameterGenerator -+ // { -+ // protected void engineInit( -+ // AlgorithmParameterSpec genParamSpec, -+ // SecureRandom random) -+ // throws InvalidAlgorithmParameterException -+ // { -+ // throw new InvalidAlgorithmParameterException("No supported AlgorithmParameterSpec for DES parameter generation."); -+ // } -+ // -+ // protected AlgorithmParameters engineGenerateParameters() -+ // { -+ // byte[] iv = new byte[8]; -+ // -+ // if (random == null) -+ // { -+ // random = new SecureRandom(); -+ // } -+ // -+ // random.nextBytes(iv); -+ // -+ // AlgorithmParameters params; -+ // -+ // try -+ // { -+ // params = AlgorithmParameters.getInstance("DES", BouncyCastleProvider.PROVIDER_NAME); -+ // params.init(new IvParameterSpec(iv)); -+ // } -+ // catch (Exception e) -+ // { -+ // throw new RuntimeException(e.getMessage()); -+ // } -+ // -+ // return params; -+ // } -+ // } -+ // -+ // public static class RC2 -+ // extends JDKAlgorithmParameterGenerator -+ // { -+ // RC2ParameterSpec spec = null; -+ // -+ // protected void engineInit( -+ // AlgorithmParameterSpec genParamSpec, -+ // SecureRandom random) -+ // throws InvalidAlgorithmParameterException -+ // { -+ // if (genParamSpec instanceof RC2ParameterSpec) -+ // { -+ // spec = (RC2ParameterSpec)genParamSpec; -+ // return; -+ // } -+ // -+ // throw new InvalidAlgorithmParameterException("No supported AlgorithmParameterSpec for RC2 parameter generation."); -+ // } -+ // -+ // protected AlgorithmParameters engineGenerateParameters() -+ // { -+ // AlgorithmParameters params; -+ // -+ // if (spec == null) -+ // { -+ // byte[] iv = new byte[8]; -+ // -+ // if (random == null) -+ // { -+ // random = new SecureRandom(); -+ // } -+ // -+ // random.nextBytes(iv); -+ // -+ // try -+ // { -+ // params = AlgorithmParameters.getInstance("RC2", BouncyCastleProvider.PROVIDER_NAME); -+ // params.init(new IvParameterSpec(iv)); -+ // } -+ // catch (Exception e) -+ // { -+ // throw new RuntimeException(e.getMessage()); -+ // } -+ // } -+ // else -+ // { -+ // try -+ // { -+ // params = AlgorithmParameters.getInstance("RC2", BouncyCastleProvider.PROVIDER_NAME); -+ // params.init(spec); -+ // } -+ // catch (Exception e) -+ // { -+ // throw new RuntimeException(e.getMessage()); -+ // } -+ // } -+ // -+ // return params; -+ // } -+ // } -+ // END android-removed - } -diff -Naur bcprov-jdk16-146.orig/org/bouncycastle/jce/provider/JDKAlgorithmParameters.java bcprov-jdk16-146/org/bouncycastle/jce/provider/JDKAlgorithmParameters.java ---- bcprov-jdk16-146.orig/org/bouncycastle/jce/provider/JDKAlgorithmParameters.java 2011-02-23 20:08:56.000000000 +0000 -+++ bcprov-jdk16-146/org/bouncycastle/jce/provider/JDKAlgorithmParameters.java 2012-07-27 18:48:00.031478939 +0000 -@@ -10,21 +10,27 @@ - import org.bouncycastle.asn1.DERObjectIdentifier; - import org.bouncycastle.asn1.DEROctetString; +diff -Naur bcprov-jdk15on-147.orig/org/bouncycastle/jce/provider/JDKAlgorithmParameters.java bcprov-jdk15on-147/org/bouncycastle/jce/provider/JDKAlgorithmParameters.java +--- bcprov-jdk15on-147.orig/org/bouncycastle/jce/provider/JDKAlgorithmParameters.java 2012-03-22 15:11:48.000000000 +0000 ++++ bcprov-jdk15on-147/org/bouncycastle/jce/provider/JDKAlgorithmParameters.java 2012-09-11 00:12:44.000000000 +0000 +@@ -17,7 +17,9 @@ import org.bouncycastle.asn1.DERSequence; --import org.bouncycastle.asn1.cryptopro.GOST3410PublicKeyAlgParameters; --import org.bouncycastle.asn1.oiw.ElGamalParameter; -+// BEGIN android-removed -+// import org.bouncycastle.asn1.cryptopro.GOST3410PublicKeyAlgParameters; -+// import org.bouncycastle.asn1.oiw.ElGamalParameter; -+// END android-removed - import org.bouncycastle.asn1.pkcs.DHParameter; - import org.bouncycastle.asn1.pkcs.PKCS12PBEParams; - import org.bouncycastle.asn1.pkcs.PKCSObjectIdentifiers; --import org.bouncycastle.asn1.pkcs.RC2CBCParameter; -+// BEGIN android-removed -+// import org.bouncycastle.asn1.pkcs.RC2CBCParameter; -+// END android-removed - import org.bouncycastle.asn1.pkcs.RSAESOAEPparams; - import org.bouncycastle.asn1.pkcs.RSASSAPSSparams; import org.bouncycastle.asn1.pkcs.PBKDF2Params; - import org.bouncycastle.asn1.x509.AlgorithmIdentifier; - import org.bouncycastle.asn1.x509.DSAParameter; --import org.bouncycastle.jce.spec.ElGamalParameterSpec; --import org.bouncycastle.jce.spec.GOST3410ParameterSpec; --import org.bouncycastle.jce.spec.GOST3410PublicKeyParameterSetSpec; + import org.bouncycastle.asn1.pkcs.PKCS12PBEParams; -import org.bouncycastle.jce.spec.IESParameterSpec; +// BEGIN android-removed -+// import org.bouncycastle.jce.spec.ElGamalParameterSpec; -+// import org.bouncycastle.jce.spec.GOST3410ParameterSpec; -+// import org.bouncycastle.jce.spec.GOST3410PublicKeyParameterSetSpec; +// import org.bouncycastle.jce.spec.IESParameterSpec; +// END android-removed - import org.bouncycastle.util.Arrays; - import javax.crypto.spec.DHParameterSpec; -@@ -32,7 +38,9 @@ - import javax.crypto.spec.OAEPParameterSpec; - import javax.crypto.spec.PBEParameterSpec; - import javax.crypto.spec.PSource; --import javax.crypto.spec.RC2ParameterSpec; -+// BEGIN android-removed -+// import javax.crypto.spec.RC2ParameterSpec; -+// END android-removed - import java.io.IOException; - import java.security.AlgorithmParametersSpi; - import java.security.spec.AlgorithmParameterSpec; -@@ -68,13 +76,13 @@ - extends JDKAlgorithmParameters - { - private byte[] iv; -- -+ - protected byte[] engineGetEncoded() - throws IOException - { - return engineGetEncoded("ASN.1"); - } -- -+ - protected byte[] engineGetEncoded( - String format) - throws IOException -@@ -83,15 +91,15 @@ - { - return new DEROctetString(engineGetEncoded("RAW")).getEncoded(); - } -- -+ - if (format.equals("RAW")) - { - return Arrays.clone(iv); - } -- -+ - return null; - } -- -+ - protected AlgorithmParameterSpec localEngineGetParameterSpec( - Class paramSpec) - throws InvalidParameterSpecException -@@ -100,10 +108,10 @@ - { - return new IvParameterSpec(iv); - } -- -+ - throw new InvalidParameterSpecException("unknown parameter spec passed to IV parameters object."); - } -- -+ - protected void engineInit( - AlgorithmParameterSpec paramSpec) - throws InvalidParameterSpecException -@@ -112,10 +120,10 @@ - { - throw new InvalidParameterSpecException("IvParameterSpec required to initialise a IV parameters algorithm parameters object"); - } -- -+ - this.iv = ((IvParameterSpec)paramSpec).getIV(); - } -- -+ - protected void engineInit( - byte[] params) - throws IOException -@@ -127,13 +135,13 @@ - && params[0] == 0x04 && params[1] == params.length - 2) - { - ASN1OctetString oct = (ASN1OctetString)ASN1Object.fromByteArray(params); -- -+ - params = oct.getOctets(); - } -- -+ - this.iv = Arrays.clone(params); - } -- -+ - protected void engineInit( - byte[] params, - String format) -@@ -144,204 +152,206 @@ - try - { - ASN1OctetString oct = (ASN1OctetString)ASN1Object.fromByteArray(params); -- -+ - engineInit(oct.getOctets()); - } - catch (Exception e) - { - throw new IOException("Exception decoding: " + e); - } -- -+ - return; - } -- -+ - if (format.equals("RAW")) - { - engineInit(params); - return; - } -- -+ - throw new IOException("Unknown parameters format in IV parameters object"); - } -- -+ - protected String engineToString() - { - return "IV Parameters"; + public abstract class JDKAlgorithmParameters + extends AlgorithmParametersSpi +@@ -208,109 +210,111 @@ } } -- -- public static class RC2AlgorithmParameters -- extends JDKAlgorithmParameters -- { -- private static final short[] table = { -- 0xbd, 0x56, 0xea, 0xf2, 0xa2, 0xf1, 0xac, 0x2a, 0xb0, 0x93, 0xd1, 0x9c, 0x1b, 0x33, 0xfd, 0xd0, -- 0x30, 0x04, 0xb6, 0xdc, 0x7d, 0xdf, 0x32, 0x4b, 0xf7, 0xcb, 0x45, 0x9b, 0x31, 0xbb, 0x21, 0x5a, -- 0x41, 0x9f, 0xe1, 0xd9, 0x4a, 0x4d, 0x9e, 0xda, 0xa0, 0x68, 0x2c, 0xc3, 0x27, 0x5f, 0x80, 0x36, -- 0x3e, 0xee, 0xfb, 0x95, 0x1a, 0xfe, 0xce, 0xa8, 0x34, 0xa9, 0x13, 0xf0, 0xa6, 0x3f, 0xd8, 0x0c, -- 0x78, 0x24, 0xaf, 0x23, 0x52, 0xc1, 0x67, 0x17, 0xf5, 0x66, 0x90, 0xe7, 0xe8, 0x07, 0xb8, 0x60, -- 0x48, 0xe6, 0x1e, 0x53, 0xf3, 0x92, 0xa4, 0x72, 0x8c, 0x08, 0x15, 0x6e, 0x86, 0x00, 0x84, 0xfa, -- 0xf4, 0x7f, 0x8a, 0x42, 0x19, 0xf6, 0xdb, 0xcd, 0x14, 0x8d, 0x50, 0x12, 0xba, 0x3c, 0x06, 0x4e, -- 0xec, 0xb3, 0x35, 0x11, 0xa1, 0x88, 0x8e, 0x2b, 0x94, 0x99, 0xb7, 0x71, 0x74, 0xd3, 0xe4, 0xbf, -- 0x3a, 0xde, 0x96, 0x0e, 0xbc, 0x0a, 0xed, 0x77, 0xfc, 0x37, 0x6b, 0x03, 0x79, 0x89, 0x62, 0xc6, -- 0xd7, 0xc0, 0xd2, 0x7c, 0x6a, 0x8b, 0x22, 0xa3, 0x5b, 0x05, 0x5d, 0x02, 0x75, 0xd5, 0x61, 0xe3, -- 0x18, 0x8f, 0x55, 0x51, 0xad, 0x1f, 0x0b, 0x5e, 0x85, 0xe5, 0xc2, 0x57, 0x63, 0xca, 0x3d, 0x6c, -- 0xb4, 0xc5, 0xcc, 0x70, 0xb2, 0x91, 0x59, 0x0d, 0x47, 0x20, 0xc8, 0x4f, 0x58, 0xe0, 0x01, 0xe2, -- 0x16, 0x38, 0xc4, 0x6f, 0x3b, 0x0f, 0x65, 0x46, 0xbe, 0x7e, 0x2d, 0x7b, 0x82, 0xf9, 0x40, 0xb5, -- 0x1d, 0x73, 0xf8, 0xeb, 0x26, 0xc7, 0x87, 0x97, 0x25, 0x54, 0xb1, 0x28, 0xaa, 0x98, 0x9d, 0xa5, -- 0x64, 0x6d, 0x7a, 0xd4, 0x10, 0x81, 0x44, 0xef, 0x49, 0xd6, 0xae, 0x2e, 0xdd, 0x76, 0x5c, 0x2f, -- 0xa7, 0x1c, 0xc9, 0x09, 0x69, 0x9a, 0x83, 0xcf, 0x29, 0x39, 0xb9, 0xe9, 0x4c, 0xff, 0x43, 0xab -- }; -- -- private static final short[] ekb = { -- 0x5d, 0xbe, 0x9b, 0x8b, 0x11, 0x99, 0x6e, 0x4d, 0x59, 0xf3, 0x85, 0xa6, 0x3f, 0xb7, 0x83, 0xc5, -- 0xe4, 0x73, 0x6b, 0x3a, 0x68, 0x5a, 0xc0, 0x47, 0xa0, 0x64, 0x34, 0x0c, 0xf1, 0xd0, 0x52, 0xa5, -- 0xb9, 0x1e, 0x96, 0x43, 0x41, 0xd8, 0xd4, 0x2c, 0xdb, 0xf8, 0x07, 0x77, 0x2a, 0xca, 0xeb, 0xef, -- 0x10, 0x1c, 0x16, 0x0d, 0x38, 0x72, 0x2f, 0x89, 0xc1, 0xf9, 0x80, 0xc4, 0x6d, 0xae, 0x30, 0x3d, -- 0xce, 0x20, 0x63, 0xfe, 0xe6, 0x1a, 0xc7, 0xb8, 0x50, 0xe8, 0x24, 0x17, 0xfc, 0x25, 0x6f, 0xbb, -- 0x6a, 0xa3, 0x44, 0x53, 0xd9, 0xa2, 0x01, 0xab, 0xbc, 0xb6, 0x1f, 0x98, 0xee, 0x9a, 0xa7, 0x2d, -- 0x4f, 0x9e, 0x8e, 0xac, 0xe0, 0xc6, 0x49, 0x46, 0x29, 0xf4, 0x94, 0x8a, 0xaf, 0xe1, 0x5b, 0xc3, -- 0xb3, 0x7b, 0x57, 0xd1, 0x7c, 0x9c, 0xed, 0x87, 0x40, 0x8c, 0xe2, 0xcb, 0x93, 0x14, 0xc9, 0x61, -- 0x2e, 0xe5, 0xcc, 0xf6, 0x5e, 0xa8, 0x5c, 0xd6, 0x75, 0x8d, 0x62, 0x95, 0x58, 0x69, 0x76, 0xa1, -- 0x4a, 0xb5, 0x55, 0x09, 0x78, 0x33, 0x82, 0xd7, 0xdd, 0x79, 0xf5, 0x1b, 0x0b, 0xde, 0x26, 0x21, -- 0x28, 0x74, 0x04, 0x97, 0x56, 0xdf, 0x3c, 0xf0, 0x37, 0x39, 0xdc, 0xff, 0x06, 0xa4, 0xea, 0x42, -- 0x08, 0xda, 0xb4, 0x71, 0xb0, 0xcf, 0x12, 0x7a, 0x4e, 0xfa, 0x6c, 0x1d, 0x84, 0x00, 0xc8, 0x7f, -- 0x91, 0x45, 0xaa, 0x2b, 0xc2, 0xb1, 0x8f, 0xd5, 0xba, 0xf2, 0xad, 0x19, 0xb2, 0x67, 0x36, 0xf7, -- 0x0f, 0x0a, 0x92, 0x7d, 0xe3, 0x9d, 0xe9, 0x90, 0x3e, 0x23, 0x27, 0x66, 0x13, 0xec, 0x81, 0x15, -- 0xbd, 0x22, 0xbf, 0x9f, 0x7e, 0xa9, 0x51, 0x4b, 0x4c, 0xfb, 0x02, 0xd3, 0x70, 0x86, 0x31, 0xe7, -- 0x3b, 0x05, 0x03, 0x54, 0x60, 0x48, 0x65, 0x18, 0xd2, 0xcd, 0x5f, 0x32, 0x88, 0x0e, 0x35, 0xfd -- }; -- -- private byte[] iv; -- private int parameterVersion = 58; -- -- protected byte[] engineGetEncoded() -- { -- return Arrays.clone(iv); -- } -- -- protected byte[] engineGetEncoded( -- String format) -- throws IOException -- { -- if (isASN1FormatString(format)) -- { -- if (parameterVersion == -1) -- { -- return new RC2CBCParameter(engineGetEncoded()).getEncoded(); -- } -- else -- { -- return new RC2CBCParameter(parameterVersion, engineGetEncoded()).getEncoded(); -- } -- } -- -- if (format.equals("RAW")) -- { -- return engineGetEncoded(); -- } -- -- return null; -- } -- -- protected AlgorithmParameterSpec localEngineGetParameterSpec( -- Class paramSpec) -- throws InvalidParameterSpecException -- { -- if (paramSpec == RC2ParameterSpec.class) -- { -- if (parameterVersion != -1) -- { -- if (parameterVersion < 256) -- { -- return new RC2ParameterSpec(ekb[parameterVersion], iv); -- } -- else -- { -- return new RC2ParameterSpec(parameterVersion, iv); -- } -- } -- } -- -- if (paramSpec == IvParameterSpec.class) -- { -- return new IvParameterSpec(iv); -- } -- -- throw new InvalidParameterSpecException("unknown parameter spec passed to RC2 parameters object."); -- } -- -- protected void engineInit( -- AlgorithmParameterSpec paramSpec) -- throws InvalidParameterSpecException -- { -- if (paramSpec instanceof IvParameterSpec) -- { -- this.iv = ((IvParameterSpec)paramSpec).getIV(); -- } -- else if (paramSpec instanceof RC2ParameterSpec) -- { -- int effKeyBits = ((RC2ParameterSpec)paramSpec).getEffectiveKeyBits(); -- if (effKeyBits != -1) -- { -- if (effKeyBits < 256) -- { -- parameterVersion = table[effKeyBits]; -- } -- else -- { -- parameterVersion = effKeyBits; -- } -- } -- -- this.iv = ((RC2ParameterSpec)paramSpec).getIV(); -- } -- else -- { -- throw new InvalidParameterSpecException("IvParameterSpec or RC2ParameterSpec required to initialise a RC2 parameters algorithm parameters object"); -- } -- } -- -- protected void engineInit( -- byte[] params) -- throws IOException -- { -- this.iv = Arrays.clone(params); -- } -- -- protected void engineInit( -- byte[] params, -- String format) -- throws IOException -- { -- if (isASN1FormatString(format)) -- { -- RC2CBCParameter p = RC2CBCParameter.getInstance(ASN1Object.fromByteArray(params)); -- -- if (p.getRC2ParameterVersion() != null) -- { -- parameterVersion = p.getRC2ParameterVersion().intValue(); -- } -- -- iv = p.getIV(); -- -- return; -- } -- -- if (format.equals("RAW")) -- { -- engineInit(params); -- return; -- } -- -- throw new IOException("Unknown parameters format in IV parameters object"); -- } -- -- protected String engineToString() -- { -- return "RC2 Parameters"; -- } -- } -- -+ -+ // BEGIN android-removed -+ // public static class RC2AlgorithmParameters -+ // extends JDKAlgorithmParameters -+ // { -+ // private static final short[] table = { -+ // 0xbd, 0x56, 0xea, 0xf2, 0xa2, 0xf1, 0xac, 0x2a, 0xb0, 0x93, 0xd1, 0x9c, 0x1b, 0x33, 0xfd, 0xd0, -+ // 0x30, 0x04, 0xb6, 0xdc, 0x7d, 0xdf, 0x32, 0x4b, 0xf7, 0xcb, 0x45, 0x9b, 0x31, 0xbb, 0x21, 0x5a, -+ // 0x41, 0x9f, 0xe1, 0xd9, 0x4a, 0x4d, 0x9e, 0xda, 0xa0, 0x68, 0x2c, 0xc3, 0x27, 0x5f, 0x80, 0x36, -+ // 0x3e, 0xee, 0xfb, 0x95, 0x1a, 0xfe, 0xce, 0xa8, 0x34, 0xa9, 0x13, 0xf0, 0xa6, 0x3f, 0xd8, 0x0c, -+ // 0x78, 0x24, 0xaf, 0x23, 0x52, 0xc1, 0x67, 0x17, 0xf5, 0x66, 0x90, 0xe7, 0xe8, 0x07, 0xb8, 0x60, -+ // 0x48, 0xe6, 0x1e, 0x53, 0xf3, 0x92, 0xa4, 0x72, 0x8c, 0x08, 0x15, 0x6e, 0x86, 0x00, 0x84, 0xfa, -+ // 0xf4, 0x7f, 0x8a, 0x42, 0x19, 0xf6, 0xdb, 0xcd, 0x14, 0x8d, 0x50, 0x12, 0xba, 0x3c, 0x06, 0x4e, -+ // 0xec, 0xb3, 0x35, 0x11, 0xa1, 0x88, 0x8e, 0x2b, 0x94, 0x99, 0xb7, 0x71, 0x74, 0xd3, 0xe4, 0xbf, -+ // 0x3a, 0xde, 0x96, 0x0e, 0xbc, 0x0a, 0xed, 0x77, 0xfc, 0x37, 0x6b, 0x03, 0x79, 0x89, 0x62, 0xc6, -+ // 0xd7, 0xc0, 0xd2, 0x7c, 0x6a, 0x8b, 0x22, 0xa3, 0x5b, 0x05, 0x5d, 0x02, 0x75, 0xd5, 0x61, 0xe3, -+ // 0x18, 0x8f, 0x55, 0x51, 0xad, 0x1f, 0x0b, 0x5e, 0x85, 0xe5, 0xc2, 0x57, 0x63, 0xca, 0x3d, 0x6c, -+ // 0xb4, 0xc5, 0xcc, 0x70, 0xb2, 0x91, 0x59, 0x0d, 0x47, 0x20, 0xc8, 0x4f, 0x58, 0xe0, 0x01, 0xe2, -+ // 0x16, 0x38, 0xc4, 0x6f, 0x3b, 0x0f, 0x65, 0x46, 0xbe, 0x7e, 0x2d, 0x7b, 0x82, 0xf9, 0x40, 0xb5, -+ // 0x1d, 0x73, 0xf8, 0xeb, 0x26, 0xc7, 0x87, 0x97, 0x25, 0x54, 0xb1, 0x28, 0xaa, 0x98, 0x9d, 0xa5, -+ // 0x64, 0x6d, 0x7a, 0xd4, 0x10, 0x81, 0x44, 0xef, 0x49, 0xd6, 0xae, 0x2e, 0xdd, 0x76, 0x5c, 0x2f, -+ // 0xa7, 0x1c, 0xc9, 0x09, 0x69, 0x9a, 0x83, 0xcf, 0x29, 0x39, 0xb9, 0xe9, 0x4c, 0xff, 0x43, 0xab -+ // }; -+ // -+ // private static final short[] ekb = { -+ // 0x5d, 0xbe, 0x9b, 0x8b, 0x11, 0x99, 0x6e, 0x4d, 0x59, 0xf3, 0x85, 0xa6, 0x3f, 0xb7, 0x83, 0xc5, -+ // 0xe4, 0x73, 0x6b, 0x3a, 0x68, 0x5a, 0xc0, 0x47, 0xa0, 0x64, 0x34, 0x0c, 0xf1, 0xd0, 0x52, 0xa5, -+ // 0xb9, 0x1e, 0x96, 0x43, 0x41, 0xd8, 0xd4, 0x2c, 0xdb, 0xf8, 0x07, 0x77, 0x2a, 0xca, 0xeb, 0xef, -+ // 0x10, 0x1c, 0x16, 0x0d, 0x38, 0x72, 0x2f, 0x89, 0xc1, 0xf9, 0x80, 0xc4, 0x6d, 0xae, 0x30, 0x3d, -+ // 0xce, 0x20, 0x63, 0xfe, 0xe6, 0x1a, 0xc7, 0xb8, 0x50, 0xe8, 0x24, 0x17, 0xfc, 0x25, 0x6f, 0xbb, -+ // 0x6a, 0xa3, 0x44, 0x53, 0xd9, 0xa2, 0x01, 0xab, 0xbc, 0xb6, 0x1f, 0x98, 0xee, 0x9a, 0xa7, 0x2d, -+ // 0x4f, 0x9e, 0x8e, 0xac, 0xe0, 0xc6, 0x49, 0x46, 0x29, 0xf4, 0x94, 0x8a, 0xaf, 0xe1, 0x5b, 0xc3, -+ // 0xb3, 0x7b, 0x57, 0xd1, 0x7c, 0x9c, 0xed, 0x87, 0x40, 0x8c, 0xe2, 0xcb, 0x93, 0x14, 0xc9, 0x61, -+ // 0x2e, 0xe5, 0xcc, 0xf6, 0x5e, 0xa8, 0x5c, 0xd6, 0x75, 0x8d, 0x62, 0x95, 0x58, 0x69, 0x76, 0xa1, -+ // 0x4a, 0xb5, 0x55, 0x09, 0x78, 0x33, 0x82, 0xd7, 0xdd, 0x79, 0xf5, 0x1b, 0x0b, 0xde, 0x26, 0x21, -+ // 0x28, 0x74, 0x04, 0x97, 0x56, 0xdf, 0x3c, 0xf0, 0x37, 0x39, 0xdc, 0xff, 0x06, 0xa4, 0xea, 0x42, -+ // 0x08, 0xda, 0xb4, 0x71, 0xb0, 0xcf, 0x12, 0x7a, 0x4e, 0xfa, 0x6c, 0x1d, 0x84, 0x00, 0xc8, 0x7f, -+ // 0x91, 0x45, 0xaa, 0x2b, 0xc2, 0xb1, 0x8f, 0xd5, 0xba, 0xf2, 0xad, 0x19, 0xb2, 0x67, 0x36, 0xf7, -+ // 0x0f, 0x0a, 0x92, 0x7d, 0xe3, 0x9d, 0xe9, 0x90, 0x3e, 0x23, 0x27, 0x66, 0x13, 0xec, 0x81, 0x15, -+ // 0xbd, 0x22, 0xbf, 0x9f, 0x7e, 0xa9, 0x51, 0x4b, 0x4c, 0xfb, 0x02, 0xd3, 0x70, 0x86, 0x31, 0xe7, -+ // 0x3b, 0x05, 0x03, 0x54, 0x60, 0x48, 0x65, 0x18, 0xd2, 0xcd, 0x5f, 0x32, 0x88, 0x0e, 0x35, 0xfd -+ // }; -+ // -+ // private byte[] iv; -+ // private int parameterVersion = 58; -+ // -+ // protected byte[] engineGetEncoded() -+ // { -+ // return Arrays.clone(iv); -+ // } -+ // -+ // protected byte[] engineGetEncoded( -+ // String format) -+ // throws IOException -+ // { -+ // if (isASN1FormatString(format)) -+ // { -+ // if (parameterVersion == -1) -+ // { -+ // return new RC2CBCParameter(engineGetEncoded()).getEncoded(); -+ // } -+ // else -+ // { -+ // return new RC2CBCParameter(parameterVersion, engineGetEncoded()).getEncoded(); -+ // } -+ // } -+ // -+ // if (format.equals("RAW")) -+ // { -+ // return engineGetEncoded(); -+ // } -+ // -+ // return null; -+ // } -+ // -+ // protected AlgorithmParameterSpec localEngineGetParameterSpec( -+ // Class paramSpec) -+ // throws InvalidParameterSpecException -+ // { -+ // if (paramSpec == RC2ParameterSpec.class) -+ // { -+ // if (parameterVersion != -1) -+ // { -+ // if (parameterVersion < 256) -+ // { -+ // return new RC2ParameterSpec(ekb[parameterVersion], iv); -+ // } -+ // else -+ // { -+ // return new RC2ParameterSpec(parameterVersion, iv); -+ // } -+ // } -+ // } -+ // -+ // if (paramSpec == IvParameterSpec.class) -+ // { -+ // return new IvParameterSpec(iv); -+ // } -+ // -+ // throw new InvalidParameterSpecException("unknown parameter spec passed to RC2 parameters object."); -+ // } -+ // -+ // protected void engineInit( -+ // AlgorithmParameterSpec paramSpec) -+ // throws InvalidParameterSpecException -+ // { -+ // if (paramSpec instanceof IvParameterSpec) -+ // { -+ // this.iv = ((IvParameterSpec)paramSpec).getIV(); -+ // } -+ // else if (paramSpec instanceof RC2ParameterSpec) -+ // { -+ // int effKeyBits = ((RC2ParameterSpec)paramSpec).getEffectiveKeyBits(); -+ // if (effKeyBits != -1) -+ // { -+ // if (effKeyBits < 256) -+ // { -+ // parameterVersion = table[effKeyBits]; -+ // } -+ // else -+ // { -+ // parameterVersion = effKeyBits; -+ // } -+ // } -+ // -+ // this.iv = ((RC2ParameterSpec)paramSpec).getIV(); -+ // } -+ // else -+ // { -+ // throw new InvalidParameterSpecException("IvParameterSpec or RC2ParameterSpec required to initialise a RC2 parameters algorithm parameters object"); -+ // } -+ // } -+ // -+ // protected void engineInit( -+ // byte[] params) -+ // throws IOException -+ // { -+ // this.iv = Arrays.clone(params); -+ // } -+ // -+ // protected void engineInit( -+ // byte[] params, -+ // String format) -+ // throws IOException -+ // { -+ // if (isASN1FormatString(format)) -+ // { -+ // RC2CBCParameter p = RC2CBCParameter.getInstance(ASN1Object.fromByteArray(params)); -+ // -+ // if (p.getRC2ParameterVersion() != null) -+ // { -+ // parameterVersion = p.getRC2ParameterVersion().intValue(); -+ // } -+ // -+ // iv = p.getIV(); -+ // -+ // return; -+ // } -+ // -+ // if (format.equals("RAW")) -+ // { -+ // engineInit(params); -+ // return; -+ // } -+ // -+ // throw new IOException("Unknown parameters format in IV parameters object"); -+ // } -+ // -+ // protected String engineToString() -+ // { -+ // return "RC2 Parameters"; -+ // } -+ // } -+ // END android-removed -+ - public static class PBKDF2 - extends JDKAlgorithmParameters - { -@@ -429,7 +439,7 @@ - extends JDKAlgorithmParameters - { - PKCS12PBEParams params; -- -+ - protected byte[] engineGetEncoded() - { - try -@@ -441,7 +451,7 @@ - throw new RuntimeException("Oooops! " + e.toString()); - } - } -- -+ - protected byte[] engineGetEncoded( - String format) - { -@@ -449,10 +459,10 @@ - { - return engineGetEncoded(); - } -- -+ - return null; - } -- -+ - protected AlgorithmParameterSpec localEngineGetParameterSpec( - Class paramSpec) - throws InvalidParameterSpecException -@@ -462,10 +472,10 @@ - return new PBEParameterSpec(params.getIV(), - params.getIterations().intValue()); - } -- -+ - throw new InvalidParameterSpecException("unknown parameter spec passed to PKCS12 PBE parameters object."); - } -- -+ - protected void engineInit( - AlgorithmParameterSpec paramSpec) - throws InvalidParameterSpecException -@@ -474,20 +484,20 @@ - { - throw new InvalidParameterSpecException("PBEParameterSpec required to initialise a PKCS12 PBE parameters algorithm parameters object"); - } -- -+ - PBEParameterSpec pbeSpec = (PBEParameterSpec)paramSpec; -- -+ - this.params = new PKCS12PBEParams(pbeSpec.getSalt(), - pbeSpec.getIterationCount()); - } -- -+ - protected void engineInit( - byte[] params) - throws IOException - { - this.params = PKCS12PBEParams.getInstance(ASN1Object.fromByteArray(params)); - } -- -+ - protected void engineInit( - byte[] params, - String format) -@@ -498,10 +508,10 @@ - engineInit(params); - return; - } -- -+ - throw new IOException("Unknown parameters format in PKCS12 PBE parameters object"); - } -- -+ - protected String engineToString() - { - return "PKCS12 PBE Parameters"; -@@ -725,334 +735,336 @@ - } - } - -- public static class GOST3410 -- extends JDKAlgorithmParameters -- { -- GOST3410ParameterSpec currentSpec; -- -- /** -- * Return the X.509 ASN.1 structure GOST3410Parameter. -- * <p> -- * <pre> -- * GOST3410Parameter ::= SEQUENCE { -- * prime INTEGER, -- p -- * subprime INTEGER, -- q -- * base INTEGER, -- a} -- * </pre> -- */ -- protected byte[] engineGetEncoded() -- { -- GOST3410PublicKeyAlgParameters gost3410P = new GOST3410PublicKeyAlgParameters(new DERObjectIdentifier(currentSpec.getPublicKeyParamSetOID()), new DERObjectIdentifier(currentSpec.getDigestParamSetOID()), new DERObjectIdentifier(currentSpec.getEncryptionParamSetOID())); -- -- try -- { -- return gost3410P.getEncoded(ASN1Encodable.DER); -- } -- catch (IOException e) -- { -- throw new RuntimeException("Error encoding GOST3410Parameters"); -- } -- } -- -- protected byte[] engineGetEncoded( -- String format) -- { -- if (isASN1FormatString(format) || format.equalsIgnoreCase("X.509")) -- { -- return engineGetEncoded(); -- } -- -- return null; -- } -- -- protected AlgorithmParameterSpec localEngineGetParameterSpec( -- Class paramSpec) -- throws InvalidParameterSpecException -- { -- if (paramSpec == GOST3410PublicKeyParameterSetSpec.class) -- { -- return currentSpec; -- } -- -- throw new InvalidParameterSpecException("unknown parameter spec passed to GOST3410 parameters object."); -- } -- -- protected void engineInit( -- AlgorithmParameterSpec paramSpec) -- throws InvalidParameterSpecException -- { -- if (!(paramSpec instanceof GOST3410ParameterSpec)) -- { -- throw new InvalidParameterSpecException("GOST3410ParameterSpec required to initialise a GOST3410 algorithm parameters object"); -- } -- -- this.currentSpec = (GOST3410ParameterSpec)paramSpec; -- } -- -- protected void engineInit( -- byte[] params) -- throws IOException -- { -- try -- { -- ASN1Sequence seq = (ASN1Sequence) ASN1Object.fromByteArray(params); -- -- this.currentSpec = GOST3410ParameterSpec.fromPublicKeyAlg( -- new GOST3410PublicKeyAlgParameters(seq)); -- } -- catch (ClassCastException e) -- { -- throw new IOException("Not a valid GOST3410 Parameter encoding."); -- } -- catch (ArrayIndexOutOfBoundsException e) -- { -- throw new IOException("Not a valid GOST3410 Parameter encoding."); -- } -- } -- -- protected void engineInit( -- byte[] params, -- String format) -- throws IOException -- { -- if (isASN1FormatString(format) || format.equalsIgnoreCase("X.509")) -- { -- engineInit(params); -- } -- else -- { -- throw new IOException("Unknown parameter format " + format); -- } -- } -- -- protected String engineToString() -- { -- return "GOST3410 Parameters"; -- } -- } -- -- public static class ElGamal -- extends JDKAlgorithmParameters -- { -- ElGamalParameterSpec currentSpec; -- -- /** -- * Return the X.509 ASN.1 structure ElGamalParameter. -- * <p> -- * <pre> -- * ElGamalParameter ::= SEQUENCE { -- * prime INTEGER, -- p -- * base INTEGER, -- g} -- * </pre> -- */ -- protected byte[] engineGetEncoded() -- { -- ElGamalParameter elP = new ElGamalParameter(currentSpec.getP(), currentSpec.getG()); -- -- try -- { -- return elP.getEncoded(ASN1Encodable.DER); -- } -- catch (IOException e) -- { -- throw new RuntimeException("Error encoding ElGamalParameters"); -- } -- } -- -- protected byte[] engineGetEncoded( -- String format) -- { -- if (isASN1FormatString(format) || format.equalsIgnoreCase("X.509")) -- { -- return engineGetEncoded(); -- } -- -- return null; -- } -- -- protected AlgorithmParameterSpec localEngineGetParameterSpec( -- Class paramSpec) -- throws InvalidParameterSpecException -- { -- if (paramSpec == ElGamalParameterSpec.class) -- { -- return currentSpec; -- } -- else if (paramSpec == DHParameterSpec.class) -- { -- return new DHParameterSpec(currentSpec.getP(), currentSpec.getG()); -- } -- -- throw new InvalidParameterSpecException("unknown parameter spec passed to ElGamal parameters object."); -- } -- -- protected void engineInit( -- AlgorithmParameterSpec paramSpec) -- throws InvalidParameterSpecException -- { -- if (!(paramSpec instanceof ElGamalParameterSpec) && !(paramSpec instanceof DHParameterSpec)) -- { -- throw new InvalidParameterSpecException("DHParameterSpec required to initialise a ElGamal algorithm parameters object"); -- } -- -- if (paramSpec instanceof ElGamalParameterSpec) -- { -- this.currentSpec = (ElGamalParameterSpec)paramSpec; -- } -- else -- { -- DHParameterSpec s = (DHParameterSpec)paramSpec; -- -- this.currentSpec = new ElGamalParameterSpec(s.getP(), s.getG()); -- } -- } -- -- protected void engineInit( -- byte[] params) -- throws IOException -- { -- try -- { -- ElGamalParameter elP = new ElGamalParameter((ASN1Sequence)ASN1Object.fromByteArray(params)); -- -- currentSpec = new ElGamalParameterSpec(elP.getP(), elP.getG()); -- } -- catch (ClassCastException e) -- { -- throw new IOException("Not a valid ElGamal Parameter encoding."); -- } -- catch (ArrayIndexOutOfBoundsException e) -- { -- throw new IOException("Not a valid ElGamal Parameter encoding."); -- } -- } -- -- protected void engineInit( -- byte[] params, -- String format) -- throws IOException -- { -- if (isASN1FormatString(format) || format.equalsIgnoreCase("X.509")) -- { -- engineInit(params); -- } -- else -- { -- throw new IOException("Unknown parameter format " + format); -- } -- } -- -- protected String engineToString() -- { -- return "ElGamal Parameters"; -- } -- } -- + - public static class IES - extends JDKAlgorithmParameters - { @@ -6349,7 +8705,7 @@ diff -Naur bcprov-jdk16-146.orig/org/bouncycastle/jce/provider/JDKAlgorithmParam - v.add(new DEROctetString(currentSpec.getEncodingV())); - v.add(new DERInteger(currentSpec.getMacKeySize())); - -- return new DERSequence(v).getEncoded(ASN1Encodable.DER); +- return new DERSequence(v).getEncoded(ASN1Encoding.DER); - } - catch (IOException e) - { @@ -6398,7 +8754,7 @@ diff -Naur bcprov-jdk16-146.orig/org/bouncycastle/jce/provider/JDKAlgorithmParam - { - try - { -- ASN1Sequence s = (ASN1Sequence)ASN1Object.fromByteArray(params); +- ASN1Sequence s = (ASN1Sequence)ASN1Primitive.fromByteArray(params); - - this.currentSpec = new IESParameterSpec( - ((ASN1OctetString)s.getObjectAt(0)).getOctets(), @@ -6436,229 +8792,6 @@ diff -Naur bcprov-jdk16-146.orig/org/bouncycastle/jce/provider/JDKAlgorithmParam - } - } + // BEGIN android-removed -+ // public static class GOST3410 -+ // extends JDKAlgorithmParameters -+ // { -+ // GOST3410ParameterSpec currentSpec; -+ // -+ // /** -+ // * Return the X.509 ASN.1 structure GOST3410Parameter. -+ // * <p> -+ // * <pre> -+ // * GOST3410Parameter ::= SEQUENCE { -+ // * prime INTEGER, -- p -+ // * subprime INTEGER, -- q -+ // * base INTEGER, -- a} -+ // * </pre> -+ // */ -+ // protected byte[] engineGetEncoded() -+ // { -+ // GOST3410PublicKeyAlgParameters gost3410P = new GOST3410PublicKeyAlgParameters(new DERObjectIdentifier(currentSpec.getPublicKeyParamSetOID()), new DERObjectIdentifier(currentSpec.getDigestParamSetOID()), new DERObjectIdentifier(currentSpec.getEncryptionParamSetOID())); -+ // -+ // try -+ // { -+ // return gost3410P.getEncoded(ASN1Encodable.DER); -+ // } -+ // catch (IOException e) -+ // { -+ // throw new RuntimeException("Error encoding GOST3410Parameters"); -+ // } -+ // } -+ // -+ // protected byte[] engineGetEncoded( -+ // String format) -+ // { -+ // if (isASN1FormatString(format) || format.equalsIgnoreCase("X.509")) -+ // { -+ // return engineGetEncoded(); -+ // } -+ // -+ // return null; -+ // } -+ // -+ // protected AlgorithmParameterSpec localEngineGetParameterSpec( -+ // Class paramSpec) -+ // throws InvalidParameterSpecException -+ // { -+ // if (paramSpec == GOST3410PublicKeyParameterSetSpec.class) -+ // { -+ // return currentSpec; -+ // } -+ // -+ // throw new InvalidParameterSpecException("unknown parameter spec passed to GOST3410 parameters object."); -+ // } -+ // -+ // protected void engineInit( -+ // AlgorithmParameterSpec paramSpec) -+ // throws InvalidParameterSpecException -+ // { -+ // if (!(paramSpec instanceof GOST3410ParameterSpec)) -+ // { -+ // throw new InvalidParameterSpecException("GOST3410ParameterSpec required to initialise a GOST3410 algorithm parameters object"); -+ // } -+ // -+ // this.currentSpec = (GOST3410ParameterSpec)paramSpec; -+ // } -+ // -+ // protected void engineInit( -+ // byte[] params) -+ // throws IOException -+ // { -+ // try -+ // { -+ // ASN1Sequence seq = (ASN1Sequence) ASN1Object.fromByteArray(params); -+ // -+ // this.currentSpec = GOST3410ParameterSpec.fromPublicKeyAlg( -+ // new GOST3410PublicKeyAlgParameters(seq)); -+ // } -+ // catch (ClassCastException e) -+ // { -+ // throw new IOException("Not a valid GOST3410 Parameter encoding."); -+ // } -+ // catch (ArrayIndexOutOfBoundsException e) -+ // { -+ // throw new IOException("Not a valid GOST3410 Parameter encoding."); -+ // } -+ // } -+ // -+ // protected void engineInit( -+ // byte[] params, -+ // String format) -+ // throws IOException -+ // { -+ // if (isASN1FormatString(format) || format.equalsIgnoreCase("X.509")) -+ // { -+ // engineInit(params); -+ // } -+ // else -+ // { -+ // throw new IOException("Unknown parameter format " + format); -+ // } -+ // } -+ // -+ // protected String engineToString() -+ // { -+ // return "GOST3410 Parameters"; -+ // } -+ // } -+ -+ // public static class ElGamal -+ // extends JDKAlgorithmParameters -+ // { -+ // ElGamalParameterSpec currentSpec; -+ // -+ // /** -+ // * Return the X.509 ASN.1 structure ElGamalParameter. -+ // * <p> -+ // * <pre> -+ // * ElGamalParameter ::= SEQUENCE { -+ // * prime INTEGER, -- p -+ // * base INTEGER, -- g} -+ // * </pre> -+ // */ -+ // protected byte[] engineGetEncoded() -+ // { -+ // ElGamalParameter elP = new ElGamalParameter(currentSpec.getP(), currentSpec.getG()); -+ // -+ // try -+ // { -+ // return elP.getEncoded(ASN1Encodable.DER); -+ // } -+ // catch (IOException e) -+ // { -+ // throw new RuntimeException("Error encoding ElGamalParameters"); -+ // } -+ // } -+ // -+ // protected byte[] engineGetEncoded( -+ // String format) -+ // { -+ // if (isASN1FormatString(format) || format.equalsIgnoreCase("X.509")) -+ // { -+ // return engineGetEncoded(); -+ // } -+ // -+ // return null; -+ // } -+ // -+ // protected AlgorithmParameterSpec localEngineGetParameterSpec( -+ // Class paramSpec) -+ // throws InvalidParameterSpecException -+ // { -+ // if (paramSpec == ElGamalParameterSpec.class) -+ // { -+ // return currentSpec; -+ // } -+ // else if (paramSpec == DHParameterSpec.class) -+ // { -+ // return new DHParameterSpec(currentSpec.getP(), currentSpec.getG()); -+ // } -+ // -+ // throw new InvalidParameterSpecException("unknown parameter spec passed to ElGamal parameters object."); -+ // } -+ // -+ // protected void engineInit( -+ // AlgorithmParameterSpec paramSpec) -+ // throws InvalidParameterSpecException -+ // { -+ // if (!(paramSpec instanceof ElGamalParameterSpec) && !(paramSpec instanceof DHParameterSpec)) -+ // { -+ // throw new InvalidParameterSpecException("DHParameterSpec required to initialise a ElGamal algorithm parameters object"); -+ // } -+ // -+ // if (paramSpec instanceof ElGamalParameterSpec) -+ // { -+ // this.currentSpec = (ElGamalParameterSpec)paramSpec; -+ // } -+ // else -+ // { -+ // DHParameterSpec s = (DHParameterSpec)paramSpec; -+ // -+ // this.currentSpec = new ElGamalParameterSpec(s.getP(), s.getG()); -+ // } -+ // } -+ // -+ // protected void engineInit( -+ // byte[] params) -+ // throws IOException -+ // { -+ // try -+ // { -+ // ElGamalParameter elP = new ElGamalParameter((ASN1Sequence)ASN1Object.fromByteArray(params)); -+ // -+ // currentSpec = new ElGamalParameterSpec(elP.getP(), elP.getG()); -+ // } -+ // catch (ClassCastException e) -+ // { -+ // throw new IOException("Not a valid ElGamal Parameter encoding."); -+ // } -+ // catch (ArrayIndexOutOfBoundsException e) -+ // { -+ // throw new IOException("Not a valid ElGamal Parameter encoding."); -+ // } -+ // } -+ // -+ // protected void engineInit( -+ // byte[] params, -+ // String format) -+ // throws IOException -+ // { -+ // if (isASN1FormatString(format) || format.equalsIgnoreCase("X.509")) -+ // { -+ // engineInit(params); -+ // } -+ // else -+ // { -+ // throw new IOException("Unknown parameter format " + format); -+ // } -+ // } -+ // -+ // protected String engineToString() -+ // { -+ // return "ElGamal Parameters"; -+ // } -+ // } -+ // + // public static class IES + // extends JDKAlgorithmParameters + // { @@ -6678,7 +8811,7 @@ diff -Naur bcprov-jdk16-146.orig/org/bouncycastle/jce/provider/JDKAlgorithmParam + // v.add(new DEROctetString(currentSpec.getEncodingV())); + // v.add(new DERInteger(currentSpec.getMacKeySize())); + // -+ // return new DERSequence(v).getEncoded(ASN1Encodable.DER); ++ // return new DERSequence(v).getEncoded(ASN1Encoding.DER); + // } + // catch (IOException e) + // { @@ -6727,7 +8860,7 @@ diff -Naur bcprov-jdk16-146.orig/org/bouncycastle/jce/provider/JDKAlgorithmParam + // { + // try + // { -+ // ASN1Sequence s = (ASN1Sequence)ASN1Object.fromByteArray(params); ++ // ASN1Sequence s = (ASN1Sequence)ASN1Primitive.fromByteArray(params); + // + // this.currentSpec = new IESParameterSpec( + // ((ASN1OctetString)s.getObjectAt(0)).getOctets(), @@ -6765,1310 +8898,10 @@ diff -Naur bcprov-jdk16-146.orig/org/bouncycastle/jce/provider/JDKAlgorithmParam + // } + // } + // END android-removed - - public static class OAEP - extends JDKAlgorithmParameters -@@ -1066,11 +1078,15 @@ - { - AlgorithmIdentifier hashAlgorithm = new AlgorithmIdentifier( - JCEDigestUtil.getOID(currentSpec.getDigestAlgorithm()), -- new DERNull()); -+ // BEGIN android-changed -+ DERNull.INSTANCE); -+ // END android-changed - MGF1ParameterSpec mgfSpec = (MGF1ParameterSpec)currentSpec.getMGFParameters(); - AlgorithmIdentifier maskGenAlgorithm = new AlgorithmIdentifier( - PKCSObjectIdentifiers.id_mgf1, -- new AlgorithmIdentifier(JCEDigestUtil.getOID(mgfSpec.getDigestAlgorithm()), new DERNull())); -+ // BEGIN android-changed -+ new AlgorithmIdentifier(JCEDigestUtil.getOID(mgfSpec.getDigestAlgorithm()), DERNull.INSTANCE)); -+ // END android-changed - PSource.PSpecified pSource = (PSource.PSpecified)currentSpec.getPSource(); - AlgorithmIdentifier pSourceAlgorithm = new AlgorithmIdentifier( - PKCSObjectIdentifiers.id_pSpecified, new DEROctetString(pSource.getValue())); -@@ -1167,110 +1183,116 @@ - } - } - -- public static class PSS -- extends JDKAlgorithmParameters -- { -- PSSParameterSpec currentSpec; -- -- /** -- * Return the PKCS#1 ASN.1 structure RSASSA-PSS-params. -- */ -- protected byte[] engineGetEncoded() -- throws IOException -- { -- PSSParameterSpec pssSpec = currentSpec; -- AlgorithmIdentifier hashAlgorithm = new AlgorithmIdentifier( -- JCEDigestUtil.getOID(pssSpec.getDigestAlgorithm()), -- new DERNull()); -- MGF1ParameterSpec mgfSpec = (MGF1ParameterSpec)pssSpec.getMGFParameters(); -- AlgorithmIdentifier maskGenAlgorithm = new AlgorithmIdentifier( -- PKCSObjectIdentifiers.id_mgf1, -- new AlgorithmIdentifier(JCEDigestUtil.getOID(mgfSpec.getDigestAlgorithm()), new DERNull())); -- RSASSAPSSparams pssP = new RSASSAPSSparams(hashAlgorithm, maskGenAlgorithm, new DERInteger(pssSpec.getSaltLength()), new DERInteger(pssSpec.getTrailerField())); -- -- return pssP.getEncoded("DER"); -- } -- -- protected byte[] engineGetEncoded( -- String format) -- throws IOException -- { -- if (format.equalsIgnoreCase("X.509") -- || format.equalsIgnoreCase("ASN.1")) -- { -- return engineGetEncoded(); -- } -- -- return null; -- } -- -- protected AlgorithmParameterSpec localEngineGetParameterSpec( -- Class paramSpec) -- throws InvalidParameterSpecException -- { -- if (paramSpec == PSSParameterSpec.class && currentSpec != null) -- { -- return currentSpec; -- } -- -- throw new InvalidParameterSpecException("unknown parameter spec passed to PSS parameters object."); -- } -- -- protected void engineInit( -- AlgorithmParameterSpec paramSpec) -- throws InvalidParameterSpecException -- { -- if (!(paramSpec instanceof PSSParameterSpec)) -- { -- throw new InvalidParameterSpecException("PSSParameterSpec required to initialise an PSS algorithm parameters object"); -- } -- -- this.currentSpec = (PSSParameterSpec)paramSpec; -- } -- -- protected void engineInit( -- byte[] params) -- throws IOException -- { -- try -- { -- RSASSAPSSparams pssP = new RSASSAPSSparams((ASN1Sequence)ASN1Object.fromByteArray(params)); -- -- currentSpec = new PSSParameterSpec( -- pssP.getHashAlgorithm().getObjectId().getId(), -- pssP.getMaskGenAlgorithm().getObjectId().getId(), -- new MGF1ParameterSpec(AlgorithmIdentifier.getInstance(pssP.getMaskGenAlgorithm().getParameters()).getObjectId().getId()), -- pssP.getSaltLength().getValue().intValue(), -- pssP.getTrailerField().getValue().intValue()); -- } -- catch (ClassCastException e) -- { -- throw new IOException("Not a valid PSS Parameter encoding."); -- } -- catch (ArrayIndexOutOfBoundsException e) -- { -- throw new IOException("Not a valid PSS Parameter encoding."); -- } -- } -- -- protected void engineInit( -- byte[] params, -- String format) -- throws IOException -- { -- if (isASN1FormatString(format) || format.equalsIgnoreCase("X.509")) -- { -- engineInit(params); -- } -- else -- { -- throw new IOException("Unknown parameter format " + format); -- } -- } -- -- protected String engineToString() -- { -- return "PSS Parameters"; -- } -- } -+ // BEGIN android-removed -+ // public static class PSS -+ // extends JDKAlgorithmParameters -+ // { -+ // PSSParameterSpec currentSpec; -+ // -+ // /** -+ // * Return the PKCS#1 ASN.1 structure RSASSA-PSS-params. -+ // */ -+ // protected byte[] engineGetEncoded() -+ // throws IOException -+ // { -+ // PSSParameterSpec pssSpec = currentSpec; -+ // AlgorithmIdentifier hashAlgorithm = new AlgorithmIdentifier( -+ // JCEDigestUtil.getOID(pssSpec.getDigestAlgorithm()), -+ // // BEGIN android-changed -+ // DERNull.INSTANCE); -+ // // END android-changed -+ // MGF1ParameterSpec mgfSpec = (MGF1ParameterSpec)pssSpec.getMGFParameters(); -+ // AlgorithmIdentifier maskGenAlgorithm = new AlgorithmIdentifier( -+ // PKCSObjectIdentifiers.id_mgf1, -+ // // BEGIN android-changed -+ // new AlgorithmIdentifier(JCEDigestUtil.getOID(mgfSpec.getDigestAlgorithm()), DERNull.INSTANCE)); -+ // // END android-changed -+ // RSASSAPSSparams pssP = new RSASSAPSSparams(hashAlgorithm, maskGenAlgorithm, new DERInteger(pssSpec.getSaltLength()), new DERInteger(pssSpec.getTrailerField())); -+ // -+ // return pssP.getEncoded("DER"); -+ // } -+ // -+ // protected byte[] engineGetEncoded( -+ // String format) -+ // throws IOException -+ // { -+ // if (format.equalsIgnoreCase("X.509") -+ // || format.equalsIgnoreCase("ASN.1")) -+ // { -+ // return engineGetEncoded(); -+ // } -+ // -+ // return null; -+ // } -+ // -+ // protected AlgorithmParameterSpec localEngineGetParameterSpec( -+ // Class paramSpec) -+ // throws InvalidParameterSpecException -+ // { -+ // if (paramSpec == PSSParameterSpec.class && currentSpec != null) -+ // { -+ // return currentSpec; -+ // } -+ // -+ // throw new InvalidParameterSpecException("unknown parameter spec passed to PSS parameters object."); -+ // } -+ // -+ // protected void engineInit( -+ // AlgorithmParameterSpec paramSpec) -+ // throws InvalidParameterSpecException -+ // { -+ // if (!(paramSpec instanceof PSSParameterSpec)) -+ // { -+ // throw new InvalidParameterSpecException("PSSParameterSpec required to initialise an PSS algorithm parameters object"); -+ // } -+ // -+ // this.currentSpec = (PSSParameterSpec)paramSpec; -+ // } -+ // -+ // protected void engineInit( -+ // byte[] params) -+ // throws IOException -+ // { -+ // try -+ // { -+ // RSASSAPSSparams pssP = new RSASSAPSSparams((ASN1Sequence)ASN1Object.fromByteArray(params)); -+ // -+ // currentSpec = new PSSParameterSpec( -+ // pssP.getHashAlgorithm().getObjectId().getId(), -+ // pssP.getMaskGenAlgorithm().getObjectId().getId(), -+ // new MGF1ParameterSpec(AlgorithmIdentifier.getInstance(pssP.getMaskGenAlgorithm().getParameters()).getObjectId().getId()), -+ // pssP.getSaltLength().getValue().intValue(), -+ // pssP.getTrailerField().getValue().intValue()); -+ // } -+ // catch (ClassCastException e) -+ // { -+ // throw new IOException("Not a valid PSS Parameter encoding."); -+ // } -+ // catch (ArrayIndexOutOfBoundsException e) -+ // { -+ // throw new IOException("Not a valid PSS Parameter encoding."); -+ // } -+ // } -+ // -+ // protected void engineInit( -+ // byte[] params, -+ // String format) -+ // throws IOException -+ // { -+ // if (isASN1FormatString(format) || format.equalsIgnoreCase("X.509")) -+ // { -+ // engineInit(params); -+ // } -+ // else -+ // { -+ // throw new IOException("Unknown parameter format " + format); -+ // } -+ // } -+ // -+ // protected String engineToString() -+ // { -+ // return "PSS Parameters"; -+ // } -+ // } -+ // END android-removed } -diff -Naur bcprov-jdk16-146.orig/org/bouncycastle/jce/provider/JDKDSASigner.java bcprov-jdk16-146/org/bouncycastle/jce/provider/JDKDSASigner.java ---- bcprov-jdk16-146.orig/org/bouncycastle/jce/provider/JDKDSASigner.java 2011-02-23 20:08:56.000000000 +0000 -+++ bcprov-jdk16-146/org/bouncycastle/jce/provider/JDKDSASigner.java 2012-07-27 18:48:00.031478939 +0000 -@@ -23,13 +23,17 @@ - import org.bouncycastle.crypto.Digest; - import org.bouncycastle.crypto.digests.NullDigest; - import org.bouncycastle.crypto.digests.SHA1Digest; --import org.bouncycastle.crypto.digests.SHA224Digest; -+// BEGIN android-removed -+// import org.bouncycastle.crypto.digests.SHA224Digest; -+// END android-removed - import org.bouncycastle.crypto.digests.SHA256Digest; - import org.bouncycastle.crypto.digests.SHA384Digest; - import org.bouncycastle.crypto.digests.SHA512Digest; - import org.bouncycastle.crypto.params.ParametersWithRandom; - import org.bouncycastle.crypto.signers.DSASigner; --import org.bouncycastle.jce.interfaces.GOST3410Key; -+// BEGIN android-removed -+// import org.bouncycastle.jce.interfaces.GOST3410Key; -+// END android-removed - - public class JDKDSASigner - extends SignatureSpi -@@ -53,11 +57,16 @@ - { - CipherParameters param; - -- if (publicKey instanceof GOST3410Key) -- { -- param = GOST3410Util.generatePublicKeyParameter(publicKey); -- } -- else if (publicKey instanceof DSAKey) -+ // BEGIN android-removed -+ // if (publicKey instanceof GOST3410Key) -+ // { -+ // param = GOST3410Util.generatePublicKeyParameter(publicKey); -+ // } -+ // else if (publicKey instanceof DSAKey) -+ // END android-removed -+ // BEGIN android-added -+ if (publicKey instanceof DSAKey) -+ // END android-added - { - param = DSAUtil.generatePublicKeyParameter(publicKey); - } -@@ -103,14 +112,18 @@ - { - CipherParameters param; - -- if (privateKey instanceof GOST3410Key) -- { -- param = GOST3410Util.generatePrivateKeyParameter(privateKey); -- } -- else -- { -+ // BEGIN android-removed -+ // if (privateKey instanceof GOST3410Key) -+ // { -+ // param = GOST3410Util.generatePrivateKeyParameter(privateKey); -+ // } -+ // else -+ // { -+ // END android-removed - param = DSAUtil.generatePrivateKeyParameter(privateKey); -- } -+ // BEGIN android-removed -+ // } -+ // END android-removed - - if (random != null) - { -@@ -231,42 +244,44 @@ - super(new SHA1Digest(), new DSASigner()); - } - } -- -- static public class dsa224 -- extends JDKDSASigner -- { -- public dsa224() -- { -- super(new SHA224Digest(), new DSASigner()); -- } -- } -- -- static public class dsa256 -- extends JDKDSASigner -- { -- public dsa256() -- { -- super(new SHA256Digest(), new DSASigner()); -- } -- } - -- static public class dsa384 -- extends JDKDSASigner -- { -- public dsa384() -- { -- super(new SHA384Digest(), new DSASigner()); -- } -- } -- -- static public class dsa512 -- extends JDKDSASigner -- { -- public dsa512() -- { -- super(new SHA512Digest(), new DSASigner()); -- } -- } -+ // BEGIN android-removed -+ // static public class dsa224 -+ // extends JDKDSASigner -+ // { -+ // public dsa224() -+ // { -+ // super(new SHA224Digest(), new DSASigner()); -+ // } -+ // } -+ // -+ // static public class dsa256 -+ // extends JDKDSASigner -+ // { -+ // public dsa256() -+ // { -+ // super(new SHA256Digest(), new DSASigner()); -+ // } -+ // } -+ // -+ // static public class dsa384 -+ // extends JDKDSASigner -+ // { -+ // public dsa384() -+ // { -+ // super(new SHA384Digest(), new DSASigner()); -+ // } -+ // } -+ // -+ // static public class dsa512 -+ // extends JDKDSASigner -+ // { -+ // public dsa512() -+ // { -+ // super(new SHA512Digest(), new DSASigner()); -+ // } -+ // } -+ // END android-removed - - static public class noneDSA - extends JDKDSASigner -diff -Naur bcprov-jdk16-146.orig/org/bouncycastle/jce/provider/JDKDigestSignature.java bcprov-jdk16-146/org/bouncycastle/jce/provider/JDKDigestSignature.java ---- bcprov-jdk16-146.orig/org/bouncycastle/jce/provider/JDKDigestSignature.java 2011-02-23 20:08:56.000000000 +0000 -+++ bcprov-jdk16-146/org/bouncycastle/jce/provider/JDKDigestSignature.java 2012-07-27 18:48:00.031478939 +0000 -@@ -23,15 +23,21 @@ - import org.bouncycastle.crypto.AsymmetricBlockCipher; - import org.bouncycastle.crypto.CipherParameters; - import org.bouncycastle.crypto.Digest; --import org.bouncycastle.crypto.digests.MD2Digest; --import org.bouncycastle.crypto.digests.MD4Digest; -+// BEGIN android-removed -+// import org.bouncycastle.crypto.digests.MD2Digest; -+// import org.bouncycastle.crypto.digests.MD4Digest; -+// END android-removed - import org.bouncycastle.crypto.digests.MD5Digest; - import org.bouncycastle.crypto.digests.NullDigest; --import org.bouncycastle.crypto.digests.RIPEMD128Digest; --import org.bouncycastle.crypto.digests.RIPEMD160Digest; --import org.bouncycastle.crypto.digests.RIPEMD256Digest; -+// BEGIN android-removed -+// import org.bouncycastle.crypto.digests.RIPEMD128Digest; -+// import org.bouncycastle.crypto.digests.RIPEMD160Digest; -+// import org.bouncycastle.crypto.digests.RIPEMD256Digest; -+// END android-removed - import org.bouncycastle.crypto.digests.SHA1Digest; --import org.bouncycastle.crypto.digests.SHA224Digest; -+// BEGIN android-removed -+// import org.bouncycastle.crypto.digests.SHA224Digest; -+// END android-removed - import org.bouncycastle.crypto.digests.SHA256Digest; - import org.bouncycastle.crypto.digests.SHA384Digest; - import org.bouncycastle.crypto.digests.SHA512Digest; -@@ -265,14 +271,16 @@ - } - } - -- static public class SHA224WithRSAEncryption -- extends JDKDigestSignature -- { -- public SHA224WithRSAEncryption() -- { -- super(NISTObjectIdentifiers.id_sha224, new SHA224Digest(), new PKCS1Encoding(new RSABlindedEngine())); -- } -- } -+ // BEGIN android-removed -+ // static public class SHA224WithRSAEncryption -+ // extends JDKDigestSignature -+ // { -+ // public SHA224WithRSAEncryption() -+ // { -+ // super(NISTObjectIdentifiers.id_sha224, new SHA224Digest(), new PKCS1Encoding(new RSABlindedEngine())); -+ // } -+ // } -+ // END android-removed - - static public class SHA256WithRSAEncryption - extends JDKDigestSignature -@@ -301,23 +309,25 @@ - } - } - -- static public class MD2WithRSAEncryption -- extends JDKDigestSignature -- { -- public MD2WithRSAEncryption() -- { -- super(PKCSObjectIdentifiers.md2, new MD2Digest(), new PKCS1Encoding(new RSABlindedEngine())); -- } -- } -- -- static public class MD4WithRSAEncryption -- extends JDKDigestSignature -- { -- public MD4WithRSAEncryption() -- { -- super(PKCSObjectIdentifiers.md4, new MD4Digest(), new PKCS1Encoding(new RSABlindedEngine())); -- } -- } -+ // BEGIN android-removed -+ // static public class MD2WithRSAEncryption -+ // extends JDKDigestSignature -+ // { -+ // public MD2WithRSAEncryption() -+ // { -+ // super(PKCSObjectIdentifiers.md2, new MD2Digest(), new PKCS1Encoding(new RSABlindedEngine())); -+ // } -+ // } -+ // -+ // static public class MD4WithRSAEncryption -+ // extends JDKDigestSignature -+ // { -+ // public MD4WithRSAEncryption() -+ // { -+ // super(PKCSObjectIdentifiers.md4, new MD4Digest(), new PKCS1Encoding(new RSABlindedEngine())); -+ // } -+ // } -+ // END android-removed - - static public class MD5WithRSAEncryption - extends JDKDigestSignature -@@ -328,39 +338,41 @@ - } - } - -- static public class RIPEMD160WithRSAEncryption -- extends JDKDigestSignature -- { -- public RIPEMD160WithRSAEncryption() -- { -- super(TeleTrusTObjectIdentifiers.ripemd160, new RIPEMD160Digest(), new PKCS1Encoding(new RSABlindedEngine())); -- } -- } -- -- static public class RIPEMD128WithRSAEncryption -- extends JDKDigestSignature -- { -- public RIPEMD128WithRSAEncryption() -- { -- super(TeleTrusTObjectIdentifiers.ripemd128, new RIPEMD128Digest(), new PKCS1Encoding(new RSABlindedEngine())); -- } -- } -- -- static public class RIPEMD256WithRSAEncryption -- extends JDKDigestSignature -- { -- public RIPEMD256WithRSAEncryption() -- { -- super(TeleTrusTObjectIdentifiers.ripemd256, new RIPEMD256Digest(), new PKCS1Encoding(new RSABlindedEngine())); -- } -- } -- -- static public class noneRSA -- extends JDKDigestSignature -- { -- public noneRSA() -- { -- super(new NullDigest(), new PKCS1Encoding(new RSABlindedEngine())); -- } -- } -+ // BEGIN android-removed -+ // static public class RIPEMD160WithRSAEncryption -+ // extends JDKDigestSignature -+ // { -+ // public RIPEMD160WithRSAEncryption() -+ // { -+ // super(TeleTrusTObjectIdentifiers.ripemd160, new RIPEMD160Digest(), new PKCS1Encoding(new RSABlindedEngine())); -+ // } -+ // } -+ // -+ // static public class RIPEMD128WithRSAEncryption -+ // extends JDKDigestSignature -+ // { -+ // public RIPEMD128WithRSAEncryption() -+ // { -+ // super(TeleTrusTObjectIdentifiers.ripemd128, new RIPEMD128Digest(), new PKCS1Encoding(new RSABlindedEngine())); -+ // } -+ // } -+ // -+ // static public class RIPEMD256WithRSAEncryption -+ // extends JDKDigestSignature -+ // { -+ // public RIPEMD256WithRSAEncryption() -+ // { -+ // super(TeleTrusTObjectIdentifiers.ripemd256, new RIPEMD256Digest(), new PKCS1Encoding(new RSABlindedEngine())); -+ // } -+ // } -+ // -+ // static public class noneRSA -+ // extends JDKDigestSignature -+ // { -+ // public noneRSA() -+ // { -+ // super(new NullDigest(), new PKCS1Encoding(new RSABlindedEngine())); -+ // } -+ // } -+ // END android-removed - } -diff -Naur bcprov-jdk16-146.orig/org/bouncycastle/jce/provider/JDKKeyFactory.java bcprov-jdk16-146/org/bouncycastle/jce/provider/JDKKeyFactory.java ---- bcprov-jdk16-146.orig/org/bouncycastle/jce/provider/JDKKeyFactory.java 2011-02-23 20:08:56.000000000 +0000 -+++ bcprov-jdk16-146/org/bouncycastle/jce/provider/JDKKeyFactory.java 2012-07-27 18:48:00.031478939 +0000 -@@ -36,17 +36,21 @@ - import org.bouncycastle.asn1.pkcs.RSAPrivateKeyStructure; - import org.bouncycastle.asn1.x509.SubjectPublicKeyInfo; - import org.bouncycastle.asn1.x9.X9ObjectIdentifiers; --import org.bouncycastle.jce.interfaces.ElGamalPrivateKey; --import org.bouncycastle.jce.interfaces.ElGamalPublicKey; --import org.bouncycastle.jce.spec.ElGamalPrivateKeySpec; --import org.bouncycastle.jce.spec.ElGamalPublicKeySpec; --import org.bouncycastle.jce.spec.GOST3410PrivateKeySpec; --import org.bouncycastle.jce.spec.GOST3410PublicKeySpec; -+// BEGIN android-removed -+// import org.bouncycastle.jce.interfaces.ElGamalPrivateKey; -+// import org.bouncycastle.jce.interfaces.ElGamalPublicKey; -+// import org.bouncycastle.jce.spec.ElGamalPrivateKeySpec; -+// import org.bouncycastle.jce.spec.ElGamalPublicKeySpec; -+// import org.bouncycastle.jce.spec.GOST3410PrivateKeySpec; -+// import org.bouncycastle.jce.spec.GOST3410PublicKeySpec; -+// END android-removed - - public abstract class JDKKeyFactory - extends KeyFactorySpi - { -- protected boolean elGamalFactory = false; -+ // BEGIN android-removed -+ // protected boolean elGamalFactory = false; -+ // END android-removed - - public JDKKeyFactory() - { -@@ -140,6 +144,20 @@ - - return new DHPublicKeySpec(k.getY(), k.getParams().getP(), k.getParams().getG()); - } -+ // BEGIN android-added -+ else if (spec.isAssignableFrom(DSAPublicKeySpec.class) && key instanceof DSAPublicKey) -+ { -+ DSAPublicKey k = (DSAPublicKey)key; -+ -+ return new DSAPublicKeySpec(k.getY(), k.getParams().getP(), k.getParams().getQ(), k.getParams().getG()); -+ } -+ else if (spec.isAssignableFrom(DSAPrivateKeySpec.class) && key instanceof DSAPrivateKey) -+ { -+ DSAPrivateKey k = (DSAPrivateKey)key; -+ -+ return new DSAPrivateKeySpec(k.getX(), k.getParams().getP(), k.getParams().getQ(), k.getParams().getG()); -+ } -+ // END android-added - - throw new RuntimeException("not implemented yet " + key + " " + spec); - } -@@ -162,25 +180,33 @@ - } - else if (key instanceof DHPublicKey) - { -- if (elGamalFactory) -- { -- return new JCEElGamalPublicKey((DHPublicKey)key); -- } -- else -- { -+ // BEGIN android-removed -+ // if (elGamalFactory) -+ // { -+ // return new JCEElGamalPublicKey((DHPublicKey)key); -+ // } -+ // else -+ // { -+ // END android-removed - return new JCEDHPublicKey((DHPublicKey)key); -- } -+ // BEGIN android-removed -+ // } -+ // END android-removed - } - else if (key instanceof DHPrivateKey) - { -- if (elGamalFactory) -- { -- return new JCEElGamalPrivateKey((DHPrivateKey)key); -- } -- else -- { -+ // BEGIN android-removed -+ // if (elGamalFactory) -+ // { -+ // return new JCEElGamalPrivateKey((DHPrivateKey)key); -+ // } -+ // else -+ // { -+ // END android-removed - return new JCEDHPrivateKey((DHPrivateKey)key); -- } -+ // BEGIN android-removed -+ // } -+ // END android-removed - } - else if (key instanceof DSAPublicKey) - { -@@ -190,14 +216,16 @@ - { - return new JDKDSAPrivateKey((DSAPrivateKey)key); - } -- else if (key instanceof ElGamalPublicKey) -- { -- return new JCEElGamalPublicKey((ElGamalPublicKey)key); -- } -- else if (key instanceof ElGamalPrivateKey) -- { -- return new JCEElGamalPrivateKey((ElGamalPrivateKey)key); -- } -+ // BEGIN android-removed -+ // else if (key instanceof ElGamalPublicKey) -+ // { -+ // return new JCEElGamalPublicKey((ElGamalPublicKey)key); -+ // } -+ // else if (key instanceof ElGamalPrivateKey) -+ // { -+ // return new JCEElGamalPrivateKey((ElGamalPrivateKey)key); -+ // } -+ // END android-removed - - throw new InvalidKeyException("key type unknown"); - } -@@ -233,10 +261,12 @@ - { - return new JCEDHPublicKey(info); - } -- else if (algOid.equals(OIWObjectIdentifiers.elGamalAlgorithm)) -- { -- return new JCEElGamalPublicKey(info); -- } -+ // BEGIN android-removed -+ // else if (algOid.equals(OIWObjectIdentifiers.elGamalAlgorithm)) -+ // { -+ // return new JCEElGamalPublicKey(info); -+ // } -+ // END android-removed - else if (algOid.equals(X9ObjectIdentifiers.id_dsa)) - { - return new JDKDSAPublicKey(info); -@@ -249,14 +279,15 @@ - { - return new JCEECPublicKey(info); - } -- else if (algOid.equals(CryptoProObjectIdentifiers.gostR3410_94)) -- { -- return new JDKGOST3410PublicKey(info); -- } -- else if (algOid.equals(CryptoProObjectIdentifiers.gostR3410_2001)) -- { -- return new JCEECPublicKey(info); -- } -+ // BEGIN android-removed -+ // else if (algOid.equals(CryptoProObjectIdentifiers.gostR3410_94)) -+ // { -+ // return new JDKGOST3410PublicKey(info); -+ // } -+ // else if (algOid.equals(CryptoProObjectIdentifiers.gostR3410_2001)) -+ // { -+ // return new JCEECPublicKey(info); -+ // } - else - { - throw new RuntimeException("algorithm identifier " + algOid + " in key not recognised"); -@@ -294,10 +325,12 @@ - { - return new JCEDHPrivateKey(info); - } -- else if (algOid.equals(OIWObjectIdentifiers.elGamalAlgorithm)) -- { -- return new JCEElGamalPrivateKey(info); -- } -+ // BEGIN android-removed -+ // else if (algOid.equals(OIWObjectIdentifiers.elGamalAlgorithm)) -+ // { -+ // return new JCEElGamalPrivateKey(info); -+ // } -+ // END android-removed - else if (algOid.equals(X9ObjectIdentifiers.id_dsa)) - { - return new JDKDSAPrivateKey(info); -@@ -306,14 +339,16 @@ - { - return new JCEECPrivateKey(info); - } -- else if (algOid.equals(CryptoProObjectIdentifiers.gostR3410_94)) -- { -- return new JDKGOST3410PrivateKey(info); -- } -- else if (algOid.equals(CryptoProObjectIdentifiers.gostR3410_2001)) -- { -- return new JCEECPrivateKey(info); -- } -+ // BEGIN android-removed -+ // else if (algOid.equals(CryptoProObjectIdentifiers.gostR3410_94)) -+ // { -+ // return new JDKGOST3410PrivateKey(info); -+ // } -+ // else if (algOid.equals(CryptoProObjectIdentifiers.gostR3410_2001)) -+ // { -+ // return new JCEECPrivateKey(info); -+ // } -+ // END android-removed - else - { - throw new RuntimeException("algorithm identifier " + algOid + " in key not recognised"); -@@ -444,89 +479,92 @@ - } - } - -- public static class GOST3410 -- extends JDKKeyFactory -- { -- public GOST3410() -- { -- } -- -- protected PrivateKey engineGeneratePrivate( -- KeySpec keySpec) -- throws InvalidKeySpecException -- { -- if (keySpec instanceof GOST3410PrivateKeySpec) -- { -- return new JDKGOST3410PrivateKey((GOST3410PrivateKeySpec)keySpec); -- } -- -- return super.engineGeneratePrivate(keySpec); -- } -- -- protected PublicKey engineGeneratePublic( -- KeySpec keySpec) -- throws InvalidKeySpecException -- { -- if (keySpec instanceof GOST3410PublicKeySpec) -- { -- return new JDKGOST3410PublicKey((GOST3410PublicKeySpec)keySpec); -- } -- -- return super.engineGeneratePublic(keySpec); -- } -- } -- -- public static class ElGamal -- extends JDKKeyFactory -- { -- public ElGamal() -- { -- elGamalFactory = true; -- } -- -- protected PrivateKey engineGeneratePrivate( -- KeySpec keySpec) -- throws InvalidKeySpecException -- { -- if (keySpec instanceof ElGamalPrivateKeySpec) -- { -- return new JCEElGamalPrivateKey((ElGamalPrivateKeySpec)keySpec); -- } -- else if (keySpec instanceof DHPrivateKeySpec) -- { -- return new JCEElGamalPrivateKey((DHPrivateKeySpec)keySpec); -- } -- -- return super.engineGeneratePrivate(keySpec); -- } -+ // BEGIN android-removed -+ // public static class GOST3410 -+ // extends JDKKeyFactory -+ // { -+ // public GOST3410() -+ // { -+ // } -+ // -+ // protected PrivateKey engineGeneratePrivate( -+ // KeySpec keySpec) -+ // throws InvalidKeySpecException -+ // { -+ // if (keySpec instanceof GOST3410PrivateKeySpec) -+ // { -+ // return new JDKGOST3410PrivateKey((GOST3410PrivateKeySpec)keySpec); -+ // } -+ // -+ // return super.engineGeneratePrivate(keySpec); -+ // } -+ // -+ // protected PublicKey engineGeneratePublic( -+ // KeySpec keySpec) -+ // throws InvalidKeySpecException -+ // { -+ // if (keySpec instanceof GOST3410PublicKeySpec) -+ // { -+ // return new JDKGOST3410PublicKey((GOST3410PublicKeySpec)keySpec); -+ // } -+ // -+ // return super.engineGeneratePublic(keySpec); -+ // } -+ // } - -- protected PublicKey engineGeneratePublic( -- KeySpec keySpec) -- throws InvalidKeySpecException -- { -- if (keySpec instanceof ElGamalPublicKeySpec) -- { -- return new JCEElGamalPublicKey((ElGamalPublicKeySpec)keySpec); -- } -- else if (keySpec instanceof DHPublicKeySpec) -- { -- return new JCEElGamalPublicKey((DHPublicKeySpec)keySpec); -- } -- -- return super.engineGeneratePublic(keySpec); -- } -- } -- -- -- /** -- * This isn't really correct, however the class path project API seems to think such -- * a key factory will exist. -- */ -- public static class X509 -- extends JDKKeyFactory -- { -- public X509() -- { -- } -- } -+ // public static class ElGamal -+ // extends JDKKeyFactory -+ // { -+ // public ElGamal() -+ // { -+ // elGamalFactory = true; -+ // } -+ // -+ // protected PrivateKey engineGeneratePrivate( -+ // KeySpec keySpec) -+ // throws InvalidKeySpecException -+ // { -+ // if (keySpec instanceof ElGamalPrivateKeySpec) -+ // { -+ // return new JCEElGamalPrivateKey((ElGamalPrivateKeySpec)keySpec); -+ // } -+ // else if (keySpec instanceof DHPrivateKeySpec) -+ // { -+ // return new JCEElGamalPrivateKey((DHPrivateKeySpec)keySpec); -+ // } -+ // -+ // return super.engineGeneratePrivate(keySpec); -+ // } -+ // -+ // protected PublicKey engineGeneratePublic( -+ // KeySpec keySpec) -+ // throws InvalidKeySpecException -+ // { -+ // if (keySpec instanceof ElGamalPublicKeySpec) -+ // { -+ // return new JCEElGamalPublicKey((ElGamalPublicKeySpec)keySpec); -+ // } -+ // else if (keySpec instanceof DHPublicKeySpec) -+ // { -+ // return new JCEElGamalPublicKey((DHPublicKeySpec)keySpec); -+ // } -+ // -+ // return super.engineGeneratePublic(keySpec); -+ // } -+ // } -+ // -+ // -+ // -+ // /** -+ // * This isn't really correct, however the class path project API seems to think such -+ // * a key factory will exist. -+ // */ -+ // public static class X509 -+ // extends JDKKeyFactory -+ // { -+ // public X509() -+ // { -+ // } -+ // } -+ // END android-removed - } -diff -Naur bcprov-jdk16-146.orig/org/bouncycastle/jce/provider/JDKKeyPairGenerator.java bcprov-jdk16-146/org/bouncycastle/jce/provider/JDKKeyPairGenerator.java ---- bcprov-jdk16-146.orig/org/bouncycastle/jce/provider/JDKKeyPairGenerator.java 2011-02-23 20:08:56.000000000 +0000 -+++ bcprov-jdk16-146/org/bouncycastle/jce/provider/JDKKeyPairGenerator.java 2012-07-27 18:48:00.031478939 +0000 -@@ -6,9 +6,11 @@ - import org.bouncycastle.crypto.generators.DHParametersGenerator; - import org.bouncycastle.crypto.generators.DSAKeyPairGenerator; - import org.bouncycastle.crypto.generators.DSAParametersGenerator; --import org.bouncycastle.crypto.generators.ElGamalKeyPairGenerator; --import org.bouncycastle.crypto.generators.ElGamalParametersGenerator; --import org.bouncycastle.crypto.generators.GOST3410KeyPairGenerator; -+// BEGIN android-removed -+// import org.bouncycastle.crypto.generators.ElGamalKeyPairGenerator; -+// import org.bouncycastle.crypto.generators.ElGamalParametersGenerator; -+// import org.bouncycastle.crypto.generators.GOST3410KeyPairGenerator; -+// END android-removed - import org.bouncycastle.crypto.generators.RSAKeyPairGenerator; - import org.bouncycastle.crypto.params.DHKeyGenerationParameters; - import org.bouncycastle.crypto.params.DHParameters; -@@ -18,20 +20,24 @@ - import org.bouncycastle.crypto.params.DSAParameters; - import org.bouncycastle.crypto.params.DSAPrivateKeyParameters; - import org.bouncycastle.crypto.params.DSAPublicKeyParameters; --import org.bouncycastle.crypto.params.ElGamalKeyGenerationParameters; --import org.bouncycastle.crypto.params.ElGamalParameters; --import org.bouncycastle.crypto.params.ElGamalPrivateKeyParameters; --import org.bouncycastle.crypto.params.ElGamalPublicKeyParameters; --import org.bouncycastle.crypto.params.GOST3410KeyGenerationParameters; --import org.bouncycastle.crypto.params.GOST3410Parameters; --import org.bouncycastle.crypto.params.GOST3410PrivateKeyParameters; --import org.bouncycastle.crypto.params.GOST3410PublicKeyParameters; -+// BEGIN android-removed -+// import org.bouncycastle.crypto.params.ElGamalKeyGenerationParameters; -+// import org.bouncycastle.crypto.params.ElGamalParameters; -+// import org.bouncycastle.crypto.params.ElGamalPrivateKeyParameters; -+// import org.bouncycastle.crypto.params.ElGamalPublicKeyParameters; -+// import org.bouncycastle.crypto.params.GOST3410KeyGenerationParameters; -+// import org.bouncycastle.crypto.params.GOST3410Parameters; -+// import org.bouncycastle.crypto.params.GOST3410PrivateKeyParameters; -+// import org.bouncycastle.crypto.params.GOST3410PublicKeyParameters; -+// END android-removed - import org.bouncycastle.crypto.params.RSAKeyGenerationParameters; - import org.bouncycastle.crypto.params.RSAKeyParameters; - import org.bouncycastle.crypto.params.RSAPrivateCrtKeyParameters; --import org.bouncycastle.jce.spec.ElGamalParameterSpec; --import org.bouncycastle.jce.spec.GOST3410ParameterSpec; --import org.bouncycastle.jce.spec.GOST3410PublicKeyParameterSetSpec; -+// BEGIN android-removed -+// import org.bouncycastle.jce.spec.ElGamalParameterSpec; -+// import org.bouncycastle.jce.spec.GOST3410ParameterSpec; -+// import org.bouncycastle.jce.spec.GOST3410PublicKeyParameterSetSpec; -+// END android-removed - - import java.math.BigInteger; - import java.security.InvalidAlgorithmParameterException; -@@ -163,7 +169,9 @@ - { - if (!initialised) - { -- Integer paramStrength = new Integer(strength); -+ // BEGIN android-changed -+ Integer paramStrength = Integer.valueOf(strength); -+ // END android-changed - - if (params.containsKey(paramStrength)) - { -@@ -260,139 +268,143 @@ - } - } - -- public static class ElGamal -- extends JDKKeyPairGenerator -- { -- ElGamalKeyGenerationParameters param; -- ElGamalKeyPairGenerator engine = new ElGamalKeyPairGenerator(); -- int strength = 1024; -- int certainty = 20; -- SecureRandom random = new SecureRandom(); -- boolean initialised = false; -- -- public ElGamal() -- { -- super("ElGamal"); -- } -- -- public void initialize( -- int strength, -- SecureRandom random) -- { -- this.strength = strength; -- this.random = random; -- } -- -- public void initialize( -- AlgorithmParameterSpec params, -- SecureRandom random) -- throws InvalidAlgorithmParameterException -- { -- if (!(params instanceof ElGamalParameterSpec) && !(params instanceof DHParameterSpec)) -- { -- throw new InvalidAlgorithmParameterException("parameter object not a DHParameterSpec or an ElGamalParameterSpec"); -- } -- -- if (params instanceof ElGamalParameterSpec) -- { -- ElGamalParameterSpec elParams = (ElGamalParameterSpec)params; -- -- param = new ElGamalKeyGenerationParameters(random, new ElGamalParameters(elParams.getP(), elParams.getG())); -- } -- else -- { -- DHParameterSpec dhParams = (DHParameterSpec)params; -- -- param = new ElGamalKeyGenerationParameters(random, new ElGamalParameters(dhParams.getP(), dhParams.getG(), dhParams.getL())); -- } -- -- engine.init(param); -- initialised = true; -- } -- -- public KeyPair generateKeyPair() -- { -- if (!initialised) -- { -- ElGamalParametersGenerator pGen = new ElGamalParametersGenerator(); -- -- pGen.init(strength, certainty, random); -- param = new ElGamalKeyGenerationParameters(random, pGen.generateParameters()); -- engine.init(param); -- initialised = true; -- } -- -- AsymmetricCipherKeyPair pair = engine.generateKeyPair(); -- ElGamalPublicKeyParameters pub = (ElGamalPublicKeyParameters)pair.getPublic(); -- ElGamalPrivateKeyParameters priv = (ElGamalPrivateKeyParameters)pair.getPrivate(); -- -- return new KeyPair(new JCEElGamalPublicKey(pub), -- new JCEElGamalPrivateKey(priv)); -- } -- } -- -- public static class GOST3410 -- extends JDKKeyPairGenerator -- { -- GOST3410KeyGenerationParameters param; -- GOST3410KeyPairGenerator engine = new GOST3410KeyPairGenerator(); -- GOST3410ParameterSpec gost3410Params; -- int strength = 1024; -- SecureRandom random = null; -- boolean initialised = false; -- -- public GOST3410() -- { -- super("GOST3410"); -- } -- -- public void initialize( -- int strength, -- SecureRandom random) -- { -- this.strength = strength; -- this.random = random; -- } -- -- private void init( -- GOST3410ParameterSpec gParams, -- SecureRandom random) -- { -- GOST3410PublicKeyParameterSetSpec spec = gParams.getPublicKeyParameters(); -- -- param = new GOST3410KeyGenerationParameters(random, new GOST3410Parameters(spec.getP(), spec.getQ(), spec.getA())); -- -- engine.init(param); -- -- initialised = true; -- gost3410Params = gParams; -- } -- -- public void initialize( -- AlgorithmParameterSpec params, -- SecureRandom random) -- throws InvalidAlgorithmParameterException -- { -- if (!(params instanceof GOST3410ParameterSpec)) -- { -- throw new InvalidAlgorithmParameterException("parameter object not a GOST3410ParameterSpec"); -- } -- -- init((GOST3410ParameterSpec)params, random); -- } -- -- public KeyPair generateKeyPair() -- { -- if (!initialised) -- { -- init(new GOST3410ParameterSpec(CryptoProObjectIdentifiers.gostR3410_94_CryptoPro_A.getId()), new SecureRandom()); -- } -- -- AsymmetricCipherKeyPair pair = engine.generateKeyPair(); -- GOST3410PublicKeyParameters pub = (GOST3410PublicKeyParameters)pair.getPublic(); -- GOST3410PrivateKeyParameters priv = (GOST3410PrivateKeyParameters)pair.getPrivate(); -- -- return new KeyPair(new JDKGOST3410PublicKey(pub, gost3410Params), new JDKGOST3410PrivateKey(priv, gost3410Params)); -- } -- } -+ // BEGIN android-removed -+ // public static class ElGamal -+ // extends JDKKeyPairGenerator -+ // { -+ // ElGamalKeyGenerationParameters param; -+ // ElGamalKeyPairGenerator engine = new ElGamalKeyPairGenerator(); -+ // int strength = 1024; -+ // int certainty = 20; -+ // SecureRandom random = new SecureRandom(); -+ // boolean initialised = false; -+ // -+ // public ElGamal() -+ // { -+ // super("ElGamal"); -+ // } -+ // -+ // public void initialize( -+ // int strength, -+ // SecureRandom random) -+ // { -+ // this.strength = strength; -+ // this.random = random; -+ // } -+ // -+ // public void initialize( -+ // AlgorithmParameterSpec params, -+ // SecureRandom random) -+ // throws InvalidAlgorithmParameterException -+ // { -+ // if (!(params instanceof ElGamalParameterSpec) && !(params instanceof DHParameterSpec)) -+ // { -+ // throw new InvalidAlgorithmParameterException("parameter object not a DHParameterSpec or an ElGamalParameterSpec"); -+ // } -+ // -+ // if (params instanceof ElGamalParameterSpec) -+ // { -+ // ElGamalParameterSpec elParams = (ElGamalParameterSpec)params; -+ -+ // param = new ElGamalKeyGenerationParameters(random, new ElGamalParameters(elParams.getP(), elParams.getG())); -+ // } -+ // else -+ // { -+ // DHParameterSpec dhParams = (DHParameterSpec)params; -+ // -+ // param = new ElGamalKeyGenerationParameters(random, new ElGamalParameters(dhParams.getP(), dhParams.getG(), dhParams.getL())); -+ // } -+ // -+ // engine.init(param); -+ // initialised = true; -+ // } -+ // -+ // public KeyPair generateKeyPair() -+ // { -+ // if (!initialised) -+ // { -+ // ElGamalParametersGenerator pGen = new ElGamalParametersGenerator(); -+ // -+ // pGen.init(strength, certainty, random); -+ // param = new ElGamalKeyGenerationParameters(random, pGen.generateParameters()); -+ // engine.init(param); -+ // initialised = true; -+ // } -+ // -+ // AsymmetricCipherKeyPair pair = engine.generateKeyPair(); -+ // ElGamalPublicKeyParameters pub = (ElGamalPublicKeyParameters)pair.getPublic(); -+ // ElGamalPrivateKeyParameters priv = (ElGamalPrivateKeyParameters)pair.getPrivate(); -+ // -+ // return new KeyPair(new JCEElGamalPublicKey(pub), -+ // new JCEElGamalPrivateKey(priv)); -+ // } -+ // } -+ // END android-removed -+ -+ // BEGIN android-removed -+ // public static class GOST3410 -+ // extends JDKKeyPairGenerator -+ // { -+ // GOST3410KeyGenerationParameters param; -+ // GOST3410KeyPairGenerator engine = new GOST3410KeyPairGenerator(); -+ // GOST3410ParameterSpec gost3410Params; -+ // int strength = 1024; -+ // SecureRandom random = null; -+ // boolean initialised = false; -+ // -+ // public GOST3410() -+ // { -+ // super("GOST3410"); -+ // } -+ // -+ // public void initialize( -+ // int strength, -+ // SecureRandom random) -+ // { -+ // this.strength = strength; -+ // this.random = random; -+ // } -+ // -+ // private void init( -+ // GOST3410ParameterSpec gParams, -+ // SecureRandom random) -+ // { -+ // GOST3410PublicKeyParameterSetSpec spec = gParams.getPublicKeyParameters(); -+ // -+ // param = new GOST3410KeyGenerationParameters(random, new GOST3410Parameters(spec.getP(), spec.getQ(), spec.getA())); -+ // -+ // engine.init(param); -+ // -+ // initialised = true; -+ // gost3410Params = gParams; -+ // } -+ // -+ // public void initialize( -+ // AlgorithmParameterSpec params, -+ // SecureRandom random) -+ // throws InvalidAlgorithmParameterException -+ // { -+ // if (!(params instanceof GOST3410ParameterSpec)) -+ // { -+ // throw new InvalidAlgorithmParameterException("parameter object not a GOST3410ParameterSpec"); -+ // } -+ // -+ // init((GOST3410ParameterSpec)params, random); -+ // } -+ // -+ // public KeyPair generateKeyPair() -+ // { -+ // if (!initialised) -+ // { -+ // init(new GOST3410ParameterSpec(CryptoProObjectIdentifiers.gostR3410_94_CryptoPro_A.getId()), new SecureRandom()); -+ // } -+ // -+ // AsymmetricCipherKeyPair pair = engine.generateKeyPair(); -+ // GOST3410PublicKeyParameters pub = (GOST3410PublicKeyParameters)pair.getPublic(); -+ // GOST3410PrivateKeyParameters priv = (GOST3410PrivateKeyParameters)pair.getPrivate(); -+ // -+ // return new KeyPair(new JDKGOST3410PublicKey(pub, gost3410Params), new JDKGOST3410PrivateKey(priv, gost3410Params)); -+ // } -+ // } -+ // END android-removed - } -diff -Naur bcprov-jdk16-146.orig/org/bouncycastle/jce/provider/JDKKeyStore.java bcprov-jdk16-146/org/bouncycastle/jce/provider/JDKKeyStore.java ---- bcprov-jdk16-146.orig/org/bouncycastle/jce/provider/JDKKeyStore.java 2011-02-23 20:08:56.000000000 +0000 -+++ bcprov-jdk16-146/org/bouncycastle/jce/provider/JDKKeyStore.java 2012-07-27 18:48:00.031478939 +0000 +diff -Naur bcprov-jdk15on-147.orig/org/bouncycastle/jce/provider/JDKKeyStore.java bcprov-jdk15on-147/org/bouncycastle/jce/provider/JDKKeyStore.java +--- bcprov-jdk15on-147.orig/org/bouncycastle/jce/provider/JDKKeyStore.java 2012-03-22 15:11:48.000000000 +0000 ++++ bcprov-jdk15on-147/org/bouncycastle/jce/provider/JDKKeyStore.java 2012-09-11 00:12:44.000000000 +0000 @@ -39,7 +39,12 @@ import org.bouncycastle.crypto.CipherParameters; import org.bouncycastle.crypto.Digest; @@ -8083,15 +8916,7 @@ diff -Naur bcprov-jdk16-146.orig/org/bouncycastle/jce/provider/JDKKeyStore.java import org.bouncycastle.crypto.generators.PKCS12ParametersGenerator; import org.bouncycastle.crypto.io.DigestInputStream; import org.bouncycastle.crypto.io.DigestOutputStream; -@@ -442,6 +447,7 @@ - } - catch (Exception e) - { -+ - throw new IOException("Exception creating key: " + e.toString()); - } - } -@@ -497,7 +503,13 @@ +@@ -498,7 +503,13 @@ if (entry == null) { @@ -8106,7 +8931,7 @@ diff -Naur bcprov-jdk16-146.orig/org/bouncycastle/jce/provider/JDKKeyStore.java } table.remove(alias); -@@ -810,12 +822,16 @@ +@@ -817,12 +828,16 @@ // // we only do an integrity check if the password is provided. // @@ -8123,23 +8948,23 @@ diff -Naur bcprov-jdk16-146.orig/org/bouncycastle/jce/provider/JDKKeyStore.java + PBEParametersGenerator pbeGen = new PKCS12ParametersGenerator(new OpenSSLDigest.SHA1()); + // END android-changed pbeGen.init(passKey, salt, iterationCount); - CipherParameters macParams = pbeGen.generateDerivedMacParameters(hMac.getMacSize()); - Arrays.fill(passKey, (byte)0); -@@ -866,9 +882,11 @@ + + CipherParameters macParams; +@@ -884,9 +899,11 @@ dOut.write(salt); dOut.writeInt(iterationCount); - HMac hMac = new HMac(new SHA1Digest()); + // BEGIN android-changed + HMac hMac = new HMac(new OpenSSLDigest.SHA1()); - MacOutputStream mOut = new MacOutputStream(dOut, hMac); + MacOutputStream mOut = new MacOutputStream(hMac); - PBEParametersGenerator pbeGen = new PKCS12ParametersGenerator(new SHA1Digest()); + PBEParametersGenerator pbeGen = new PKCS12ParametersGenerator(new OpenSSLDigest.SHA1()); + // END android-changed byte[] passKey = PBEParametersGenerator.PKCS12PasswordToBytes(password); pbeGen.init(passKey, salt, iterationCount); -@@ -956,7 +974,9 @@ +@@ -974,7 +991,9 @@ Cipher cipher = this.makePBECipher(cipherAlg, Cipher.DECRYPT_MODE, password, salt, iterationCount); CipherInputStream cIn = new CipherInputStream(dIn, cipher); @@ -8150,476 +8975,21 @@ diff -Naur bcprov-jdk16-146.orig/org/bouncycastle/jce/provider/JDKKeyStore.java DigestInputStream dgIn = new DigestInputStream(cIn, dig); this.loadStore(dgIn); -@@ -996,8 +1016,9 @@ +@@ -1013,7 +1032,9 @@ cipher = this.makePBECipher(STORE_CIPHER, Cipher.ENCRYPT_MODE, password, salt, iterationCount); CipherOutputStream cOut = new CipherOutputStream(dOut, cipher); -- DigestOutputStream dgOut = new DigestOutputStream(cOut, new SHA1Digest()); -- +- DigestOutputStream dgOut = new DigestOutputStream(new SHA1Digest()); + // BEGIN android-changed -+ DigestOutputStream dgOut = new DigestOutputStream(cOut, new OpenSSLDigest.SHA1()); ++ DigestOutputStream dgOut = new DigestOutputStream(new OpenSSLDigest.SHA1()); + // END android-changed - this.saveStore(dgOut); - Digest dig = dgOut.getDigest(); -@@ -1009,5 +1030,5 @@ + this.saveStore(new TeeOutputStream(cOut, dgOut)); - cOut.close(); - } -- } -+ } - } -diff -Naur bcprov-jdk16-146.orig/org/bouncycastle/jce/provider/JDKMessageDigest.java bcprov-jdk16-146/org/bouncycastle/jce/provider/JDKMessageDigest.java ---- bcprov-jdk16-146.orig/org/bouncycastle/jce/provider/JDKMessageDigest.java 2011-02-23 20:08:56.000000000 +0000 -+++ bcprov-jdk16-146/org/bouncycastle/jce/provider/JDKMessageDigest.java 2012-07-27 18:48:00.031478939 +0000 -@@ -57,36 +57,38 @@ - { - super(new SHA1Digest()); - } -- -+ - public Object clone() - throws CloneNotSupportedException - { - SHA1 d = (SHA1)super.clone(); - d.digest = new SHA1Digest((SHA1Digest)digest); -- -- return d; -- } -- } -- -- static public class SHA224 -- extends JDKMessageDigest -- implements Cloneable -- { -- public SHA224() -- { -- super(new SHA224Digest()); -- } -- -- public Object clone() -- throws CloneNotSupportedException -- { -- SHA224 d = (SHA224)super.clone(); -- d.digest = new SHA224Digest((SHA224Digest)digest); -- -+ - return d; - } - } -- -+ -+ // BEGIN android-removed -+ // static public class SHA224 -+ // extends JDKMessageDigest -+ // implements Cloneable -+ // { -+ // public SHA224() -+ // { -+ // super(new SHA224Digest()); -+ // } -+ // -+ // public Object clone() -+ // throws CloneNotSupportedException -+ // { -+ // SHA224 d = (SHA224)super.clone(); -+ // d.digest = new SHA224Digest((SHA224Digest)digest); -+ // -+ // return d; -+ // } -+ // } -+ // END android-removed -+ - static public class SHA256 - extends JDKMessageDigest - implements Cloneable -@@ -95,13 +97,13 @@ - { - super(new SHA256Digest()); - } -- -+ - public Object clone() - throws CloneNotSupportedException - { - SHA256 d = (SHA256)super.clone(); - d.digest = new SHA256Digest((SHA256Digest)digest); -- -+ - return d; - } - } -@@ -144,43 +146,45 @@ - } - } - -- static public class MD2 -- extends JDKMessageDigest -- implements Cloneable -- { -- public MD2() -- { -- super(new MD2Digest()); -- } -- -- public Object clone() -- throws CloneNotSupportedException -- { -- MD2 d = (MD2)super.clone(); -- d.digest = new MD2Digest((MD2Digest)digest); -- -- return d; -- } -- } -- -- static public class MD4 -- extends JDKMessageDigest -- implements Cloneable -- { -- public MD4() -- { -- super(new MD4Digest()); -- } -- -- public Object clone() -- throws CloneNotSupportedException -- { -- MD4 d = (MD4)super.clone(); -- d.digest = new MD4Digest((MD4Digest)digest); -- -- return d; -- } -- } -+ // BEGIN android-removed -+ // static public class MD2 -+ // extends JDKMessageDigest -+ // implements Cloneable -+ // { -+ // public MD2() -+ // { -+ // super(new MD2Digest()); -+ // } -+ // -+ // public Object clone() -+ // throws CloneNotSupportedException -+ // { -+ // MD2 d = (MD2)super.clone(); -+ // d.digest = new MD2Digest((MD2Digest)digest); -+ // -+ // return d; -+ // } -+ // } -+ // -+ // static public class MD4 -+ // extends JDKMessageDigest -+ // implements Cloneable -+ // { -+ // public MD4() -+ // { -+ // super(new MD4Digest()); -+ // } -+ // -+ // public Object clone() -+ // throws CloneNotSupportedException -+ // { -+ // MD4 d = (MD4)super.clone(); -+ // d.digest = new MD4Digest((MD4Digest)digest); -+ // -+ // return d; -+ // } -+ // } -+ // END android-removed - - static public class MD5 - extends JDKMessageDigest -@@ -190,147 +194,149 @@ - { - super(new MD5Digest()); - } -- -+ - public Object clone() - throws CloneNotSupportedException - { - MD5 d = (MD5)super.clone(); - d.digest = new MD5Digest((MD5Digest)digest); -- -- return d; -- } -- } -- -- static public class RIPEMD128 -- extends JDKMessageDigest -- implements Cloneable -- { -- public RIPEMD128() -- { -- super(new RIPEMD128Digest()); -- } -- -- public Object clone() -- throws CloneNotSupportedException -- { -- RIPEMD128 d = (RIPEMD128)super.clone(); -- d.digest = new RIPEMD128Digest((RIPEMD128Digest)digest); -- -+ - return d; - } - } - -- static public class RIPEMD160 -- extends JDKMessageDigest -- implements Cloneable -- { -- public RIPEMD160() -- { -- super(new RIPEMD160Digest()); -- } -- -- public Object clone() -- throws CloneNotSupportedException -- { -- RIPEMD160 d = (RIPEMD160)super.clone(); -- d.digest = new RIPEMD160Digest((RIPEMD160Digest)digest); -- -- return d; -- } -- } -- -- static public class RIPEMD256 -- extends JDKMessageDigest -- implements Cloneable -- { -- public RIPEMD256() -- { -- super(new RIPEMD256Digest()); -- } -- -- public Object clone() -- throws CloneNotSupportedException -- { -- RIPEMD256 d = (RIPEMD256)super.clone(); -- d.digest = new RIPEMD256Digest((RIPEMD256Digest)digest); -- -- return d; -- } -- } -- -- static public class RIPEMD320 -- extends JDKMessageDigest -- implements Cloneable -- { -- public RIPEMD320() -- { -- super(new RIPEMD320Digest()); -- } -- -- public Object clone() -- throws CloneNotSupportedException -- { -- RIPEMD320 d = (RIPEMD320)super.clone(); -- d.digest = new RIPEMD320Digest((RIPEMD320Digest)digest); -- -- return d; -- } -- } -- -- static public class Tiger -- extends JDKMessageDigest -- implements Cloneable -- { -- public Tiger() -- { -- super(new TigerDigest()); -- } -- -- public Object clone() -- throws CloneNotSupportedException -- { -- Tiger d = (Tiger)super.clone(); -- d.digest = new TigerDigest((TigerDigest)digest); -- -- return d; -- } -- } -- -- static public class GOST3411 -- extends JDKMessageDigest -- implements Cloneable -- { -- public GOST3411() -- { -- super(new GOST3411Digest()); -- } -- -- public Object clone() -- throws CloneNotSupportedException -- { -- GOST3411 d = (GOST3411)super.clone(); -- d.digest = new GOST3411Digest((GOST3411Digest)digest); -- -- return d; -- } -- } -- -- static public class Whirlpool -- extends JDKMessageDigest -- implements Cloneable -- { -- public Whirlpool() -- { -- super(new WhirlpoolDigest()); -- } -- -- public Object clone() -- throws CloneNotSupportedException -- { -- Whirlpool d = (Whirlpool)super.clone(); -- d.digest = new WhirlpoolDigest((WhirlpoolDigest)digest); -- -- return d; -- } -- } -+ // BEGIN android-removed -+ // static public class RIPEMD128 -+ // extends JDKMessageDigest -+ // implements Cloneable -+ // { -+ // public RIPEMD128() -+ // { -+ // super(new RIPEMD128Digest()); -+ // } -+ // -+ // public Object clone() -+ // throws CloneNotSupportedException -+ // { -+ // RIPEMD128 d = (RIPEMD128)super.clone(); -+ // d.digest = new RIPEMD128Digest((RIPEMD128Digest)digest); -+ // -+ // return d; -+ // } -+ // } -+ // -+ // static public class RIPEMD160 -+ // extends JDKMessageDigest -+ // implements Cloneable -+ // { -+ // public RIPEMD160() -+ // { -+ // super(new RIPEMD160Digest()); -+ // } -+ // -+ // public Object clone() -+ // throws CloneNotSupportedException -+ // { -+ // RIPEMD160 d = (RIPEMD160)super.clone(); -+ // d.digest = new RIPEMD160Digest((RIPEMD160Digest)digest); -+ // -+ // return d; -+ // } -+ // } -+ // -+ // static public class RIPEMD256 -+ // extends JDKMessageDigest -+ // implements Cloneable -+ // { -+ // public RIPEMD256() -+ // { -+ // super(new RIPEMD256Digest()); -+ // } -+ // -+ // public Object clone() -+ // throws CloneNotSupportedException -+ // { -+ // RIPEMD256 d = (RIPEMD256)super.clone(); -+ // d.digest = new RIPEMD256Digest((RIPEMD256Digest)digest); -+ // -+ // return d; -+ // } -+ // } -+ // -+ // static public class RIPEMD320 -+ // extends JDKMessageDigest -+ // implements Cloneable -+ // { -+ // public RIPEMD320() -+ // { -+ // super(new RIPEMD320Digest()); -+ // } -+ // -+ // public Object clone() -+ // throws CloneNotSupportedException -+ // { -+ // RIPEMD320 d = (RIPEMD320)super.clone(); -+ // d.digest = new RIPEMD320Digest((RIPEMD320Digest)digest); -+ // -+ // return d; -+ // } -+ // } -+ // -+ // static public class Tiger -+ // extends JDKMessageDigest -+ // implements Cloneable -+ // { -+ // public Tiger() -+ // { -+ // super(new TigerDigest()); -+ // } -+ // -+ // public Object clone() -+ // throws CloneNotSupportedException -+ // { -+ // Tiger d = (Tiger)super.clone(); -+ // d.digest = new TigerDigest((TigerDigest)digest); -+ // -+ // return d; -+ // } -+ // } -+ // -+ // static public class GOST3411 -+ // extends JDKMessageDigest -+ // implements Cloneable -+ // { -+ // public GOST3411() -+ // { -+ // super(new GOST3411Digest()); -+ // } -+ // -+ // public Object clone() -+ // throws CloneNotSupportedException -+ // { -+ // GOST3411 d = (GOST3411)super.clone(); -+ // d.digest = new GOST3411Digest((GOST3411Digest)digest); -+ // -+ // return d; -+ // } -+ // } -+ // -+ // static public class Whirlpool -+ // extends JDKMessageDigest -+ // implements Cloneable -+ // { -+ // public Whirlpool() -+ // { -+ // super(new WhirlpoolDigest()); -+ // } -+ // -+ // public Object clone() -+ // throws CloneNotSupportedException -+ // { -+ // Whirlpool d = (Whirlpool)super.clone(); -+ // d.digest = new WhirlpoolDigest((WhirlpoolDigest)digest); -+ // -+ // return d; -+ // } -+ // } -+ // END android-removed - } -diff -Naur bcprov-jdk16-146.orig/org/bouncycastle/jce/provider/JDKPKCS12KeyStore.java bcprov-jdk16-146/org/bouncycastle/jce/provider/JDKPKCS12KeyStore.java ---- bcprov-jdk16-146.orig/org/bouncycastle/jce/provider/JDKPKCS12KeyStore.java 2011-02-23 20:08:56.000000000 +0000 -+++ bcprov-jdk16-146/org/bouncycastle/jce/provider/JDKPKCS12KeyStore.java 2012-07-27 18:48:00.031478939 +0000 -@@ -260,10 +260,13 @@ +diff -Naur bcprov-jdk15on-147.orig/org/bouncycastle/jce/provider/JDKPKCS12KeyStore.java bcprov-jdk15on-147/org/bouncycastle/jce/provider/JDKPKCS12KeyStore.java +--- bcprov-jdk15on-147.orig/org/bouncycastle/jce/provider/JDKPKCS12KeyStore.java 2012-03-22 15:11:48.000000000 +0000 ++++ bcprov-jdk15on-147/org/bouncycastle/jce/provider/JDKPKCS12KeyStore.java 2012-09-11 00:12:44.000000000 +0000 +@@ -261,10 +261,13 @@ } } @@ -8637,7 +9007,7 @@ diff -Naur bcprov-jdk16-146.orig/org/bouncycastle/jce/provider/JDKPKCS12KeyStore } /** -@@ -438,6 +441,14 @@ +@@ -439,6 +442,14 @@ public Date engineGetCreationDate(String alias) { @@ -8652,7 +9022,7 @@ diff -Naur bcprov-jdk16-146.orig/org/bouncycastle/jce/provider/JDKPKCS12KeyStore return new Date(); } -@@ -496,6 +507,11 @@ +@@ -497,6 +508,11 @@ Certificate[] chain) throws KeyStoreException { @@ -8664,7 +9034,7 @@ diff -Naur bcprov-jdk16-146.orig/org/bouncycastle/jce/provider/JDKPKCS12KeyStore if ((key instanceof PrivateKey) && (chain == null)) { throw new KeyStoreException("no certificate chain for private key"); -@@ -507,12 +523,18 @@ +@@ -508,12 +524,18 @@ } keys.put(alias, key); @@ -8683,7 +9053,7 @@ diff -Naur bcprov-jdk16-146.orig/org/bouncycastle/jce/provider/JDKPKCS12KeyStore } public int engineSize() -@@ -1488,7 +1510,9 @@ +@@ -1489,7 +1511,9 @@ { byte[] res = calculatePbeMac(id_SHA1, mSalt, itCount, password, false, data); @@ -8694,7 +9064,7 @@ diff -Naur bcprov-jdk16-146.orig/org/bouncycastle/jce/provider/JDKPKCS12KeyStore DigestInfo dInfo = new DigestInfo(algId, res); mData = new MacData(dInfo, mSalt, itCount); -@@ -1545,32 +1569,34 @@ +@@ -1546,32 +1570,34 @@ } } @@ -8712,7 +9082,7 @@ diff -Naur bcprov-jdk16-146.orig/org/bouncycastle/jce/provider/JDKPKCS12KeyStore - { - public DefPKCS12KeyStore() - { -- super(null, pbeWithSHAAnd3_KeyTripleDES_CBC, pbewithSHAAnd40BitRC2_CBC); +- super(null, pbeWithSHAAnd3_KeyTripleDES_CBC, pbeWithSHAAnd40BitRC2_CBC); - } - } - @@ -8739,7 +9109,7 @@ diff -Naur bcprov-jdk16-146.orig/org/bouncycastle/jce/provider/JDKPKCS12KeyStore + // { + // public DefPKCS12KeyStore() + // { -+ // super(null, pbeWithSHAAnd3_KeyTripleDES_CBC, pbewithSHAAnd40BitRC2_CBC); ++ // super(null, pbeWithSHAAnd3_KeyTripleDES_CBC, pbeWithSHAAnd40BitRC2_CBC); + // } + // } + // @@ -8755,16 +9125,18 @@ diff -Naur bcprov-jdk16-146.orig/org/bouncycastle/jce/provider/JDKPKCS12KeyStore private static class IgnoresCaseHashtable { -@@ -1579,7 +1605,7 @@ +@@ -1580,7 +1606,9 @@ public void put(String key, Object value) { - String lower = Strings.toLowerCase(key); ++ // BEGIN android-changed + String lower = (key == null) ? null : Strings.toLowerCase(key); ++ // END android-changed String k = (String)keys.get(lower); if (k != null) { -@@ -1597,7 +1623,9 @@ +@@ -1598,7 +1626,9 @@ public Object remove(String alias) { @@ -8775,7 +9147,7 @@ diff -Naur bcprov-jdk16-146.orig/org/bouncycastle/jce/provider/JDKPKCS12KeyStore if (k == null) { return null; -@@ -1608,7 +1636,9 @@ +@@ -1609,7 +1639,9 @@ public Object get(String alias) { @@ -8786,149 +9158,9 @@ diff -Naur bcprov-jdk16-146.orig/org/bouncycastle/jce/provider/JDKPKCS12KeyStore if (k == null) { return null; -diff -Naur bcprov-jdk16-146.orig/org/bouncycastle/jce/provider/PBE.java bcprov-jdk16-146/org/bouncycastle/jce/provider/PBE.java ---- bcprov-jdk16-146.orig/org/bouncycastle/jce/provider/PBE.java 2011-02-23 20:08:56.000000000 +0000 -+++ bcprov-jdk16-146/org/bouncycastle/jce/provider/PBE.java 2012-07-27 18:48:00.031478939 +0000 -@@ -7,12 +7,18 @@ - - import org.bouncycastle.crypto.CipherParameters; - import org.bouncycastle.crypto.PBEParametersGenerator; --import org.bouncycastle.crypto.digests.MD2Digest; -+// BEGIN android-removed -+// import org.bouncycastle.crypto.digests.MD2Digest; -+// END android-removed - import org.bouncycastle.crypto.digests.MD5Digest; --import org.bouncycastle.crypto.digests.RIPEMD160Digest; -+// BEGIN android-removed -+// import org.bouncycastle.crypto.digests.RIPEMD160Digest; -+// END android-removed - import org.bouncycastle.crypto.digests.SHA1Digest; - import org.bouncycastle.crypto.digests.SHA256Digest; --import org.bouncycastle.crypto.digests.TigerDigest; -+// BEGIN android-removed -+// import org.bouncycastle.crypto.digests.TigerDigest; -+// END android-removed - import org.bouncycastle.crypto.generators.OpenSSLPBEParametersGenerator; - import org.bouncycastle.crypto.generators.PKCS12ParametersGenerator; - import org.bouncycastle.crypto.generators.PKCS5S1ParametersGenerator; -@@ -53,9 +59,11 @@ - { - switch (hash) - { -- case MD2: -- generator = new PKCS5S1ParametersGenerator(new MD2Digest()); -- break; -+ // BEGIN android-removed -+ // case MD2: -+ // generator = new PKCS5S1ParametersGenerator(new MD2Digest()); -+ // break; -+ // END android-removed - case MD5: - generator = new PKCS5S1ParametersGenerator(new MD5Digest()); - break; -@@ -74,21 +82,25 @@ - { - switch (hash) - { -- case MD2: -- generator = new PKCS12ParametersGenerator(new MD2Digest()); -- break; -+ // BEGIN android-removed -+ // case MD2: -+ // generator = new PKCS12ParametersGenerator(new MD2Digest()); -+ // break; -+ // END android-removed - case MD5: - generator = new PKCS12ParametersGenerator(new MD5Digest()); - break; - case SHA1: - generator = new PKCS12ParametersGenerator(new SHA1Digest()); - break; -- case RIPEMD160: -- generator = new PKCS12ParametersGenerator(new RIPEMD160Digest()); -- break; -- case TIGER: -- generator = new PKCS12ParametersGenerator(new TigerDigest()); -- break; -+ // BEGIN android-removed -+ // case RIPEMD160: -+ // generator = new PKCS12ParametersGenerator(new RIPEMD160Digest()); -+ // break; -+ // case TIGER: -+ // generator = new PKCS12ParametersGenerator(new TigerDigest()); -+ // break; -+ // END android-removed - case SHA256: - generator = new PKCS12ParametersGenerator(new SHA256Digest()); - break; -diff -Naur bcprov-jdk16-146.orig/org/bouncycastle/jce/provider/PKIXCertPath.java bcprov-jdk16-146/org/bouncycastle/jce/provider/PKIXCertPath.java ---- bcprov-jdk16-146.orig/org/bouncycastle/jce/provider/PKIXCertPath.java 2011-02-23 20:08:56.000000000 +0000 -+++ bcprov-jdk16-146/org/bouncycastle/jce/provider/PKIXCertPath.java 2012-07-27 18:48:00.041479127 +0000 -@@ -33,7 +33,9 @@ - import org.bouncycastle.asn1.pkcs.ContentInfo; - import org.bouncycastle.asn1.pkcs.PKCSObjectIdentifiers; - import org.bouncycastle.asn1.pkcs.SignedData; --import org.bouncycastle.openssl.PEMWriter; -+// BEGIN android-removed -+// import org.bouncycastle.openssl.PEMWriter; -+// END android-removed - - /** - * CertPath implementation for X.509 certificates. -@@ -295,27 +297,29 @@ - return toDEREncoded(new ContentInfo( - PKCSObjectIdentifiers.signedData, sd)); - } -- else if (encoding.equalsIgnoreCase("PEM")) -- { -- ByteArrayOutputStream bOut = new ByteArrayOutputStream(); -- PEMWriter pWrt = new PEMWriter(new OutputStreamWriter(bOut)); -- -- try -- { -- for (int i = 0; i != certificates.size(); i++) -- { -- pWrt.writeObject(certificates.get(i)); -- } -- -- pWrt.close(); -- } -- catch (Exception e) -- { -- throw new CertificateEncodingException("can't encode certificate for PEM encoded path"); -- } -- -- return bOut.toByteArray(); -- } -+ // BEGIN android-removed -+ // else if (encoding.equalsIgnoreCase("PEM")) -+ // { -+ // ByteArrayOutputStream bOut = new ByteArrayOutputStream(); -+ // PEMWriter pWrt = new PEMWriter(new OutputStreamWriter(bOut)); -+ // -+ // try -+ // { -+ // for (int i = 0; i != certificates.size(); i++) -+ // { -+ // pWrt.writeObject(certificates.get(i)); -+ // } -+ // -+ // pWrt.close(); -+ // } -+ // catch (Exception e) -+ // { -+ // throw new CertificateEncodingException("can't encode certificate for PEM encoded path"); -+ // } -+ // -+ // return bOut.toByteArray(); -+ // } -+ // END android-removed - else - { - throw new CertificateEncodingException("unsupported encoding: " + encoding); -diff -Naur bcprov-jdk16-146.orig/org/bouncycastle/jce/provider/PKIXCertPathValidatorSpi.java bcprov-jdk16-146/org/bouncycastle/jce/provider/PKIXCertPathValidatorSpi.java ---- bcprov-jdk16-146.orig/org/bouncycastle/jce/provider/PKIXCertPathValidatorSpi.java 2011-02-23 20:08:56.000000000 +0000 -+++ bcprov-jdk16-146/org/bouncycastle/jce/provider/PKIXCertPathValidatorSpi.java 2012-07-27 18:48:00.031478939 +0000 +diff -Naur bcprov-jdk15on-147.orig/org/bouncycastle/jce/provider/PKIXCertPathValidatorSpi.java bcprov-jdk15on-147/org/bouncycastle/jce/provider/PKIXCertPathValidatorSpi.java +--- bcprov-jdk15on-147.orig/org/bouncycastle/jce/provider/PKIXCertPathValidatorSpi.java 2012-03-22 15:11:48.000000000 +0000 ++++ bcprov-jdk15on-147/org/bouncycastle/jce/provider/PKIXCertPathValidatorSpi.java 2012-09-11 00:12:44.000000000 +0000 @@ -1,5 +1,8 @@ package org.bouncycastle.jce.provider; @@ -8938,15 +9170,7 @@ diff -Naur bcprov-jdk16-146.orig/org/bouncycastle/jce/provider/PKIXCertPathValid import java.security.InvalidAlgorithmParameterException; import java.security.PublicKey; import java.security.cert.CertPath; -@@ -13,6 +16,7 @@ - import java.security.cert.TrustAnchor; - import java.security.cert.X509Certificate; - import java.util.ArrayList; -+import java.util.Arrays; - import java.util.HashSet; - import java.util.Iterator; - import java.util.List; -@@ -33,6 +37,9 @@ +@@ -33,6 +36,9 @@ public class PKIXCertPathValidatorSpi extends CertPathValidatorSpi { @@ -8956,7 +9180,7 @@ diff -Naur bcprov-jdk16-146.orig/org/bouncycastle/jce/provider/PKIXCertPathValid public CertPathValidatorResult engineValidate( CertPath certPath, -@@ -75,6 +82,22 @@ +@@ -75,6 +81,22 @@ { throw new CertPathValidatorException("Certification path is empty.", null, certPath, 0); } @@ -8979,7 +9203,7 @@ diff -Naur bcprov-jdk16-146.orig/org/bouncycastle/jce/provider/PKIXCertPathValid // // (b) -@@ -251,6 +274,15 @@ +@@ -251,6 +273,15 @@ for (index = certs.size() - 1; index >= 0; index--) { @@ -8995,9 +9219,9 @@ diff -Naur bcprov-jdk16-146.orig/org/bouncycastle/jce/provider/PKIXCertPathValid // try // { // -diff -Naur bcprov-jdk16-146.orig/org/bouncycastle/jce/provider/PKIXNameConstraintValidator.java bcprov-jdk16-146/org/bouncycastle/jce/provider/PKIXNameConstraintValidator.java ---- bcprov-jdk16-146.orig/org/bouncycastle/jce/provider/PKIXNameConstraintValidator.java 2011-02-23 20:08:56.000000000 +0000 -+++ bcprov-jdk16-146/org/bouncycastle/jce/provider/PKIXNameConstraintValidator.java 2012-07-27 18:48:00.031478939 +0000 +diff -Naur bcprov-jdk15on-147.orig/org/bouncycastle/jce/provider/PKIXNameConstraintValidator.java bcprov-jdk15on-147/org/bouncycastle/jce/provider/PKIXNameConstraintValidator.java +--- bcprov-jdk15on-147.orig/org/bouncycastle/jce/provider/PKIXNameConstraintValidator.java 2012-03-22 15:11:48.000000000 +0000 ++++ bcprov-jdk15on-147/org/bouncycastle/jce/provider/PKIXNameConstraintValidator.java 2012-09-11 00:12:44.000000000 +0000 @@ -1533,7 +1533,9 @@ for (Enumeration e = permitted.getObjects(); e.hasMoreElements();) { @@ -9009,143 +9233,11 @@ diff -Naur bcprov-jdk16-146.orig/org/bouncycastle/jce/provider/PKIXNameConstrain if (subtreesMap.get(tagNo) == null) { subtreesMap.put(tagNo, new HashSet()); -diff -Naur bcprov-jdk16-146.orig/org/bouncycastle/jce/provider/WrapCipherSpi.java bcprov-jdk16-146/org/bouncycastle/jce/provider/WrapCipherSpi.java ---- bcprov-jdk16-146.orig/org/bouncycastle/jce/provider/WrapCipherSpi.java 2011-02-23 20:08:56.000000000 +0000 -+++ bcprov-jdk16-146/org/bouncycastle/jce/provider/WrapCipherSpi.java 2012-07-27 18:48:00.031478939 +0000 -@@ -22,8 +22,10 @@ - import javax.crypto.ShortBufferException; - import javax.crypto.spec.IvParameterSpec; - import javax.crypto.spec.PBEParameterSpec; --import javax.crypto.spec.RC2ParameterSpec; --import javax.crypto.spec.RC5ParameterSpec; -+// BEGIN android-removed -+// import javax.crypto.spec.RC2ParameterSpec; -+// import javax.crypto.spec.RC5ParameterSpec; -+// END android-removed - import javax.crypto.spec.SecretKeySpec; - - import org.bouncycastle.asn1.ASN1InputStream; -@@ -36,7 +38,9 @@ - import org.bouncycastle.crypto.CipherParameters; - import org.bouncycastle.crypto.InvalidCipherTextException; - import org.bouncycastle.crypto.Wrapper; --import org.bouncycastle.crypto.engines.RC2WrapEngine; -+// BEGIN android-removed -+// import org.bouncycastle.crypto.engines.RC2WrapEngine; -+// END android-removed - import org.bouncycastle.crypto.params.KeyParameter; - import org.bouncycastle.crypto.params.ParametersWithIV; - -@@ -50,8 +54,10 @@ - { - IvParameterSpec.class, - PBEParameterSpec.class, -- RC2ParameterSpec.class, -- RC5ParameterSpec.class -+ // BEGIN android-removed -+ // RC2ParameterSpec.class, -+ // RC5ParameterSpec.class -+ // END android-removed - }; - - protected int pbeType = PKCS12; -@@ -263,16 +269,19 @@ - return null; - } - -+ // BEGIN android-changed -+ // added ShortBufferException to throws statement - protected int engineDoFinal( - byte[] input, - int inputOffset, - int inputLen, - byte[] output, - int outputOffset) -- throws IllegalBlockSizeException, BadPaddingException -+ throws IllegalBlockSizeException, BadPaddingException, ShortBufferException - { - return 0; - } -+ // END android-changed - - protected byte[] engineWrap( - Key key) -@@ -305,7 +314,12 @@ - byte[] wrappedKey, - String wrappedKeyAlgorithm, - int wrappedKeyType) -- throws InvalidKeyException -+ // BEGIN android-removed -+ // throws InvalidKeyException -+ // END android-removed -+ // BEGIN android-added -+ throws InvalidKeyException, NoSuchAlgorithmException -+ // END android-added - { - byte[] encoded; - try -@@ -356,10 +370,12 @@ - { - privKey = new JCEECPrivateKey(in); - } -- else if (oid.equals(CryptoProObjectIdentifiers.gostR3410_94)) -- { -- privKey = new JDKGOST3410PrivateKey(in); -- } -+ // BEGIN android-removed -+ // else if (oid.equals(CryptoProObjectIdentifiers.gostR3410_94)) -+ // { -+ // privKey = new JDKGOST3410PrivateKey(in); -+ // } -+ // END android-removed - else if (oid.equals(X9ObjectIdentifiers.id_dsa)) - { - privKey = new JDKDSAPrivateKey(in); -@@ -403,10 +419,12 @@ - { - throw new InvalidKeyException("Unknown key type " + e.getMessage()); - } -- catch (NoSuchAlgorithmException e) -- { -- throw new InvalidKeyException("Unknown key type " + e.getMessage()); -- } -+ // BEGIN android-removed -+ // catch (NoSuchAlgorithmException e) -+ // { -+ // throw new InvalidKeyException("Unknown key type " + e.getMessage()); -+ // } -+ // END android-removed - catch (InvalidKeySpecException e2) - { - throw new InvalidKeyException("Unknown key type " + e2.getMessage()); -@@ -420,12 +438,14 @@ - // classes that inherit directly from us - // - -- public static class RC2Wrap -- extends WrapCipherSpi -- { -- public RC2Wrap() -- { -- super(new RC2WrapEngine()); -- } -- } -+ // BEGIN android-removed -+ // public static class RC2Wrap -+ // extends WrapCipherSpi -+ // { -+ // public RC2Wrap() -+ // { -+ // super(new RC2WrapEngine()); -+ // } -+ // } -+ // END android-removed - } -diff -Naur bcprov-jdk16-146.orig/org/bouncycastle/jce/provider/X509CertificateObject.java bcprov-jdk16-146/org/bouncycastle/jce/provider/X509CertificateObject.java ---- bcprov-jdk16-146.orig/org/bouncycastle/jce/provider/X509CertificateObject.java 2011-02-23 20:08:56.000000000 +0000 -+++ bcprov-jdk16-146/org/bouncycastle/jce/provider/X509CertificateObject.java 2012-07-27 18:48:00.031478939 +0000 -@@ -520,12 +520,20 @@ - return JDKKeyFactory.createPublicKeyFromPublicKeyInfo(c.getSubjectPublicKeyInfo()); +diff -Naur bcprov-jdk15on-147.orig/org/bouncycastle/jce/provider/X509CertificateObject.java bcprov-jdk15on-147/org/bouncycastle/jce/provider/X509CertificateObject.java +--- bcprov-jdk15on-147.orig/org/bouncycastle/jce/provider/X509CertificateObject.java 2012-03-22 15:11:48.000000000 +0000 ++++ bcprov-jdk15on-147/org/bouncycastle/jce/provider/X509CertificateObject.java 2012-09-11 00:12:44.000000000 +0000 +@@ -544,12 +544,20 @@ + } } + // BEGIN android-changed @@ -9156,28 +9248,19 @@ diff -Naur bcprov-jdk16-146.orig/org/bouncycastle/jce/provider/X509CertificateOb { try { -- return c.getEncoded(ASN1Encodable.DER); +- return c.getEncoded(ASN1Encoding.DER); + // BEGIN android-changed + if (encoded == null) { -+ encoded = c.getEncoded(ASN1Encodable.DER); ++ encoded = c.getEncoded(ASN1Encoding.DER); + } + return encoded; + // END android-changed } catch (IOException e) { -@@ -711,7 +719,7 @@ - { - Signature signature; - String sigName = X509SignatureUtil.getSignatureName(c.getSignatureAlgorithm()); -- -+ - try - { - signature = Signature.getInstance(sigName, BouncyCastleProvider.PROVIDER_NAME); -diff -Naur bcprov-jdk16-146.orig/org/bouncycastle/jce/provider/X509SignatureUtil.java bcprov-jdk16-146/org/bouncycastle/jce/provider/X509SignatureUtil.java ---- bcprov-jdk16-146.orig/org/bouncycastle/jce/provider/X509SignatureUtil.java 2011-02-23 20:08:56.000000000 +0000 -+++ bcprov-jdk16-146/org/bouncycastle/jce/provider/X509SignatureUtil.java 2012-07-27 18:48:00.031478939 +0000 +diff -Naur bcprov-jdk15on-147.orig/org/bouncycastle/jce/provider/X509SignatureUtil.java bcprov-jdk15on-147/org/bouncycastle/jce/provider/X509SignatureUtil.java +--- bcprov-jdk15on-147.orig/org/bouncycastle/jce/provider/X509SignatureUtil.java 2012-03-22 15:11:48.000000000 +0000 ++++ bcprov-jdk15on-147/org/bouncycastle/jce/provider/X509SignatureUtil.java 2012-09-11 00:12:44.000000000 +0000 @@ -25,7 +25,9 @@ class X509SignatureUtil @@ -9268,1564 +9351,21 @@ diff -Naur bcprov-jdk16-146.orig/org/bouncycastle/jce/provider/X509SignatureUtil else { return digestAlgOID.getId(); -diff -Naur bcprov-jdk16-146.orig/org/bouncycastle/jce/provider/asymmetric/EC.java bcprov-jdk16-146/org/bouncycastle/jce/provider/asymmetric/EC.java ---- bcprov-jdk16-146.orig/org/bouncycastle/jce/provider/asymmetric/EC.java 2011-02-23 20:08:56.000000000 +0000 -+++ bcprov-jdk16-146/org/bouncycastle/jce/provider/asymmetric/EC.java 2012-07-27 18:48:00.031478939 +0000 -@@ -4,8 +4,10 @@ - - import org.bouncycastle.asn1.DERObjectIdentifier; - import org.bouncycastle.asn1.cryptopro.CryptoProObjectIdentifiers; --import org.bouncycastle.asn1.eac.EACObjectIdentifiers; +diff -Naur bcprov-jdk15on-147.orig/org/bouncycastle/x509/X509Util.java bcprov-jdk15on-147/org/bouncycastle/x509/X509Util.java +--- bcprov-jdk15on-147.orig/org/bouncycastle/x509/X509Util.java 2012-03-22 15:11:48.000000000 +0000 ++++ bcprov-jdk15on-147/org/bouncycastle/x509/X509Util.java 2012-09-11 00:12:44.000000000 +0000 +@@ -30,7 +30,9 @@ + import org.bouncycastle.asn1.oiw.OIWObjectIdentifiers; + import org.bouncycastle.asn1.pkcs.PKCSObjectIdentifiers; + import org.bouncycastle.asn1.pkcs.RSASSAPSSparams; -import org.bouncycastle.asn1.teletrust.TeleTrusTObjectIdentifiers; +// BEGIN android-removed -+// import org.bouncycastle.asn1.eac.EACObjectIdentifiers; +// import org.bouncycastle.asn1.teletrust.TeleTrusTObjectIdentifiers; +// END android-removed + import org.bouncycastle.asn1.x509.AlgorithmIdentifier; import org.bouncycastle.asn1.x9.X9ObjectIdentifiers; - - public class EC -@@ -16,39 +18,49 @@ - public Mappings() - { - put("KeyAgreement.ECDH", "org.bouncycastle.jce.provider.asymmetric.ec.KeyAgreement$DH"); -- put("KeyAgreement.ECDHC", "org.bouncycastle.jce.provider.asymmetric.ec.KeyAgreement$DHC"); -- put("KeyAgreement.ECMQV", "org.bouncycastle.jce.provider.asymmetric.ec.KeyAgreement$MQV"); -- put("KeyAgreement." + X9ObjectIdentifiers.dhSinglePass_stdDH_sha1kdf_scheme, "org.bouncycastle.jce.provider.asymmetric.ec.KeyAgreement$DHwithSHA1KDF"); -- put("KeyAgreement." + X9ObjectIdentifiers.mqvSinglePass_sha1kdf_scheme, "org.bouncycastle.jce.provider.asymmetric.ec.KeyAgreement$MQVwithSHA1KDF"); -+ // BEGIN android-removed -+ // put("KeyAgreement.ECDHC", "org.bouncycastle.jce.provider.asymmetric.ec.KeyAgreement$DHC"); -+ // put("KeyAgreement.ECMQV", "org.bouncycastle.jce.provider.asymmetric.ec.KeyAgreement$MQV"); -+ // put("KeyAgreement." + X9ObjectIdentifiers.dhSinglePass_stdDH_sha1kdf_scheme, "org.bouncycastle.jce.provider.asymmetric.ec.KeyAgreement$DHwithSHA1KDF"); -+ // put("KeyAgreement." + X9ObjectIdentifiers.mqvSinglePass_sha1kdf_scheme, "org.bouncycastle.jce.provider.asymmetric.ec.KeyAgreement$MQVwithSHA1KDF"); -+ // END android-removed - - put("KeyFactory.EC", "org.bouncycastle.jce.provider.asymmetric.ec.KeyFactory$EC"); -- put("KeyFactory.ECDSA", "org.bouncycastle.jce.provider.asymmetric.ec.KeyFactory$ECDSA"); -- put("KeyFactory.ECDH", "org.bouncycastle.jce.provider.asymmetric.ec.KeyFactory$ECDH"); -- put("KeyFactory.ECDHC", "org.bouncycastle.jce.provider.asymmetric.ec.KeyFactory$ECDHC"); -- put("KeyFactory.ECMQV", "org.bouncycastle.jce.provider.asymmetric.ec.KeyFactory$ECMQV"); -+ // BEGIN android-removed -+ // put("KeyFactory.ECDSA", "org.bouncycastle.jce.provider.asymmetric.ec.KeyFactory$ECDSA"); -+ // put("KeyFactory.ECDH", "org.bouncycastle.jce.provider.asymmetric.ec.KeyFactory$ECDH"); -+ // put("KeyFactory.ECDHC", "org.bouncycastle.jce.provider.asymmetric.ec.KeyFactory$ECDHC"); -+ // put("KeyFactory.ECMQV", "org.bouncycastle.jce.provider.asymmetric.ec.KeyFactory$ECMQV"); -+ // END android-removed - put("Alg.Alias.KeyFactory." + X9ObjectIdentifiers.id_ecPublicKey, "EC"); - // TODO Should this be an alias for ECDH? - put("Alg.Alias.KeyFactory." + X9ObjectIdentifiers.dhSinglePass_stdDH_sha1kdf_scheme, "EC"); -- put("Alg.Alias.KeyFactory." + X9ObjectIdentifiers.mqvSinglePass_sha1kdf_scheme, "ECMQV"); -- -- put("KeyFactory.ECGOST3410", "org.bouncycastle.jce.provider.asymmetric.ec.KeyFactory$ECGOST3410"); -- put("Alg.Alias.KeyFactory.GOST-3410-2001", "ECGOST3410"); -- put("Alg.Alias.KeyFactory.ECGOST-3410", "ECGOST3410"); -- put("Alg.Alias.KeyFactory." + CryptoProObjectIdentifiers.gostR3410_2001, "ECGOST3410"); -+ // BEGIN android-removed -+ // put("Alg.Alias.KeyFactory." + X9ObjectIdentifiers.mqvSinglePass_sha1kdf_scheme, "ECMQV"); -+ // -+ // put("KeyFactory.ECGOST3410", "org.bouncycastle.jce.provider.asymmetric.ec.KeyFactory$ECGOST3410"); -+ // put("Alg.Alias.KeyFactory.GOST-3410-2001", "ECGOST3410"); -+ // put("Alg.Alias.KeyFactory.ECGOST-3410", "ECGOST3410"); -+ // put("Alg.Alias.KeyFactory." + CryptoProObjectIdentifiers.gostR3410_2001, "ECGOST3410"); -+ // END android-removed - - put("KeyPairGenerator.EC", "org.bouncycastle.jce.provider.asymmetric.ec.KeyPairGenerator$EC"); -- put("KeyPairGenerator.ECDSA", "org.bouncycastle.jce.provider.asymmetric.ec.KeyPairGenerator$ECDSA"); -- put("KeyPairGenerator.ECDH", "org.bouncycastle.jce.provider.asymmetric.ec.KeyPairGenerator$ECDH"); -- put("KeyPairGenerator.ECDHC", "org.bouncycastle.jce.provider.asymmetric.ec.KeyPairGenerator$ECDHC"); -- put("KeyPairGenerator.ECIES", "org.bouncycastle.jce.provider.asymmetric.ec.KeyPairGenerator$ECDH"); -- put("KeyPairGenerator.ECMQV", "org.bouncycastle.jce.provider.asymmetric.ec.KeyPairGenerator$ECMQV"); -+ // BEGIN android-removed -+ // put("KeyPairGenerator.ECDSA", "org.bouncycastle.jce.provider.asymmetric.ec.KeyPairGenerator$ECDSA"); -+ // put("KeyPairGenerator.ECDH", "org.bouncycastle.jce.provider.asymmetric.ec.KeyPairGenerator$ECDH"); -+ // put("KeyPairGenerator.ECDHC", "org.bouncycastle.jce.provider.asymmetric.ec.KeyPairGenerator$ECDHC"); -+ // put("KeyPairGenerator.ECIES", "org.bouncycastle.jce.provider.asymmetric.ec.KeyPairGenerator$ECDH"); -+ // put("KeyPairGenerator.ECMQV", "org.bouncycastle.jce.provider.asymmetric.ec.KeyPairGenerator$ECMQV"); -+ // END android-removed - // TODO Should this be an alias for ECDH? - put("Alg.Alias.KeyPairGenerator." + X9ObjectIdentifiers.dhSinglePass_stdDH_sha1kdf_scheme, "EC"); -- put("Alg.Alias.KeyPairGenerator." + X9ObjectIdentifiers.mqvSinglePass_sha1kdf_scheme, "ECMQV"); -- -- put("KeyPairGenerator.ECGOST3410", "org.bouncycastle.jce.provider.asymmetric.ec.KeyPairGenerator$ECGOST3410"); -- put("Alg.Alias.KeyPairGenerator.ECGOST-3410", "ECGOST3410"); -- put("Alg.Alias.KeyPairGenerator.GOST-3410-2001", "ECGOST3410"); -+ // BEGIN android-removed -+ // put("Alg.Alias.KeyPairGenerator." + X9ObjectIdentifiers.mqvSinglePass_sha1kdf_scheme, "ECMQV"); -+ // -+ // put("KeyPairGenerator.ECGOST3410", "org.bouncycastle.jce.provider.asymmetric.ec.KeyPairGenerator$ECGOST3410"); -+ // put("Alg.Alias.KeyPairGenerator.ECGOST-3410", "ECGOST3410"); -+ // put("Alg.Alias.KeyPairGenerator.GOST-3410-2001", "ECGOST3410"); -+ // END android-removed - - put("Signature.ECDSA", "org.bouncycastle.jce.provider.asymmetric.ec.Signature$ecDSA"); - put("Signature.NONEwithECDSA", "org.bouncycastle.jce.provider.asymmetric.ec.Signature$ecDSAnone"); -@@ -60,23 +72,27 @@ - put("Alg.Alias.Signature.SHA1WithECDSA", "ECDSA"); - put("Alg.Alias.Signature.ECDSAWithSHA1", "ECDSA"); - put("Alg.Alias.Signature.1.2.840.10045.4.1", "ECDSA"); -- put("Alg.Alias.Signature." + TeleTrusTObjectIdentifiers.ecSignWithSha1, "ECDSA"); -- -- addSignatureAlgorithm("SHA224", "ECDSA", "org.bouncycastle.jce.provider.asymmetric.ec.Signature$ecDSA224", X9ObjectIdentifiers.ecdsa_with_SHA224); -+ // BEGIN android-removed -+ // put("Alg.Alias.Signature." + TeleTrusTObjectIdentifiers.ecSignWithSha1, "ECDSA"); -+ // -+ // addSignatureAlgorithm("SHA224", "ECDSA", "org.bouncycastle.jce.provider.asymmetric.ec.Signature$ecDSA224", X9ObjectIdentifiers.ecdsa_with_SHA224); -+ // END android-removed - addSignatureAlgorithm("SHA256", "ECDSA", "org.bouncycastle.jce.provider.asymmetric.ec.Signature$ecDSA256", X9ObjectIdentifiers.ecdsa_with_SHA256); - addSignatureAlgorithm("SHA384", "ECDSA", "org.bouncycastle.jce.provider.asymmetric.ec.Signature$ecDSA384", X9ObjectIdentifiers.ecdsa_with_SHA384); - addSignatureAlgorithm("SHA512", "ECDSA", "org.bouncycastle.jce.provider.asymmetric.ec.Signature$ecDSA512", X9ObjectIdentifiers.ecdsa_with_SHA512); -- addSignatureAlgorithm("RIPEMD160", "ECDSA", "org.bouncycastle.jce.provider.asymmetric.ec.Signature$ecDSARipeMD160",TeleTrusTObjectIdentifiers.ecSignWithRipemd160); -- -- put("Signature.SHA1WITHECNR", "org.bouncycastle.jce.provider.asymmetric.ec.Signature$ecNR"); -- put("Signature.SHA224WITHECNR", "org.bouncycastle.jce.provider.asymmetric.ec.Signature$ecNR224"); -- put("Signature.SHA256WITHECNR", "org.bouncycastle.jce.provider.asymmetric.ec.Signature$ecNR256"); -- put("Signature.SHA384WITHECNR", "org.bouncycastle.jce.provider.asymmetric.ec.Signature$ecNR384"); -- put("Signature.SHA512WITHECNR", "org.bouncycastle.jce.provider.asymmetric.ec.Signature$ecNR512"); -- -- addSignatureAlgorithm("SHA1", "CVC-ECDSA", "org.bouncycastle.jce.provider.asymmetric.ec.Signature$ecCVCDSA", EACObjectIdentifiers.id_TA_ECDSA_SHA_1); -- addSignatureAlgorithm("SHA224", "CVC-ECDSA", "org.bouncycastle.jce.provider.asymmetric.ec.Signature$ecCVCDSA224", EACObjectIdentifiers.id_TA_ECDSA_SHA_224); -- addSignatureAlgorithm("SHA256", "CVC-ECDSA", "org.bouncycastle.jce.provider.asymmetric.ec.Signature$ecCVCDSA256", EACObjectIdentifiers.id_TA_ECDSA_SHA_256); -+ // BEGIN android-removed -+ // addSignatureAlgorithm("RIPEMD160", "ECDSA", "org.bouncycastle.jce.provider.asymmetric.ec.Signature$ecDSARipeMD160",TeleTrusTObjectIdentifiers.ecSignWithRipemd160); -+ // -+ // put("Signature.SHA1WITHECNR", "org.bouncycastle.jce.provider.asymmetric.ec.Signature$ecNR"); -+ // put("Signature.SHA224WITHECNR", "org.bouncycastle.jce.provider.asymmetric.ec.Signature$ecNR224"); -+ // put("Signature.SHA256WITHECNR", "org.bouncycastle.jce.provider.asymmetric.ec.Signature$ecNR256"); -+ // put("Signature.SHA384WITHECNR", "org.bouncycastle.jce.provider.asymmetric.ec.Signature$ecNR384"); -+ // put("Signature.SHA512WITHECNR", "org.bouncycastle.jce.provider.asymmetric.ec.Signature$ecNR512"); -+ // -+ // addSignatureAlgorithm("SHA1", "CVC-ECDSA", "org.bouncycastle.jce.provider.asymmetric.ec.Signature$ecCVCDSA", EACObjectIdentifiers.id_TA_ECDSA_SHA_1); -+ // addSignatureAlgorithm("SHA224", "CVC-ECDSA", "org.bouncycastle.jce.provider.asymmetric.ec.Signature$ecCVCDSA224", EACObjectIdentifiers.id_TA_ECDSA_SHA_224); -+ // addSignatureAlgorithm("SHA256", "CVC-ECDSA", "org.bouncycastle.jce.provider.asymmetric.ec.Signature$ecCVCDSA256", EACObjectIdentifiers.id_TA_ECDSA_SHA_256); -+ // END android-removed - } - - private void addSignatureAlgorithm( -diff -Naur bcprov-jdk16-146.orig/org/bouncycastle/jce/provider/asymmetric/ec/ECUtil.java bcprov-jdk16-146/org/bouncycastle/jce/provider/asymmetric/ec/ECUtil.java ---- bcprov-jdk16-146.orig/org/bouncycastle/jce/provider/asymmetric/ec/ECUtil.java 2011-02-23 20:08:56.000000000 +0000 -+++ bcprov-jdk16-146/org/bouncycastle/jce/provider/asymmetric/ec/ECUtil.java 2012-07-27 18:48:00.031478939 +0000 -@@ -1,10 +1,14 @@ - package org.bouncycastle.jce.provider.asymmetric.ec; - - import org.bouncycastle.asn1.DERObjectIdentifier; --import org.bouncycastle.asn1.cryptopro.ECGOST3410NamedCurves; -+// BEGIN android-removed -+// import org.bouncycastle.asn1.cryptopro.ECGOST3410NamedCurves; -+// END android-removed - import org.bouncycastle.asn1.nist.NISTNamedCurves; - import org.bouncycastle.asn1.sec.SECNamedCurves; --import org.bouncycastle.asn1.teletrust.TeleTrusTNamedCurves; -+// BEGIN android-removed -+// import org.bouncycastle.asn1.teletrust.TeleTrusTNamedCurves; -+// END android-removed - import org.bouncycastle.asn1.x9.X962NamedCurves; - import org.bouncycastle.asn1.x9.X9ECParameters; - import org.bouncycastle.crypto.params.AsymmetricKeyParameter; -@@ -167,14 +171,16 @@ - { - oid = NISTNamedCurves.getOID(name); - } -- if (oid == null) -- { -- oid = TeleTrusTNamedCurves.getOID(name); -- } -- if (oid == null) -- { -- oid = ECGOST3410NamedCurves.getOID(name); -- } -+ // BEGIN android-removed -+ // if (oid == null) -+ // { -+ // oid = TeleTrusTNamedCurves.getOID(name); -+ // } -+ // if (oid == null) -+ // { -+ // oid = ECGOST3410NamedCurves.getOID(name); -+ // } -+ // END android-removed - } - - return oid; -@@ -192,10 +198,12 @@ - { - params = NISTNamedCurves.getByOID(oid); - } -- if (params == null) -- { -- params = TeleTrusTNamedCurves.getByOID(oid); -- } -+ // BEGIN android-removed -+ // if (params == null) -+ // { -+ // params = TeleTrusTNamedCurves.getByOID(oid); -+ // } -+ // END android-removed - } - - return params; -@@ -213,14 +221,16 @@ - { - name = NISTNamedCurves.getName(oid); - } -- if (name == null) -- { -- name = TeleTrusTNamedCurves.getName(oid); -- } -- if (name == null) -- { -- name = ECGOST3410NamedCurves.getName(oid); -- } -+ // BEGIN android-removed -+ // if (name == null) -+ // { -+ // name = TeleTrusTNamedCurves.getName(oid); -+ // } -+ // if (name == null) -+ // { -+ // name = ECGOST3410NamedCurves.getName(oid); -+ // } -+ // END android-removed - } - - return name; -diff -Naur bcprov-jdk16-146.orig/org/bouncycastle/jce/provider/asymmetric/ec/KeyAgreement.java bcprov-jdk16-146/org/bouncycastle/jce/provider/asymmetric/ec/KeyAgreement.java ---- bcprov-jdk16-146.orig/org/bouncycastle/jce/provider/asymmetric/ec/KeyAgreement.java 2011-02-23 20:08:56.000000000 +0000 -+++ bcprov-jdk16-146/org/bouncycastle/jce/provider/asymmetric/ec/KeyAgreement.java 2012-07-27 18:48:00.031478939 +0000 -@@ -24,20 +24,26 @@ - import org.bouncycastle.crypto.CipherParameters; - import org.bouncycastle.crypto.DerivationFunction; - import org.bouncycastle.crypto.agreement.ECDHBasicAgreement; --import org.bouncycastle.crypto.agreement.ECDHCBasicAgreement; --import org.bouncycastle.crypto.agreement.ECMQVBasicAgreement; --import org.bouncycastle.crypto.agreement.kdf.DHKDFParameters; --import org.bouncycastle.crypto.agreement.kdf.ECDHKEKGenerator; -+// BEGIN android-removed -+// import org.bouncycastle.crypto.agreement.ECDHCBasicAgreement; -+// import org.bouncycastle.crypto.agreement.ECMQVBasicAgreement; -+// import org.bouncycastle.crypto.agreement.kdf.DHKDFParameters; -+// import org.bouncycastle.crypto.agreement.kdf.ECDHKEKGenerator; -+// END android-removed - import org.bouncycastle.crypto.digests.SHA1Digest; - import org.bouncycastle.crypto.params.ECDomainParameters; - import org.bouncycastle.crypto.params.ECPrivateKeyParameters; - import org.bouncycastle.crypto.params.ECPublicKeyParameters; --import org.bouncycastle.crypto.params.MQVPrivateParameters; --import org.bouncycastle.crypto.params.MQVPublicParameters; -+// BEGIN android-removed -+// import org.bouncycastle.crypto.params.MQVPrivateParameters; -+// import org.bouncycastle.crypto.params.MQVPublicParameters; -+// END android-removed - import org.bouncycastle.jce.interfaces.ECPrivateKey; - import org.bouncycastle.jce.interfaces.ECPublicKey; --import org.bouncycastle.jce.interfaces.MQVPrivateKey; --import org.bouncycastle.jce.interfaces.MQVPublicKey; -+// BEGIN android-removed -+// import org.bouncycastle.jce.interfaces.MQVPrivateKey; -+// import org.bouncycastle.jce.interfaces.MQVPublicKey; -+// END android-removed - - /** - * Diffie-Hellman key agreement using elliptic curve keys, ala IEEE P1363 -@@ -53,9 +59,11 @@ - - static - { -- Integer i128 = new Integer(128); -- Integer i192 = new Integer(192); -- Integer i256 = new Integer(256); -+ // BEGIN android-changed -+ Integer i128 = Integer.valueOf(128); -+ Integer i192 = Integer.valueOf(192); -+ Integer i256 = Integer.valueOf(256); -+ // END android-changed - - algorithms.put(NISTObjectIdentifiers.id_aes128_CBC.getId(), i128); - algorithms.put(NISTObjectIdentifiers.id_aes192_CBC.getId(), i192); -@@ -70,7 +78,9 @@ - private BigInteger result; - private ECDomainParameters parameters; - private BasicAgreement agreement; -- private DerivationFunction kdf; -+ // BEGIN android-removed -+ // private DerivationFunction kdf; -+ // END android-removed - - private byte[] bigIntToBytes( - BigInteger r) -@@ -85,7 +95,9 @@ - { - this.kaAlgorithm = kaAlgorithm; - this.agreement = agreement; -- this.kdf = kdf; -+ // BEGIN android-removed -+ // this.kdf = kdf; -+ // END android-removed - } - - protected Key engineDoPhase( -@@ -104,25 +116,27 @@ - } - - CipherParameters pubKey; -- if (agreement instanceof ECMQVBasicAgreement) -- { -- if (!(key instanceof MQVPublicKey)) -- { -- throw new InvalidKeyException(kaAlgorithm + " key agreement requires " -- + getSimpleName(MQVPublicKey.class) + " for doPhase"); -- } -- -- MQVPublicKey mqvPubKey = (MQVPublicKey)key; -- ECPublicKeyParameters staticKey = (ECPublicKeyParameters) -- ECUtil.generatePublicKeyParameter(mqvPubKey.getStaticKey()); -- ECPublicKeyParameters ephemKey = (ECPublicKeyParameters) -- ECUtil.generatePublicKeyParameter(mqvPubKey.getEphemeralKey()); -- -- pubKey = new MQVPublicParameters(staticKey, ephemKey); -- -- // TODO Validate that all the keys are using the same parameters? -- } -- else -+ // BEGIN android-removed -+ // if (agreement instanceof ECMQVBasicAgreement) -+ // { -+ // if (!(key instanceof MQVPublicKey)) -+ // { -+ // throw new InvalidKeyException(kaAlgorithm + " key agreement requires " -+ // + getSimpleName(MQVPublicKey.class) + " for doPhase"); -+ // } -+ // -+ // MQVPublicKey mqvPubKey = (MQVPublicKey)key; -+ // ECPublicKeyParameters staticKey = (ECPublicKeyParameters) -+ // ECUtil.generatePublicKeyParameter(mqvPubKey.getStaticKey()); -+ // ECPublicKeyParameters ephemKey = (ECPublicKeyParameters) -+ // ECUtil.generatePublicKeyParameter(mqvPubKey.getEphemeralKey()); -+ // -+ // pubKey = new MQVPublicParameters(staticKey, ephemKey); -+ // -+ // // TODO Validate that all the keys are using the same parameters? -+ // } -+ // else -+ // END android-removed - { - if (!(key instanceof ECPublicKey)) - { -@@ -143,11 +157,13 @@ - protected byte[] engineGenerateSecret() - throws IllegalStateException - { -- if (kdf != null) -- { -- throw new UnsupportedOperationException( -- "KDF can only be used when algorithm is known"); -- } -+ // BEGIN android-removed -+ // if (kdf != null) -+ // { -+ // throw new UnsupportedOperationException( -+ // "KDF can only be used when algorithm is known"); -+ // } -+ // END android-removed - - return bigIntToBytes(result); - } -@@ -175,23 +191,25 @@ - { - byte[] secret = bigIntToBytes(result); - -- if (kdf != null) -- { -- if (!algorithms.containsKey(algorithm)) -- { -- throw new NoSuchAlgorithmException("unknown algorithm encountered: " + algorithm); -- } -- -- int keySize = ((Integer)algorithms.get(algorithm)).intValue(); -- -- DHKDFParameters params = new DHKDFParameters(new DERObjectIdentifier(algorithm), keySize, secret); -- -- byte[] keyBytes = new byte[keySize / 8]; -- kdf.init(params); -- kdf.generateBytes(keyBytes, 0, keyBytes.length); -- secret = keyBytes; -- } -- else -+ // BEGIN android-removed -+ // if (kdf != null) -+ // { -+ // if (!algorithms.containsKey(algorithm)) -+ // { -+ // throw new NoSuchAlgorithmException("unknown algorithm encountered: " + algorithm); -+ // } -+ // -+ // int keySize = ((Integer)algorithms.get(algorithm)).intValue(); -+ // -+ // DHKDFParameters params = new DHKDFParameters(new DERObjectIdentifier(algorithm), keySize, secret); -+ // -+ // byte[] keyBytes = new byte[keySize / 8]; -+ // kdf.init(params); -+ // kdf.generateBytes(keyBytes, 0, keyBytes.length); -+ // secret = keyBytes; -+ // } -+ // else -+ // END android-removed - { - // TODO Should we be ensuring the key is the right length? - } -@@ -219,35 +237,37 @@ - private void initFromKey(Key key) - throws InvalidKeyException - { -- if (agreement instanceof ECMQVBasicAgreement) -- { -- if (!(key instanceof MQVPrivateKey)) -- { -- throw new InvalidKeyException(kaAlgorithm + " key agreement requires " -- + getSimpleName(MQVPrivateKey.class) + " for initialisation"); -- } -- -- MQVPrivateKey mqvPrivKey = (MQVPrivateKey)key; -- ECPrivateKeyParameters staticPrivKey = (ECPrivateKeyParameters) -- ECUtil.generatePrivateKeyParameter(mqvPrivKey.getStaticPrivateKey()); -- ECPrivateKeyParameters ephemPrivKey = (ECPrivateKeyParameters) -- ECUtil.generatePrivateKeyParameter(mqvPrivKey.getEphemeralPrivateKey()); -- -- ECPublicKeyParameters ephemPubKey = null; -- if (mqvPrivKey.getEphemeralPublicKey() != null) -- { -- ephemPubKey = (ECPublicKeyParameters) -- ECUtil.generatePublicKeyParameter(mqvPrivKey.getEphemeralPublicKey()); -- } -- -- MQVPrivateParameters localParams = new MQVPrivateParameters(staticPrivKey, ephemPrivKey, ephemPubKey); -- this.parameters = staticPrivKey.getParameters(); -- -- // TODO Validate that all the keys are using the same parameters? -- -- agreement.init(localParams); -- } -- else -+ // BEGIN android-removed -+ // if (agreement instanceof ECMQVBasicAgreement) -+ // { -+ // if (!(key instanceof MQVPrivateKey)) -+ // { -+ // throw new InvalidKeyException(kaAlgorithm + " key agreement requires " -+ // + getSimpleName(MQVPrivateKey.class) + " for initialisation"); -+ // } -+ // -+ // MQVPrivateKey mqvPrivKey = (MQVPrivateKey)key; -+ // ECPrivateKeyParameters staticPrivKey = (ECPrivateKeyParameters) -+ // ECUtil.generatePrivateKeyParameter(mqvPrivKey.getStaticPrivateKey()); -+ // ECPrivateKeyParameters ephemPrivKey = (ECPrivateKeyParameters) -+ // ECUtil.generatePrivateKeyParameter(mqvPrivKey.getEphemeralPrivateKey()); -+ // -+ // ECPublicKeyParameters ephemPubKey = null; -+ // if (mqvPrivKey.getEphemeralPublicKey() != null) -+ // { -+ // ephemPubKey = (ECPublicKeyParameters) -+ // ECUtil.generatePublicKeyParameter(mqvPrivKey.getEphemeralPublicKey()); -+ // } -+ // -+ // MQVPrivateParameters localParams = new MQVPrivateParameters(staticPrivKey, ephemPrivKey, ephemPubKey); -+ // this.parameters = staticPrivKey.getParameters(); -+ // -+ // // TODO Validate that all the keys are using the same parameters? -+ // -+ // agreement.init(localParams); -+ // } -+ // else -+ // END android-removed - { - if (!(key instanceof ECPrivateKey)) - { -@@ -278,39 +298,41 @@ - } - } - -- public static class DHC -- extends KeyAgreement -- { -- public DHC() -- { -- super("ECDHC", new ECDHCBasicAgreement(), null); -- } -- } -- -- public static class MQV -- extends KeyAgreement -- { -- public MQV() -- { -- super("ECMQV", new ECMQVBasicAgreement(), null); -- } -- } -- -- public static class DHwithSHA1KDF -- extends KeyAgreement -- { -- public DHwithSHA1KDF() -- { -- super("ECDHwithSHA1KDF", new ECDHBasicAgreement(), new ECDHKEKGenerator(new SHA1Digest())); -- } -- } -- -- public static class MQVwithSHA1KDF -- extends KeyAgreement -- { -- public MQVwithSHA1KDF() -- { -- super("ECMQVwithSHA1KDF", new ECMQVBasicAgreement(), new ECDHKEKGenerator(new SHA1Digest())); -- } -- } -+ // BEGIN android-removed -+ // public static class DHC -+ // extends KeyAgreement -+ // { -+ // public DHC() -+ // { -+ // super("ECDHC", new ECDHCBasicAgreement(), null); -+ // } -+ // } -+ // -+ // public static class MQV -+ // extends KeyAgreement -+ // { -+ // public MQV() -+ // { -+ // super("ECMQV", new ECMQVBasicAgreement(), null); -+ // } -+ // } -+ // -+ // public static class DHwithSHA1KDF -+ // extends KeyAgreement -+ // { -+ // public DHwithSHA1KDF() -+ // { -+ // super("ECDHwithSHA1KDF", new ECDHBasicAgreement(), new ECDHKEKGenerator(new SHA1Digest())); -+ // } -+ // } -+ // -+ // public static class MQVwithSHA1KDF -+ // extends KeyAgreement -+ // { -+ // public MQVwithSHA1KDF() -+ // { -+ // super("ECMQVwithSHA1KDF", new ECMQVBasicAgreement(), new ECDHKEKGenerator(new SHA1Digest())); -+ // } -+ // } -+ // END android-removed - } -diff -Naur bcprov-jdk16-146.orig/org/bouncycastle/jce/provider/asymmetric/ec/KeyPairGenerator.java bcprov-jdk16-146/org/bouncycastle/jce/provider/asymmetric/ec/KeyPairGenerator.java ---- bcprov-jdk16-146.orig/org/bouncycastle/jce/provider/asymmetric/ec/KeyPairGenerator.java 2011-02-23 20:08:56.000000000 +0000 -+++ bcprov-jdk16-146/org/bouncycastle/jce/provider/asymmetric/ec/KeyPairGenerator.java 2012-07-27 18:48:00.031478939 +0000 -@@ -10,10 +10,14 @@ - import java.util.Hashtable; - - import org.bouncycastle.asn1.DERObjectIdentifier; --import org.bouncycastle.asn1.cryptopro.ECGOST3410NamedCurves; -+// BEGIN android-removed -+// import org.bouncycastle.asn1.cryptopro.ECGOST3410NamedCurves; -+// END android-removed - import org.bouncycastle.asn1.nist.NISTNamedCurves; - import org.bouncycastle.asn1.sec.SECNamedCurves; --import org.bouncycastle.asn1.teletrust.TeleTrusTNamedCurves; -+// BEGIN android-removed -+// import org.bouncycastle.asn1.teletrust.TeleTrusTNamedCurves; -+// END android-removed - import org.bouncycastle.asn1.x9.X962NamedCurves; - import org.bouncycastle.asn1.x9.X9ECParameters; - import org.bouncycastle.crypto.AsymmetricCipherKeyPair; -@@ -56,13 +60,15 @@ - static { - ecParameters = new Hashtable(); - -- ecParameters.put(new Integer(192), new ECGenParameterSpec("prime192v1")); // a.k.a P-192 -- ecParameters.put(new Integer(239), new ECGenParameterSpec("prime239v1")); -- ecParameters.put(new Integer(256), new ECGenParameterSpec("prime256v1")); // a.k.a P-256 -- -- ecParameters.put(new Integer(224), new ECGenParameterSpec("P-224")); -- ecParameters.put(new Integer(384), new ECGenParameterSpec("P-384")); -- ecParameters.put(new Integer(521), new ECGenParameterSpec("P-521")); -+ // BEGIN android-changed -+ ecParameters.put(Integer.valueOf(192), new ECGenParameterSpec("prime192v1")); // a.k.a P-192 -+ ecParameters.put(Integer.valueOf(239), new ECGenParameterSpec("prime239v1")); -+ ecParameters.put(Integer.valueOf(256), new ECGenParameterSpec("prime256v1")); // a.k.a P-256 -+ -+ ecParameters.put(Integer.valueOf(224), new ECGenParameterSpec("P-224")); -+ ecParameters.put(Integer.valueOf(384), new ECGenParameterSpec("P-384")); -+ ecParameters.put(Integer.valueOf(521), new ECGenParameterSpec("P-521")); -+ // END android-changed - } - - public EC() -@@ -83,8 +89,16 @@ - SecureRandom random) - { - this.strength = strength; -+ // BEGIN android-added -+ if (random != null) { -+ // END android-added - this.random = random; -- this.ecParams = ecParameters.get(new Integer(strength)); -+ // BEGIN android-added -+ } -+ // END android-added -+ // BEGIN android-changed -+ this.ecParams = ecParameters.get(Integer.valueOf(strength)); -+ // END android-changed - - if (ecParams != null) - { -@@ -108,6 +122,11 @@ - SecureRandom random) - throws InvalidAlgorithmParameterException - { -+ // BEGIN android-added -+ if (random == null) { -+ random = this.random; -+ } -+ // END android-added - if (params instanceof ECParameterSpec) - { - ECParameterSpec p = (ECParameterSpec)params; -@@ -135,23 +154,25 @@ - { - final String curveName = ((ECGenParameterSpec)params).getName(); - -- if (this.algorithm.equals("ECGOST3410")) -- { -- ECDomainParameters ecP = ECGOST3410NamedCurves.getByName(curveName); -- if (ecP == null) -- { -- throw new InvalidAlgorithmParameterException("unknown curve name: " + curveName); -- } -- -- this.ecParams = new ECNamedCurveSpec( -- curveName, -- ecP.getCurve(), -- ecP.getG(), -- ecP.getN(), -- ecP.getH(), -- ecP.getSeed()); -- } -- else -+ // BEGIN android-removed -+ // if (this.algorithm.equals("ECGOST3410")) -+ // { -+ // ECDomainParameters ecP = ECGOST3410NamedCurves.getByName(curveName); -+ // if (ecP == null) -+ // { -+ // throw new InvalidAlgorithmParameterException("unknown curve name: " + curveName); -+ // } -+ // -+ // this.ecParams = new ECNamedCurveSpec( -+ // curveName, -+ // ecP.getCurve(), -+ // ecP.getG(), -+ // ecP.getN(), -+ // ecP.getH(), -+ // ecP.getSeed()); -+ // } -+ // else -+ // END android-removed - { - X9ECParameters ecP = X962NamedCurves.getByName(curveName); - if (ecP == null) -@@ -161,10 +182,12 @@ - { - ecP = NISTNamedCurves.getByName(curveName); - } -- if (ecP == null) -- { -- ecP = TeleTrusTNamedCurves.getByName(curveName); -- } -+ // BEGIN android-removed -+ // if (ecP == null) -+ // { -+ // ecP = TeleTrusTNamedCurves.getByName(curveName); -+ // } -+ // END android-removed - if (ecP == null) - { - // See if it's actually an OID string (SunJSSE ServerHandshaker setupEphemeralECDHKeys bug) -@@ -180,10 +203,12 @@ - { - ecP = NISTNamedCurves.getByOID(oid); - } -- if (ecP == null) -- { -- ecP = TeleTrusTNamedCurves.getByOID(oid); -- } -+ // BEGIN android-removed -+ // if (ecP == null) -+ // { -+ // ecP = TeleTrusTNamedCurves.getByOID(oid); -+ // } -+ // END android-removed - if (ecP == null) - { - throw new InvalidAlgorithmParameterException("unknown curve OID: " + curveName); -@@ -239,7 +264,15 @@ - { - if (!initialised) - { -- throw new IllegalStateException("EC Key Pair Generator not initialised"); -+ // BEGIN android-removed -+ // throw new IllegalStateException("EC Key Pair Generator not initialised"); -+ // END android-removed -+ // BEGIN android-added -+ /* -+ * KeyPairGenerator documentation says that a default initialization must be provided -+ */ -+ initialize(192, random); -+ // END android-added - } - - AsymmetricCipherKeyPair pair = engine.generateKeyPair(); -@@ -279,14 +312,16 @@ - } - } - -- public static class ECGOST3410 -- extends EC -- { -- public ECGOST3410() -- { -- super("ECGOST3410"); -- } -- } -+ // BEGIN android-removed -+ // public static class ECGOST3410 -+ // extends EC -+ // { -+ // public ECGOST3410() -+ // { -+ // super("ECGOST3410"); -+ // } -+ // } -+ // END android-removed - - public static class ECDH - extends EC -@@ -314,4 +349,4 @@ - super("ECMQV"); - } - } --} -\ No newline at end of file -+} -diff -Naur bcprov-jdk16-146.orig/org/bouncycastle/jce/provider/asymmetric/ec/Signature.java bcprov-jdk16-146/org/bouncycastle/jce/provider/asymmetric/ec/Signature.java ---- bcprov-jdk16-146.orig/org/bouncycastle/jce/provider/asymmetric/ec/Signature.java 2011-02-23 20:08:56.000000000 +0000 -+++ bcprov-jdk16-146/org/bouncycastle/jce/provider/asymmetric/ec/Signature.java 2012-07-27 18:48:00.031478939 +0000 -@@ -18,15 +18,21 @@ - import org.bouncycastle.crypto.DSA; - import org.bouncycastle.crypto.Digest; - import org.bouncycastle.crypto.digests.NullDigest; --import org.bouncycastle.crypto.digests.RIPEMD160Digest; -+// BEGIN android-removed -+// import org.bouncycastle.crypto.digests.RIPEMD160Digest; -+// END android-removed - import org.bouncycastle.crypto.digests.SHA1Digest; --import org.bouncycastle.crypto.digests.SHA224Digest; -+// BEGIN android-removed -+// import org.bouncycastle.crypto.digests.SHA224Digest; -+// END android-removed - import org.bouncycastle.crypto.digests.SHA256Digest; - import org.bouncycastle.crypto.digests.SHA384Digest; - import org.bouncycastle.crypto.digests.SHA512Digest; - import org.bouncycastle.crypto.params.ParametersWithRandom; - import org.bouncycastle.crypto.signers.ECDSASigner; --import org.bouncycastle.crypto.signers.ECNRSigner; -+// BEGIN android-removed -+// import org.bouncycastle.crypto.signers.ECNRSigner; -+// END android-removed - import org.bouncycastle.jce.interfaces.ECKey; - import org.bouncycastle.jce.provider.DSABase; - import org.bouncycastle.jce.provider.DSAEncoder; -@@ -122,14 +128,16 @@ - } - } - -- static public class ecDSA224 -- extends Signature -- { -- public ecDSA224() -- { -- super(new SHA224Digest(), new ECDSASigner(), new StdDSAEncoder()); -- } -- } -+ // BEGIN android-removed -+ // static public class ecDSA224 -+ // extends Signature -+ // { -+ // public ecDSA224() -+ // { -+ // super(new SHA224Digest(), new ECDSASigner(), new StdDSAEncoder()); -+ // } -+ // } -+ // END android-removed - - static public class ecDSA256 - extends Signature -@@ -158,86 +166,88 @@ - } - } - -- static public class ecDSARipeMD160 -- extends Signature -- { -- public ecDSARipeMD160() -- { -- super(new RIPEMD160Digest(), new ECDSASigner(), new StdDSAEncoder()); -- } -- } -- -- static public class ecNR -- extends Signature -- { -- public ecNR() -- { -- super(new SHA1Digest(), new ECNRSigner(), new StdDSAEncoder()); -- } -- } -- -- static public class ecNR224 -- extends Signature -- { -- public ecNR224() -- { -- super(new SHA224Digest(), new ECNRSigner(), new StdDSAEncoder()); -- } -- } -- -- static public class ecNR256 -- extends Signature -- { -- public ecNR256() -- { -- super(new SHA256Digest(), new ECNRSigner(), new StdDSAEncoder()); -- } -- } -- -- static public class ecNR384 -- extends Signature -- { -- public ecNR384() -- { -- super(new SHA384Digest(), new ECNRSigner(), new StdDSAEncoder()); -- } -- } -- -- static public class ecNR512 -- extends Signature -- { -- public ecNR512() -- { -- super(new SHA512Digest(), new ECNRSigner(), new StdDSAEncoder()); -- } -- } -- -- static public class ecCVCDSA -- extends Signature -- { -- public ecCVCDSA() -- { -- super(new SHA1Digest(), new ECDSASigner(), new CVCDSAEncoder()); -- } -- } -- -- static public class ecCVCDSA224 -- extends Signature -- { -- public ecCVCDSA224() -- { -- super(new SHA224Digest(), new ECDSASigner(), new CVCDSAEncoder()); -- } -- } -- -- static public class ecCVCDSA256 -- extends Signature -- { -- public ecCVCDSA256() -- { -- super(new SHA256Digest(), new ECDSASigner(), new CVCDSAEncoder()); -- } -- } -+ // BEGIN android-removed -+ // static public class ecDSARipeMD160 -+ // extends Signature -+ // { -+ // public ecDSARipeMD160() -+ // { -+ // super(new RIPEMD160Digest(), new ECDSASigner(), new StdDSAEncoder()); -+ // } -+ // } -+ // -+ // static public class ecNR -+ // extends Signature -+ // { -+ // public ecNR() -+ // { -+ // super(new SHA1Digest(), new ECNRSigner(), new StdDSAEncoder()); -+ // } -+ // } -+ // -+ // static public class ecNR224 -+ // extends Signature -+ // { -+ // public ecNR224() -+ // { -+ // super(new SHA224Digest(), new ECNRSigner(), new StdDSAEncoder()); -+ // } -+ // } -+ // -+ // static public class ecNR256 -+ // extends Signature -+ // { -+ // public ecNR256() -+ // { -+ // super(new SHA256Digest(), new ECNRSigner(), new StdDSAEncoder()); -+ // } -+ // } -+ // -+ // static public class ecNR384 -+ // extends Signature -+ // { -+ // public ecNR384() -+ // { -+ // super(new SHA384Digest(), new ECNRSigner(), new StdDSAEncoder()); -+ // } -+ // } -+ // -+ // static public class ecNR512 -+ // extends Signature -+ // { -+ // public ecNR512() -+ // { -+ // super(new SHA512Digest(), new ECNRSigner(), new StdDSAEncoder()); -+ // } -+ // } -+ // -+ // static public class ecCVCDSA -+ // extends Signature -+ // { -+ // public ecCVCDSA() -+ // { -+ // super(new SHA1Digest(), new ECDSASigner(), new CVCDSAEncoder()); -+ // } -+ // } -+ // -+ // static public class ecCVCDSA224 -+ // extends Signature -+ // { -+ // public ecCVCDSA224() -+ // { -+ // super(new SHA224Digest(), new ECDSASigner(), new CVCDSAEncoder()); -+ // } -+ // } -+ // -+ // static public class ecCVCDSA256 -+ // extends Signature -+ // { -+ // public ecCVCDSA256() -+ // { -+ // super(new SHA256Digest(), new ECDSASigner(), new CVCDSAEncoder()); -+ // } -+ // } -+ // END android-removed - - private static class StdDSAEncoder - implements DSAEncoder -@@ -331,4 +341,4 @@ - return sig; - } - } --} -\ No newline at end of file -+} -diff -Naur bcprov-jdk16-146.orig/org/bouncycastle/jce/provider/symmetric/AES.java bcprov-jdk16-146/org/bouncycastle/jce/provider/symmetric/AES.java ---- bcprov-jdk16-146.orig/org/bouncycastle/jce/provider/symmetric/AES.java 2011-02-23 20:08:56.000000000 +0000 -+++ bcprov-jdk16-146/org/bouncycastle/jce/provider/symmetric/AES.java 2012-07-27 18:48:00.031478939 +0000 -@@ -13,8 +13,10 @@ - import org.bouncycastle.crypto.CipherKeyGenerator; - import org.bouncycastle.crypto.engines.AESFastEngine; - import org.bouncycastle.crypto.engines.AESWrapEngine; --import org.bouncycastle.crypto.engines.RFC3211WrapEngine; --import org.bouncycastle.crypto.macs.CMac; -+// BEGIN android-removed -+// import org.bouncycastle.crypto.engines.RFC3211WrapEngine; -+// import org.bouncycastle.crypto.macs.CMac; -+// END android-removed - import org.bouncycastle.crypto.modes.CBCBlockCipher; - import org.bouncycastle.crypto.modes.CFBBlockCipher; - import org.bouncycastle.crypto.modes.OFBBlockCipher; -@@ -41,41 +43,43 @@ - } - } - -- public static class CBC -- extends JCEBlockCipher -- { -- public CBC() -- { -- super(new CBCBlockCipher(new AESFastEngine()), 128); -- } -- } -- -- static public class CFB -- extends JCEBlockCipher -- { -- public CFB() -- { -- super(new BufferedBlockCipher(new CFBBlockCipher(new AESFastEngine(), 128)), 128); -- } -- } -- -- static public class OFB -- extends JCEBlockCipher -- { -- public OFB() -- { -- super(new BufferedBlockCipher(new OFBBlockCipher(new AESFastEngine(), 128)), 128); -- } -- } -- -- public static class AESCMAC -- extends JCEMac -- { -- public AESCMAC() -- { -- super(new CMac(new AESFastEngine())); -- } -- } -+ // BEGIN android-removed -+ // public static class CBC -+ // extends JCEBlockCipher -+ // { -+ // public CBC() -+ // { -+ // super(new CBCBlockCipher(new AESFastEngine()), 128); -+ // } -+ // } -+ // -+ // static public class CFB -+ // extends JCEBlockCipher -+ // { -+ // public CFB() -+ // { -+ // super(new BufferedBlockCipher(new CFBBlockCipher(new AESFastEngine(), 128)), 128); -+ // } -+ // } -+ // -+ // static public class OFB -+ // extends JCEBlockCipher -+ // { -+ // public OFB() -+ // { -+ // super(new BufferedBlockCipher(new OFBBlockCipher(new AESFastEngine(), 128)), 128); -+ // } -+ // } -+ // -+ // public static class AESCMAC -+ // extends JCEMac -+ // { -+ // public AESCMAC() -+ // { -+ // super(new CMac(new AESFastEngine())); -+ // } -+ // } -+ // END android-removed - - static public class Wrap - extends WrapCipherSpi -@@ -86,14 +90,16 @@ - } - } - -- public static class RFC3211Wrap -- extends WrapCipherSpi -- { -- public RFC3211Wrap() -- { -- super(new RFC3211WrapEngine(new AESFastEngine()), 16); -- } -- } -+ // BEGIN android-removed -+ // public static class RFC3211Wrap -+ // extends WrapCipherSpi -+ // { -+ // public RFC3211Wrap() -+ // { -+ // super(new RFC3211WrapEngine(new AESFastEngine()), 16); -+ // } -+ // } -+ // END android-removed - - public static class KeyGen - extends JCEKeyGenerator -@@ -109,70 +115,72 @@ - } - } - -- public static class KeyGen128 -- extends KeyGen -- { -- public KeyGen128() -- { -- super(128); -- } -- } -- -- public static class KeyGen192 -- extends KeyGen -- { -- public KeyGen192() -- { -- super(192); -- } -- } -- -- public static class KeyGen256 -- extends KeyGen -- { -- public KeyGen256() -- { -- super(256); -- } -- } -- -- public static class AlgParamGen -- extends JDKAlgorithmParameterGenerator -- { -- protected void engineInit( -- AlgorithmParameterSpec genParamSpec, -- SecureRandom random) -- throws InvalidAlgorithmParameterException -- { -- throw new InvalidAlgorithmParameterException("No supported AlgorithmParameterSpec for AES parameter generation."); -- } -- -- protected AlgorithmParameters engineGenerateParameters() -- { -- byte[] iv = new byte[16]; -- -- if (random == null) -- { -- random = new SecureRandom(); -- } -- -- random.nextBytes(iv); -- -- AlgorithmParameters params; -- -- try -- { -- params = AlgorithmParameters.getInstance("AES", BouncyCastleProvider.PROVIDER_NAME); -- params.init(new IvParameterSpec(iv)); -- } -- catch (Exception e) -- { -- throw new RuntimeException(e.getMessage()); -- } -- -- return params; -- } -- } -+ // BEGIN android-removed -+ // public static class KeyGen128 -+ // extends KeyGen -+ // { -+ // public KeyGen128() -+ // { -+ // super(128); -+ // } -+ // } -+ // -+ // public static class KeyGen192 -+ // extends KeyGen -+ // { -+ // public KeyGen192() -+ // { -+ // super(192); -+ // } -+ // } -+ // -+ // public static class KeyGen256 -+ // extends KeyGen -+ // { -+ // public KeyGen256() -+ // { -+ // super(256); -+ // } -+ // } -+ // -+ // public static class AlgParamGen -+ // extends JDKAlgorithmParameterGenerator -+ // { -+ // protected void engineInit( -+ // AlgorithmParameterSpec genParamSpec, -+ // SecureRandom random) -+ // throws InvalidAlgorithmParameterException -+ // { -+ // throw new InvalidAlgorithmParameterException("No supported AlgorithmParameterSpec for AES parameter generation."); -+ // } -+ // -+ // protected AlgorithmParameters engineGenerateParameters() -+ // { -+ // byte[] iv = new byte[16]; -+ // -+ // if (random == null) -+ // { -+ // random = new SecureRandom(); -+ // } -+ // -+ // random.nextBytes(iv); -+ // -+ // AlgorithmParameters params; -+ // -+ // try -+ // { -+ // params = AlgorithmParameters.getInstance("AES", BouncyCastleProvider.PROVIDER_NAME); -+ // params.init(new IvParameterSpec(iv)); -+ // } -+ // catch (Exception e) -+ // { -+ // throw new RuntimeException(e.getMessage()); -+ // } -+ // -+ // return params; -+ // } -+ // } -+ // END android-removed - - public static class AlgParams - extends JDKAlgorithmParameters.IVAlgorithmParameters -@@ -205,58 +213,66 @@ - put("Alg.Alias.AlgorithmParameters." + NISTObjectIdentifiers.id_aes192_CBC, "AES"); - put("Alg.Alias.AlgorithmParameters." + NISTObjectIdentifiers.id_aes256_CBC, "AES"); - -- put("AlgorithmParameterGenerator.AES", "org.bouncycastle.jce.provider.symmetric.AES$AlgParamGen"); -- put("Alg.Alias.AlgorithmParameterGenerator." + wrongAES128, "AES"); -- put("Alg.Alias.AlgorithmParameterGenerator." + wrongAES192, "AES"); -- put("Alg.Alias.AlgorithmParameterGenerator." + wrongAES256, "AES"); -- put("Alg.Alias.AlgorithmParameterGenerator." + NISTObjectIdentifiers.id_aes128_CBC, "AES"); -- put("Alg.Alias.AlgorithmParameterGenerator." + NISTObjectIdentifiers.id_aes192_CBC, "AES"); -- put("Alg.Alias.AlgorithmParameterGenerator." + NISTObjectIdentifiers.id_aes256_CBC, "AES"); -+ // BEGIN android-removed -+ // put("AlgorithmParameterGenerator.AES", "org.bouncycastle.jce.provider.symmetric.AES$AlgParamGen"); -+ // put("Alg.Alias.AlgorithmParameterGenerator." + wrongAES128, "AES"); -+ // put("Alg.Alias.AlgorithmParameterGenerator." + wrongAES192, "AES"); -+ // put("Alg.Alias.AlgorithmParameterGenerator." + wrongAES256, "AES"); -+ // put("Alg.Alias.AlgorithmParameterGenerator." + NISTObjectIdentifiers.id_aes128_CBC, "AES"); -+ // put("Alg.Alias.AlgorithmParameterGenerator." + NISTObjectIdentifiers.id_aes192_CBC, "AES"); -+ // put("Alg.Alias.AlgorithmParameterGenerator." + NISTObjectIdentifiers.id_aes256_CBC, "AES"); -+ // END android-removed - - put("Cipher.AES", "org.bouncycastle.jce.provider.symmetric.AES$ECB"); - put("Alg.Alias.Cipher." + wrongAES128, "AES"); - put("Alg.Alias.Cipher." + wrongAES192, "AES"); - put("Alg.Alias.Cipher." + wrongAES256, "AES"); -- put("Cipher." + NISTObjectIdentifiers.id_aes128_ECB, "org.bouncycastle.jce.provider.symmetric.AES$ECB"); -- put("Cipher." + NISTObjectIdentifiers.id_aes192_ECB, "org.bouncycastle.jce.provider.symmetric.AES$ECB"); -- put("Cipher." + NISTObjectIdentifiers.id_aes256_ECB, "org.bouncycastle.jce.provider.symmetric.AES$ECB"); -- put("Cipher." + NISTObjectIdentifiers.id_aes128_CBC, "org.bouncycastle.jce.provider.symmetric.AES$CBC"); -- put("Cipher." + NISTObjectIdentifiers.id_aes192_CBC, "org.bouncycastle.jce.provider.symmetric.AES$CBC"); -- put("Cipher." + NISTObjectIdentifiers.id_aes256_CBC, "org.bouncycastle.jce.provider.symmetric.AES$CBC"); -- put("Cipher." + NISTObjectIdentifiers.id_aes128_OFB, "org.bouncycastle.jce.provider.symmetric.AES$OFB"); -- put("Cipher." + NISTObjectIdentifiers.id_aes192_OFB, "org.bouncycastle.jce.provider.symmetric.AES$OFB"); -- put("Cipher." + NISTObjectIdentifiers.id_aes256_OFB, "org.bouncycastle.jce.provider.symmetric.AES$OFB"); -- put("Cipher." + NISTObjectIdentifiers.id_aes128_CFB, "org.bouncycastle.jce.provider.symmetric.AES$CFB"); -- put("Cipher." + NISTObjectIdentifiers.id_aes192_CFB, "org.bouncycastle.jce.provider.symmetric.AES$CFB"); -- put("Cipher." + NISTObjectIdentifiers.id_aes256_CFB, "org.bouncycastle.jce.provider.symmetric.AES$CFB"); -+ // BEGIN android-removed -+ // put("Cipher." + NISTObjectIdentifiers.id_aes128_ECB, "org.bouncycastle.jce.provider.symmetric.AES$ECB"); -+ // put("Cipher." + NISTObjectIdentifiers.id_aes192_ECB, "org.bouncycastle.jce.provider.symmetric.AES$ECB"); -+ // put("Cipher." + NISTObjectIdentifiers.id_aes256_ECB, "org.bouncycastle.jce.provider.symmetric.AES$ECB"); -+ // put("Cipher." + NISTObjectIdentifiers.id_aes128_CBC, "org.bouncycastle.jce.provider.symmetric.AES$CBC"); -+ // put("Cipher." + NISTObjectIdentifiers.id_aes192_CBC, "org.bouncycastle.jce.provider.symmetric.AES$CBC"); -+ // put("Cipher." + NISTObjectIdentifiers.id_aes256_CBC, "org.bouncycastle.jce.provider.symmetric.AES$CBC"); -+ // put("Cipher." + NISTObjectIdentifiers.id_aes128_OFB, "org.bouncycastle.jce.provider.symmetric.AES$OFB"); -+ // put("Cipher." + NISTObjectIdentifiers.id_aes192_OFB, "org.bouncycastle.jce.provider.symmetric.AES$OFB"); -+ // put("Cipher." + NISTObjectIdentifiers.id_aes256_OFB, "org.bouncycastle.jce.provider.symmetric.AES$OFB"); -+ // put("Cipher." + NISTObjectIdentifiers.id_aes128_CFB, "org.bouncycastle.jce.provider.symmetric.AES$CFB"); -+ // put("Cipher." + NISTObjectIdentifiers.id_aes192_CFB, "org.bouncycastle.jce.provider.symmetric.AES$CFB"); -+ // put("Cipher." + NISTObjectIdentifiers.id_aes256_CFB, "org.bouncycastle.jce.provider.symmetric.AES$CFB"); -+ // END android-removed - put("Cipher.AESWRAP", "org.bouncycastle.jce.provider.symmetric.AES$Wrap"); - put("Alg.Alias.Cipher." + NISTObjectIdentifiers.id_aes128_wrap, "AESWRAP"); - put("Alg.Alias.Cipher." + NISTObjectIdentifiers.id_aes192_wrap, "AESWRAP"); - put("Alg.Alias.Cipher." + NISTObjectIdentifiers.id_aes256_wrap, "AESWRAP"); -- put("Cipher.AESRFC3211WRAP", "org.bouncycastle.jce.provider.symmetric.AES$RFC3211Wrap"); -+ // BEGIN android-removed -+ // put("Cipher.AESRFC3211WRAP", "org.bouncycastle.jce.provider.symmetric.AES$RFC3211Wrap"); -+ // END android-removed - - put("KeyGenerator.AES", "org.bouncycastle.jce.provider.symmetric.AES$KeyGen"); -- put("KeyGenerator.2.16.840.1.101.3.4.2", "org.bouncycastle.jce.provider.symmetric.AES$KeyGen128"); -- put("KeyGenerator.2.16.840.1.101.3.4.22", "org.bouncycastle.jce.provider.symmetric.AES$KeyGen192"); -- put("KeyGenerator.2.16.840.1.101.3.4.42", "org.bouncycastle.jce.provider.symmetric.AES$KeyGen256"); -- put("KeyGenerator." + NISTObjectIdentifiers.id_aes128_ECB, "org.bouncycastle.jce.provider.symmetric.AES$KeyGen128"); -- put("KeyGenerator." + NISTObjectIdentifiers.id_aes128_CBC, "org.bouncycastle.jce.provider.symmetric.AES$KeyGen128"); -- put("KeyGenerator." + NISTObjectIdentifiers.id_aes128_OFB, "org.bouncycastle.jce.provider.symmetric.AES$KeyGen128"); -- put("KeyGenerator." + NISTObjectIdentifiers.id_aes128_CFB, "org.bouncycastle.jce.provider.symmetric.AES$KeyGen128"); -- put("KeyGenerator." + NISTObjectIdentifiers.id_aes192_ECB, "org.bouncycastle.jce.provider.symmetric.AES$KeyGen192"); -- put("KeyGenerator." + NISTObjectIdentifiers.id_aes192_CBC, "org.bouncycastle.jce.provider.symmetric.AES$KeyGen192"); -- put("KeyGenerator." + NISTObjectIdentifiers.id_aes192_OFB, "org.bouncycastle.jce.provider.symmetric.AES$KeyGen192"); -- put("KeyGenerator." + NISTObjectIdentifiers.id_aes192_CFB, "org.bouncycastle.jce.provider.symmetric.AES$KeyGen192"); -- put("KeyGenerator." + NISTObjectIdentifiers.id_aes256_ECB, "org.bouncycastle.jce.provider.symmetric.AES$KeyGen256"); -- put("KeyGenerator." + NISTObjectIdentifiers.id_aes256_CBC, "org.bouncycastle.jce.provider.symmetric.AES$KeyGen256"); -- put("KeyGenerator." + NISTObjectIdentifiers.id_aes256_OFB, "org.bouncycastle.jce.provider.symmetric.AES$KeyGen256"); -- put("KeyGenerator." + NISTObjectIdentifiers.id_aes256_CFB, "org.bouncycastle.jce.provider.symmetric.AES$KeyGen256"); -- put("KeyGenerator.AESWRAP", "org.bouncycastle.jce.provider.symmetric.AES$KeyGen"); -- put("KeyGenerator." + NISTObjectIdentifiers.id_aes128_wrap, "org.bouncycastle.jce.provider.symmetric.AES$KeyGen128"); -- put("KeyGenerator." + NISTObjectIdentifiers.id_aes192_wrap, "org.bouncycastle.jce.provider.symmetric.AES$KeyGen192"); -- put("KeyGenerator." + NISTObjectIdentifiers.id_aes256_wrap, "org.bouncycastle.jce.provider.symmetric.AES$KeyGen256"); -- -- put("Mac.AESCMAC", "org.bouncycastle.jce.provider.symmetric.AES$AESCMAC"); -+ // BEGIN android-removed -+ // put("KeyGenerator.2.16.840.1.101.3.4.2", "org.bouncycastle.jce.provider.symmetric.AES$KeyGen128"); -+ // put("KeyGenerator.2.16.840.1.101.3.4.22", "org.bouncycastle.jce.provider.symmetric.AES$KeyGen192"); -+ // put("KeyGenerator.2.16.840.1.101.3.4.42", "org.bouncycastle.jce.provider.symmetric.AES$KeyGen256"); -+ // put("KeyGenerator." + NISTObjectIdentifiers.id_aes128_ECB, "org.bouncycastle.jce.provider.symmetric.AES$KeyGen128"); -+ // put("KeyGenerator." + NISTObjectIdentifiers.id_aes128_CBC, "org.bouncycastle.jce.provider.symmetric.AES$KeyGen128"); -+ // put("KeyGenerator." + NISTObjectIdentifiers.id_aes128_OFB, "org.bouncycastle.jce.provider.symmetric.AES$KeyGen128"); -+ // put("KeyGenerator." + NISTObjectIdentifiers.id_aes128_CFB, "org.bouncycastle.jce.provider.symmetric.AES$KeyGen128"); -+ // put("KeyGenerator." + NISTObjectIdentifiers.id_aes192_ECB, "org.bouncycastle.jce.provider.symmetric.AES$KeyGen192"); -+ // put("KeyGenerator." + NISTObjectIdentifiers.id_aes192_CBC, "org.bouncycastle.jce.provider.symmetric.AES$KeyGen192"); -+ // put("KeyGenerator." + NISTObjectIdentifiers.id_aes192_OFB, "org.bouncycastle.jce.provider.symmetric.AES$KeyGen192"); -+ // put("KeyGenerator." + NISTObjectIdentifiers.id_aes192_CFB, "org.bouncycastle.jce.provider.symmetric.AES$KeyGen192"); -+ // put("KeyGenerator." + NISTObjectIdentifiers.id_aes256_ECB, "org.bouncycastle.jce.provider.symmetric.AES$KeyGen256"); -+ // put("KeyGenerator." + NISTObjectIdentifiers.id_aes256_CBC, "org.bouncycastle.jce.provider.symmetric.AES$KeyGen256"); -+ // put("KeyGenerator." + NISTObjectIdentifiers.id_aes256_OFB, "org.bouncycastle.jce.provider.symmetric.AES$KeyGen256"); -+ // put("KeyGenerator." + NISTObjectIdentifiers.id_aes256_CFB, "org.bouncycastle.jce.provider.symmetric.AES$KeyGen256"); -+ // put("KeyGenerator.AESWRAP", "org.bouncycastle.jce.provider.symmetric.AES$KeyGen"); -+ // put("KeyGenerator." + NISTObjectIdentifiers.id_aes128_wrap, "org.bouncycastle.jce.provider.symmetric.AES$KeyGen128"); -+ // put("KeyGenerator." + NISTObjectIdentifiers.id_aes192_wrap, "org.bouncycastle.jce.provider.symmetric.AES$KeyGen192"); -+ // put("KeyGenerator." + NISTObjectIdentifiers.id_aes256_wrap, "org.bouncycastle.jce.provider.symmetric.AES$KeyGen256"); -+ // -+ // put("Mac.AESCMAC", "org.bouncycastle.jce.provider.symmetric.AES$AESCMAC"); -+ // END android-removed - } - } - } -diff -Naur bcprov-jdk16-146.orig/org/bouncycastle/jce/provider/symmetric/ARC4.java bcprov-jdk16-146/org/bouncycastle/jce/provider/symmetric/ARC4.java ---- bcprov-jdk16-146.orig/org/bouncycastle/jce/provider/symmetric/ARC4.java 2011-02-23 20:08:56.000000000 +0000 -+++ bcprov-jdk16-146/org/bouncycastle/jce/provider/symmetric/ARC4.java 2012-07-27 18:48:00.031478939 +0000 -@@ -27,7 +27,9 @@ - { - public KeyGen() - { -- super("RC4", 128, new CipherKeyGenerator()); -+ // BEGIN android-changed -+ super("ARC4", 128, new CipherKeyGenerator()); -+ // END android-changed - } - } - -diff -Naur bcprov-jdk16-146.orig/org/bouncycastle/jce/provider/symmetric/Blowfish.java bcprov-jdk16-146/org/bouncycastle/jce/provider/symmetric/Blowfish.java ---- bcprov-jdk16-146.orig/org/bouncycastle/jce/provider/symmetric/Blowfish.java 2011-02-23 20:08:56.000000000 +0000 -+++ bcprov-jdk16-146/org/bouncycastle/jce/provider/symmetric/Blowfish.java 2012-07-27 18:48:00.031478939 +0000 -@@ -57,7 +57,9 @@ - public Mappings() - { - put("Cipher.BLOWFISH", "org.bouncycastle.jce.provider.symmetric.Blowfish$ECB"); -- put("Cipher.1.3.6.1.4.1.3029.1.2", "org.bouncycastle.jce.provider.symmetric.Blowfish$CBC"); -+ // BEGIN android-removed -+ // put("Cipher.1.3.6.1.4.1.3029.1.2", "org.bouncycastle.jce.provider.symmetric.Blowfish$CBC"); -+ // END android-removed - put("KeyGenerator.BLOWFISH", "org.bouncycastle.jce.provider.symmetric.Blowfish$KeyGen"); - put("Alg.Alias.KeyGenerator.1.3.6.1.4.1.3029.1.2", "BLOWFISH"); - put("AlgorithmParameters.BLOWFISH", "org.bouncycastle.jce.provider.symmetric.Blowfish$AlgParams"); -diff -Naur bcprov-jdk16-146.orig/org/bouncycastle/jce/provider/symmetric/DESede.java bcprov-jdk16-146/org/bouncycastle/jce/provider/symmetric/DESede.java ---- bcprov-jdk16-146.orig/org/bouncycastle/jce/provider/symmetric/DESede.java 2011-02-23 20:08:56.000000000 +0000 -+++ bcprov-jdk16-146/org/bouncycastle/jce/provider/symmetric/DESede.java 2012-07-27 18:48:00.031478939 +0000 -@@ -14,11 +14,15 @@ - import org.bouncycastle.crypto.KeyGenerationParameters; - import org.bouncycastle.crypto.engines.DESedeEngine; - import org.bouncycastle.crypto.engines.DESedeWrapEngine; --import org.bouncycastle.crypto.engines.RFC3211WrapEngine; -+// BEGIN android-removed -+// import org.bouncycastle.crypto.engines.RFC3211WrapEngine; -+// END android-removed - import org.bouncycastle.crypto.generators.DESedeKeyGenerator; - import org.bouncycastle.crypto.macs.CBCBlockCipherMac; --import org.bouncycastle.crypto.macs.CFBBlockCipherMac; --import org.bouncycastle.crypto.macs.CMac; -+// BEGIN android-removed -+// import org.bouncycastle.crypto.macs.CFBBlockCipherMac; -+// import org.bouncycastle.crypto.macs.CMac; -+// END android-removed - import org.bouncycastle.crypto.modes.CBCBlockCipher; - import org.bouncycastle.crypto.paddings.ISO7816d4Padding; - import org.bouncycastle.jce.provider.JCEBlockCipher; -@@ -51,17 +55,19 @@ - } - } - -- /** -- * DESede CFB8 -- */ -- public static class DESedeCFB8 -- extends JCEMac -- { -- public DESedeCFB8() -- { -- super(new CFBBlockCipherMac(new DESedeEngine())); -- } -- } -+ // BEGIN android-removed -+ // /** -+ // * DESede CFB8 -+ // */ -+ // public static class DESedeCFB8 -+ // extends JCEMac -+ // { -+ // public DESedeCFB8() -+ // { -+ // super(new CFBBlockCipherMac(new DESedeEngine())); -+ // } -+ // } -+ // END android-removed - - /** - * DESede64 -@@ -96,14 +102,16 @@ - } - } - -- static public class CMAC -- extends JCEMac -- { -- public CMAC() -- { -- super(new CMac(new DESedeEngine())); -- } -- } -+ // BEGIN android-removed -+ // static public class CMAC -+ // extends JCEMac -+ // { -+ // public CMAC() -+ // { -+ // super(new CMac(new DESedeEngine())); -+ // } -+ // } -+ // END android-removed - - public static class Wrap - extends WrapCipherSpi -@@ -114,14 +122,16 @@ - } - } - -- public static class RFC3211 -- extends WrapCipherSpi -- { -- public RFC3211() -- { -- super(new RFC3211WrapEngine(new DESedeEngine()), 8); -- } -- } -+ // BEGIN android-removed -+ // public static class RFC3211 -+ // extends WrapCipherSpi -+ // { -+ // public RFC3211() -+ // { -+ // super(new RFC3211WrapEngine(new DESedeEngine()), 8); -+ // } -+ // } -+ // END android-removed - - /** - * DESede - the default for this is to generate a key in -@@ -262,32 +272,42 @@ - public Mappings() - { - put("Cipher.DESEDE", "org.bouncycastle.jce.provider.symmetric.DESede$ECB"); -- put("Cipher." + PKCSObjectIdentifiers.des_EDE3_CBC, "org.bouncycastle.jce.provider.symmetric.DESede$CBC"); -- put("Cipher." + OIWObjectIdentifiers.desCBC, "org.bouncycastle.jce.provider.symmetric.DESede$CBC"); -+ // BEGIN android-removed -+ // put("Cipher." + PKCSObjectIdentifiers.des_EDE3_CBC, "org.bouncycastle.jce.provider.symmetric.DESede$CBC"); -+ // put("Cipher." + OIWObjectIdentifiers.desCBC, "org.bouncycastle.jce.provider.symmetric.DESede$CBC"); -+ // END android-removed - put("Cipher.DESEDEWRAP", "org.bouncycastle.jce.provider.symmetric.DESede$Wrap"); -- put("Cipher." + PKCSObjectIdentifiers.id_alg_CMS3DESwrap, "org.bouncycastle.jce.provider.symmetric.DESede$Wrap"); -- put("Cipher.DESEDERFC3211WRAP", "org.bouncycastle.jce.provider.symmetric.DESede$RFC3211"); -+ // BEGIN android-changed -+ put("Alg.Alias.Cipher." + PKCSObjectIdentifiers.id_alg_CMS3DESwrap, "DESEDEWRAP"); -+ // END android-changed -+ // BEGIN android-removed -+ // put("Cipher.DESEDERFC3211WRAP", "org.bouncycastle.jce.provider.symmetric.DESede$RFC3211"); -+ // END android-removed - - put("KeyGenerator.DESEDE", "org.bouncycastle.jce.provider.symmetric.DESede$KeyGenerator"); -- put("KeyGenerator." + PKCSObjectIdentifiers.des_EDE3_CBC, "org.bouncycastle.jce.provider.symmetric.DESede$KeyGenerator3"); -- put("KeyGenerator.DESEDEWRAP", "org.bouncycastle.jce.provider.symmetric.DESede$KeyGenerator"); -+ // BEGIN android-removed -+ // put("KeyGenerator." + PKCSObjectIdentifiers.des_EDE3_CBC, "org.bouncycastle.jce.provider.symmetric.DESede$KeyGenerator3"); -+ // put("KeyGenerator.DESEDEWRAP", "org.bouncycastle.jce.provider.symmetric.DESede$KeyGenerator"); -+ // END android-removed - - put("SecretKeyFactory.DESEDE", "org.bouncycastle.jce.provider.symmetric.DESede$KeyFactory"); - -- put("Mac.DESEDECMAC", "org.bouncycastle.jce.provider.symmetric.DESede$CMAC"); -- put("Mac.DESEDEMAC", "org.bouncycastle.jce.provider.symmetric.DESede$CBCMAC"); -- put("Alg.Alias.Mac.DESEDE", "DESEDEMAC"); -- -- put("Mac.DESEDEMAC/CFB8", "org.bouncycastle.jce.provider.symmetric.DESede$DESedeCFB8"); -- put("Alg.Alias.Mac.DESEDE/CFB8", "DESEDEMAC/CFB8"); -- -- put("Mac.DESEDEMAC64", "org.bouncycastle.jce.provider.symmetric.DESede$DESede64"); -- put("Alg.Alias.Mac.DESEDE64", "DESEDEMAC64"); -- -- put("Mac.DESEDEMAC64WITHISO7816-4PADDING", "org.bouncycastle.jce.provider.symmetric.DESede$DESede64with7816d4"); -- put("Alg.Alias.Mac.DESEDE64WITHISO7816-4PADDING", "DESEDEMAC64WITHISO7816-4PADDING"); -- put("Alg.Alias.Mac.DESEDEISO9797ALG1MACWITHISO7816-4PADDING", "DESEDEMAC64WITHISO7816-4PADDING"); -- put("Alg.Alias.Mac.DESEDEISO9797ALG1WITHISO7816-4PADDING", "DESEDEMAC64WITHISO7816-4PADDING"); -+ // BEGIN android-removed -+ // put("Mac.DESEDECMAC", "org.bouncycastle.jce.provider.symmetric.DESede$CMAC"); -+ // put("Mac.DESEDEMAC", "org.bouncycastle.jce.provider.symmetric.DESede$CBCMAC"); -+ // put("Alg.Alias.Mac.DESEDE", "DESEDEMAC"); -+ // -+ // put("Mac.DESEDEMAC/CFB8", "org.bouncycastle.jce.provider.symmetric.DESede$DESedeCFB8"); -+ // put("Alg.Alias.Mac.DESEDE/CFB8", "DESEDEMAC/CFB8"); -+ // -+ // put("Mac.DESEDEMAC64", "org.bouncycastle.jce.provider.symmetric.DESede$DESede64"); -+ // put("Alg.Alias.Mac.DESEDE64", "DESEDEMAC64"); -+ // -+ // put("Mac.DESEDEMAC64WITHISO7816-4PADDING", "org.bouncycastle.jce.provider.symmetric.DESede$DESede64with7816d4"); -+ // put("Alg.Alias.Mac.DESEDE64WITHISO7816-4PADDING", "DESEDEMAC64WITHISO7816-4PADDING"); -+ // put("Alg.Alias.Mac.DESEDEISO9797ALG1MACWITHISO7816-4PADDING", "DESEDEMAC64WITHISO7816-4PADDING"); -+ // put("Alg.Alias.Mac.DESEDEISO9797ALG1WITHISO7816-4PADDING", "DESEDEMAC64WITHISO7816-4PADDING"); -+ // END android-removed - } - } - } -diff -Naur bcprov-jdk16-146.orig/org/bouncycastle/openssl/PEMUtilities.java bcprov-jdk16-146/org/bouncycastle/openssl/PEMUtilities.java ---- bcprov-jdk16-146.orig/org/bouncycastle/openssl/PEMUtilities.java 2011-02-23 20:08:56.000000000 +0000 -+++ bcprov-jdk16-146/org/bouncycastle/openssl/PEMUtilities.java 2012-07-27 18:48:00.031478939 +0000 -@@ -45,10 +45,12 @@ - PKCS5_SCHEME_2.add(NISTObjectIdentifiers.id_aes192_CBC); - PKCS5_SCHEME_2.add(NISTObjectIdentifiers.id_aes256_CBC); - -- KEYSIZES.put(PKCSObjectIdentifiers.des_EDE3_CBC.getId(), new Integer(192)); -- KEYSIZES.put(NISTObjectIdentifiers.id_aes128_CBC.getId(), new Integer(128)); -- KEYSIZES.put(NISTObjectIdentifiers.id_aes192_CBC.getId(), new Integer(192)); -- KEYSIZES.put(NISTObjectIdentifiers.id_aes256_CBC.getId(), new Integer(256)); -+ // BEGIN android-changed -+ KEYSIZES.put(PKCSObjectIdentifiers.des_EDE3_CBC.getId(), Integer.valueOf(192)); -+ KEYSIZES.put(NISTObjectIdentifiers.id_aes128_CBC.getId(), Integer.valueOf(128)); -+ KEYSIZES.put(NISTObjectIdentifiers.id_aes192_CBC.getId(), Integer.valueOf(192)); -+ KEYSIZES.put(NISTObjectIdentifiers.id_aes256_CBC.getId(), Integer.valueOf(256)); -+ // END android-changed - } - - static int getKeySize(String algorithm) -diff -Naur bcprov-jdk16-146.orig/org/bouncycastle/x509/X509Util.java bcprov-jdk16-146/org/bouncycastle/x509/X509Util.java ---- bcprov-jdk16-146.orig/org/bouncycastle/x509/X509Util.java 2011-02-23 20:08:56.000000000 +0000 -+++ bcprov-jdk16-146/org/bouncycastle/x509/X509Util.java 2012-07-27 18:48:00.011478563 +0000 -@@ -44,14 +44,18 @@ + import org.bouncycastle.jce.X509Principal; +@@ -44,14 +46,18 @@ static { @@ -10848,7 +9388,7 @@ diff -Naur bcprov-jdk16-146.orig/org/bouncycastle/x509/X509Util.java bcprov-jdk1 algorithms.put("SHA256WITHRSAENCRYPTION", PKCSObjectIdentifiers.sha256WithRSAEncryption); algorithms.put("SHA256WITHRSA", PKCSObjectIdentifiers.sha256WithRSAEncryption); algorithms.put("SHA384WITHRSAENCRYPTION", PKCSObjectIdentifiers.sha384WithRSAEncryption); -@@ -59,45 +63,59 @@ +@@ -59,45 +65,59 @@ algorithms.put("SHA512WITHRSAENCRYPTION", PKCSObjectIdentifiers.sha512WithRSAEncryption); algorithms.put("SHA512WITHRSA", PKCSObjectIdentifiers.sha512WithRSAEncryption); algorithms.put("SHA1WITHRSAANDMGF1", PKCSObjectIdentifiers.id_RSASSA_PSS); @@ -10924,7 +9464,7 @@ diff -Naur bcprov-jdk16-146.orig/org/bouncycastle/x509/X509Util.java bcprov-jdk1 noParams.add(NISTObjectIdentifiers.dsa_with_sha256); noParams.add(NISTObjectIdentifiers.dsa_with_sha384); noParams.add(NISTObjectIdentifiers.dsa_with_sha512); -@@ -105,25 +123,39 @@ +@@ -105,25 +125,39 @@ // // RFC 4491 // @@ -10973,7 +9513,7 @@ diff -Naur bcprov-jdk16-146.orig/org/bouncycastle/x509/X509Util.java bcprov-jdk1 params.put("SHA512WITHRSAANDMGF1", creatPSSParams(sha512AlgId, 64)); } -@@ -166,7 +198,9 @@ +@@ -166,7 +200,9 @@ } else { @@ -10984,9 +9524,9 @@ diff -Naur bcprov-jdk16-146.orig/org/bouncycastle/x509/X509Util.java bcprov-jdk1 } } -diff -Naur bcprov-jdk16-146.orig/org/bouncycastle/x509/extension/X509ExtensionUtil.java bcprov-jdk16-146/org/bouncycastle/x509/extension/X509ExtensionUtil.java ---- bcprov-jdk16-146.orig/org/bouncycastle/x509/extension/X509ExtensionUtil.java 2011-02-23 20:08:56.000000000 +0000 -+++ bcprov-jdk16-146/org/bouncycastle/x509/extension/X509ExtensionUtil.java 2012-07-27 18:48:00.011478563 +0000 +diff -Naur bcprov-jdk15on-147.orig/org/bouncycastle/x509/extension/X509ExtensionUtil.java bcprov-jdk15on-147/org/bouncycastle/x509/extension/X509ExtensionUtil.java +--- bcprov-jdk15on-147.orig/org/bouncycastle/x509/extension/X509ExtensionUtil.java 2012-03-22 15:11:48.000000000 +0000 ++++ bcprov-jdk15on-147/org/bouncycastle/x509/extension/X509ExtensionUtil.java 2012-09-11 00:12:44.000000000 +0000 @@ -62,7 +62,9 @@ { GeneralName genName = GeneralName.getInstance(it.nextElement()); @@ -10998,34 +9538,3 @@ diff -Naur bcprov-jdk16-146.orig/org/bouncycastle/x509/extension/X509ExtensionUt switch (genName.getTagNo()) { case GeneralName.ediPartyName: -diff -Naur bcprov-jdk16-146.orig/src/main/java/org/bouncycastle/jce/provider/CertBlacklist.java.rej bcprov-jdk16-146/src/main/java/org/bouncycastle/jce/provider/CertBlacklist.java.rej ---- bcprov-jdk16-146.orig/src/main/java/org/bouncycastle/jce/provider/CertBlacklist.java.rej 1970-01-01 00:00:00.000000000 +0000 -+++ bcprov-jdk16-146/src/main/java/org/bouncycastle/jce/provider/CertBlacklist.java.rej 2012-07-27 18:47:59.931477059 +0000 -@@ -0,0 +1,27 @@ -+--- src/main/java/org/bouncycastle/jce/provider/CertBlacklist.java -++++ src/main/java/org/bouncycastle/jce/provider/CertBlacklist.java -+@@ -144,8 +144,9 @@ -+ String pubkeyBlacklist = readBlacklist(path); -+ if (!pubkeyBlacklist.equals("")) { -+ for (String value : pubkeyBlacklist.split(",")) { -++ value = value.trim(); -+ if (isPubkeyHash(value)) { -+- bl.add(Hex.decode(value)); -++ bl.add(value.getBytes()); -+ } else { -+ System.logW("Tried to blacklist invalid pubkey " + value); -+ } -+@@ -161,7 +162,12 @@ -+ digest.update(encoded, 0, encoded.length); -+ byte[] out = new byte[digest.getDigestSize()]; -+ digest.doFinal(out, 0); -+- return pubkeyBlacklist.contains(out); -++ for (byte[] blacklisted : pubkeyBlacklist) { -++ if (Arrays.equals(blacklisted, Hex.encode(out))) { -++ return true; -++ } -++ } -++ return false; -+ } -+ -+ public boolean isSerialNumberBlackListed(BigInteger serial) { |