summaryrefslogtreecommitdiffstats
path: root/patches
diff options
context:
space:
mode:
authorBrian Carlstrom <bdc@google.com>2010-11-08 14:02:51 -0800
committerBrian Carlstrom <bdc@google.com>2010-11-17 15:20:52 -0800
commit8212855a312dc8ebe081a3e08b1d2d8f8757af02 (patch)
tree5a552d77fb57d594c517daaabf6e5df0b1088924 /patches
parent4fd8dc053196f660b5bd66c8a6d5dbf5d6428b67 (diff)
downloadandroid_external_bouncycastle-8212855a312dc8ebe081a3e08b1d2d8f8757af02.tar.gz
android_external_bouncycastle-8212855a312dc8ebe081a3e08b1d2d8f8757af02.tar.bz2
android_external_bouncycastle-8212855a312dc8ebe081a3e08b1d2d8f8757af02.zip
Restoring bouncycastle Elliptic Curve Key support
Specific algorithms now available: - KeyAgreement.ECDH - KeyFactory.EC - KeyPairGenerator.EC - Signature.NONEWITHECDSA - Signature.ECDSA - Signature.SHA256WITHECDSA - Signature.SHA384WITHECDSA - Signature.SHA512WITHECDSA Bug: 3058375 Change-Id: I611b23b2f72bb5d9898d4c695f1677c7914353c6
Diffstat (limited to 'patches')
-rw-r--r--patches/android.patch2041
1 files changed, 1474 insertions, 567 deletions
diff --git a/patches/android.patch b/patches/android.patch
index be9e66a..4f4a0b6 100644
--- a/patches/android.patch
+++ b/patches/android.patch
@@ -1,6 +1,6 @@
diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/asn1/ASN1Collection.java bcprov-jdk16-145/org/bouncycastle/asn1/ASN1Collection.java
--- bcprov-jdk16-145.orig/org/bouncycastle/asn1/ASN1Collection.java 1970-01-01 00:00:00.000000000 +0000
-+++ bcprov-jdk16-145/org/bouncycastle/asn1/ASN1Collection.java 2010-11-09 01:06:52.000000000 +0000
++++ bcprov-jdk16-145/org/bouncycastle/asn1/ASN1Collection.java 2010-11-17 22:23:31.000000000 +0000
@@ -0,0 +1,298 @@
+package org.bouncycastle.asn1;
+
@@ -302,7 +302,7 @@ diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/asn1/ASN1Collection.java bcpro
+}
diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/asn1/ASN1InputStream.java bcprov-jdk16-145/org/bouncycastle/asn1/ASN1InputStream.java
--- bcprov-jdk16-145.orig/org/bouncycastle/asn1/ASN1InputStream.java 2010-01-11 21:46:14.000000000 +0000
-+++ bcprov-jdk16-145/org/bouncycastle/asn1/ASN1InputStream.java 2010-11-09 01:06:52.000000000 +0000
++++ bcprov-jdk16-145/org/bouncycastle/asn1/ASN1InputStream.java 2010-11-17 22:23:31.000000000 +0000
@@ -348,7 +348,9 @@
case BMP_STRING:
return new DERBMPString(bytes);
@@ -316,7 +316,7 @@ diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/asn1/ASN1InputStream.java bcpr
case GENERALIZED_TIME:
diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/asn1/ASN1Null.java bcprov-jdk16-145/org/bouncycastle/asn1/ASN1Null.java
--- bcprov-jdk16-145.orig/org/bouncycastle/asn1/ASN1Null.java 2010-01-11 21:46:14.000000000 +0000
-+++ bcprov-jdk16-145/org/bouncycastle/asn1/ASN1Null.java 2010-11-09 01:06:52.000000000 +0000
++++ bcprov-jdk16-145/org/bouncycastle/asn1/ASN1Null.java 2010-11-17 22:23:31.000000000 +0000
@@ -8,9 +8,11 @@
public abstract class ASN1Null
extends ASN1Object
@@ -332,7 +332,7 @@ diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/asn1/ASN1Null.java bcprov-jdk1
{
diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/asn1/ASN1Sequence.java bcprov-jdk16-145/org/bouncycastle/asn1/ASN1Sequence.java
--- bcprov-jdk16-145.orig/org/bouncycastle/asn1/ASN1Sequence.java 2010-01-11 21:46:14.000000000 +0000
-+++ bcprov-jdk16-145/org/bouncycastle/asn1/ASN1Sequence.java 2010-11-09 01:06:52.000000000 +0000
++++ bcprov-jdk16-145/org/bouncycastle/asn1/ASN1Sequence.java 2010-11-17 22:23:31.000000000 +0000
@@ -2,12 +2,20 @@
import java.io.IOException;
@@ -496,7 +496,7 @@ diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/asn1/ASN1Sequence.java bcprov-
}
diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/asn1/ASN1Set.java bcprov-jdk16-145/org/bouncycastle/asn1/ASN1Set.java
--- bcprov-jdk16-145.orig/org/bouncycastle/asn1/ASN1Set.java 2010-01-11 21:46:14.000000000 +0000
-+++ bcprov-jdk16-145/org/bouncycastle/asn1/ASN1Set.java 2010-11-09 01:06:52.000000000 +0000
++++ bcprov-jdk16-145/org/bouncycastle/asn1/ASN1Set.java 2010-11-17 22:23:31.000000000 +0000
@@ -3,12 +3,20 @@
import java.io.ByteArrayOutputStream;
import java.io.IOException;
@@ -845,7 +845,7 @@ diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/asn1/ASN1Set.java bcprov-jdk16
}
diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/asn1/DERBoolean.java bcprov-jdk16-145/org/bouncycastle/asn1/DERBoolean.java
--- bcprov-jdk16-145.orig/org/bouncycastle/asn1/DERBoolean.java 2010-01-11 21:46:14.000000000 +0000
-+++ bcprov-jdk16-145/org/bouncycastle/asn1/DERBoolean.java 2010-11-09 01:06:52.000000000 +0000
++++ bcprov-jdk16-145/org/bouncycastle/asn1/DERBoolean.java 2010-11-17 22:23:31.000000000 +0000
@@ -5,7 +5,9 @@
public class DERBoolean
extends ASN1Object
@@ -918,7 +918,7 @@ diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/asn1/DERBoolean.java bcprov-jd
{
diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/asn1/DERInputStream.java bcprov-jdk16-145/org/bouncycastle/asn1/DERInputStream.java
--- bcprov-jdk16-145.orig/org/bouncycastle/asn1/DERInputStream.java 2010-01-11 21:46:14.000000000 +0000
-+++ bcprov-jdk16-145/org/bouncycastle/asn1/DERInputStream.java 2010-11-09 01:06:52.000000000 +0000
++++ bcprov-jdk16-145/org/bouncycastle/asn1/DERInputStream.java 2010-11-17 22:23:31.000000000 +0000
@@ -144,7 +144,9 @@
return new DERConstructedSet(v);
}
@@ -943,7 +943,7 @@ diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/asn1/DERInputStream.java bcpro
{
diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/asn1/DERNull.java bcprov-jdk16-145/org/bouncycastle/asn1/DERNull.java
--- bcprov-jdk16-145.orig/org/bouncycastle/asn1/DERNull.java 2010-01-11 21:46:14.000000000 +0000
-+++ bcprov-jdk16-145/org/bouncycastle/asn1/DERNull.java 2010-11-09 01:06:52.000000000 +0000
++++ bcprov-jdk16-145/org/bouncycastle/asn1/DERNull.java 2010-11-17 22:23:31.000000000 +0000
@@ -10,9 +10,13 @@
{
public static final DERNull INSTANCE = new DERNull();
@@ -962,7 +962,7 @@ diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/asn1/DERNull.java bcprov-jdk16
diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/asn1/DERObjectIdentifier.java bcprov-jdk16-145/org/bouncycastle/asn1/DERObjectIdentifier.java
--- bcprov-jdk16-145.orig/org/bouncycastle/asn1/DERObjectIdentifier.java 2010-01-11 21:46:14.000000000 +0000
-+++ bcprov-jdk16-145/org/bouncycastle/asn1/DERObjectIdentifier.java 2010-11-09 01:06:52.000000000 +0000
++++ bcprov-jdk16-145/org/bouncycastle/asn1/DERObjectIdentifier.java 2010-11-17 22:23:31.000000000 +0000
@@ -111,7 +111,13 @@
}
}
@@ -995,7 +995,7 @@ diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/asn1/DERObjectIdentifier.java
public String getId()
diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/asn1/DERPrintableString.java bcprov-jdk16-145/org/bouncycastle/asn1/DERPrintableString.java
--- bcprov-jdk16-145.orig/org/bouncycastle/asn1/DERPrintableString.java 2010-01-11 21:46:14.000000000 +0000
-+++ bcprov-jdk16-145/org/bouncycastle/asn1/DERPrintableString.java 2010-11-09 01:06:52.000000000 +0000
++++ bcprov-jdk16-145/org/bouncycastle/asn1/DERPrintableString.java 2010-11-17 22:23:31.000000000 +0000
@@ -9,7 +9,9 @@
extends ASN1Object
implements DERString
@@ -1031,7 +1031,7 @@ diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/asn1/DERPrintableString.java b
public String getString()
diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/asn1/OrderedTable.java bcprov-jdk16-145/org/bouncycastle/asn1/OrderedTable.java
--- bcprov-jdk16-145.orig/org/bouncycastle/asn1/OrderedTable.java 1970-01-01 00:00:00.000000000 +0000
-+++ bcprov-jdk16-145/org/bouncycastle/asn1/OrderedTable.java 2010-11-09 01:06:52.000000000 +0000
++++ bcprov-jdk16-145/org/bouncycastle/asn1/OrderedTable.java 2010-11-17 22:23:31.000000000 +0000
@@ -0,0 +1,281 @@
+package org.bouncycastle.asn1;
+
@@ -1316,7 +1316,7 @@ diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/asn1/OrderedTable.java bcprov-
+}
diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/asn1/pkcs/EncryptedPrivateKeyInfo.java bcprov-jdk16-145/org/bouncycastle/asn1/pkcs/EncryptedPrivateKeyInfo.java
--- bcprov-jdk16-145.orig/org/bouncycastle/asn1/pkcs/EncryptedPrivateKeyInfo.java 2010-01-11 21:46:14.000000000 +0000
-+++ bcprov-jdk16-145/org/bouncycastle/asn1/pkcs/EncryptedPrivateKeyInfo.java 2010-11-09 01:06:52.000000000 +0000
++++ bcprov-jdk16-145/org/bouncycastle/asn1/pkcs/EncryptedPrivateKeyInfo.java 2010-11-17 22:23:31.000000000 +0000
@@ -37,10 +37,13 @@
public static EncryptedPrivateKeyInfo getInstance(
Object obj)
@@ -1334,7 +1334,7 @@ diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/asn1/pkcs/EncryptedPrivateKeyI
return new EncryptedPrivateKeyInfo((ASN1Sequence)obj);
diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/asn1/pkcs/PKCSObjectIdentifiers.java bcprov-jdk16-145/org/bouncycastle/asn1/pkcs/PKCSObjectIdentifiers.java
--- bcprov-jdk16-145.orig/org/bouncycastle/asn1/pkcs/PKCSObjectIdentifiers.java 2010-01-11 21:46:14.000000000 +0000
-+++ bcprov-jdk16-145/org/bouncycastle/asn1/pkcs/PKCSObjectIdentifiers.java 2010-11-09 01:06:52.000000000 +0000
++++ bcprov-jdk16-145/org/bouncycastle/asn1/pkcs/PKCSObjectIdentifiers.java 2010-11-17 22:23:31.000000000 +0000
@@ -10,7 +10,10 @@
//
static final String pkcs_1 = "1.2.840.113549.1.1";
@@ -1361,7 +1361,7 @@ diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/asn1/pkcs/PKCSObjectIdentifier
// md4 OBJECT IDENTIFIER ::=
diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/asn1/pkcs/RSAESOAEPparams.java bcprov-jdk16-145/org/bouncycastle/asn1/pkcs/RSAESOAEPparams.java
--- bcprov-jdk16-145.orig/org/bouncycastle/asn1/pkcs/RSAESOAEPparams.java 2010-01-11 21:46:14.000000000 +0000
-+++ bcprov-jdk16-145/org/bouncycastle/asn1/pkcs/RSAESOAEPparams.java 2010-11-09 01:06:52.000000000 +0000
++++ bcprov-jdk16-145/org/bouncycastle/asn1/pkcs/RSAESOAEPparams.java 2010-11-17 22:23:31.000000000 +0000
@@ -19,7 +19,9 @@
private AlgorithmIdentifier maskGenAlgorithm;
private AlgorithmIdentifier pSourceAlgorithm;
@@ -1375,7 +1375,7 @@ diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/asn1/pkcs/RSAESOAEPparams.java
diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/asn1/pkcs/RSASSAPSSparams.java bcprov-jdk16-145/org/bouncycastle/asn1/pkcs/RSASSAPSSparams.java
--- bcprov-jdk16-145.orig/org/bouncycastle/asn1/pkcs/RSASSAPSSparams.java 2010-01-11 21:46:14.000000000 +0000
-+++ bcprov-jdk16-145/org/bouncycastle/asn1/pkcs/RSASSAPSSparams.java 2010-11-09 01:06:52.000000000 +0000
++++ bcprov-jdk16-145/org/bouncycastle/asn1/pkcs/RSASSAPSSparams.java 2010-11-17 22:23:31.000000000 +0000
@@ -20,7 +20,9 @@
private DERInteger saltLength;
private DERInteger trailerField;
@@ -1389,7 +1389,7 @@ diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/asn1/pkcs/RSASSAPSSparams.java
public final static DERInteger DEFAULT_TRAILER_FIELD = new DERInteger(1);
diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/asn1/util/ASN1Dump.java bcprov-jdk16-145/org/bouncycastle/asn1/util/ASN1Dump.java
--- bcprov-jdk16-145.orig/org/bouncycastle/asn1/util/ASN1Dump.java 2010-01-11 21:46:14.000000000 +0000
-+++ bcprov-jdk16-145/org/bouncycastle/asn1/util/ASN1Dump.java 2010-11-09 01:06:52.000000000 +0000
++++ bcprov-jdk16-145/org/bouncycastle/asn1/util/ASN1Dump.java 2010-11-17 22:23:31.000000000 +0000
@@ -90,7 +90,9 @@
{
Object o = e.nextElement();
@@ -1403,7 +1403,7 @@ diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/asn1/util/ASN1Dump.java bcprov
buf.append("NULL");
diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/asn1/x509/AttCertIssuer.java bcprov-jdk16-145/org/bouncycastle/asn1/x509/AttCertIssuer.java
--- bcprov-jdk16-145.orig/org/bouncycastle/asn1/x509/AttCertIssuer.java 2010-01-11 21:46:14.000000000 +0000
-+++ bcprov-jdk16-145/org/bouncycastle/asn1/x509/AttCertIssuer.java 2010-11-09 01:06:52.000000000 +0000
++++ bcprov-jdk16-145/org/bouncycastle/asn1/x509/AttCertIssuer.java 2010-11-17 22:23:31.000000000 +0000
@@ -45,7 +45,7 @@
ASN1TaggedObject obj,
boolean explicit)
@@ -1415,7 +1415,7 @@ diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/asn1/x509/AttCertIssuer.java b
/**
diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/asn1/x509/BasicConstraints.java bcprov-jdk16-145/org/bouncycastle/asn1/x509/BasicConstraints.java
--- bcprov-jdk16-145.orig/org/bouncycastle/asn1/x509/BasicConstraints.java 2010-01-11 21:46:14.000000000 +0000
-+++ bcprov-jdk16-145/org/bouncycastle/asn1/x509/BasicConstraints.java 2010-11-09 01:06:52.000000000 +0000
++++ bcprov-jdk16-145/org/bouncycastle/asn1/x509/BasicConstraints.java 2010-11-17 22:23:31.000000000 +0000
@@ -14,7 +14,9 @@
public class BasicConstraints
extends ASN1Encodable
@@ -1462,7 +1462,7 @@ diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/asn1/x509/BasicConstraints.jav
diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/asn1/x509/IssuingDistributionPoint.java bcprov-jdk16-145/org/bouncycastle/asn1/x509/IssuingDistributionPoint.java
--- bcprov-jdk16-145.orig/org/bouncycastle/asn1/x509/IssuingDistributionPoint.java 2010-01-11 21:46:14.000000000 +0000
-+++ bcprov-jdk16-145/org/bouncycastle/asn1/x509/IssuingDistributionPoint.java 2010-11-09 01:06:52.000000000 +0000
++++ bcprov-jdk16-145/org/bouncycastle/asn1/x509/IssuingDistributionPoint.java 2010-11-17 22:23:31.000000000 +0000
@@ -96,11 +96,15 @@
}
if (onlyContainsUserCerts)
@@ -1501,7 +1501,7 @@ diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/asn1/x509/IssuingDistributionP
seq = new DERSequence(vec);
diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/asn1/x509/X509Extensions.java bcprov-jdk16-145/org/bouncycastle/asn1/x509/X509Extensions.java
--- bcprov-jdk16-145.orig/org/bouncycastle/asn1/x509/X509Extensions.java 2010-01-11 21:46:14.000000000 +0000
-+++ bcprov-jdk16-145/org/bouncycastle/asn1/x509/X509Extensions.java 2010-11-09 01:06:52.000000000 +0000
++++ bcprov-jdk16-145/org/bouncycastle/asn1/x509/X509Extensions.java 2010-11-17 22:23:31.000000000 +0000
@@ -9,6 +9,9 @@
import org.bouncycastle.asn1.DERObject;
import org.bouncycastle.asn1.DERObjectIdentifier;
@@ -1690,7 +1690,7 @@ diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/asn1/x509/X509Extensions.java
}
diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/asn1/x509/X509Name.java bcprov-jdk16-145/org/bouncycastle/asn1/x509/X509Name.java
--- bcprov-jdk16-145.orig/org/bouncycastle/asn1/x509/X509Name.java 2010-01-11 21:46:14.000000000 +0000
-+++ bcprov-jdk16-145/org/bouncycastle/asn1/x509/X509Name.java 2010-11-09 01:06:52.000000000 +0000
++++ bcprov-jdk16-145/org/bouncycastle/asn1/x509/X509Name.java 2010-11-17 22:23:31.000000000 +0000
@@ -247,8 +247,10 @@
*/
public static final Hashtable SymbolLookUp = DefaultLookUp;
@@ -2156,7 +2156,7 @@ diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/asn1/x509/X509Name.java bcprov
{
diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/asn1/x509/X509NameElementList.java bcprov-jdk16-145/org/bouncycastle/asn1/x509/X509NameElementList.java
--- bcprov-jdk16-145.orig/org/bouncycastle/asn1/x509/X509NameElementList.java 1970-01-01 00:00:00.000000000 +0000
-+++ bcprov-jdk16-145/org/bouncycastle/asn1/x509/X509NameElementList.java 2010-11-09 01:06:52.000000000 +0000
++++ bcprov-jdk16-145/org/bouncycastle/asn1/x509/X509NameElementList.java 2010-11-17 22:23:31.000000000 +0000
@@ -0,0 +1,206 @@
+package org.bouncycastle.asn1.x509;
+
@@ -2366,7 +2366,7 @@ diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/asn1/x509/X509NameElementList.
+}
diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/asn1/x509/X509NameTokenizer.java bcprov-jdk16-145/org/bouncycastle/asn1/x509/X509NameTokenizer.java
--- bcprov-jdk16-145.orig/org/bouncycastle/asn1/x509/X509NameTokenizer.java 2010-01-11 21:46:14.000000000 +0000
-+++ bcprov-jdk16-145/org/bouncycastle/asn1/x509/X509NameTokenizer.java 2010-11-09 01:06:52.000000000 +0000
++++ bcprov-jdk16-145/org/bouncycastle/asn1/x509/X509NameTokenizer.java 2010-11-17 22:23:31.000000000 +0000
@@ -58,6 +58,17 @@
}
else
@@ -2394,7 +2394,7 @@ diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/asn1/x509/X509NameTokenizer.ja
\ No newline at end of file
diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/crypto/PBEParametersGenerator.java bcprov-jdk16-145/org/bouncycastle/crypto/PBEParametersGenerator.java
--- bcprov-jdk16-145.orig/org/bouncycastle/crypto/PBEParametersGenerator.java 2010-01-11 21:46:14.000000000 +0000
-+++ bcprov-jdk16-145/org/bouncycastle/crypto/PBEParametersGenerator.java 2010-11-09 01:06:52.000000000 +0000
++++ bcprov-jdk16-145/org/bouncycastle/crypto/PBEParametersGenerator.java 2010-11-17 22:23:30.000000000 +0000
@@ -136,7 +136,8 @@
public static byte[] PKCS12PasswordToBytes(
char[] password)
@@ -2414,7 +2414,7 @@ diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/crypto/PBEParametersGenerator.
}
diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/crypto/digests/OpenSSLDigest.java bcprov-jdk16-145/org/bouncycastle/crypto/digests/OpenSSLDigest.java
--- bcprov-jdk16-145.orig/org/bouncycastle/crypto/digests/OpenSSLDigest.java 1970-01-01 00:00:00.000000000 +0000
-+++ bcprov-jdk16-145/org/bouncycastle/crypto/digests/OpenSSLDigest.java 2010-11-09 01:06:52.000000000 +0000
++++ bcprov-jdk16-145/org/bouncycastle/crypto/digests/OpenSSLDigest.java 2010-11-17 22:23:30.000000000 +0000
@@ -0,0 +1,122 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
@@ -2540,7 +2540,7 @@ diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/crypto/digests/OpenSSLDigest.j
+}
diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/crypto/engines/RC2Engine.java bcprov-jdk16-145/org/bouncycastle/crypto/engines/RC2Engine.java
--- bcprov-jdk16-145.orig/org/bouncycastle/crypto/engines/RC2Engine.java 2010-01-11 21:46:14.000000000 +0000
-+++ bcprov-jdk16-145/org/bouncycastle/crypto/engines/RC2Engine.java 2010-11-09 01:06:52.000000000 +0000
++++ bcprov-jdk16-145/org/bouncycastle/crypto/engines/RC2Engine.java 2010-11-17 22:23:30.000000000 +0000
@@ -313,4 +313,4 @@
out[outOff + 6] = (byte)x76;
out[outOff + 7] = (byte)(x76 >> 8);
@@ -2550,7 +2550,7 @@ diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/crypto/engines/RC2Engine.java
\ No newline at end of file
diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/crypto/macs/HMac.java bcprov-jdk16-145/org/bouncycastle/crypto/macs/HMac.java
--- bcprov-jdk16-145.orig/org/bouncycastle/crypto/macs/HMac.java 2010-01-11 21:46:14.000000000 +0000
-+++ bcprov-jdk16-145/org/bouncycastle/crypto/macs/HMac.java 2010-11-09 01:06:52.000000000 +0000
++++ bcprov-jdk16-145/org/bouncycastle/crypto/macs/HMac.java 2010-11-17 22:23:30.000000000 +0000
@@ -32,23 +32,23 @@
{
blockLengths = new Hashtable();
@@ -2592,7 +2592,7 @@ diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/crypto/macs/HMac.java bcprov-j
private static int getByteLength(
diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/crypto/signers/RSADigestSigner.java bcprov-jdk16-145/org/bouncycastle/crypto/signers/RSADigestSigner.java
--- bcprov-jdk16-145.orig/org/bouncycastle/crypto/signers/RSADigestSigner.java 2010-01-11 21:46:14.000000000 +0000
-+++ bcprov-jdk16-145/org/bouncycastle/crypto/signers/RSADigestSigner.java 2010-11-09 01:06:52.000000000 +0000
++++ bcprov-jdk16-145/org/bouncycastle/crypto/signers/RSADigestSigner.java 2010-11-17 22:23:30.000000000 +0000
@@ -46,8 +46,10 @@
oidMap.put("SHA-384", NISTObjectIdentifiers.id_sha384);
oidMap.put("SHA-512", NISTObjectIdentifiers.id_sha512);
@@ -2608,61 +2608,43 @@ diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/crypto/signers/RSADigestSigner
diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/crypto/util/PrivateKeyFactory.java bcprov-jdk16-145/org/bouncycastle/crypto/util/PrivateKeyFactory.java
--- bcprov-jdk16-145.orig/org/bouncycastle/crypto/util/PrivateKeyFactory.java 2010-01-11 21:46:14.000000000 +0000
-+++ bcprov-jdk16-145/org/bouncycastle/crypto/util/PrivateKeyFactory.java 2010-11-09 01:06:52.000000000 +0000
-@@ -7,31 +7,39 @@
- import org.bouncycastle.asn1.DERInteger;
++++ bcprov-jdk16-145/org/bouncycastle/crypto/util/PrivateKeyFactory.java 2010-11-17 22:23:30.000000000 +0000
+@@ -8,7 +8,9 @@
import org.bouncycastle.asn1.DERObject;
import org.bouncycastle.asn1.DERObjectIdentifier;
--import org.bouncycastle.asn1.nist.NISTNamedCurves;
+ import org.bouncycastle.asn1.nist.NISTNamedCurves;
-import org.bouncycastle.asn1.oiw.ElGamalParameter;
+// BEGIN android-removed
-+// import org.bouncycastle.asn1.nist.NISTNamedCurves;
+// import org.bouncycastle.asn1.oiw.ElGamalParameter;
+// END android-removed
import org.bouncycastle.asn1.oiw.OIWObjectIdentifiers;
import org.bouncycastle.asn1.pkcs.DHParameter;
import org.bouncycastle.asn1.pkcs.PKCSObjectIdentifiers;
- import org.bouncycastle.asn1.pkcs.PrivateKeyInfo;
+@@ -16,7 +18,9 @@
import org.bouncycastle.asn1.pkcs.RSAPrivateKeyStructure;
--import org.bouncycastle.asn1.sec.ECPrivateKeyStructure;
--import org.bouncycastle.asn1.sec.SECNamedCurves;
+ import org.bouncycastle.asn1.sec.ECPrivateKeyStructure;
+ import org.bouncycastle.asn1.sec.SECNamedCurves;
-import org.bouncycastle.asn1.teletrust.TeleTrusTNamedCurves;
+// BEGIN android-removed
-+// import org.bouncycastle.asn1.sec.ECPrivateKeyStructure;
-+// import org.bouncycastle.asn1.sec.SECNamedCurves;
+// import org.bouncycastle.asn1.teletrust.TeleTrusTNamedCurves;
+// END android-removed
import org.bouncycastle.asn1.x509.AlgorithmIdentifier;
import org.bouncycastle.asn1.x509.DSAParameter;
--import org.bouncycastle.asn1.x9.X962NamedCurves;
--import org.bouncycastle.asn1.x9.X962Parameters;
--import org.bouncycastle.asn1.x9.X9ECParameters;
--import org.bouncycastle.asn1.x9.X9ObjectIdentifiers;
-+// BEGIN android-removed
-+// import org.bouncycastle.asn1.x9.X962NamedCurves;
-+// import org.bouncycastle.asn1.x9.X962Parameters;
-+// import org.bouncycastle.asn1.x9.X9ECParameters;
-+// import org.bouncycastle.asn1.x9.X9ObjectIdentifiers;
-+// END android-removed
- import org.bouncycastle.crypto.params.AsymmetricKeyParameter;
- import org.bouncycastle.crypto.params.DHParameters;
- import org.bouncycastle.crypto.params.DHPrivateKeyParameters;
- import org.bouncycastle.crypto.params.DSAParameters;
+ import org.bouncycastle.asn1.x9.X962NamedCurves;
+@@ -30,8 +34,10 @@
import org.bouncycastle.crypto.params.DSAPrivateKeyParameters;
--import org.bouncycastle.crypto.params.ECDomainParameters;
--import org.bouncycastle.crypto.params.ECPrivateKeyParameters;
+ import org.bouncycastle.crypto.params.ECDomainParameters;
+ import org.bouncycastle.crypto.params.ECPrivateKeyParameters;
-import org.bouncycastle.crypto.params.ElGamalParameters;
-import org.bouncycastle.crypto.params.ElGamalPrivateKeyParameters;
+// BEGIN android-removed
-+// import org.bouncycastle.crypto.params.ECDomainParameters;
-+// import org.bouncycastle.crypto.params.ECPrivateKeyParameters;
+// import org.bouncycastle.crypto.params.ElGamalParameters;
+// import org.bouncycastle.crypto.params.ElGamalPrivateKeyParameters;
+// END android-removed
import org.bouncycastle.crypto.params.RSAPrivateCrtKeyParameters;
import java.io.IOException;
-@@ -113,75 +121,77 @@
+@@ -113,52 +119,56 @@
return new DHPrivateKeyParameters(derX.getValue(), dhParams);
}
@@ -2673,199 +2655,118 @@ diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/crypto/util/PrivateKeyFactory.
-
- return new ElGamalPrivateKeyParameters(derX.getValue(), new ElGamalParameters(params.getP(), params.getG()));
- }
-- else if (algId.getObjectId().equals(X9ObjectIdentifiers.id_dsa))
-- {
-- DERInteger derX = (DERInteger)keyInfo.getPrivateKey();
-- DEREncodable de = keyInfo.getAlgorithmId().getParameters();
++ // BEGIN android-removed
++ // else if (algId.getObjectId().equals(OIWObjectIdentifiers.elGamalAlgorithm))
++ // {
++ // ElGamalParameter params = new ElGamalParameter((ASN1Sequence)keyInfo.getAlgorithmId().getParameters());
++ // DERInteger derX = (DERInteger)keyInfo.getPrivateKey();
++ //
++ // return new ElGamalPrivateKeyParameters(derX.getValue(), new ElGamalParameters(params.getP(), params.getG()));
++ // }
++ // END android-removed
+ else if (algId.getObjectId().equals(X9ObjectIdentifiers.id_dsa))
+ {
+ DERInteger derX = (DERInteger)keyInfo.getPrivateKey();
+ DEREncodable de = keyInfo.getAlgorithmId().getParameters();
-
-- DSAParameters parameters = null;
-- if (de != null)
-- {
-- DSAParameter params = DSAParameter.getInstance(de.getDERObject());
-- parameters = new DSAParameters(params.getP(), params.getQ(), params.getG());
-- }
++
+ DSAParameters parameters = null;
+ if (de != null)
+ {
+ DSAParameter params = DSAParameter.getInstance(de.getDERObject());
+ parameters = new DSAParameters(params.getP(), params.getQ(), params.getG());
+ }
-
-- return new DSAPrivateKeyParameters(derX.getValue(), parameters);
-- }
-- else if (algId.getObjectId().equals(X9ObjectIdentifiers.id_ecPublicKey))
-- {
-- X962Parameters params = new X962Parameters((DERObject)keyInfo.getAlgorithmId().getParameters());
-- ECDomainParameters dParams = null;
++
+ return new DSAPrivateKeyParameters(derX.getValue(), parameters);
+ }
+ else if (algId.getObjectId().equals(X9ObjectIdentifiers.id_ecPublicKey))
+ {
+ X962Parameters params = new X962Parameters((DERObject)keyInfo.getAlgorithmId().getParameters());
+ ECDomainParameters dParams = null;
-
-- if (params.isNamedCurve())
-- {
-- DERObjectIdentifier oid = (DERObjectIdentifier)params.getParameters();
-- X9ECParameters ecP = X962NamedCurves.getByOID(oid);
++
+ if (params.isNamedCurve())
+ {
+ DERObjectIdentifier oid = (DERObjectIdentifier)params.getParameters();
+ X9ECParameters ecP = X962NamedCurves.getByOID(oid);
-
-- if (ecP == null)
-- {
-- ecP = SECNamedCurves.getByOID(oid);
++
+ if (ecP == null)
+ {
+ ecP = SECNamedCurves.getByOID(oid);
-
-- if (ecP == null)
-- {
-- ecP = NISTNamedCurves.getByOID(oid);
++
+ if (ecP == null)
+ {
+ ecP = NISTNamedCurves.getByOID(oid);
-
- if (ecP == null)
- {
- ecP = TeleTrusTNamedCurves.getByOID(oid);
- }
-- }
-- }
++
++ // BEGIN android-removed
++ // if (ecP == null)
++ // {
++ // ecP = TeleTrusTNamedCurves.getByOID(oid);
++ // }
++ // END android-removed
+ }
+ }
-
-- dParams = new ECDomainParameters(
-- ecP.getCurve(),
-- ecP.getG(),
-- ecP.getN(),
-- ecP.getH(),
-- ecP.getSeed());
-- }
-- else
-- {
-- X9ECParameters ecP = new X9ECParameters(
-- (ASN1Sequence)params.getParameters());
-- dParams = new ECDomainParameters(
-- ecP.getCurve(),
-- ecP.getG(),
-- ecP.getN(),
-- ecP.getH(),
-- ecP.getSeed());
-- }
++
+ dParams = new ECDomainParameters(
+ ecP.getCurve(),
+ ecP.getG(),
+@@ -177,9 +187,9 @@
+ ecP.getH(),
+ ecP.getSeed());
+ }
-
-- ECPrivateKeyStructure ec = new ECPrivateKeyStructure((ASN1Sequence)keyInfo.getPrivateKey());
++
+ ECPrivateKeyStructure ec = new ECPrivateKeyStructure((ASN1Sequence)keyInfo.getPrivateKey());
-
-- return new ECPrivateKeyParameters(ec.getKey(), dParams);
-- }
-+ // BEGIN android-removed
-+ // else if (algId.getObjectId().equals(OIWObjectIdentifiers.elGamalAlgorithm))
-+ // {
-+ // ElGamalParameter params = new ElGamalParameter((ASN1Sequence)keyInfo.getAlgorithmId().getParameters());
-+ // DERInteger derX = (DERInteger)keyInfo.getPrivateKey();
-+ //
-+ // return new ElGamalPrivateKeyParameters(derX.getValue(), new ElGamalParameters(params.getP(), params.getG()));
-+ // }
-+ // else if (algId.getObjectId().equals(X9ObjectIdentifiers.id_dsa))
-+ // {
-+ // DERInteger derX = (DERInteger)keyInfo.getPrivateKey();
-+ // DEREncodable de = keyInfo.getAlgorithmId().getParameters();
-+ //
-+ // DSAParameters parameters = null;
-+ // if (de != null)
-+ // {
-+ // DSAParameter params = DSAParameter.getInstance(de.getDERObject());
-+ // parameters = new DSAParameters(params.getP(), params.getQ(), params.getG());
-+ // }
-+ //
-+ // return new DSAPrivateKeyParameters(derX.getValue(), parameters);
-+ // }
-+ // else if (algId.getObjectId().equals(X9ObjectIdentifiers.id_ecPublicKey))
-+ // {
-+ // X962Parameters params = new X962Parameters((DERObject)keyInfo.getAlgorithmId().getParameters());
-+ // ECDomainParameters dParams = null;
-+ //
-+ // if (params.isNamedCurve())
-+ // {
-+ // DERObjectIdentifier oid = (DERObjectIdentifier)params.getParameters();
-+ // X9ECParameters ecP = X962NamedCurves.getByOID(oid);
-+ //
-+ // if (ecP == null)
-+ // {
-+ // ecP = SECNamedCurves.getByOID(oid);
-+ //
-+ // if (ecP == null)
-+ // {
-+ // ecP = NISTNamedCurves.getByOID(oid);
-+ //
-+ // if (ecP == null)
-+ // {
-+ // ecP = TeleTrusTNamedCurves.getByOID(oid);
-+ // }
-+ // }
-+ // }
-+ //
-+ // dParams = new ECDomainParameters(
-+ // ecP.getCurve(),
-+ // ecP.getG(),
-+ // ecP.getN(),
-+ // ecP.getH(),
-+ // ecP.getSeed());
-+ // }
-+ // else
-+ // {
-+ // X9ECParameters ecP = new X9ECParameters(
-+ // (ASN1Sequence)params.getParameters());
-+ // dParams = new ECDomainParameters(
-+ // ecP.getCurve(),
-+ // ecP.getG(),
-+ // ecP.getN(),
-+ // ecP.getH(),
-+ // ecP.getSeed());
-+ // }
-+ //
-+ // ECPrivateKeyStructure ec = new ECPrivateKeyStructure((ASN1Sequence)keyInfo.getPrivateKey());
-+ //
-+ // return new ECPrivateKeyParameters(ec.getKey(), dParams);
-+ // }
-+ // END android-removed
++
+ return new ECPrivateKeyParameters(ec.getKey(), dParams);
+ }
else
- {
- throw new RuntimeException("algorithm identifier in key not recognised");
diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/crypto/util/PublicKeyFactory.java bcprov-jdk16-145/org/bouncycastle/crypto/util/PublicKeyFactory.java
--- bcprov-jdk16-145.orig/org/bouncycastle/crypto/util/PublicKeyFactory.java 2010-01-11 21:46:14.000000000 +0000
-+++ bcprov-jdk16-145/org/bouncycastle/crypto/util/PublicKeyFactory.java 2010-11-09 01:06:52.000000000 +0000
-@@ -10,32 +10,40 @@
- import org.bouncycastle.asn1.DERObject;
++++ bcprov-jdk16-145/org/bouncycastle/crypto/util/PublicKeyFactory.java 2010-11-17 22:23:30.000000000 +0000
+@@ -11,12 +11,16 @@
import org.bouncycastle.asn1.DERObjectIdentifier;
import org.bouncycastle.asn1.DEROctetString;
--import org.bouncycastle.asn1.nist.NISTNamedCurves;
+ import org.bouncycastle.asn1.nist.NISTNamedCurves;
-import org.bouncycastle.asn1.oiw.ElGamalParameter;
+// BEGIN android-removed
-+// import org.bouncycastle.asn1.nist.NISTNamedCurves;
+// import org.bouncycastle.asn1.oiw.ElGamalParameter;
+// END android-removed
import org.bouncycastle.asn1.oiw.OIWObjectIdentifiers;
import org.bouncycastle.asn1.pkcs.DHParameter;
import org.bouncycastle.asn1.pkcs.PKCSObjectIdentifiers;
--import org.bouncycastle.asn1.sec.SECNamedCurves;
+ import org.bouncycastle.asn1.sec.SECNamedCurves;
-import org.bouncycastle.asn1.teletrust.TeleTrusTNamedCurves;
+// BEGIN android-removed
-+// import org.bouncycastle.asn1.sec.SECNamedCurves;
+// import org.bouncycastle.asn1.teletrust.TeleTrusTNamedCurves;
+// END android-removed
import org.bouncycastle.asn1.x509.AlgorithmIdentifier;
import org.bouncycastle.asn1.x509.DSAParameter;
import org.bouncycastle.asn1.x509.RSAPublicKeyStructure;
- import org.bouncycastle.asn1.x509.SubjectPublicKeyInfo;
- import org.bouncycastle.asn1.x509.X509ObjectIdentifiers;
--import org.bouncycastle.asn1.x9.X962NamedCurves;
--import org.bouncycastle.asn1.x9.X962Parameters;
--import org.bouncycastle.asn1.x9.X9ECParameters;
--import org.bouncycastle.asn1.x9.X9ECPoint;
-+// BEGIN android-removed
-+// import org.bouncycastle.asn1.x9.X962NamedCurves;
-+// import org.bouncycastle.asn1.x9.X962Parameters;
-+// import org.bouncycastle.asn1.x9.X9ECParameters;
-+// import org.bouncycastle.asn1.x9.X9ECPoint;
-+// END android-removed
- import org.bouncycastle.asn1.x9.X9ObjectIdentifiers;
- import org.bouncycastle.crypto.params.AsymmetricKeyParameter;
- import org.bouncycastle.crypto.params.DHParameters;
- import org.bouncycastle.crypto.params.DHPublicKeyParameters;
- import org.bouncycastle.crypto.params.DSAParameters;
+@@ -34,8 +38,10 @@
import org.bouncycastle.crypto.params.DSAPublicKeyParameters;
--import org.bouncycastle.crypto.params.ECDomainParameters;
--import org.bouncycastle.crypto.params.ECPublicKeyParameters;
+ import org.bouncycastle.crypto.params.ECDomainParameters;
+ import org.bouncycastle.crypto.params.ECPublicKeyParameters;
-import org.bouncycastle.crypto.params.ElGamalParameters;
-import org.bouncycastle.crypto.params.ElGamalPublicKeyParameters;
+// BEGIN android-removed
-+// import org.bouncycastle.crypto.params.ECDomainParameters;
-+// import org.bouncycastle.crypto.params.ECPublicKeyParameters;
+// import org.bouncycastle.crypto.params.ElGamalParameters;
+// import org.bouncycastle.crypto.params.ElGamalPublicKeyParameters;
+// END android-removed
import org.bouncycastle.crypto.params.RSAKeyParameters;
import java.io.IOException;
-@@ -112,13 +120,15 @@
+@@ -112,13 +118,15 @@
return new DHPublicKeyParameters(derY.getValue(), dhParams);
}
@@ -2888,122 +2789,65 @@ diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/crypto/util/PublicKeyFactory.j
else if (algId.getObjectId().equals(X9ObjectIdentifiers.id_dsa)
|| algId.getObjectId().equals(OIWObjectIdentifiers.dsaWithSHA1))
{
-@@ -134,58 +144,60 @@
-
- return new DSAPublicKeyParameters(derY.getValue(), parameters);
- }
-- else if (algId.getObjectId().equals(X9ObjectIdentifiers.id_ecPublicKey))
-- {
-- X962Parameters params = new X962Parameters((DERObject)keyInfo.getAlgorithmId().getParameters());
-- ECDomainParameters dParams = null;
+@@ -138,27 +146,29 @@
+ {
+ X962Parameters params = new X962Parameters((DERObject)keyInfo.getAlgorithmId().getParameters());
+ ECDomainParameters dParams = null;
-
-- if (params.isNamedCurve())
-- {
-- DERObjectIdentifier oid = (DERObjectIdentifier)params.getParameters();
-- X9ECParameters ecP = X962NamedCurves.getByOID(oid);
++
+ if (params.isNamedCurve())
+ {
+ DERObjectIdentifier oid = (DERObjectIdentifier)params.getParameters();
+ X9ECParameters ecP = X962NamedCurves.getByOID(oid);
-
-- if (ecP == null)
-- {
-- ecP = SECNamedCurves.getByOID(oid);
++
+ if (ecP == null)
+ {
+ ecP = SECNamedCurves.getByOID(oid);
-
-- if (ecP == null)
-- {
-- ecP = NISTNamedCurves.getByOID(oid);
++
+ if (ecP == null)
+ {
+ ecP = NISTNamedCurves.getByOID(oid);
-
- if (ecP == null)
- {
- ecP = TeleTrusTNamedCurves.getByOID(oid);
- }
-- }
-- }
++
++ // BEGIN android-removed
++ // if (ecP == null)
++ // {
++ // ecP = TeleTrusTNamedCurves.getByOID(oid);
++ // }
++ // END android-removed
+ }
+ }
-
-- dParams = new ECDomainParameters(
-- ecP.getCurve(),
-- ecP.getG(),
-- ecP.getN(),
-- ecP.getH(),
-- ecP.getSeed());
-- }
-- else
-- {
-- X9ECParameters ecP = new X9ECParameters(
-- (ASN1Sequence)params.getParameters());
-- dParams = new ECDomainParameters(
-- ecP.getCurve(),
-- ecP.getG(),
-- ecP.getN(),
-- ecP.getH(),
-- ecP.getSeed());
-- }
++
+ dParams = new ECDomainParameters(
+ ecP.getCurve(),
+ ecP.getG(),
+@@ -177,13 +187,13 @@
+ ecP.getH(),
+ ecP.getSeed());
+ }
-
-- DERBitString bits = keyInfo.getPublicKeyData();
-- byte[] data = bits.getBytes();
-- ASN1OctetString key = new DEROctetString(data);
++
+ DERBitString bits = keyInfo.getPublicKeyData();
+ byte[] data = bits.getBytes();
+ ASN1OctetString key = new DEROctetString(data);
-
-- X9ECPoint derQ = new X9ECPoint(dParams.getCurve(), key);
++
+ X9ECPoint derQ = new X9ECPoint(dParams.getCurve(), key);
-
-- return new ECPublicKeyParameters(derQ.getPoint(), dParams);
-- }
-+ // BEGIN android-removed
-+ // else if (algId.getObjectId().equals(X9ObjectIdentifiers.id_ecPublicKey))
-+ // {
-+ // X962Parameters params = new X962Parameters((DERObject)keyInfo.getAlgorithmId().getParameters());
-+ // ECDomainParameters dParams = null;
-+ //
-+ // if (params.isNamedCurve())
-+ // {
-+ // DERObjectIdentifier oid = (DERObjectIdentifier)params.getParameters();
-+ // X9ECParameters ecP = X962NamedCurves.getByOID(oid);
-+ //
-+ // if (ecP == null)
-+ // {
-+ // ecP = SECNamedCurves.getByOID(oid);
-+ //
-+ // if (ecP == null)
-+ // {
-+ // ecP = NISTNamedCurves.getByOID(oid);
-+ //
-+ // if (ecP == null)
-+ // {
-+ // ecP = TeleTrusTNamedCurves.getByOID(oid);
-+ // }
-+ // }
-+ // }
-+ //
-+ // dParams = new ECDomainParameters(
-+ // ecP.getCurve(),
-+ // ecP.getG(),
-+ // ecP.getN(),
-+ // ecP.getH(),
-+ // ecP.getSeed());
-+ // }
-+ // else
-+ // {
-+ // X9ECParameters ecP = new X9ECParameters(
-+ // (ASN1Sequence)params.getParameters());
-+ // dParams = new ECDomainParameters(
-+ // ecP.getCurve(),
-+ // ecP.getG(),
-+ // ecP.getN(),
-+ // ecP.getH(),
-+ // ecP.getSeed());
-+ // }
-+ //
-+ // DERBitString bits = keyInfo.getPublicKeyData();
-+ // byte[] data = bits.getBytes();
-+ // ASN1OctetString key = new DEROctetString(data);
-+ //
-+ // X9ECPoint derQ = new X9ECPoint(dParams.getCurve(), key);
-+ //
-+ // return new ECPublicKeyParameters(derQ.getPoint(), dParams);
-+ // }
-+ // END android-removed
++
+ return new ECPublicKeyParameters(derQ.getPoint(), dParams);
+ }
else
- {
- throw new RuntimeException("algorithm identifier in key not recognised");
diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/jce/PKCS10CertificationRequest.java bcprov-jdk16-145/org/bouncycastle/jce/PKCS10CertificationRequest.java
--- bcprov-jdk16-145.orig/org/bouncycastle/jce/PKCS10CertificationRequest.java 2010-01-11 21:46:14.000000000 +0000
-+++ bcprov-jdk16-145/org/bouncycastle/jce/PKCS10CertificationRequest.java 2010-11-09 01:06:52.000000000 +0000
++++ bcprov-jdk16-145/org/bouncycastle/jce/PKCS10CertificationRequest.java 2010-11-17 22:23:30.000000000 +0000
@@ -78,8 +78,11 @@
static
@@ -3067,7 +2911,7 @@ diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/jce/PKCS10CertificationRequest
diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/jce/provider/BouncyCastleProvider.java bcprov-jdk16-145/org/bouncycastle/jce/provider/BouncyCastleProvider.java
--- bcprov-jdk16-145.orig/org/bouncycastle/jce/provider/BouncyCastleProvider.java 2010-01-11 21:46:14.000000000 +0000
-+++ bcprov-jdk16-145/org/bouncycastle/jce/provider/BouncyCastleProvider.java 2010-11-09 01:06:52.000000000 +0000
++++ bcprov-jdk16-145/org/bouncycastle/jce/provider/BouncyCastleProvider.java 2010-11-17 22:23:30.000000000 +0000
@@ -45,7 +45,10 @@
{
private static String info = "BouncyCastle Security Provider v1.45";
@@ -3094,18 +2938,7 @@ diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/jce/provider/BouncyCastleProvi
};
/*
-@@ -62,7 +70,9 @@
- private static final String ASYMMETRIC_CIPHER_PACKAGE = "org.bouncycastle.jce.provider.asymmetric.";
- private static final String[] ASYMMETRIC_CIPHERS =
- {
-- "EC"
-+ // BEGIN android-removed
-+ // "EC"
-+ // END android-removed
- };
-
- /**
-@@ -89,26 +99,28 @@
+@@ -89,26 +97,28 @@
loadAlgorithms(SYMMETRIC_CIPHER_PACKAGE, SYMMETRIC_CIPHERS);
loadAlgorithms(ASYMMETRIC_CIPHER_PACKAGE, ASYMMETRIC_CIPHERS);
@@ -3154,7 +2987,7 @@ diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/jce/provider/BouncyCastleProvi
//
-@@ -117,14 +129,24 @@
+@@ -117,14 +127,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");
@@ -3187,7 +3020,7 @@ diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/jce/provider/BouncyCastleProvi
put("Alg.Alias.KeyStore.UBER", "BouncyCastle");
put("Alg.Alias.KeyStore.BOUNCYCASTLE", "BouncyCastle");
-@@ -141,44 +163,63 @@
+@@ -141,44 +161,63 @@
//
put("AlgorithmParameterGenerator.DH", "org.bouncycastle.jce.provider.JDKAlgorithmParameterGenerator$DH");
put("AlgorithmParameterGenerator.DSA", "org.bouncycastle.jce.provider.JDKAlgorithmParameterGenerator$DSA");
@@ -3275,7 +3108,7 @@ diff -Naur bcprov-jdk16-145.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");
-@@ -192,7 +233,7 @@
+@@ -192,7 +231,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");
@@ -3284,7 +3117,7 @@ diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/jce/provider/BouncyCastleProvi
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");
-@@ -202,22 +243,24 @@
+@@ -202,22 +241,24 @@
put("Alg.Alias.AlgorithmParameters." + PKCSObjectIdentifiers.id_RSAES_OAEP, "OAEP");
@@ -3325,7 +3158,7 @@ diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/jce/provider/BouncyCastleProvi
put("Alg.Alias.AlgorithmParameters.PBEWITHSHAAND128BITAES-CBC-BC", "PKCS12PBE");
put("Alg.Alias.AlgorithmParameters.PBEWITHSHAAND192BITAES-CBC-BC", "PKCS12PBE");
-@@ -234,12 +277,14 @@
+@@ -234,12 +275,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");
@@ -3346,7 +3179,7 @@ diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/jce/provider/BouncyCastleProvi
//
// key agreement
-@@ -252,97 +297,129 @@
+@@ -252,97 +295,129 @@
//
put("Cipher.DES", "org.bouncycastle.jce.provider.JCEBlockCipher$DES");
put("Cipher.DESEDE", "org.bouncycastle.jce.provider.JCEBlockCipher$DESede");
@@ -3542,7 +3375,7 @@ diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/jce/provider/BouncyCastleProvi
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");
-@@ -350,7 +427,7 @@
+@@ -350,7 +425,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");
@@ -3551,7 +3384,7 @@ diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/jce/provider/BouncyCastleProvi
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");
-@@ -372,7 +449,9 @@
+@@ -372,7 +447,9 @@
put("Cipher.PBEWITHMD5AND256BITAES-CBC-OPENSSL", "org.bouncycastle.jce.provider.JCEBlockCipher$PBEWithAESCBC");
put("Cipher.PBEWITHSHAANDTWOFISH-CBC", "org.bouncycastle.jce.provider.JCEBlockCipher$PBEWithSHAAndTwofish");
@@ -3562,7 +3395,7 @@ diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/jce/provider/BouncyCastleProvi
put("Alg.Alias.Cipher.1.2.840.113549.1.12.1.1", "PBEWITHSHAAND128BITRC4");
put("Alg.Alias.Cipher.1.2.840.113549.1.12.1.2", "PBEWITHSHAAND40BITRC4");
-@@ -387,38 +466,49 @@
+@@ -387,38 +464,49 @@
put("KeyGenerator.DES", "org.bouncycastle.jce.provider.JCEKeyGenerator$DES");
put("Alg.Alias.KeyGenerator." + OIWObjectIdentifiers.desCBC, "DES");
put("KeyGenerator.DESEDE", "org.bouncycastle.jce.provider.JCEKeyGenerator$DESede");
@@ -3640,7 +3473,7 @@ diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/jce/provider/BouncyCastleProvi
//
// key pair generators.
-@@ -426,14 +516,18 @@
+@@ -426,14 +514,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");
@@ -3663,7 +3496,7 @@ diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/jce/provider/BouncyCastleProvi
//
// key factories
-@@ -441,20 +535,24 @@
+@@ -441,20 +533,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");
@@ -3696,7 +3529,7 @@ diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/jce/provider/BouncyCastleProvi
//
// Algorithm parameters
-@@ -462,16 +560,22 @@
+@@ -462,16 +558,22 @@
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");
@@ -3727,7 +3560,7 @@ diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/jce/provider/BouncyCastleProvi
//
-@@ -479,8 +583,10 @@
+@@ -479,8 +581,10 @@
//
put("SecretKeyFactory.DES", "org.bouncycastle.jce.provider.JCESecretKeyFactory$DES");
put("SecretKeyFactory.DESEDE", "org.bouncycastle.jce.provider.JCESecretKeyFactory$DESede");
@@ -3740,7 +3573,7 @@ diff -Naur bcprov-jdk16-145.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");
-@@ -492,31 +598,41 @@
+@@ -492,31 +596,41 @@
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");
@@ -3797,7 +3630,7 @@ diff -Naur bcprov-jdk16-145.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");
-@@ -553,6 +669,10 @@
+@@ -553,6 +667,10 @@
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");
@@ -3808,7 +3641,7 @@ diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/jce/provider/BouncyCastleProvi
addMacAlgorithms();
-@@ -561,16 +681,23 @@
+@@ -561,16 +679,23 @@
addSignatureAlgorithms();
// Certification Path API
@@ -3839,7 +3672,7 @@ diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/jce/provider/BouncyCastleProvi
}
private void loadAlgorithms(String packageName, String[] names)
-@@ -631,68 +758,72 @@
+@@ -631,68 +756,72 @@
//
private void addMacAlgorithms()
{
@@ -3968,7 +3801,7 @@ diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/jce/provider/BouncyCastleProvi
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");
-@@ -700,16 +831,20 @@
+@@ -700,16 +829,20 @@
addHMACAlgorithm("SHA512", "org.bouncycastle.jce.provider.JCEMac$SHA512", "org.bouncycastle.jce.provider.JCEKeyGenerator$HMACSHA512");
addHMACAlias("SHA512", PKCSObjectIdentifiers.id_hmacWithSHA512);
@@ -3996,7 +3829,7 @@ diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/jce/provider/BouncyCastleProvi
put("Alg.Alias.Mac.1.3.14.3.2.26", "PBEWITHHMACSHA");
}
-@@ -747,9 +882,11 @@
+@@ -747,9 +880,11 @@
put("Alg.Alias.MessageDigest.SHA1", "SHA-1");
put("Alg.Alias.MessageDigest.SHA", "SHA-1");
put("Alg.Alias.MessageDigest." + OIWObjectIdentifiers.idSHA1, "SHA-1");
@@ -4011,7 +3844,7 @@ diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/jce/provider/BouncyCastleProvi
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");
-@@ -760,27 +897,31 @@
+@@ -760,27 +895,31 @@
put("Alg.Alias.MessageDigest.SHA512", "SHA-512");
put("Alg.Alias.MessageDigest." + NISTObjectIdentifiers.id_sha512, "SHA-512");
@@ -4062,7 +3895,7 @@ diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/jce/provider/BouncyCastleProvi
}
//
-@@ -788,55 +929,70 @@
+@@ -788,55 +927,70 @@
//
private void addSignatureAlgorithms()
{
@@ -4171,7 +4004,7 @@ diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/jce/provider/BouncyCastleProvi
put("Alg.Alias.Signature.SHA256withRSAEncryption", "SHA256WithRSAEncryption");
put("Alg.Alias.Signature.SHA384withRSAEncryption", "SHA384WithRSAEncryption");
-@@ -850,24 +1006,30 @@
+@@ -850,24 +1004,30 @@
put("Alg.Alias.Signature.SHA384WITHRSAENCRYPTION", "SHA384WithRSAEncryption");
put("Alg.Alias.Signature.SHA512WITHRSAENCRYPTION", "SHA512WithRSAEncryption");
@@ -4214,7 +4047,7 @@ diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/jce/provider/BouncyCastleProvi
put("Alg.Alias.Signature.SHA256WithRSA", "SHA256WithRSAEncryption");
put("Alg.Alias.Signature.SHA256withRSA", "SHA256WithRSAEncryption");
put("Alg.Alias.Signature.SHA384WithRSA", "SHA384WithRSAEncryption");
-@@ -877,92 +1039,110 @@
+@@ -877,92 +1037,110 @@
put("Alg.Alias.Signature.SHA1/RSA", "SHA1WithRSAEncryption");
put("Alg.Alias.Signature.SHA-1/RSA", "SHA1WithRSAEncryption");
put("Alg.Alias.Signature." + PKCSObjectIdentifiers.sha1WithRSAEncryption, "SHA1WithRSAEncryption");
@@ -4398,7 +4231,7 @@ diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/jce/provider/BouncyCastleProvi
{
diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/jce/provider/CertPathValidatorUtilities.java bcprov-jdk16-145/org/bouncycastle/jce/provider/CertPathValidatorUtilities.java
--- bcprov-jdk16-145.orig/org/bouncycastle/jce/provider/CertPathValidatorUtilities.java 2010-01-11 21:46:14.000000000 +0000
-+++ bcprov-jdk16-145/org/bouncycastle/jce/provider/CertPathValidatorUtilities.java 2010-11-09 01:06:52.000000000 +0000
++++ bcprov-jdk16-145/org/bouncycastle/jce/provider/CertPathValidatorUtilities.java 2010-11-17 22:23:30.000000000 +0000
@@ -24,6 +24,7 @@
import java.security.spec.DSAPublicKeySpec;
import java.text.ParseException;
@@ -4703,7 +4536,7 @@ diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/jce/provider/CertPathValidator
CRLDistPoint crldp, ExtendedPKIXParameters pkixParams)
diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/jce/provider/JCEBlockCipher.java bcprov-jdk16-145/org/bouncycastle/jce/provider/JCEBlockCipher.java
--- bcprov-jdk16-145.orig/org/bouncycastle/jce/provider/JCEBlockCipher.java 2010-01-11 21:46:14.000000000 +0000
-+++ bcprov-jdk16-145/org/bouncycastle/jce/provider/JCEBlockCipher.java 2010-11-09 01:06:52.000000000 +0000
++++ bcprov-jdk16-145/org/bouncycastle/jce/provider/JCEBlockCipher.java 2010-11-17 22:23:30.000000000 +0000
@@ -7,22 +7,31 @@
import org.bouncycastle.crypto.InvalidCipherTextException;
import org.bouncycastle.crypto.engines.AESFastEngine;
@@ -5652,7 +5485,7 @@ diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/jce/provider/JCEBlockCipher.ja
*/
diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/jce/provider/JCEDHKeyAgreement.java bcprov-jdk16-145/org/bouncycastle/jce/provider/JCEDHKeyAgreement.java
--- bcprov-jdk16-145.orig/org/bouncycastle/jce/provider/JCEDHKeyAgreement.java 2010-01-11 21:46:14.000000000 +0000
-+++ bcprov-jdk16-145/org/bouncycastle/jce/provider/JCEDHKeyAgreement.java 2010-11-09 01:06:52.000000000 +0000
++++ bcprov-jdk16-145/org/bouncycastle/jce/provider/JCEDHKeyAgreement.java 2010-11-17 22:23:30.000000000 +0000
@@ -37,9 +37,11 @@
static
@@ -5670,7 +5503,7 @@ diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/jce/provider/JCEDHKeyAgreement
algorithms.put("DESEDE", i192);
diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/jce/provider/JCEDigestUtil.java bcprov-jdk16-145/org/bouncycastle/jce/provider/JCEDigestUtil.java
--- bcprov-jdk16-145.orig/org/bouncycastle/jce/provider/JCEDigestUtil.java 2010-01-11 21:46:14.000000000 +0000
-+++ bcprov-jdk16-145/org/bouncycastle/jce/provider/JCEDigestUtil.java 2010-11-09 01:06:52.000000000 +0000
++++ bcprov-jdk16-145/org/bouncycastle/jce/provider/JCEDigestUtil.java 2010-11-17 22:23:30.000000000 +0000
@@ -12,7 +12,9 @@
import org.bouncycastle.crypto.Digest;
import org.bouncycastle.crypto.digests.MD5Digest;
@@ -5751,9 +5584,329 @@ diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/jce/provider/JCEDigestUtil.jav
|| (sha256.contains(digest1) && sha256.contains(digest2))
|| (sha384.contains(digest1) && sha384.contains(digest2))
|| (sha512.contains(digest1) && sha512.contains(digest2))
+diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/jce/provider/JCEECPrivateKey.java bcprov-jdk16-145/org/bouncycastle/jce/provider/JCEECPrivateKey.java
+--- bcprov-jdk16-145.orig/org/bouncycastle/jce/provider/JCEECPrivateKey.java 2010-01-11 21:46:14.000000000 +0000
++++ bcprov-jdk16-145/org/bouncycastle/jce/provider/JCEECPrivateKey.java 2010-11-17 22:23:30.000000000 +0000
+@@ -20,7 +20,9 @@
+ import org.bouncycastle.asn1.DERObject;
+ 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.sec.ECPrivateKeyStructure;
+ import org.bouncycastle.asn1.x509.AlgorithmIdentifier;
+@@ -199,21 +201,23 @@
+ DERObjectIdentifier oid = (DERObjectIdentifier)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());
+
+@@ -321,11 +325,13 @@
+ keyStructure = new ECPrivateKeyStructure(this.getS(), params);
+ }
+
+- 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
+ {
+
+ info = new PrivateKeyInfo(new AlgorithmIdentifier(X9ObjectIdentifiers.id_ecPublicKey, params.getDERObject()), keyStructure.getDERObject());
+diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/jce/provider/JCEECPublicKey.java bcprov-jdk16-145/org/bouncycastle/jce/provider/JCEECPublicKey.java
+--- bcprov-jdk16-145.orig/org/bouncycastle/jce/provider/JCEECPublicKey.java 2010-01-11 21:46:14.000000000 +0000
++++ bcprov-jdk16-145/org/bouncycastle/jce/provider/JCEECPublicKey.java 2010-11-17 22:23:30.000000000 +0000
+@@ -20,8 +20,10 @@
+ import org.bouncycastle.asn1.DERObjectIdentifier;
+ import org.bouncycastle.asn1.DEROctetString;
+ import org.bouncycastle.asn1.cryptopro.CryptoProObjectIdentifiers;
+-import org.bouncycastle.asn1.cryptopro.ECGOST3410NamedCurves;
+-import org.bouncycastle.asn1.cryptopro.GOST3410PublicKeyAlgParameters;
++// BEGIN android-removed
++// import org.bouncycastle.asn1.cryptopro.ECGOST3410NamedCurves;
++// import org.bouncycastle.asn1.cryptopro.GOST3410PublicKeyAlgParameters;
++// END android-removed
+ 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;
+-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;
++// END android-removed
+ import org.bouncycastle.jce.spec.ECNamedCurveSpec;
+ import org.bouncycastle.math.ec.ECCurve;
+
+@@ -46,7 +52,9 @@
+ private org.bouncycastle.math.ec.ECPoint q;
+ private ECParameterSpec ecSpec;
+ private boolean withCompression;
+- private GOST3410PublicKeyAlgParameters gostParams;
++ // BEGIN android-removed
++ // private GOST3410PublicKeyAlgParameters gostParams;
++ // END android-removed
+
+ public JCEECPublicKey(
+ String algorithm,
+@@ -56,7 +64,9 @@
+ this.q = key.q;
+ this.ecSpec = key.ecSpec;
+ this.withCompression = key.withCompression;
+- this.gostParams = key.gostParams;
++ // BEGIN android-removed
++ // this.gostParams = key.gostParams;
++ // END android-removed
+ }
+
+ public JCEECPublicKey(
+@@ -179,54 +189,56 @@
+
+ private void populateFromPubKeyInfo(SubjectPublicKeyInfo info)
+ {
+- if (info.getAlgorithmId().getObjectId().equals(CryptoProObjectIdentifiers.gostR3410_2001))
+- {
+- DERBitString bits = info.getPublicKeyData();
+- ASN1OctetString key;
+- this.algorithm = "ECGOST3410";
+-
+- try
+- {
+- key = (ASN1OctetString) ASN1Object.fromByteArray(bits.getBytes());
+- }
+- catch (IOException ex)
+- {
+- throw new IllegalArgumentException("error recovering public key");
+- }
+-
+- byte[] keyEnc = key.getOctets();
+- byte[] x = new byte[32];
+- byte[] y = new byte[32];
+-
+- for (int i = 0; i != x.length; i++)
+- {
+- x[i] = keyEnc[32 - 1 - i];
+- }
+-
+- for (int i = 0; i != y.length; i++)
+- {
+- y[i] = keyEnc[64 - 1 - i];
+- }
+-
+- gostParams = new GOST3410PublicKeyAlgParameters((ASN1Sequence)info.getAlgorithmId().getParameters());
+-
+- ECNamedCurveParameterSpec spec = ECGOST3410NamedCurveTable.getParameterSpec(ECGOST3410NamedCurves.getName(gostParams.getPublicKeyParamSet()));
+-
+- ECCurve curve = spec.getCurve();
+- EllipticCurve ellipticCurve = EC5Util.convertCurve(curve, spec.getSeed());
+-
+- this.q = curve.createPoint(new BigInteger(1, x), new BigInteger(1, y), false);
+-
+- ecSpec = new ECNamedCurveSpec(
+- ECGOST3410NamedCurves.getName(gostParams.getPublicKeyParamSet()),
+- ellipticCurve,
+- new ECPoint(
+- spec.getG().getX().toBigInteger(),
+- spec.getG().getY().toBigInteger()),
+- spec.getN(), spec.getH());
+-
+- }
+- else
++ // BEGIN android-removed
++ // if (info.getAlgorithmId().getObjectId().equals(CryptoProObjectIdentifiers.gostR3410_2001))
++ // {
++ // DERBitString bits = info.getPublicKeyData();
++ // ASN1OctetString key;
++ // this.algorithm = "ECGOST3410";
++ //
++ // try
++ // {
++ // key = (ASN1OctetString) ASN1Object.fromByteArray(bits.getBytes());
++ // }
++ // catch (IOException ex)
++ // {
++ // throw new IllegalArgumentException("error recovering public key");
++ // }
++ //
++ // byte[] keyEnc = key.getOctets();
++ // byte[] x = new byte[32];
++ // byte[] y = new byte[32];
++ //
++ // for (int i = 0; i != x.length; i++)
++ // {
++ // x[i] = keyEnc[32 - 1 - i];
++ // }
++ //
++ // for (int i = 0; i != y.length; i++)
++ // {
++ // y[i] = keyEnc[64 - 1 - i];
++ // }
++ //
++ // gostParams = new GOST3410PublicKeyAlgParameters((ASN1Sequence)info.getAlgorithmId().getParameters());
++ //
++ // ECNamedCurveParameterSpec spec = ECGOST3410NamedCurveTable.getParameterSpec(ECGOST3410NamedCurves.getName(gostParams.getPublicKeyParamSet()));
++ //
++ // ECCurve curve = spec.getCurve();
++ // EllipticCurve ellipticCurve = EC5Util.convertCurve(curve, spec.getSeed());
++ //
++ // this.q = curve.createPoint(new BigInteger(1, x), new BigInteger(1, y), false);
++ //
++ // ecSpec = new ECNamedCurveSpec(
++ // ECGOST3410NamedCurves.getName(gostParams.getPublicKeyParamSet()),
++ // ellipticCurve,
++ // new ECPoint(
++ // spec.getG().getX().toBigInteger(),
++ // spec.getG().getY().toBigInteger()),
++ // spec.getN(), spec.getH());
++ //
++ // }
++ // else
++ // END android-removed
+ {
+ X962Parameters params = new X962Parameters((DERObject)info.getAlgorithmId().getParameters());
+ ECCurve curve;
+@@ -315,45 +327,47 @@
+ ASN1Encodable params;
+ SubjectPublicKeyInfo info;
+
+- if (algorithm.equals("ECGOST3410"))
+- {
+- if (gostParams != null)
+- {
+- params = gostParams;
+- }
+- else
+- {
+- if (ecSpec instanceof ECNamedCurveSpec)
+- {
+- params = new GOST3410PublicKeyAlgParameters(
+- ECGOST3410NamedCurves.getOID(((ECNamedCurveSpec)ecSpec).getName()),
+- CryptoProObjectIdentifiers.gostR3411_94_CryptoProParamSet);
+- }
+- else
+- { // strictly speaking this may not be applicable...
+- ECCurve curve = EC5Util.convertCurve(ecSpec.getCurve());
+-
+- X9ECParameters ecP = new X9ECParameters(
+- curve,
+- EC5Util.convertPoint(curve, ecSpec.getGenerator(), withCompression),
+- ecSpec.getOrder(),
+- BigInteger.valueOf(ecSpec.getCofactor()),
+- ecSpec.getCurve().getSeed());
+-
+- params = new X962Parameters(ecP);
+- }
+- }
+-
+- BigInteger bX = this.q.getX().toBigInteger();
+- BigInteger bY = this.q.getY().toBigInteger();
+- byte[] encKey = new byte[64];
+-
+- extractBytes(encKey, 0, bX);
+- extractBytes(encKey, 32, bY);
+-
+- info = new SubjectPublicKeyInfo(new AlgorithmIdentifier(CryptoProObjectIdentifiers.gostR3410_2001, params.getDERObject()), new DEROctetString(encKey));
+- }
+- else
++ // BEGIN android-removed
++ // if (algorithm.equals("ECGOST3410"))
++ // {
++ // if (gostParams != null)
++ // {
++ // params = gostParams;
++ // }
++ // else
++ // {
++ // if (ecSpec instanceof ECNamedCurveSpec)
++ // {
++ // params = new GOST3410PublicKeyAlgParameters(
++ // ECGOST3410NamedCurves.getOID(((ECNamedCurveSpec)ecSpec).getName()),
++ // CryptoProObjectIdentifiers.gostR3411_94_CryptoProParamSet);
++ // }
++ // else
++ // { // strictly speaking this may not be applicable...
++ // ECCurve curve = EC5Util.convertCurve(ecSpec.getCurve());
++ //
++ // X9ECParameters ecP = new X9ECParameters(
++ // curve,
++ // EC5Util.convertPoint(curve, ecSpec.getGenerator(), withCompression),
++ // ecSpec.getOrder(),
++ // BigInteger.valueOf(ecSpec.getCofactor()),
++ // ecSpec.getCurve().getSeed());
++ //
++ // params = new X962Parameters(ecP);
++ // }
++ // }
++ //
++ // BigInteger bX = this.q.getX().toBigInteger();
++ // BigInteger bY = this.q.getY().toBigInteger();
++ // byte[] encKey = new byte[64];
++ //
++ // extractBytes(encKey, 0, bX);
++ // extractBytes(encKey, 32, bY);
++ //
++ // info = new SubjectPublicKeyInfo(new AlgorithmIdentifier(CryptoProObjectIdentifiers.gostR3410_2001, params.getDERObject()), new DEROctetString(encKey));
++ // }
++ // else
++ // END android-removed
+ {
+ if (ecSpec instanceof ECNamedCurveSpec)
+ {
diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/jce/provider/JCEKeyGenerator.java bcprov-jdk16-145/org/bouncycastle/jce/provider/JCEKeyGenerator.java
--- bcprov-jdk16-145.orig/org/bouncycastle/jce/provider/JCEKeyGenerator.java 2010-01-11 21:46:14.000000000 +0000
-+++ bcprov-jdk16-145/org/bouncycastle/jce/provider/JCEKeyGenerator.java 2010-11-09 01:06:52.000000000 +0000
++++ bcprov-jdk16-145/org/bouncycastle/jce/provider/JCEKeyGenerator.java 2010-11-17 22:23:30.000000000 +0000
@@ -57,6 +57,11 @@
{
try
@@ -6397,7 +6550,7 @@ diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/jce/provider/JCEKeyGenerator.j
}
diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/jce/provider/JCEMac.java bcprov-jdk16-145/org/bouncycastle/jce/provider/JCEMac.java
--- bcprov-jdk16-145.orig/org/bouncycastle/jce/provider/JCEMac.java 2010-01-11 21:46:14.000000000 +0000
-+++ bcprov-jdk16-145/org/bouncycastle/jce/provider/JCEMac.java 2010-11-09 01:06:52.000000000 +0000
++++ bcprov-jdk16-145/org/bouncycastle/jce/provider/JCEMac.java 2010-11-17 22:23:30.000000000 +0000
@@ -2,29 +2,43 @@
import org.bouncycastle.crypto.CipherParameters;
@@ -7150,7 +7303,7 @@ diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/jce/provider/JCEMac.java bcpro
}
diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/jce/provider/JCERSACipher.java bcprov-jdk16-145/org/bouncycastle/jce/provider/JCERSACipher.java
--- bcprov-jdk16-145.orig/org/bouncycastle/jce/provider/JCERSACipher.java 2010-01-11 21:46:14.000000000 +0000
-+++ bcprov-jdk16-145/org/bouncycastle/jce/provider/JCERSACipher.java 2010-11-09 01:06:52.000000000 +0000
++++ bcprov-jdk16-145/org/bouncycastle/jce/provider/JCERSACipher.java 2010-11-17 22:23:30.000000000 +0000
@@ -534,48 +534,50 @@
}
}
@@ -7248,7 +7401,7 @@ diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/jce/provider/JCERSACipher.java
}
diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/jce/provider/JCERSAPrivateCrtKey.java bcprov-jdk16-145/org/bouncycastle/jce/provider/JCERSAPrivateCrtKey.java
--- bcprov-jdk16-145.orig/org/bouncycastle/jce/provider/JCERSAPrivateCrtKey.java 2010-01-11 21:46:14.000000000 +0000
-+++ bcprov-jdk16-145/org/bouncycastle/jce/provider/JCERSAPrivateCrtKey.java 2010-11-09 01:06:52.000000000 +0000
++++ bcprov-jdk16-145/org/bouncycastle/jce/provider/JCERSAPrivateCrtKey.java 2010-11-17 22:23:30.000000000 +0000
@@ -125,7 +125,9 @@
*/
public byte[] getEncoded()
@@ -7262,7 +7415,7 @@ diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/jce/provider/JCERSAPrivateCrtK
}
diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/jce/provider/JCERSAPrivateKey.java bcprov-jdk16-145/org/bouncycastle/jce/provider/JCERSAPrivateKey.java
--- bcprov-jdk16-145.orig/org/bouncycastle/jce/provider/JCERSAPrivateKey.java 2010-01-11 21:46:14.000000000 +0000
-+++ bcprov-jdk16-145/org/bouncycastle/jce/provider/JCERSAPrivateKey.java 2010-11-09 01:06:52.000000000 +0000
++++ bcprov-jdk16-145/org/bouncycastle/jce/provider/JCERSAPrivateKey.java 2010-11-17 22:23:30.000000000 +0000
@@ -77,7 +77,9 @@
public byte[] getEncoded()
@@ -7276,7 +7429,7 @@ diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/jce/provider/JCERSAPrivateKey.
}
diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/jce/provider/JCERSAPublicKey.java bcprov-jdk16-145/org/bouncycastle/jce/provider/JCERSAPublicKey.java
--- bcprov-jdk16-145.orig/org/bouncycastle/jce/provider/JCERSAPublicKey.java 2010-01-11 21:46:14.000000000 +0000
-+++ bcprov-jdk16-145/org/bouncycastle/jce/provider/JCERSAPublicKey.java 2010-11-09 01:06:52.000000000 +0000
++++ bcprov-jdk16-145/org/bouncycastle/jce/provider/JCERSAPublicKey.java 2010-11-17 22:23:30.000000000 +0000
@@ -90,7 +90,9 @@
public byte[] getEncoded()
@@ -7290,7 +7443,7 @@ diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/jce/provider/JCERSAPublicKey.j
}
diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/jce/provider/JCESecretKeyFactory.java bcprov-jdk16-145/org/bouncycastle/jce/provider/JCESecretKeyFactory.java
--- bcprov-jdk16-145.orig/org/bouncycastle/jce/provider/JCESecretKeyFactory.java 2010-01-11 21:46:14.000000000 +0000
-+++ bcprov-jdk16-145/org/bouncycastle/jce/provider/JCESecretKeyFactory.java 2010-11-09 01:06:52.000000000 +0000
++++ bcprov-jdk16-145/org/bouncycastle/jce/provider/JCESecretKeyFactory.java 2010-11-17 22:23:30.000000000 +0000
@@ -321,29 +321,31 @@
}
}
@@ -7467,7 +7620,7 @@ diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/jce/provider/JCESecretKeyFacto
}
diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/jce/provider/JCEStreamCipher.java bcprov-jdk16-145/org/bouncycastle/jce/provider/JCEStreamCipher.java
--- bcprov-jdk16-145.orig/org/bouncycastle/jce/provider/JCEStreamCipher.java 2010-01-11 21:46:14.000000000 +0000
-+++ bcprov-jdk16-145/org/bouncycastle/jce/provider/JCEStreamCipher.java 2010-11-09 01:06:52.000000000 +0000
++++ bcprov-jdk16-145/org/bouncycastle/jce/provider/JCEStreamCipher.java 2010-11-17 22:23:30.000000000 +0000
@@ -5,17 +5,21 @@
import org.bouncycastle.crypto.DataLengthException;
import org.bouncycastle.crypto.StreamBlockCipher;
@@ -7911,7 +8064,7 @@ diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/jce/provider/JCEStreamCipher.j
}
diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/jce/provider/JDKAlgorithmParameterGenerator.java bcprov-jdk16-145/org/bouncycastle/jce/provider/JDKAlgorithmParameterGenerator.java
--- bcprov-jdk16-145.orig/org/bouncycastle/jce/provider/JDKAlgorithmParameterGenerator.java 2010-01-11 21:46:14.000000000 +0000
-+++ bcprov-jdk16-145/org/bouncycastle/jce/provider/JDKAlgorithmParameterGenerator.java 2010-11-09 01:06:52.000000000 +0000
++++ bcprov-jdk16-145/org/bouncycastle/jce/provider/JDKAlgorithmParameterGenerator.java 2010-11-17 22:23:30.000000000 +0000
@@ -2,19 +2,25 @@
import org.bouncycastle.crypto.generators.DHParametersGenerator;
@@ -8338,7 +8491,7 @@ diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/jce/provider/JDKAlgorithmParam
}
diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/jce/provider/JDKAlgorithmParameters.java bcprov-jdk16-145/org/bouncycastle/jce/provider/JDKAlgorithmParameters.java
--- bcprov-jdk16-145.orig/org/bouncycastle/jce/provider/JDKAlgorithmParameters.java 2010-01-11 21:46:14.000000000 +0000
-+++ bcprov-jdk16-145/org/bouncycastle/jce/provider/JDKAlgorithmParameters.java 2010-11-09 01:06:52.000000000 +0000
++++ bcprov-jdk16-145/org/bouncycastle/jce/provider/JDKAlgorithmParameters.java 2010-11-17 22:23:30.000000000 +0000
@@ -10,21 +10,27 @@
import org.bouncycastle.asn1.DERObjectIdentifier;
import org.bouncycastle.asn1.DEROctetString;
@@ -9838,7 +9991,7 @@ diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/jce/provider/JDKAlgorithmParam
}
diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/jce/provider/JDKDSASigner.java bcprov-jdk16-145/org/bouncycastle/jce/provider/JDKDSASigner.java
--- bcprov-jdk16-145.orig/org/bouncycastle/jce/provider/JDKDSASigner.java 2010-01-11 21:46:14.000000000 +0000
-+++ bcprov-jdk16-145/org/bouncycastle/jce/provider/JDKDSASigner.java 2010-11-09 01:06:52.000000000 +0000
++++ bcprov-jdk16-145/org/bouncycastle/jce/provider/JDKDSASigner.java 2010-11-17 22:23:30.000000000 +0000
@@ -22,13 +22,17 @@
import org.bouncycastle.crypto.DSA;
import org.bouncycastle.crypto.Digest;
@@ -9989,7 +10142,7 @@ diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/jce/provider/JDKDSASigner.java
extends JDKDSASigner
diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/jce/provider/JDKDigestSignature.java bcprov-jdk16-145/org/bouncycastle/jce/provider/JDKDigestSignature.java
--- bcprov-jdk16-145.orig/org/bouncycastle/jce/provider/JDKDigestSignature.java 2010-01-11 21:46:14.000000000 +0000
-+++ bcprov-jdk16-145/org/bouncycastle/jce/provider/JDKDigestSignature.java 2010-11-09 01:06:52.000000000 +0000
++++ bcprov-jdk16-145/org/bouncycastle/jce/provider/JDKDigestSignature.java 2010-11-17 22:23:30.000000000 +0000
@@ -23,14 +23,20 @@
import org.bouncycastle.crypto.AsymmetricBlockCipher;
import org.bouncycastle.crypto.CipherParameters;
@@ -10190,7 +10343,7 @@ diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/jce/provider/JDKDigestSignatur
}
diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/jce/provider/JDKKeyFactory.java bcprov-jdk16-145/org/bouncycastle/jce/provider/JDKKeyFactory.java
--- bcprov-jdk16-145.orig/org/bouncycastle/jce/provider/JDKKeyFactory.java 2010-01-11 21:46:14.000000000 +0000
-+++ bcprov-jdk16-145/org/bouncycastle/jce/provider/JDKKeyFactory.java 2010-11-09 01:06:52.000000000 +0000
++++ bcprov-jdk16-145/org/bouncycastle/jce/provider/JDKKeyFactory.java 2010-11-17 22:23:30.000000000 +0000
@@ -36,17 +36,21 @@
import org.bouncycastle.asn1.pkcs.RSAPrivateKeyStructure;
import org.bouncycastle.asn1.x509.SubjectPublicKeyInfo;
@@ -10310,14 +10463,10 @@ diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/jce/provider/JDKKeyFactory.jav
else if (algOid.equals(X9ObjectIdentifiers.id_dsa))
{
return new JDKDSAPublicKey(info);
-@@ -245,18 +261,19 @@
+@@ -249,14 +265,15 @@
{
- return new JDKDSAPublicKey(info);
+ return new JCEECPublicKey(info);
}
-- else if (algOid.equals(X9ObjectIdentifiers.id_ecPublicKey))
-- {
-- return new JCEECPublicKey(info);
-- }
- else if (algOid.equals(CryptoProObjectIdentifiers.gostR3410_94))
- {
- return new JDKGOST3410PublicKey(info);
@@ -10327,10 +10476,6 @@ diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/jce/provider/JDKKeyFactory.jav
- return new JCEECPublicKey(info);
- }
+ // BEGIN android-removed
-+ // else if (algOid.equals(X9ObjectIdentifiers.id_ecPublicKey))
-+ // {
-+ // return new JCEECPublicKey(info);
-+ // }
+ // else if (algOid.equals(CryptoProObjectIdentifiers.gostR3410_94))
+ // {
+ // return new JDKGOST3410PublicKey(info);
@@ -10342,7 +10487,7 @@ diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/jce/provider/JDKKeyFactory.jav
else
{
throw new RuntimeException("algorithm identifier " + algOid + " in key not recognised");
-@@ -290,26 +307,30 @@
+@@ -290,10 +307,12 @@
{
return new JCEDHPrivateKey(info);
}
@@ -10359,11 +10504,10 @@ diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/jce/provider/JDKKeyFactory.jav
else if (algOid.equals(X9ObjectIdentifiers.id_dsa))
{
return new JDKDSAPrivateKey(info);
+@@ -302,14 +321,16 @@
+ {
+ return new JCEECPrivateKey(info);
}
-- else if (algOid.equals(X9ObjectIdentifiers.id_ecPublicKey))
-- {
-- return new JCEECPrivateKey(info);
-- }
- else if (algOid.equals(CryptoProObjectIdentifiers.gostR3410_94))
- {
- return new JDKGOST3410PrivateKey(info);
@@ -10373,10 +10517,6 @@ diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/jce/provider/JDKKeyFactory.jav
- return new JCEECPrivateKey(info);
- }
+ // BEGIN android-removed
-+ // else if (algOid.equals(X9ObjectIdentifiers.id_ecPublicKey))
-+ // {
-+ // return new JCEECPrivateKey(info);
-+ // }
+ // else if (algOid.equals(CryptoProObjectIdentifiers.gostR3410_94))
+ // {
+ // return new JDKGOST3410PrivateKey(info);
@@ -10568,7 +10708,7 @@ diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/jce/provider/JDKKeyFactory.jav
}
diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/jce/provider/JDKKeyPairGenerator.java bcprov-jdk16-145/org/bouncycastle/jce/provider/JDKKeyPairGenerator.java
--- bcprov-jdk16-145.orig/org/bouncycastle/jce/provider/JDKKeyPairGenerator.java 2010-01-11 21:46:14.000000000 +0000
-+++ bcprov-jdk16-145/org/bouncycastle/jce/provider/JDKKeyPairGenerator.java 2010-11-09 01:06:52.000000000 +0000
++++ bcprov-jdk16-145/org/bouncycastle/jce/provider/JDKKeyPairGenerator.java 2010-11-17 22:23:30.000000000 +0000
@@ -6,9 +6,11 @@
import org.bouncycastle.crypto.generators.DHParametersGenerator;
import org.bouncycastle.crypto.generators.DSAKeyPairGenerator;
@@ -10912,7 +11052,7 @@ diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/jce/provider/JDKKeyPairGenerat
}
diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/jce/provider/JDKKeyStore.java bcprov-jdk16-145/org/bouncycastle/jce/provider/JDKKeyStore.java
--- bcprov-jdk16-145.orig/org/bouncycastle/jce/provider/JDKKeyStore.java 2010-01-11 21:46:14.000000000 +0000
-+++ bcprov-jdk16-145/org/bouncycastle/jce/provider/JDKKeyStore.java 2010-11-09 01:06:52.000000000 +0000
++++ bcprov-jdk16-145/org/bouncycastle/jce/provider/JDKKeyStore.java 2010-11-17 22:23:30.000000000 +0000
@@ -39,7 +39,12 @@
import org.bouncycastle.crypto.CipherParameters;
import org.bouncycastle.crypto.Digest;
@@ -11015,7 +11155,7 @@ diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/jce/provider/JDKKeyStore.java
}
diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/jce/provider/JDKMessageDigest.java bcprov-jdk16-145/org/bouncycastle/jce/provider/JDKMessageDigest.java
--- bcprov-jdk16-145.orig/org/bouncycastle/jce/provider/JDKMessageDigest.java 2010-01-11 21:46:14.000000000 +0000
-+++ bcprov-jdk16-145/org/bouncycastle/jce/provider/JDKMessageDigest.java 2010-11-09 01:06:52.000000000 +0000
++++ bcprov-jdk16-145/org/bouncycastle/jce/provider/JDKMessageDigest.java 2010-11-17 22:23:30.000000000 +0000
@@ -57,36 +57,38 @@
{
super(new SHA1Digest());
@@ -11462,7 +11602,7 @@ diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/jce/provider/JDKMessageDigest.
}
diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/jce/provider/JDKPKCS12KeyStore.java bcprov-jdk16-145/org/bouncycastle/jce/provider/JDKPKCS12KeyStore.java
--- bcprov-jdk16-145.orig/org/bouncycastle/jce/provider/JDKPKCS12KeyStore.java 2010-01-11 21:46:14.000000000 +0000
-+++ bcprov-jdk16-145/org/bouncycastle/jce/provider/JDKPKCS12KeyStore.java 2010-11-09 01:06:52.000000000 +0000
++++ bcprov-jdk16-145/org/bouncycastle/jce/provider/JDKPKCS12KeyStore.java 2010-11-17 22:23:30.000000000 +0000
@@ -255,10 +255,13 @@
}
}
@@ -11632,7 +11772,7 @@ diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/jce/provider/JDKPKCS12KeyStore
return null;
diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/jce/provider/PBE.java bcprov-jdk16-145/org/bouncycastle/jce/provider/PBE.java
--- bcprov-jdk16-145.orig/org/bouncycastle/jce/provider/PBE.java 2010-01-11 21:46:14.000000000 +0000
-+++ bcprov-jdk16-145/org/bouncycastle/jce/provider/PBE.java 2010-11-09 01:06:52.000000000 +0000
++++ bcprov-jdk16-145/org/bouncycastle/jce/provider/PBE.java 2010-11-17 22:23:30.000000000 +0000
@@ -7,12 +7,18 @@
import org.bouncycastle.crypto.CipherParameters;
@@ -11707,7 +11847,7 @@ diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/jce/provider/PBE.java bcprov-j
break;
diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/jce/provider/PKCS12BagAttributeCarrierImpl.java bcprov-jdk16-145/org/bouncycastle/jce/provider/PKCS12BagAttributeCarrierImpl.java
--- bcprov-jdk16-145.orig/org/bouncycastle/jce/provider/PKCS12BagAttributeCarrierImpl.java 2010-01-11 21:46:14.000000000 +0000
-+++ bcprov-jdk16-145/org/bouncycastle/jce/provider/PKCS12BagAttributeCarrierImpl.java 2010-11-09 01:06:52.000000000 +0000
++++ bcprov-jdk16-145/org/bouncycastle/jce/provider/PKCS12BagAttributeCarrierImpl.java 2010-11-17 22:23:30.000000000 +0000
@@ -1,6 +1,9 @@
package org.bouncycastle.jce.provider;
@@ -11850,7 +11990,7 @@ diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/jce/provider/PKCS12BagAttribut
{
diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/jce/provider/PKIXCertPath.java bcprov-jdk16-145/org/bouncycastle/jce/provider/PKIXCertPath.java
--- bcprov-jdk16-145.orig/org/bouncycastle/jce/provider/PKIXCertPath.java 2010-01-11 21:46:14.000000000 +0000
-+++ bcprov-jdk16-145/org/bouncycastle/jce/provider/PKIXCertPath.java 2010-11-09 01:06:52.000000000 +0000
++++ bcprov-jdk16-145/org/bouncycastle/jce/provider/PKIXCertPath.java 2010-11-17 22:23:30.000000000 +0000
@@ -33,7 +33,9 @@
import org.bouncycastle.asn1.pkcs.ContentInfo;
import org.bouncycastle.asn1.pkcs.PKCSObjectIdentifiers;
@@ -11915,7 +12055,7 @@ diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/jce/provider/PKIXCertPath.java
throw new CertificateEncodingException("unsupported encoding: " + encoding);
diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/jce/provider/PKIXCertPathBuilderSpi.java bcprov-jdk16-145/org/bouncycastle/jce/provider/PKIXCertPathBuilderSpi.java
--- bcprov-jdk16-145.orig/org/bouncycastle/jce/provider/PKIXCertPathBuilderSpi.java 2010-01-11 21:46:14.000000000 +0000
-+++ bcprov-jdk16-145/org/bouncycastle/jce/provider/PKIXCertPathBuilderSpi.java 2010-11-09 01:06:52.000000000 +0000
++++ bcprov-jdk16-145/org/bouncycastle/jce/provider/PKIXCertPathBuilderSpi.java 2010-11-17 22:23:30.000000000 +0000
@@ -172,8 +172,9 @@
try
{
@@ -11930,7 +12070,7 @@ diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/jce/provider/PKIXCertPathBuild
// chains
diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/jce/provider/PKIXCertPathValidatorSpi.java bcprov-jdk16-145/org/bouncycastle/jce/provider/PKIXCertPathValidatorSpi.java
--- bcprov-jdk16-145.orig/org/bouncycastle/jce/provider/PKIXCertPathValidatorSpi.java 2010-01-11 21:46:14.000000000 +0000
-+++ bcprov-jdk16-145/org/bouncycastle/jce/provider/PKIXCertPathValidatorSpi.java 2010-11-09 01:06:52.000000000 +0000
++++ bcprov-jdk16-145/org/bouncycastle/jce/provider/PKIXCertPathValidatorSpi.java 2010-11-17 22:23:30.000000000 +0000
@@ -13,6 +13,7 @@
import java.security.cert.TrustAnchor;
import java.security.cert.X509Certificate;
@@ -11983,7 +12123,7 @@ diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/jce/provider/PKIXCertPathValid
{
diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/jce/provider/PKIXNameConstraintValidator.java bcprov-jdk16-145/org/bouncycastle/jce/provider/PKIXNameConstraintValidator.java
--- bcprov-jdk16-145.orig/org/bouncycastle/jce/provider/PKIXNameConstraintValidator.java 2010-01-11 21:46:14.000000000 +0000
-+++ bcprov-jdk16-145/org/bouncycastle/jce/provider/PKIXNameConstraintValidator.java 2010-11-09 01:06:52.000000000 +0000
++++ bcprov-jdk16-145/org/bouncycastle/jce/provider/PKIXNameConstraintValidator.java 2010-11-17 22:23:30.000000000 +0000
@@ -1533,7 +1533,9 @@
for (Enumeration e = permitted.getObjects(); e.hasMoreElements();)
{
@@ -11995,158 +12135,9 @@ diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/jce/provider/PKIXNameConstrain
if (subtreesMap.get(tagNo) == null)
{
subtreesMap.put(tagNo, new HashSet());
-diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/jce/provider/ProviderUtil.java bcprov-jdk16-145/org/bouncycastle/jce/provider/ProviderUtil.java
---- bcprov-jdk16-145.orig/org/bouncycastle/jce/provider/ProviderUtil.java 2010-01-11 21:46:14.000000000 +0000
-+++ bcprov-jdk16-145/org/bouncycastle/jce/provider/ProviderUtil.java 2010-11-09 01:06:52.000000000 +0000
-@@ -1,9 +1,13 @@
- package org.bouncycastle.jce.provider;
-
- import org.bouncycastle.jce.ProviderConfigurationPermission;
--import org.bouncycastle.jce.provider.asymmetric.ec.EC5Util;
-+// BEGIN android-removed
-+// import org.bouncycastle.jce.provider.asymmetric.ec.EC5Util;
-+// END android-removed
- import org.bouncycastle.jce.interfaces.ConfigurableProvider;
--import org.bouncycastle.jce.spec.ECParameterSpec;
-+// BEGIN android-removed
-+// import org.bouncycastle.jce.spec.ECParameterSpec;
-+// END android-removed
-
- import java.io.ByteArrayInputStream;
- import java.io.IOException;
-@@ -20,68 +24,74 @@
- "BC", ConfigurableProvider.EC_IMPLICITLY_CA);
-
- private static ThreadLocal threadSpec = new ThreadLocal();
-- private static volatile ECParameterSpec ecImplicitCaParams;
-+ // BEGIN android-removed
-+ // private static volatile ECParameterSpec ecImplicitCaParams;
-+ // END android-removed
-
- static void setParameter(String parameterName, Object parameter)
- {
- SecurityManager securityManager = System.getSecurityManager();
-
-- if (parameterName.equals(ConfigurableProvider.THREAD_LOCAL_EC_IMPLICITLY_CA))
-- {
-- ECParameterSpec curveSpec;
--
-- if (securityManager != null)
-- {
-- securityManager.checkPermission(BC_EC_LOCAL_PERMISSION);
-- }
--
-- if (parameter instanceof ECParameterSpec || parameter == null)
-- {
-- curveSpec = (ECParameterSpec)parameter;
-- }
-- else // assume java.security.spec
-- {
-- curveSpec = EC5Util.convertSpec((java.security.spec.ECParameterSpec)parameter, false);
-- }
--
-- if (curveSpec == null)
-- {
-- threadSpec.remove();
-- }
-- else
-- {
-- threadSpec.set(curveSpec);
-- }
-- }
-- else if (parameterName.equals(ConfigurableProvider.EC_IMPLICITLY_CA))
-- {
-- if (securityManager != null)
-- {
-- securityManager.checkPermission(BC_EC_PERMISSION);
-- }
--
-- if (parameter instanceof ECParameterSpec || parameter == null)
-- {
-- ecImplicitCaParams = (ECParameterSpec)parameter;
-- }
-- else // assume java.security.spec
-- {
-- ecImplicitCaParams = EC5Util.convertSpec((java.security.spec.ECParameterSpec)parameter, false);
-- }
-- }
-+ // BEGIN android-removed
-+ // if (parameterName.equals(ConfigurableProvider.THREAD_LOCAL_EC_IMPLICITLY_CA))
-+ // {
-+ // ECParameterSpec curveSpec;
-+ //
-+ // if (securityManager != null)
-+ // {
-+ // securityManager.checkPermission(BC_EC_LOCAL_PERMISSION);
-+ // }
-+ //
-+ // if (parameter instanceof ECParameterSpec || parameter == null)
-+ // {
-+ // curveSpec = (ECParameterSpec)parameter;
-+ // }
-+ // else // assume java.security.spec
-+ // {
-+ // curveSpec = EC5Util.convertSpec((java.security.spec.ECParameterSpec)parameter, false);
-+ // }
-+ //
-+ // if (curveSpec == null)
-+ // {
-+ // threadSpec.remove();
-+ // }
-+ // else
-+ // {
-+ // threadSpec.set(curveSpec);
-+ // }
-+ // }
-+ // else if (parameterName.equals(ConfigurableProvider.EC_IMPLICITLY_CA))
-+ // {
-+ // if (securityManager != null)
-+ // {
-+ // securityManager.checkPermission(BC_EC_PERMISSION);
-+ // }
-+ //
-+ // if (parameter instanceof ECParameterSpec || parameter == null)
-+ // {
-+ // ecImplicitCaParams = (ECParameterSpec)parameter;
-+ // }
-+ // else // assume java.security.spec
-+ // {
-+ // ecImplicitCaParams = EC5Util.convertSpec((java.security.spec.ECParameterSpec)parameter, false);
-+ // }
-+ // }
-+ // END android-removed
- }
-
-- public static ECParameterSpec getEcImplicitlyCa()
-- {
-- ECParameterSpec spec = (ECParameterSpec)threadSpec.get();
--
-- if (spec != null)
-- {
-- return spec;
-- }
--
-- return ecImplicitCaParams;
-- }
-+ // BEGIN android-removed
-+ // public static ECParameterSpec getEcImplicitlyCa()
-+ // {
-+ // ECParameterSpec spec = (ECParameterSpec)threadSpec.get();
-+ //
-+ // if (spec != null)
-+ // {
-+ // return spec;
-+ // }
-+ //
-+ // return ecImplicitCaParams;
-+ // }
-+ // END android-removed
-
- static int getReadLimit(InputStream in)
- throws IOException
diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/jce/provider/WrapCipherSpi.java bcprov-jdk16-145/org/bouncycastle/jce/provider/WrapCipherSpi.java
--- bcprov-jdk16-145.orig/org/bouncycastle/jce/provider/WrapCipherSpi.java 2010-01-11 21:46:14.000000000 +0000
-+++ bcprov-jdk16-145/org/bouncycastle/jce/provider/WrapCipherSpi.java 2010-11-09 01:06:52.000000000 +0000
++++ bcprov-jdk16-145/org/bouncycastle/jce/provider/WrapCipherSpi.java 2010-11-17 22:23:30.000000000 +0000
@@ -12,8 +12,10 @@
import org.bouncycastle.crypto.Wrapper;
import org.bouncycastle.crypto.engines.DESedeEngine;
@@ -12221,37 +12212,24 @@ diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/jce/provider/WrapCipherSpi.jav
{
byte[] encoded;
try
-@@ -354,15 +368,20 @@
-
- DERObjectIdentifier oid = in.getAlgorithmId().getObjectId();
-
-- if (oid.equals(X9ObjectIdentifiers.id_ecPublicKey))
-- {
-- privKey = new JCEECPrivateKey(in);
-- }
+@@ -358,10 +372,12 @@
+ {
+ privKey = new JCEECPrivateKey(in);
+ }
- else if (oid.equals(CryptoProObjectIdentifiers.gostR3410_94))
- {
- privKey = new JDKGOST3410PrivateKey(in);
- }
-- else if (oid.equals(X9ObjectIdentifiers.id_dsa))
+ // BEGIN android-removed
-+ // if (oid.equals(X9ObjectIdentifiers.id_ecPublicKey))
-+ // {
-+ // privKey = new JCEECPrivateKey(in);
-+ // }
+ // else if (oid.equals(CryptoProObjectIdentifiers.gostR3410_94))
+ // {
+ // privKey = new JDKGOST3410PrivateKey(in);
+ // }
-+ // else if (oid.equals(X9ObjectIdentifiers.id_dsa))
+ // END android-removed
-+ // BEGIN android-added
-+ if (oid.equals(X9ObjectIdentifiers.id_dsa))
-+ // END android-added
+ else if (oid.equals(X9ObjectIdentifiers.id_dsa))
{
privKey = new JDKDSAPrivateKey(in);
- }
-@@ -405,10 +424,12 @@
+@@ -405,10 +421,12 @@
{
throw new InvalidKeyException("Unknown key type " + e.getMessage());
}
@@ -12268,7 +12246,7 @@ diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/jce/provider/WrapCipherSpi.jav
catch (InvalidKeySpecException e2)
{
throw new InvalidKeyException("Unknown key type " + e2.getMessage());
-@@ -433,21 +454,23 @@
+@@ -433,21 +451,23 @@
}
}
@@ -12311,7 +12289,7 @@ diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/jce/provider/WrapCipherSpi.jav
}
diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/jce/provider/X509CertificateObject.java bcprov-jdk16-145/org/bouncycastle/jce/provider/X509CertificateObject.java
--- bcprov-jdk16-145.orig/org/bouncycastle/jce/provider/X509CertificateObject.java 2010-01-11 21:46:14.000000000 +0000
-+++ bcprov-jdk16-145/org/bouncycastle/jce/provider/X509CertificateObject.java 2010-11-09 01:06:52.000000000 +0000
++++ bcprov-jdk16-145/org/bouncycastle/jce/provider/X509CertificateObject.java 2010-11-17 22:23:30.000000000 +0000
@@ -518,12 +518,20 @@
return JDKKeyFactory.createPublicKeyFromPublicKeyInfo(c.getSubjectPublicKeyInfo());
}
@@ -12345,7 +12323,7 @@ diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/jce/provider/X509CertificateOb
signature = Signature.getInstance(sigName, "BC");
diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/jce/provider/X509SignatureUtil.java bcprov-jdk16-145/org/bouncycastle/jce/provider/X509SignatureUtil.java
--- bcprov-jdk16-145.orig/org/bouncycastle/jce/provider/X509SignatureUtil.java 2010-01-11 21:46:14.000000000 +0000
-+++ bcprov-jdk16-145/org/bouncycastle/jce/provider/X509SignatureUtil.java 2010-11-09 01:06:52.000000000 +0000
++++ bcprov-jdk16-145/org/bouncycastle/jce/provider/X509SignatureUtil.java 2010-11-17 22:23:30.000000000 +0000
@@ -25,7 +25,9 @@
class X509SignatureUtil
@@ -12436,9 +12414,938 @@ diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/jce/provider/X509SignatureUtil
else
{
return digestAlgOID.getId();
+diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/jce/provider/asymmetric/ECMappings.java bcprov-jdk16-145/org/bouncycastle/jce/provider/asymmetric/ECMappings.java
+--- bcprov-jdk16-145.orig/org/bouncycastle/jce/provider/asymmetric/ECMappings.java 2010-01-11 21:46:14.000000000 +0000
++++ bcprov-jdk16-145/org/bouncycastle/jce/provider/asymmetric/ECMappings.java 2010-11-17 22:23:30.000000000 +0000
+@@ -4,8 +4,10 @@
+
+ import org.bouncycastle.asn1.DERObjectIdentifier;
+ import org.bouncycastle.asn1.cryptopro.CryptoProObjectIdentifiers;
+-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;
+
+ public class ECMappings
+@@ -14,39 +16,49 @@
+ public ECMappings()
+ {
+ 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");
++ // 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");
++ // 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");
++ // 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");
++ // 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");
+@@ -58,23 +70,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");
++ // 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);
++ // 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);
++ // 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);
++ // 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-145.orig/org/bouncycastle/jce/provider/asymmetric/ec/ECUtil.java bcprov-jdk16-145/org/bouncycastle/jce/provider/asymmetric/ec/ECUtil.java
+--- bcprov-jdk16-145.orig/org/bouncycastle/jce/provider/asymmetric/ec/ECUtil.java 2010-01-11 21:46:14.000000000 +0000
++++ bcprov-jdk16-145/org/bouncycastle/jce/provider/asymmetric/ec/ECUtil.java 2010-11-17 22:23:30.000000000 +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-145.orig/org/bouncycastle/jce/provider/asymmetric/ec/KeyAgreement.java bcprov-jdk16-145/org/bouncycastle/jce/provider/asymmetric/ec/KeyAgreement.java
+--- bcprov-jdk16-145.orig/org/bouncycastle/jce/provider/asymmetric/ec/KeyAgreement.java 2010-01-11 21:46:14.000000000 +0000
++++ bcprov-jdk16-145/org/bouncycastle/jce/provider/asymmetric/ec/KeyAgreement.java 2010-11-17 22:23:30.000000000 +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
+@@ -70,7 +76,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 +93,9 @@
+ {
+ this.kaAlgorithm = kaAlgorithm;
+ this.agreement = agreement;
+- this.kdf = kdf;
++ // BEGIN android-removed
++ // this.kdf = kdf;
++ // END android-removed
+ }
+
+ protected Key engineDoPhase(
+@@ -104,25 +114,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 +155,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 +189,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 +235,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 +296,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-145.orig/org/bouncycastle/jce/provider/asymmetric/ec/KeyPairGenerator.java bcprov-jdk16-145/org/bouncycastle/jce/provider/asymmetric/ec/KeyPairGenerator.java
+--- bcprov-jdk16-145.orig/org/bouncycastle/jce/provider/asymmetric/ec/KeyPairGenerator.java 2010-01-11 21:46:14.000000000 +0000
++++ bcprov-jdk16-145/org/bouncycastle/jce/provider/asymmetric/ec/KeyPairGenerator.java 2010-11-17 22:23:30.000000000 +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;
+@@ -83,7 +87,13 @@
+ SecureRandom random)
+ {
+ this.strength = strength;
++ // BEGIN android-added
++ if (random != null) {
++ // END android-added
+ this.random = random;
++ // BEGIN android-added
++ }
++ // END android-added
+ this.ecParams = ecParameters.get(new Integer(strength));
+
+ if (ecParams != null)
+@@ -108,6 +118,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 +150,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 +178,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 +199,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 +260,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 +308,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 +345,4 @@
+ super("ECMQV");
+ }
+ }
+-}
+\ No newline at end of file
++}
+diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/jce/provider/asymmetric/ec/Signature.java bcprov-jdk16-145/org/bouncycastle/jce/provider/asymmetric/ec/Signature.java
+--- bcprov-jdk16-145.orig/org/bouncycastle/jce/provider/asymmetric/ec/Signature.java 2010-01-11 21:46:14.000000000 +0000
++++ bcprov-jdk16-145/org/bouncycastle/jce/provider/asymmetric/ec/Signature.java 2010-11-17 22:23:30.000000000 +0000
+@@ -18,15 +18,21 @@
+ import org.bouncycastle.crypto.CipherParameters;
+ import org.bouncycastle.crypto.DSA;
+ import org.bouncycastle.crypto.Digest;
+-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;
+@@ -123,14 +129,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
+@@ -159,86 +167,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
+@@ -332,4 +342,4 @@
+ return sig;
+ }
+ }
+-}
+\ No newline at end of file
++}
diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/jce/provider/symmetric/AES.java bcprov-jdk16-145/org/bouncycastle/jce/provider/symmetric/AES.java
--- bcprov-jdk16-145.orig/org/bouncycastle/jce/provider/symmetric/AES.java 2010-01-11 21:46:14.000000000 +0000
-+++ bcprov-jdk16-145/org/bouncycastle/jce/provider/symmetric/AES.java 2010-11-09 01:06:52.000000000 +0000
++++ bcprov-jdk16-145/org/bouncycastle/jce/provider/symmetric/AES.java 2010-11-17 22:23:30.000000000 +0000
@@ -5,7 +5,9 @@
import org.bouncycastle.crypto.engines.AESEngine;
import org.bouncycastle.crypto.engines.AESFastEngine;
@@ -12675,7 +13582,7 @@ diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/jce/provider/symmetric/AES.jav
extends JDKAlgorithmParameters.IVAlgorithmParameters
diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/jce/provider/symmetric/AESMappings.java bcprov-jdk16-145/org/bouncycastle/jce/provider/symmetric/AESMappings.java
--- bcprov-jdk16-145.orig/org/bouncycastle/jce/provider/symmetric/AESMappings.java 2010-01-11 21:46:14.000000000 +0000
-+++ bcprov-jdk16-145/org/bouncycastle/jce/provider/symmetric/AESMappings.java 2010-11-09 01:06:52.000000000 +0000
++++ bcprov-jdk16-145/org/bouncycastle/jce/provider/symmetric/AESMappings.java 2010-11-17 22:23:30.000000000 +0000
@@ -26,55 +26,63 @@
put("Alg.Alias.AlgorithmParameters." + NISTObjectIdentifiers.id_aes192_CBC, "AES");
put("Alg.Alias.AlgorithmParameters." + NISTObjectIdentifiers.id_aes256_CBC, "AES");
@@ -12781,7 +13688,7 @@ diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/jce/provider/symmetric/AESMapp
}
diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/x509/X509Util.java bcprov-jdk16-145/org/bouncycastle/x509/X509Util.java
--- bcprov-jdk16-145.orig/org/bouncycastle/x509/X509Util.java 2010-01-11 21:46:14.000000000 +0000
-+++ bcprov-jdk16-145/org/bouncycastle/x509/X509Util.java 2010-11-09 01:06:52.000000000 +0000
++++ bcprov-jdk16-145/org/bouncycastle/x509/X509Util.java 2010-11-17 22:23:30.000000000 +0000
@@ -43,8 +43,10 @@
static
@@ -12843,7 +13750,7 @@ diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/x509/X509Util.java bcprov-jdk1
diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/x509/extension/X509ExtensionUtil.java bcprov-jdk16-145/org/bouncycastle/x509/extension/X509ExtensionUtil.java
--- bcprov-jdk16-145.orig/org/bouncycastle/x509/extension/X509ExtensionUtil.java 2010-01-11 21:46:14.000000000 +0000
-+++ bcprov-jdk16-145/org/bouncycastle/x509/extension/X509ExtensionUtil.java 2010-11-09 01:06:52.000000000 +0000
++++ bcprov-jdk16-145/org/bouncycastle/x509/extension/X509ExtensionUtil.java 2010-11-17 22:23:30.000000000 +0000
@@ -62,7 +62,9 @@
{
GeneralName genName = GeneralName.getInstance(it.nextElement());