summaryrefslogtreecommitdiffstats
path: root/patches
diff options
context:
space:
mode:
authorBrian Carlstrom <bdc@google.com>2013-05-24 19:14:15 -0700
committerBrian Carlstrom <bdc@google.com>2013-06-03 14:01:40 -0700
commita198e1ecc615e26a167d0f2dca9fa7e5fc62de10 (patch)
tree6ac741d0b1ccd61f033299754a0b9a3a54985e18 /patches
parent67e643cbf3cff776bf1a8fe1ea50a14ccf2d41e4 (diff)
downloadandroid_external_bouncycastle-a198e1ecc615e26a167d0f2dca9fa7e5fc62de10.tar.gz
android_external_bouncycastle-a198e1ecc615e26a167d0f2dca9fa7e5fc62de10.tar.bz2
android_external_bouncycastle-a198e1ecc615e26a167d0f2dca9fa7e5fc62de10.zip
bouncycastle 1.49 upgrade
Change-Id: Icbf5a147409c810060a5acc884834fb2a778e860
Diffstat (limited to 'patches')
-rw-r--r--patches/bcpkix.patch1051
-rw-r--r--patches/bcprov.patch5107
2 files changed, 2946 insertions, 3212 deletions
diff --git a/patches/bcpkix.patch b/patches/bcpkix.patch
index 77cee43..78354bd 100644
--- a/patches/bcpkix.patch
+++ b/patches/bcpkix.patch
@@ -1,29 +1,508 @@
-diff -Naur bcpkix-jdk15on-148.orig/org/bouncycastle/cms/CMSSignedGenerator.java bcpkix-jdk15on-148/org/bouncycastle/cms/CMSSignedGenerator.java
---- bcpkix-jdk15on-148.orig/org/bouncycastle/cms/CMSSignedGenerator.java 2013-02-08 17:54:18.000000000 +0000
-+++ bcpkix-jdk15on-148/org/bouncycastle/cms/CMSSignedGenerator.java 2013-01-31 02:26:40.000000000 +0000
-@@ -22,7 +22,9 @@
+diff -Naur bcpkix-jdk15on-149.orig/org/bouncycastle/cms/CMSSignedData.java bcpkix-jdk15on-149/org/bouncycastle/cms/CMSSignedData.java
+--- bcpkix-jdk15on-149.orig/org/bouncycastle/cms/CMSSignedData.java 2013-05-31 21:17:22.000000000 +0000
++++ bcpkix-jdk15on-149/org/bouncycastle/cms/CMSSignedData.java 2013-05-25 02:14:15.000000000 +0000
+@@ -25,7 +25,9 @@
+ import org.bouncycastle.asn1.cms.ContentInfo;
+ import org.bouncycastle.asn1.cms.SignedData;
+ import org.bouncycastle.asn1.cms.SignerInfo;
+-import org.bouncycastle.cert.jcajce.JcaCertStoreBuilder;
++// BEGIN android-removed
++// import org.bouncycastle.cert.jcajce.JcaCertStoreBuilder;
++// END android-removed
+ import org.bouncycastle.operator.DefaultSignatureAlgorithmIdentifierFinder;
+ import org.bouncycastle.operator.OperatorCreationException;
+ import org.bouncycastle.operator.SignatureAlgorithmIdentifierFinder;
+@@ -309,147 +311,149 @@
+ return attributeStore;
+ }
+
+- /**
+- * return a X509Store containing the public key certificates, if any, contained
+- * in this message.
+- *
+- * @param type type of store to create
+- * @param provider name of provider to use
+- * @return a store of public key certificates
+- * @exception NoSuchProviderException if the provider requested isn't available.
+- * @exception NoSuchStoreException if the store type isn't available.
+- * @exception CMSException if a general exception prevents creation of the X509Store
+- * @deprecated use base Store returning method
+- */
+- public X509Store getCertificates(
+- String type,
+- String provider)
+- throws NoSuchStoreException, NoSuchProviderException, CMSException
+- {
+- return getCertificates(type, CMSUtils.getProvider(provider));
+- }
+-
+- /**
+- * return a X509Store containing the public key certificates, if any, contained
+- * in this message.
+- *
+- * @param type type of store to create
+- * @param provider provider to use
+- * @return a store of public key certificates
+- * @exception NoSuchStoreException if the store type isn't available.
+- * @exception CMSException if a general exception prevents creation of the X509Store
+- * @deprecated use base Store returning method
+- */
+- public X509Store getCertificates(
+- String type,
+- Provider provider)
+- throws NoSuchStoreException, CMSException
+- {
+- if (certificateStore == null)
+- {
+- certificateStore = HELPER.createCertificateStore(type, provider, this.getCertificates());
+- }
+-
+- return certificateStore;
+- }
+-
+- /**
+- * return a X509Store containing CRLs, if any, contained
+- * in this message.
+- *
+- * @param type type of store to create
+- * @param provider name of provider to use
+- * @return a store of CRLs
+- * @exception NoSuchProviderException if the provider requested isn't available.
+- * @exception NoSuchStoreException if the store type isn't available.
+- * @exception CMSException if a general exception prevents creation of the X509Store
+- * @deprecated use base Store returning method
+- */
+- public X509Store getCRLs(
+- String type,
+- String provider)
+- throws NoSuchStoreException, NoSuchProviderException, CMSException
+- {
+- return getCRLs(type, CMSUtils.getProvider(provider));
+- }
+-
+- /**
+- * return a X509Store containing CRLs, if any, contained
+- * in this message.
+- *
+- * @param type type of store to create
+- * @param provider provider to use
+- * @return a store of CRLs
+- * @exception NoSuchStoreException if the store type isn't available.
+- * @exception CMSException if a general exception prevents creation of the X509Store
+- * @deprecated use base Store returning method
+- */
+- public X509Store getCRLs(
+- String type,
+- Provider provider)
+- throws NoSuchStoreException, CMSException
+- {
+- if (crlStore == null)
+- {
+- crlStore = HELPER.createCRLsStore(type, provider, getCRLs());
+- }
+-
+- return crlStore;
+- }
+-
+- /**
+- * return a CertStore containing the certificates and CRLs associated with
+- * this message.
+- *
+- * @exception NoSuchProviderException if the provider requested isn't available.
+- * @exception NoSuchAlgorithmException if the cert store isn't available.
+- * @exception CMSException if a general exception prevents creation of the CertStore
+- * @deprecated use base Store returning method and org.bouncycastle.cert.jcajce.JcaCertStoreBuilder
+- */
+- public CertStore getCertificatesAndCRLs(
+- String type,
+- String provider)
+- throws NoSuchAlgorithmException, NoSuchProviderException, CMSException
+- {
+- return getCertificatesAndCRLs(type, CMSUtils.getProvider(provider));
+- }
+-
+- /**
+- * return a CertStore containing the certificates and CRLs associated with
+- * this message.
+- *
+- * @exception NoSuchAlgorithmException if the cert store isn't available.
+- * @exception CMSException if a general exception prevents creation of the CertStore
+- * @deprecated use base Store returning method and org.bouncycastle.cert.jcajce.JcaCertStoreBuilder
+- */
+- public CertStore getCertificatesAndCRLs(
+- String type,
+- Provider provider)
+- throws NoSuchAlgorithmException, CMSException
+- {
+- try
+- {
+- JcaCertStoreBuilder certStoreBuilder = new JcaCertStoreBuilder().setType(type);
+-
+- if (provider != null)
+- {
+- certStoreBuilder.setProvider(provider);
+- }
+-
+- certStoreBuilder.addCertificates(this.getCertificates());
+- certStoreBuilder.addCRLs(this.getCRLs());
+-
+- return certStoreBuilder.build();
+- }
+- catch (NoSuchAlgorithmException e)
+- {
+- throw e;
+- }
+- catch (Exception e)
+- {
+- throw new CMSException("exception creating CertStore: " + e.getMessage(), e);
+- }
+- }
++ // BEGIN android-removed
++ // /**
++ // * return a X509Store containing the public key certificates, if any, contained
++ // * in this message.
++ // *
++ // * @param type type of store to create
++ // * @param provider name of provider to use
++ // * @return a store of public key certificates
++ // * @exception NoSuchProviderException if the provider requested isn't available.
++ // * @exception NoSuchStoreException if the store type isn't available.
++ // * @exception CMSException if a general exception prevents creation of the X509Store
++ // * @deprecated use base Store returning method
++ // */
++ // public X509Store getCertificates(
++ // String type,
++ // String provider)
++ // throws NoSuchStoreException, NoSuchProviderException, CMSException
++ // {
++ // return getCertificates(type, CMSUtils.getProvider(provider));
++ // }
++ //
++ // /**
++ // * return a X509Store containing the public key certificates, if any, contained
++ // * in this message.
++ // *
++ // * @param type type of store to create
++ // * @param provider provider to use
++ // * @return a store of public key certificates
++ // * @exception NoSuchStoreException if the store type isn't available.
++ // * @exception CMSException if a general exception prevents creation of the X509Store
++ // * @deprecated use base Store returning method
++ // */
++ // public X509Store getCertificates(
++ // String type,
++ // Provider provider)
++ // throws NoSuchStoreException, CMSException
++ // {
++ // if (certificateStore == null)
++ // {
++ // certificateStore = HELPER.createCertificateStore(type, provider, this.getCertificates());
++ // }
++ //
++ // return certificateStore;
++ // }
++ //
++ // /**
++ // * return a X509Store containing CRLs, if any, contained
++ // * in this message.
++ // *
++ // * @param type type of store to create
++ // * @param provider name of provider to use
++ // * @return a store of CRLs
++ // * @exception NoSuchProviderException if the provider requested isn't available.
++ // * @exception NoSuchStoreException if the store type isn't available.
++ // * @exception CMSException if a general exception prevents creation of the X509Store
++ // * @deprecated use base Store returning method
++ // */
++ // public X509Store getCRLs(
++ // String type,
++ // String provider)
++ // throws NoSuchStoreException, NoSuchProviderException, CMSException
++ // {
++ // return getCRLs(type, CMSUtils.getProvider(provider));
++ // }
++ //
++ // /**
++ // * return a X509Store containing CRLs, if any, contained
++ // * in this message.
++ // *
++ // * @param type type of store to create
++ // * @param provider provider to use
++ // * @return a store of CRLs
++ // * @exception NoSuchStoreException if the store type isn't available.
++ // * @exception CMSException if a general exception prevents creation of the X509Store
++ // * @deprecated use base Store returning method
++ // */
++ // public X509Store getCRLs(
++ // String type,
++ // Provider provider)
++ // throws NoSuchStoreException, CMSException
++ // {
++ // if (crlStore == null)
++ // {
++ // crlStore = HELPER.createCRLsStore(type, provider, getCRLs());
++ // }
++ //
++ // return crlStore;
++ // }
++ //
++ // /**
++ // * return a CertStore containing the certificates and CRLs associated with
++ // * this message.
++ // *
++ // * @exception NoSuchProviderException if the provider requested isn't available.
++ // * @exception NoSuchAlgorithmException if the cert store isn't available.
++ // * @exception CMSException if a general exception prevents creation of the CertStore
++ // * @deprecated use base Store returning method and org.bouncycastle.cert.jcajce.JcaCertStoreBuilder
++ // */
++ // public CertStore getCertificatesAndCRLs(
++ // String type,
++ // String provider)
++ // throws NoSuchAlgorithmException, NoSuchProviderException, CMSException
++ // {
++ // return getCertificatesAndCRLs(type, CMSUtils.getProvider(provider));
++ // }
++ //
++ // /**
++ // * return a CertStore containing the certificates and CRLs associated with
++ // * this message.
++ // *
++ // * @exception NoSuchAlgorithmException if the cert store isn't available.
++ // * @exception CMSException if a general exception prevents creation of the CertStore
++ // * @deprecated use base Store returning method and org.bouncycastle.cert.jcajce.JcaCertStoreBuilder
++ // */
++ // public CertStore getCertificatesAndCRLs(
++ // String type,
++ // Provider provider)
++ // throws NoSuchAlgorithmException, CMSException
++ // {
++ // try
++ // {
++ // JcaCertStoreBuilder certStoreBuilder = new JcaCertStoreBuilder().setType(type);
++ //
++ // if (provider != null)
++ // {
++ // certStoreBuilder.setProvider(provider);
++ // }
++ //
++ // certStoreBuilder.addCertificates(this.getCertificates());
++ // certStoreBuilder.addCRLs(this.getCRLs());
++ //
++ // return certStoreBuilder.build();
++ // }
++ // catch (NoSuchAlgorithmException e)
++ // {
++ // throw e;
++ // }
++ // catch (Exception e)
++ // {
++ // throw new CMSException("exception creating CertStore: " + e.getMessage(), e);
++ // }
++ // }
++ // END android-removed
+
+ /**
+ * Return any X.509 certificate objects in this SignedData structure as a Store of X509CertificateHolder objects.
+@@ -481,18 +485,20 @@
+ return HELPER.getAttributeCertificates(signedData.getCertificates());
+ }
+
+- /**
+- * Return any OtherRevocationInfo OtherRevInfo objects of the type indicated by otherRevocationInfoFormat in
+- * this SignedData structure.
+- *
+- * @param otherRevocationInfoFormat OID of the format type been looked for.
+- *
+- * @return a Store of ASN1Encodable objects representing any objects of otherRevocationInfoFormat found.
+- */
+- public Store getOtherRevocationInfo(ASN1ObjectIdentifier otherRevocationInfoFormat)
+- {
+- return HELPER.getOtherRevocationInfo(otherRevocationInfoFormat, signedData.getCRLs());
+- }
++ // BEGIN android-removed
++ // /**
++ // * Return any OtherRevocationInfo OtherRevInfo objects of the type indicated by otherRevocationInfoFormat in
++ // * this SignedData structure.
++ // *
++ // * @param otherRevocationInfoFormat OID of the format type been looked for.
++ // *
++ // * @return a Store of ASN1Encodable objects representing any objects of otherRevocationInfoFormat found.
++ // */
++ // public Store getOtherRevocationInfo(ASN1ObjectIdentifier otherRevocationInfoFormat)
++ // {
++ // return HELPER.getOtherRevocationInfo(otherRevocationInfoFormat, signedData.getCRLs());
++ // }
++ // END android-removed
+
+ /**
+ * Return the a string representation of the OID associated with the
+@@ -536,71 +542,73 @@
+ return contentInfo.getEncoded();
+ }
+
+- /**
+- * Verify all the SignerInformation objects and their associated counter signatures attached
+- * to this CMS SignedData object.
+- *
+- * @param verifierProvider a provider of SignerInformationVerifier objects.
+- * @return true if all verify, false otherwise.
+- * @throws CMSException if an exception occurs during the verification process.
+- */
+- public boolean verifySignatures(SignerInformationVerifierProvider verifierProvider)
+- throws CMSException
+- {
+- return verifySignatures(verifierProvider, false);
+- }
+-
+- /**
+- * Verify all the SignerInformation objects and optionally their associated counter signatures attached
+- * to this CMS SignedData object.
+- *
+- * @param verifierProvider a provider of SignerInformationVerifier objects.
+- * @param ignoreCounterSignatures if true don't check counter signatures. If false check counter signatures as well.
+- * @return true if all verify, false otherwise.
+- * @throws CMSException if an exception occurs during the verification process.
+- */
+- public boolean verifySignatures(SignerInformationVerifierProvider verifierProvider, boolean ignoreCounterSignatures)
+- throws CMSException
+- {
+- Collection signers = this.getSignerInfos().getSigners();
+-
+- for (Iterator it = signers.iterator(); it.hasNext();)
+- {
+- SignerInformation signer = (SignerInformation)it.next();
+-
+- try
+- {
+- SignerInformationVerifier verifier = verifierProvider.get(signer.getSID());
+-
+- if (!signer.verify(verifier))
+- {
+- return false;
+- }
+-
+- if (!ignoreCounterSignatures)
+- {
+- Collection counterSigners = signer.getCounterSignatures().getSigners();
+-
+- for (Iterator cIt = counterSigners.iterator(); cIt.hasNext();)
+- {
+- SignerInformation counterSigner = (SignerInformation)cIt.next();
+- SignerInformationVerifier counterVerifier = verifierProvider.get(signer.getSID());
+-
+- if (!counterSigner.verify(counterVerifier))
+- {
+- return false;
+- }
+- }
+- }
+- }
+- catch (OperatorCreationException e)
+- {
+- throw new CMSException("failure in verifier provider: " + e.getMessage(), e);
+- }
+- }
+-
+- return true;
+- }
++ // BEGIN android-removed
++ // /**
++ // * Verify all the SignerInformation objects and their associated counter signatures attached
++ // * to this CMS SignedData object.
++ // *
++ // * @param verifierProvider a provider of SignerInformationVerifier objects.
++ // * @return true if all verify, false otherwise.
++ // * @throws CMSException if an exception occurs during the verification process.
++ // */
++ // public boolean verifySignatures(SignerInformationVerifierProvider verifierProvider)
++ // throws CMSException
++ // {
++ // return verifySignatures(verifierProvider, false);
++ // }
++ //
++ // /**
++ // * Verify all the SignerInformation objects and optionally their associated counter signatures attached
++ // * to this CMS SignedData object.
++ // *
++ // * @param verifierProvider a provider of SignerInformationVerifier objects.
++ // * @param ignoreCounterSignatures if true don't check counter signatures. If false check counter signatures as well.
++ // * @return true if all verify, false otherwise.
++ // * @throws CMSException if an exception occurs during the verification process.
++ // */
++ // public boolean verifySignatures(SignerInformationVerifierProvider verifierProvider, boolean ignoreCounterSignatures)
++ // throws CMSException
++ // {
++ // Collection signers = this.getSignerInfos().getSigners();
++ //
++ // for (Iterator it = signers.iterator(); it.hasNext();)
++ // {
++ // SignerInformation signer = (SignerInformation)it.next();
++ //
++ // try
++ // {
++ // SignerInformationVerifier verifier = verifierProvider.get(signer.getSID());
++ //
++ // if (!signer.verify(verifier))
++ // {
++ // return false;
++ // }
++ //
++ // if (!ignoreCounterSignatures)
++ // {
++ // Collection counterSigners = signer.getCounterSignatures().getSigners();
++ //
++ // for (Iterator cIt = counterSigners.iterator(); cIt.hasNext();)
++ // {
++ // SignerInformation counterSigner = (SignerInformation)cIt.next();
++ // SignerInformationVerifier counterVerifier = verifierProvider.get(signer.getSID());
++ //
++ // if (!counterSigner.verify(counterVerifier))
++ // {
++ // return false;
++ // }
++ // }
++ // }
++ // }
++ // catch (OperatorCreationException e)
++ // {
++ // throw new CMSException("failure in verifier provider: " + e.getMessage(), e);
++ // }
++ // }
++ //
++ // return true;
++ // }
++ // END android-removed
+
+ /**
+ * Replace the SignerInformation store associated with this
+diff -Naur bcpkix-jdk15on-149.orig/org/bouncycastle/cms/CMSSignedGenerator.java bcpkix-jdk15on-149/org/bouncycastle/cms/CMSSignedGenerator.java
+--- bcpkix-jdk15on-149.orig/org/bouncycastle/cms/CMSSignedGenerator.java 2013-05-31 21:17:22.000000000 +0000
++++ bcpkix-jdk15on-149/org/bouncycastle/cms/CMSSignedGenerator.java 2013-05-25 02:14:15.000000000 +0000
+@@ -23,8 +23,10 @@
import org.bouncycastle.asn1.DERTaggedObject;
import org.bouncycastle.asn1.cms.AttributeTable;
import org.bouncycastle.asn1.cms.CMSObjectIdentifiers;
+-import org.bouncycastle.asn1.cms.OtherRevocationInfoFormat;
-import org.bouncycastle.asn1.cryptopro.CryptoProObjectIdentifiers;
+// BEGIN android-removed
++// import org.bouncycastle.asn1.cms.OtherRevocationInfoFormat;
+// import org.bouncycastle.asn1.cryptopro.CryptoProObjectIdentifiers;
+// END android-removed
import org.bouncycastle.asn1.nist.NISTObjectIdentifiers;
import org.bouncycastle.asn1.oiw.OIWObjectIdentifiers;
import org.bouncycastle.asn1.pkcs.PKCSObjectIdentifiers;
-@@ -30,7 +32,9 @@
- import org.bouncycastle.asn1.x509.AlgorithmIdentifier;
- import org.bouncycastle.asn1.x509.AttributeCertificate;
- import org.bouncycastle.asn1.x9.X9ObjectIdentifiers;
+@@ -35,7 +37,9 @@
+ import org.bouncycastle.cert.X509AttributeCertificateHolder;
+ import org.bouncycastle.cert.X509CRLHolder;
+ import org.bouncycastle.cert.X509CertificateHolder;
-import org.bouncycastle.jce.interfaces.GOST3410PrivateKey;
+// BEGIN android-removed
+// import org.bouncycastle.jce.interfaces.GOST3410PrivateKey;
+// END android-removed
+ import org.bouncycastle.util.Arrays;
import org.bouncycastle.util.Store;
import org.bouncycastle.x509.X509AttributeCertificate;
- import org.bouncycastle.x509.X509Store;
-@@ -43,25 +47,33 @@
+@@ -49,25 +53,33 @@
public static final String DATA = CMSObjectIdentifiers.data.getId();
public static final String DIGEST_SHA1 = OIWObjectIdentifiers.idSHA1.getId();
@@ -65,7 +544,7 @@ diff -Naur bcpkix-jdk15on-148.orig/org/bouncycastle/cms/CMSSignedGenerator.java
private static final String ENCRYPTION_ECDSA_WITH_SHA256 = X9ObjectIdentifiers.ecdsa_with_SHA256.getId();
private static final String ENCRYPTION_ECDSA_WITH_SHA384 = X9ObjectIdentifiers.ecdsa_with_SHA384.getId();
private static final String ENCRYPTION_ECDSA_WITH_SHA512 = X9ObjectIdentifiers.ecdsa_with_SHA512.getId();
-@@ -74,13 +86,17 @@
+@@ -80,13 +92,17 @@
NO_PARAMS.add(ENCRYPTION_DSA);
NO_PARAMS.add(ENCRYPTION_ECDSA);
NO_PARAMS.add(ENCRYPTION_ECDSA_WITH_SHA1);
@@ -85,7 +564,7 @@ diff -Naur bcpkix-jdk15on-148.orig/org/bouncycastle/cms/CMSSignedGenerator.java
EC_ALGORITHMS.put(DIGEST_SHA256, ENCRYPTION_ECDSA_WITH_SHA256);
EC_ALGORITHMS.put(DIGEST_SHA384, ENCRYPTION_ECDSA_WITH_SHA384);
EC_ALGORITHMS.put(DIGEST_SHA512, ENCRYPTION_ECDSA_WITH_SHA512);
-@@ -138,14 +154,16 @@
+@@ -144,14 +160,16 @@
throw new IllegalArgumentException("can't mix ECDSA with anything but SHA family digests");
}
}
@@ -110,21 +589,95 @@ diff -Naur bcpkix-jdk15on-148.orig/org/bouncycastle/cms/CMSSignedGenerator.java
return encOID;
}
-diff -Naur bcpkix-jdk15on-148.orig/org/bouncycastle/cms/CMSSignedHelper.java bcpkix-jdk15on-148/org/bouncycastle/cms/CMSSignedHelper.java
---- bcpkix-jdk15on-148.orig/org/bouncycastle/cms/CMSSignedHelper.java 2013-02-08 17:54:18.000000000 +0000
-+++ bcpkix-jdk15on-148/org/bouncycastle/cms/CMSSignedHelper.java 2013-01-31 02:26:40.000000000 +0000
-@@ -23,7 +23,9 @@
+@@ -270,31 +288,33 @@
+ certs.addAll(CMSUtils.getAttributeCertificatesFromStore(attrStore));
+ }
+
+- /**
+- * Add a single instance of otherRevocationData to the CRL set to be included with the generated SignedData message.
+- *
+- * @param otherRevocationInfoFormat the OID specifying the format of the otherRevocationInfo data.
+- * @param otherRevocationInfo the otherRevocationInfo ASN.1 structure.
+- */
+- public void addOtherRevocationInfo(
+- ASN1ObjectIdentifier otherRevocationInfoFormat,
+- ASN1Encodable otherRevocationInfo)
+- {
+- crls.add(new DERTaggedObject(false, 1, new OtherRevocationInfoFormat(otherRevocationInfoFormat, otherRevocationInfo)));
+- }
+-
+- /**
+- * Add a Store of otherRevocationData to the CRL set to be included with the generated SignedData message.
+- *
+- * @param otherRevocationInfoFormat the OID specifying the format of the otherRevocationInfo data.
+- * @param otherRevocationInfos a Store of otherRevocationInfo data to add.
+- */
+- public void addOtherRevocationInfo(
+- ASN1ObjectIdentifier otherRevocationInfoFormat,
+- Store otherRevocationInfos)
+- {
+- crls.addAll(CMSUtils.getOthersFromStore(otherRevocationInfoFormat, otherRevocationInfos));
+- }
++ // BEGIN android-removed
++ // /**
++ // * Add a single instance of otherRevocationData to the CRL set to be included with the generated SignedData message.
++ // *
++ // * @param otherRevocationInfoFormat the OID specifying the format of the otherRevocationInfo data.
++ // * @param otherRevocationInfo the otherRevocationInfo ASN.1 structure.
++ // */
++ // public void addOtherRevocationInfo(
++ // ASN1ObjectIdentifier otherRevocationInfoFormat,
++ // ASN1Encodable otherRevocationInfo)
++ // {
++ // crls.add(new DERTaggedObject(false, 1, new OtherRevocationInfoFormat(otherRevocationInfoFormat, otherRevocationInfo)));
++ // }
++ //
++ // /**
++ // * Add a Store of otherRevocationData to the CRL set to be included with the generated SignedData message.
++ // *
++ // * @param otherRevocationInfoFormat the OID specifying the format of the otherRevocationInfo data.
++ // * @param otherRevocationInfos a Store of otherRevocationInfo data to add.
++ // */
++ // public void addOtherRevocationInfo(
++ // ASN1ObjectIdentifier otherRevocationInfoFormat,
++ // Store otherRevocationInfos)
++ // {
++ // crls.addAll(CMSUtils.getOthersFromStore(otherRevocationInfoFormat, otherRevocationInfos));
++ // }
++ // END android-removed
+
+ /**
+ * Add the attribute certificates contained in the passed in store to the
+diff -Naur bcpkix-jdk15on-149.orig/org/bouncycastle/cms/CMSSignedHelper.java bcpkix-jdk15on-149/org/bouncycastle/cms/CMSSignedHelper.java
+--- bcpkix-jdk15on-149.orig/org/bouncycastle/cms/CMSSignedHelper.java 2013-05-31 21:17:22.000000000 +0000
++++ bcpkix-jdk15on-149/org/bouncycastle/cms/CMSSignedHelper.java 2013-05-25 02:14:15.000000000 +0000
+@@ -19,8 +19,10 @@
import org.bouncycastle.asn1.ASN1Set;
import org.bouncycastle.asn1.ASN1TaggedObject;
import org.bouncycastle.asn1.DERNull;
+-import org.bouncycastle.asn1.cms.OtherRevocationInfoFormat;
-import org.bouncycastle.asn1.cryptopro.CryptoProObjectIdentifiers;
+// BEGIN android-removed
++// import org.bouncycastle.asn1.cms.OtherRevocationInfoFormat;
+// import org.bouncycastle.asn1.cryptopro.CryptoProObjectIdentifiers;
+// END android-removed
import org.bouncycastle.asn1.eac.EACObjectIdentifiers;
import org.bouncycastle.asn1.nist.NISTObjectIdentifiers;
import org.bouncycastle.asn1.oiw.OIWObjectIdentifiers;
-@@ -53,31 +55,43 @@
+@@ -35,8 +37,10 @@
+ import org.bouncycastle.cert.X509AttributeCertificateHolder;
+ import org.bouncycastle.cert.X509CRLHolder;
+ import org.bouncycastle.cert.X509CertificateHolder;
+-import org.bouncycastle.cert.jcajce.JcaX509CRLConverter;
+-import org.bouncycastle.cert.jcajce.JcaX509CertificateConverter;
++// BEGIN android-removed
++// import org.bouncycastle.cert.jcajce.JcaX509CRLConverter;
++// import org.bouncycastle.cert.jcajce.JcaX509CertificateConverter;
++// END android-removed
+ import org.bouncycastle.util.CollectionStore;
+ import org.bouncycastle.util.Store;
+ import org.bouncycastle.x509.NoSuchStoreException;
+@@ -60,31 +64,43 @@
static
{
@@ -176,7 +729,7 @@ diff -Naur bcpkix-jdk15on-148.orig/org/bouncycastle/cms/CMSSignedHelper.java bcp
addEntries(EACObjectIdentifiers.id_TA_ECDSA_SHA_256, "SHA256", "ECDSA");
addEntries(EACObjectIdentifiers.id_TA_ECDSA_SHA_384, "SHA384", "ECDSA");
addEntries(EACObjectIdentifiers.id_TA_ECDSA_SHA_512, "SHA512", "ECDSA");
-@@ -90,30 +104,38 @@
+@@ -97,30 +113,38 @@
encryptionAlgs.put(PKCSObjectIdentifiers.rsaEncryption.getId(), "RSA");
encryptionAlgs.put(TeleTrusTObjectIdentifiers.teleTrusTRSAsignatureAlgorithm, "RSA");
encryptionAlgs.put(X509ObjectIdentifiers.id_ea_rsa.getId(), "RSA");
@@ -232,9 +785,276 @@ diff -Naur bcpkix-jdk15on-148.orig/org/bouncycastle/cms/CMSSignedHelper.java bcp
digestAliases.put("SHA256", new String[] { "SHA-256" });
digestAliases.put("SHA384", new String[] { "SHA-384" });
digestAliases.put("SHA512", new String[] { "SHA-512" });
-diff -Naur bcpkix-jdk15on-148.orig/org/bouncycastle/cms/DefaultCMSSignatureAlgorithmNameGenerator.java bcpkix-jdk15on-148/org/bouncycastle/cms/DefaultCMSSignatureAlgorithmNameGenerator.java
---- bcpkix-jdk15on-148.orig/org/bouncycastle/cms/DefaultCMSSignatureAlgorithmNameGenerator.java 2013-02-08 17:54:18.000000000 +0000
-+++ bcpkix-jdk15on-148/org/bouncycastle/cms/DefaultCMSSignatureAlgorithmNameGenerator.java 2012-09-17 23:04:47.000000000 +0000
+@@ -190,65 +214,67 @@
+ }
+ }
+
+- X509Store createCertificateStore(
+- String type,
+- Provider provider,
+- Store certStore)
+- throws NoSuchStoreException, CMSException
+- {
+- try
+- {
+- JcaX509CertificateConverter converter = new JcaX509CertificateConverter().setProvider(provider);
+- Collection certHldrs = certStore.getMatches(null);
+- List certs = new ArrayList(certHldrs.size());
+-
+- for (Iterator it = certHldrs.iterator(); it.hasNext();)
+- {
+- certs.add(converter.getCertificate((X509CertificateHolder)it.next()));
+- }
+-
+- return X509Store.getInstance(
+- "Certificate/" +type, new X509CollectionStoreParameters(certs), provider);
+- }
+- catch (IllegalArgumentException e)
+- {
+- throw new CMSException("can't setup the X509Store", e);
+- }
+- catch (CertificateException e)
+- {
+- throw new CMSException("can't setup the X509Store", e);
+- }
+- }
+-
+- X509Store createCRLsStore(
+- String type,
+- Provider provider,
+- Store crlStore)
+- throws NoSuchStoreException, CMSException
+- {
+- try
+- {
+- JcaX509CRLConverter converter = new JcaX509CRLConverter().setProvider(provider);
+- Collection crlHldrs = crlStore.getMatches(null);
+- List crls = new ArrayList(crlHldrs.size());
+-
+- for (Iterator it = crlHldrs.iterator(); it.hasNext();)
+- {
+- crls.add(converter.getCRL((X509CRLHolder)it.next()));
+- }
+-
+- return X509Store.getInstance(
+- "CRL/" +type, new X509CollectionStoreParameters(crls), provider);
+- }
+- catch (IllegalArgumentException e)
+- {
+- throw new CMSException("can't setup the X509Store", e);
+- }
+- catch (CRLException e)
+- {
+- throw new CMSException("can't setup the X509Store", e);
+- }
+- }
++ // BEGIN android-removed
++ // X509Store createCertificateStore(
++ // String type,
++ // Provider provider,
++ // Store certStore)
++ // throws NoSuchStoreException, CMSException
++ // {
++ // try
++ // {
++ // JcaX509CertificateConverter converter = new JcaX509CertificateConverter().setProvider(provider);
++ // Collection certHldrs = certStore.getMatches(null);
++ // List certs = new ArrayList(certHldrs.size());
++ //
++ // for (Iterator it = certHldrs.iterator(); it.hasNext();)
++ // {
++ // certs.add(converter.getCertificate((X509CertificateHolder)it.next()));
++ // }
++ //
++ // return X509Store.getInstance(
++ // "Certificate/" +type, new X509CollectionStoreParameters(certs), provider);
++ // }
++ // catch (IllegalArgumentException e)
++ // {
++ // throw new CMSException("can't setup the X509Store", e);
++ // }
++ // catch (CertificateException e)
++ // {
++ // throw new CMSException("can't setup the X509Store", e);
++ // }
++ // }
++ //
++ // X509Store createCRLsStore(
++ // String type,
++ // Provider provider,
++ // Store crlStore)
++ // throws NoSuchStoreException, CMSException
++ // {
++ // try
++ // {
++ // JcaX509CRLConverter converter = new JcaX509CRLConverter().setProvider(provider);
++ // Collection crlHldrs = crlStore.getMatches(null);
++ // List crls = new ArrayList(crlHldrs.size());
++ //
++ // for (Iterator it = crlHldrs.iterator(); it.hasNext();)
++ // {
++ // crls.add(converter.getCRL((X509CRLHolder)it.next()));
++ // }
++ //
++ // return X509Store.getInstance(
++ // "CRL/" +type, new X509CollectionStoreParameters(crls), provider);
++ // }
++ // catch (IllegalArgumentException e)
++ // {
++ // throw new CMSException("can't setup the X509Store", e);
++ // }
++ // catch (CRLException e)
++ // {
++ // throw new CMSException("can't setup the X509Store", e);
++ // }
++ // }
++ // END android-removed
+
+ AlgorithmIdentifier fixAlgID(AlgorithmIdentifier algId)
+ {
+@@ -336,35 +362,35 @@
+ return new CollectionStore(new ArrayList());
+ }
+
+- Store getOtherRevocationInfo(ASN1ObjectIdentifier otherRevocationInfoFormat, ASN1Set crlSet)
+- {
+- if (crlSet != null)
+- {
+- List crlList = new ArrayList(crlSet.size());
+-
+- for (Enumeration en = crlSet.getObjects(); en.hasMoreElements();)
+- {
+- ASN1Primitive obj = ((ASN1Encodable)en.nextElement()).toASN1Primitive();
+-
+- if (obj instanceof ASN1TaggedObject)
+- {
+- ASN1TaggedObject tObj = ASN1TaggedObject.getInstance(obj);
+-
+- if (tObj.getTagNo() == 1)
+- {
+- OtherRevocationInfoFormat other = OtherRevocationInfoFormat.getInstance(tObj, false);
+-
+- if (otherRevocationInfoFormat.equals(other.getInfoFormat()))
+- {
+- crlList.add(other.getInfo());
+- }
+- }
+- }
+- }
+-
+- return new CollectionStore(crlList);
+- }
+-
+- return new CollectionStore(new ArrayList());
+- }
++ // Store getOtherRevocationInfo(ASN1ObjectIdentifier otherRevocationInfoFormat, ASN1Set crlSet)
++ // {
++ // if (crlSet != null)
++ // {
++ // List crlList = new ArrayList(crlSet.size());
++ //
++ // for (Enumeration en = crlSet.getObjects(); en.hasMoreElements();)
++ // {
++ // ASN1Primitive obj = ((ASN1Encodable)en.nextElement()).toASN1Primitive();
++ //
++ // if (obj instanceof ASN1TaggedObject)
++ // {
++ // ASN1TaggedObject tObj = ASN1TaggedObject.getInstance(obj);
++ //
++ // if (tObj.getTagNo() == 1)
++ // {
++ // OtherRevocationInfoFormat other = OtherRevocationInfoFormat.getInstance(tObj, false);
++ //
++ // if (otherRevocationInfoFormat.equals(other.getInfoFormat()))
++ // {
++ // crlList.add(other.getInfo());
++ // }
++ // }
++ // }
++ // }
++ //
++ // return new CollectionStore(crlList);
++ // }
++ //
++ // return new CollectionStore(new ArrayList());
++ // }
+ }
+diff -Naur bcpkix-jdk15on-149.orig/org/bouncycastle/cms/CMSUtils.java bcpkix-jdk15on-149/org/bouncycastle/cms/CMSUtils.java
+--- bcpkix-jdk15on-149.orig/org/bouncycastle/cms/CMSUtils.java 2013-05-31 21:17:22.000000000 +0000
++++ bcpkix-jdk15on-149/org/bouncycastle/cms/CMSUtils.java 2013-05-25 02:14:15.000000000 +0000
+@@ -30,9 +30,11 @@
+ import org.bouncycastle.asn1.cms.CMSObjectIdentifiers;
+ import org.bouncycastle.asn1.cms.ContentInfo;
+ import org.bouncycastle.asn1.cms.IssuerAndSerialNumber;
+-import org.bouncycastle.asn1.cms.OtherRevocationInfoFormat;
+-import org.bouncycastle.asn1.ocsp.OCSPResponse;
+-import org.bouncycastle.asn1.ocsp.OCSPResponseStatus;
++// BEGIN android-removed
++// import org.bouncycastle.asn1.cms.OtherRevocationInfoFormat;
++// import org.bouncycastle.asn1.ocsp.OCSPResponse;
++// import org.bouncycastle.asn1.ocsp.OCSPResponseStatus;
++// END android-removed
+ import org.bouncycastle.asn1.x509.Certificate;
+ import org.bouncycastle.asn1.x509.CertificateList;
+ import org.bouncycastle.asn1.x509.TBSCertificate;
+@@ -189,29 +191,31 @@
+ }
+ }
+
+- static Collection getOthersFromStore(ASN1ObjectIdentifier otherRevocationInfoFormat, Store otherRevocationInfos)
+- {
+- List others = new ArrayList();
+-
+- for (Iterator it = otherRevocationInfos.getMatches(null).iterator(); it.hasNext();)
+- {
+- ASN1Encodable info = (ASN1Encodable)it.next();
+-
+- if (CMSObjectIdentifiers.id_ri_ocsp_response.equals(otherRevocationInfoFormat))
+- {
+- OCSPResponse resp = OCSPResponse.getInstance(info);
+-
+- if (resp.getResponseStatus().getValue().intValue() != OCSPResponseStatus.SUCCESSFUL)
+- {
+- throw new IllegalArgumentException("cannot add unsuccessful OCSP response to CMS SignedData");
+- }
+- }
+-
+- others.add(new DERTaggedObject(false, 1, new OtherRevocationInfoFormat(otherRevocationInfoFormat, info)));
+- }
+-
+- return others;
+- }
++ // BEGIN android-removed
++ // static Collection getOthersFromStore(ASN1ObjectIdentifier otherRevocationInfoFormat, Store otherRevocationInfos)
++ // {
++ // List others = new ArrayList();
++ //
++ // for (Iterator it = otherRevocationInfos.getMatches(null).iterator(); it.hasNext();)
++ // {
++ // ASN1Encodable info = (ASN1Encodable)it.next();
++ //
++ // if (CMSObjectIdentifiers.id_ri_ocsp_response.equals(otherRevocationInfoFormat))
++ // {
++ // OCSPResponse resp = OCSPResponse.getInstance(info);
++ //
++ // if (resp.getResponseStatus().getValue().intValue() != OCSPResponseStatus.SUCCESSFUL)
++ // {
++ // throw new IllegalArgumentException("cannot add unsuccessful OCSP response to CMS SignedData");
++ // }
++ // }
++ //
++ // others.add(new DERTaggedObject(false, 1, new OtherRevocationInfoFormat(otherRevocationInfoFormat, info)));
++ // }
++ //
++ // return others;
++ // }
++ // END android-removed
+
+ static ASN1Set createBerSetFromList(List derObjects)
+ {
+diff -Naur bcpkix-jdk15on-149.orig/org/bouncycastle/cms/DefaultCMSSignatureAlgorithmNameGenerator.java bcpkix-jdk15on-149/org/bouncycastle/cms/DefaultCMSSignatureAlgorithmNameGenerator.java
+--- bcpkix-jdk15on-149.orig/org/bouncycastle/cms/DefaultCMSSignatureAlgorithmNameGenerator.java 2013-05-31 21:17:22.000000000 +0000
++++ bcpkix-jdk15on-149/org/bouncycastle/cms/DefaultCMSSignatureAlgorithmNameGenerator.java 2012-09-17 23:04:47.000000000 +0000
@@ -4,7 +4,9 @@
import java.util.Map;
@@ -346,9 +1166,9 @@ diff -Naur bcpkix-jdk15on-148.orig/org/bouncycastle/cms/DefaultCMSSignatureAlgor
}
/**
-diff -Naur bcpkix-jdk15on-148.orig/org/bouncycastle/cms/DefaultCMSSignatureEncryptionAlgorithmFinder.java bcpkix-jdk15on-148/org/bouncycastle/cms/DefaultCMSSignatureEncryptionAlgorithmFinder.java
---- bcpkix-jdk15on-148.orig/org/bouncycastle/cms/DefaultCMSSignatureEncryptionAlgorithmFinder.java 2013-02-08 17:54:18.000000000 +0000
-+++ bcpkix-jdk15on-148/org/bouncycastle/cms/DefaultCMSSignatureEncryptionAlgorithmFinder.java 2012-09-17 23:04:47.000000000 +0000
+diff -Naur bcpkix-jdk15on-149.orig/org/bouncycastle/cms/DefaultCMSSignatureEncryptionAlgorithmFinder.java bcpkix-jdk15on-149/org/bouncycastle/cms/DefaultCMSSignatureEncryptionAlgorithmFinder.java
+--- bcpkix-jdk15on-149.orig/org/bouncycastle/cms/DefaultCMSSignatureEncryptionAlgorithmFinder.java 2013-05-31 21:17:22.000000000 +0000
++++ bcpkix-jdk15on-149/org/bouncycastle/cms/DefaultCMSSignatureEncryptionAlgorithmFinder.java 2012-09-17 23:04:47.000000000 +0000
@@ -16,21 +16,29 @@
static
@@ -387,9 +1207,9 @@ diff -Naur bcpkix-jdk15on-148.orig/org/bouncycastle/cms/DefaultCMSSignatureEncry
}
public AlgorithmIdentifier findEncryptionAlgorithm(AlgorithmIdentifier signatureAlgorithm)
-diff -Naur bcpkix-jdk15on-148.orig/org/bouncycastle/operator/DefaultDigestAlgorithmIdentifierFinder.java bcpkix-jdk15on-148/org/bouncycastle/operator/DefaultDigestAlgorithmIdentifierFinder.java
---- bcpkix-jdk15on-148.orig/org/bouncycastle/operator/DefaultDigestAlgorithmIdentifierFinder.java 2013-02-08 17:54:18.000000000 +0000
-+++ bcpkix-jdk15on-148/org/bouncycastle/operator/DefaultDigestAlgorithmIdentifierFinder.java 2013-01-31 02:26:40.000000000 +0000
+diff -Naur bcpkix-jdk15on-149.orig/org/bouncycastle/operator/DefaultDigestAlgorithmIdentifierFinder.java bcpkix-jdk15on-149/org/bouncycastle/operator/DefaultDigestAlgorithmIdentifierFinder.java
+--- bcpkix-jdk15on-149.orig/org/bouncycastle/operator/DefaultDigestAlgorithmIdentifierFinder.java 2013-05-31 21:17:22.000000000 +0000
++++ bcpkix-jdk15on-149/org/bouncycastle/operator/DefaultDigestAlgorithmIdentifierFinder.java 2013-01-31 02:26:40.000000000 +0000
@@ -5,7 +5,9 @@
import org.bouncycastle.asn1.ASN1ObjectIdentifier;
@@ -494,9 +1314,9 @@ diff -Naur bcpkix-jdk15on-148.orig/org/bouncycastle/operator/DefaultDigestAlgori
}
public AlgorithmIdentifier find(AlgorithmIdentifier sigAlgId)
-diff -Naur bcpkix-jdk15on-148.orig/org/bouncycastle/operator/DefaultSignatureAlgorithmIdentifierFinder.java bcpkix-jdk15on-148/org/bouncycastle/operator/DefaultSignatureAlgorithmIdentifierFinder.java
---- bcpkix-jdk15on-148.orig/org/bouncycastle/operator/DefaultSignatureAlgorithmIdentifierFinder.java 2013-02-08 17:54:18.000000000 +0000
-+++ bcpkix-jdk15on-148/org/bouncycastle/operator/DefaultSignatureAlgorithmIdentifierFinder.java 2013-01-31 02:26:40.000000000 +0000
+diff -Naur bcpkix-jdk15on-149.orig/org/bouncycastle/operator/DefaultSignatureAlgorithmIdentifierFinder.java bcpkix-jdk15on-149/org/bouncycastle/operator/DefaultSignatureAlgorithmIdentifierFinder.java
+--- bcpkix-jdk15on-149.orig/org/bouncycastle/operator/DefaultSignatureAlgorithmIdentifierFinder.java 2013-05-31 21:17:22.000000000 +0000
++++ bcpkix-jdk15on-149/org/bouncycastle/operator/DefaultSignatureAlgorithmIdentifierFinder.java 2013-01-31 02:26:40.000000000 +0000
@@ -9,7 +9,9 @@
import org.bouncycastle.asn1.ASN1Integer;
import org.bouncycastle.asn1.ASN1ObjectIdentifier;
@@ -696,11 +1516,12 @@ diff -Naur bcpkix-jdk15on-148.orig/org/bouncycastle/operator/DefaultSignatureAlg
}
private static AlgorithmIdentifier generate(String signatureAlgorithm)
-diff -Naur bcpkix-jdk15on-148.orig/org/bouncycastle/operator/bc/BcUtil.java bcpkix-jdk15on-148/org/bouncycastle/operator/bc/BcUtil.java
---- bcpkix-jdk15on-148.orig/org/bouncycastle/operator/bc/BcUtil.java 2013-02-08 17:54:18.000000000 +0000
-+++ bcpkix-jdk15on-148/org/bouncycastle/operator/bc/BcUtil.java 2012-09-17 23:04:47.000000000 +0000
-@@ -1,21 +1,29 @@
- package org.bouncycastle.operator.bc;
+diff -Naur bcpkix-jdk15on-149.orig/org/bouncycastle/operator/bc/BcDefaultDigestProvider.java bcpkix-jdk15on-149/org/bouncycastle/operator/bc/BcDefaultDigestProvider.java
+--- bcpkix-jdk15on-149.orig/org/bouncycastle/operator/bc/BcDefaultDigestProvider.java 2013-05-31 21:17:22.000000000 +0000
++++ bcpkix-jdk15on-149/org/bouncycastle/operator/bc/BcDefaultDigestProvider.java 2013-05-25 02:14:15.000000000 +0000
+@@ -4,22 +4,30 @@
+ import java.util.HashMap;
+ import java.util.Map;
-import org.bouncycastle.asn1.cryptopro.CryptoProObjectIdentifiers;
+// BEGIN android-removed
@@ -711,7 +1532,7 @@ diff -Naur bcpkix-jdk15on-148.orig/org/bouncycastle/operator/bc/BcUtil.java bcpk
import org.bouncycastle.asn1.pkcs.PKCSObjectIdentifiers;
import org.bouncycastle.asn1.teletrust.TeleTrusTObjectIdentifiers;
import org.bouncycastle.asn1.x509.AlgorithmIdentifier;
- import org.bouncycastle.crypto.Digest;
+ import org.bouncycastle.crypto.ExtendedDigest;
-import org.bouncycastle.crypto.digests.GOST3411Digest;
-import org.bouncycastle.crypto.digests.MD2Digest;
-import org.bouncycastle.crypto.digests.MD4Digest;
@@ -737,83 +1558,125 @@ diff -Naur bcpkix-jdk15on-148.orig/org/bouncycastle/operator/bc/BcUtil.java bcpk
import org.bouncycastle.crypto.digests.SHA256Digest;
import org.bouncycastle.crypto.digests.SHA384Digest;
import org.bouncycastle.crypto.digests.SHA512Digest;
-@@ -32,10 +40,12 @@
- {
- dig = new SHA1Digest();
- }
-- else if (digAlg.getAlgorithm().equals(NISTObjectIdentifiers.id_sha224))
+@@ -41,13 +49,15 @@
+ return new SHA1Digest();
+ }
+ });
+- table.put(NISTObjectIdentifiers.id_sha224, new BcDigestProvider()
- {
-- dig = new SHA224Digest();
-- }
+- public ExtendedDigest get(AlgorithmIdentifier digestAlgorithmIdentifier)
+- {
+- return new SHA224Digest();
+- }
+- });
+ // BEGIN android-removed
-+ // else if (digAlg.getAlgorithm().equals(NISTObjectIdentifiers.id_sha224))
++ // table.put(NISTObjectIdentifiers.id_sha224, new BcDigestProvider()
+ // {
-+ // dig = new SHA224Digest();
-+ // }
++ // public ExtendedDigest get(AlgorithmIdentifier digestAlgorithmIdentifier)
++ // {
++ // return new SHA224Digest();
++ // }
++ // });
+ // END android-removed
- else if (digAlg.getAlgorithm().equals(NISTObjectIdentifiers.id_sha256))
+ table.put(NISTObjectIdentifiers.id_sha256, new BcDigestProvider()
{
- dig = new SHA256Digest();
-@@ -52,30 +62,32 @@
- {
- dig = new MD5Digest();
- }
-- else if (digAlg.getAlgorithm().equals(PKCSObjectIdentifiers.md4))
+ public ExtendedDigest get(AlgorithmIdentifier digestAlgorithmIdentifier)
+@@ -76,48 +86,50 @@
+ return new MD5Digest();
+ }
+ });
+- table.put(PKCSObjectIdentifiers.md4, new BcDigestProvider()
- {
-- dig = new MD4Digest();
-- }
-- else if (digAlg.getAlgorithm().equals(PKCSObjectIdentifiers.md2))
+- public ExtendedDigest get(AlgorithmIdentifier digestAlgorithmIdentifier)
+- {
+- return new MD4Digest();
+- }
+- });
+- table.put(PKCSObjectIdentifiers.md2, new BcDigestProvider()
- {
-- dig = new MD2Digest();
-- }
-- else if (digAlg.getAlgorithm().equals(CryptoProObjectIdentifiers.gostR3411))
+- public ExtendedDigest get(AlgorithmIdentifier digestAlgorithmIdentifier)
+- {
+- return new MD2Digest();
+- }
+- });
+- table.put(CryptoProObjectIdentifiers.gostR3411, new BcDigestProvider()
- {
-- dig = new GOST3411Digest();
-- }
-- else if (digAlg.getAlgorithm().equals(TeleTrusTObjectIdentifiers.ripemd128))
+- public ExtendedDigest get(AlgorithmIdentifier digestAlgorithmIdentifier)
+- {
+- return new GOST3411Digest();
+- }
+- });
+- table.put(TeleTrusTObjectIdentifiers.ripemd128, new BcDigestProvider()
- {
-- dig = new RIPEMD128Digest();
-- }
-- else if (digAlg.getAlgorithm().equals(TeleTrusTObjectIdentifiers.ripemd160))
+- public ExtendedDigest get(AlgorithmIdentifier digestAlgorithmIdentifier)
+- {
+- return new RIPEMD128Digest();
+- }
+- });
+- table.put(TeleTrusTObjectIdentifiers.ripemd160, new BcDigestProvider()
- {
-- dig = new RIPEMD160Digest();
-- }
-- else if (digAlg.getAlgorithm().equals(TeleTrusTObjectIdentifiers.ripemd256))
+- public ExtendedDigest get(AlgorithmIdentifier digestAlgorithmIdentifier)
+- {
+- return new RIPEMD160Digest();
+- }
+- });
+- table.put(TeleTrusTObjectIdentifiers.ripemd256, new BcDigestProvider()
- {
-- dig = new RIPEMD256Digest();
-- }
+- public ExtendedDigest get(AlgorithmIdentifier digestAlgorithmIdentifier)
+- {
+- return new RIPEMD256Digest();
+- }
+- });
+ // BEGIN android-removed
-+ // else if (digAlg.getAlgorithm().equals(PKCSObjectIdentifiers.md4))
++ // table.put(PKCSObjectIdentifiers.md4, new BcDigestProvider()
+ // {
-+ // dig = new MD4Digest();
-+ // }
-+ // else if (digAlg.getAlgorithm().equals(PKCSObjectIdentifiers.md2))
++ // public ExtendedDigest get(AlgorithmIdentifier digestAlgorithmIdentifier)
++ // {
++ // return new MD4Digest();
++ // }
++ // });
++ // table.put(PKCSObjectIdentifiers.md2, new BcDigestProvider()
+ // {
-+ // dig = new MD2Digest();
-+ // }
-+ // else if (digAlg.getAlgorithm().equals(CryptoProObjectIdentifiers.gostR3411))
++ // public ExtendedDigest get(AlgorithmIdentifier digestAlgorithmIdentifier)
++ // {
++ // return new MD2Digest();
++ // }
++ // });
++ // table.put(CryptoProObjectIdentifiers.gostR3411, new BcDigestProvider()
+ // {
-+ // dig = new GOST3411Digest();
-+ // }
-+ // else if (digAlg.getAlgorithm().equals(TeleTrusTObjectIdentifiers.ripemd128))
++ // public ExtendedDigest get(AlgorithmIdentifier digestAlgorithmIdentifier)
++ // {
++ // return new GOST3411Digest();
++ // }
++ // });
++ // table.put(TeleTrusTObjectIdentifiers.ripemd128, new BcDigestProvider()
+ // {
-+ // dig = new RIPEMD128Digest();
-+ // }
-+ // else if (digAlg.getAlgorithm().equals(TeleTrusTObjectIdentifiers.ripemd160))
++ // public ExtendedDigest get(AlgorithmIdentifier digestAlgorithmIdentifier)
++ // {
++ // return new RIPEMD128Digest();
++ // }
++ // });
++ // table.put(TeleTrusTObjectIdentifiers.ripemd160, new BcDigestProvider()
+ // {
-+ // dig = new RIPEMD160Digest();
-+ // }
-+ // else if (digAlg.getAlgorithm().equals(TeleTrusTObjectIdentifiers.ripemd256))
++ // public ExtendedDigest get(AlgorithmIdentifier digestAlgorithmIdentifier)
++ // {
++ // return new RIPEMD160Digest();
++ // }
++ // });
++ // table.put(TeleTrusTObjectIdentifiers.ripemd256, new BcDigestProvider()
+ // {
-+ // dig = new RIPEMD256Digest();
-+ // }
++ // public ExtendedDigest get(AlgorithmIdentifier digestAlgorithmIdentifier)
++ // {
++ // return new RIPEMD256Digest();
++ // }
++ // });
+ // END android-removed
- else
- {
- throw new OperatorCreationException("cannot recognise digest");
-diff -Naur bcpkix-jdk15on-148.orig/org/bouncycastle/operator/jcajce/OperatorHelper.java bcpkix-jdk15on-148/org/bouncycastle/operator/jcajce/OperatorHelper.java
---- bcpkix-jdk15on-148.orig/org/bouncycastle/operator/jcajce/OperatorHelper.java 2013-02-08 17:54:18.000000000 +0000
-+++ bcpkix-jdk15on-148/org/bouncycastle/operator/jcajce/OperatorHelper.java 2013-01-31 02:26:40.000000000 +0000
+
+ return Collections.unmodifiableMap(table);
+ }
+diff -Naur bcpkix-jdk15on-149.orig/org/bouncycastle/operator/jcajce/OperatorHelper.java bcpkix-jdk15on-149/org/bouncycastle/operator/jcajce/OperatorHelper.java
+--- bcpkix-jdk15on-149.orig/org/bouncycastle/operator/jcajce/OperatorHelper.java 2013-05-31 21:17:22.000000000 +0000
++++ bcpkix-jdk15on-149/org/bouncycastle/operator/jcajce/OperatorHelper.java 2013-01-31 02:26:40.000000000 +0000
@@ -20,7 +20,9 @@
import org.bouncycastle.asn1.ASN1Encodable;
import org.bouncycastle.asn1.ASN1ObjectIdentifier;
diff --git a/patches/bcprov.patch b/patches/bcprov.patch
index 348f17b..744a5a4 100644
--- a/patches/bcprov.patch
+++ b/patches/bcprov.patch
@@ -1,6 +1,6 @@
-diff -Naur bcprov-jdk15on-148.orig/org/bouncycastle/asn1/ASN1Null.java bcprov-jdk15on-148/org/bouncycastle/asn1/ASN1Null.java
---- bcprov-jdk15on-148.orig/org/bouncycastle/asn1/ASN1Null.java 2013-02-10 00:37:58.000000000 +0000
-+++ bcprov-jdk15on-148/org/bouncycastle/asn1/ASN1Null.java 2013-01-31 02:26:40.000000000 +0000
+diff -Naur bcprov-jdk15on-149.orig/org/bouncycastle/asn1/ASN1Null.java bcprov-jdk15on-149/org/bouncycastle/asn1/ASN1Null.java
+--- bcprov-jdk15on-149.orig/org/bouncycastle/asn1/ASN1Null.java 2013-05-31 21:16:46.000000000 +0000
++++ bcprov-jdk15on-149/org/bouncycastle/asn1/ASN1Null.java 2013-01-31 02:26:40.000000000 +0000
@@ -11,9 +11,11 @@
/**
* @deprecated use DERNull.INSTANCE
@@ -14,9 +14,9 @@ diff -Naur bcprov-jdk15on-148.orig/org/bouncycastle/asn1/ASN1Null.java bcprov-jd
public static ASN1Null getInstance(Object o)
{
-diff -Naur bcprov-jdk15on-148.orig/org/bouncycastle/asn1/DERBoolean.java bcprov-jdk15on-148/org/bouncycastle/asn1/DERBoolean.java
---- bcprov-jdk15on-148.orig/org/bouncycastle/asn1/DERBoolean.java 2013-02-10 00:37:58.000000000 +0000
-+++ bcprov-jdk15on-148/org/bouncycastle/asn1/DERBoolean.java 2013-01-31 02:26:40.000000000 +0000
+diff -Naur bcprov-jdk15on-149.orig/org/bouncycastle/asn1/DERBoolean.java bcprov-jdk15on-149/org/bouncycastle/asn1/DERBoolean.java
+--- bcprov-jdk15on-149.orig/org/bouncycastle/asn1/DERBoolean.java 2013-05-31 21:16:46.000000000 +0000
++++ bcprov-jdk15on-149/org/bouncycastle/asn1/DERBoolean.java 2013-05-25 02:14:15.000000000 +0000
@@ -10,7 +10,9 @@
private static final byte[] TRUE_VALUE = new byte[] { (byte)0xff };
private static final byte[] FALSE_VALUE = new byte[] { 0 };
@@ -69,9 +69,9 @@ diff -Naur bcprov-jdk15on-148.orig/org/bouncycastle/asn1/DERBoolean.java bcprov-
{
this.value = (value) ? TRUE_VALUE : FALSE_VALUE;
}
-diff -Naur bcprov-jdk15on-148.orig/org/bouncycastle/asn1/DERNull.java bcprov-jdk15on-148/org/bouncycastle/asn1/DERNull.java
---- bcprov-jdk15on-148.orig/org/bouncycastle/asn1/DERNull.java 2013-02-10 00:37:58.000000000 +0000
-+++ bcprov-jdk15on-148/org/bouncycastle/asn1/DERNull.java 2013-01-31 02:26:40.000000000 +0000
+diff -Naur bcprov-jdk15on-149.orig/org/bouncycastle/asn1/DERNull.java bcprov-jdk15on-149/org/bouncycastle/asn1/DERNull.java
+--- bcprov-jdk15on-149.orig/org/bouncycastle/asn1/DERNull.java 2013-05-31 21:16:46.000000000 +0000
++++ bcprov-jdk15on-149/org/bouncycastle/asn1/DERNull.java 2013-01-31 02:26:40.000000000 +0000
@@ -15,7 +15,9 @@
/**
* @deprecated use DERNull.INSTANCE
@@ -83,9 +83,9 @@ diff -Naur bcprov-jdk15on-148.orig/org/bouncycastle/asn1/DERNull.java bcprov-jdk
{
}
-diff -Naur bcprov-jdk15on-148.orig/org/bouncycastle/asn1/DERObjectIdentifier.java bcprov-jdk15on-148/org/bouncycastle/asn1/DERObjectIdentifier.java
---- bcprov-jdk15on-148.orig/org/bouncycastle/asn1/DERObjectIdentifier.java 2013-02-10 00:37:58.000000000 +0000
-+++ bcprov-jdk15on-148/org/bouncycastle/asn1/DERObjectIdentifier.java 2013-01-31 02:26:40.000000000 +0000
+diff -Naur bcprov-jdk15on-149.orig/org/bouncycastle/asn1/DERObjectIdentifier.java bcprov-jdk15on-149/org/bouncycastle/asn1/DERObjectIdentifier.java
+--- bcprov-jdk15on-149.orig/org/bouncycastle/asn1/DERObjectIdentifier.java 2013-05-31 21:16:46.000000000 +0000
++++ bcprov-jdk15on-149/org/bouncycastle/asn1/DERObjectIdentifier.java 2013-05-25 02:14:15.000000000 +0000
@@ -144,7 +144,13 @@
}
}
@@ -101,7 +101,7 @@ diff -Naur bcprov-jdk15on-148.orig/org/bouncycastle/asn1/DERObjectIdentifier.jav
this.body = Arrays.clone(bytes);
}
-@@ -156,7 +162,13 @@
+@@ -160,7 +166,13 @@
throw new IllegalArgumentException("string " + identifier + " not an OID");
}
@@ -115,10 +115,10 @@ diff -Naur bcprov-jdk15on-148.orig/org/bouncycastle/asn1/DERObjectIdentifier.jav
+ // END android-changed
}
- public String getId()
-diff -Naur bcprov-jdk15on-148.orig/org/bouncycastle/asn1/DERPrintableString.java bcprov-jdk15on-148/org/bouncycastle/asn1/DERPrintableString.java
---- bcprov-jdk15on-148.orig/org/bouncycastle/asn1/DERPrintableString.java 2013-02-10 00:37:58.000000000 +0000
-+++ bcprov-jdk15on-148/org/bouncycastle/asn1/DERPrintableString.java 2013-01-31 02:26:40.000000000 +0000
+ DERObjectIdentifier(DERObjectIdentifier oid, String branchID)
+diff -Naur bcprov-jdk15on-149.orig/org/bouncycastle/asn1/DERPrintableString.java bcprov-jdk15on-149/org/bouncycastle/asn1/DERPrintableString.java
+--- bcprov-jdk15on-149.orig/org/bouncycastle/asn1/DERPrintableString.java 2013-05-31 21:16:46.000000000 +0000
++++ bcprov-jdk15on-149/org/bouncycastle/asn1/DERPrintableString.java 2013-01-31 02:26:40.000000000 +0000
@@ -12,7 +12,9 @@
extends ASN1Primitive
implements ASN1String
@@ -130,31 +130,9 @@ diff -Naur bcprov-jdk15on-148.orig/org/bouncycastle/asn1/DERPrintableString.java
/**
* return a printable string from the passed in object.
-diff -Naur bcprov-jdk15on-148.orig/org/bouncycastle/asn1/DERT61String.java bcprov-jdk15on-148/org/bouncycastle/asn1/DERT61String.java
---- bcprov-jdk15on-148.orig/org/bouncycastle/asn1/DERT61String.java 2013-02-10 00:37:58.000000000 +0000
-+++ bcprov-jdk15on-148/org/bouncycastle/asn1/DERT61String.java 2013-01-31 02:26:40.000000000 +0000
-@@ -82,12 +82,16 @@
- public DERT61String(
- String string)
- {
-- this.string = Strings.toUTF8ByteArray(string);
-+ // BEGIN android-changed
-+ this.string = Strings.toByteArray(string);
-+ // END android-changed
- }
-
- public String getString()
- {
-- return Strings.fromUTF8ByteArray(string);
-+ // BEGIN android-changed
-+ return Strings.fromByteArray(string);
-+ // END android-changed
- }
-
- public String toString()
-diff -Naur bcprov-jdk15on-148.orig/org/bouncycastle/asn1/cms/ContentInfo.java bcprov-jdk15on-148/org/bouncycastle/asn1/cms/ContentInfo.java
---- bcprov-jdk15on-148.orig/org/bouncycastle/asn1/cms/ContentInfo.java 2013-02-10 00:37:58.000000000 +0000
-+++ bcprov-jdk15on-148/org/bouncycastle/asn1/cms/ContentInfo.java 2012-09-17 23:04:47.000000000 +0000
+diff -Naur bcprov-jdk15on-149.orig/org/bouncycastle/asn1/cms/ContentInfo.java bcprov-jdk15on-149/org/bouncycastle/asn1/cms/ContentInfo.java
+--- bcprov-jdk15on-149.orig/org/bouncycastle/asn1/cms/ContentInfo.java 2013-05-31 21:16:46.000000000 +0000
++++ bcprov-jdk15on-149/org/bouncycastle/asn1/cms/ContentInfo.java 2013-05-25 02:14:15.000000000 +0000
@@ -12,7 +12,9 @@
public class ContentInfo
@@ -166,9 +144,9 @@ diff -Naur bcprov-jdk15on-148.orig/org/bouncycastle/asn1/cms/ContentInfo.java bc
{
private ASN1ObjectIdentifier contentType;
private ASN1Encodable content;
-diff -Naur bcprov-jdk15on-148.orig/org/bouncycastle/asn1/pkcs/PKCSObjectIdentifiers.java bcprov-jdk15on-148/org/bouncycastle/asn1/pkcs/PKCSObjectIdentifiers.java
---- bcprov-jdk15on-148.orig/org/bouncycastle/asn1/pkcs/PKCSObjectIdentifiers.java 2013-02-10 00:37:58.000000000 +0000
-+++ bcprov-jdk15on-148/org/bouncycastle/asn1/pkcs/PKCSObjectIdentifiers.java 2013-01-31 02:26:40.000000000 +0000
+diff -Naur bcprov-jdk15on-149.orig/org/bouncycastle/asn1/pkcs/PKCSObjectIdentifiers.java bcprov-jdk15on-149/org/bouncycastle/asn1/pkcs/PKCSObjectIdentifiers.java
+--- bcprov-jdk15on-149.orig/org/bouncycastle/asn1/pkcs/PKCSObjectIdentifiers.java 2013-05-31 21:16:46.000000000 +0000
++++ bcprov-jdk15on-149/org/bouncycastle/asn1/pkcs/PKCSObjectIdentifiers.java 2013-01-31 02:26:40.000000000 +0000
@@ -10,8 +10,10 @@
//
static final ASN1ObjectIdentifier pkcs_1 = new ASN1ObjectIdentifier("1.2.840.113549.1.1");
@@ -224,9 +202,9 @@ diff -Naur bcprov-jdk15on-148.orig/org/bouncycastle/asn1/pkcs/PKCSObjectIdentifi
static final ASN1ObjectIdentifier id_hmacWithSHA256 = digestAlgorithm.branch("9");
static final ASN1ObjectIdentifier id_hmacWithSHA384 = digestAlgorithm.branch("10");
static final ASN1ObjectIdentifier id_hmacWithSHA512 = digestAlgorithm.branch("11");
-diff -Naur bcprov-jdk15on-148.orig/org/bouncycastle/asn1/x509/AuthorityKeyIdentifier.java bcprov-jdk15on-148/org/bouncycastle/asn1/x509/AuthorityKeyIdentifier.java
---- bcprov-jdk15on-148.orig/org/bouncycastle/asn1/x509/AuthorityKeyIdentifier.java 2013-02-10 00:37:58.000000000 +0000
-+++ bcprov-jdk15on-148/org/bouncycastle/asn1/x509/AuthorityKeyIdentifier.java 2013-01-31 02:26:40.000000000 +0000
+diff -Naur bcprov-jdk15on-149.orig/org/bouncycastle/asn1/x509/AuthorityKeyIdentifier.java bcprov-jdk15on-149/org/bouncycastle/asn1/x509/AuthorityKeyIdentifier.java
+--- bcprov-jdk15on-149.orig/org/bouncycastle/asn1/x509/AuthorityKeyIdentifier.java 2013-05-31 21:16:46.000000000 +0000
++++ bcprov-jdk15on-149/org/bouncycastle/asn1/x509/AuthorityKeyIdentifier.java 2013-05-25 02:14:15.000000000 +0000
@@ -14,7 +14,9 @@
import org.bouncycastle.asn1.DERSequence;
import org.bouncycastle.asn1.DERTaggedObject;
@@ -260,9 +238,9 @@ diff -Naur bcprov-jdk15on-148.orig/org/bouncycastle/asn1/x509/AuthorityKeyIdenti
byte[] resBuf = new byte[digest.getDigestSize()];
byte[] bytes = spki.getPublicKeyData().getBytes();
-diff -Naur bcprov-jdk15on-148.orig/org/bouncycastle/asn1/x509/SubjectKeyIdentifier.java bcprov-jdk15on-148/org/bouncycastle/asn1/x509/SubjectKeyIdentifier.java
---- bcprov-jdk15on-148.orig/org/bouncycastle/asn1/x509/SubjectKeyIdentifier.java 2013-02-10 00:37:58.000000000 +0000
-+++ bcprov-jdk15on-148/org/bouncycastle/asn1/x509/SubjectKeyIdentifier.java 2013-01-31 02:26:40.000000000 +0000
+diff -Naur bcprov-jdk15on-149.orig/org/bouncycastle/asn1/x509/SubjectKeyIdentifier.java bcprov-jdk15on-149/org/bouncycastle/asn1/x509/SubjectKeyIdentifier.java
+--- bcprov-jdk15on-149.orig/org/bouncycastle/asn1/x509/SubjectKeyIdentifier.java 2013-05-31 21:16:46.000000000 +0000
++++ bcprov-jdk15on-149/org/bouncycastle/asn1/x509/SubjectKeyIdentifier.java 2013-01-31 02:26:40.000000000 +0000
@@ -6,7 +6,9 @@
import org.bouncycastle.asn1.ASN1TaggedObject;
import org.bouncycastle.asn1.DEROctetString;
@@ -285,9 +263,9 @@ diff -Naur bcprov-jdk15on-148.orig/org/bouncycastle/asn1/x509/SubjectKeyIdentifi
byte[] resBuf = new byte[digest.getDigestSize()];
byte[] bytes = spki.getPublicKeyData().getBytes();
-diff -Naur bcprov-jdk15on-148.orig/org/bouncycastle/asn1/x509/X509Name.java bcprov-jdk15on-148/org/bouncycastle/asn1/x509/X509Name.java
---- bcprov-jdk15on-148.orig/org/bouncycastle/asn1/x509/X509Name.java 2013-02-10 00:37:58.000000000 +0000
-+++ bcprov-jdk15on-148/org/bouncycastle/asn1/x509/X509Name.java 2013-01-31 02:26:40.000000000 +0000
+diff -Naur bcprov-jdk15on-149.orig/org/bouncycastle/asn1/x509/X509Name.java bcprov-jdk15on-149/org/bouncycastle/asn1/x509/X509Name.java
+--- bcprov-jdk15on-149.orig/org/bouncycastle/asn1/x509/X509Name.java 2013-05-31 21:16:46.000000000 +0000
++++ bcprov-jdk15on-149/org/bouncycastle/asn1/x509/X509Name.java 2013-05-25 02:14:15.000000000 +0000
@@ -255,8 +255,10 @@
*/
public static final Hashtable SymbolLookUp = DefaultLookUp;
@@ -301,7 +279,7 @@ diff -Naur bcprov-jdk15on-148.orig/org/bouncycastle/asn1/x509/X509Name.java bcpr
static
{
-@@ -445,7 +447,9 @@
+@@ -446,7 +448,9 @@
throw new IllegalArgumentException("cannot encode value");
}
}
@@ -312,10 +290,10 @@ diff -Naur bcprov-jdk15on-148.orig/org/bouncycastle/asn1/x509/X509Name.java bcpr
}
}
}
-diff -Naur bcprov-jdk15on-148.orig/org/bouncycastle/asn1/x509/X509NameTokenizer.java bcprov-jdk15on-148/org/bouncycastle/asn1/x509/X509NameTokenizer.java
---- bcprov-jdk15on-148.orig/org/bouncycastle/asn1/x509/X509NameTokenizer.java 2013-02-10 00:37:58.000000000 +0000
-+++ bcprov-jdk15on-148/org/bouncycastle/asn1/x509/X509NameTokenizer.java 2013-01-31 02:26:40.000000000 +0000
-@@ -96,6 +96,17 @@
+diff -Naur bcprov-jdk15on-149.orig/org/bouncycastle/asn1/x509/X509NameTokenizer.java bcprov-jdk15on-149/org/bouncycastle/asn1/x509/X509NameTokenizer.java
+--- bcprov-jdk15on-149.orig/org/bouncycastle/asn1/x509/X509NameTokenizer.java 2013-05-31 21:16:46.000000000 +0000
++++ bcprov-jdk15on-149/org/bouncycastle/asn1/x509/X509NameTokenizer.java 2013-05-25 02:14:15.000000000 +0000
+@@ -78,6 +78,17 @@
}
else
{
@@ -333,9 +311,9 @@ diff -Naur bcprov-jdk15on-148.orig/org/bouncycastle/asn1/x509/X509NameTokenizer.
buf.append(c);
}
}
-diff -Naur bcprov-jdk15on-148.orig/org/bouncycastle/crypto/digests/AndroidDigestFactory.java bcprov-jdk15on-148/org/bouncycastle/crypto/digests/AndroidDigestFactory.java
---- bcprov-jdk15on-148.orig/org/bouncycastle/crypto/digests/AndroidDigestFactory.java 1970-01-01 00:00:00.000000000 +0000
-+++ bcprov-jdk15on-148/org/bouncycastle/crypto/digests/AndroidDigestFactory.java 2012-09-17 23:04:47.000000000 +0000
+diff -Naur bcprov-jdk15on-149.orig/org/bouncycastle/crypto/digests/AndroidDigestFactory.java bcprov-jdk15on-149/org/bouncycastle/crypto/digests/AndroidDigestFactory.java
+--- bcprov-jdk15on-149.orig/org/bouncycastle/crypto/digests/AndroidDigestFactory.java 1970-01-01 00:00:00.000000000 +0000
++++ bcprov-jdk15on-149/org/bouncycastle/crypto/digests/AndroidDigestFactory.java 2012-09-17 23:04:47.000000000 +0000
@@ -0,0 +1,78 @@
+/*
+ * Copyright (C) 2012 The Android Open Source Project
@@ -415,9 +393,9 @@ diff -Naur bcprov-jdk15on-148.orig/org/bouncycastle/crypto/digests/AndroidDigest
+ return FACTORY.getSHA512();
+ }
+}
-diff -Naur bcprov-jdk15on-148.orig/org/bouncycastle/crypto/digests/AndroidDigestFactoryBouncyCastle.java bcprov-jdk15on-148/org/bouncycastle/crypto/digests/AndroidDigestFactoryBouncyCastle.java
---- bcprov-jdk15on-148.orig/org/bouncycastle/crypto/digests/AndroidDigestFactoryBouncyCastle.java 1970-01-01 00:00:00.000000000 +0000
-+++ bcprov-jdk15on-148/org/bouncycastle/crypto/digests/AndroidDigestFactoryBouncyCastle.java 2012-09-17 23:04:47.000000000 +0000
+diff -Naur bcprov-jdk15on-149.orig/org/bouncycastle/crypto/digests/AndroidDigestFactoryBouncyCastle.java bcprov-jdk15on-149/org/bouncycastle/crypto/digests/AndroidDigestFactoryBouncyCastle.java
+--- bcprov-jdk15on-149.orig/org/bouncycastle/crypto/digests/AndroidDigestFactoryBouncyCastle.java 1970-01-01 00:00:00.000000000 +0000
++++ bcprov-jdk15on-149/org/bouncycastle/crypto/digests/AndroidDigestFactoryBouncyCastle.java 2012-09-17 23:04:47.000000000 +0000
@@ -0,0 +1,37 @@
+/*
+ * Copyright (C) 2012 The Android Open Source Project
@@ -456,9 +434,9 @@ diff -Naur bcprov-jdk15on-148.orig/org/bouncycastle/crypto/digests/AndroidDigest
+ return new SHA512Digest();
+ }
+}
-diff -Naur bcprov-jdk15on-148.orig/org/bouncycastle/crypto/digests/AndroidDigestFactoryInterface.java bcprov-jdk15on-148/org/bouncycastle/crypto/digests/AndroidDigestFactoryInterface.java
---- bcprov-jdk15on-148.orig/org/bouncycastle/crypto/digests/AndroidDigestFactoryInterface.java 1970-01-01 00:00:00.000000000 +0000
-+++ bcprov-jdk15on-148/org/bouncycastle/crypto/digests/AndroidDigestFactoryInterface.java 2012-09-17 23:04:47.000000000 +0000
+diff -Naur bcprov-jdk15on-149.orig/org/bouncycastle/crypto/digests/AndroidDigestFactoryInterface.java bcprov-jdk15on-149/org/bouncycastle/crypto/digests/AndroidDigestFactoryInterface.java
+--- bcprov-jdk15on-149.orig/org/bouncycastle/crypto/digests/AndroidDigestFactoryInterface.java 1970-01-01 00:00:00.000000000 +0000
++++ bcprov-jdk15on-149/org/bouncycastle/crypto/digests/AndroidDigestFactoryInterface.java 2012-09-17 23:04:47.000000000 +0000
@@ -0,0 +1,27 @@
+/*
+ * Copyright (C) 2012 The Android Open Source Project
@@ -487,9 +465,9 @@ diff -Naur bcprov-jdk15on-148.orig/org/bouncycastle/crypto/digests/AndroidDigest
+ public Digest getSHA384();
+ public Digest getSHA512();
+}
-diff -Naur bcprov-jdk15on-148.orig/org/bouncycastle/crypto/digests/AndroidDigestFactoryOpenSSL.java bcprov-jdk15on-148/org/bouncycastle/crypto/digests/AndroidDigestFactoryOpenSSL.java
---- bcprov-jdk15on-148.orig/org/bouncycastle/crypto/digests/AndroidDigestFactoryOpenSSL.java 1970-01-01 00:00:00.000000000 +0000
-+++ bcprov-jdk15on-148/org/bouncycastle/crypto/digests/AndroidDigestFactoryOpenSSL.java 2012-09-17 23:04:47.000000000 +0000
+diff -Naur bcprov-jdk15on-149.orig/org/bouncycastle/crypto/digests/AndroidDigestFactoryOpenSSL.java bcprov-jdk15on-149/org/bouncycastle/crypto/digests/AndroidDigestFactoryOpenSSL.java
+--- bcprov-jdk15on-149.orig/org/bouncycastle/crypto/digests/AndroidDigestFactoryOpenSSL.java 1970-01-01 00:00:00.000000000 +0000
++++ bcprov-jdk15on-149/org/bouncycastle/crypto/digests/AndroidDigestFactoryOpenSSL.java 2012-09-17 23:04:47.000000000 +0000
@@ -0,0 +1,37 @@
+/*
+ * Copyright (C) 2012 The Android Open Source Project
@@ -528,9 +506,9 @@ diff -Naur bcprov-jdk15on-148.orig/org/bouncycastle/crypto/digests/AndroidDigest
+ return new OpenSSLDigest.SHA512();
+ }
+}
-diff -Naur bcprov-jdk15on-148.orig/org/bouncycastle/crypto/digests/OpenSSLDigest.java bcprov-jdk15on-148/org/bouncycastle/crypto/digests/OpenSSLDigest.java
---- bcprov-jdk15on-148.orig/org/bouncycastle/crypto/digests/OpenSSLDigest.java 1970-01-01 00:00:00.000000000 +0000
-+++ bcprov-jdk15on-148/org/bouncycastle/crypto/digests/OpenSSLDigest.java 2013-04-24 05:37:59.000000000 +0000
+diff -Naur bcprov-jdk15on-149.orig/org/bouncycastle/crypto/digests/OpenSSLDigest.java bcprov-jdk15on-149/org/bouncycastle/crypto/digests/OpenSSLDigest.java
+--- bcprov-jdk15on-149.orig/org/bouncycastle/crypto/digests/OpenSSLDigest.java 1970-01-01 00:00:00.000000000 +0000
++++ bcprov-jdk15on-149/org/bouncycastle/crypto/digests/OpenSSLDigest.java 2013-04-24 05:37:59.000000000 +0000
@@ -0,0 +1,159 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
@@ -691,10 +669,10 @@ diff -Naur bcprov-jdk15on-148.orig/org/bouncycastle/crypto/digests/OpenSSLDigest
+ public SHA512() { super("SHA-512", EVP_MD, SIZE, BLOCK_SIZE); }
+ }
+}
-diff -Naur bcprov-jdk15on-148.orig/org/bouncycastle/crypto/encodings/OAEPEncoding.java bcprov-jdk15on-148/org/bouncycastle/crypto/encodings/OAEPEncoding.java
---- bcprov-jdk15on-148.orig/org/bouncycastle/crypto/encodings/OAEPEncoding.java 2013-02-10 00:37:58.000000000 +0000
-+++ bcprov-jdk15on-148/org/bouncycastle/crypto/encodings/OAEPEncoding.java 2012-09-17 23:04:47.000000000 +0000
-@@ -4,7 +4,9 @@
+diff -Naur bcprov-jdk15on-149.orig/org/bouncycastle/crypto/encodings/OAEPEncoding.java bcprov-jdk15on-149/org/bouncycastle/crypto/encodings/OAEPEncoding.java
+--- bcprov-jdk15on-149.orig/org/bouncycastle/crypto/encodings/OAEPEncoding.java 2013-05-31 21:16:46.000000000 +0000
++++ bcprov-jdk15on-149/org/bouncycastle/crypto/encodings/OAEPEncoding.java 2013-05-25 02:14:15.000000000 +0000
+@@ -6,7 +6,9 @@
import org.bouncycastle.crypto.CipherParameters;
import org.bouncycastle.crypto.Digest;
import org.bouncycastle.crypto.InvalidCipherTextException;
@@ -704,8 +682,8 @@ diff -Naur bcprov-jdk15on-148.orig/org/bouncycastle/crypto/encodings/OAEPEncodin
+// END android-changed
import org.bouncycastle.crypto.params.ParametersWithRandom;
- import java.security.SecureRandom;
-@@ -26,7 +28,9 @@
+ /**
+@@ -25,7 +27,9 @@
public OAEPEncoding(
AsymmetricBlockCipher cipher)
{
@@ -716,9 +694,9 @@ diff -Naur bcprov-jdk15on-148.orig/org/bouncycastle/crypto/encodings/OAEPEncodin
}
public OAEPEncoding(
-diff -Naur bcprov-jdk15on-148.orig/org/bouncycastle/crypto/encodings/PKCS1Encoding.java bcprov-jdk15on-148/org/bouncycastle/crypto/encodings/PKCS1Encoding.java
---- bcprov-jdk15on-148.orig/org/bouncycastle/crypto/encodings/PKCS1Encoding.java 2013-02-10 00:37:58.000000000 +0000
-+++ bcprov-jdk15on-148/org/bouncycastle/crypto/encodings/PKCS1Encoding.java 2013-01-31 02:26:40.000000000 +0000
+diff -Naur bcprov-jdk15on-149.orig/org/bouncycastle/crypto/encodings/PKCS1Encoding.java bcprov-jdk15on-149/org/bouncycastle/crypto/encodings/PKCS1Encoding.java
+--- bcprov-jdk15on-149.orig/org/bouncycastle/crypto/encodings/PKCS1Encoding.java 2013-05-31 21:16:46.000000000 +0000
++++ bcprov-jdk15on-149/org/bouncycastle/crypto/encodings/PKCS1Encoding.java 2013-01-31 02:26:40.000000000 +0000
@@ -216,6 +216,12 @@
throw new InvalidCipherTextException("unknown block type");
}
@@ -732,57 +710,9 @@ diff -Naur bcprov-jdk15on-148.orig/org/bouncycastle/crypto/encodings/PKCS1Encodi
if (useStrictLength && block.length != engine.getOutputBlockSize())
{
-diff -Naur bcprov-jdk15on-148.orig/org/bouncycastle/crypto/engines/AESFastEngine.java bcprov-jdk15on-148/org/bouncycastle/crypto/engines/AESFastEngine.java
---- bcprov-jdk15on-148.orig/org/bouncycastle/crypto/engines/AESFastEngine.java 2013-02-10 00:37:58.000000000 +0000
-+++ bcprov-jdk15on-148/org/bouncycastle/crypto/engines/AESFastEngine.java 2013-01-31 02:26:40.000000000 +0000
-@@ -3,6 +3,9 @@
- import org.bouncycastle.crypto.BlockCipher;
- import org.bouncycastle.crypto.CipherParameters;
- import org.bouncycastle.crypto.DataLengthException;
-+// BEGIN android-added
-+import org.bouncycastle.crypto.OutputLengthException;
-+// END android-added
- import org.bouncycastle.crypto.params.KeyParameter;
-
- /**
-@@ -723,7 +726,9 @@
-
- if ((outOff + (32 / 2)) > out.length)
- {
-- throw new DataLengthException("output buffer too short");
-+ // BEGIN android-changed
-+ throw new OutputLengthException("output buffer too short");
-+ // END android-changed
- }
-
- if (forEncryption)
-diff -Naur bcprov-jdk15on-148.orig/org/bouncycastle/crypto/engines/DESedeEngine.java bcprov-jdk15on-148/org/bouncycastle/crypto/engines/DESedeEngine.java
---- bcprov-jdk15on-148.orig/org/bouncycastle/crypto/engines/DESedeEngine.java 2013-02-10 00:37:58.000000000 +0000
-+++ bcprov-jdk15on-148/org/bouncycastle/crypto/engines/DESedeEngine.java 2013-01-31 02:26:40.000000000 +0000
-@@ -2,6 +2,9 @@
-
- import org.bouncycastle.crypto.CipherParameters;
- import org.bouncycastle.crypto.DataLengthException;
-+// BEGIN android-added
-+import org.bouncycastle.crypto.OutputLengthException;
-+// END android-added
- import org.bouncycastle.crypto.params.KeyParameter;
-
- /**
-@@ -99,7 +102,9 @@
-
- if ((outOff + BLOCK_SIZE) > out.length)
- {
-- throw new DataLengthException("output buffer too short");
-+ // BEGIN android-changed
-+ throw new OutputLengthException("output buffer too short");
-+ // END android-changed
- }
-
- byte[] temp = new byte[BLOCK_SIZE];
-diff -Naur bcprov-jdk15on-148.orig/org/bouncycastle/crypto/engines/DESedeWrapEngine.java bcprov-jdk15on-148/org/bouncycastle/crypto/engines/DESedeWrapEngine.java
---- bcprov-jdk15on-148.orig/org/bouncycastle/crypto/engines/DESedeWrapEngine.java 2013-02-10 00:37:58.000000000 +0000
-+++ bcprov-jdk15on-148/org/bouncycastle/crypto/engines/DESedeWrapEngine.java 2012-09-17 23:04:47.000000000 +0000
+diff -Naur bcprov-jdk15on-149.orig/org/bouncycastle/crypto/engines/DESedeWrapEngine.java bcprov-jdk15on-149/org/bouncycastle/crypto/engines/DESedeWrapEngine.java
+--- bcprov-jdk15on-149.orig/org/bouncycastle/crypto/engines/DESedeWrapEngine.java 2013-05-31 21:16:46.000000000 +0000
++++ bcprov-jdk15on-149/org/bouncycastle/crypto/engines/DESedeWrapEngine.java 2012-09-17 23:04:47.000000000 +0000
@@ -6,7 +6,9 @@
import org.bouncycastle.crypto.Digest;
import org.bouncycastle.crypto.InvalidCipherTextException;
@@ -805,9 +735,9 @@ diff -Naur bcprov-jdk15on-148.orig/org/bouncycastle/crypto/engines/DESedeWrapEng
byte[] digest = new byte[20];
/**
-diff -Naur bcprov-jdk15on-148.orig/org/bouncycastle/crypto/generators/DHParametersHelper.java bcprov-jdk15on-148/org/bouncycastle/crypto/generators/DHParametersHelper.java
---- bcprov-jdk15on-148.orig/org/bouncycastle/crypto/generators/DHParametersHelper.java 2013-02-10 00:37:58.000000000 +0000
-+++ bcprov-jdk15on-148/org/bouncycastle/crypto/generators/DHParametersHelper.java 2012-09-17 23:04:47.000000000 +0000
+diff -Naur bcprov-jdk15on-149.orig/org/bouncycastle/crypto/generators/DHParametersHelper.java bcprov-jdk15on-149/org/bouncycastle/crypto/generators/DHParametersHelper.java
+--- bcprov-jdk15on-149.orig/org/bouncycastle/crypto/generators/DHParametersHelper.java 2013-05-31 21:16:46.000000000 +0000
++++ bcprov-jdk15on-149/org/bouncycastle/crypto/generators/DHParametersHelper.java 2012-09-17 23:04:47.000000000 +0000
@@ -3,10 +3,17 @@
import java.math.BigInteger;
import java.security.SecureRandom;
@@ -858,46 +788,45 @@ diff -Naur bcprov-jdk15on-148.orig/org/bouncycastle/crypto/generators/DHParamete
return new BigInteger[] { p, q };
}
-diff -Naur bcprov-jdk15on-148.orig/org/bouncycastle/crypto/generators/DSAParametersGenerator.java bcprov-jdk15on-148/org/bouncycastle/crypto/generators/DSAParametersGenerator.java
---- bcprov-jdk15on-148.orig/org/bouncycastle/crypto/generators/DSAParametersGenerator.java 2013-02-10 00:37:58.000000000 +0000
-+++ bcprov-jdk15on-148/org/bouncycastle/crypto/generators/DSAParametersGenerator.java 2012-09-17 23:04:47.000000000 +0000
-@@ -1,8 +1,9 @@
- package org.bouncycastle.crypto.generators;
+diff -Naur bcprov-jdk15on-149.orig/org/bouncycastle/crypto/generators/DSAParametersGenerator.java bcprov-jdk15on-149/org/bouncycastle/crypto/generators/DSAParametersGenerator.java
+--- bcprov-jdk15on-149.orig/org/bouncycastle/crypto/generators/DSAParametersGenerator.java 2013-05-31 21:16:46.000000000 +0000
++++ bcprov-jdk15on-149/org/bouncycastle/crypto/generators/DSAParametersGenerator.java 2013-05-25 02:14:15.000000000 +0000
+@@ -4,7 +4,9 @@
+ import java.security.SecureRandom;
import org.bouncycastle.crypto.Digest;
-import org.bouncycastle.crypto.digests.SHA1Digest;
--import org.bouncycastle.crypto.digests.SHA256Digest;
+// BEGIN android-changed
+import org.bouncycastle.crypto.digests.AndroidDigestFactory;
+// END android-changed
+ import org.bouncycastle.crypto.params.DSAParameterGenerationParameters;
import org.bouncycastle.crypto.params.DSAParameters;
import org.bouncycastle.crypto.params.DSAValidationParameters;
- import org.bouncycastle.util.Arrays;
-@@ -75,7 +76,9 @@
- byte[] part1 = new byte[20];
- byte[] part2 = new byte[20];
- byte[] u = new byte[20];
-- SHA1Digest sha1 = new SHA1Digest();
+@@ -31,7 +33,9 @@
+
+ public DSAParametersGenerator()
+ {
+- this(new SHA1Digest());
+ // BEGIN android-changed
-+ Digest sha1 = AndroidDigestFactory.getSHA1();
++ this(AndroidDigestFactory.getSHA1());
+ // END android-changed
+ }
+
+ public DSAParametersGenerator(Digest digest)
+@@ -122,7 +126,9 @@
int n = (L - 1) / 160;
byte[] w = new byte[L / 8];
-@@ -166,7 +169,9 @@
- {
- // A.1.1.2 Generation of the Probable Primes p and q Using an Approved Hash Function
- // FIXME This should be configurable (digest size in bits must be >= N)
-- Digest d = new SHA256Digest();
+- if (!(digest instanceof SHA1Digest))
+ // BEGIN android-changed
-+ Digest d = AndroidDigestFactory.getSHA256();
++ if (!(digest.getAlgorithmName().equals("SHA-1")))
+ // END android-changed
- int outlen = d.getDigestSize() * 8;
-
- // 1. Check that the (L, N) pair is in the list of acceptable (L, N pairs) (see Section 4.2). If
-diff -Naur bcprov-jdk15on-148.orig/org/bouncycastle/crypto/generators/OpenSSLPBEParametersGenerator.java bcprov-jdk15on-148/org/bouncycastle/crypto/generators/OpenSSLPBEParametersGenerator.java
---- bcprov-jdk15on-148.orig/org/bouncycastle/crypto/generators/OpenSSLPBEParametersGenerator.java 2013-02-10 00:37:58.000000000 +0000
-+++ bcprov-jdk15on-148/org/bouncycastle/crypto/generators/OpenSSLPBEParametersGenerator.java 2012-09-17 23:04:47.000000000 +0000
+ {
+ throw new IllegalStateException("can only use SHA-1 for generating FIPS 186-2 parameters");
+ }
+diff -Naur bcprov-jdk15on-149.orig/org/bouncycastle/crypto/generators/OpenSSLPBEParametersGenerator.java bcprov-jdk15on-149/org/bouncycastle/crypto/generators/OpenSSLPBEParametersGenerator.java
+--- bcprov-jdk15on-149.orig/org/bouncycastle/crypto/generators/OpenSSLPBEParametersGenerator.java 2013-05-31 21:16:46.000000000 +0000
++++ bcprov-jdk15on-149/org/bouncycastle/crypto/generators/OpenSSLPBEParametersGenerator.java 2012-09-17 23:04:47.000000000 +0000
@@ -3,7 +3,9 @@
import org.bouncycastle.crypto.CipherParameters;
import org.bouncycastle.crypto.Digest;
@@ -920,9 +849,9 @@ diff -Naur bcprov-jdk15on-148.orig/org/bouncycastle/crypto/generators/OpenSSLPBE
/**
* Construct a OpenSSL Parameters generator.
-diff -Naur bcprov-jdk15on-148.orig/org/bouncycastle/crypto/generators/PKCS5S2ParametersGenerator.java bcprov-jdk15on-148/org/bouncycastle/crypto/generators/PKCS5S2ParametersGenerator.java
---- bcprov-jdk15on-148.orig/org/bouncycastle/crypto/generators/PKCS5S2ParametersGenerator.java 2013-02-10 00:37:58.000000000 +0000
-+++ bcprov-jdk15on-148/org/bouncycastle/crypto/generators/PKCS5S2ParametersGenerator.java 2012-09-17 23:04:47.000000000 +0000
+diff -Naur bcprov-jdk15on-149.orig/org/bouncycastle/crypto/generators/PKCS5S2ParametersGenerator.java bcprov-jdk15on-149/org/bouncycastle/crypto/generators/PKCS5S2ParametersGenerator.java
+--- bcprov-jdk15on-149.orig/org/bouncycastle/crypto/generators/PKCS5S2ParametersGenerator.java 2013-05-31 21:16:46.000000000 +0000
++++ bcprov-jdk15on-149/org/bouncycastle/crypto/generators/PKCS5S2ParametersGenerator.java 2013-05-25 02:14:15.000000000 +0000
@@ -4,7 +4,9 @@
import org.bouncycastle.crypto.Digest;
import org.bouncycastle.crypto.Mac;
@@ -934,21 +863,21 @@ diff -Naur bcprov-jdk15on-148.orig/org/bouncycastle/crypto/generators/PKCS5S2Par
import org.bouncycastle.crypto.macs.HMac;
import org.bouncycastle.crypto.params.KeyParameter;
import org.bouncycastle.crypto.params.ParametersWithIV;
-@@ -27,7 +29,9 @@
+@@ -28,7 +30,9 @@
*/
public PKCS5S2ParametersGenerator()
{
-- this(new SHA1Digest());
+- this(new SHA1Digest());
+ // BEGIN android-changed
-+ this(AndroidDigestFactory.getSHA1());
++ this(AndroidDigestFactory.getSHA1());
+ // END android-changed
}
public PKCS5S2ParametersGenerator(Digest digest)
-diff -Naur bcprov-jdk15on-148.orig/org/bouncycastle/crypto/macs/HMac.java bcprov-jdk15on-148/org/bouncycastle/crypto/macs/HMac.java
---- bcprov-jdk15on-148.orig/org/bouncycastle/crypto/macs/HMac.java 2013-02-10 00:37:58.000000000 +0000
-+++ bcprov-jdk15on-148/org/bouncycastle/crypto/macs/HMac.java 2013-01-31 02:26:40.000000000 +0000
-@@ -33,23 +33,31 @@
+diff -Naur bcprov-jdk15on-149.orig/org/bouncycastle/crypto/macs/HMac.java bcprov-jdk15on-149/org/bouncycastle/crypto/macs/HMac.java
+--- bcprov-jdk15on-149.orig/org/bouncycastle/crypto/macs/HMac.java 2013-05-31 21:16:46.000000000 +0000
++++ bcprov-jdk15on-149/org/bouncycastle/crypto/macs/HMac.java 2013-05-25 02:14:15.000000000 +0000
+@@ -36,23 +36,31 @@
{
blockLengths = new Hashtable();
@@ -989,9 +918,9 @@ diff -Naur bcprov-jdk15on-148.orig/org/bouncycastle/crypto/macs/HMac.java bcprov
}
private static int getByteLength(
-diff -Naur bcprov-jdk15on-148.orig/org/bouncycastle/crypto/signers/RSADigestSigner.java bcprov-jdk15on-148/org/bouncycastle/crypto/signers/RSADigestSigner.java
---- bcprov-jdk15on-148.orig/org/bouncycastle/crypto/signers/RSADigestSigner.java 2013-02-10 00:37:58.000000000 +0000
-+++ bcprov-jdk15on-148/org/bouncycastle/crypto/signers/RSADigestSigner.java 2012-09-17 23:04:47.000000000 +0000
+diff -Naur bcprov-jdk15on-149.orig/org/bouncycastle/crypto/signers/RSADigestSigner.java bcprov-jdk15on-149/org/bouncycastle/crypto/signers/RSADigestSigner.java
+--- bcprov-jdk15on-149.orig/org/bouncycastle/crypto/signers/RSADigestSigner.java 2013-05-31 21:16:46.000000000 +0000
++++ bcprov-jdk15on-149/org/bouncycastle/crypto/signers/RSADigestSigner.java 2012-09-17 23:04:47.000000000 +0000
@@ -39,18 +39,24 @@
*/
static
@@ -1023,9 +952,9 @@ diff -Naur bcprov-jdk15on-148.orig/org/bouncycastle/crypto/signers/RSADigestSign
oidMap.put("MD5", PKCSObjectIdentifiers.md5);
}
-diff -Naur bcprov-jdk15on-148.orig/org/bouncycastle/crypto/util/PrivateKeyFactory.java bcprov-jdk15on-148/org/bouncycastle/crypto/util/PrivateKeyFactory.java
---- bcprov-jdk15on-148.orig/org/bouncycastle/crypto/util/PrivateKeyFactory.java 2013-02-10 00:37:58.000000000 +0000
-+++ bcprov-jdk15on-148/org/bouncycastle/crypto/util/PrivateKeyFactory.java 2013-01-31 02:26:40.000000000 +0000
+diff -Naur bcprov-jdk15on-149.orig/org/bouncycastle/crypto/util/PrivateKeyFactory.java bcprov-jdk15on-149/org/bouncycastle/crypto/util/PrivateKeyFactory.java
+--- bcprov-jdk15on-149.orig/org/bouncycastle/crypto/util/PrivateKeyFactory.java 2013-05-31 21:16:46.000000000 +0000
++++ bcprov-jdk15on-149/org/bouncycastle/crypto/util/PrivateKeyFactory.java 2013-01-31 02:26:40.000000000 +0000
@@ -11,7 +11,9 @@
import org.bouncycastle.asn1.ASN1Primitive;
import org.bouncycastle.asn1.ASN1Sequence;
@@ -1103,9 +1032,9 @@ diff -Naur bcprov-jdk15on-148.orig/org/bouncycastle/crypto/util/PrivateKeyFactor
}
}
}
-diff -Naur bcprov-jdk15on-148.orig/org/bouncycastle/crypto/util/PublicKeyFactory.java bcprov-jdk15on-148/org/bouncycastle/crypto/util/PublicKeyFactory.java
---- bcprov-jdk15on-148.orig/org/bouncycastle/crypto/util/PublicKeyFactory.java 2013-02-10 00:37:58.000000000 +0000
-+++ bcprov-jdk15on-148/org/bouncycastle/crypto/util/PublicKeyFactory.java 2013-01-31 02:26:40.000000000 +0000
+diff -Naur bcprov-jdk15on-149.orig/org/bouncycastle/crypto/util/PublicKeyFactory.java bcprov-jdk15on-149/org/bouncycastle/crypto/util/PublicKeyFactory.java
+--- bcprov-jdk15on-149.orig/org/bouncycastle/crypto/util/PublicKeyFactory.java 2013-05-31 21:16:46.000000000 +0000
++++ bcprov-jdk15on-149/org/bouncycastle/crypto/util/PublicKeyFactory.java 2013-01-31 02:26:40.000000000 +0000
@@ -13,13 +13,17 @@
import org.bouncycastle.asn1.ASN1Sequence;
import org.bouncycastle.asn1.DEROctetString;
@@ -1181,10 +1110,10 @@ diff -Naur bcprov-jdk15on-148.orig/org/bouncycastle/crypto/util/PublicKeyFactory
}
}
}
-diff -Naur bcprov-jdk15on-148.orig/org/bouncycastle/jcajce/provider/asymmetric/DH.java bcprov-jdk15on-148/org/bouncycastle/jcajce/provider/asymmetric/DH.java
---- bcprov-jdk15on-148.orig/org/bouncycastle/jcajce/provider/asymmetric/DH.java 2013-02-10 00:37:58.000000000 +0000
-+++ bcprov-jdk15on-148/org/bouncycastle/jcajce/provider/asymmetric/DH.java 2013-01-31 02:26:40.000000000 +0000
-@@ -32,11 +32,13 @@
+diff -Naur bcprov-jdk15on-149.orig/org/bouncycastle/jcajce/provider/asymmetric/DH.java bcprov-jdk15on-149/org/bouncycastle/jcajce/provider/asymmetric/DH.java
+--- bcprov-jdk15on-149.orig/org/bouncycastle/jcajce/provider/asymmetric/DH.java 2013-05-31 21:16:46.000000000 +0000
++++ bcprov-jdk15on-149/org/bouncycastle/jcajce/provider/asymmetric/DH.java 2013-05-25 02:14:15.000000000 +0000
+@@ -32,10 +32,12 @@
provider.addAlgorithm("AlgorithmParameterGenerator.DH", PREFIX + "AlgorithmParameterGeneratorSpi");
@@ -1192,20 +1121,18 @@ diff -Naur bcprov-jdk15on-148.orig/org/bouncycastle/jcajce/provider/asymmetric/D
- provider.addAlgorithm("Cipher.DHIESwithAES", PREFIX + "IESCipher$IESwithAES");
- provider.addAlgorithm("Cipher.DHIESWITHAES", PREFIX + "IESCipher$IESwithAES");
- provider.addAlgorithm("Cipher.DHIESWITHDESEDE", PREFIX + "IESCipher$IESwithDESede");
-- provider.addAlgorithm("KeyPairGenerator.IES", PREFIX + "KeyPairGeneratorSpi");
+ // BEGIN android-removed
+ // provider.addAlgorithm("Cipher.DHIES", PREFIX + "IESCipher$IES");
+ // provider.addAlgorithm("Cipher.DHIESwithAES", PREFIX + "IESCipher$IESwithAES");
+ // provider.addAlgorithm("Cipher.DHIESWITHAES", PREFIX + "IESCipher$IESwithAES");
+ // provider.addAlgorithm("Cipher.DHIESWITHDESEDE", PREFIX + "IESCipher$IESwithDESede");
-+ // provider.addAlgorithm("KeyPairGenerator.IES", PREFIX + "KeyPairGeneratorSpi");
+ // END android-removed
}
}
}
-diff -Naur bcprov-jdk15on-148.orig/org/bouncycastle/jcajce/provider/asymmetric/DSA.java bcprov-jdk15on-148/org/bouncycastle/jcajce/provider/asymmetric/DSA.java
---- bcprov-jdk15on-148.orig/org/bouncycastle/jcajce/provider/asymmetric/DSA.java 2013-02-10 00:37:58.000000000 +0000
-+++ bcprov-jdk15on-148/org/bouncycastle/jcajce/provider/asymmetric/DSA.java 2013-01-31 02:26:40.000000000 +0000
+diff -Naur bcprov-jdk15on-149.orig/org/bouncycastle/jcajce/provider/asymmetric/DSA.java bcprov-jdk15on-149/org/bouncycastle/jcajce/provider/asymmetric/DSA.java
+--- bcprov-jdk15on-149.orig/org/bouncycastle/jcajce/provider/asymmetric/DSA.java 2013-05-31 21:16:46.000000000 +0000
++++ bcprov-jdk15on-149/org/bouncycastle/jcajce/provider/asymmetric/DSA.java 2013-01-31 02:26:40.000000000 +0000
@@ -27,33 +27,43 @@
provider.addAlgorithm("KeyPairGenerator.DSA", PREFIX + "KeyPairGeneratorSpi");
provider.addAlgorithm("KeyFactory.DSA", PREFIX + "KeyFactorySpi");
@@ -1267,9 +1194,9 @@ diff -Naur bcprov-jdk15on-148.orig/org/bouncycastle/jcajce/provider/asymmetric/D
registerOid(provider, DSAUtil.dsaOids[i], "DSA", keyFact);
registerOidAlgorithmParameters(provider, DSAUtil.dsaOids[i], "DSA");
-diff -Naur bcprov-jdk15on-148.orig/org/bouncycastle/jcajce/provider/asymmetric/EC.java bcprov-jdk15on-148/org/bouncycastle/jcajce/provider/asymmetric/EC.java
---- bcprov-jdk15on-148.orig/org/bouncycastle/jcajce/provider/asymmetric/EC.java 2013-02-10 00:37:58.000000000 +0000
-+++ bcprov-jdk15on-148/org/bouncycastle/jcajce/provider/asymmetric/EC.java 2013-01-31 02:26:40.000000000 +0000
+diff -Naur bcprov-jdk15on-149.orig/org/bouncycastle/jcajce/provider/asymmetric/EC.java bcprov-jdk15on-149/org/bouncycastle/jcajce/provider/asymmetric/EC.java
+--- bcprov-jdk15on-149.orig/org/bouncycastle/jcajce/provider/asymmetric/EC.java 2013-05-31 21:16:46.000000000 +0000
++++ bcprov-jdk15on-149/org/bouncycastle/jcajce/provider/asymmetric/EC.java 2013-05-25 02:14:15.000000000 +0000
@@ -1,7 +1,9 @@
package org.bouncycastle.jcajce.provider.asymmetric;
@@ -1357,7 +1284,7 @@ diff -Naur bcprov-jdk15on-148.orig/org/bouncycastle/jcajce/provider/asymmetric/E
provider.addAlgorithm("Signature.ECDSA", PREFIX + "SignatureSpi$ecDSA");
provider.addAlgorithm("Signature.NONEwithECDSA", PREFIX + "SignatureSpi$ecDSAnone");
-@@ -65,23 +77,29 @@
+@@ -65,25 +77,31 @@
provider.addAlgorithm("Alg.Alias.Signature.SHA1WithECDSA", "ECDSA");
provider.addAlgorithm("Alg.Alias.Signature.ECDSAWithSHA1", "ECDSA");
provider.addAlgorithm("Alg.Alias.Signature.1.2.840.10045.4.1", "ECDSA");
@@ -1385,6 +1312,8 @@ diff -Naur bcprov-jdk15on-148.orig/org/bouncycastle/jcajce/provider/asymmetric/E
- addSignatureAlgorithm(provider, "SHA1", "CVC-ECDSA", PREFIX + "SignatureSpi$ecCVCDSA", EACObjectIdentifiers.id_TA_ECDSA_SHA_1);
- addSignatureAlgorithm(provider, "SHA224", "CVC-ECDSA", PREFIX + "SignatureSpi$ecCVCDSA224", EACObjectIdentifiers.id_TA_ECDSA_SHA_224);
- addSignatureAlgorithm(provider, "SHA256", "CVC-ECDSA", PREFIX + "SignatureSpi$ecCVCDSA256", EACObjectIdentifiers.id_TA_ECDSA_SHA_256);
+- addSignatureAlgorithm(provider, "SHA384", "CVC-ECDSA", PREFIX + "SignatureSpi$ecCVCDSA384", EACObjectIdentifiers.id_TA_ECDSA_SHA_384);
+- addSignatureAlgorithm(provider, "SHA512", "CVC-ECDSA", PREFIX + "SignatureSpi$ecCVCDSA512", EACObjectIdentifiers.id_TA_ECDSA_SHA_512);
+ // BEGIN android-removed
+ // addSignatureAlgorithm(provider, "RIPEMD160", "ECDSA", PREFIX + "SignatureSpi$ecDSARipeMD160",TeleTrusTObjectIdentifiers.ecSignWithRipemd160);
+ //
@@ -1397,13 +1326,15 @@ diff -Naur bcprov-jdk15on-148.orig/org/bouncycastle/jcajce/provider/asymmetric/E
+ // addSignatureAlgorithm(provider, "SHA1", "CVC-ECDSA", PREFIX + "SignatureSpi$ecCVCDSA", EACObjectIdentifiers.id_TA_ECDSA_SHA_1);
+ // addSignatureAlgorithm(provider, "SHA224", "CVC-ECDSA", PREFIX + "SignatureSpi$ecCVCDSA224", EACObjectIdentifiers.id_TA_ECDSA_SHA_224);
+ // addSignatureAlgorithm(provider, "SHA256", "CVC-ECDSA", PREFIX + "SignatureSpi$ecCVCDSA256", EACObjectIdentifiers.id_TA_ECDSA_SHA_256);
++ // addSignatureAlgorithm(provider, "SHA384", "CVC-ECDSA", PREFIX + "SignatureSpi$ecCVCDSA384", EACObjectIdentifiers.id_TA_ECDSA_SHA_384);
++ // addSignatureAlgorithm(provider, "SHA512", "CVC-ECDSA", PREFIX + "SignatureSpi$ecCVCDSA512", EACObjectIdentifiers.id_TA_ECDSA_SHA_512);
+ // END android-removed
}
}
}
-diff -Naur bcprov-jdk15on-148.orig/org/bouncycastle/jcajce/provider/asymmetric/RSA.java bcprov-jdk15on-148/org/bouncycastle/jcajce/provider/asymmetric/RSA.java
---- bcprov-jdk15on-148.orig/org/bouncycastle/jcajce/provider/asymmetric/RSA.java 2013-02-10 00:37:58.000000000 +0000
-+++ bcprov-jdk15on-148/org/bouncycastle/jcajce/provider/asymmetric/RSA.java 2013-01-31 02:26:40.000000000 +0000
+diff -Naur bcprov-jdk15on-149.orig/org/bouncycastle/jcajce/provider/asymmetric/RSA.java bcprov-jdk15on-149/org/bouncycastle/jcajce/provider/asymmetric/RSA.java
+--- bcprov-jdk15on-149.orig/org/bouncycastle/jcajce/provider/asymmetric/RSA.java 2013-05-31 21:16:46.000000000 +0000
++++ bcprov-jdk15on-149/org/bouncycastle/jcajce/provider/asymmetric/RSA.java 2013-01-31 02:26:40.000000000 +0000
@@ -3,7 +3,9 @@
import org.bouncycastle.asn1.ASN1ObjectIdentifier;
import org.bouncycastle.asn1.oiw.OIWObjectIdentifiers;
@@ -1685,9 +1616,9 @@ diff -Naur bcprov-jdk15on-148.orig/org/bouncycastle/jcajce/provider/asymmetric/R
}
private void addDigestSignature(
-diff -Naur bcprov-jdk15on-148.orig/org/bouncycastle/jcajce/provider/asymmetric/X509.java bcprov-jdk15on-148/org/bouncycastle/jcajce/provider/asymmetric/X509.java
---- bcprov-jdk15on-148.orig/org/bouncycastle/jcajce/provider/asymmetric/X509.java 2013-02-10 00:37:58.000000000 +0000
-+++ bcprov-jdk15on-148/org/bouncycastle/jcajce/provider/asymmetric/X509.java 2012-09-17 23:04:47.000000000 +0000
+diff -Naur bcprov-jdk15on-149.orig/org/bouncycastle/jcajce/provider/asymmetric/X509.java bcprov-jdk15on-149/org/bouncycastle/jcajce/provider/asymmetric/X509.java
+--- bcprov-jdk15on-149.orig/org/bouncycastle/jcajce/provider/asymmetric/X509.java 2013-05-31 21:16:46.000000000 +0000
++++ bcprov-jdk15on-149/org/bouncycastle/jcajce/provider/asymmetric/X509.java 2012-09-17 23:04:47.000000000 +0000
@@ -18,8 +18,10 @@
public void configure(ConfigurableProvider provider)
@@ -1701,9 +1632,9 @@ diff -Naur bcprov-jdk15on-148.orig/org/bouncycastle/jcajce/provider/asymmetric/X
//
// certificate factories.
-diff -Naur bcprov-jdk15on-148.orig/org/bouncycastle/jcajce/provider/asymmetric/dsa/DSASigner.java bcprov-jdk15on-148/org/bouncycastle/jcajce/provider/asymmetric/dsa/DSASigner.java
---- bcprov-jdk15on-148.orig/org/bouncycastle/jcajce/provider/asymmetric/dsa/DSASigner.java 2013-02-10 00:37:58.000000000 +0000
-+++ bcprov-jdk15on-148/org/bouncycastle/jcajce/provider/asymmetric/dsa/DSASigner.java 2012-09-17 23:04:47.000000000 +0000
+diff -Naur bcprov-jdk15on-149.orig/org/bouncycastle/jcajce/provider/asymmetric/dsa/DSASigner.java bcprov-jdk15on-149/org/bouncycastle/jcajce/provider/asymmetric/dsa/DSASigner.java
+--- bcprov-jdk15on-149.orig/org/bouncycastle/jcajce/provider/asymmetric/dsa/DSASigner.java 2013-05-31 21:16:46.000000000 +0000
++++ bcprov-jdk15on-149/org/bouncycastle/jcajce/provider/asymmetric/dsa/DSASigner.java 2013-05-25 02:14:15.000000000 +0000
@@ -23,11 +23,16 @@
import org.bouncycastle.crypto.DSA;
import org.bouncycastle.crypto.Digest;
@@ -1726,7 +1657,7 @@ diff -Naur bcprov-jdk15on-148.orig/org/bouncycastle/jcajce/provider/asymmetric/d
import org.bouncycastle.crypto.params.ParametersWithRandom;
public class DSASigner
-@@ -228,45 +233,49 @@
+@@ -216,45 +221,49 @@
{
public stdDSA()
{
@@ -1812,9 +1743,9 @@ diff -Naur bcprov-jdk15on-148.orig/org/bouncycastle/jcajce/provider/asymmetric/d
static public class noneDSA
extends DSASigner
-diff -Naur bcprov-jdk15on-148.orig/org/bouncycastle/jcajce/provider/asymmetric/ec/BCECPrivateKey.java bcprov-jdk15on-148/org/bouncycastle/jcajce/provider/asymmetric/ec/BCECPrivateKey.java
---- bcprov-jdk15on-148.orig/org/bouncycastle/jcajce/provider/asymmetric/ec/BCECPrivateKey.java 2013-02-10 00:37:58.000000000 +0000
-+++ bcprov-jdk15on-148/org/bouncycastle/jcajce/provider/asymmetric/ec/BCECPrivateKey.java 2013-01-31 02:26:40.000000000 +0000
+diff -Naur bcprov-jdk15on-149.orig/org/bouncycastle/jcajce/provider/asymmetric/ec/BCECPrivateKey.java bcprov-jdk15on-149/org/bouncycastle/jcajce/provider/asymmetric/ec/BCECPrivateKey.java
+--- bcprov-jdk15on-149.orig/org/bouncycastle/jcajce/provider/asymmetric/ec/BCECPrivateKey.java 2013-05-31 21:16:46.000000000 +0000
++++ bcprov-jdk15on-149/org/bouncycastle/jcajce/provider/asymmetric/ec/BCECPrivateKey.java 2013-05-25 02:14:15.000000000 +0000
@@ -19,8 +19,10 @@
import org.bouncycastle.asn1.DERInteger;
import org.bouncycastle.asn1.DERNull;
@@ -1828,7 +1759,7 @@ diff -Naur bcprov-jdk15on-148.orig/org/bouncycastle/jcajce/provider/asymmetric/e
import org.bouncycastle.asn1.pkcs.PrivateKeyInfo;
import org.bouncycastle.asn1.x509.AlgorithmIdentifier;
import org.bouncycastle.asn1.x509.SubjectPublicKeyInfo;
-@@ -222,21 +224,23 @@
+@@ -224,21 +226,23 @@
ASN1ObjectIdentifier oid = ASN1ObjectIdentifier.getInstance(params.getParameters());
X9ECParameters ecP = ECUtil.getNamedCurveByOid(oid);
@@ -1867,7 +1798,7 @@ diff -Naur bcprov-jdk15on-148.orig/org/bouncycastle/jcajce/provider/asymmetric/e
{
EllipticCurve ellipticCurve = EC5Util.convertCurve(ecP.getCurve(), ecP.getSeed());
-@@ -350,11 +354,13 @@
+@@ -352,11 +356,13 @@
try
{
@@ -1886,98 +1817,10 @@ diff -Naur bcprov-jdk15on-148.orig/org/bouncycastle/jcajce/provider/asymmetric/e
{
info = new PrivateKeyInfo(new AlgorithmIdentifier(X9ObjectIdentifiers.id_ecPublicKey, params.toASN1Primitive()), keyStructure.toASN1Primitive());
-diff -Naur bcprov-jdk15on-148.orig/org/bouncycastle/jcajce/provider/asymmetric/ec/ECUtil.java bcprov-jdk15on-148/org/bouncycastle/jcajce/provider/asymmetric/ec/ECUtil.java
---- bcprov-jdk15on-148.orig/org/bouncycastle/jcajce/provider/asymmetric/ec/ECUtil.java 2013-02-10 00:37:58.000000000 +0000
-+++ bcprov-jdk15on-148/org/bouncycastle/jcajce/provider/asymmetric/ec/ECUtil.java 2013-01-31 02:26:40.000000000 +0000
-@@ -5,11 +5,15 @@
- import java.security.PublicKey;
-
- import org.bouncycastle.asn1.ASN1ObjectIdentifier;
--import org.bouncycastle.asn1.cryptopro.ECGOST3410NamedCurves;
-+// BEGIN android-removed
-+// import org.bouncycastle.asn1.cryptopro.ECGOST3410NamedCurves;
-+// END android-removed
- import org.bouncycastle.asn1.nist.NISTNamedCurves;
- import org.bouncycastle.asn1.pkcs.PrivateKeyInfo;
- 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.x509.SubjectPublicKeyInfo;
- import org.bouncycastle.asn1.x9.X962NamedCurves;
- import org.bouncycastle.asn1.x9.X9ECParameters;
-@@ -224,14 +228,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;
-@@ -249,10 +255,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;
-@@ -270,14 +278,16 @@
- {
- name = NISTNamedCurves.getName(oid);
- }
-- if (name == null)
-- {
-- name = TeleTrusTNamedCurves.getName(oid);
-- }
-- if (name == null)
-- {
-- name = ECGOST3410NamedCurves.getName(oid);
-- }
-+ // BEGIN android-removed
-+ // if (name == null)
-+ // {
-+ // name = TeleTrusTNamedCurves.getName(oid);
-+ // }
-+ // if (name == null)
-+ // {
-+ // name = ECGOST3410NamedCurves.getName(oid);
-+ // }
-+ // END android-removed
- }
-
- return name;
-diff -Naur bcprov-jdk15on-148.orig/org/bouncycastle/jcajce/provider/asymmetric/ec/KeyAgreementSpi.java bcprov-jdk15on-148/org/bouncycastle/jcajce/provider/asymmetric/ec/KeyAgreementSpi.java
---- bcprov-jdk15on-148.orig/org/bouncycastle/jcajce/provider/asymmetric/ec/KeyAgreementSpi.java 2013-02-10 00:37:58.000000000 +0000
-+++ bcprov-jdk15on-148/org/bouncycastle/jcajce/provider/asymmetric/ec/KeyAgreementSpi.java 2013-03-19 19:26:57.000000000 +0000
-@@ -23,20 +23,26 @@
+diff -Naur bcprov-jdk15on-149.orig/org/bouncycastle/jcajce/provider/asymmetric/ec/KeyAgreementSpi.java bcprov-jdk15on-149/org/bouncycastle/jcajce/provider/asymmetric/ec/KeyAgreementSpi.java
+--- bcprov-jdk15on-149.orig/org/bouncycastle/jcajce/provider/asymmetric/ec/KeyAgreementSpi.java 2013-05-31 21:16:46.000000000 +0000
++++ bcprov-jdk15on-149/org/bouncycastle/jcajce/provider/asymmetric/ec/KeyAgreementSpi.java 2013-05-25 02:14:15.000000000 +0000
+@@ -23,21 +23,27 @@
import org.bouncycastle.crypto.CipherParameters;
import org.bouncycastle.crypto.DerivationFunction;
import org.bouncycastle.crypto.agreement.ECDHBasicAgreement;
@@ -2001,6 +1844,7 @@ diff -Naur bcprov-jdk15on-148.orig/org/bouncycastle/jcajce/provider/asymmetric/e
+// import org.bouncycastle.crypto.params.MQVPrivateParameters;
+// import org.bouncycastle.crypto.params.MQVPublicParameters;
+// END android-removed
+ import org.bouncycastle.jcajce.provider.asymmetric.util.ECUtil;
import org.bouncycastle.jce.interfaces.ECPrivateKey;
import org.bouncycastle.jce.interfaces.ECPublicKey;
-import org.bouncycastle.jce.interfaces.MQVPrivateKey;
@@ -2012,7 +1856,7 @@ diff -Naur bcprov-jdk15on-148.orig/org/bouncycastle/jcajce/provider/asymmetric/e
import org.bouncycastle.util.Integers;
/**
-@@ -70,7 +76,9 @@
+@@ -71,7 +77,9 @@
private BigInteger result;
private ECDomainParameters parameters;
private BasicAgreement agreement;
@@ -2023,7 +1867,7 @@ diff -Naur bcprov-jdk15on-148.orig/org/bouncycastle/jcajce/provider/asymmetric/e
private byte[] bigIntToBytes(
BigInteger r)
-@@ -85,7 +93,9 @@
+@@ -86,7 +94,9 @@
{
this.kaAlgorithm = kaAlgorithm;
this.agreement = agreement;
@@ -2034,7 +1878,7 @@ diff -Naur bcprov-jdk15on-148.orig/org/bouncycastle/jcajce/provider/asymmetric/e
}
protected Key engineDoPhase(
-@@ -104,25 +114,27 @@
+@@ -105,25 +115,27 @@
}
CipherParameters pubKey;
@@ -2081,7 +1925,7 @@ diff -Naur bcprov-jdk15on-148.orig/org/bouncycastle/jcajce/provider/asymmetric/e
{
if (!(key instanceof PublicKey))
{
-@@ -143,11 +155,13 @@
+@@ -144,11 +156,13 @@
protected byte[] engineGenerateSecret()
throws IllegalStateException
{
@@ -2100,7 +1944,7 @@ diff -Naur bcprov-jdk15on-148.orig/org/bouncycastle/jcajce/provider/asymmetric/e
return bigIntToBytes(result);
}
-@@ -175,23 +189,25 @@
+@@ -176,23 +190,25 @@
{
byte[] secret = bigIntToBytes(result);
@@ -2143,7 +1987,7 @@ diff -Naur bcprov-jdk15on-148.orig/org/bouncycastle/jcajce/provider/asymmetric/e
{
// TODO Should we be ensuring the key is the right length?
}
-@@ -205,6 +221,12 @@
+@@ -206,6 +222,12 @@
SecureRandom random)
throws InvalidKeyException, InvalidAlgorithmParameterException
{
@@ -2156,7 +2000,7 @@ diff -Naur bcprov-jdk15on-148.orig/org/bouncycastle/jcajce/provider/asymmetric/e
initFromKey(key);
}
-@@ -219,35 +241,37 @@
+@@ -220,35 +242,37 @@
private void initFromKey(Key key)
throws InvalidKeyException
{
@@ -2223,7 +2067,7 @@ diff -Naur bcprov-jdk15on-148.orig/org/bouncycastle/jcajce/provider/asymmetric/e
{
if (!(key instanceof PrivateKey))
{
-@@ -278,39 +302,41 @@
+@@ -279,39 +303,41 @@
}
}
@@ -2300,10 +2144,10 @@ diff -Naur bcprov-jdk15on-148.orig/org/bouncycastle/jcajce/provider/asymmetric/e
+ // }
+ // END android-removed
}
-diff -Naur bcprov-jdk15on-148.orig/org/bouncycastle/jcajce/provider/asymmetric/ec/KeyFactorySpi.java bcprov-jdk15on-148/org/bouncycastle/jcajce/provider/asymmetric/ec/KeyFactorySpi.java
---- bcprov-jdk15on-148.orig/org/bouncycastle/jcajce/provider/asymmetric/ec/KeyFactorySpi.java 2013-02-10 00:37:58.000000000 +0000
-+++ bcprov-jdk15on-148/org/bouncycastle/jcajce/provider/asymmetric/ec/KeyFactorySpi.java 2012-09-17 23:04:47.000000000 +0000
-@@ -200,14 +200,16 @@
+diff -Naur bcprov-jdk15on-149.orig/org/bouncycastle/jcajce/provider/asymmetric/ec/KeyFactorySpi.java bcprov-jdk15on-149/org/bouncycastle/jcajce/provider/asymmetric/ec/KeyFactorySpi.java
+--- bcprov-jdk15on-149.orig/org/bouncycastle/jcajce/provider/asymmetric/ec/KeyFactorySpi.java 2013-05-31 21:16:46.000000000 +0000
++++ bcprov-jdk15on-149/org/bouncycastle/jcajce/provider/asymmetric/ec/KeyFactorySpi.java 2013-05-25 02:14:15.000000000 +0000
+@@ -201,14 +201,16 @@
}
}
@@ -2328,9 +2172,9 @@ diff -Naur bcprov-jdk15on-148.orig/org/bouncycastle/jcajce/provider/asymmetric/e
public static class ECDH
extends KeyFactorySpi
-diff -Naur bcprov-jdk15on-148.orig/org/bouncycastle/jcajce/provider/asymmetric/ec/KeyPairGeneratorSpi.java bcprov-jdk15on-148/org/bouncycastle/jcajce/provider/asymmetric/ec/KeyPairGeneratorSpi.java
---- bcprov-jdk15on-148.orig/org/bouncycastle/jcajce/provider/asymmetric/ec/KeyPairGeneratorSpi.java 2013-02-10 00:37:58.000000000 +0000
-+++ bcprov-jdk15on-148/org/bouncycastle/jcajce/provider/asymmetric/ec/KeyPairGeneratorSpi.java 2013-01-31 02:26:40.000000000 +0000
+diff -Naur bcprov-jdk15on-149.orig/org/bouncycastle/jcajce/provider/asymmetric/ec/KeyPairGeneratorSpi.java bcprov-jdk15on-149/org/bouncycastle/jcajce/provider/asymmetric/ec/KeyPairGeneratorSpi.java
+--- bcprov-jdk15on-149.orig/org/bouncycastle/jcajce/provider/asymmetric/ec/KeyPairGeneratorSpi.java 2013-05-31 21:16:46.000000000 +0000
++++ bcprov-jdk15on-149/org/bouncycastle/jcajce/provider/asymmetric/ec/KeyPairGeneratorSpi.java 2013-05-25 02:14:15.000000000 +0000
@@ -12,7 +12,9 @@
import org.bouncycastle.asn1.ASN1ObjectIdentifier;
import org.bouncycastle.asn1.nist.NISTNamedCurves;
@@ -2342,7 +2186,7 @@ diff -Naur bcprov-jdk15on-148.orig/org/bouncycastle/jcajce/provider/asymmetric/e
import org.bouncycastle.asn1.x9.X962NamedCurves;
import org.bouncycastle.asn1.x9.X9ECParameters;
import org.bouncycastle.crypto.AsymmetricCipherKeyPair;
-@@ -86,7 +88,13 @@
+@@ -87,7 +89,13 @@
SecureRandom random)
{
this.strength = strength;
@@ -2356,7 +2200,7 @@ diff -Naur bcprov-jdk15on-148.orig/org/bouncycastle/jcajce/provider/asymmetric/e
ECGenParameterSpec ecParams = (ECGenParameterSpec)ecParameters.get(Integers.valueOf(strength));
if (ecParams != null)
-@@ -111,6 +119,11 @@
+@@ -112,6 +120,11 @@
SecureRandom random)
throws InvalidAlgorithmParameterException
{
@@ -2368,7 +2212,7 @@ diff -Naur bcprov-jdk15on-148.orig/org/bouncycastle/jcajce/provider/asymmetric/e
if (params instanceof ECParameterSpec)
{
ECParameterSpec p = (ECParameterSpec)params;
-@@ -155,10 +168,12 @@
+@@ -156,10 +169,12 @@
{
ecP = NISTNamedCurves.getByName(curveName);
}
@@ -2385,7 +2229,7 @@ diff -Naur bcprov-jdk15on-148.orig/org/bouncycastle/jcajce/provider/asymmetric/e
if (ecP == null)
{
// See if it's actually an OID string (SunJSSE ServerHandshaker setupEphemeralECDHKeys bug)
-@@ -174,10 +189,12 @@
+@@ -175,10 +190,12 @@
{
ecP = NISTNamedCurves.getByOID(oid);
}
@@ -2402,9 +2246,9 @@ diff -Naur bcprov-jdk15on-148.orig/org/bouncycastle/jcajce/provider/asymmetric/e
if (ecP == null)
{
throw new InvalidAlgorithmParameterException("unknown curve OID: " + curveName);
-diff -Naur bcprov-jdk15on-148.orig/org/bouncycastle/jcajce/provider/asymmetric/ec/SignatureSpi.java bcprov-jdk15on-148/org/bouncycastle/jcajce/provider/asymmetric/ec/SignatureSpi.java
---- bcprov-jdk15on-148.orig/org/bouncycastle/jcajce/provider/asymmetric/ec/SignatureSpi.java 2013-02-10 00:37:58.000000000 +0000
-+++ bcprov-jdk15on-148/org/bouncycastle/jcajce/provider/asymmetric/ec/SignatureSpi.java 2013-01-31 02:26:40.000000000 +0000
+diff -Naur bcprov-jdk15on-149.orig/org/bouncycastle/jcajce/provider/asymmetric/ec/SignatureSpi.java bcprov-jdk15on-149/org/bouncycastle/jcajce/provider/asymmetric/ec/SignatureSpi.java
+--- bcprov-jdk15on-149.orig/org/bouncycastle/jcajce/provider/asymmetric/ec/SignatureSpi.java 2013-05-31 21:16:46.000000000 +0000
++++ bcprov-jdk15on-149/org/bouncycastle/jcajce/provider/asymmetric/ec/SignatureSpi.java 2013-05-25 02:14:15.000000000 +0000
@@ -16,15 +16,22 @@
import org.bouncycastle.crypto.DSA;
import org.bouncycastle.crypto.Digest;
@@ -2434,8 +2278,8 @@ diff -Naur bcprov-jdk15on-148.orig/org/bouncycastle/jcajce/provider/asymmetric/e
+// END android-removed
import org.bouncycastle.jcajce.provider.asymmetric.util.DSABase;
import org.bouncycastle.jcajce.provider.asymmetric.util.DSAEncoder;
-
-@@ -68,7 +75,9 @@
+ import org.bouncycastle.jcajce.provider.asymmetric.util.ECUtil;
+@@ -69,7 +76,9 @@
{
public ecDSA()
{
@@ -2446,7 +2290,7 @@ diff -Naur bcprov-jdk15on-148.orig/org/bouncycastle/jcajce/provider/asymmetric/e
}
}
-@@ -81,21 +90,25 @@
+@@ -82,21 +91,25 @@
}
}
@@ -2481,7 +2325,7 @@ diff -Naur bcprov-jdk15on-148.orig/org/bouncycastle/jcajce/provider/asymmetric/e
}
}
-@@ -104,7 +117,9 @@
+@@ -105,7 +118,9 @@
{
public ecDSA384()
{
@@ -2492,7 +2336,7 @@ diff -Naur bcprov-jdk15on-148.orig/org/bouncycastle/jcajce/provider/asymmetric/e
}
}
-@@ -113,90 +128,94 @@
+@@ -114,108 +129,112 @@
{
public ecDSA512()
{
@@ -2580,6 +2424,24 @@ diff -Naur bcprov-jdk15on-148.orig/org/bouncycastle/jcajce/provider/asymmetric/e
- super(new SHA256Digest(), new ECDSASigner(), new CVCDSAEncoder());
- }
- }
+-
+- static public class ecCVCDSA384
+- extends SignatureSpi
+- {
+- public ecCVCDSA384()
+- {
+- super(new SHA384Digest(), new ECDSASigner(), new CVCDSAEncoder());
+- }
+- }
+-
+- static public class ecCVCDSA512
+- extends SignatureSpi
+- {
+- public ecCVCDSA512()
+- {
+- super(new SHA512Digest(), new ECDSASigner(), new CVCDSAEncoder());
+- }
+- }
+ // BEGIN android-changed
+ super(AndroidDigestFactory.getSHA512(), new ECDSASigner(), new StdDSAEncoder());
+ // END android-changed
@@ -2667,20 +2529,38 @@ diff -Naur bcprov-jdk15on-148.orig/org/bouncycastle/jcajce/provider/asymmetric/e
+ // super(new SHA256Digest(), new ECDSASigner(), new CVCDSAEncoder());
+ // }
+ // }
++ //
++ // static public class ecCVCDSA384
++ // extends SignatureSpi
++ // {
++ // public ecCVCDSA384()
++ // {
++ // super(new SHA384Digest(), new ECDSASigner(), new CVCDSAEncoder());
++ // }
++ // }
++ //
++ // static public class ecCVCDSA512
++ // extends SignatureSpi
++ // {
++ // public ecCVCDSA512()
++ // {
++ // super(new SHA512Digest(), new ECDSASigner(), new CVCDSAEncoder());
++ // }
++ // }
+ // END android-removed
private static class StdDSAEncoder
implements DSAEncoder
-@@ -290,4 +309,4 @@
+@@ -309,4 +328,4 @@
return sig;
}
}
-}
\ No newline at end of file
+}
-diff -Naur bcprov-jdk15on-148.orig/org/bouncycastle/jcajce/provider/asymmetric/rsa/CipherSpi.java bcprov-jdk15on-148/org/bouncycastle/jcajce/provider/asymmetric/rsa/CipherSpi.java
---- bcprov-jdk15on-148.orig/org/bouncycastle/jcajce/provider/asymmetric/rsa/CipherSpi.java 2013-02-10 00:37:58.000000000 +0000
-+++ bcprov-jdk15on-148/org/bouncycastle/jcajce/provider/asymmetric/rsa/CipherSpi.java 2013-01-31 02:26:40.000000000 +0000
+diff -Naur bcprov-jdk15on-149.orig/org/bouncycastle/jcajce/provider/asymmetric/rsa/CipherSpi.java bcprov-jdk15on-149/org/bouncycastle/jcajce/provider/asymmetric/rsa/CipherSpi.java
+--- bcprov-jdk15on-149.orig/org/bouncycastle/jcajce/provider/asymmetric/rsa/CipherSpi.java 2013-05-31 21:16:46.000000000 +0000
++++ bcprov-jdk15on-149/org/bouncycastle/jcajce/provider/asymmetric/rsa/CipherSpi.java 2013-01-31 02:26:40.000000000 +0000
@@ -26,7 +26,9 @@
import org.bouncycastle.crypto.CipherParameters;
import org.bouncycastle.crypto.Digest;
@@ -2821,9 +2701,9 @@ diff -Naur bcprov-jdk15on-148.orig/org/bouncycastle/jcajce/provider/asymmetric/r
+ // }
+ // END android-removed
}
-diff -Naur bcprov-jdk15on-148.orig/org/bouncycastle/jcajce/provider/asymmetric/rsa/DigestSignatureSpi.java bcprov-jdk15on-148/org/bouncycastle/jcajce/provider/asymmetric/rsa/DigestSignatureSpi.java
---- bcprov-jdk15on-148.orig/org/bouncycastle/jcajce/provider/asymmetric/rsa/DigestSignatureSpi.java 2013-02-10 00:37:58.000000000 +0000
-+++ bcprov-jdk15on-148/org/bouncycastle/jcajce/provider/asymmetric/rsa/DigestSignatureSpi.java 2012-09-17 23:04:47.000000000 +0000
+diff -Naur bcprov-jdk15on-149.orig/org/bouncycastle/jcajce/provider/asymmetric/rsa/DigestSignatureSpi.java bcprov-jdk15on-149/org/bouncycastle/jcajce/provider/asymmetric/rsa/DigestSignatureSpi.java
+--- bcprov-jdk15on-149.orig/org/bouncycastle/jcajce/provider/asymmetric/rsa/DigestSignatureSpi.java 2013-05-31 21:16:46.000000000 +0000
++++ bcprov-jdk15on-149/org/bouncycastle/jcajce/provider/asymmetric/rsa/DigestSignatureSpi.java 2012-09-17 23:04:47.000000000 +0000
@@ -17,24 +17,31 @@
import org.bouncycastle.asn1.nist.NISTObjectIdentifiers;
import org.bouncycastle.asn1.oiw.OIWObjectIdentifiers;
@@ -3055,9 +2935,9 @@ diff -Naur bcprov-jdk15on-148.orig/org/bouncycastle/jcajce/provider/asymmetric/r
+ // }
+ // END android-removed
}
-diff -Naur bcprov-jdk15on-148.orig/org/bouncycastle/jcajce/provider/asymmetric/util/BaseCipherSpi.java bcprov-jdk15on-148/org/bouncycastle/jcajce/provider/asymmetric/util/BaseCipherSpi.java
---- bcprov-jdk15on-148.orig/org/bouncycastle/jcajce/provider/asymmetric/util/BaseCipherSpi.java 2013-02-10 00:37:58.000000000 +0000
-+++ bcprov-jdk15on-148/org/bouncycastle/jcajce/provider/asymmetric/util/BaseCipherSpi.java 2012-09-17 23:04:47.000000000 +0000
+diff -Naur bcprov-jdk15on-149.orig/org/bouncycastle/jcajce/provider/asymmetric/util/BaseCipherSpi.java bcprov-jdk15on-149/org/bouncycastle/jcajce/provider/asymmetric/util/BaseCipherSpi.java
+--- bcprov-jdk15on-149.orig/org/bouncycastle/jcajce/provider/asymmetric/util/BaseCipherSpi.java 2013-05-31 21:16:46.000000000 +0000
++++ bcprov-jdk15on-149/org/bouncycastle/jcajce/provider/asymmetric/util/BaseCipherSpi.java 2012-09-17 23:04:47.000000000 +0000
@@ -18,8 +18,10 @@
import javax.crypto.NoSuchPaddingException;
import javax.crypto.spec.IvParameterSpec;
@@ -3084,23 +2964,97 @@ diff -Naur bcprov-jdk15on-148.orig/org/bouncycastle/jcajce/provider/asymmetric/u
};
-diff -Naur bcprov-jdk15on-148.orig/org/bouncycastle/jcajce/provider/asymmetric/x509/CertificateFactory.java bcprov-jdk15on-148/org/bouncycastle/jcajce/provider/asymmetric/x509/CertificateFactory.java
---- bcprov-jdk15on-148.orig/org/bouncycastle/jcajce/provider/asymmetric/x509/CertificateFactory.java 2013-02-10 00:37:58.000000000 +0000
-+++ bcprov-jdk15on-148/org/bouncycastle/jcajce/provider/asymmetric/x509/CertificateFactory.java 2013-02-21 00:01:31.000000000 +0000
-@@ -334,7 +334,9 @@
+diff -Naur bcprov-jdk15on-149.orig/org/bouncycastle/jcajce/provider/asymmetric/util/ECUtil.java bcprov-jdk15on-149/org/bouncycastle/jcajce/provider/asymmetric/util/ECUtil.java
+--- bcprov-jdk15on-149.orig/org/bouncycastle/jcajce/provider/asymmetric/util/ECUtil.java 2013-05-31 21:16:46.000000000 +0000
++++ bcprov-jdk15on-149/org/bouncycastle/jcajce/provider/asymmetric/util/ECUtil.java 2013-05-25 02:14:15.000000000 +0000
+@@ -5,11 +5,15 @@
+ import java.security.PublicKey;
- public Iterator engineGetCertPathEncodings()
- {
-- return null; // TODO: PKIXCertPath.certPathEncodings.iterator();
-+ // BEGIN android-changed
-+ return PKIXCertPath.certPathEncodings.iterator();
-+ // END android-changed
- }
+ import org.bouncycastle.asn1.ASN1ObjectIdentifier;
+-import org.bouncycastle.asn1.cryptopro.ECGOST3410NamedCurves;
++// BEGIN android-removed
++// import org.bouncycastle.asn1.cryptopro.ECGOST3410NamedCurves;
++// END android-removed
+ import org.bouncycastle.asn1.nist.NISTNamedCurves;
+ import org.bouncycastle.asn1.pkcs.PrivateKeyInfo;
+ 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.x509.SubjectPublicKeyInfo;
+ import org.bouncycastle.asn1.x9.X962NamedCurves;
+ import org.bouncycastle.asn1.x9.X9ECParameters;
+@@ -225,14 +229,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;
+@@ -250,10 +256,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;
+@@ -271,14 +279,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
+ }
- public CertPath engineGenerateCertPath(
-diff -Naur bcprov-jdk15on-148.orig/org/bouncycastle/jcajce/provider/asymmetric/x509/PKIXCertPath.java bcprov-jdk15on-148/org/bouncycastle/jcajce/provider/asymmetric/x509/PKIXCertPath.java
---- bcprov-jdk15on-148.orig/org/bouncycastle/jcajce/provider/asymmetric/x509/PKIXCertPath.java 2013-02-10 00:37:58.000000000 +0000
-+++ bcprov-jdk15on-148/org/bouncycastle/jcajce/provider/asymmetric/x509/PKIXCertPath.java 2013-02-21 00:01:31.000000000 +0000
+ return name;
+diff -Naur bcprov-jdk15on-149.orig/org/bouncycastle/jcajce/provider/asymmetric/x509/PKIXCertPath.java bcprov-jdk15on-149/org/bouncycastle/jcajce/provider/asymmetric/x509/PKIXCertPath.java
+--- bcprov-jdk15on-149.orig/org/bouncycastle/jcajce/provider/asymmetric/x509/PKIXCertPath.java 2013-05-31 21:16:46.000000000 +0000
++++ bcprov-jdk15on-149/org/bouncycastle/jcajce/provider/asymmetric/x509/PKIXCertPath.java 2013-02-21 00:01:31.000000000 +0000
@@ -36,7 +36,9 @@
import org.bouncycastle.asn1.pkcs.SignedData;
import org.bouncycastle.jce.provider.BouncyCastleProvider;
@@ -3174,10 +3128,571 @@ diff -Naur bcprov-jdk15on-148.orig/org/bouncycastle/jcajce/provider/asymmetric/x
else
{
throw new CertificateEncodingException("unsupported encoding: " + encoding);
-diff -Naur bcprov-jdk15on-148.orig/org/bouncycastle/jcajce/provider/symmetric/AES.java bcprov-jdk15on-148/org/bouncycastle/jcajce/provider/symmetric/AES.java
---- bcprov-jdk15on-148.orig/org/bouncycastle/jcajce/provider/symmetric/AES.java 2013-02-10 00:37:58.000000000 +0000
-+++ bcprov-jdk15on-148/org/bouncycastle/jcajce/provider/symmetric/AES.java 2012-09-17 23:04:47.000000000 +0000
-@@ -1,31 +1,43 @@
+diff -Naur bcprov-jdk15on-149.orig/org/bouncycastle/jcajce/provider/asymmetric/x509/X509CertificateObject.java bcprov-jdk15on-149/org/bouncycastle/jcajce/provider/asymmetric/x509/X509CertificateObject.java
+--- bcprov-jdk15on-149.orig/org/bouncycastle/jcajce/provider/asymmetric/x509/X509CertificateObject.java 2013-05-31 21:16:46.000000000 +0000
++++ bcprov-jdk15on-149/org/bouncycastle/jcajce/provider/asymmetric/x509/X509CertificateObject.java 2013-05-25 02:14:15.000000000 +0000
+@@ -57,6 +57,9 @@
+ import org.bouncycastle.asn1.x509.Extensions;
+ import org.bouncycastle.asn1.x509.GeneralName;
+ import org.bouncycastle.asn1.x509.KeyUsage;
++// BEGIN android-added
++import org.bouncycastle.asn1.x509.X509Name;
++// END android-added
+ import org.bouncycastle.jcajce.provider.asymmetric.util.PKCS12BagAttributeCarrierImpl;
+ import org.bouncycastle.jce.X509Principal;
+ import org.bouncycastle.jce.interfaces.PKCS12BagAttributeCarrier;
+@@ -564,12 +567,20 @@
+ }
+ }
+
++ // BEGIN android-changed
++ private byte[] encoded;
++ // END android-changed
+ public byte[] getEncoded()
+ throws CertificateEncodingException
+ {
+ try
+ {
+- return c.getEncoded(ASN1Encoding.DER);
++ // BEGIN android-changed
++ if (encoded == null) {
++ encoded = c.getEncoded(ASN1Encoding.DER);
++ }
++ return encoded;
++ // END android-changed
+ }
+ catch (IOException e)
+ {
+@@ -860,7 +871,9 @@
+ list.add(genName.getEncoded());
+ break;
+ case GeneralName.directoryName:
+- list.add(X500Name.getInstance(RFC4519Style.INSTANCE, genName.getName()).toString());
++ // BEGIN android-changed
++ list.add(X509Name.getInstance(genName.getName()).toString(true, X509Name.DefaultSymbols));
++ // END android-changed
+ break;
+ case GeneralName.dNSName:
+ case GeneralName.rfc822Name:
+diff -Naur bcprov-jdk15on-149.orig/org/bouncycastle/jcajce/provider/asymmetric/x509/X509SignatureUtil.java bcprov-jdk15on-149/org/bouncycastle/jcajce/provider/asymmetric/x509/X509SignatureUtil.java
+--- bcprov-jdk15on-149.orig/org/bouncycastle/jcajce/provider/asymmetric/x509/X509SignatureUtil.java 2013-05-31 21:16:46.000000000 +0000
++++ bcprov-jdk15on-149/org/bouncycastle/jcajce/provider/asymmetric/x509/X509SignatureUtil.java 2013-05-25 02:14:15.000000000 +0000
+@@ -14,12 +14,16 @@
+ import org.bouncycastle.asn1.ASN1Sequence;
+ import org.bouncycastle.asn1.DERNull;
+ import org.bouncycastle.asn1.DERObjectIdentifier;
+-import org.bouncycastle.asn1.cryptopro.CryptoProObjectIdentifiers;
++// BEGIN android-removed
++// import org.bouncycastle.asn1.cryptopro.CryptoProObjectIdentifiers;
++// END android-removed
+ import org.bouncycastle.asn1.nist.NISTObjectIdentifiers;
+ import org.bouncycastle.asn1.oiw.OIWObjectIdentifiers;
+ import org.bouncycastle.asn1.pkcs.PKCSObjectIdentifiers;
+ import org.bouncycastle.asn1.pkcs.RSASSAPSSparams;
+-import org.bouncycastle.asn1.teletrust.TeleTrusTObjectIdentifiers;
++// BEGIN android-removed
++// import org.bouncycastle.asn1.teletrust.TeleTrusTObjectIdentifiers;
++// END android-removed
+ import org.bouncycastle.asn1.x509.AlgorithmIdentifier;
+ import org.bouncycastle.asn1.x9.X9ObjectIdentifiers;
+
+@@ -114,22 +118,24 @@
+ {
+ return "SHA512";
+ }
+- else if (TeleTrusTObjectIdentifiers.ripemd128.equals(digestAlgOID))
+- {
+- return "RIPEMD128";
+- }
+- else if (TeleTrusTObjectIdentifiers.ripemd160.equals(digestAlgOID))
+- {
+- return "RIPEMD160";
+- }
+- else if (TeleTrusTObjectIdentifiers.ripemd256.equals(digestAlgOID))
+- {
+- return "RIPEMD256";
+- }
+- else if (CryptoProObjectIdentifiers.gostR3411.equals(digestAlgOID))
+- {
+- return "GOST3411";
+- }
++ // BEGIN android-removed
++ // else if (TeleTrusTObjectIdentifiers.ripemd128.equals(digestAlgOID))
++ // {
++ // return "RIPEMD128";
++ // }
++ // else if (TeleTrusTObjectIdentifiers.ripemd160.equals(digestAlgOID))
++ // {
++ // return "RIPEMD160";
++ // }
++ // else if (TeleTrusTObjectIdentifiers.ripemd256.equals(digestAlgOID))
++ // {
++ // return "RIPEMD256";
++ // }
++ // else if (CryptoProObjectIdentifiers.gostR3411.equals(digestAlgOID))
++ // {
++ // return "GOST3411";
++ // }
++ // END android-removed
+ else
+ {
+ return digestAlgOID.getId();
+diff -Naur bcprov-jdk15on-149.orig/org/bouncycastle/jcajce/provider/digest/SHA256.java bcprov-jdk15on-149/org/bouncycastle/jcajce/provider/digest/SHA256.java
+--- bcprov-jdk15on-149.orig/org/bouncycastle/jcajce/provider/digest/SHA256.java 2013-05-31 21:16:46.000000000 +0000
++++ bcprov-jdk15on-149/org/bouncycastle/jcajce/provider/digest/SHA256.java 2013-05-25 02:14:15.000000000 +0000
+@@ -45,17 +45,19 @@
+ }
+ }
+
+- /**
+- * PBEWithHmacSHA
+- */
+- public static class PBEWithMacKeyFactory
+- extends PBESecretKeyFactory
+- {
+- public PBEWithMacKeyFactory()
+- {
+- super("PBEwithHmacSHA256", null, false, PKCS12, SHA256, 256, 0);
+- }
+- }
++ // BEGIN android-removed
++ // /**
++ // * PBEWithHmacSHA
++ // */
++ // public static class PBEWithMacKeyFactory
++ // extends PBESecretKeyFactory
++ // {
++ // public PBEWithMacKeyFactory()
++ // {
++ // super("PBEwithHmacSHA256", null, false, PKCS12, SHA256, 256, 0);
++ // }
++ // }
++ // END android-removed
+
+ /**
+ * HMACSHA256
+@@ -84,9 +86,11 @@
+ provider.addAlgorithm("Alg.Alias.MessageDigest.SHA256", "SHA-256");
+ provider.addAlgorithm("Alg.Alias.MessageDigest." + NISTObjectIdentifiers.id_sha256, "SHA-256");
+
+- provider.addAlgorithm("SecretKeyFactory.PBEWITHHMACSHA256", PREFIX + "$PBEWithMacKeyFactory");
+- provider.addAlgorithm("Alg.Alias.SecretKeyFactory.PBEWITHHMACSHA-256", "PBEWITHHMACSHA256");
+- provider.addAlgorithm("Alg.Alias.SecretKeyFactory." + NISTObjectIdentifiers.id_sha256, "PBEWITHHMACSHA256");
++ // BEGIN android-removed
++ // provider.addAlgorithm("SecretKeyFactory.PBEWITHHMACSHA256", PREFIX + "$PBEWithMacKeyFactory");
++ // provider.addAlgorithm("Alg.Alias.SecretKeyFactory.PBEWITHHMACSHA-256", "PBEWITHHMACSHA256");
++ // provider.addAlgorithm("Alg.Alias.SecretKeyFactory." + NISTObjectIdentifiers.id_sha256, "PBEWITHHMACSHA256");
++ // END android-removed
+
+ addHMACAlgorithm(provider, "SHA256", PREFIX + "$HashMac", PREFIX + "$KeyGenerator");
+ addHMACAlias(provider, "SHA256", PKCSObjectIdentifiers.id_hmacWithSHA256);
+diff -Naur bcprov-jdk15on-149.orig/org/bouncycastle/jcajce/provider/digest/SHA384.java bcprov-jdk15on-149/org/bouncycastle/jcajce/provider/digest/SHA384.java
+--- bcprov-jdk15on-149.orig/org/bouncycastle/jcajce/provider/digest/SHA384.java 2013-05-31 21:16:46.000000000 +0000
++++ bcprov-jdk15on-149/org/bouncycastle/jcajce/provider/digest/SHA384.java 2013-05-25 02:14:15.000000000 +0000
+@@ -5,7 +5,9 @@
+ import org.bouncycastle.crypto.CipherKeyGenerator;
+ import org.bouncycastle.crypto.digests.SHA384Digest;
+ import org.bouncycastle.crypto.macs.HMac;
+-import org.bouncycastle.crypto.macs.OldHMac;
++// BEGIN android-removed
++// import org.bouncycastle.crypto.macs.OldHMac;
++// END android-removed
+ import org.bouncycastle.jcajce.provider.config.ConfigurableProvider;
+ import org.bouncycastle.jcajce.provider.symmetric.util.BaseKeyGenerator;
+ import org.bouncycastle.jcajce.provider.symmetric.util.BaseMac;
+@@ -57,14 +59,16 @@
+ }
+ }
+
+- public static class OldSHA384
+- extends BaseMac
+- {
+- public OldSHA384()
+- {
+- super(new OldHMac(new SHA384Digest()));
+- }
+- }
++ // BEGIN android-removed
++ // public static class OldSHA384
++ // extends BaseMac
++ // {
++ // public OldSHA384()
++ // {
++ // super(new OldHMac(new SHA384Digest()));
++ // }
++ // }
++ // END android-removed
+
+ public static class Mappings
+ extends DigestAlgorithmProvider
+@@ -80,7 +84,9 @@
+ provider.addAlgorithm("MessageDigest.SHA-384", PREFIX + "$Digest");
+ provider.addAlgorithm("Alg.Alias.MessageDigest.SHA384", "SHA-384");
+ provider.addAlgorithm("Alg.Alias.MessageDigest." + NISTObjectIdentifiers.id_sha384, "SHA-384");
+- provider.addAlgorithm("Mac.OLDHMACSHA384", PREFIX + "$OldSHA384");
++ // BEGIN android-removed
++ // provider.addAlgorithm("Mac.OLDHMACSHA384", PREFIX + "$OldSHA384");
++ // END android-removed
+
+ addHMACAlgorithm(provider, "SHA384", PREFIX + "$HashMac", PREFIX + "$KeyGenerator");
+ addHMACAlias(provider, "SHA384", PKCSObjectIdentifiers.id_hmacWithSHA384);
+diff -Naur bcprov-jdk15on-149.orig/org/bouncycastle/jcajce/provider/digest/SHA512.java bcprov-jdk15on-149/org/bouncycastle/jcajce/provider/digest/SHA512.java
+--- bcprov-jdk15on-149.orig/org/bouncycastle/jcajce/provider/digest/SHA512.java 2013-05-31 21:16:46.000000000 +0000
++++ bcprov-jdk15on-149/org/bouncycastle/jcajce/provider/digest/SHA512.java 2013-05-25 02:14:15.000000000 +0000
+@@ -4,9 +4,13 @@
+ import org.bouncycastle.asn1.pkcs.PKCSObjectIdentifiers;
+ import org.bouncycastle.crypto.CipherKeyGenerator;
+ import org.bouncycastle.crypto.digests.SHA512Digest;
+-import org.bouncycastle.crypto.digests.SHA512tDigest;
++// BEGIN android-removed
++// import org.bouncycastle.crypto.digests.SHA512tDigest;
++// END android-removed
+ import org.bouncycastle.crypto.macs.HMac;
+-import org.bouncycastle.crypto.macs.OldHMac;
++// BEGIN android-removed
++// import org.bouncycastle.crypto.macs.OldHMac;
++// END android-removed
+ import org.bouncycastle.jcajce.provider.config.ConfigurableProvider;
+ import org.bouncycastle.jcajce.provider.symmetric.util.BaseKeyGenerator;
+ import org.bouncycastle.jcajce.provider.symmetric.util.BaseMac;
+@@ -37,42 +41,44 @@
+ }
+ }
+
+- static public class DigestT
+- extends BCMessageDigest
+- implements Cloneable
+- {
+- public DigestT(int bitLength)
+- {
+- super(new SHA512tDigest(bitLength));
+- }
+-
+- public Object clone()
+- throws CloneNotSupportedException
+- {
+- DigestT d = (DigestT)super.clone();
+- d.digest = new SHA512tDigest((SHA512tDigest)digest);
+-
+- return d;
+- }
+- }
+-
+- static public class DigestT224
+- extends DigestT
+- {
+- public DigestT224()
+- {
+- super(224);
+- }
+- }
+-
+- static public class DigestT256
+- extends DigestT
+- {
+- public DigestT256()
+- {
+- super(256);
+- }
+- }
++ // BEGIN android-removed
++ // static public class DigestT
++ // extends BCMessageDigest
++ // implements Cloneable
++ // {
++ // public DigestT(int bitLength)
++ // {
++ // super(new SHA512tDigest(bitLength));
++ // }
++ //
++ // public Object clone()
++ // throws CloneNotSupportedException
++ // {
++ // DigestT d = (DigestT)super.clone();
++ // d.digest = new SHA512tDigest((SHA512tDigest)digest);
++ //
++ // return d;
++ // }
++ // }
++ //
++ // static public class DigestT224
++ // extends DigestT
++ // {
++ // public DigestT224()
++ // {
++ // super(224);
++ // }
++ // }
++ //
++ // static public class DigestT256
++ // extends DigestT
++ // {
++ // public DigestT256()
++ // {
++ // super(256);
++ // }
++ // }
++ // END android-removed
+
+ public static class HashMac
+ extends BaseMac
+@@ -83,35 +89,37 @@
+ }
+ }
+
+- public static class HashMacT224
+- extends BaseMac
+- {
+- public HashMacT224()
+- {
+- super(new HMac(new SHA512tDigest(224)));
+- }
+- }
+-
+- public static class HashMacT256
+- extends BaseMac
+- {
+- public HashMacT256()
+- {
+- super(new HMac(new SHA512tDigest(256)));
+- }
+- }
+-
+- /**
+- * SHA-512 HMac
+- */
+- public static class OldSHA512
+- extends BaseMac
+- {
+- public OldSHA512()
+- {
+- super(new OldHMac(new SHA512Digest()));
+- }
+- }
++ // BEGIN android-removed
++ // public static class HashMacT224
++ // extends BaseMac
++ // {
++ // public HashMacT224()
++ // {
++ // super(new HMac(new SHA512tDigest(224)));
++ // }
++ // }
++ //
++ // public static class HashMacT256
++ // extends BaseMac
++ // {
++ // public HashMacT256()
++ // {
++ // super(new HMac(new SHA512tDigest(256)));
++ // }
++ // }
++ //
++ // /**
++ // * SHA-512 HMac
++ // */
++ // public static class OldSHA512
++ // extends BaseMac
++ // {
++ // public OldSHA512()
++ // {
++ // super(new OldHMac(new SHA512Digest()));
++ // }
++ // }
++ // END android-removed
+
+ /**
+ * HMACSHA512
+@@ -125,23 +133,25 @@
+ }
+ }
+
+- public static class KeyGeneratorT224
+- extends BaseKeyGenerator
+- {
+- public KeyGeneratorT224()
+- {
+- super("HMACSHA512/224", 224, new CipherKeyGenerator());
+- }
+- }
+-
+- public static class KeyGeneratorT256
+- extends BaseKeyGenerator
+- {
+- public KeyGeneratorT256()
+- {
+- super("HMACSHA512/256", 256, new CipherKeyGenerator());
+- }
+- }
++ // BEGIN android-removed
++ // public static class KeyGeneratorT224
++ // extends BaseKeyGenerator
++ // {
++ // public KeyGeneratorT224()
++ // {
++ // super("HMACSHA512/224", 224, new CipherKeyGenerator());
++ // }
++ // }
++ //
++ // public static class KeyGeneratorT256
++ // extends BaseKeyGenerator
++ // {
++ // public KeyGeneratorT256()
++ // {
++ // super("HMACSHA512/256", 256, new CipherKeyGenerator());
++ // }
++ // }
++ // END android-removed
+
+ public static class Mappings
+ extends DigestAlgorithmProvider
+@@ -158,21 +168,25 @@
+ provider.addAlgorithm("Alg.Alias.MessageDigest.SHA512", "SHA-512");
+ provider.addAlgorithm("Alg.Alias.MessageDigest." + NISTObjectIdentifiers.id_sha512, "SHA-512");
+
+- provider.addAlgorithm("MessageDigest.SHA-512/224", PREFIX + "$DigestT224");
+- provider.addAlgorithm("Alg.Alias.MessageDigest.SHA512/224", "SHA-512/224");
+- provider.addAlgorithm("Alg.Alias.MessageDigest." + NISTObjectIdentifiers.id_sha512_224, "SHA-512/224");
+-
+- provider.addAlgorithm("MessageDigest.SHA-512/256", PREFIX + "$DigestT256");
+- provider.addAlgorithm("Alg.Alias.MessageDigest.SHA512256", "SHA-512/256");
+- provider.addAlgorithm("Alg.Alias.MessageDigest." + NISTObjectIdentifiers.id_sha512_256, "SHA-512/256");
+-
+- provider.addAlgorithm("Mac.OLDHMACSHA512", PREFIX + "$OldSHA512");
++ // BEGIN android-removed
++ // provider.addAlgorithm("MessageDigest.SHA-512/224", PREFIX + "$DigestT224");
++ // provider.addAlgorithm("Alg.Alias.MessageDigest.SHA512/224", "SHA-512/224");
++ // provider.addAlgorithm("Alg.Alias.MessageDigest." + NISTObjectIdentifiers.id_sha512_224, "SHA-512/224");
++ //
++ // provider.addAlgorithm("MessageDigest.SHA-512/256", PREFIX + "$DigestT256");
++ // provider.addAlgorithm("Alg.Alias.MessageDigest.SHA512256", "SHA-512/256");
++ // provider.addAlgorithm("Alg.Alias.MessageDigest." + NISTObjectIdentifiers.id_sha512_256, "SHA-512/256");
++ //
++ // provider.addAlgorithm("Mac.OLDHMACSHA512", PREFIX + "$OldSHA512");
++ // END android-removed
+
+ addHMACAlgorithm(provider, "SHA512", PREFIX + "$HashMac", PREFIX + "$KeyGenerator");
+ addHMACAlias(provider, "SHA512", PKCSObjectIdentifiers.id_hmacWithSHA512);
+
+- addHMACAlgorithm(provider, "SHA512/224", PREFIX + "$HashMacT224", PREFIX + "$KeyGeneratorT224");
+- addHMACAlgorithm(provider, "SHA512/256", PREFIX + "$HashMacT256", PREFIX + "$KeyGeneratorT256");
++ // BEGIN android-removed
++ // addHMACAlgorithm(provider, "SHA512/224", PREFIX + "$HashMacT224", PREFIX + "$KeyGeneratorT224");
++ // addHMACAlgorithm(provider, "SHA512/256", PREFIX + "$HashMacT256", PREFIX + "$KeyGeneratorT256");
++ // END android-removed
+ }
+ }
+
+diff -Naur bcprov-jdk15on-149.orig/org/bouncycastle/jcajce/provider/keystore/BC.java bcprov-jdk15on-149/org/bouncycastle/jcajce/provider/keystore/BC.java
+--- bcprov-jdk15on-149.orig/org/bouncycastle/jcajce/provider/keystore/BC.java 2013-05-31 21:16:46.000000000 +0000
++++ bcprov-jdk15on-149/org/bouncycastle/jcajce/provider/keystore/BC.java 2013-05-25 02:14:15.000000000 +0000
+@@ -17,7 +17,9 @@
+ public void configure(ConfigurableProvider provider)
+ {
+ provider.addAlgorithm("KeyStore.BKS", PREFIX + "BcKeyStoreSpi$Std");
+- provider.addAlgorithm("KeyStore.BKS-V1", PREFIX + "BcKeyStoreSpi$Version1");
++ // BEGIN android-removed
++ // provider.addAlgorithm("KeyStore.BKS-V1", PREFIX + "BcKeyStoreSpi$Version1");
++ // END android-removed
+ provider.addAlgorithm("KeyStore.BouncyCastle", PREFIX + "BcKeyStoreSpi$BouncyCastleStore");
+ provider.addAlgorithm("Alg.Alias.KeyStore.UBER", "BouncyCastle");
+ provider.addAlgorithm("Alg.Alias.KeyStore.BOUNCYCASTLE", "BouncyCastle");
+diff -Naur bcprov-jdk15on-149.orig/org/bouncycastle/jcajce/provider/keystore/PKCS12.java bcprov-jdk15on-149/org/bouncycastle/jcajce/provider/keystore/PKCS12.java
+--- bcprov-jdk15on-149.orig/org/bouncycastle/jcajce/provider/keystore/PKCS12.java 2013-05-31 21:16:46.000000000 +0000
++++ bcprov-jdk15on-149/org/bouncycastle/jcajce/provider/keystore/PKCS12.java 2013-05-25 02:14:15.000000000 +0000
+@@ -17,14 +17,16 @@
+ public void configure(ConfigurableProvider provider)
+ {
+ provider.addAlgorithm("KeyStore.PKCS12", PREFIX + "PKCS12KeyStoreSpi$BCPKCS12KeyStore");
+- provider.addAlgorithm("KeyStore.BCPKCS12", PREFIX + "PKCS12KeyStoreSpi$BCPKCS12KeyStore");
+- provider.addAlgorithm("KeyStore.PKCS12-DEF", PREFIX + "PKCS12KeyStoreSpi$DefPKCS12KeyStore");
+-
+- provider.addAlgorithm("KeyStore.PKCS12-3DES-40RC2", PREFIX + "PKCS12KeyStoreSpi$BCPKCS12KeyStore");
+- provider.addAlgorithm("KeyStore.PKCS12-3DES-3DES", PREFIX + "PKCS12KeyStoreSpi$BCPKCS12KeyStore3DES");
+-
+- provider.addAlgorithm("KeyStore.PKCS12-DEF-3DES-40RC2", PREFIX + "PKCS12KeyStoreSpi$DefPKCS12KeyStore");
+- provider.addAlgorithm("KeyStore.PKCS12-DEF-3DES-3DES", PREFIX + "PKCS12KeyStoreSpi$DefPKCS12KeyStore3DES");
++ // BEGIN android-removed
++ // provider.addAlgorithm("KeyStore.BCPKCS12", PREFIX + "PKCS12KeyStoreSpi$BCPKCS12KeyStore");
++ // provider.addAlgorithm("KeyStore.PKCS12-DEF", PREFIX + "PKCS12KeyStoreSpi$DefPKCS12KeyStore");
++ //
++ // provider.addAlgorithm("KeyStore.PKCS12-3DES-40RC2", PREFIX + "PKCS12KeyStoreSpi$BCPKCS12KeyStore");
++ // provider.addAlgorithm("KeyStore.PKCS12-3DES-3DES", PREFIX + "PKCS12KeyStoreSpi$BCPKCS12KeyStore3DES");
++ //
++ // provider.addAlgorithm("KeyStore.PKCS12-DEF-3DES-40RC2", PREFIX + "PKCS12KeyStoreSpi$DefPKCS12KeyStore");
++ // provider.addAlgorithm("KeyStore.PKCS12-DEF-3DES-3DES", PREFIX + "PKCS12KeyStoreSpi$DefPKCS12KeyStore3DES");
++ // END android-removed
+ }
+ }
+ }
+diff -Naur bcprov-jdk15on-149.orig/org/bouncycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi.java bcprov-jdk15on-149/org/bouncycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi.java
+--- bcprov-jdk15on-149.orig/org/bouncycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi.java 2013-05-31 21:16:46.000000000 +0000
++++ bcprov-jdk15on-149/org/bouncycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi.java 2013-05-25 02:14:15.000000000 +0000
+@@ -1594,32 +1594,34 @@
+ }
+ }
+
+- public static class BCPKCS12KeyStore3DES
+- extends PKCS12KeyStoreSpi
+- {
+- public BCPKCS12KeyStore3DES()
+- {
+- super(bcProvider, pbeWithSHAAnd3_KeyTripleDES_CBC, pbeWithSHAAnd3_KeyTripleDES_CBC);
+- }
+- }
+-
+- public static class DefPKCS12KeyStore
+- extends PKCS12KeyStoreSpi
+- {
+- public DefPKCS12KeyStore()
+- {
+- super(null, pbeWithSHAAnd3_KeyTripleDES_CBC, pbeWithSHAAnd40BitRC2_CBC);
+- }
+- }
+-
+- public static class DefPKCS12KeyStore3DES
+- extends PKCS12KeyStoreSpi
+- {
+- public DefPKCS12KeyStore3DES()
+- {
+- super(null, pbeWithSHAAnd3_KeyTripleDES_CBC, pbeWithSHAAnd3_KeyTripleDES_CBC);
+- }
+- }
++ // BEGIN android-removed
++ // public static class BCPKCS12KeyStore3DES
++ // extends PKCS12KeyStoreSpi
++ // {
++ // public BCPKCS12KeyStore3DES()
++ // {
++ // super(bcProvider, pbeWithSHAAnd3_KeyTripleDES_CBC, pbeWithSHAAnd3_KeyTripleDES_CBC);
++ // }
++ // }
++ //
++ // public static class DefPKCS12KeyStore
++ // extends PKCS12KeyStoreSpi
++ // {
++ // public DefPKCS12KeyStore()
++ // {
++ // super(null, pbeWithSHAAnd3_KeyTripleDES_CBC, pbeWithSHAAnd40BitRC2_CBC);
++ // }
++ // }
++ //
++ // public static class DefPKCS12KeyStore3DES
++ // extends PKCS12KeyStoreSpi
++ // {
++ // public DefPKCS12KeyStore3DES()
++ // {
++ // super(null, pbeWithSHAAnd3_KeyTripleDES_CBC, pbeWithSHAAnd3_KeyTripleDES_CBC);
++ // }
++ // }
++ // END android-removed
+
+ private static class IgnoresCaseHashtable
+ {
+diff -Naur bcprov-jdk15on-149.orig/org/bouncycastle/jcajce/provider/symmetric/AES.java bcprov-jdk15on-149/org/bouncycastle/jcajce/provider/symmetric/AES.java
+--- bcprov-jdk15on-149.orig/org/bouncycastle/jcajce/provider/symmetric/AES.java 2013-05-31 21:16:46.000000000 +0000
++++ bcprov-jdk15on-149/org/bouncycastle/jcajce/provider/symmetric/AES.java 2013-05-25 02:14:15.000000000 +0000
+@@ -1,11 +1,15 @@
package org.bouncycastle.jcajce.provider.symmetric;
-import java.security.AlgorithmParameters;
@@ -3196,19 +3711,23 @@ diff -Naur bcprov-jdk15on-148.orig/org/bouncycastle/jcajce/provider/symmetric/AE
+// import javax.crypto.spec.IvParameterSpec;
+// END android-removed
+ import org.bouncycastle.asn1.bc.BCObjectIdentifiers;
import org.bouncycastle.asn1.nist.NISTObjectIdentifiers;
- import org.bouncycastle.crypto.BufferedBlockCipher;
+@@ -14,23 +18,31 @@
import org.bouncycastle.crypto.CipherKeyGenerator;
import org.bouncycastle.crypto.engines.AESFastEngine;
import org.bouncycastle.crypto.engines.AESWrapEngine;
-import org.bouncycastle.crypto.engines.RFC3211WrapEngine;
-import org.bouncycastle.crypto.macs.CMac;
+-import org.bouncycastle.crypto.macs.GMac;
+// BEGIN android-removed
+// import org.bouncycastle.crypto.engines.RFC3211WrapEngine;
+// import org.bouncycastle.crypto.macs.CMac;
++// import org.bouncycastle.crypto.macs.GMac;
+// END android-removed
import org.bouncycastle.crypto.modes.CBCBlockCipher;
import org.bouncycastle.crypto.modes.CFBBlockCipher;
+ import org.bouncycastle.crypto.modes.GCMBlockCipher;
import org.bouncycastle.crypto.modes.OFBBlockCipher;
import org.bouncycastle.jcajce.provider.config.ConfigurableProvider;
-import org.bouncycastle.jcajce.provider.symmetric.util.BaseAlgorithmParameterGenerator;
@@ -3222,8 +3741,9 @@ diff -Naur bcprov-jdk15on-148.orig/org/bouncycastle/jcajce/provider/symmetric/AE
+// import org.bouncycastle.jcajce.provider.symmetric.util.BaseMac;
+// END android-removed
import org.bouncycastle.jcajce.provider.symmetric.util.BaseWrapCipher;
+ import org.bouncycastle.jcajce.provider.symmetric.util.BlockCipherProvider;
import org.bouncycastle.jcajce.provider.symmetric.util.IvAlgorithmParameters;
- import org.bouncycastle.jcajce.provider.util.AlgorithmProvider;
+ import org.bouncycastle.jcajce.provider.symmetric.util.PBESecretKeyFactory;
-import org.bouncycastle.jce.provider.BouncyCastleProvider;
+// BEGIN android-removed
+// import org.bouncycastle.jce.provider.BouncyCastleProvider;
@@ -3231,7 +3751,7 @@ diff -Naur bcprov-jdk15on-148.orig/org/bouncycastle/jcajce/provider/symmetric/AE
public final class AES
{
-@@ -69,15 +81,17 @@
+@@ -80,23 +92,25 @@
}
}
@@ -3244,6 +3764,14 @@ diff -Naur bcprov-jdk15on-148.orig/org/bouncycastle/jcajce/provider/symmetric/AE
- }
- }
-
+- public static class AESGMAC
+- extends BaseMac
+- {
+- public AESGMAC()
+- {
+- super(new GMac(new GCMBlockCipher(new AESFastEngine())));
+- }
+- }
+ // BEGIN android-removed
+ // public static class AESCMAC
+ // extends BaseMac
@@ -3253,12 +3781,20 @@ diff -Naur bcprov-jdk15on-148.orig/org/bouncycastle/jcajce/provider/symmetric/AE
+ // super(new CMac(new AESFastEngine()));
+ // }
+ // }
++ //
++ // public static class AESGMAC
++ // extends BaseMac
++ // {
++ // public AESGMAC()
++ // {
++ // super(new GMac(new GCMBlockCipher(new AESFastEngine())));
++ // }
++ // }
+ // END android-removed
-+
+
static public class Wrap
extends BaseWrapCipher
- {
-@@ -86,15 +100,17 @@
+@@ -106,15 +120,17 @@
super(new AESWrapEngine());
}
}
@@ -3283,9 +3819,9 @@ diff -Naur bcprov-jdk15on-148.orig/org/bouncycastle/jcajce/provider/symmetric/AE
+ // }
+ // END android-removed
- public static class KeyGen
- extends BaseKeyGenerator
-@@ -110,70 +126,72 @@
+
+ /**
+@@ -143,32 +159,34 @@
}
}
@@ -3315,7 +3851,41 @@ diff -Naur bcprov-jdk15on-148.orig/org/bouncycastle/jcajce/provider/symmetric/AE
- super(256);
- }
- }
--
++ // BEGIN android-removed
++ // public static class KeyGen128
++ // extends KeyGen
++ // {
++ // public KeyGen128()
++ // {
++ // super(128);
++ // }
++ // }
++ //
++ // public static class KeyGen192
++ // extends KeyGen
++ // {
++ // public KeyGen192()
++ // {
++ // super(192);
++ // }
++ // }
++ //
++ // public static class KeyGen256
++ // extends KeyGen
++ // {
++ // public KeyGen256()
++ // {
++ // super(256);
++ // }
++ // }
++ // END android-removed
+
+ /**
+ * PBEWithSHA1And128BitAES-BC
+@@ -278,43 +296,45 @@
+ }
+ }
+
- public static class AlgParamGen
- extends BaseAlgorithmParameterGenerator
- {
@@ -3354,33 +3924,6 @@ diff -Naur bcprov-jdk15on-148.orig/org/bouncycastle/jcajce/provider/symmetric/AE
- }
- }
+ // BEGIN android-removed
-+ // public static class KeyGen128
-+ // extends KeyGen
-+ // {
-+ // public KeyGen128()
-+ // {
-+ // super(128);
-+ // }
-+ // }
-+ //
-+ // public static class KeyGen192
-+ // extends KeyGen
-+ // {
-+ // public KeyGen192()
-+ // {
-+ // super(192);
-+ // }
-+ // }
-+ //
-+ // public static class KeyGen256
-+ // extends KeyGen
-+ // {
-+ // public KeyGen256()
-+ // {
-+ // super(256);
-+ // }
-+ // }
-+ //
+ // public static class AlgParamGen
+ // extends BaseAlgorithmParameterGenerator
+ // {
@@ -3422,7 +3965,7 @@ diff -Naur bcprov-jdk15on-148.orig/org/bouncycastle/jcajce/provider/symmetric/AE
public static class AlgParams
extends IvAlgorithmParameters
-@@ -212,58 +230,66 @@
+@@ -353,58 +373,66 @@
provider.addAlgorithm("Alg.Alias.AlgorithmParameters." + NISTObjectIdentifiers.id_aes192_CBC, "AES");
provider.addAlgorithm("Alg.Alias.AlgorithmParameters." + NISTObjectIdentifiers.id_aes256_CBC, "AES");
@@ -3527,13 +4070,24 @@ diff -Naur bcprov-jdk15on-148.orig/org/bouncycastle/jcajce/provider/symmetric/AE
+ //
+ // provider.addAlgorithm("Mac.AESCMAC", PREFIX + "$AESCMAC");
+ // END android-removed
+
+ provider.addAlgorithm("Alg.Alias.Cipher." + BCObjectIdentifiers.bc_pbe_sha1_pkcs12_aes128_cbc.getId(), "PBEWITHSHAAND128BITAES-CBC-BC");
+ provider.addAlgorithm("Alg.Alias.Cipher." + BCObjectIdentifiers.bc_pbe_sha1_pkcs12_aes192_cbc.getId(), "PBEWITHSHAAND192BITAES-CBC-BC");
+@@ -483,7 +511,9 @@
+ provider.addAlgorithm("Alg.Alias.AlgorithmParameters." + BCObjectIdentifiers.bc_pbe_sha256_pkcs12_aes192_cbc.getId(), "PKCS12PBE");
+ provider.addAlgorithm("Alg.Alias.AlgorithmParameters." + BCObjectIdentifiers.bc_pbe_sha256_pkcs12_aes256_cbc.getId(), "PKCS12PBE");
+
+- addGMacAlgorithm(provider, "AES", PREFIX + "$AESGMAC", PREFIX + "$KeyGen128");
++ // BEGIN android-removed
++ // addGMacAlgorithm(provider, "AES", PREFIX + "$AESGMAC", PREFIX + "$KeyGen128");
++ // END android-removed
}
}
}
-diff -Naur bcprov-jdk15on-148.orig/org/bouncycastle/jcajce/provider/symmetric/ARC4.java bcprov-jdk15on-148/org/bouncycastle/jcajce/provider/symmetric/ARC4.java
---- bcprov-jdk15on-148.orig/org/bouncycastle/jcajce/provider/symmetric/ARC4.java 2013-02-10 00:37:58.000000000 +0000
-+++ bcprov-jdk15on-148/org/bouncycastle/jcajce/provider/symmetric/ARC4.java 2012-09-17 23:04:47.000000000 +0000
-@@ -27,7 +27,9 @@
+diff -Naur bcprov-jdk15on-149.orig/org/bouncycastle/jcajce/provider/symmetric/ARC4.java bcprov-jdk15on-149/org/bouncycastle/jcajce/provider/symmetric/ARC4.java
+--- bcprov-jdk15on-149.orig/org/bouncycastle/jcajce/provider/symmetric/ARC4.java 2013-05-31 21:16:46.000000000 +0000
++++ bcprov-jdk15on-149/org/bouncycastle/jcajce/provider/symmetric/ARC4.java 2013-05-25 02:14:15.000000000 +0000
+@@ -29,7 +29,9 @@
{
public KeyGen()
{
@@ -3544,9 +4098,9 @@ diff -Naur bcprov-jdk15on-148.orig/org/bouncycastle/jcajce/provider/symmetric/AR
}
}
-diff -Naur bcprov-jdk15on-148.orig/org/bouncycastle/jcajce/provider/symmetric/Blowfish.java bcprov-jdk15on-148/org/bouncycastle/jcajce/provider/symmetric/Blowfish.java
---- bcprov-jdk15on-148.orig/org/bouncycastle/jcajce/provider/symmetric/Blowfish.java 2013-02-10 00:37:58.000000000 +0000
-+++ bcprov-jdk15on-148/org/bouncycastle/jcajce/provider/symmetric/Blowfish.java 2012-09-17 23:04:47.000000000 +0000
+diff -Naur bcprov-jdk15on-149.orig/org/bouncycastle/jcajce/provider/symmetric/Blowfish.java bcprov-jdk15on-149/org/bouncycastle/jcajce/provider/symmetric/Blowfish.java
+--- bcprov-jdk15on-149.orig/org/bouncycastle/jcajce/provider/symmetric/Blowfish.java 2013-05-31 21:16:46.000000000 +0000
++++ bcprov-jdk15on-149/org/bouncycastle/jcajce/provider/symmetric/Blowfish.java 2012-09-17 23:04:47.000000000 +0000
@@ -64,7 +64,9 @@
{
@@ -3558,11 +4112,11 @@ diff -Naur bcprov-jdk15on-148.orig/org/bouncycastle/jcajce/provider/symmetric/Bl
provider.addAlgorithm("KeyGenerator.BLOWFISH", PREFIX + "$KeyGen");
provider.addAlgorithm("Alg.Alias.KeyGenerator.1.3.6.1.4.1.3029.1.2", "BLOWFISH");
provider.addAlgorithm("AlgorithmParameters.BLOWFISH", PREFIX + "$AlgParams");
-diff -Naur bcprov-jdk15on-148.orig/org/bouncycastle/jcajce/provider/symmetric/DES.java bcprov-jdk15on-148/org/bouncycastle/jcajce/provider/symmetric/DES.java
---- bcprov-jdk15on-148.orig/org/bouncycastle/jcajce/provider/symmetric/DES.java 2013-02-10 00:37:58.000000000 +0000
-+++ bcprov-jdk15on-148/org/bouncycastle/jcajce/provider/symmetric/DES.java 2012-09-17 23:04:47.000000000 +0000
-@@ -16,11 +16,15 @@
- import org.bouncycastle.asn1.oiw.OIWObjectIdentifiers;
+diff -Naur bcprov-jdk15on-149.orig/org/bouncycastle/jcajce/provider/symmetric/DES.java bcprov-jdk15on-149/org/bouncycastle/jcajce/provider/symmetric/DES.java
+--- bcprov-jdk15on-149.orig/org/bouncycastle/jcajce/provider/symmetric/DES.java 2013-05-31 21:16:46.000000000 +0000
++++ bcprov-jdk15on-149/org/bouncycastle/jcajce/provider/symmetric/DES.java 2013-05-25 02:14:15.000000000 +0000
+@@ -19,12 +19,16 @@
+ import org.bouncycastle.crypto.CipherParameters;
import org.bouncycastle.crypto.KeyGenerationParameters;
import org.bouncycastle.crypto.engines.DESEngine;
-import org.bouncycastle.crypto.engines.RFC3211WrapEngine;
@@ -3573,26 +4127,19 @@ diff -Naur bcprov-jdk15on-148.orig/org/bouncycastle/jcajce/provider/symmetric/DE
import org.bouncycastle.crypto.macs.CBCBlockCipherMac;
-import org.bouncycastle.crypto.macs.CFBBlockCipherMac;
-import org.bouncycastle.crypto.macs.CMac;
+-import org.bouncycastle.crypto.macs.ISO9797Alg3Mac;
+// BEGIN android-removed
+// import org.bouncycastle.crypto.macs.CFBBlockCipherMac;
+// import org.bouncycastle.crypto.macs.CMac;
++// import org.bouncycastle.crypto.macs.ISO9797Alg3Mac;
+// END android-removed
import org.bouncycastle.crypto.modes.CBCBlockCipher;
import org.bouncycastle.crypto.paddings.ISO7816d4Padding;
- import org.bouncycastle.jcajce.provider.config.ConfigurableProvider;
-@@ -48,115 +52,117 @@
+ import org.bouncycastle.crypto.params.DESParameters;
+@@ -66,17 +70,19 @@
}
}
-- static public class CBC
-- extends BaseBlockCipher
-- {
-- public CBC()
-- {
-- super(new CBCBlockCipher(new DESEngine()), 64);
-- }
-- }
--
- /**
- * DES CFB8
- */
@@ -3604,46 +4151,56 @@ diff -Naur bcprov-jdk15on-148.orig/org/bouncycastle/jcajce/provider/symmetric/DE
- super(new CFBBlockCipherMac(new DESEngine()));
- }
- }
--
-- /**
-- * DES64
-- */
-- public static class DES64
++ // BEGIN android-removed
++ // /**
++ // * DES CFB8
++ // */
++ // public static class DESCFB8
++ // extends BaseMac
++ // {
++ // public DESCFB8()
++ // {
++ // super(new CFBBlockCipherMac(new DESEngine()));
++ // }
++ // }
++ // END android-removed
+
+ /**
+ * DES64
+@@ -111,47 +117,49 @@
+ }
+ }
+
+- static public class CMAC
- extends BaseMac
- {
-- public DES64()
+- public CMAC()
- {
-- super(new CBCBlockCipherMac(new DESEngine(), 64));
+- super(new CMac(new DESEngine()));
- }
- }
-
- /**
-- * DES64with7816-4Padding
+- * DES9797Alg3with7816-4Padding
- */
-- public static class DES64with7816d4
-- extends BaseMac
-- {
-- public DES64with7816d4()
-- {
-- super(new CBCBlockCipherMac(new DESEngine(), 64, new ISO7816d4Padding()));
-- }
-- }
--
-- public static class CBCMAC
+- public static class DES9797Alg3with7816d4
- extends BaseMac
- {
-- public CBCMAC()
+- public DES9797Alg3with7816d4()
- {
-- super(new CBCBlockCipherMac(new DESEngine()));
+- super(new ISO9797Alg3Mac(new DESEngine(), new ISO7816d4Padding()));
- }
- }
-
-- static public class CMAC
+- /**
+- * DES9797Alg3
+- */
+- public static class DES9797Alg3
- extends BaseMac
- {
-- public CMAC()
+- public DES9797Alg3()
- {
-- super(new CMac(new DESEngine()));
+- super(new ISO9797Alg3Mac(new DESEngine()));
- }
- }
-
@@ -3655,105 +4212,37 @@ diff -Naur bcprov-jdk15on-148.orig/org/bouncycastle/jcajce/provider/symmetric/DE
- super(new RFC3211WrapEngine(new DESEngine()), 8);
- }
- }
--
-- public static class AlgParamGen
-- extends BaseAlgorithmParameterGenerator
-- {
-- protected void engineInit(
-- AlgorithmParameterSpec genParamSpec,
-- SecureRandom random)
-- throws InvalidAlgorithmParameterException
-- {
-- throw new InvalidAlgorithmParameterException("No supported AlgorithmParameterSpec for DES parameter generation.");
-- }
--
-- protected AlgorithmParameters engineGenerateParameters()
-- {
-- byte[] iv = new byte[8];
--
-- if (random == null)
-- {
-- random = new SecureRandom();
-- }
--
-- random.nextBytes(iv);
--
-- AlgorithmParameters params;
--
-- try
-- {
-- params = AlgorithmParameters.getInstance("DES", BouncyCastleProvider.PROVIDER_NAME);
-- params.init(new IvParameterSpec(iv));
-- }
-- catch (Exception e)
-- {
-- throw new RuntimeException(e.getMessage());
-- }
--
-- return params;
-- }
-- }
+ // BEGIN android-removed
-+ // static public class CBC
-+ // extends BaseBlockCipher
-+ // {
-+ // public CBC()
-+ // {
-+ // super(new CBCBlockCipher(new DESEngine()), 64);
-+ // }
-+ // }
-+ //
-+ // /**
-+ // * DES CFB8
-+ // */
-+ // public static class DESCFB8
++ // static public class CMAC
+ // extends BaseMac
+ // {
-+ // public DESCFB8()
++ // public CMAC()
+ // {
-+ // super(new CFBBlockCipherMac(new DESEngine()));
++ // super(new CMac(new DESEngine()));
+ // }
+ // }
+ //
+ // /**
-+ // * DES64
++ // * DES9797Alg3with7816-4Padding
+ // */
-+ // public static class DES64
++ // public static class DES9797Alg3with7816d4
+ // extends BaseMac
+ // {
-+ // public DES64()
++ // public DES9797Alg3with7816d4()
+ // {
-+ // super(new CBCBlockCipherMac(new DESEngine(), 64));
++ // super(new ISO9797Alg3Mac(new DESEngine(), new ISO7816d4Padding()));
+ // }
+ // }
+ //
+ // /**
-+ // * DES64with7816-4Padding
++ // * DES9797Alg3
+ // */
-+ // public static class DES64with7816d4
-+ // extends BaseMac
-+ // {
-+ // public DES64with7816d4()
-+ // {
-+ // super(new CBCBlockCipherMac(new DESEngine(), 64, new ISO7816d4Padding()));
-+ // }
-+ // }
-+ //
-+ // public static class CBCMAC
-+ // extends BaseMac
-+ // {
-+ // public CBCMAC()
-+ // {
-+ // super(new CBCBlockCipherMac(new DESEngine()));
-+ // }
-+ // }
-+ //
-+ // static public class CMAC
++ // public static class DES9797Alg3
+ // extends BaseMac
+ // {
-+ // public CMAC()
++ // public DES9797Alg3()
+ // {
-+ // super(new CMac(new DESEngine()));
++ // super(new ISO9797Alg3Mac(new DESEngine()));
+ // }
+ // }
+ //
@@ -3765,49 +4254,73 @@ diff -Naur bcprov-jdk15on-148.orig/org/bouncycastle/jcajce/provider/symmetric/DE
+ // super(new RFC3211WrapEngine(new DESEngine()), 8);
+ // }
+ // }
-+ //
-+ // public static class AlgParamGen
-+ // extends BaseAlgorithmParameterGenerator
++ // END android-removed
+
+ public static class AlgParamGen
+ extends BaseAlgorithmParameterGenerator
+@@ -351,17 +359,19 @@
+ }
+ }
+
+- /**
+- * PBEWithMD2AndDES
+- */
+- static public class PBEWithMD2KeyFactory
+- extends DESPBEKeyFactory
+- {
+- public PBEWithMD2KeyFactory()
+- {
+- super("PBEwithMD2andDES", PKCSObjectIdentifiers.pbeWithMD2AndDES_CBC, true, PKCS5S1, MD2, 64, 64);
+- }
+- }
++ // BEGIN android-removed
++ // /**
++ // * PBEWithMD2AndDES
++ // */
++ // static public class PBEWithMD2KeyFactory
++ // extends DESPBEKeyFactory
+ // {
-+ // protected void engineInit(
-+ // AlgorithmParameterSpec genParamSpec,
-+ // SecureRandom random)
-+ // throws InvalidAlgorithmParameterException
++ // public PBEWithMD2KeyFactory()
+ // {
-+ // throw new InvalidAlgorithmParameterException("No supported AlgorithmParameterSpec for DES parameter generation.");
++ // super("PBEwithMD2andDES", PKCSObjectIdentifiers.pbeWithMD2AndDES_CBC, true, PKCS5S1, MD2, 64, 64);
+ // }
-+ //
-+ // protected AlgorithmParameters engineGenerateParameters()
++ // }
++ // END android-removed
+
+ /**
+ * PBEWithMD5AndDES
+@@ -387,17 +397,19 @@
+ }
+ }
+
+- /**
+- * PBEWithMD2AndDES
+- */
+- static public class PBEWithMD2
+- extends BaseBlockCipher
+- {
+- public PBEWithMD2()
+- {
+- super(new CBCBlockCipher(new DESEngine()));
+- }
+- }
++ // BEGIN android-removed
++ // /**
++ // * PBEWithMD2AndDES
++ // */
++ // static public class PBEWithMD2
++ // extends BaseBlockCipher
++ // {
++ // public PBEWithMD2()
+ // {
-+ // byte[] iv = new byte[8];
-+ //
-+ // if (random == null)
-+ // {
-+ // random = new SecureRandom();
-+ // }
-+ //
-+ // random.nextBytes(iv);
-+ //
-+ // AlgorithmParameters params;
-+ //
-+ // try
-+ // {
-+ // params = AlgorithmParameters.getInstance("DES", BouncyCastleProvider.PROVIDER_NAME);
-+ // params.init(new IvParameterSpec(iv));
-+ // }
-+ // catch (Exception e)
-+ // {
-+ // throw new RuntimeException(e.getMessage());
-+ // }
-+ //
-+ // return params;
++ // super(new CBCBlockCipher(new DESEngine()));
+ // }
+ // }
+ // END android-removed
- /**
- * DES - the default for this is to generate a key in
-@@ -263,36 +269,42 @@
+ /**
+ * PBEWithMD5AndDES
+@@ -437,61 +449,75 @@
{
provider.addAlgorithm("Cipher.DES", PREFIX + "$ECB");
@@ -3842,6 +4355,14 @@ diff -Naur bcprov-jdk15on-148.orig/org/bouncycastle/jcajce/provider/symmetric/DE
- provider.addAlgorithm("Alg.Alias.Mac.DES64WITHISO7816-4PADDING", "DESMAC64WITHISO7816-4PADDING");
- provider.addAlgorithm("Alg.Alias.Mac.DESISO9797ALG1MACWITHISO7816-4PADDING", "DESMAC64WITHISO7816-4PADDING");
- provider.addAlgorithm("Alg.Alias.Mac.DESISO9797ALG1WITHISO7816-4PADDING", "DESMAC64WITHISO7816-4PADDING");
+-
+- provider.addAlgorithm("Mac.DESWITHISO9797", PREFIX + "$DES9797Alg3");
+- provider.addAlgorithm("Alg.Alias.Mac.DESISO9797MAC", "DESWITHISO9797");
+-
+- provider.addAlgorithm("Mac.ISO9797ALG3MAC", PREFIX + "$DES9797Alg3");
+- provider.addAlgorithm("Alg.Alias.Mac.ISO9797ALG3", "ISO9797ALG3MAC");
+- provider.addAlgorithm("Mac.ISO9797ALG3WITHISO7816-4PADDING", PREFIX + "$DES9797Alg3with7816d4");
+- provider.addAlgorithm("Alg.Alias.Mac.ISO9797ALG3MACWITHISO7816-4PADDING", "ISO9797ALG3WITHISO7816-4PADDING");
+ // BEGIN android-removed
+ // provider.addAlgorithm("Mac.DESCMAC", PREFIX + "$CMAC");
+ // provider.addAlgorithm("Mac.DESMAC", PREFIX + "$CBCMAC");
@@ -3857,6 +4378,14 @@ diff -Naur bcprov-jdk15on-148.orig/org/bouncycastle/jcajce/provider/symmetric/DE
+ // provider.addAlgorithm("Alg.Alias.Mac.DES64WITHISO7816-4PADDING", "DESMAC64WITHISO7816-4PADDING");
+ // provider.addAlgorithm("Alg.Alias.Mac.DESISO9797ALG1MACWITHISO7816-4PADDING", "DESMAC64WITHISO7816-4PADDING");
+ // provider.addAlgorithm("Alg.Alias.Mac.DESISO9797ALG1WITHISO7816-4PADDING", "DESMAC64WITHISO7816-4PADDING");
++ //
++ // provider.addAlgorithm("Mac.DESWITHISO9797", PREFIX + "$DES9797Alg3");
++ // provider.addAlgorithm("Alg.Alias.Mac.DESISO9797MAC", "DESWITHISO9797");
++ //
++ // provider.addAlgorithm("Mac.ISO9797ALG3MAC", PREFIX + "$DES9797Alg3");
++ // provider.addAlgorithm("Alg.Alias.Mac.ISO9797ALG3", "ISO9797ALG3MAC");
++ // provider.addAlgorithm("Mac.ISO9797ALG3WITHISO7816-4PADDING", PREFIX + "$DES9797Alg3with7816d4");
++ // provider.addAlgorithm("Alg.Alias.Mac.ISO9797ALG3MACWITHISO7816-4PADDING", "ISO9797ALG3WITHISO7816-4PADDING");
+ // END android-removed
provider.addAlgorithm("AlgorithmParameters.DES", PACKAGE + ".util.IvAlgorithmParameters");
@@ -3864,16 +4393,47 @@ diff -Naur bcprov-jdk15on-148.orig/org/bouncycastle/jcajce/provider/symmetric/DE
- provider.addAlgorithm("AlgorithmParameterGenerator.DES", PREFIX + "$AlgParamGen");
- provider.addAlgorithm("Alg.Alias.AlgorithmParameterGenerator." + OIWObjectIdentifiers.desCBC, "DES");
+-
+- provider.addAlgorithm("Cipher.PBEWITHMD2ANDDES", PREFIX + "$PBEWithMD2");
+ // BEGIN android-removed
+ // provider.addAlgorithm("AlgorithmParameterGenerator.DES", PREFIX + "$AlgParamGen");
+ // provider.addAlgorithm("Alg.Alias.AlgorithmParameterGenerator." + OIWObjectIdentifiers.desCBC, "DES");
++ //
++ // provider.addAlgorithm("Cipher.PBEWITHMD2ANDDES", PREFIX + "$PBEWithMD2");
+ // END android-removed
- }
+ provider.addAlgorithm("Cipher.PBEWITHMD5ANDDES", PREFIX + "$PBEWithMD5");
+ provider.addAlgorithm("Cipher.PBEWITHSHA1ANDDES", PREFIX + "$PBEWithSHA1");
+
+- provider.addAlgorithm("Alg.Alias.Cipher." + PKCSObjectIdentifiers.pbeWithMD2AndDES_CBC, "PBEWITHMD2ANDDES");
++ // BEGIN android-removed
++ // provider.addAlgorithm("Alg.Alias.Cipher." + PKCSObjectIdentifiers.pbeWithMD2AndDES_CBC, "PBEWITHMD2ANDDES");
++ // END android-removed
+ provider.addAlgorithm("Alg.Alias.Cipher." + PKCSObjectIdentifiers.pbeWithMD5AndDES_CBC, "PBEWITHMD5ANDDES");
+ provider.addAlgorithm("Alg.Alias.Cipher." + PKCSObjectIdentifiers.pbeWithSHA1AndDES_CBC, "PBEWITHSHA1ANDDES");
+
+- provider.addAlgorithm("SecretKeyFactory.PBEWITHMD2ANDDES", PREFIX + "$PBEWithMD2KeyFactory");
++ // BEGIN android-removed
++ // provider.addAlgorithm("SecretKeyFactory.PBEWITHMD2ANDDES", PREFIX + "$PBEWithMD2KeyFactory");
++ // END android-removed
+ provider.addAlgorithm("SecretKeyFactory.PBEWITHMD5ANDDES", PREFIX + "$PBEWithMD5KeyFactory");
+ provider.addAlgorithm("SecretKeyFactory.PBEWITHSHA1ANDDES", PREFIX + "$PBEWithSHA1KeyFactory");
- private void addAlias(ConfigurableProvider provider, ASN1ObjectIdentifier oid, String name)
-diff -Naur bcprov-jdk15on-148.orig/org/bouncycastle/jcajce/provider/symmetric/DESede.java bcprov-jdk15on-148/org/bouncycastle/jcajce/provider/symmetric/DESede.java
---- bcprov-jdk15on-148.orig/org/bouncycastle/jcajce/provider/symmetric/DESede.java 2013-02-10 00:37:58.000000000 +0000
-+++ bcprov-jdk15on-148/org/bouncycastle/jcajce/provider/symmetric/DESede.java 2012-09-17 23:04:47.000000000 +0000
+- provider.addAlgorithm("Alg.Alias.SecretKeyFactory.PBEWITHMD2ANDDES-CBC", "PBEWITHMD2ANDDES");
++ // BEGIN android-removed
++ // provider.addAlgorithm("Alg.Alias.SecretKeyFactory.PBEWITHMD2ANDDES-CBC", "PBEWITHMD2ANDDES");
++ // END android-removed
+ provider.addAlgorithm("Alg.Alias.SecretKeyFactory.PBEWITHMD5ANDDES-CBC", "PBEWITHMD5ANDDES");
+ provider.addAlgorithm("Alg.Alias.SecretKeyFactory.PBEWITHSHA1ANDDES-CBC", "PBEWITHSHA1ANDDES");
+- provider.addAlgorithm("Alg.Alias.SecretKeyFactory." + PKCSObjectIdentifiers.pbeWithMD2AndDES_CBC, "PBEWITHMD2ANDDES");
++ // BEGIN android-removed
++ // provider.addAlgorithm("Alg.Alias.SecretKeyFactory." + PKCSObjectIdentifiers.pbeWithMD2AndDES_CBC, "PBEWITHMD2ANDDES");
++ // END android-removed
+ provider.addAlgorithm("Alg.Alias.SecretKeyFactory." + PKCSObjectIdentifiers.pbeWithMD5AndDES_CBC, "PBEWITHMD5ANDDES");
+ provider.addAlgorithm("Alg.Alias.SecretKeyFactory." + PKCSObjectIdentifiers.pbeWithSHA1AndDES_CBC, "PBEWITHSHA1ANDDES");
+ }
+diff -Naur bcprov-jdk15on-149.orig/org/bouncycastle/jcajce/provider/symmetric/DESede.java bcprov-jdk15on-149/org/bouncycastle/jcajce/provider/symmetric/DESede.java
+--- bcprov-jdk15on-149.orig/org/bouncycastle/jcajce/provider/symmetric/DESede.java 2013-05-31 21:16:46.000000000 +0000
++++ bcprov-jdk15on-149/org/bouncycastle/jcajce/provider/symmetric/DESede.java 2013-05-25 02:14:15.000000000 +0000
@@ -1,30 +1,42 @@
package org.bouncycastle.jcajce.provider.symmetric;
@@ -4010,7 +4570,7 @@ diff -Naur bcprov-jdk15on-148.orig/org/bouncycastle/jcajce/provider/symmetric/DE
/**
* DESede - the default for this is to generate a key in
-@@ -217,43 +235,45 @@
+@@ -241,43 +259,45 @@
}
}
@@ -4093,7 +4653,7 @@ diff -Naur bcprov-jdk15on-148.orig/org/bouncycastle/jcajce/provider/symmetric/DE
static public class KeyFactory
extends BaseSecretKeyFactory
-@@ -337,18 +357,28 @@
+@@ -361,25 +381,37 @@
public void configure(ConfigurableProvider provider)
{
provider.addAlgorithm("Cipher.DESEDE", PREFIX + "$ECB");
@@ -4111,6 +4671,16 @@ diff -Naur bcprov-jdk15on-148.orig/org/bouncycastle/jcajce/provider/symmetric/DE
+ // provider.addAlgorithm("Cipher.DESEDERFC3211WRAP", PREFIX + "$RFC3211");
+ // END android-removed
+ provider.addAlgorithm("Alg.Alias.Cipher.TDEA", "DESEDE");
+ provider.addAlgorithm("Alg.Alias.Cipher.TDEAWRAP", "DESEDEWRAP");
+ provider.addAlgorithm("Alg.Alias.KeyGenerator.TDEA", "DESEDE");
+ provider.addAlgorithm("Alg.Alias.AlgorithmParameters.TDEA", "DESEDE");
+- provider.addAlgorithm("Alg.Alias.AlgorithmParameterGenerator.TDEA", "DESEDE");
++ // BEGIN android-removed
++ // provider.addAlgorithm("Alg.Alias.AlgorithmParameterGenerator.TDEA", "DESEDE");
++ // END android-removed
+ provider.addAlgorithm("Alg.Alias.SecretKeyFactory.TDEA", "DESEDE");
+
if (provider.hasAlgorithm("MessageDigest", "SHA-1"))
{
provider.addAlgorithm("Cipher.PBEWITHSHAAND3-KEYTRIPLEDES-CBC", PREFIX + "$PBEWithSHAAndDES3Key");
@@ -4128,7 +4698,7 @@ diff -Naur bcprov-jdk15on-148.orig/org/bouncycastle/jcajce/provider/symmetric/DE
provider.addAlgorithm("Alg.Alias.Cipher." + PKCSObjectIdentifiers.pbeWithSHAAnd3_KeyTripleDES_CBC, "PBEWITHSHAAND3-KEYTRIPLEDES-CBC");
provider.addAlgorithm("Alg.Alias.Cipher." + PKCSObjectIdentifiers.pbeWithSHAAnd2_KeyTripleDES_CBC, "PBEWITHSHAAND2-KEYTRIPLEDES-CBC");
provider.addAlgorithm("Alg.Alias.Cipher.PBEWITHSHA1ANDDESEDE", "PBEWITHSHAAND3-KEYTRIPLEDES-CBC");
-@@ -357,31 +387,37 @@
+@@ -388,31 +420,37 @@
}
provider.addAlgorithm("KeyGenerator.DESEDE", PREFIX + "$KeyGenerator");
@@ -4181,103 +4751,329 @@ diff -Naur bcprov-jdk15on-148.orig/org/bouncycastle/jcajce/provider/symmetric/DE
+ // provider.addAlgorithm("AlgorithmParameterGenerator.DESEDE", PREFIX + "$AlgParamGen");
+ // provider.addAlgorithm("Alg.Alias.AlgorithmParameterGenerator." + PKCSObjectIdentifiers.des_EDE3_CBC, "DESEDE");
+ // END android-removed
- }
- }
- }
-diff -Naur bcprov-jdk15on-148.orig/org/bouncycastle/jcajce/provider/symmetric/util/BCPBEKey.java bcprov-jdk15on-148/org/bouncycastle/jcajce/provider/symmetric/util/BCPBEKey.java
---- bcprov-jdk15on-148.orig/org/bouncycastle/jcajce/provider/symmetric/util/BCPBEKey.java 2013-02-10 00:37:58.000000000 +0000
-+++ bcprov-jdk15on-148/org/bouncycastle/jcajce/provider/symmetric/util/BCPBEKey.java 2013-04-10 22:02:36.000000000 +0000
-@@ -78,6 +78,12 @@
- {
- return PBEParametersGenerator.PKCS12PasswordToBytes(pbeKeySpec.getPassword());
- }
-+ // BEGIN android-changed
-+ else if (type == PBE.PBKDF2)
-+ {
-+ return PBEParametersGenerator.PKCS5PasswordToUTF8Bytes(pbeKeySpec.getPassword());
-+ }
-+ // END android-changed
- else
- {
- return PBEParametersGenerator.PKCS5PasswordToBytes(pbeKeySpec.getPassword());
-diff -Naur bcprov-jdk15on-148.orig/org/bouncycastle/jcajce/provider/symmetric/util/BaseAlgorithmParameters.java bcprov-jdk15on-148/org/bouncycastle/jcajce/provider/symmetric/util/BaseAlgorithmParameters.java
---- bcprov-jdk15on-148.orig/org/bouncycastle/jcajce/provider/symmetric/util/BaseAlgorithmParameters.java 2013-02-10 00:37:58.000000000 +0000
-+++ bcprov-jdk15on-148/org/bouncycastle/jcajce/provider/symmetric/util/BaseAlgorithmParameters.java 2012-09-17 23:04:47.000000000 +0000
-@@ -7,13 +7,17 @@
- import javax.crypto.spec.IvParameterSpec;
- import javax.crypto.spec.PBEParameterSpec;
--import javax.crypto.spec.RC2ParameterSpec;
-+// BEGIN android-removed
-+// import javax.crypto.spec.RC2ParameterSpec;
-+// END android-removed
+ provider.addAlgorithm("SecretKeyFactory.PBEWITHSHAAND3-KEYTRIPLEDES-CBC", PREFIX + "$PBEWithSHAAndDES3KeyFactory");
+ provider.addAlgorithm("SecretKeyFactory.PBEWITHSHAAND2-KEYTRIPLEDES-CBC", PREFIX + "$PBEWithSHAAndDES2KeyFactory");
+diff -Naur bcprov-jdk15on-149.orig/org/bouncycastle/jcajce/provider/symmetric/RC2.java bcprov-jdk15on-149/org/bouncycastle/jcajce/provider/symmetric/RC2.java
+--- bcprov-jdk15on-149.orig/org/bouncycastle/jcajce/provider/symmetric/RC2.java 2013-05-31 21:16:46.000000000 +0000
++++ bcprov-jdk15on-149/org/bouncycastle/jcajce/provider/symmetric/RC2.java 2013-05-25 02:14:15.000000000 +0000
+@@ -12,24 +12,34 @@
- import org.bouncycastle.asn1.ASN1Encoding;
import org.bouncycastle.asn1.ASN1Primitive;
- import org.bouncycastle.asn1.pkcs.PBKDF2Params;
- import org.bouncycastle.asn1.pkcs.PKCS12PBEParams;
+ import org.bouncycastle.asn1.pkcs.PKCSObjectIdentifiers;
-import org.bouncycastle.asn1.pkcs.RC2CBCParameter;
+-import org.bouncycastle.crypto.CipherKeyGenerator;
+// BEGIN android-removed
+// import org.bouncycastle.asn1.pkcs.RC2CBCParameter;
++// import org.bouncycastle.crypto.CipherKeyGenerator;
++// END android-removed
+ import org.bouncycastle.crypto.engines.RC2Engine;
+-import org.bouncycastle.crypto.engines.RC2WrapEngine;
+-import org.bouncycastle.crypto.macs.CBCBlockCipherMac;
+-import org.bouncycastle.crypto.macs.CFBBlockCipherMac;
++// BEGIN android-removed
++// import org.bouncycastle.crypto.engines.RC2WrapEngine;
++// import org.bouncycastle.crypto.macs.CBCBlockCipherMac;
++// import org.bouncycastle.crypto.macs.CFBBlockCipherMac;
++// END android-removed
+ import org.bouncycastle.crypto.modes.CBCBlockCipher;
+ import org.bouncycastle.jcajce.provider.config.ConfigurableProvider;
+-import org.bouncycastle.jcajce.provider.symmetric.util.BaseAlgorithmParameterGenerator;
+-import org.bouncycastle.jcajce.provider.symmetric.util.BaseAlgorithmParameters;
++// BEGIN android-removed
++// import org.bouncycastle.jcajce.provider.symmetric.util.BaseAlgorithmParameterGenerator;
++// import org.bouncycastle.jcajce.provider.symmetric.util.BaseAlgorithmParameters;
++// END android-removed
+ import org.bouncycastle.jcajce.provider.symmetric.util.BaseBlockCipher;
+-import org.bouncycastle.jcajce.provider.symmetric.util.BaseKeyGenerator;
+-import org.bouncycastle.jcajce.provider.symmetric.util.BaseMac;
+-import org.bouncycastle.jcajce.provider.symmetric.util.BaseWrapCipher;
++// BEGIN android-removed
++// import org.bouncycastle.jcajce.provider.symmetric.util.BaseKeyGenerator;
++// import org.bouncycastle.jcajce.provider.symmetric.util.BaseMac;
++// import org.bouncycastle.jcajce.provider.symmetric.util.BaseWrapCipher;
++// END android-removed
+ import org.bouncycastle.jcajce.provider.symmetric.util.PBESecretKeyFactory;
+ import org.bouncycastle.jcajce.provider.util.AlgorithmProvider;
+ import org.bouncycastle.jce.provider.BouncyCastleProvider;
+-import org.bouncycastle.util.Arrays;
++// BEGIN android-removed
++// import org.bouncycastle.util.Arrays;
+// END android-removed
- import org.bouncycastle.util.Arrays;
- public abstract class BaseAlgorithmParameters
-@@ -39,177 +43,179 @@
- protected abstract AlgorithmParameterSpec localEngineGetParameterSpec(Class paramSpec)
- throws InvalidParameterSpecException;
+ public final class RC2
+ {
+@@ -37,59 +47,61 @@
+ {
+ }
-- public static class RC2AlgorithmParameters
+- /**
+- * RC2
+- */
+- static public class ECB
+- extends BaseBlockCipher
+- {
+- public ECB()
+- {
+- super(new RC2Engine());
+- }
+- }
+-
+- /**
+- * RC2CBC
+- */
+- static public class CBC
+- extends BaseBlockCipher
+- {
+- public CBC()
+- {
+- super(new CBCBlockCipher(new RC2Engine()), 64);
+- }
+- }
+-
+- public static class Wrap
+- extends BaseWrapCipher
+- {
+- public Wrap()
+- {
+- super(new RC2WrapEngine());
+- }
+- }
+-
+- /**
+- * RC2
+- */
+- public static class CBCMAC
+- extends BaseMac
+- {
+- public CBCMAC()
+- {
+- super(new CBCBlockCipherMac(new RC2Engine()));
+- }
+- }
+-
+- public static class CFB8MAC
+- extends BaseMac
+- {
+- public CFB8MAC()
+- {
+- super(new CFBBlockCipherMac(new RC2Engine()));
+- }
+- }
++ // BEGIN android-removed
++ // /**
++ // * RC2
++ // */
++ // static public class ECB
++ // extends BaseBlockCipher
++ // {
++ // public ECB()
++ // {
++ // super(new RC2Engine());
++ // }
++ // }
++ //
++ // /**
++ // * RC2CBC
++ // */
++ // static public class CBC
++ // extends BaseBlockCipher
++ // {
++ // public CBC()
++ // {
++ // super(new CBCBlockCipher(new RC2Engine()), 64);
++ // }
++ // }
++ //
++ // public static class Wrap
++ // extends BaseWrapCipher
++ // {
++ // public Wrap()
++ // {
++ // super(new RC2WrapEngine());
++ // }
++ // }
++ //
++ // /**
++ // * RC2
++ // */
++ // public static class CBCMAC
++ // extends BaseMac
++ // {
++ // public CBCMAC()
++ // {
++ // super(new CBCBlockCipherMac(new RC2Engine()));
++ // }
++ // }
++ //
++ // public static class CFB8MAC
++ // extends BaseMac
++ // {
++ // public CFB8MAC()
++ // {
++ // super(new CFBBlockCipherMac(new RC2Engine()));
++ // }
++ // }
++ // END android-removed
+
+ /**
+ * PBEWithSHA1AndRC2
+@@ -175,17 +187,19 @@
+ }
+ }
+
+- /**
+- * PBEWithMD2AndRC2
+- */
+- static public class PBEWithMD2KeyFactory
+- extends PBESecretKeyFactory
+- {
+- public PBEWithMD2KeyFactory()
+- {
+- super("PBEwithMD2andRC2", PKCSObjectIdentifiers.pbeWithMD2AndRC2_CBC, true, PKCS5S1, MD2, 64, 64);
+- }
+- }
++ // BEGIN android-removed
++ // /**
++ // * PBEWithMD2AndRC2
++ // */
++ // static public class PBEWithMD2KeyFactory
++ // extends PBESecretKeyFactory
++ // {
++ // public PBEWithMD2KeyFactory()
++ // {
++ // super("PBEwithMD2andRC2", PKCSObjectIdentifiers.pbeWithMD2AndRC2_CBC, true, PKCS5S1, MD2, 64, 64);
++ // }
++ // }
++ // END android-removed
+
+ /**
+ * PBEWithMD5AndRC2
+@@ -199,247 +213,249 @@
+ }
+ }
+
+- public static class AlgParamGen
+- extends BaseAlgorithmParameterGenerator
+- {
+- RC2ParameterSpec spec = null;
+-
+- protected void engineInit(
+- AlgorithmParameterSpec genParamSpec,
+- SecureRandom random)
+- throws InvalidAlgorithmParameterException
+- {
+- if (genParamSpec instanceof RC2ParameterSpec)
+- {
+- spec = (RC2ParameterSpec)genParamSpec;
+- return;
+- }
+-
+- throw new InvalidAlgorithmParameterException("No supported AlgorithmParameterSpec for RC2 parameter generation.");
+- }
+-
+- protected AlgorithmParameters engineGenerateParameters()
+- {
+- AlgorithmParameters params;
+-
+- if (spec == null)
+- {
+- byte[] iv = new byte[8];
+-
+- if (random == null)
+- {
+- random = new SecureRandom();
+- }
+-
+- random.nextBytes(iv);
+-
+- try
+- {
+- params = AlgorithmParameters.getInstance("RC2", BouncyCastleProvider.PROVIDER_NAME);
+- params.init(new IvParameterSpec(iv));
+- }
+- catch (Exception e)
+- {
+- throw new RuntimeException(e.getMessage());
+- }
+- }
+- else
+- {
+- try
+- {
+- params = AlgorithmParameters.getInstance("RC2", BouncyCastleProvider.PROVIDER_NAME);
+- params.init(spec);
+- }
+- catch (Exception e)
+- {
+- throw new RuntimeException(e.getMessage());
+- }
+- }
+-
+- return params;
+- }
+- }
+-
+- public static class KeyGenerator
+- extends BaseKeyGenerator
+- {
+- public KeyGenerator()
+- {
+- super("RC2", 128, new CipherKeyGenerator());
+- }
+- }
+-
+- public static class AlgParams
- extends BaseAlgorithmParameters
- {
- private static final short[] table = {
-- 0xbd, 0x56, 0xea, 0xf2, 0xa2, 0xf1, 0xac, 0x2a, 0xb0, 0x93, 0xd1, 0x9c, 0x1b, 0x33, 0xfd, 0xd0,
-- 0x30, 0x04, 0xb6, 0xdc, 0x7d, 0xdf, 0x32, 0x4b, 0xf7, 0xcb, 0x45, 0x9b, 0x31, 0xbb, 0x21, 0x5a,
-- 0x41, 0x9f, 0xe1, 0xd9, 0x4a, 0x4d, 0x9e, 0xda, 0xa0, 0x68, 0x2c, 0xc3, 0x27, 0x5f, 0x80, 0x36,
-- 0x3e, 0xee, 0xfb, 0x95, 0x1a, 0xfe, 0xce, 0xa8, 0x34, 0xa9, 0x13, 0xf0, 0xa6, 0x3f, 0xd8, 0x0c,
-- 0x78, 0x24, 0xaf, 0x23, 0x52, 0xc1, 0x67, 0x17, 0xf5, 0x66, 0x90, 0xe7, 0xe8, 0x07, 0xb8, 0x60,
-- 0x48, 0xe6, 0x1e, 0x53, 0xf3, 0x92, 0xa4, 0x72, 0x8c, 0x08, 0x15, 0x6e, 0x86, 0x00, 0x84, 0xfa,
-- 0xf4, 0x7f, 0x8a, 0x42, 0x19, 0xf6, 0xdb, 0xcd, 0x14, 0x8d, 0x50, 0x12, 0xba, 0x3c, 0x06, 0x4e,
-- 0xec, 0xb3, 0x35, 0x11, 0xa1, 0x88, 0x8e, 0x2b, 0x94, 0x99, 0xb7, 0x71, 0x74, 0xd3, 0xe4, 0xbf,
-- 0x3a, 0xde, 0x96, 0x0e, 0xbc, 0x0a, 0xed, 0x77, 0xfc, 0x37, 0x6b, 0x03, 0x79, 0x89, 0x62, 0xc6,
-- 0xd7, 0xc0, 0xd2, 0x7c, 0x6a, 0x8b, 0x22, 0xa3, 0x5b, 0x05, 0x5d, 0x02, 0x75, 0xd5, 0x61, 0xe3,
-- 0x18, 0x8f, 0x55, 0x51, 0xad, 0x1f, 0x0b, 0x5e, 0x85, 0xe5, 0xc2, 0x57, 0x63, 0xca, 0x3d, 0x6c,
-- 0xb4, 0xc5, 0xcc, 0x70, 0xb2, 0x91, 0x59, 0x0d, 0x47, 0x20, 0xc8, 0x4f, 0x58, 0xe0, 0x01, 0xe2,
-- 0x16, 0x38, 0xc4, 0x6f, 0x3b, 0x0f, 0x65, 0x46, 0xbe, 0x7e, 0x2d, 0x7b, 0x82, 0xf9, 0x40, 0xb5,
-- 0x1d, 0x73, 0xf8, 0xeb, 0x26, 0xc7, 0x87, 0x97, 0x25, 0x54, 0xb1, 0x28, 0xaa, 0x98, 0x9d, 0xa5,
-- 0x64, 0x6d, 0x7a, 0xd4, 0x10, 0x81, 0x44, 0xef, 0x49, 0xd6, 0xae, 0x2e, 0xdd, 0x76, 0x5c, 0x2f,
-- 0xa7, 0x1c, 0xc9, 0x09, 0x69, 0x9a, 0x83, 0xcf, 0x29, 0x39, 0xb9, 0xe9, 0x4c, 0xff, 0x43, 0xab
+- 0xbd, 0x56, 0xea, 0xf2, 0xa2, 0xf1, 0xac, 0x2a, 0xb0, 0x93, 0xd1, 0x9c, 0x1b, 0x33, 0xfd, 0xd0,
+- 0x30, 0x04, 0xb6, 0xdc, 0x7d, 0xdf, 0x32, 0x4b, 0xf7, 0xcb, 0x45, 0x9b, 0x31, 0xbb, 0x21, 0x5a,
+- 0x41, 0x9f, 0xe1, 0xd9, 0x4a, 0x4d, 0x9e, 0xda, 0xa0, 0x68, 0x2c, 0xc3, 0x27, 0x5f, 0x80, 0x36,
+- 0x3e, 0xee, 0xfb, 0x95, 0x1a, 0xfe, 0xce, 0xa8, 0x34, 0xa9, 0x13, 0xf0, 0xa6, 0x3f, 0xd8, 0x0c,
+- 0x78, 0x24, 0xaf, 0x23, 0x52, 0xc1, 0x67, 0x17, 0xf5, 0x66, 0x90, 0xe7, 0xe8, 0x07, 0xb8, 0x60,
+- 0x48, 0xe6, 0x1e, 0x53, 0xf3, 0x92, 0xa4, 0x72, 0x8c, 0x08, 0x15, 0x6e, 0x86, 0x00, 0x84, 0xfa,
+- 0xf4, 0x7f, 0x8a, 0x42, 0x19, 0xf6, 0xdb, 0xcd, 0x14, 0x8d, 0x50, 0x12, 0xba, 0x3c, 0x06, 0x4e,
+- 0xec, 0xb3, 0x35, 0x11, 0xa1, 0x88, 0x8e, 0x2b, 0x94, 0x99, 0xb7, 0x71, 0x74, 0xd3, 0xe4, 0xbf,
+- 0x3a, 0xde, 0x96, 0x0e, 0xbc, 0x0a, 0xed, 0x77, 0xfc, 0x37, 0x6b, 0x03, 0x79, 0x89, 0x62, 0xc6,
+- 0xd7, 0xc0, 0xd2, 0x7c, 0x6a, 0x8b, 0x22, 0xa3, 0x5b, 0x05, 0x5d, 0x02, 0x75, 0xd5, 0x61, 0xe3,
+- 0x18, 0x8f, 0x55, 0x51, 0xad, 0x1f, 0x0b, 0x5e, 0x85, 0xe5, 0xc2, 0x57, 0x63, 0xca, 0x3d, 0x6c,
+- 0xb4, 0xc5, 0xcc, 0x70, 0xb2, 0x91, 0x59, 0x0d, 0x47, 0x20, 0xc8, 0x4f, 0x58, 0xe0, 0x01, 0xe2,
+- 0x16, 0x38, 0xc4, 0x6f, 0x3b, 0x0f, 0x65, 0x46, 0xbe, 0x7e, 0x2d, 0x7b, 0x82, 0xf9, 0x40, 0xb5,
+- 0x1d, 0x73, 0xf8, 0xeb, 0x26, 0xc7, 0x87, 0x97, 0x25, 0x54, 0xb1, 0x28, 0xaa, 0x98, 0x9d, 0xa5,
+- 0x64, 0x6d, 0x7a, 0xd4, 0x10, 0x81, 0x44, 0xef, 0x49, 0xd6, 0xae, 0x2e, 0xdd, 0x76, 0x5c, 0x2f,
+- 0xa7, 0x1c, 0xc9, 0x09, 0x69, 0x9a, 0x83, 0xcf, 0x29, 0x39, 0xb9, 0xe9, 0x4c, 0xff, 0x43, 0xab
- };
-
- private static final short[] ekb = {
-- 0x5d, 0xbe, 0x9b, 0x8b, 0x11, 0x99, 0x6e, 0x4d, 0x59, 0xf3, 0x85, 0xa6, 0x3f, 0xb7, 0x83, 0xc5,
-- 0xe4, 0x73, 0x6b, 0x3a, 0x68, 0x5a, 0xc0, 0x47, 0xa0, 0x64, 0x34, 0x0c, 0xf1, 0xd0, 0x52, 0xa5,
-- 0xb9, 0x1e, 0x96, 0x43, 0x41, 0xd8, 0xd4, 0x2c, 0xdb, 0xf8, 0x07, 0x77, 0x2a, 0xca, 0xeb, 0xef,
-- 0x10, 0x1c, 0x16, 0x0d, 0x38, 0x72, 0x2f, 0x89, 0xc1, 0xf9, 0x80, 0xc4, 0x6d, 0xae, 0x30, 0x3d,
-- 0xce, 0x20, 0x63, 0xfe, 0xe6, 0x1a, 0xc7, 0xb8, 0x50, 0xe8, 0x24, 0x17, 0xfc, 0x25, 0x6f, 0xbb,
-- 0x6a, 0xa3, 0x44, 0x53, 0xd9, 0xa2, 0x01, 0xab, 0xbc, 0xb6, 0x1f, 0x98, 0xee, 0x9a, 0xa7, 0x2d,
-- 0x4f, 0x9e, 0x8e, 0xac, 0xe0, 0xc6, 0x49, 0x46, 0x29, 0xf4, 0x94, 0x8a, 0xaf, 0xe1, 0x5b, 0xc3,
-- 0xb3, 0x7b, 0x57, 0xd1, 0x7c, 0x9c, 0xed, 0x87, 0x40, 0x8c, 0xe2, 0xcb, 0x93, 0x14, 0xc9, 0x61,
-- 0x2e, 0xe5, 0xcc, 0xf6, 0x5e, 0xa8, 0x5c, 0xd6, 0x75, 0x8d, 0x62, 0x95, 0x58, 0x69, 0x76, 0xa1,
-- 0x4a, 0xb5, 0x55, 0x09, 0x78, 0x33, 0x82, 0xd7, 0xdd, 0x79, 0xf5, 0x1b, 0x0b, 0xde, 0x26, 0x21,
-- 0x28, 0x74, 0x04, 0x97, 0x56, 0xdf, 0x3c, 0xf0, 0x37, 0x39, 0xdc, 0xff, 0x06, 0xa4, 0xea, 0x42,
-- 0x08, 0xda, 0xb4, 0x71, 0xb0, 0xcf, 0x12, 0x7a, 0x4e, 0xfa, 0x6c, 0x1d, 0x84, 0x00, 0xc8, 0x7f,
-- 0x91, 0x45, 0xaa, 0x2b, 0xc2, 0xb1, 0x8f, 0xd5, 0xba, 0xf2, 0xad, 0x19, 0xb2, 0x67, 0x36, 0xf7,
-- 0x0f, 0x0a, 0x92, 0x7d, 0xe3, 0x9d, 0xe9, 0x90, 0x3e, 0x23, 0x27, 0x66, 0x13, 0xec, 0x81, 0x15,
-- 0xbd, 0x22, 0xbf, 0x9f, 0x7e, 0xa9, 0x51, 0x4b, 0x4c, 0xfb, 0x02, 0xd3, 0x70, 0x86, 0x31, 0xe7,
-- 0x3b, 0x05, 0x03, 0x54, 0x60, 0x48, 0x65, 0x18, 0xd2, 0xcd, 0x5f, 0x32, 0x88, 0x0e, 0x35, 0xfd
+- 0x5d, 0xbe, 0x9b, 0x8b, 0x11, 0x99, 0x6e, 0x4d, 0x59, 0xf3, 0x85, 0xa6, 0x3f, 0xb7, 0x83, 0xc5,
+- 0xe4, 0x73, 0x6b, 0x3a, 0x68, 0x5a, 0xc0, 0x47, 0xa0, 0x64, 0x34, 0x0c, 0xf1, 0xd0, 0x52, 0xa5,
+- 0xb9, 0x1e, 0x96, 0x43, 0x41, 0xd8, 0xd4, 0x2c, 0xdb, 0xf8, 0x07, 0x77, 0x2a, 0xca, 0xeb, 0xef,
+- 0x10, 0x1c, 0x16, 0x0d, 0x38, 0x72, 0x2f, 0x89, 0xc1, 0xf9, 0x80, 0xc4, 0x6d, 0xae, 0x30, 0x3d,
+- 0xce, 0x20, 0x63, 0xfe, 0xe6, 0x1a, 0xc7, 0xb8, 0x50, 0xe8, 0x24, 0x17, 0xfc, 0x25, 0x6f, 0xbb,
+- 0x6a, 0xa3, 0x44, 0x53, 0xd9, 0xa2, 0x01, 0xab, 0xbc, 0xb6, 0x1f, 0x98, 0xee, 0x9a, 0xa7, 0x2d,
+- 0x4f, 0x9e, 0x8e, 0xac, 0xe0, 0xc6, 0x49, 0x46, 0x29, 0xf4, 0x94, 0x8a, 0xaf, 0xe1, 0x5b, 0xc3,
+- 0xb3, 0x7b, 0x57, 0xd1, 0x7c, 0x9c, 0xed, 0x87, 0x40, 0x8c, 0xe2, 0xcb, 0x93, 0x14, 0xc9, 0x61,
+- 0x2e, 0xe5, 0xcc, 0xf6, 0x5e, 0xa8, 0x5c, 0xd6, 0x75, 0x8d, 0x62, 0x95, 0x58, 0x69, 0x76, 0xa1,
+- 0x4a, 0xb5, 0x55, 0x09, 0x78, 0x33, 0x82, 0xd7, 0xdd, 0x79, 0xf5, 0x1b, 0x0b, 0xde, 0x26, 0x21,
+- 0x28, 0x74, 0x04, 0x97, 0x56, 0xdf, 0x3c, 0xf0, 0x37, 0x39, 0xdc, 0xff, 0x06, 0xa4, 0xea, 0x42,
+- 0x08, 0xda, 0xb4, 0x71, 0xb0, 0xcf, 0x12, 0x7a, 0x4e, 0xfa, 0x6c, 0x1d, 0x84, 0x00, 0xc8, 0x7f,
+- 0x91, 0x45, 0xaa, 0x2b, 0xc2, 0xb1, 0x8f, 0xd5, 0xba, 0xf2, 0xad, 0x19, 0xb2, 0x67, 0x36, 0xf7,
+- 0x0f, 0x0a, 0x92, 0x7d, 0xe3, 0x9d, 0xe9, 0x90, 0x3e, 0x23, 0x27, 0x66, 0x13, 0xec, 0x81, 0x15,
+- 0xbd, 0x22, 0xbf, 0x9f, 0x7e, 0xa9, 0x51, 0x4b, 0x4c, 0xfb, 0x02, 0xd3, 0x70, 0x86, 0x31, 0xe7,
+- 0x3b, 0x05, 0x03, 0x54, 0x60, 0x48, 0x65, 0x18, 0xd2, 0xcd, 0x5f, 0x32, 0x88, 0x0e, 0x35, 0xfd
- };
-
-- private byte[] iv;
-- private int parameterVersion = 58;
+- private byte[] iv;
+- private int parameterVersion = 58;
-
-- protected byte[] engineGetEncoded()
+- protected byte[] engineGetEncoded()
- {
- return Arrays.clone(iv);
- }
-
- protected byte[] engineGetEncoded(
-- String format)
+- String format)
- throws IOException
- {
- if (this.isASN1FormatString(format))
@@ -4301,7 +5097,7 @@ diff -Naur bcprov-jdk15on-148.orig/org/bouncycastle/jcajce/provider/symmetric/ut
- }
-
- protected AlgorithmParameterSpec localEngineGetParameterSpec(
-- Class paramSpec)
+- Class paramSpec)
- throws InvalidParameterSpecException
- {
- if (paramSpec == RC2ParameterSpec.class)
@@ -4328,7 +5124,7 @@ diff -Naur bcprov-jdk15on-148.orig/org/bouncycastle/jcajce/provider/symmetric/ut
- }
-
- protected void engineInit(
-- AlgorithmParameterSpec paramSpec)
+- AlgorithmParameterSpec paramSpec)
- throws InvalidParameterSpecException
- {
- if (paramSpec instanceof IvParameterSpec)
@@ -4359,7 +5155,7 @@ diff -Naur bcprov-jdk15on-148.orig/org/bouncycastle/jcajce/provider/symmetric/ut
- }
-
- protected void engineInit(
-- byte[] params)
+- byte[] params)
- throws IOException
- {
- this.iv = Arrays.clone(params);
@@ -4367,7 +5163,7 @@ diff -Naur bcprov-jdk15on-148.orig/org/bouncycastle/jcajce/provider/symmetric/ut
-
- protected void engineInit(
- byte[] params,
-- String format)
+- String format)
- throws IOException
- {
- if (this.isASN1FormatString(format))
@@ -4393,63 +5189,133 @@ diff -Naur bcprov-jdk15on-148.orig/org/bouncycastle/jcajce/provider/symmetric/ut
- throw new IOException("Unknown parameters format in IV parameters object");
- }
-
-- protected String engineToString()
+- protected String engineToString()
- {
- return "RC2 Parameters";
- }
- }
+ // BEGIN android-removed
-+ // public static class RC2AlgorithmParameters
++ // public static class AlgParamGen
++ // extends BaseAlgorithmParameterGenerator
++ // {
++ // RC2ParameterSpec spec = null;
++ //
++ // protected void engineInit(
++ // AlgorithmParameterSpec genParamSpec,
++ // SecureRandom random)
++ // throws InvalidAlgorithmParameterException
++ // {
++ // if (genParamSpec instanceof RC2ParameterSpec)
++ // {
++ // spec = (RC2ParameterSpec)genParamSpec;
++ // return;
++ // }
++ //
++ // throw new InvalidAlgorithmParameterException("No supported AlgorithmParameterSpec for RC2 parameter generation.");
++ // }
++ //
++ // protected AlgorithmParameters engineGenerateParameters()
++ // {
++ // AlgorithmParameters params;
++ //
++ // if (spec == null)
++ // {
++ // byte[] iv = new byte[8];
++ //
++ // if (random == null)
++ // {
++ // random = new SecureRandom();
++ // }
++ //
++ // random.nextBytes(iv);
++ //
++ // try
++ // {
++ // params = AlgorithmParameters.getInstance("RC2", BouncyCastleProvider.PROVIDER_NAME);
++ // params.init(new IvParameterSpec(iv));
++ // }
++ // catch (Exception e)
++ // {
++ // throw new RuntimeException(e.getMessage());
++ // }
++ // }
++ // else
++ // {
++ // try
++ // {
++ // params = AlgorithmParameters.getInstance("RC2", BouncyCastleProvider.PROVIDER_NAME);
++ // params.init(spec);
++ // }
++ // catch (Exception e)
++ // {
++ // throw new RuntimeException(e.getMessage());
++ // }
++ // }
++ //
++ // return params;
++ // }
++ // }
++ //
++ // public static class KeyGenerator
++ // extends BaseKeyGenerator
++ // {
++ // public KeyGenerator()
++ // {
++ // super("RC2", 128, new CipherKeyGenerator());
++ // }
++ // }
++ //
++ // public static class AlgParams
+ // extends BaseAlgorithmParameters
+ // {
+ // private static final short[] table = {
-+ // 0xbd, 0x56, 0xea, 0xf2, 0xa2, 0xf1, 0xac, 0x2a, 0xb0, 0x93, 0xd1, 0x9c, 0x1b, 0x33, 0xfd, 0xd0,
-+ // 0x30, 0x04, 0xb6, 0xdc, 0x7d, 0xdf, 0x32, 0x4b, 0xf7, 0xcb, 0x45, 0x9b, 0x31, 0xbb, 0x21, 0x5a,
-+ // 0x41, 0x9f, 0xe1, 0xd9, 0x4a, 0x4d, 0x9e, 0xda, 0xa0, 0x68, 0x2c, 0xc3, 0x27, 0x5f, 0x80, 0x36,
-+ // 0x3e, 0xee, 0xfb, 0x95, 0x1a, 0xfe, 0xce, 0xa8, 0x34, 0xa9, 0x13, 0xf0, 0xa6, 0x3f, 0xd8, 0x0c,
-+ // 0x78, 0x24, 0xaf, 0x23, 0x52, 0xc1, 0x67, 0x17, 0xf5, 0x66, 0x90, 0xe7, 0xe8, 0x07, 0xb8, 0x60,
-+ // 0x48, 0xe6, 0x1e, 0x53, 0xf3, 0x92, 0xa4, 0x72, 0x8c, 0x08, 0x15, 0x6e, 0x86, 0x00, 0x84, 0xfa,
-+ // 0xf4, 0x7f, 0x8a, 0x42, 0x19, 0xf6, 0xdb, 0xcd, 0x14, 0x8d, 0x50, 0x12, 0xba, 0x3c, 0x06, 0x4e,
-+ // 0xec, 0xb3, 0x35, 0x11, 0xa1, 0x88, 0x8e, 0x2b, 0x94, 0x99, 0xb7, 0x71, 0x74, 0xd3, 0xe4, 0xbf,
-+ // 0x3a, 0xde, 0x96, 0x0e, 0xbc, 0x0a, 0xed, 0x77, 0xfc, 0x37, 0x6b, 0x03, 0x79, 0x89, 0x62, 0xc6,
-+ // 0xd7, 0xc0, 0xd2, 0x7c, 0x6a, 0x8b, 0x22, 0xa3, 0x5b, 0x05, 0x5d, 0x02, 0x75, 0xd5, 0x61, 0xe3,
-+ // 0x18, 0x8f, 0x55, 0x51, 0xad, 0x1f, 0x0b, 0x5e, 0x85, 0xe5, 0xc2, 0x57, 0x63, 0xca, 0x3d, 0x6c,
-+ // 0xb4, 0xc5, 0xcc, 0x70, 0xb2, 0x91, 0x59, 0x0d, 0x47, 0x20, 0xc8, 0x4f, 0x58, 0xe0, 0x01, 0xe2,
-+ // 0x16, 0x38, 0xc4, 0x6f, 0x3b, 0x0f, 0x65, 0x46, 0xbe, 0x7e, 0x2d, 0x7b, 0x82, 0xf9, 0x40, 0xb5,
-+ // 0x1d, 0x73, 0xf8, 0xeb, 0x26, 0xc7, 0x87, 0x97, 0x25, 0x54, 0xb1, 0x28, 0xaa, 0x98, 0x9d, 0xa5,
-+ // 0x64, 0x6d, 0x7a, 0xd4, 0x10, 0x81, 0x44, 0xef, 0x49, 0xd6, 0xae, 0x2e, 0xdd, 0x76, 0x5c, 0x2f,
-+ // 0xa7, 0x1c, 0xc9, 0x09, 0x69, 0x9a, 0x83, 0xcf, 0x29, 0x39, 0xb9, 0xe9, 0x4c, 0xff, 0x43, 0xab
++ // 0xbd, 0x56, 0xea, 0xf2, 0xa2, 0xf1, 0xac, 0x2a, 0xb0, 0x93, 0xd1, 0x9c, 0x1b, 0x33, 0xfd, 0xd0,
++ // 0x30, 0x04, 0xb6, 0xdc, 0x7d, 0xdf, 0x32, 0x4b, 0xf7, 0xcb, 0x45, 0x9b, 0x31, 0xbb, 0x21, 0x5a,
++ // 0x41, 0x9f, 0xe1, 0xd9, 0x4a, 0x4d, 0x9e, 0xda, 0xa0, 0x68, 0x2c, 0xc3, 0x27, 0x5f, 0x80, 0x36,
++ // 0x3e, 0xee, 0xfb, 0x95, 0x1a, 0xfe, 0xce, 0xa8, 0x34, 0xa9, 0x13, 0xf0, 0xa6, 0x3f, 0xd8, 0x0c,
++ // 0x78, 0x24, 0xaf, 0x23, 0x52, 0xc1, 0x67, 0x17, 0xf5, 0x66, 0x90, 0xe7, 0xe8, 0x07, 0xb8, 0x60,
++ // 0x48, 0xe6, 0x1e, 0x53, 0xf3, 0x92, 0xa4, 0x72, 0x8c, 0x08, 0x15, 0x6e, 0x86, 0x00, 0x84, 0xfa,
++ // 0xf4, 0x7f, 0x8a, 0x42, 0x19, 0xf6, 0xdb, 0xcd, 0x14, 0x8d, 0x50, 0x12, 0xba, 0x3c, 0x06, 0x4e,
++ // 0xec, 0xb3, 0x35, 0x11, 0xa1, 0x88, 0x8e, 0x2b, 0x94, 0x99, 0xb7, 0x71, 0x74, 0xd3, 0xe4, 0xbf,
++ // 0x3a, 0xde, 0x96, 0x0e, 0xbc, 0x0a, 0xed, 0x77, 0xfc, 0x37, 0x6b, 0x03, 0x79, 0x89, 0x62, 0xc6,
++ // 0xd7, 0xc0, 0xd2, 0x7c, 0x6a, 0x8b, 0x22, 0xa3, 0x5b, 0x05, 0x5d, 0x02, 0x75, 0xd5, 0x61, 0xe3,
++ // 0x18, 0x8f, 0x55, 0x51, 0xad, 0x1f, 0x0b, 0x5e, 0x85, 0xe5, 0xc2, 0x57, 0x63, 0xca, 0x3d, 0x6c,
++ // 0xb4, 0xc5, 0xcc, 0x70, 0xb2, 0x91, 0x59, 0x0d, 0x47, 0x20, 0xc8, 0x4f, 0x58, 0xe0, 0x01, 0xe2,
++ // 0x16, 0x38, 0xc4, 0x6f, 0x3b, 0x0f, 0x65, 0x46, 0xbe, 0x7e, 0x2d, 0x7b, 0x82, 0xf9, 0x40, 0xb5,
++ // 0x1d, 0x73, 0xf8, 0xeb, 0x26, 0xc7, 0x87, 0x97, 0x25, 0x54, 0xb1, 0x28, 0xaa, 0x98, 0x9d, 0xa5,
++ // 0x64, 0x6d, 0x7a, 0xd4, 0x10, 0x81, 0x44, 0xef, 0x49, 0xd6, 0xae, 0x2e, 0xdd, 0x76, 0x5c, 0x2f,
++ // 0xa7, 0x1c, 0xc9, 0x09, 0x69, 0x9a, 0x83, 0xcf, 0x29, 0x39, 0xb9, 0xe9, 0x4c, 0xff, 0x43, 0xab
+ // };
+ //
+ // private static final short[] ekb = {
-+ // 0x5d, 0xbe, 0x9b, 0x8b, 0x11, 0x99, 0x6e, 0x4d, 0x59, 0xf3, 0x85, 0xa6, 0x3f, 0xb7, 0x83, 0xc5,
-+ // 0xe4, 0x73, 0x6b, 0x3a, 0x68, 0x5a, 0xc0, 0x47, 0xa0, 0x64, 0x34, 0x0c, 0xf1, 0xd0, 0x52, 0xa5,
-+ // 0xb9, 0x1e, 0x96, 0x43, 0x41, 0xd8, 0xd4, 0x2c, 0xdb, 0xf8, 0x07, 0x77, 0x2a, 0xca, 0xeb, 0xef,
-+ // 0x10, 0x1c, 0x16, 0x0d, 0x38, 0x72, 0x2f, 0x89, 0xc1, 0xf9, 0x80, 0xc4, 0x6d, 0xae, 0x30, 0x3d,
-+ // 0xce, 0x20, 0x63, 0xfe, 0xe6, 0x1a, 0xc7, 0xb8, 0x50, 0xe8, 0x24, 0x17, 0xfc, 0x25, 0x6f, 0xbb,
-+ // 0x6a, 0xa3, 0x44, 0x53, 0xd9, 0xa2, 0x01, 0xab, 0xbc, 0xb6, 0x1f, 0x98, 0xee, 0x9a, 0xa7, 0x2d,
-+ // 0x4f, 0x9e, 0x8e, 0xac, 0xe0, 0xc6, 0x49, 0x46, 0x29, 0xf4, 0x94, 0x8a, 0xaf, 0xe1, 0x5b, 0xc3,
-+ // 0xb3, 0x7b, 0x57, 0xd1, 0x7c, 0x9c, 0xed, 0x87, 0x40, 0x8c, 0xe2, 0xcb, 0x93, 0x14, 0xc9, 0x61,
-+ // 0x2e, 0xe5, 0xcc, 0xf6, 0x5e, 0xa8, 0x5c, 0xd6, 0x75, 0x8d, 0x62, 0x95, 0x58, 0x69, 0x76, 0xa1,
-+ // 0x4a, 0xb5, 0x55, 0x09, 0x78, 0x33, 0x82, 0xd7, 0xdd, 0x79, 0xf5, 0x1b, 0x0b, 0xde, 0x26, 0x21,
-+ // 0x28, 0x74, 0x04, 0x97, 0x56, 0xdf, 0x3c, 0xf0, 0x37, 0x39, 0xdc, 0xff, 0x06, 0xa4, 0xea, 0x42,
-+ // 0x08, 0xda, 0xb4, 0x71, 0xb0, 0xcf, 0x12, 0x7a, 0x4e, 0xfa, 0x6c, 0x1d, 0x84, 0x00, 0xc8, 0x7f,
-+ // 0x91, 0x45, 0xaa, 0x2b, 0xc2, 0xb1, 0x8f, 0xd5, 0xba, 0xf2, 0xad, 0x19, 0xb2, 0x67, 0x36, 0xf7,
-+ // 0x0f, 0x0a, 0x92, 0x7d, 0xe3, 0x9d, 0xe9, 0x90, 0x3e, 0x23, 0x27, 0x66, 0x13, 0xec, 0x81, 0x15,
-+ // 0xbd, 0x22, 0xbf, 0x9f, 0x7e, 0xa9, 0x51, 0x4b, 0x4c, 0xfb, 0x02, 0xd3, 0x70, 0x86, 0x31, 0xe7,
-+ // 0x3b, 0x05, 0x03, 0x54, 0x60, 0x48, 0x65, 0x18, 0xd2, 0xcd, 0x5f, 0x32, 0x88, 0x0e, 0x35, 0xfd
++ // 0x5d, 0xbe, 0x9b, 0x8b, 0x11, 0x99, 0x6e, 0x4d, 0x59, 0xf3, 0x85, 0xa6, 0x3f, 0xb7, 0x83, 0xc5,
++ // 0xe4, 0x73, 0x6b, 0x3a, 0x68, 0x5a, 0xc0, 0x47, 0xa0, 0x64, 0x34, 0x0c, 0xf1, 0xd0, 0x52, 0xa5,
++ // 0xb9, 0x1e, 0x96, 0x43, 0x41, 0xd8, 0xd4, 0x2c, 0xdb, 0xf8, 0x07, 0x77, 0x2a, 0xca, 0xeb, 0xef,
++ // 0x10, 0x1c, 0x16, 0x0d, 0x38, 0x72, 0x2f, 0x89, 0xc1, 0xf9, 0x80, 0xc4, 0x6d, 0xae, 0x30, 0x3d,
++ // 0xce, 0x20, 0x63, 0xfe, 0xe6, 0x1a, 0xc7, 0xb8, 0x50, 0xe8, 0x24, 0x17, 0xfc, 0x25, 0x6f, 0xbb,
++ // 0x6a, 0xa3, 0x44, 0x53, 0xd9, 0xa2, 0x01, 0xab, 0xbc, 0xb6, 0x1f, 0x98, 0xee, 0x9a, 0xa7, 0x2d,
++ // 0x4f, 0x9e, 0x8e, 0xac, 0xe0, 0xc6, 0x49, 0x46, 0x29, 0xf4, 0x94, 0x8a, 0xaf, 0xe1, 0x5b, 0xc3,
++ // 0xb3, 0x7b, 0x57, 0xd1, 0x7c, 0x9c, 0xed, 0x87, 0x40, 0x8c, 0xe2, 0xcb, 0x93, 0x14, 0xc9, 0x61,
++ // 0x2e, 0xe5, 0xcc, 0xf6, 0x5e, 0xa8, 0x5c, 0xd6, 0x75, 0x8d, 0x62, 0x95, 0x58, 0x69, 0x76, 0xa1,
++ // 0x4a, 0xb5, 0x55, 0x09, 0x78, 0x33, 0x82, 0xd7, 0xdd, 0x79, 0xf5, 0x1b, 0x0b, 0xde, 0x26, 0x21,
++ // 0x28, 0x74, 0x04, 0x97, 0x56, 0xdf, 0x3c, 0xf0, 0x37, 0x39, 0xdc, 0xff, 0x06, 0xa4, 0xea, 0x42,
++ // 0x08, 0xda, 0xb4, 0x71, 0xb0, 0xcf, 0x12, 0x7a, 0x4e, 0xfa, 0x6c, 0x1d, 0x84, 0x00, 0xc8, 0x7f,
++ // 0x91, 0x45, 0xaa, 0x2b, 0xc2, 0xb1, 0x8f, 0xd5, 0xba, 0xf2, 0xad, 0x19, 0xb2, 0x67, 0x36, 0xf7,
++ // 0x0f, 0x0a, 0x92, 0x7d, 0xe3, 0x9d, 0xe9, 0x90, 0x3e, 0x23, 0x27, 0x66, 0x13, 0xec, 0x81, 0x15,
++ // 0xbd, 0x22, 0xbf, 0x9f, 0x7e, 0xa9, 0x51, 0x4b, 0x4c, 0xfb, 0x02, 0xd3, 0x70, 0x86, 0x31, 0xe7,
++ // 0x3b, 0x05, 0x03, 0x54, 0x60, 0x48, 0x65, 0x18, 0xd2, 0xcd, 0x5f, 0x32, 0x88, 0x0e, 0x35, 0xfd
+ // };
+ //
-+ // private byte[] iv;
-+ // private int parameterVersion = 58;
++ // private byte[] iv;
++ // private int parameterVersion = 58;
+ //
-+ // protected byte[] engineGetEncoded()
++ // protected byte[] engineGetEncoded()
+ // {
+ // return Arrays.clone(iv);
+ // }
+ //
+ // protected byte[] engineGetEncoded(
-+ // String format)
++ // String format)
+ // throws IOException
+ // {
+ // if (this.isASN1FormatString(format))
@@ -4473,7 +5339,7 @@ diff -Naur bcprov-jdk15on-148.orig/org/bouncycastle/jcajce/provider/symmetric/ut
+ // }
+ //
+ // protected AlgorithmParameterSpec localEngineGetParameterSpec(
-+ // Class paramSpec)
++ // Class paramSpec)
+ // throws InvalidParameterSpecException
+ // {
+ // if (paramSpec == RC2ParameterSpec.class)
@@ -4500,7 +5366,7 @@ diff -Naur bcprov-jdk15on-148.orig/org/bouncycastle/jcajce/provider/symmetric/ut
+ // }
+ //
+ // protected void engineInit(
-+ // AlgorithmParameterSpec paramSpec)
++ // AlgorithmParameterSpec paramSpec)
+ // throws InvalidParameterSpecException
+ // {
+ // if (paramSpec instanceof IvParameterSpec)
@@ -4531,7 +5397,7 @@ diff -Naur bcprov-jdk15on-148.orig/org/bouncycastle/jcajce/provider/symmetric/ut
+ // }
+ //
+ // protected void engineInit(
-+ // byte[] params)
++ // byte[] params)
+ // throws IOException
+ // {
+ // this.iv = Arrays.clone(params);
@@ -4539,7 +5405,7 @@ diff -Naur bcprov-jdk15on-148.orig/org/bouncycastle/jcajce/provider/symmetric/ut
+ //
+ // protected void engineInit(
+ // byte[] params,
-+ // String format)
++ // String format)
+ // throws IOException
+ // {
+ // if (this.isASN1FormatString(format))
@@ -4565,18 +5431,291 @@ diff -Naur bcprov-jdk15on-148.orig/org/bouncycastle/jcajce/provider/symmetric/ut
+ // throw new IOException("Unknown parameters format in IV parameters object");
+ // }
+ //
-+ // protected String engineToString()
++ // protected String engineToString()
+ // {
+ // return "RC2 Parameters";
+ // }
+ // }
+ // END android-removed
- public static class PBKDF2
- extends BaseAlgorithmParameters
-diff -Naur bcprov-jdk15on-148.orig/org/bouncycastle/jcajce/provider/symmetric/util/BaseBlockCipher.java bcprov-jdk15on-148/org/bouncycastle/jcajce/provider/symmetric/util/BaseBlockCipher.java
---- bcprov-jdk15on-148.orig/org/bouncycastle/jcajce/provider/symmetric/util/BaseBlockCipher.java 2013-02-10 00:37:58.000000000 +0000
-+++ bcprov-jdk15on-148/org/bouncycastle/jcajce/provider/symmetric/util/BaseBlockCipher.java 2013-01-31 02:26:40.000000000 +0000
+ public static class Mappings
+ extends AlgorithmProvider
+@@ -453,32 +469,36 @@
+ public void configure(ConfigurableProvider provider)
+ {
+
+- provider.addAlgorithm("AlgorithmParameterGenerator.RC2", PREFIX + "$AlgParamGen");
+- provider.addAlgorithm("AlgorithmParameterGenerator.1.2.840.113549.3.2", PREFIX + "$AlgParamGen");
+-
+- provider.addAlgorithm("KeyGenerator.RC2", PREFIX + "$KeyGenerator");
+- provider.addAlgorithm("KeyGenerator.1.2.840.113549.3.2", PREFIX + "$KeyGenerator");
+-
+- provider.addAlgorithm("AlgorithmParameters.RC2", PREFIX + "$AlgParams");
+- provider.addAlgorithm("AlgorithmParameters.1.2.840.113549.3.2", PREFIX + "$AlgParams");
+-
+- provider.addAlgorithm("Cipher.RC2", PREFIX + "$ECB");
+- provider.addAlgorithm("Cipher.RC2WRAP", PREFIX + "$Wrap");
+- provider.addAlgorithm("Alg.Alias.Cipher." + PKCSObjectIdentifiers.id_alg_CMSRC2wrap, "RC2WRAP");
+- provider.addAlgorithm("Cipher.1.2.840.113549.3.2", PREFIX + "$CBC");
+-
+- provider.addAlgorithm("Mac.RC2MAC", PREFIX + "$CBCMAC");
+- provider.addAlgorithm("Alg.Alias.Mac.RC2", "RC2MAC");
+- provider.addAlgorithm("Mac.RC2MAC/CFB8", PREFIX + "$CFB8MAC");
+- provider.addAlgorithm("Alg.Alias.Mac.RC2/CFB8", "RC2MAC/CFB8");
+-
+- provider.addAlgorithm("Alg.Alias.SecretKeyFactory.PBEWITHMD2ANDRC2-CBC", "PBEWITHMD2ANDRC2");
++ // BEGIN android-removed
++ // provider.addAlgorithm("AlgorithmParameterGenerator.RC2", PREFIX + "$AlgParamGen");
++ // provider.addAlgorithm("AlgorithmParameterGenerator.1.2.840.113549.3.2", PREFIX + "$AlgParamGen");
++ //
++ // provider.addAlgorithm("KeyGenerator.RC2", PREFIX + "$KeyGenerator");
++ // provider.addAlgorithm("KeyGenerator.1.2.840.113549.3.2", PREFIX + "$KeyGenerator");
++ //
++ // provider.addAlgorithm("AlgorithmParameters.RC2", PREFIX + "$AlgParams");
++ // provider.addAlgorithm("AlgorithmParameters.1.2.840.113549.3.2", PREFIX + "$AlgParams");
++ //
++ // provider.addAlgorithm("Cipher.RC2", PREFIX + "$ECB");
++ // provider.addAlgorithm("Cipher.RC2WRAP", PREFIX + "$Wrap");
++ // provider.addAlgorithm("Alg.Alias.Cipher." + PKCSObjectIdentifiers.id_alg_CMSRC2wrap, "RC2WRAP");
++ // provider.addAlgorithm("Cipher.1.2.840.113549.3.2", PREFIX + "$CBC");
++ //
++ // provider.addAlgorithm("Mac.RC2MAC", PREFIX + "$CBCMAC");
++ // provider.addAlgorithm("Alg.Alias.Mac.RC2", "RC2MAC");
++ // provider.addAlgorithm("Mac.RC2MAC/CFB8", PREFIX + "$CFB8MAC");
++ // provider.addAlgorithm("Alg.Alias.Mac.RC2/CFB8", "RC2MAC/CFB8");
++ //
++ // provider.addAlgorithm("Alg.Alias.SecretKeyFactory.PBEWITHMD2ANDRC2-CBC", "PBEWITHMD2ANDRC2");
++ // END android-removed
+
+ provider.addAlgorithm("Alg.Alias.SecretKeyFactory.PBEWITHMD5ANDRC2-CBC", "PBEWITHMD5ANDRC2");
+
+ provider.addAlgorithm("Alg.Alias.SecretKeyFactory.PBEWITHSHA1ANDRC2-CBC", "PBEWITHSHA1ANDRC2");
+
+- provider.addAlgorithm("Alg.Alias.SecretKeyFactory." + PKCSObjectIdentifiers.pbeWithMD2AndRC2_CBC, "PBEWITHMD2ANDRC2");
++ // BEGIN android-removed
++ // provider.addAlgorithm("Alg.Alias.SecretKeyFactory." + PKCSObjectIdentifiers.pbeWithMD2AndRC2_CBC, "PBEWITHMD2ANDRC2");
++ // END android-removed
+
+ provider.addAlgorithm("Alg.Alias.SecretKeyFactory." + PKCSObjectIdentifiers.pbeWithMD5AndRC2_CBC, "PBEWITHMD5ANDRC2");
+
+@@ -486,14 +506,18 @@
+ provider.addAlgorithm("Alg.Alias.SecretKeyFactory.1.2.840.113549.1.12.1.5", "PBEWITHSHAAND128BITRC2-CBC");
+ provider.addAlgorithm("Alg.Alias.SecretKeyFactory.1.2.840.113549.1.12.1.6", "PBEWITHSHAAND40BITRC2-CBC");
+
+- provider.addAlgorithm("SecretKeyFactory.PBEWITHMD2ANDRC2", PREFIX + "$PBEWithMD2KeyFactory");
++ // BEGIN android-removed
++ // provider.addAlgorithm("SecretKeyFactory.PBEWITHMD2ANDRC2", PREFIX + "$PBEWithMD2KeyFactory");
++ // END android-removed
+ provider.addAlgorithm("SecretKeyFactory.PBEWITHMD5ANDRC2", PREFIX + "$PBEWithMD5KeyFactory");
+ provider.addAlgorithm("SecretKeyFactory.PBEWITHSHA1ANDRC2", PREFIX + "$PBEWithSHA1KeyFactory");
+
+ provider.addAlgorithm("SecretKeyFactory.PBEWITHSHAAND128BITRC2-CBC", PREFIX + "$PBEWithSHAAnd128BitKeyFactory");
+ provider.addAlgorithm("SecretKeyFactory.PBEWITHSHAAND40BITRC2-CBC", PREFIX + "$PBEWithSHAAnd40BitKeyFactory");
+
+- provider.addAlgorithm("Alg.Alias.Cipher." + PKCSObjectIdentifiers.pbeWithMD2AndRC2_CBC, "PBEWITHMD2ANDRC2");
++ // BEGIN android-removed
++ // provider.addAlgorithm("Alg.Alias.Cipher." + PKCSObjectIdentifiers.pbeWithMD2AndRC2_CBC, "PBEWITHMD2ANDRC2");
++ // END android-removed
+
+ provider.addAlgorithm("Alg.Alias.Cipher." + PKCSObjectIdentifiers.pbeWithMD5AndRC2_CBC, "PBEWITHMD5ANDRC2");
+
+diff -Naur bcprov-jdk15on-149.orig/org/bouncycastle/jcajce/provider/symmetric/SymmetricAlgorithmProvider.java bcprov-jdk15on-149/org/bouncycastle/jcajce/provider/symmetric/SymmetricAlgorithmProvider.java
+--- bcprov-jdk15on-149.orig/org/bouncycastle/jcajce/provider/symmetric/SymmetricAlgorithmProvider.java 2013-05-31 21:16:46.000000000 +0000
++++ bcprov-jdk15on-149/org/bouncycastle/jcajce/provider/symmetric/SymmetricAlgorithmProvider.java 2013-05-25 02:14:15.000000000 +0000
+@@ -6,16 +6,18 @@
+ abstract class SymmetricAlgorithmProvider
+ extends AlgorithmProvider
+ {
+- protected void addGMacAlgorithm(
+- ConfigurableProvider provider,
+- String algorithm,
+- String algorithmClassName,
+- String keyGeneratorClassName)
+- {
+- provider.addAlgorithm("Mac." + algorithm + "-GMAC", algorithmClassName);
+- provider.addAlgorithm("Alg.Alias.Mac." + algorithm + "GMAC", algorithm + "-GMAC");
+-
+- provider.addAlgorithm("KeyGenerator." + algorithm + "-GMAC", keyGeneratorClassName);
+- provider.addAlgorithm("Alg.Alias.KeyGenerator." + algorithm + "GMAC", algorithm + "-GMAC");
+- }
++ // BEGIN android-removed
++ // protected void addGMacAlgorithm(
++ // ConfigurableProvider provider,
++ // String algorithm,
++ // String algorithmClassName,
++ // String keyGeneratorClassName)
++ // {
++ // provider.addAlgorithm("Mac." + algorithm + "-GMAC", algorithmClassName);
++ // provider.addAlgorithm("Alg.Alias.Mac." + algorithm + "GMAC", algorithm + "-GMAC");
++ //
++ // provider.addAlgorithm("KeyGenerator." + algorithm + "-GMAC", keyGeneratorClassName);
++ // provider.addAlgorithm("Alg.Alias.KeyGenerator." + algorithm + "GMAC", algorithm + "-GMAC");
++ // }
++ // END android-removed
+ }
+diff -Naur bcprov-jdk15on-149.orig/org/bouncycastle/jcajce/provider/symmetric/Twofish.java bcprov-jdk15on-149/org/bouncycastle/jcajce/provider/symmetric/Twofish.java
+--- bcprov-jdk15on-149.orig/org/bouncycastle/jcajce/provider/symmetric/Twofish.java 2013-05-31 21:16:46.000000000 +0000
++++ bcprov-jdk15on-149/org/bouncycastle/jcajce/provider/symmetric/Twofish.java 2013-05-25 02:14:15.000000000 +0000
+@@ -1,17 +1,25 @@
+ package org.bouncycastle.jcajce.provider.symmetric;
+
+-import org.bouncycastle.crypto.BlockCipher;
+-import org.bouncycastle.crypto.CipherKeyGenerator;
++// BEGIN android-removed
++// import org.bouncycastle.crypto.BlockCipher;
++// import org.bouncycastle.crypto.CipherKeyGenerator;
++// END android-removed
+ import org.bouncycastle.crypto.engines.TwofishEngine;
+-import org.bouncycastle.crypto.macs.GMac;
++// BEGIN android-removed
++// import org.bouncycastle.crypto.macs.GMac;
++// END android-removed
+ import org.bouncycastle.crypto.modes.CBCBlockCipher;
+-import org.bouncycastle.crypto.modes.GCMBlockCipher;
++// BEGIN android-removed
++// import org.bouncycastle.crypto.modes.GCMBlockCipher;
++// END android-removed
+ import org.bouncycastle.jcajce.provider.config.ConfigurableProvider;
+ import org.bouncycastle.jcajce.provider.symmetric.util.BaseBlockCipher;
+-import org.bouncycastle.jcajce.provider.symmetric.util.BaseKeyGenerator;
+-import org.bouncycastle.jcajce.provider.symmetric.util.BaseMac;
+-import org.bouncycastle.jcajce.provider.symmetric.util.BlockCipherProvider;
+-import org.bouncycastle.jcajce.provider.symmetric.util.IvAlgorithmParameters;
++// BEGIN android-removed
++// import org.bouncycastle.jcajce.provider.symmetric.util.BaseKeyGenerator;
++// import org.bouncycastle.jcajce.provider.symmetric.util.BaseMac;
++// import org.bouncycastle.jcajce.provider.symmetric.util.BlockCipherProvider;
++// import org.bouncycastle.jcajce.provider.symmetric.util.IvAlgorithmParameters;
++// END android-removed
+ import org.bouncycastle.jcajce.provider.symmetric.util.PBESecretKeyFactory;
+
+ public final class Twofish
+@@ -20,38 +28,40 @@
+ {
+ }
+
+- public static class ECB
+- extends BaseBlockCipher
+- {
+- public ECB()
+- {
+- super(new BlockCipherProvider()
+- {
+- public BlockCipher get()
+- {
+- return new TwofishEngine();
+- }
+- });
+- }
+- }
+-
+- public static class KeyGen
+- extends BaseKeyGenerator
+- {
+- public KeyGen()
+- {
+- super("Twofish", 256, new CipherKeyGenerator());
+- }
+- }
+-
+- public static class GMAC
+- extends BaseMac
+- {
+- public GMAC()
+- {
+- super(new GMac(new GCMBlockCipher(new TwofishEngine())));
+- }
+- }
++ // BEGIN android-removed
++ // public static class ECB
++ // extends BaseBlockCipher
++ // {
++ // public ECB()
++ // {
++ // super(new BlockCipherProvider()
++ // {
++ // public BlockCipher get()
++ // {
++ // return new TwofishEngine();
++ // }
++ // });
++ // }
++ // }
++ //
++ // public static class KeyGen
++ // extends BaseKeyGenerator
++ // {
++ // public KeyGen()
++ // {
++ // super("Twofish", 256, new CipherKeyGenerator());
++ // }
++ // }
++ //
++ // public static class GMAC
++ // extends BaseMac
++ // {
++ // public GMAC()
++ // {
++ // super(new GMac(new GCMBlockCipher(new TwofishEngine())));
++ // }
++ // }
++ // END android-removed
+
+ /**
+ * PBEWithSHAAndTwofish-CBC
+@@ -77,14 +87,16 @@
+ }
+ }
+
+- public static class AlgParams
+- extends IvAlgorithmParameters
+- {
+- protected String engineToString()
+- {
+- return "Twofish IV";
+- }
+- }
++ // BEGIN android-removed
++ // public static class AlgParams
++ // extends IvAlgorithmParameters
++ // {
++ // protected String engineToString()
++ // {
++ // return "Twofish IV";
++ // }
++ // }
++ // END android-removed
+
+ public static class Mappings
+ extends SymmetricAlgorithmProvider
+@@ -97,16 +109,20 @@
+
+ public void configure(ConfigurableProvider provider)
+ {
+- provider.addAlgorithm("Cipher.Twofish", PREFIX + "$ECB");
+- provider.addAlgorithm("KeyGenerator.Twofish", PREFIX + "$KeyGen");
+- provider.addAlgorithm("AlgorithmParameters.Twofish", PREFIX + "$AlgParams");
++ // BEGIN android-removed
++ // provider.addAlgorithm("Cipher.Twofish", PREFIX + "$ECB");
++ // provider.addAlgorithm("KeyGenerator.Twofish", PREFIX + "$KeyGen");
++ // provider.addAlgorithm("AlgorithmParameters.Twofish", PREFIX + "$AlgParams");
++ // END android-removed
+
+ provider.addAlgorithm("Alg.Alias.AlgorithmParameters.PBEWITHSHAANDTWOFISH", "PKCS12PBE");
+ provider.addAlgorithm("Alg.Alias.AlgorithmParameters.PBEWITHSHAANDTWOFISH-CBC", "PKCS12PBE");
+ provider.addAlgorithm("Cipher.PBEWITHSHAANDTWOFISH-CBC", PREFIX + "$PBEWithSHA");
+ provider.addAlgorithm("SecretKeyFactory.PBEWITHSHAANDTWOFISH-CBC", PREFIX + "$PBEWithSHAKeyFactory");
+
+- addGMacAlgorithm(provider, "Twofish", PREFIX + "$GMAC", PREFIX + "$KeyGen");
++ // BEGIN android-removed
++ // addGMacAlgorithm(provider, "Twofish", PREFIX + "$GMAC", PREFIX + "$KeyGen");
++ // END android-removed
+ }
+ }
+ }
+diff -Naur bcprov-jdk15on-149.orig/org/bouncycastle/jcajce/provider/symmetric/util/BaseBlockCipher.java bcprov-jdk15on-149/org/bouncycastle/jcajce/provider/symmetric/util/BaseBlockCipher.java
+--- bcprov-jdk15on-149.orig/org/bouncycastle/jcajce/provider/symmetric/util/BaseBlockCipher.java 2013-05-31 21:16:46.000000000 +0000
++++ bcprov-jdk15on-149/org/bouncycastle/jcajce/provider/symmetric/util/BaseBlockCipher.java 2013-05-25 02:14:15.000000000 +0000
@@ -17,8 +17,10 @@
import javax.crypto.ShortBufferException;
import javax.crypto.spec.IvParameterSpec;
@@ -4588,9 +5727,9 @@ diff -Naur bcprov-jdk15on-148.orig/org/bouncycastle/jcajce/provider/symmetric/ut
+// import javax.crypto.spec.RC5ParameterSpec;
+// END android-removed
+ import org.bouncycastle.crypto.BlockCipher;
import org.bouncycastle.crypto.BufferedBlockCipher;
- import org.bouncycastle.crypto.CipherParameters;
-@@ -30,12 +32,18 @@
+@@ -31,13 +33,19 @@
import org.bouncycastle.crypto.modes.CCMBlockCipher;
import org.bouncycastle.crypto.modes.CFBBlockCipher;
import org.bouncycastle.crypto.modes.CTSBlockCipher;
@@ -4600,8 +5739,10 @@ diff -Naur bcprov-jdk15on-148.orig/org/bouncycastle/jcajce/provider/symmetric/ut
+// END android-removed
import org.bouncycastle.crypto.modes.GCMBlockCipher;
-import org.bouncycastle.crypto.modes.GOFBBlockCipher;
+-import org.bouncycastle.crypto.modes.OCBBlockCipher;
+// BEGIN android-removed
+// import org.bouncycastle.crypto.modes.GOFBBlockCipher;
++// import org.bouncycastle.crypto.modes.OCBBlockCipher;
+// END android-removed
import org.bouncycastle.crypto.modes.OFBBlockCipher;
-import org.bouncycastle.crypto.modes.OpenPGPCFBBlockCipher;
@@ -4613,7 +5754,7 @@ diff -Naur bcprov-jdk15on-148.orig/org/bouncycastle/jcajce/provider/symmetric/ut
import org.bouncycastle.crypto.modes.SICBlockCipher;
import org.bouncycastle.crypto.paddings.BlockCipherPadding;
import org.bouncycastle.crypto.paddings.ISO10126d2Padding;
-@@ -47,11 +55,17 @@
+@@ -49,11 +57,17 @@
import org.bouncycastle.crypto.params.KeyParameter;
import org.bouncycastle.crypto.params.ParametersWithIV;
import org.bouncycastle.crypto.params.ParametersWithRandom;
@@ -4634,7 +5775,7 @@ diff -Naur bcprov-jdk15on-148.orig/org/bouncycastle/jcajce/provider/symmetric/ut
import org.bouncycastle.jce.spec.RepeatedSecretKeySpec;
import org.bouncycastle.util.Strings;
-@@ -64,11 +78,15 @@
+@@ -66,11 +80,15 @@
//
private Class[] availableSpecs =
{
@@ -4652,8 +5793,8 @@ diff -Naur bcprov-jdk15on-148.orig/org/bouncycastle/jcajce/provider/symmetric/ut
+ // END android-removed
};
- private org.bouncycastle.crypto.BlockCipher baseEngine;
-@@ -223,20 +241,22 @@
+ private BlockCipher baseEngine;
+@@ -235,20 +253,22 @@
new CFBBlockCipher(baseEngine, 8 * baseEngine.getBlockSize()));
}
}
@@ -4690,7 +5831,7 @@ diff -Naur bcprov-jdk15on-148.orig/org/bouncycastle/jcajce/provider/symmetric/ut
else if (modeName.startsWith("SIC"))
{
ivLength = baseEngine.getBlockSize();
-@@ -253,12 +273,14 @@
+@@ -265,12 +285,14 @@
cipher = new BufferedGenericBlockCipher(new BufferedBlockCipher(
new SICBlockCipher(baseEngine)));
}
@@ -4711,16 +5852,40 @@ diff -Naur bcprov-jdk15on-148.orig/org/bouncycastle/jcajce/provider/symmetric/ut
else if (modeName.startsWith("CTS"))
{
ivLength = baseEngine.getBlockSize();
-@@ -269,11 +291,13 @@
+@@ -281,23 +303,25 @@
ivLength = baseEngine.getBlockSize();
cipher = new AEADGenericBlockCipher(new CCMBlockCipher(baseEngine));
}
+- else if (modeName.startsWith("OCB"))
+- {
+- if (engineProvider != null)
+- {
+- ivLength = baseEngine.getBlockSize();
+- cipher = new AEADGenericBlockCipher(new OCBBlockCipher(baseEngine, engineProvider.get()));
+- }
+- else
+- {
+- throw new NoSuchAlgorithmException("can't support mode " + mode);
+- }
+- }
- else if (modeName.startsWith("EAX"))
- {
- ivLength = baseEngine.getBlockSize();
- cipher = new AEADGenericBlockCipher(new EAXBlockCipher(baseEngine));
- }
+ // BEGIN android-removed
++ // else if (modeName.startsWith("OCB"))
++ // {
++ // if (engineProvider != null)
++ // {
++ // ivLength = baseEngine.getBlockSize();
++ // cipher = new AEADGenericBlockCipher(new OCBBlockCipher(baseEngine, engineProvider.get()));
++ // }
++ // else
++ // {
++ // throw new NoSuchAlgorithmException("can't support mode " + mode);
++ // }
++ // }
+ // else if (modeName.startsWith("EAX"))
+ // {
+ // ivLength = baseEngine.getBlockSize();
@@ -4730,7 +5895,7 @@ diff -Naur bcprov-jdk15on-148.orig/org/bouncycastle/jcajce/provider/symmetric/ut
else if (modeName.startsWith("GCM"))
{
ivLength = baseEngine.getBlockSize();
-@@ -442,63 +466,65 @@
+@@ -471,63 +495,65 @@
param = new KeyParameter(key.getEncoded());
}
}
@@ -4853,507 +6018,20 @@ diff -Naur bcprov-jdk15on-148.orig/org/bouncycastle/jcajce/provider/symmetric/ut
else
{
throw new InvalidAlgorithmParameterException("unknown parameter type.");
-diff -Naur bcprov-jdk15on-148.orig/org/bouncycastle/jcajce/provider/symmetric/util/BaseMac.java bcprov-jdk15on-148/org/bouncycastle/jcajce/provider/symmetric/util/BaseMac.java
---- bcprov-jdk15on-148.orig/org/bouncycastle/jcajce/provider/symmetric/util/BaseMac.java 2013-02-10 00:37:58.000000000 +0000
-+++ bcprov-jdk15on-148/org/bouncycastle/jcajce/provider/symmetric/util/BaseMac.java 2012-09-17 23:04:47.000000000 +0000
-@@ -11,25 +11,34 @@
-
- import org.bouncycastle.crypto.CipherParameters;
- import org.bouncycastle.crypto.Mac;
--import org.bouncycastle.crypto.digests.MD2Digest;
--import org.bouncycastle.crypto.digests.MD4Digest;
--import org.bouncycastle.crypto.digests.MD5Digest;
--import org.bouncycastle.crypto.digests.RIPEMD128Digest;
--import org.bouncycastle.crypto.digests.RIPEMD160Digest;
--import org.bouncycastle.crypto.digests.SHA1Digest;
--import org.bouncycastle.crypto.digests.SHA224Digest;
--import org.bouncycastle.crypto.digests.SHA256Digest;
--import org.bouncycastle.crypto.digests.SHA384Digest;
--import org.bouncycastle.crypto.digests.SHA512Digest;
--import org.bouncycastle.crypto.digests.TigerDigest;
-+// BEGIN android-removed
-+// import org.bouncycastle.crypto.digests.MD2Digest;
-+// import org.bouncycastle.crypto.digests.MD4Digest;
-+// import org.bouncycastle.crypto.digests.MD5Digest;
-+// import org.bouncycastle.crypto.digests.RIPEMD128Digest;
-+// import org.bouncycastle.crypto.digests.RIPEMD160Digest;
-+// import org.bouncycastle.crypto.digests.SHA1Digest;
-+// import org.bouncycastle.crypto.digests.SHA224Digest;
-+// import org.bouncycastle.crypto.digests.SHA256Digest;
-+// import org.bouncycastle.crypto.digests.SHA384Digest;
-+// import org.bouncycastle.crypto.digests.SHA512Digest;
-+// import org.bouncycastle.crypto.digests.TigerDigest;
-+// END android-removed
-+// BEGIN android-added
-+import org.bouncycastle.crypto.digests.AndroidDigestFactory;
-+// END android-added
- import org.bouncycastle.crypto.engines.DESEngine;
- import org.bouncycastle.crypto.engines.RC2Engine;
- import org.bouncycastle.crypto.macs.CBCBlockCipherMac;
--import org.bouncycastle.crypto.macs.CFBBlockCipherMac;
--import org.bouncycastle.crypto.macs.GOST28147Mac;
-+// BEGIN android-removed
-+// import org.bouncycastle.crypto.macs.CFBBlockCipherMac;
-+// import org.bouncycastle.crypto.macs.GOST28147Mac;
-+// END android-removed
- import org.bouncycastle.crypto.macs.HMac;
--import org.bouncycastle.crypto.macs.ISO9797Alg3Mac;
--import org.bouncycastle.crypto.macs.OldHMac;
-+// BEGIN android-removed
-+// import org.bouncycastle.crypto.macs.ISO9797Alg3Mac;
-+// import org.bouncycastle.crypto.macs.OldHMac;
-+// END android-removed
- import org.bouncycastle.crypto.paddings.ISO7816d4Padding;
- import org.bouncycastle.crypto.params.KeyParameter;
- import org.bouncycastle.crypto.params.ParametersWithIV;
-@@ -179,91 +188,93 @@
- }
- }
-
-- /**
-- * GOST28147
-- */
-- public static class GOST28147
-- extends BaseMac
-- {
-- public GOST28147()
-- {
-- super(new GOST28147Mac());
-- }
-- }
--
--
--
-- /**
-- * DES
-- */
-- public static class DESCFB8
-- extends BaseMac
-- {
-- public DESCFB8()
-- {
-- super(new CFBBlockCipherMac(new DESEngine()));
-- }
-- }
--
-- /**
-- * RC2CFB8
-- */
-- public static class RC2CFB8
-- extends BaseMac
-- {
-- public RC2CFB8()
-- {
-- super(new CFBBlockCipherMac(new RC2Engine()));
-- }
-- }
--
-- /**
-- * DES9797Alg3with7816-4Padding
-- */
-- public static class DES9797Alg3with7816d4
-- extends BaseMac
-- {
-- public DES9797Alg3with7816d4()
-- {
-- super(new ISO9797Alg3Mac(new DESEngine(), new ISO7816d4Padding()));
-- }
-- }
--
-- /**
-- * DES9797Alg3
-- */
-- public static class DES9797Alg3
-- extends BaseMac
-- {
-- public DES9797Alg3()
-- {
-- super(new ISO9797Alg3Mac(new DESEngine()));
-- }
-- }
--
-- /**
-- * MD2 HMac
-- */
-- public static class MD2
-- extends BaseMac
-- {
-- public MD2()
-- {
-- super(new HMac(new MD2Digest()));
-- }
-- }
--
-- /**
-- * MD4 HMac
-- */
-- public static class MD4
-- extends BaseMac
-- {
-- public MD4()
-- {
-- super(new HMac(new MD4Digest()));
-- }
-- }
-+ // BEGIN android-removed
-+ // /**
-+ // * GOST28147
-+ // */
-+ // public static class GOST28147
-+ // extends BaseMac
-+ // {
-+ // public GOST28147()
-+ // {
-+ // super(new GOST28147Mac());
-+ // }
-+ // }
-+ //
-+ //
-+ //
-+ // /**
-+ // * DES
-+ // */
-+ // public static class DESCFB8
-+ // extends BaseMac
-+ // {
-+ // public DESCFB8()
-+ // {
-+ // super(new CFBBlockCipherMac(new DESEngine()));
-+ // }
-+ // }
-+ //
-+ // /**
-+ // * RC2CFB8
-+ // */
-+ // public static class RC2CFB8
-+ // extends BaseMac
-+ // {
-+ // public RC2CFB8()
-+ // {
-+ // super(new CFBBlockCipherMac(new RC2Engine()));
-+ // }
-+ // }
-+ //
-+ // /**
-+ // * DES9797Alg3with7816-4Padding
-+ // */
-+ // public static class DES9797Alg3with7816d4
-+ // extends BaseMac
-+ // {
-+ // public DES9797Alg3with7816d4()
-+ // {
-+ // super(new ISO9797Alg3Mac(new DESEngine(), new ISO7816d4Padding()));
-+ // }
-+ // }
-+ //
-+ // /**
-+ // * DES9797Alg3
-+ // */
-+ // public static class DES9797Alg3
-+ // extends BaseMac
-+ // {
-+ // public DES9797Alg3()
-+ // {
-+ // super(new ISO9797Alg3Mac(new DESEngine()));
-+ // }
-+ // }
-+ //
-+ // /**
-+ // * MD2 HMac
-+ // */
-+ // public static class MD2
-+ // extends BaseMac
-+ // {
-+ // public MD2()
-+ // {
-+ // super(new HMac(new MD2Digest()));
-+ // }
-+ // }
-+ //
-+ // /**
-+ // * MD4 HMac
-+ // */
-+ // public static class MD4
-+ // extends BaseMac
-+ // {
-+ // public MD4()
-+ // {
-+ // super(new HMac(new MD4Digest()));
-+ // }
-+ // }
-+ // END android-removed
-
- /**
- * MD5 HMac
-@@ -273,7 +284,9 @@
- {
- public MD5()
- {
-- super(new HMac(new MD5Digest()));
-+ // BEGIN android-changed
-+ super(new HMac(AndroidDigestFactory.getMD5()));
-+ // END android-changed
- }
- }
-
-@@ -285,21 +298,25 @@
- {
- public SHA1()
- {
-- super(new HMac(new SHA1Digest()));
-+ // BEGIN android-changed
-+ super(new HMac(AndroidDigestFactory.getSHA1()));
-+ // END android-changed
- }
- }
-
-- /**
-- * SHA-224 HMac
-- */
-- public static class SHA224
-- extends BaseMac
-- {
-- public SHA224()
-- {
-- super(new HMac(new SHA224Digest()));
-- }
-- }
-+ // BEGIN android-removed
-+ // /**
-+ // * SHA-224 HMac
-+ // */
-+ // public static class SHA224
-+ // extends BaseMac
-+ // {
-+ // public SHA224()
-+ // {
-+ // super(new HMac(new SHA224Digest()));
-+ // }
-+ // }
-+ // END android-removed
-
- /**
- * SHA-256 HMac
-@@ -309,7 +326,7 @@
- {
- public SHA256()
- {
-- super(new HMac(new SHA256Digest()));
-+ super(new HMac(AndroidDigestFactory.getSHA256()));
- }
- }
-
-@@ -321,18 +338,20 @@
- {
- public SHA384()
- {
-- super(new HMac(new SHA384Digest()));
-+ super(new HMac(AndroidDigestFactory.getSHA384()));
- }
- }
-
-- public static class OldSHA384
-- extends BaseMac
-- {
-- public OldSHA384()
-- {
-- super(new OldHMac(new SHA384Digest()));
-- }
-- }
-+ // BEGIN android-removed
-+ // public static class OldSHA384
-+ // extends BaseMac
-+ // {
-+ // public OldSHA384()
-+ // {
-+ // super(new OldHMac(new SHA384Digest()));
-+ // }
-+ // }
-+ // END android-removed
-
- /**
- * SHA-512 HMac
-@@ -342,75 +361,77 @@
+@@ -761,7 +787,9 @@
+ private boolean isAEADModeName(
+ String modeName)
{
- public SHA512()
- {
-- super(new HMac(new SHA512Digest()));
-- }
-- }
--
-- /**
-- * SHA-512 HMac
-- */
-- public static class OldSHA512
-- extends BaseMac
-- {
-- public OldSHA512()
-- {
-- super(new OldHMac(new SHA512Digest()));
-- }
-- }
--
-- /**
-- * RIPEMD128 HMac
-- */
-- public static class RIPEMD128
-- extends BaseMac
-- {
-- public RIPEMD128()
-- {
-- super(new HMac(new RIPEMD128Digest()));
-- }
-- }
--
-- /**
-- * RIPEMD160 HMac
-- */
-- public static class RIPEMD160
-- extends BaseMac
-- {
-- public RIPEMD160()
-- {
-- super(new HMac(new RIPEMD160Digest()));
-- }
-- }
--
-- /**
-- * Tiger HMac
-- */
-- public static class Tiger
-- extends BaseMac
-- {
-- public Tiger()
-- {
-- super(new HMac(new TigerDigest()));
-+ super(new HMac(AndroidDigestFactory.getSHA512()));
- }
- }
-
-+ // BEGIN android-removed
-+ // /**
-+ // * SHA-512 HMac
-+ // */
-+ // public static class OldSHA512
-+ // extends BaseMac
-+ // {
-+ // public OldSHA512()
-+ // {
-+ // super(new OldHMac(new SHA512Digest()));
-+ // }
-+ // }
-+ //
-+ // /**
-+ // * RIPEMD128 HMac
-+ // */
-+ // public static class RIPEMD128
-+ // extends BaseMac
-+ // {
-+ // public RIPEMD128()
-+ // {
-+ // super(new HMac(new RIPEMD128Digest()));
-+ // }
-+ // }
- //
-- // PKCS12 states that the same algorithm should be used
-- // for the key generation as is used in the HMAC, so that
-- // is what we do here.
-+ // /**
-+ // * RIPEMD160 HMac
-+ // */
-+ // public static class RIPEMD160
-+ // extends BaseMac
-+ // {
-+ // public RIPEMD160()
-+ // {
-+ // super(new HMac(new RIPEMD160Digest()));
-+ // }
-+ // }
- //
--
-- /**
-- * PBEWithHmacRIPEMD160
-- */
-- public static class PBEWithRIPEMD160
-- extends BaseMac
-- {
-- public PBEWithRIPEMD160()
-- {
-- super(new HMac(new RIPEMD160Digest()), PKCS12, RIPEMD160, 160);
-- }
-- }
-+ // /**
-+ // * Tiger HMac
-+ // */
-+ // public static class Tiger
-+ // extends BaseMac
-+ // {
-+ // public Tiger()
-+ // {
-+ // super(new HMac(new TigerDigest()));
-+ // }
-+ // }
-+ //
-+ // //
-+ // // PKCS12 states that the same algorithm should be used
-+ // // for the key generation as is used in the HMAC, so that
-+ // // is what we do here.
-+ // //
-+ //
-+ // /**
-+ // * PBEWithHmacRIPEMD160
-+ // */
-+ // public static class PBEWithRIPEMD160
-+ // extends BaseMac
-+ // {
-+ // public PBEWithRIPEMD160()
-+ // {
-+ // super(new HMac(new RIPEMD160Digest()), PKCS12, RIPEMD160, 160);
-+ // }
-+ // }
-+ // END android-removed
-
- /**
- * PBEWithHmacSHA
-@@ -420,19 +441,23 @@
- {
- public PBEWithSHA()
- {
-- super(new HMac(new SHA1Digest()), PKCS12, SHA1, 160);
-+ // BEGIN android-changed
-+ super(new HMac(AndroidDigestFactory.getSHA1()), PKCS12, SHA1, 160);
-+ // END android-changed
- }
+- return "CCM".equals(modeName) || "EAX".equals(modeName) || "GCM".equals(modeName) || "OCB".equals(modeName);
++ // BEGIN android-changed
++ return "CCM".equals(modeName) || "GCM".equals(modeName);
++ // END android-changed
}
-- /**
-- * PBEWithHmacTiger
-- */
-- public static class PBEWithTiger
-- extends BaseMac
-- {
-- public PBEWithTiger()
-- {
-- super(new HMac(new TigerDigest()), PKCS12, TIGER, 192);
-- }
-- }
-+ // BEGIN android-removed
-+ // /**
-+ // * PBEWithHmacTiger
-+ // */
-+ // public static class PBEWithTiger
-+ // extends BaseMac
-+ // {
-+ // public PBEWithTiger()
-+ // {
-+ // super(new HMac(new TigerDigest()), PKCS12, TIGER, 192);
-+ // }
-+ // }
-+ // END android-removed
- }
-diff -Naur bcprov-jdk15on-148.orig/org/bouncycastle/jcajce/provider/symmetric/util/BaseStreamCipher.java bcprov-jdk15on-148/org/bouncycastle/jcajce/provider/symmetric/util/BaseStreamCipher.java
---- bcprov-jdk15on-148.orig/org/bouncycastle/jcajce/provider/symmetric/util/BaseStreamCipher.java 2013-02-10 00:37:58.000000000 +0000
-+++ bcprov-jdk15on-148/org/bouncycastle/jcajce/provider/symmetric/util/BaseStreamCipher.java 2012-09-17 23:04:47.000000000 +0000
+ /*
+diff -Naur bcprov-jdk15on-149.orig/org/bouncycastle/jcajce/provider/symmetric/util/BaseStreamCipher.java bcprov-jdk15on-149/org/bouncycastle/jcajce/provider/symmetric/util/BaseStreamCipher.java
+--- bcprov-jdk15on-149.orig/org/bouncycastle/jcajce/provider/symmetric/util/BaseStreamCipher.java 2013-05-31 21:16:46.000000000 +0000
++++ bcprov-jdk15on-149/org/bouncycastle/jcajce/provider/symmetric/util/BaseStreamCipher.java 2012-09-17 23:04:47.000000000 +0000
@@ -13,8 +13,10 @@
import javax.crypto.ShortBufferException;
import javax.crypto.spec.IvParameterSpec;
@@ -5380,9 +6058,9 @@ diff -Naur bcprov-jdk15on-148.orig/org/bouncycastle/jcajce/provider/symmetric/ut
IvParameterSpec.class,
PBEParameterSpec.class
};
-diff -Naur bcprov-jdk15on-148.orig/org/bouncycastle/jcajce/provider/symmetric/util/BaseWrapCipher.java bcprov-jdk15on-148/org/bouncycastle/jcajce/provider/symmetric/util/BaseWrapCipher.java
---- bcprov-jdk15on-148.orig/org/bouncycastle/jcajce/provider/symmetric/util/BaseWrapCipher.java 2013-02-10 00:37:58.000000000 +0000
-+++ bcprov-jdk15on-148/org/bouncycastle/jcajce/provider/symmetric/util/BaseWrapCipher.java 2013-01-31 02:26:40.000000000 +0000
+diff -Naur bcprov-jdk15on-149.orig/org/bouncycastle/jcajce/provider/symmetric/util/BaseWrapCipher.java bcprov-jdk15on-149/org/bouncycastle/jcajce/provider/symmetric/util/BaseWrapCipher.java
+--- bcprov-jdk15on-149.orig/org/bouncycastle/jcajce/provider/symmetric/util/BaseWrapCipher.java 2013-05-31 21:16:46.000000000 +0000
++++ bcprov-jdk15on-149/org/bouncycastle/jcajce/provider/symmetric/util/BaseWrapCipher.java 2013-01-31 02:26:40.000000000 +0000
@@ -22,8 +22,10 @@
import javax.crypto.ShortBufferException;
import javax.crypto.spec.IvParameterSpec;
@@ -5426,9 +6104,9 @@ diff -Naur bcprov-jdk15on-148.orig/org/bouncycastle/jcajce/provider/symmetric/ut
protected byte[] engineWrap(
Key key)
-diff -Naur bcprov-jdk15on-148.orig/org/bouncycastle/jcajce/provider/symmetric/util/PBE.java bcprov-jdk15on-148/org/bouncycastle/jcajce/provider/symmetric/util/PBE.java
---- bcprov-jdk15on-148.orig/org/bouncycastle/jcajce/provider/symmetric/util/PBE.java 2013-02-10 00:37:58.000000000 +0000
-+++ bcprov-jdk15on-148/org/bouncycastle/jcajce/provider/symmetric/util/PBE.java 2013-04-10 22:02:36.000000000 +0000
+diff -Naur bcprov-jdk15on-149.orig/org/bouncycastle/jcajce/provider/symmetric/util/PBE.java bcprov-jdk15on-149/org/bouncycastle/jcajce/provider/symmetric/util/PBE.java
+--- bcprov-jdk15on-149.orig/org/bouncycastle/jcajce/provider/symmetric/util/PBE.java 2013-05-31 21:16:46.000000000 +0000
++++ bcprov-jdk15on-149/org/bouncycastle/jcajce/provider/symmetric/util/PBE.java 2013-05-25 02:14:15.000000000 +0000
@@ -7,13 +7,18 @@
import org.bouncycastle.crypto.CipherParameters;
@@ -5455,35 +6133,27 @@ diff -Naur bcprov-jdk15on-148.orig/org/bouncycastle/jcajce/provider/symmetric/ut
import org.bouncycastle.crypto.generators.OpenSSLPBEParametersGenerator;
import org.bouncycastle.crypto.generators.PKCS12ParametersGenerator;
import org.bouncycastle.crypto.generators.PKCS5S1ParametersGenerator;
-@@ -29,16 +34,23 @@
+@@ -29,11 +34,15 @@
//
- static final int MD5 = 0;
- static final int SHA1 = 1;
-- static final int RIPEMD160 = 2;
-- static final int TIGER = 3;
+ static final int MD5 = 0;
+ static final int SHA1 = 1;
+- static final int RIPEMD160 = 2;
+- static final int TIGER = 3;
+ // BEGIN android-removed
-+ // static final int RIPEMD160 = 2;
-+ // static final int TIGER = 3;
++ // static final int RIPEMD160 = 2;
++ // static final int TIGER = 3;
+ // END android-removed
- static final int SHA256 = 4;
-- static final int MD2 = 5;
-- static final int GOST3411 = 6;
+ static final int SHA256 = 4;
+- static final int MD2 = 5;
+- static final int GOST3411 = 6;
+ // BEGIN android-removed
-+ // static final int MD2 = 5;
-+ // static final int GOST3411 = 6;
++ // static final int MD2 = 5;
++ // static final int GOST3411 = 6;
+ // END android-removed
- static final int PKCS5S1 = 0;
- static final int PKCS5S2 = 1;
- static final int PKCS12 = 2;
- static final int OPENSSL = 3;
-+ // BEGIN android-added
-+ static final int PBKDF2 = 4;
-+ // END android-added
-
- /**
- * uses the appropriate mixer to generate the key and IV if necessary.
-@@ -55,20 +67,28 @@
+ static final int PKCS5S1 = 0;
+ static final int PKCS5S2 = 1;
+@@ -57,14 +66,20 @@
{
switch (hash)
{
@@ -5509,16 +6179,7 @@ diff -Naur bcprov-jdk15on-148.orig/org/bouncycastle/jcajce/provider/symmetric/ut
break;
default:
throw new IllegalStateException("PKCS5 scheme 1 only supports MD2, MD5 and SHA1.");
- }
- }
-- else if (type == PKCS5S2)
-+ // BEGIN android-changed
-+ else if ((type == PKCS5S2) || (type == PBKDF2))
-+ // END android-changed
- {
- generator = new PKCS5S2ParametersGenerator();
- }
-@@ -76,27 +96,39 @@
+@@ -78,27 +93,39 @@
{
switch (hash)
{
@@ -5544,10 +6205,11 @@ diff -Naur bcprov-jdk15on-148.orig/org/bouncycastle/jcajce/provider/symmetric/ut
- break;
- case TIGER:
- generator = new PKCS12ParametersGenerator(new TigerDigest());
+- break;
+ // BEGIN android-changed
+ generator = new PKCS12ParametersGenerator(AndroidDigestFactory.getSHA1());
+ // END android-changed
- break;
++ break;
+ // BEGIN android-removed
+ // case RIPEMD160:
+ // generator = new PKCS12ParametersGenerator(new RIPEMD160Digest());
@@ -5561,10 +6223,11 @@ diff -Naur bcprov-jdk15on-148.orig/org/bouncycastle/jcajce/provider/symmetric/ut
- break;
- case GOST3411:
- generator = new PKCS12ParametersGenerator(new GOST3411Digest());
+- break;
+ // BEGIN android-changed
+ generator = new PKCS12ParametersGenerator(AndroidDigestFactory.getSHA256());
+ // END android-changed
- break;
++ break;
+ // BEGIN android-removed
+ // case GOST3411:
+ // generator = new PKCS12ParametersGenerator(new GOST3411Digest());
@@ -5573,38 +6236,9 @@ diff -Naur bcprov-jdk15on-148.orig/org/bouncycastle/jcajce/provider/symmetric/ut
default:
throw new IllegalStateException("unknown digest scheme for PBE encryption.");
}
-@@ -223,6 +255,12 @@
- {
- key = PBEParametersGenerator.PKCS12PasswordToBytes(keySpec.getPassword());
- }
-+ // BEGIN android-changed
-+ else if (type == PBKDF2)
-+ {
-+ key = PBEParametersGenerator.PKCS5PasswordToUTF8Bytes(keySpec.getPassword());
-+ }
-+ // END android-changed
- else
- {
- key = PBEParametersGenerator.PKCS5PasswordToBytes(keySpec.getPassword());
-@@ -266,8 +304,14 @@
- {
- key = PBEParametersGenerator.PKCS12PasswordToBytes(keySpec.getPassword());
- }
-+ // BEGIN android-changed
-+ else if (type == PBKDF2)
-+ {
-+ key = PBEParametersGenerator.PKCS5PasswordToUTF8Bytes(keySpec.getPassword());
-+ }
-+ // END android-changed
- else
-- {
-+ {
- key = PBEParametersGenerator.PKCS5PasswordToBytes(keySpec.getPassword());
- }
-
-diff -Naur bcprov-jdk15on-148.orig/org/bouncycastle/jcajce/provider/util/DigestFactory.java bcprov-jdk15on-148/org/bouncycastle/jcajce/provider/util/DigestFactory.java
---- bcprov-jdk15on-148.orig/org/bouncycastle/jcajce/provider/util/DigestFactory.java 2013-02-10 00:37:58.000000000 +0000
-+++ bcprov-jdk15on-148/org/bouncycastle/jcajce/provider/util/DigestFactory.java 2012-09-17 23:04:47.000000000 +0000
+diff -Naur bcprov-jdk15on-149.orig/org/bouncycastle/jcajce/provider/util/DigestFactory.java bcprov-jdk15on-149/org/bouncycastle/jcajce/provider/util/DigestFactory.java
+--- bcprov-jdk15on-149.orig/org/bouncycastle/jcajce/provider/util/DigestFactory.java 2013-05-31 21:16:46.000000000 +0000
++++ bcprov-jdk15on-149/org/bouncycastle/jcajce/provider/util/DigestFactory.java 2012-09-17 23:04:47.000000000 +0000
@@ -10,19 +10,26 @@
import org.bouncycastle.asn1.oiw.OIWObjectIdentifiers;
import org.bouncycastle.asn1.pkcs.PKCSObjectIdentifiers;
@@ -5730,73 +6364,9 @@ diff -Naur bcprov-jdk15on-148.orig/org/bouncycastle/jcajce/provider/util/DigestF
|| (sha256.contains(digest1) && sha256.contains(digest2))
|| (sha384.contains(digest1) && sha384.contains(digest2))
|| (sha512.contains(digest1) && sha512.contains(digest2))
-diff -Naur bcprov-jdk15on-148.orig/org/bouncycastle/jce/ECNamedCurveTable.java bcprov-jdk15on-148/org/bouncycastle/jce/ECNamedCurveTable.java
---- bcprov-jdk15on-148.orig/org/bouncycastle/jce/ECNamedCurveTable.java 2013-02-10 00:37:58.000000000 +0000
-+++ bcprov-jdk15on-148/org/bouncycastle/jce/ECNamedCurveTable.java 2012-09-17 23:04:47.000000000 +0000
-@@ -6,7 +6,9 @@
- import org.bouncycastle.asn1.ASN1ObjectIdentifier;
- import org.bouncycastle.asn1.nist.NISTNamedCurves;
- import org.bouncycastle.asn1.sec.SECNamedCurves;
--import org.bouncycastle.asn1.teletrust.TeleTrusTNamedCurves;
-+// 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.jce.spec.ECNamedCurveParameterSpec;
-@@ -55,21 +57,23 @@
- }
- }
-
-- if (ecP == null)
-- {
-- ecP = TeleTrusTNamedCurves.getByName(name);
-- if (ecP == null)
-- {
-- try
-- {
-- ecP = TeleTrusTNamedCurves.getByOID(new ASN1ObjectIdentifier(name));
-- }
-- catch (IllegalArgumentException e)
-- {
-- // ignore - not an oid
-- }
-- }
-- }
-+ // BEGIN android-removed
-+ // if (ecP == null)
-+ // {
-+ // ecP = TeleTrusTNamedCurves.getByName(name);
-+ // if (ecP == null)
-+ // {
-+ // try
-+ // {
-+ // ecP = TeleTrusTNamedCurves.getByOID(new ASN1ObjectIdentifier(name));
-+ // }
-+ // catch (IllegalArgumentException e)
-+ // {
-+ // // ignore - not an oid
-+ // }
-+ // }
-+ // }
-+ // END android-removed
-
- if (ecP == null)
- {
-@@ -102,7 +106,9 @@
- addEnumeration(v, X962NamedCurves.getNames());
- addEnumeration(v, SECNamedCurves.getNames());
- addEnumeration(v, NISTNamedCurves.getNames());
-- addEnumeration(v, TeleTrusTNamedCurves.getNames());
-+ // BEGIN android-removed
-+ // addEnumeration(v, TeleTrusTNamedCurves.getNames());
-+ // END android-removed
-
- return v.elements();
- }
-diff -Naur bcprov-jdk15on-148.orig/org/bouncycastle/jce/PKCS10CertificationRequest.java bcprov-jdk15on-148/org/bouncycastle/jce/PKCS10CertificationRequest.java
---- bcprov-jdk15on-148.orig/org/bouncycastle/jce/PKCS10CertificationRequest.java 2013-02-10 00:37:58.000000000 +0000
-+++ bcprov-jdk15on-148/org/bouncycastle/jce/PKCS10CertificationRequest.java 2013-01-31 02:26:40.000000000 +0000
+diff -Naur bcprov-jdk15on-149.orig/org/bouncycastle/jce/PKCS10CertificationRequest.java bcprov-jdk15on-149/org/bouncycastle/jce/PKCS10CertificationRequest.java
+--- bcprov-jdk15on-149.orig/org/bouncycastle/jce/PKCS10CertificationRequest.java 2013-05-31 21:16:46.000000000 +0000
++++ bcprov-jdk15on-149/org/bouncycastle/jce/PKCS10CertificationRequest.java 2013-01-31 02:26:40.000000000 +0000
@@ -30,14 +30,18 @@
import org.bouncycastle.asn1.DERBitString;
import org.bouncycastle.asn1.DERNull;
@@ -6042,34 +6612,19 @@ diff -Naur bcprov-jdk15on-148.orig/org/bouncycastle/jce/PKCS10CertificationReque
else
{
return digestAlgOID.getId();
-diff -Naur bcprov-jdk15on-148.orig/org/bouncycastle/jce/provider/BouncyCastleProvider.java bcprov-jdk15on-148/org/bouncycastle/jce/provider/BouncyCastleProvider.java
---- bcprov-jdk15on-148.orig/org/bouncycastle/jce/provider/BouncyCastleProvider.java 2013-02-10 00:37:58.000000000 +0000
-+++ bcprov-jdk15on-148/org/bouncycastle/jce/provider/BouncyCastleProvider.java 2013-04-10 22:02:36.000000000 +0000
-@@ -11,7 +11,9 @@
+diff -Naur bcprov-jdk15on-149.orig/org/bouncycastle/jce/provider/BouncyCastleProvider.java bcprov-jdk15on-149/org/bouncycastle/jce/provider/BouncyCastleProvider.java
+--- bcprov-jdk15on-149.orig/org/bouncycastle/jce/provider/BouncyCastleProvider.java 2013-05-31 21:16:46.000000000 +0000
++++ bcprov-jdk15on-149/org/bouncycastle/jce/provider/BouncyCastleProvider.java 2013-05-25 02:14:15.000000000 +0000
+@@ -64,13 +64,20 @@
- import org.bouncycastle.asn1.ASN1ObjectIdentifier;
- import org.bouncycastle.asn1.bc.BCObjectIdentifiers;
--import org.bouncycastle.asn1.cryptopro.CryptoProObjectIdentifiers;
-+// BEGIN android-removed
-+// import org.bouncycastle.asn1.cryptopro.CryptoProObjectIdentifiers;
-+// END android-removed
- import org.bouncycastle.asn1.pkcs.PKCSObjectIdentifiers;
- import org.bouncycastle.asn1.pkcs.PrivateKeyInfo;
- import org.bouncycastle.asn1.x509.SubjectPublicKeyInfo;
-@@ -49,7 +51,10 @@
- {
- private static String info = "BouncyCastle Security Provider v1.48";
-
-- public static String PROVIDER_NAME = "BC";
-+ // BEGIN android-changed
-+ // this constant should be final
-+ public static final String PROVIDER_NAME = "BC";
-+ // END android-changed
-
- public static final ProviderConfiguration CONFIGURATION = new BouncyCastleProviderConfiguration();
+ private static final String[] SYMMETRIC_MACS =
+ {
+- "SipHash"
++ // BEGIN android-removed
++ // "SipHash"
++ // END android-removed
+ };
-@@ -62,8 +67,13 @@
- private static final String SYMMETRIC_CIPHER_PACKAGE = "org.bouncycastle.jcajce.provider.symmetric.";
private static final String[] SYMMETRIC_CIPHERS =
{
- "AES", "ARC4", "Blowfish", "Camellia", "CAST5", "CAST6", "DES", "DESede", "GOST28147", "Grainv1", "Grain128", "HC128", "HC256", "IDEA",
@@ -6079,12 +6634,23 @@ diff -Naur bcprov-jdk15on-148.orig/org/bouncycastle/jce/provider/BouncyCastlePro
+ // "Noekeon", "RC2", "RC5", "RC6", "Rijndael", "Salsa20", "SEED", "Serpent", "Skipjack", "TEA", "Twofish", "VMPC", "VMPCKSA3", "XTEA"
+ // END android-removed
+ // BEGIN android-added
-+ "AES", "ARC4", "Blowfish", "DES", "DESede",
++ "AES", "ARC4", "Blowfish", "DES", "DESede", "RC2", "Twofish"
+ // END android-added
};
/*
-@@ -80,7 +90,12 @@
+@@ -82,12 +89,22 @@
+ // later ones configure it.
+ private static final String[] ASYMMETRIC_GENERIC =
+ {
+- "X509", "IES"
++ // BEGIN android-removed
++ // "X509", "IES"
++ // END android-removed
++ // BEGIN android-added
++ "X509"
++ // END android-added
+ };
private static final String[] ASYMMETRIC_CIPHERS =
{
@@ -6098,7 +6664,7 @@ diff -Naur bcprov-jdk15on-148.orig/org/bouncycastle/jce/provider/BouncyCastlePro
};
/*
-@@ -89,7 +104,12 @@
+@@ -96,7 +113,12 @@
private static final String DIGEST_PACKAGE = "org.bouncycastle.jcajce.provider.digest.";
private static final String[] DIGESTS =
{
@@ -6111,10 +6677,10 @@ diff -Naur bcprov-jdk15on-148.orig/org/bouncycastle/jce/provider/BouncyCastlePro
+ // END android-added
};
- /**
-@@ -121,26 +141,28 @@
+ /*
+@@ -143,48 +165,52 @@
- loadAlgorithms(ASYMMETRIC_CIPHER_PACKAGE, ASYMMETRIC_CIPHERS);
+ loadAlgorithms(KEYSTORE_PACKAGE, KEYSTORES);
- //
- // X509Store
@@ -6136,6 +6702,22 @@ diff -Naur bcprov-jdk15on-148.orig/org/bouncycastle/jce/provider/BouncyCastlePro
- put("X509StreamParser.ATTRIBUTECERTIFICATE", "org.bouncycastle.jce.provider.X509AttrCertParser");
- put("X509StreamParser.CRL", "org.bouncycastle.jce.provider.X509CRLParser");
- put("X509StreamParser.CERTIFICATEPAIR", "org.bouncycastle.jce.provider.X509CertPairParser");
+-
+- //
+- // cipher engines
+- //
+- put("Cipher.BROKENPBEWITHMD5ANDDES", "org.bouncycastle.jce.provider.BrokenJCEBlockCipher$BrokePBEWithMD5AndDES");
+-
+- put("Cipher.BROKENPBEWITHSHA1ANDDES", "org.bouncycastle.jce.provider.BrokenJCEBlockCipher$BrokePBEWithSHA1AndDES");
+-
+-
+- put("Cipher.OLDPBEWITHSHAANDTWOFISH-CBC", "org.bouncycastle.jce.provider.BrokenJCEBlockCipher$OldPBEWithSHAAndTwofish");
+-
+- // Certification Path API
+- put("CertPathValidator.RFC3281", "org.bouncycastle.jce.provider.PKIXAttrCertPathValidatorSpi");
+- put("CertPathBuilder.RFC3281", "org.bouncycastle.jce.provider.PKIXAttrCertPathBuilderSpi");
+- put("CertPathValidator.RFC3280", "org.bouncycastle.jce.provider.PKIXCertPathValidatorSpi");
+- put("CertPathBuilder.RFC3280", "org.bouncycastle.jce.provider.PKIXCertPathBuilderSpi");
+ // BEGIN android-removed
+ // //
+ // // X509Store
@@ -6157,269 +6739,23 @@ diff -Naur bcprov-jdk15on-148.orig/org/bouncycastle/jce/provider/BouncyCastlePro
+ // put("X509StreamParser.ATTRIBUTECERTIFICATE", "org.bouncycastle.jce.provider.X509AttrCertParser");
+ // put("X509StreamParser.CRL", "org.bouncycastle.jce.provider.X509CRLParser");
+ // put("X509StreamParser.CERTIFICATEPAIR", "org.bouncycastle.jce.provider.X509CertPairParser");
-+ // END android-removed
-
-
- //
-@@ -149,14 +171,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");
-- put("KeyStore.BCPKCS12", "org.bouncycastle.jce.provider.JDKPKCS12KeyStore$BCPKCS12KeyStore");
-- put("KeyStore.PKCS12-DEF", "org.bouncycastle.jce.provider.JDKPKCS12KeyStore$DefPKCS12KeyStore");
--
-- put("KeyStore.PKCS12-3DES-40RC2", "org.bouncycastle.jce.provider.JDKPKCS12KeyStore$BCPKCS12KeyStore");
-- put("KeyStore.PKCS12-3DES-3DES", "org.bouncycastle.jce.provider.JDKPKCS12KeyStore$BCPKCS12KeyStore3DES");
--
-- put("KeyStore.PKCS12-DEF-3DES-40RC2", "org.bouncycastle.jce.provider.JDKPKCS12KeyStore$DefPKCS12KeyStore");
-- put("KeyStore.PKCS12-DEF-3DES-3DES", "org.bouncycastle.jce.provider.JDKPKCS12KeyStore$DefPKCS12KeyStore3DES");
-+ // BEGIN android-changed
-+ put("Alg.Alias.KeyStore.BCPKCS12", "PKCS12");
-+ // END android-changed
-+ // BEGIN android-removed
-+ // put("KeyStore.PKCS12-DEF", "org.bouncycastle.jce.provider.JDKPKCS12KeyStore$DefPKCS12KeyStore");
-+ // END android-removed
-+
-+ // BEGIN android-changed
-+ put("Alg.Alias.KeyStore.PKCS12-3DES-40RC2", "PKCS12");
-+ // END android-changed
-+ // BEGIN android-removed
-+ // put("KeyStore.PKCS12-3DES-3DES", "org.bouncycastle.jce.provider.JDKPKCS12KeyStore$BCPKCS12KeyStore3DES");
-+ // END android-removed
-+
-+ // BEGIN android-removed
-+ // put("KeyStore.PKCS12-DEF-3DES-40RC2", "org.bouncycastle.jce.provider.JDKPKCS12KeyStore$DefPKCS12KeyStore");
-+ // put("KeyStore.PKCS12-DEF-3DES-3DES", "org.bouncycastle.jce.provider.JDKPKCS12KeyStore$DefPKCS12KeyStore3DES");
-+ // END android-removed
-
- put("Alg.Alias.KeyStore.UBER", "BouncyCastle");
- put("Alg.Alias.KeyStore.BOUNCYCASTLE", "BouncyCastle");
-@@ -165,29 +197,41 @@
- //
- // algorithm parameters
- //
-- put("AlgorithmParameters.IES", "org.bouncycastle.jce.provider.JDKAlgorithmParameters$IES");
-+ // BEGIN android-removed
-+ // put("AlgorithmParameters.IES", "org.bouncycastle.jce.provider.JDKAlgorithmParameters$IES");
-+ // END android-removed
- put("AlgorithmParameters.PKCS12PBE", "org.bouncycastle.jce.provider.JDKAlgorithmParameters$PKCS12PBE");
-
-- put("AlgorithmParameters." + PKCSObjectIdentifiers.id_PBKDF2, "org.bouncycastle.jce.provider.JDKAlgorithmParameters$PBKDF2");
-+ // BEGIN android-removed
-+ // put("AlgorithmParameters." + PKCSObjectIdentifiers.id_PBKDF2, "org.bouncycastle.jce.provider.JDKAlgorithmParameters$PBKDF2");
-+ // END android-removed
-
-
- put("Alg.Alias.AlgorithmParameters.PBEWITHSHA1ANDRC2", "PKCS12PBE");
-- put("Alg.Alias.AlgorithmParameters.PBEWITHSHAAND3-KEYTRIPLEDES", "PKCS12PBE");
-- put("Alg.Alias.AlgorithmParameters.PBEWITHSHAAND2-KEYTRIPLEDES", "PKCS12PBE");
-- put("Alg.Alias.AlgorithmParameters.PBEWITHSHAANDRC2", "PKCS12PBE");
-- put("Alg.Alias.AlgorithmParameters.PBEWITHSHAANDRC4", "PKCS12PBE");
-+ // BEGIN android-removed
-+ // put("Alg.Alias.AlgorithmParameters.PBEWITHSHAAND3-KEYTRIPLEDES", "PKCS12PBE");
-+ // put("Alg.Alias.AlgorithmParameters.PBEWITHSHAAND2-KEYTRIPLEDES", "PKCS12PBE");
-+ // put("Alg.Alias.AlgorithmParameters.PBEWITHSHAANDRC2", "PKCS12PBE");
-+ // put("Alg.Alias.AlgorithmParameters.PBEWITHSHAANDRC4", "PKCS12PBE");
-+ // END android-removed
- put("Alg.Alias.AlgorithmParameters.PBEWITHSHAANDTWOFISH", "PKCS12PBE");
-- put("Alg.Alias.AlgorithmParameters.PBEWITHSHA1ANDRC2-CBC", "PKCS12PBE");
-+ // BEGIN android-removed
-+ // put("Alg.Alias.AlgorithmParameters.PBEWITHSHA1ANDRC2-CBC", "PKCS12PBE");
-+ // END android-removed
- put("Alg.Alias.AlgorithmParameters.PBEWITHSHAAND3-KEYTRIPLEDES-CBC", "PKCS12PBE");
- put("Alg.Alias.AlgorithmParameters.PBEWITHSHAAND2-KEYTRIPLEDES-CBC", "PKCS12PBE");
-- put("Alg.Alias.AlgorithmParameters.PBEWITHSHAANDDES3KEY-CBC", "PKCS12PBE");
-- put("Alg.Alias.AlgorithmParameters.PBEWITHSHAANDDES2KEY-CBC", "PKCS12PBE");
-+ // BEGIN android-removed
-+ // put("Alg.Alias.AlgorithmParameters.PBEWITHSHAANDDES3KEY-CBC", "PKCS12PBE");
-+ // put("Alg.Alias.AlgorithmParameters.PBEWITHSHAANDDES2KEY-CBC", "PKCS12PBE");
-+ // END android-removed
- put("Alg.Alias.AlgorithmParameters.PBEWITHSHAAND40BITRC2-CBC", "PKCS12PBE");
- put("Alg.Alias.AlgorithmParameters.PBEWITHSHAAND40BITRC4", "PKCS12PBE");
- put("Alg.Alias.AlgorithmParameters.PBEWITHSHAAND128BITRC2-CBC", "PKCS12PBE");
- put("Alg.Alias.AlgorithmParameters.PBEWITHSHAAND128BITRC4", "PKCS12PBE");
- put("Alg.Alias.AlgorithmParameters.PBEWITHSHAANDTWOFISH", "PKCS12PBE");
-- put("Alg.Alias.AlgorithmParameters.PBEWITHSHAANDTWOFISH-CBC", "PKCS12PBE");
-+ // BEGIN android-removed
-+ // put("Alg.Alias.AlgorithmParameters.PBEWITHSHAANDTWOFISH-CBC", "PKCS12PBE");
-+ // END android-removed
- put("Alg.Alias.AlgorithmParameters.1.2.840.113549.1.12.1.1", "PKCS12PBE");
- put("Alg.Alias.AlgorithmParameters.1.2.840.113549.1.12.1.2", "PKCS12PBE");
- put("Alg.Alias.AlgorithmParameters.1.2.840.113549.1.12.1.3", "PKCS12PBE");
-@@ -218,12 +262,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");
--
-- put("AlgorithmParameters.SHA1WITHECDSA", "org.bouncycastle.jce.provider.JDKECDSAAlgParameters$SigAlgParameters");
-- put("AlgorithmParameters.SHA224WITHECDSA", "org.bouncycastle.jce.provider.JDKECDSAAlgParameters$SigAlgParameters");
-- put("AlgorithmParameters.SHA256WITHECDSA", "org.bouncycastle.jce.provider.JDKECDSAAlgParameters$SigAlgParameters");
-- put("AlgorithmParameters.SHA384WITHECDSA", "org.bouncycastle.jce.provider.JDKECDSAAlgParameters$SigAlgParameters");
-- put("AlgorithmParameters.SHA512WITHECDSA", "org.bouncycastle.jce.provider.JDKECDSAAlgParameters$SigAlgParameters");
-+
-+ // BEGIN android-removed
-+ // put("AlgorithmParameters.SHA1WITHECDSA", "org.bouncycastle.jce.provider.JDKECDSAAlgParameters$SigAlgParameters");
-+ // put("AlgorithmParameters.SHA224WITHECDSA", "org.bouncycastle.jce.provider.JDKECDSAAlgParameters$SigAlgParameters");
-+ // put("AlgorithmParameters.SHA256WITHECDSA", "org.bouncycastle.jce.provider.JDKECDSAAlgParameters$SigAlgParameters");
-+ // put("AlgorithmParameters.SHA384WITHECDSA", "org.bouncycastle.jce.provider.JDKECDSAAlgParameters$SigAlgParameters");
-+ // put("AlgorithmParameters.SHA512WITHECDSA", "org.bouncycastle.jce.provider.JDKECDSAAlgParameters$SigAlgParameters");
-+ // END android-removed
-
- //
- // key agreement
-@@ -235,14 +281,20 @@
- //
- put("Alg.Alias.Cipher.PBEWithSHAAnd3KeyTripleDES", "PBEWITHSHAAND3-KEYTRIPLEDES-CBC");
-
-- put("Cipher.IES", "org.bouncycastle.jce.provider.JCEIESCipher$IES");
-- put("Cipher.BrokenIES", "org.bouncycastle.jce.provider.JCEIESCipher$BrokenIES");
-+ // BEGIN android-removed
-+ // put("Cipher.IES", "org.bouncycastle.jce.provider.JCEIESCipher$IES");
-+ // put("Cipher.BrokenIES", "org.bouncycastle.jce.provider.JCEIESCipher$BrokenIES");
-+ // END android-removed
-
- put("Cipher.PBEWITHMD5ANDDES", "org.bouncycastle.jce.provider.JCEBlockCipher$PBEWithMD5AndDES");
-- put("Cipher.BROKENPBEWITHMD5ANDDES", "org.bouncycastle.jce.provider.BrokenJCEBlockCipher$BrokePBEWithMD5AndDES");
-+ // BEGIN android-removed
-+ // put("Cipher.BROKENPBEWITHMD5ANDDES", "org.bouncycastle.jce.provider.BrokenJCEBlockCipher$BrokePBEWithMD5AndDES");
-+ // END android-removed
- put("Cipher.PBEWITHMD5ANDRC2", "org.bouncycastle.jce.provider.JCEBlockCipher$PBEWithMD5AndRC2");
- put("Cipher.PBEWITHSHA1ANDDES", "org.bouncycastle.jce.provider.JCEBlockCipher$PBEWithSHA1AndDES");
-- put("Cipher.BROKENPBEWITHSHA1ANDDES", "org.bouncycastle.jce.provider.BrokenJCEBlockCipher$BrokePBEWithSHA1AndDES");
-+ // BEGIN android-removed
-+ // put("Cipher.BROKENPBEWITHSHA1ANDDES", "org.bouncycastle.jce.provider.BrokenJCEBlockCipher$BrokePBEWithSHA1AndDES");
-+ // END android-removed
- put("Cipher.PBEWITHSHA1ANDRC2", "org.bouncycastle.jce.provider.JCEBlockCipher$PBEWithSHA1AndRC2");
-
- put("Cipher.PBEWITHSHAAND128BITRC2-CBC", "org.bouncycastle.jce.provider.JCEBlockCipher$PBEWithSHAAnd128BitRC2");
-@@ -284,10 +336,12 @@
- put("Cipher.PBEWITHMD5AND256BITAES-CBC-OPENSSL", "org.bouncycastle.jce.provider.JCEBlockCipher$PBEWithAESCBC");
-
- put("Cipher.PBEWITHSHAANDTWOFISH-CBC", "org.bouncycastle.jce.provider.JCEBlockCipher$PBEWithSHAAndTwofish");
-- put("Cipher.OLDPBEWITHSHAANDTWOFISH-CBC", "org.bouncycastle.jce.provider.BrokenJCEBlockCipher$OldPBEWithSHAAndTwofish");
--
-- put("Alg.Alias.Cipher." + PKCSObjectIdentifiers.pbeWithMD2AndDES_CBC, "PBEWITHMD2ANDDES");
-- put("Alg.Alias.Cipher." + PKCSObjectIdentifiers.pbeWithMD2AndRC2_CBC, "PBEWITHMD2ANDRC2");
-+ // BEGIN android-removed
-+ // put("Cipher.OLDPBEWITHSHAANDTWOFISH-CBC", "org.bouncycastle.jce.provider.BrokenJCEBlockCipher$OldPBEWithSHAAndTwofish");
+ //
-+ // put("Alg.Alias.Cipher." + PKCSObjectIdentifiers.pbeWithMD2AndDES_CBC, "PBEWITHMD2ANDDES");
-+ // put("Alg.Alias.Cipher." + PKCSObjectIdentifiers.pbeWithMD2AndRC2_CBC, "PBEWITHMD2ANDRC2");
-+ // END android-removed
- put("Alg.Alias.Cipher." + PKCSObjectIdentifiers.pbeWithMD5AndDES_CBC, "PBEWITHMD5ANDDES");
- put("Alg.Alias.Cipher." + PKCSObjectIdentifiers.pbeWithMD5AndRC2_CBC, "PBEWITHMD5ANDDES");
- put("Alg.Alias.Cipher." + PKCSObjectIdentifiers.pbeWithSHA1AndDES_CBC, "PBEWITHSHA1ANDDES");
-@@ -324,16 +378,20 @@
- //
- // secret key factories.
- //
-- put("SecretKeyFactory.PBEWITHMD2ANDDES", "org.bouncycastle.jce.provider.JCESecretKeyFactory$PBEWithMD2AndDES");
--
-- put("Alg.Alias.SecretKeyFactory." + PKCSObjectIdentifiers.pbeWithMD2AndDES_CBC, "PBEWITHMD2ANDDES");
-- put("Alg.Alias.SecretKeyFactory." + PKCSObjectIdentifiers.pbeWithMD2AndRC2_CBC, "PBEWITHMD2ANDRC2");
-+ // BEGIN android-removed
-+ // put("SecretKeyFactory.PBEWITHMD2ANDDES", "org.bouncycastle.jce.provider.JCESecretKeyFactory$PBEWithMD2AndDES");
++ // //
++ // // cipher engines
++ // //
++ // put("Cipher.BROKENPBEWITHMD5ANDDES", "org.bouncycastle.jce.provider.BrokenJCEBlockCipher$BrokePBEWithMD5AndDES");
+ //
-+ // put("Alg.Alias.SecretKeyFactory." + PKCSObjectIdentifiers.pbeWithMD2AndDES_CBC, "PBEWITHMD2ANDDES");
-+ // put("Alg.Alias.SecretKeyFactory." + PKCSObjectIdentifiers.pbeWithMD2AndRC2_CBC, "PBEWITHMD2ANDRC2");
-+ // END android-removed
- put("Alg.Alias.SecretKeyFactory." + PKCSObjectIdentifiers.pbeWithMD5AndDES_CBC, "PBEWITHMD5ANDDES");
- put("Alg.Alias.SecretKeyFactory." + PKCSObjectIdentifiers.pbeWithMD5AndRC2_CBC, "PBEWITHMD5ANDDES");
- put("Alg.Alias.SecretKeyFactory." + PKCSObjectIdentifiers.pbeWithSHA1AndDES_CBC, "PBEWITHSHA1ANDDES");
- put("Alg.Alias.SecretKeyFactory." + PKCSObjectIdentifiers.pbeWithSHA1AndRC2_CBC, "PBEWITHSHA1ANDRC2");
-
-- put("SecretKeyFactory.PBEWITHMD2ANDRC2", "org.bouncycastle.jce.provider.JCESecretKeyFactory$PBEWithMD2AndRC2");
-+ // BEGIN android-removed
-+ // put("SecretKeyFactory.PBEWITHMD2ANDRC2", "org.bouncycastle.jce.provider.JCESecretKeyFactory$PBEWithMD2AndRC2");
-+ // END android-removed
- 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");
-@@ -345,33 +403,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");
-- put("SecretKeyFactory.PBEWITHHMACRIPEMD160", "org.bouncycastle.jce.provider.JCESecretKeyFactory$PBEWithRIPEMD160");
-+ // BEGIN android-removed
-+ // put("SecretKeyFactory.PBEWITHHMACRIPEMD160", "org.bouncycastle.jce.provider.JCESecretKeyFactory$PBEWithRIPEMD160");
-+ // END android-removed
- put("SecretKeyFactory.PBEWITHHMACSHA1", "org.bouncycastle.jce.provider.JCESecretKeyFactory$PBEWithSHA");
-- put("SecretKeyFactory.PBEWITHHMACTIGER", "org.bouncycastle.jce.provider.JCESecretKeyFactory$PBEWithTiger");
-+ // BEGIN android-removed
-+ // put("SecretKeyFactory.PBEWITHHMACTIGER", "org.bouncycastle.jce.provider.JCESecretKeyFactory$PBEWithTiger");
-+ // END android-removed
-
- put("SecretKeyFactory.PBEWITHMD5AND128BITAES-CBC-OPENSSL", "org.bouncycastle.jce.provider.JCESecretKeyFactory$PBEWithMD5And128BitAESCBCOpenSSL");
- put("SecretKeyFactory.PBEWITHMD5AND192BITAES-CBC-OPENSSL", "org.bouncycastle.jce.provider.JCESecretKeyFactory$PBEWithMD5And192BitAESCBCOpenSSL");
- put("SecretKeyFactory.PBEWITHMD5AND256BITAES-CBC-OPENSSL", "org.bouncycastle.jce.provider.JCESecretKeyFactory$PBEWithMD5And256BitAESCBCOpenSSL");
-
-- put("SecretKeyFactory." + CryptoProObjectIdentifiers.gostR3411, "org.bouncycastle.jce.provider.JCESecretKeyFactory$PBEWithGOST3411");
--
-- put("Alg.Alias.SecretKeyFactory.PBE", "PBE/PKCS5");
--
-- put("Alg.Alias.SecretKeyFactory.BROKENPBEWITHMD5ANDDES", "PBE/PKCS5");
-- put("Alg.Alias.SecretKeyFactory.BROKENPBEWITHSHA1ANDDES", "PBE/PKCS5");
-- put("Alg.Alias.SecretKeyFactory.OLDPBEWITHSHAAND3-KEYTRIPLEDES-CBC", "PBE/PKCS12");
-- put("Alg.Alias.SecretKeyFactory.BROKENPBEWITHSHAAND3-KEYTRIPLEDES-CBC", "PBE/PKCS12");
-- put("Alg.Alias.SecretKeyFactory.BROKENPBEWITHSHAAND2-KEYTRIPLEDES-CBC", "PBE/PKCS12");
-- put("Alg.Alias.SecretKeyFactory.OLDPBEWITHSHAANDTWOFISH-CBC", "PBE/PKCS12");
--
-- put("Alg.Alias.SecretKeyFactory.PBEWITHMD2ANDDES-CBC", "PBEWITHMD2ANDDES");
-- put("Alg.Alias.SecretKeyFactory.PBEWITHMD2ANDRC2-CBC", "PBEWITHMD2ANDRC2");
-+ // BEGIN android-removed
-+ // put("SecretKeyFactory." + CryptoProObjectIdentifiers.gostR3411, "org.bouncycastle.jce.provider.JCESecretKeyFactory$PBEWithGOST3411");
++ // put("Cipher.BROKENPBEWITHSHA1ANDDES", "org.bouncycastle.jce.provider.BrokenJCEBlockCipher$BrokePBEWithSHA1AndDES");
+ //
-+ // put("Alg.Alias.SecretKeyFactory.PBE", "PBE/PKCS5");
+ //
-+ // put("Alg.Alias.SecretKeyFactory.BROKENPBEWITHMD5ANDDES", "PBE/PKCS5");
-+ // put("Alg.Alias.SecretKeyFactory.BROKENPBEWITHSHA1ANDDES", "PBE/PKCS5");
-+ // put("Alg.Alias.SecretKeyFactory.OLDPBEWITHSHAAND3-KEYTRIPLEDES-CBC", "PBE/PKCS12");
-+ // put("Alg.Alias.SecretKeyFactory.BROKENPBEWITHSHAAND3-KEYTRIPLEDES-CBC", "PBE/PKCS12");
-+ // put("Alg.Alias.SecretKeyFactory.BROKENPBEWITHSHAAND2-KEYTRIPLEDES-CBC", "PBE/PKCS12");
-+ // put("Alg.Alias.SecretKeyFactory.OLDPBEWITHSHAANDTWOFISH-CBC", "PBE/PKCS12");
++ // put("Cipher.OLDPBEWITHSHAANDTWOFISH-CBC", "org.bouncycastle.jce.provider.BrokenJCEBlockCipher$OldPBEWithSHAAndTwofish");
+ //
-+ // put("Alg.Alias.SecretKeyFactory.PBEWITHMD2ANDDES-CBC", "PBEWITHMD2ANDDES");
-+ // put("Alg.Alias.SecretKeyFactory.PBEWITHMD2ANDRC2-CBC", "PBEWITHMD2ANDRC2");
-+ // END android-removed
- put("Alg.Alias.SecretKeyFactory.PBEWITHMD5ANDDES-CBC", "PBEWITHMD5ANDDES");
- put("Alg.Alias.SecretKeyFactory.PBEWITHMD5ANDRC2-CBC", "PBEWITHMD5ANDRC2");
- put("Alg.Alias.SecretKeyFactory.PBEWITHSHA1ANDDES-CBC", "PBEWITHSHA1ANDDES");
- put("Alg.Alias.SecretKeyFactory.PBEWITHSHA1ANDRC2-CBC", "PBEWITHSHA1ANDRC2");
-- put("Alg.Alias.SecretKeyFactory." + PKCSObjectIdentifiers.pbeWithMD2AndDES_CBC, "PBEWITHMD2ANDDES");
-- put("Alg.Alias.SecretKeyFactory." + PKCSObjectIdentifiers.pbeWithMD2AndRC2_CBC, "PBEWITHMD2ANDRC2");
-+ // BEGIN android-removed
-+ // put("Alg.Alias.SecretKeyFactory." + PKCSObjectIdentifiers.pbeWithMD2AndDES_CBC, "PBEWITHMD2ANDDES");
-+ // put("Alg.Alias.SecretKeyFactory." + PKCSObjectIdentifiers.pbeWithMD2AndRC2_CBC, "PBEWITHMD2ANDRC2");
-+ // END android-removed
- put("Alg.Alias.SecretKeyFactory." + PKCSObjectIdentifiers.pbeWithMD5AndDES_CBC, "PBEWITHMD5ANDDES");
- put("Alg.Alias.SecretKeyFactory." + PKCSObjectIdentifiers.pbeWithMD5AndRC2_CBC, "PBEWITHMD5ANDRC2");
- put("Alg.Alias.SecretKeyFactory." + PKCSObjectIdentifiers.pbeWithSHA1AndDES_CBC, "PBEWITHSHA1ANDDES");
-@@ -408,20 +474,32 @@
- 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");
-+ // BEGIN android-added
-+
-+ put("SecretKeyFactory.BrokenPBKDF2WithHmacSHA1", "org.bouncycastle.jce.provider.JCESecretKeyFactory$BrokenPBKDF2WithHmacSHA1");
-+ put("SecretKeyFactory.PBKDF2WithHmacSHA1", "org.bouncycastle.jce.provider.JCESecretKeyFactory$PBKDF2WithHmacSHA1");
-+ // END android-added
-
- addMacAlgorithms();
-
- // Certification Path API
-- put("CertPathValidator.RFC3281", "org.bouncycastle.jce.provider.PKIXAttrCertPathValidatorSpi");
-- put("CertPathBuilder.RFC3281", "org.bouncycastle.jce.provider.PKIXAttrCertPathBuilderSpi");
-- put("CertPathValidator.RFC3280", "org.bouncycastle.jce.provider.PKIXCertPathValidatorSpi");
-- put("CertPathBuilder.RFC3280", "org.bouncycastle.jce.provider.PKIXCertPathBuilderSpi");
-+ // BEGIN android-removed
++ // // Certification Path API
+ // put("CertPathValidator.RFC3281", "org.bouncycastle.jce.provider.PKIXAttrCertPathValidatorSpi");
+ // put("CertPathBuilder.RFC3281", "org.bouncycastle.jce.provider.PKIXAttrCertPathBuilderSpi");
++ // put("CertPathValidator.RFC3280", "org.bouncycastle.jce.provider.PKIXCertPathValidatorSpi");
++ // put("CertPathBuilder.RFC3280", "org.bouncycastle.jce.provider.PKIXCertPathBuilderSpi");
+ // END android-removed
-+ // BEGIN android-changed
-+ // Use Alg.Alias so RFC3280 doesn't show up when iterating provider services, only PKIX
-+ put("Alg.Alias.CertPathValidator.RFC3280", "PKIX");
-+ put("Alg.Alias.CertPathBuilder.RFC3280", "PKIX");
-+ // END android-changed
put("CertPathValidator.PKIX", "org.bouncycastle.jce.provider.PKIXCertPathValidatorSpi");
put("CertPathBuilder.PKIX", "org.bouncycastle.jce.provider.PKIXCertPathBuilderSpi");
put("CertStore.Collection", "org.bouncycastle.jce.provider.CertStoreCollectionSpi");
@@ -6434,47 +6770,9 @@ diff -Naur bcprov-jdk15on-148.orig/org/bouncycastle/jce/provider/BouncyCastlePro
}
private void loadAlgorithms(String packageName, String[] names)
-@@ -468,21 +546,25 @@
- private void addMacAlgorithms()
- {
-
-- put("Mac.DESWITHISO9797", "org.bouncycastle.jce.provider.JCEMac$DES9797Alg3");
-- put("Alg.Alias.Mac.DESISO9797MAC", "DESWITHISO9797");
--
-- put("Mac.ISO9797ALG3MAC", "org.bouncycastle.jce.provider.JCEMac$DES9797Alg3");
-- put("Alg.Alias.Mac.ISO9797ALG3", "ISO9797ALG3MAC");
-- put("Mac.ISO9797ALG3WITHISO7816-4PADDING", "org.bouncycastle.jce.provider.JCEMac$DES9797Alg3with7816d4");
-- put("Alg.Alias.Mac.ISO9797ALG3MACWITHISO7816-4PADDING", "ISO9797ALG3WITHISO7816-4PADDING");
--
-- put("Mac.OLDHMACSHA384", "org.bouncycastle.jce.provider.JCEMac$OldSHA384");
--
-- put("Mac.OLDHMACSHA512", "org.bouncycastle.jce.provider.JCEMac$OldSHA512");
-+ // BEGIN android-removed
-+ // put("Mac.DESWITHISO9797", "org.bouncycastle.jce.provider.JCEMac$DES9797Alg3");
-+ // put("Alg.Alias.Mac.DESISO9797MAC", "DESWITHISO9797");
-+ //
-+ // put("Mac.ISO9797ALG3MAC", "org.bouncycastle.jce.provider.JCEMac$DES9797Alg3");
-+ // put("Alg.Alias.Mac.ISO9797ALG3", "ISO9797ALG3MAC");
-+ // put("Mac.ISO9797ALG3WITHISO7816-4PADDING", "org.bouncycastle.jce.provider.JCEMac$DES9797Alg3with7816d4");
-+ // put("Alg.Alias.Mac.ISO9797ALG3MACWITHISO7816-4PADDING", "ISO9797ALG3WITHISO7816-4PADDING");
-+ //
-+ // put("Mac.OLDHMACSHA384", "org.bouncycastle.jce.provider.JCEMac$OldSHA384");
-+ //
-+ // put("Mac.OLDHMACSHA512", "org.bouncycastle.jce.provider.JCEMac$OldSHA512");
-+ // END android-removed
-
- put("Mac.PBEWITHHMACSHA", "org.bouncycastle.jce.provider.JCEMac$PBEWithSHA");
- put("Mac.PBEWITHHMACSHA1", "org.bouncycastle.jce.provider.JCEMac$PBEWithSHA");
-- put("Mac.PBEWITHHMACRIPEMD160", "org.bouncycastle.jce.provider.JCEMac$PBEWithRIPEMD160");
-+ // BEGIN android-removed
-+ // put("Mac.PBEWITHHMACRIPEMD160", "org.bouncycastle.jce.provider.JCEMac$PBEWithRIPEMD160");
-+ // END android-removed
- put("Alg.Alias.Mac.1.3.14.3.2.26", "PBEWITHHMACSHA");
- }
-
-diff -Naur bcprov-jdk15on-148.orig/org/bouncycastle/jce/provider/CertBlacklist.java bcprov-jdk15on-148/org/bouncycastle/jce/provider/CertBlacklist.java
---- bcprov-jdk15on-148.orig/org/bouncycastle/jce/provider/CertBlacklist.java 1970-01-01 00:00:00.000000000 +0000
-+++ bcprov-jdk15on-148/org/bouncycastle/jce/provider/CertBlacklist.java 2013-01-16 01:38:43.000000000 +0000
+diff -Naur bcprov-jdk15on-149.orig/org/bouncycastle/jce/provider/CertBlacklist.java bcprov-jdk15on-149/org/bouncycastle/jce/provider/CertBlacklist.java
+--- bcprov-jdk15on-149.orig/org/bouncycastle/jce/provider/CertBlacklist.java 1970-01-01 00:00:00.000000000 +0000
++++ bcprov-jdk15on-149/org/bouncycastle/jce/provider/CertBlacklist.java 2013-01-16 01:38:43.000000000 +0000
@@ -0,0 +1,224 @@
+/*
+ * Copyright (C) 2012 The Android Open Source Project
@@ -6700,9 +6998,9 @@ diff -Naur bcprov-jdk15on-148.orig/org/bouncycastle/jce/provider/CertBlacklist.j
+ }
+
+}
-diff -Naur bcprov-jdk15on-148.orig/org/bouncycastle/jce/provider/CertPathValidatorUtilities.java bcprov-jdk15on-148/org/bouncycastle/jce/provider/CertPathValidatorUtilities.java
---- bcprov-jdk15on-148.orig/org/bouncycastle/jce/provider/CertPathValidatorUtilities.java 2013-02-10 00:37:58.000000000 +0000
-+++ bcprov-jdk15on-148/org/bouncycastle/jce/provider/CertPathValidatorUtilities.java 2013-01-31 02:26:40.000000000 +0000
+diff -Naur bcprov-jdk15on-149.orig/org/bouncycastle/jce/provider/CertPathValidatorUtilities.java bcprov-jdk15on-149/org/bouncycastle/jce/provider/CertPathValidatorUtilities.java
+--- bcprov-jdk15on-149.orig/org/bouncycastle/jce/provider/CertPathValidatorUtilities.java 2013-05-31 21:16:46.000000000 +0000
++++ bcprov-jdk15on-149/org/bouncycastle/jce/provider/CertPathValidatorUtilities.java 2013-01-31 02:26:40.000000000 +0000
@@ -61,14 +61,18 @@
import org.bouncycastle.asn1.x509.PolicyInformation;
import org.bouncycastle.asn1.x509.SubjectPublicKeyInfo;
@@ -6860,311 +7158,9 @@ diff -Naur bcprov-jdk15on-148.orig/org/bouncycastle/jce/provider/CertPathValidat
protected static void addAdditionalStoresFromCRLDistributionPoint(
CRLDistPoint crldp, ExtendedPKIXParameters pkixParams)
-diff -Naur bcprov-jdk15on-148.orig/org/bouncycastle/jce/provider/JCEBlockCipher.java bcprov-jdk15on-148/org/bouncycastle/jce/provider/JCEBlockCipher.java
---- bcprov-jdk15on-148.orig/org/bouncycastle/jce/provider/JCEBlockCipher.java 2013-02-10 00:37:58.000000000 +0000
-+++ bcprov-jdk15on-148/org/bouncycastle/jce/provider/JCEBlockCipher.java 2013-01-31 02:26:40.000000000 +0000
-@@ -24,8 +24,10 @@
- import javax.crypto.ShortBufferException;
- import javax.crypto.spec.IvParameterSpec;
- import javax.crypto.spec.PBEParameterSpec;
--import javax.crypto.spec.RC2ParameterSpec;
--import javax.crypto.spec.RC5ParameterSpec;
-+// BEGIN android-removed
-+// import javax.crypto.spec.RC2ParameterSpec;
-+// import javax.crypto.spec.RC5ParameterSpec;
-+// END android-removed
- import javax.crypto.spec.SecretKeySpec;
-
- import org.bouncycastle.asn1.pkcs.PrivateKeyInfo;
-@@ -44,12 +46,18 @@
- import org.bouncycastle.crypto.modes.CCMBlockCipher;
- import org.bouncycastle.crypto.modes.CFBBlockCipher;
- import org.bouncycastle.crypto.modes.CTSBlockCipher;
--import org.bouncycastle.crypto.modes.EAXBlockCipher;
-+// BEGIN android-removed
-+// import org.bouncycastle.crypto.modes.EAXBlockCipher;
-+// END android-removed
- import org.bouncycastle.crypto.modes.GCMBlockCipher;
--import org.bouncycastle.crypto.modes.GOFBBlockCipher;
-+// BEGIN android-removed
-+// import org.bouncycastle.crypto.modes.GOFBBlockCipher;
-+// END android-removed
- import org.bouncycastle.crypto.modes.OFBBlockCipher;
--import org.bouncycastle.crypto.modes.OpenPGPCFBBlockCipher;
--import org.bouncycastle.crypto.modes.PGPCFBBlockCipher;
-+// BEGIN android-removed
-+// import org.bouncycastle.crypto.modes.OpenPGPCFBBlockCipher;
-+// import org.bouncycastle.crypto.modes.PGPCFBBlockCipher;
-+// END android-removed
- import org.bouncycastle.crypto.modes.SICBlockCipher;
- import org.bouncycastle.crypto.paddings.BlockCipherPadding;
- import org.bouncycastle.crypto.paddings.ISO10126d2Padding;
-@@ -61,12 +69,16 @@
- import org.bouncycastle.crypto.params.KeyParameter;
- import org.bouncycastle.crypto.params.ParametersWithIV;
- import org.bouncycastle.crypto.params.ParametersWithRandom;
--import org.bouncycastle.crypto.params.ParametersWithSBox;
--import org.bouncycastle.crypto.params.RC2Parameters;
--import org.bouncycastle.crypto.params.RC5Parameters;
-+// BEGIN android-removed
-+// import org.bouncycastle.crypto.params.ParametersWithSBox;
-+// import org.bouncycastle.crypto.params.RC2Parameters;
-+// import org.bouncycastle.crypto.params.RC5Parameters;
-+// END android-removed
- import org.bouncycastle.jcajce.provider.symmetric.util.BCPBEKey;
- import org.bouncycastle.jcajce.provider.symmetric.util.PBE;
--import org.bouncycastle.jce.spec.GOST28147ParameterSpec;
-+// BEGIN android-removed
-+// import org.bouncycastle.jce.spec.GOST28147ParameterSpec;
-+// END android-removed
- import org.bouncycastle.jce.spec.RepeatedSecretKeySpec;
- import org.bouncycastle.util.Strings;
-
-@@ -79,11 +91,15 @@
- //
- private Class[] availableSpecs =
- {
-- RC2ParameterSpec.class,
-- RC5ParameterSpec.class,
-+ // BEGIN android-removed
-+ // RC2ParameterSpec.class,
-+ // RC5ParameterSpec.class,
-+ // END android-removed
- IvParameterSpec.class,
- PBEParameterSpec.class,
-- GOST28147ParameterSpec.class
-+ // BEGIN android-removed
-+ // GOST28147ParameterSpec.class
-+ // END android-removed
- };
-
- private BlockCipher baseEngine;
-@@ -240,20 +256,22 @@
- new CFBBlockCipher(baseEngine, 8 * baseEngine.getBlockSize()));
- }
- }
-- else if (modeName.startsWith("PGP"))
-- {
-- boolean inlineIV = modeName.equalsIgnoreCase("PGPCFBwithIV");
--
-- ivLength = baseEngine.getBlockSize();
-- cipher = new BufferedGenericBlockCipher(
-- new PGPCFBBlockCipher(baseEngine, inlineIV));
-- }
-- else if (modeName.equalsIgnoreCase("OpenPGPCFB"))
-- {
-- ivLength = 0;
-- cipher = new BufferedGenericBlockCipher(
-- new OpenPGPCFBBlockCipher(baseEngine));
-- }
-+ // BEGIN android-removed
-+ // else if (modeName.startsWith("PGP"))
-+ // {
-+ // boolean inlineIV = modeName.equalsIgnoreCase("PGPCFBwithIV");
-+ //
-+ // ivLength = baseEngine.getBlockSize();
-+ // cipher = new BufferedGenericBlockCipher(
-+ // new PGPCFBBlockCipher(baseEngine, inlineIV));
-+ // }
-+ // else if (modeName.equalsIgnoreCase("OpenPGPCFB"))
-+ // {
-+ // ivLength = 0;
-+ // cipher = new BufferedGenericBlockCipher(
-+ // new OpenPGPCFBBlockCipher(baseEngine));
-+ // }
-+ // END android-removed
- else if (modeName.startsWith("SIC"))
- {
- ivLength = baseEngine.getBlockSize();
-@@ -270,12 +288,14 @@
- cipher = new BufferedGenericBlockCipher(new BufferedBlockCipher(
- new SICBlockCipher(baseEngine)));
- }
-- else if (modeName.startsWith("GOFB"))
-- {
-- ivLength = baseEngine.getBlockSize();
-- cipher = new BufferedGenericBlockCipher(new BufferedBlockCipher(
-- new GOFBBlockCipher(baseEngine)));
-- }
-+ // BEGIN android-removed
-+ // else if (modeName.startsWith("GOFB"))
-+ // {
-+ // ivLength = baseEngine.getBlockSize();
-+ // cipher = new BufferedGenericBlockCipher(new BufferedBlockCipher(
-+ // new GOFBBlockCipher(baseEngine)));
-+ // }
-+ // END android-removed
- else if (modeName.startsWith("CTS"))
- {
- ivLength = baseEngine.getBlockSize();
-@@ -286,11 +306,13 @@
- ivLength = baseEngine.getBlockSize();
- cipher = new AEADGenericBlockCipher(new CCMBlockCipher(baseEngine));
- }
-- else if (modeName.startsWith("EAX"))
-- {
-- ivLength = baseEngine.getBlockSize();
-- cipher = new AEADGenericBlockCipher(new EAXBlockCipher(baseEngine));
-- }
-+ // BEGIN android-removed
-+ // else if (modeName.startsWith("EAX"))
-+ // {
-+ // ivLength = baseEngine.getBlockSize();
-+ // cipher = new AEADGenericBlockCipher(new EAXBlockCipher(baseEngine));
-+ // }
-+ // END android-removed
- else if (modeName.startsWith("GCM"))
- {
- ivLength = baseEngine.getBlockSize();
-@@ -379,13 +401,15 @@
- throw new InvalidKeyException("Key for algorithm " + key.getAlgorithm() + " not suitable for symmetric enryption.");
- }
-
-- //
-- // for RC5-64 we must have some default parameters
-- //
-- if (params == null && baseEngine.getAlgorithmName().startsWith("RC5-64"))
-- {
-- throw new InvalidAlgorithmParameterException("RC5 requires an RC5ParametersSpec to be passed in.");
-- }
-+ // BEGIN android-removed
-+ // //
-+ // // for RC5-64 we must have some default parameters
-+ // //
-+ // if (params == null && baseEngine.getAlgorithmName().startsWith("RC5-64"))
-+ // {
-+ // throw new InvalidAlgorithmParameterException("RC5 requires an RC5ParametersSpec to be passed in.");
-+ // }
-+ // END android-removed
-
- //
- // a note on iv's - if ivLength is zero the IV gets ignored (we don't use it).
-@@ -459,63 +483,65 @@
- param = new KeyParameter(key.getEncoded());
- }
- }
-- else if (params instanceof GOST28147ParameterSpec)
-- {
-- GOST28147ParameterSpec gost28147Param = (GOST28147ParameterSpec)params;
--
-- param = new ParametersWithSBox(
-- new KeyParameter(key.getEncoded()), ((GOST28147ParameterSpec)params).getSbox());
--
-- if (gost28147Param.getIV() != null && ivLength != 0)
-- {
-- param = new ParametersWithIV(param, gost28147Param.getIV());
-- ivParam = (ParametersWithIV)param;
-- }
-- }
-- else if (params instanceof RC2ParameterSpec)
-- {
-- RC2ParameterSpec rc2Param = (RC2ParameterSpec)params;
--
-- param = new RC2Parameters(key.getEncoded(), ((RC2ParameterSpec)params).getEffectiveKeyBits());
--
-- if (rc2Param.getIV() != null && ivLength != 0)
-- {
-- param = new ParametersWithIV(param, rc2Param.getIV());
-- ivParam = (ParametersWithIV)param;
-- }
-- }
-- else if (params instanceof RC5ParameterSpec)
-- {
-- RC5ParameterSpec rc5Param = (RC5ParameterSpec)params;
--
-- param = new RC5Parameters(key.getEncoded(), ((RC5ParameterSpec)params).getRounds());
-- if (baseEngine.getAlgorithmName().startsWith("RC5"))
-- {
-- if (baseEngine.getAlgorithmName().equals("RC5-32"))
-- {
-- if (rc5Param.getWordSize() != 32)
-- {
-- throw new InvalidAlgorithmParameterException("RC5 already set up for a word size of 32 not " + rc5Param.getWordSize() + ".");
-- }
-- }
-- else if (baseEngine.getAlgorithmName().equals("RC5-64"))
-- {
-- if (rc5Param.getWordSize() != 64)
-- {
-- throw new InvalidAlgorithmParameterException("RC5 already set up for a word size of 64 not " + rc5Param.getWordSize() + ".");
-- }
-- }
-- }
-- else
-- {
-- throw new InvalidAlgorithmParameterException("RC5 parameters passed to a cipher that is not RC5.");
-- }
-- if ((rc5Param.getIV() != null) && (ivLength != 0))
-- {
-- param = new ParametersWithIV(param, rc5Param.getIV());
-- ivParam = (ParametersWithIV)param;
-- }
-- }
-+ // BEGIN android-removed
-+ // else if (params instanceof GOST28147ParameterSpec)
-+ // {
-+ // GOST28147ParameterSpec gost28147Param = (GOST28147ParameterSpec)params;
-+ //
-+ // param = new ParametersWithSBox(
-+ // new KeyParameter(key.getEncoded()), ((GOST28147ParameterSpec)params).getSbox());
-+ //
-+ // if (gost28147Param.getIV() != null && ivLength != 0)
-+ // {
-+ // param = new ParametersWithIV(param, gost28147Param.getIV());
-+ // ivParam = (ParametersWithIV)param;
-+ // }
-+ // }
-+ // else if (params instanceof RC2ParameterSpec)
-+ // {
-+ // RC2ParameterSpec rc2Param = (RC2ParameterSpec)params;
-+ //
-+ // param = new RC2Parameters(key.getEncoded(), ((RC2ParameterSpec)params).getEffectiveKeyBits());
-+ //
-+ // if (rc2Param.getIV() != null && ivLength != 0)
-+ // {
-+ // param = new ParametersWithIV(param, rc2Param.getIV());
-+ // ivParam = (ParametersWithIV)param;
-+ // }
-+ // }
-+ // else if (params instanceof RC5ParameterSpec)
-+ // {
-+ // RC5ParameterSpec rc5Param = (RC5ParameterSpec)params;
-+ //
-+ // param = new RC5Parameters(key.getEncoded(), ((RC5ParameterSpec)params).getRounds());
-+ // if (baseEngine.getAlgorithmName().startsWith("RC5"))
-+ // {
-+ // if (baseEngine.getAlgorithmName().equals("RC5-32"))
-+ // {
-+ // if (rc5Param.getWordSize() != 32)
-+ // {
-+ // throw new InvalidAlgorithmParameterException("RC5 already set up for a word size of 32 not " + rc5Param.getWordSize() + ".");
-+ // }
-+ // }
-+ // else if (baseEngine.getAlgorithmName().equals("RC5-64"))
-+ // {
-+ // if (rc5Param.getWordSize() != 64)
-+ // {
-+ // throw new InvalidAlgorithmParameterException("RC5 already set up for a word size of 64 not " + rc5Param.getWordSize() + ".");
-+ // }
-+ // }
-+ // }
-+ // else
-+ // {
-+ // throw new InvalidAlgorithmParameterException("RC5 parameters passed to a cipher that is not RC5.");
-+ // }
-+ // if ((rc5Param.getIV() != null) && (ivLength != 0))
-+ // {
-+ // param = new ParametersWithIV(param, rc5Param.getIV());
-+ // ivParam = (ParametersWithIV)param;
-+ // }
-+ // }
-+ // END android-removed
- else
- {
- throw new InvalidAlgorithmParameterException("unknown parameter type.");
-diff -Naur bcprov-jdk15on-148.orig/org/bouncycastle/jce/provider/JCEECPrivateKey.java bcprov-jdk15on-148/org/bouncycastle/jce/provider/JCEECPrivateKey.java
---- bcprov-jdk15on-148.orig/org/bouncycastle/jce/provider/JCEECPrivateKey.java 2013-02-10 00:37:58.000000000 +0000
-+++ bcprov-jdk15on-148/org/bouncycastle/jce/provider/JCEECPrivateKey.java 2013-01-31 02:26:40.000000000 +0000
+diff -Naur bcprov-jdk15on-149.orig/org/bouncycastle/jce/provider/JCEECPrivateKey.java bcprov-jdk15on-149/org/bouncycastle/jce/provider/JCEECPrivateKey.java
+--- bcprov-jdk15on-149.orig/org/bouncycastle/jce/provider/JCEECPrivateKey.java 2013-05-31 21:16:46.000000000 +0000
++++ bcprov-jdk15on-149/org/bouncycastle/jce/provider/JCEECPrivateKey.java 2013-05-25 02:14:15.000000000 +0000
@@ -20,8 +20,10 @@
import org.bouncycastle.asn1.DERInteger;
import org.bouncycastle.asn1.DERNull;
@@ -7236,9 +7232,9 @@ diff -Naur bcprov-jdk15on-148.orig/org/bouncycastle/jce/provider/JCEECPrivateKey
{
info = new PrivateKeyInfo(new AlgorithmIdentifier(X9ObjectIdentifiers.id_ecPublicKey, params.toASN1Primitive()), keyStructure.toASN1Primitive());
-diff -Naur bcprov-jdk15on-148.orig/org/bouncycastle/jce/provider/JCEECPublicKey.java bcprov-jdk15on-148/org/bouncycastle/jce/provider/JCEECPublicKey.java
---- bcprov-jdk15on-148.orig/org/bouncycastle/jce/provider/JCEECPublicKey.java 2013-02-10 00:37:58.000000000 +0000
-+++ bcprov-jdk15on-148/org/bouncycastle/jce/provider/JCEECPublicKey.java 2013-01-31 02:26:40.000000000 +0000
+diff -Naur bcprov-jdk15on-149.orig/org/bouncycastle/jce/provider/JCEECPublicKey.java bcprov-jdk15on-149/org/bouncycastle/jce/provider/JCEECPublicKey.java
+--- bcprov-jdk15on-149.orig/org/bouncycastle/jce/provider/JCEECPublicKey.java 2013-05-31 21:16:46.000000000 +0000
++++ bcprov-jdk15on-149/org/bouncycastle/jce/provider/JCEECPublicKey.java 2013-05-25 02:14:15.000000000 +0000
@@ -18,9 +18,11 @@
import org.bouncycastle.asn1.DERBitString;
import org.bouncycastle.asn1.DERNull;
@@ -7255,8 +7251,8 @@ diff -Naur bcprov-jdk15on-148.orig/org/bouncycastle/jce/provider/JCEECPublicKey.
import org.bouncycastle.asn1.x509.SubjectPublicKeyInfo;
import org.bouncycastle.asn1.x9.X962Parameters;
@@ -33,9 +35,13 @@
- import org.bouncycastle.jcajce.provider.asymmetric.ec.EC5Util;
- import org.bouncycastle.jcajce.provider.asymmetric.ec.ECUtil;
+ import org.bouncycastle.jcajce.provider.asymmetric.util.EC5Util;
+ import org.bouncycastle.jcajce.provider.asymmetric.util.ECUtil;
import org.bouncycastle.jcajce.provider.asymmetric.util.KeyUtil;
-import org.bouncycastle.jce.ECGOST3410NamedCurveTable;
+// BEGIN android-removed
@@ -7498,750 +7494,9 @@ diff -Naur bcprov-jdk15on-148.orig/org/bouncycastle/jce/provider/JCEECPublicKey.
{
if (ecSpec instanceof ECNamedCurveSpec)
{
-diff -Naur bcprov-jdk15on-148.orig/org/bouncycastle/jce/provider/JCEMac.java bcprov-jdk15on-148/org/bouncycastle/jce/provider/JCEMac.java
---- bcprov-jdk15on-148.orig/org/bouncycastle/jce/provider/JCEMac.java 2013-02-10 00:37:58.000000000 +0000
-+++ bcprov-jdk15on-148/org/bouncycastle/jce/provider/JCEMac.java 2012-09-17 23:04:47.000000000 +0000
-@@ -11,24 +11,35 @@
-
- import org.bouncycastle.crypto.CipherParameters;
- import org.bouncycastle.crypto.Mac;
--import org.bouncycastle.crypto.digests.MD2Digest;
--import org.bouncycastle.crypto.digests.MD4Digest;
--import org.bouncycastle.crypto.digests.MD5Digest;
--import org.bouncycastle.crypto.digests.RIPEMD128Digest;
--import org.bouncycastle.crypto.digests.RIPEMD160Digest;
--import org.bouncycastle.crypto.digests.SHA1Digest;
--import org.bouncycastle.crypto.digests.SHA224Digest;
--import org.bouncycastle.crypto.digests.SHA256Digest;
--import org.bouncycastle.crypto.digests.SHA384Digest;
--import org.bouncycastle.crypto.digests.SHA512Digest;
--import org.bouncycastle.crypto.digests.TigerDigest;
-+// BEGIN android-removed
-+// import org.bouncycastle.crypto.digests.MD2Digest;
-+// import org.bouncycastle.crypto.digests.MD4Digest;
-+// import org.bouncycastle.crypto.digests.MD5Digest;
-+// import org.bouncycastle.crypto.digests.RIPEMD128Digest;
-+// import org.bouncycastle.crypto.digests.RIPEMD160Digest;
-+// import org.bouncycastle.crypto.digests.SHA1Digest;
-+// import org.bouncycastle.crypto.digests.SHA224Digest;
-+// import org.bouncycastle.crypto.digests.SHA256Digest;
-+// import org.bouncycastle.crypto.digests.SHA384Digest;
-+// import org.bouncycastle.crypto.digests.SHA512Digest;
-+// import org.bouncycastle.crypto.digests.TigerDigest;
-+// END android-removed
-+// BEGIN android-added
-+import org.bouncycastle.crypto.digests.AndroidDigestFactory;
-+// END android-added
- import org.bouncycastle.crypto.engines.DESEngine;
--import org.bouncycastle.crypto.engines.RC2Engine;
-+// BEGIN android-removed
-+// import org.bouncycastle.crypto.engines.RC2Engine;
-+// END android-removed
- import org.bouncycastle.crypto.macs.CBCBlockCipherMac;
--import org.bouncycastle.crypto.macs.CFBBlockCipherMac;
-+// BEGIN android-removed
-+// import org.bouncycastle.crypto.macs.CFBBlockCipherMac;
-+// END android-removed
- import org.bouncycastle.crypto.macs.HMac;
--import org.bouncycastle.crypto.macs.ISO9797Alg3Mac;
--import org.bouncycastle.crypto.macs.OldHMac;
-+// BEGIN android-removed
-+// import org.bouncycastle.crypto.macs.ISO9797Alg3Mac;
-+// import org.bouncycastle.crypto.macs.OldHMac;
-+// END android-removed
- import org.bouncycastle.crypto.paddings.ISO7816d4Padding;
- import org.bouncycastle.crypto.params.KeyParameter;
- import org.bouncycastle.crypto.params.ParametersWithIV;
-@@ -144,109 +155,111 @@
- * the classes that extend directly off us.
- */
-
-- /**
-- * DES
-- */
-- public static class DES
-- extends JCEMac
-- {
-- public DES()
-- {
-- super(new CBCBlockCipherMac(new DESEngine()));
-- }
-- }
--
-- /**
-- * DES 64 bit MAC
-- */
-- public static class DES64
-- extends JCEMac
-- {
-- public DES64()
-- {
-- super(new CBCBlockCipherMac(new DESEngine(), 64));
-- }
-- }
--
-- /**
-- * RC2
-- */
-- public static class RC2
-- extends JCEMac
-- {
-- public RC2()
-- {
-- super(new CBCBlockCipherMac(new RC2Engine()));
-- }
-- }
--
--
--
--
-- /**
-- * DES
-- */
-- public static class DESCFB8
-- extends JCEMac
-- {
-- public DESCFB8()
-- {
-- super(new CFBBlockCipherMac(new DESEngine()));
-- }
-- }
--
-- /**
-- * RC2CFB8
-- */
--
--
-- /**
-- * DES9797Alg3with7816-4Padding
-- */
-- public static class DES9797Alg3with7816d4
-- extends JCEMac
-- {
-- public DES9797Alg3with7816d4()
-- {
-- super(new ISO9797Alg3Mac(new DESEngine(), new ISO7816d4Padding()));
-- }
-- }
--
-- /**
-- * DES9797Alg3
-- */
-- public static class DES9797Alg3
-- extends JCEMac
-- {
-- public DES9797Alg3()
-- {
-- super(new ISO9797Alg3Mac(new DESEngine()));
-- }
-- }
--
-- /**
-- * MD2 HMac
-- */
-- public static class MD2
-- extends JCEMac
-- {
-- public MD2()
-- {
-- super(new HMac(new MD2Digest()));
-- }
-- }
--
-- /**
-- * MD4 HMac
-- */
-- public static class MD4
-- extends JCEMac
-- {
-- public MD4()
-- {
-- super(new HMac(new MD4Digest()));
-- }
-- }
-+ // BEGIN android-removed
-+ // /**
-+ // * DES
-+ // */
-+ // public static class DES
-+ // extends JCEMac
-+ // {
-+ // public DES()
-+ // {
-+ // super(new CBCBlockCipherMac(new DESEngine()));
-+ // }
-+ // }
-+ //
-+ // /**
-+ // * DES 64 bit MAC
-+ // */
-+ // public static class DES64
-+ // extends JCEMac
-+ // {
-+ // public DES64()
-+ // {
-+ // super(new CBCBlockCipherMac(new DESEngine(), 64));
-+ // }
-+ // }
-+ //
-+ // /**
-+ // * RC2
-+ // */
-+ // public static class RC2
-+ // extends JCEMac
-+ // {
-+ // public RC2()
-+ // {
-+ // super(new CBCBlockCipherMac(new RC2Engine()));
-+ // }
-+ // }
-+ //
-+ //
-+ //
-+ //
-+ // /**
-+ // * DES
-+ // */
-+ // public static class DESCFB8
-+ // extends JCEMac
-+ // {
-+ // public DESCFB8()
-+ // {
-+ // super(new CFBBlockCipherMac(new DESEngine()));
-+ // }
-+ // }
-+ //
-+ // /**
-+ // * RC2CFB8
-+ // */
-+ //
-+ //
-+ // /**
-+ // * DES9797Alg3with7816-4Padding
-+ // */
-+ // public static class DES9797Alg3with7816d4
-+ // extends JCEMac
-+ // {
-+ // public DES9797Alg3with7816d4()
-+ // {
-+ // super(new ISO9797Alg3Mac(new DESEngine(), new ISO7816d4Padding()));
-+ // }
-+ // }
-+ //
-+ // /**
-+ // * DES9797Alg3
-+ // */
-+ // public static class DES9797Alg3
-+ // extends JCEMac
-+ // {
-+ // public DES9797Alg3()
-+ // {
-+ // super(new ISO9797Alg3Mac(new DESEngine()));
-+ // }
-+ // }
-+ //
-+ // /**
-+ // * MD2 HMac
-+ // */
-+ // public static class MD2
-+ // extends JCEMac
-+ // {
-+ // public MD2()
-+ // {
-+ // super(new HMac(new MD2Digest()));
-+ // }
-+ // }
-+ //
-+ // /**
-+ // * MD4 HMac
-+ // */
-+ // public static class MD4
-+ // extends JCEMac
-+ // {
-+ // public MD4()
-+ // {
-+ // super(new HMac(new MD4Digest()));
-+ // }
-+ // }
-+ // END android-removed
-
- /**
- * MD5 HMac
-@@ -256,7 +269,9 @@
- {
- public MD5()
- {
-- super(new HMac(new MD5Digest()));
-+ // BEGIN android-changed
-+ super(new HMac(AndroidDigestFactory.getMD5()));
-+ // END android-changed
- }
- }
-
-@@ -268,21 +283,25 @@
- {
- public SHA1()
- {
-- super(new HMac(new SHA1Digest()));
-+ // BEGIN android-changed
-+ super(new HMac(AndroidDigestFactory.getSHA1()));
-+ // END android-changed
- }
- }
-
-- /**
-- * SHA-224 HMac
-- */
-- public static class SHA224
-- extends JCEMac
-- {
-- public SHA224()
-- {
-- super(new HMac(new SHA224Digest()));
-- }
-- }
-+ // BEGIN android-removed
-+ // /**
-+ // * SHA-224 HMac
-+ // */
-+ // public static class SHA224
-+ // extends JCEMac
-+ // {
-+ // public SHA224()
-+ // {
-+ // super(new HMac(new SHA224Digest()));
-+ // }
-+ // }
-+ // END android-removed
-
- /**
- * SHA-256 HMac
-@@ -292,7 +311,9 @@
- {
- public SHA256()
- {
-- super(new HMac(new SHA256Digest()));
-+ // BEGIN android-changed
-+ super(new HMac(AndroidDigestFactory.getSHA256()));
-+ // END android-changed
- }
- }
-
-@@ -304,18 +325,22 @@
- {
- public SHA384()
- {
-- super(new HMac(new SHA384Digest()));
-+ // BEGIN android-changed
-+ super(new HMac(AndroidDigestFactory.getSHA384()));
-+ // END android-changed
- }
- }
-
-- public static class OldSHA384
-- extends JCEMac
-- {
-- public OldSHA384()
-- {
-- super(new OldHMac(new SHA384Digest()));
-- }
-- }
-+ // BEGIN android-removed
-+ // public static class OldSHA384
-+ // extends JCEMac
-+ // {
-+ // public OldSHA384()
-+ // {
-+ // super(new OldHMac(new SHA384Digest()));
-+ // }
-+ // }
-+ // END android-removed
-
- /**
- * SHA-512 HMac
-@@ -325,75 +350,80 @@
- {
- public SHA512()
- {
-- super(new HMac(new SHA512Digest()));
-+ // BEGIN android-changed
-+ super(new HMac(AndroidDigestFactory.getSHA512()));
-+ // END android-changed
- }
- }
-
-- /**
-- * SHA-512 HMac
-- */
-- public static class OldSHA512
-- extends JCEMac
-- {
-- public OldSHA512()
-- {
-- super(new OldHMac(new SHA512Digest()));
-- }
-- }
-
-- /**
-- * RIPEMD128 HMac
-- */
-- public static class RIPEMD128
-- extends JCEMac
-- {
-- public RIPEMD128()
-- {
-- super(new HMac(new RIPEMD128Digest()));
-- }
-- }
--
-- /**
-- * RIPEMD160 HMac
-- */
-- public static class RIPEMD160
-- extends JCEMac
-- {
-- public RIPEMD160()
-- {
-- super(new HMac(new RIPEMD160Digest()));
-- }
-- }
--
-- /**
-- * Tiger HMac
-- */
-- public static class Tiger
-- extends JCEMac
-- {
-- public Tiger()
-- {
-- super(new HMac(new TigerDigest()));
-- }
-- }
--
-+ // BEGIN android-removed
-+ // /**
-+ // * SHA-512 HMac
-+ // */
-+ // public static class OldSHA512
-+ // extends JCEMac
-+ // {
-+ // public OldSHA512()
-+ // {
-+ // super(new OldHMac(new SHA512Digest()));
-+ // }
-+ // }
- //
-- // PKCS12 states that the same algorithm should be used
-- // for the key generation as is used in the HMAC, so that
-- // is what we do here.
-+ // /**
-+ // * RIPEMD128 HMac
-+ // */
-+ // public static class RIPEMD128
-+ // extends JCEMac
-+ // {
-+ // public RIPEMD128()
-+ // {
-+ // super(new HMac(new RIPEMD128Digest()));
-+ // }
-+ // }
- //
--
-- /**
-- * PBEWithHmacRIPEMD160
-- */
-- public static class PBEWithRIPEMD160
-- extends JCEMac
-- {
-- public PBEWithRIPEMD160()
-- {
-- super(new HMac(new RIPEMD160Digest()), PKCS12, RIPEMD160, 160);
-- }
-- }
-+ // /**
-+ // * RIPEMD160 HMac
-+ // */
-+ // public static class RIPEMD160
-+ // extends JCEMac
-+ // {
-+ // public RIPEMD160()
-+ // {
-+ // super(new HMac(new RIPEMD160Digest()));
-+ // }
-+ // }
-+ //
-+ // /**
-+ // * Tiger HMac
-+ // */
-+ // public static class Tiger
-+ // extends JCEMac
-+ // {
-+ // public Tiger()
-+ // {
-+ // super(new HMac(new TigerDigest()));
-+ // }
-+ // }
-+ //
-+ // //
-+ // // PKCS12 states that the same algorithm should be used
-+ // // for the key generation as is used in the HMAC, so that
-+ // // is what we do here.
-+ // //
-+ //
-+ // /**
-+ // * PBEWithHmacRIPEMD160
-+ // */
-+ // public static class PBEWithRIPEMD160
-+ // extends JCEMac
-+ // {
-+ // public PBEWithRIPEMD160()
-+ // {
-+ // super(new HMac(new RIPEMD160Digest()), PKCS12, RIPEMD160, 160);
-+ // }
-+ // }
-+ // END android-removed
-
- /**
- * PBEWithHmacSHA
-@@ -403,19 +433,23 @@
- {
- public PBEWithSHA()
- {
-- super(new HMac(new SHA1Digest()), PKCS12, SHA1, 160);
-+ // BEGIN android-changed
-+ super(new HMac(AndroidDigestFactory.getSHA1()), PKCS12, SHA1, 160);
-+ // END android-changed
- }
- }
-
-- /**
-- * PBEWithHmacTiger
-- */
-- public static class PBEWithTiger
-- extends JCEMac
-- {
-- public PBEWithTiger()
-- {
-- super(new HMac(new TigerDigest()), PKCS12, TIGER, 192);
-- }
-- }
-+ // BEGIN android-removed
-+ // /**
-+ // * PBEWithHmacTiger
-+ // */
-+ // public static class PBEWithTiger
-+ // extends JCEMac
-+ // {
-+ // public PBEWithTiger()
-+ // {
-+ // super(new HMac(new TigerDigest()), PKCS12, TIGER, 192);
-+ // }
-+ // }
-+ // END android-removed
- }
-diff -Naur bcprov-jdk15on-148.orig/org/bouncycastle/jce/provider/JCESecretKeyFactory.java bcprov-jdk15on-148/org/bouncycastle/jce/provider/JCESecretKeyFactory.java
---- bcprov-jdk15on-148.orig/org/bouncycastle/jce/provider/JCESecretKeyFactory.java 2013-02-10 00:37:58.000000000 +0000
-+++ bcprov-jdk15on-148/org/bouncycastle/jce/provider/JCESecretKeyFactory.java 2013-04-10 22:02:36.000000000 +0000
-@@ -252,29 +252,31 @@
- }
- }
-
-- /**
-- * PBEWithMD2AndDES
-- */
-- static public class PBEWithMD2AndDES
-- extends DESPBEKeyFactory
-- {
-- public PBEWithMD2AndDES()
-- {
-- super("PBEwithMD2andDES", PKCSObjectIdentifiers.pbeWithMD2AndDES_CBC, true, PKCS5S1, MD2, 64, 64);
-- }
-- }
--
-- /**
-- * PBEWithMD2AndRC2
-- */
-- static public class PBEWithMD2AndRC2
-- extends PBEKeyFactory
-- {
-- public PBEWithMD2AndRC2()
-- {
-- super("PBEwithMD2andRC2", PKCSObjectIdentifiers.pbeWithMD2AndRC2_CBC, true, PKCS5S1, MD2, 64, 64);
-- }
-- }
-+ // BEGIN android-removed
-+ // /**
-+ // * PBEWithMD2AndDES
-+ // */
-+ // static public class PBEWithMD2AndDES
-+ // extends DESPBEKeyFactory
-+ // {
-+ // public PBEWithMD2AndDES()
-+ // {
-+ // super("PBEwithMD2andDES", PKCSObjectIdentifiers.pbeWithMD2AndDES_CBC, true, PKCS5S1, MD2, 64, 64);
-+ // }
-+ // }
-+ //
-+ // /**
-+ // * PBEWithMD2AndRC2
-+ // */
-+ // static public class PBEWithMD2AndRC2
-+ // extends PBEKeyFactory
-+ // {
-+ // public PBEWithMD2AndRC2()
-+ // {
-+ // super("PBEwithMD2andRC2", PKCSObjectIdentifiers.pbeWithMD2AndRC2_CBC, true, PKCS5S1, MD2, 64, 64);
-+ // }
-+ // }
-+ // END android-removed
-
- /**
- * PBEWithMD5AndDES
-@@ -408,17 +410,19 @@
- }
- }
-
-- /**
-- * PBEWithHmacRIPEMD160
-- */
-- public static class PBEWithRIPEMD160
-- extends PBEKeyFactory
-- {
-- public PBEWithRIPEMD160()
-- {
-- super("PBEwithHmacRIPEMD160", null, false, PKCS12, RIPEMD160, 160, 0);
-- }
-- }
-+ // BEGIN android-removed
-+ // /**
-+ // * PBEWithHmacRIPEMD160
-+ // */
-+ // public static class PBEWithRIPEMD160
-+ // extends PBEKeyFactory
-+ // {
-+ // public PBEWithRIPEMD160()
-+ // {
-+ // super("PBEwithHmacRIPEMD160", null, false, PKCS12, RIPEMD160, 160, 0);
-+ // }
-+ // }
-+ // END android-removed
-
- /**
- * PBEWithHmacSHA
-@@ -432,17 +436,19 @@
- }
- }
-
-- /**
-- * PBEWithHmacTiger
-- */
-- public static class PBEWithTiger
-- extends PBEKeyFactory
-- {
-- public PBEWithTiger()
-- {
-- super("PBEwithHmacTiger", null, false, PKCS12, TIGER, 192, 0);
-- }
-- }
-+ // BEGIN android-removed
-+ // /**
-+ // * PBEWithHmacTiger
-+ // */
-+ // public static class PBEWithTiger
-+ // extends PBEKeyFactory
-+ // {
-+ // public PBEWithTiger()
-+ // {
-+ // super("PBEwithHmacTiger", null, false, PKCS12, TIGER, 192, 0);
-+ // }
-+ // }
-+ // END android-removed
-
- /**
- * PBEWithSHA1And128BitAES-BC
-@@ -551,4 +557,79 @@
- super("PBEWithMD5And256BitAES-CBC-OpenSSL", null, true, OPENSSL, MD5, 256, 128);
- }
- }
-+ // BEGIN android-added
-+ static public class PBKDF2WithHmacSHA1Base
-+ extends JCESecretKeyFactory
-+ {
-+ int mScheme;
-+
-+ protected PBKDF2WithHmacSHA1Base(
-+ String algName,
-+ int scheme)
-+ {
-+ super(algName, PKCSObjectIdentifiers.id_PBKDF2);
-+ this.mScheme = scheme;
-+ }
-+
-+ protected SecretKey engineGenerateSecret(
-+ KeySpec keySpec)
-+ throws InvalidKeySpecException
-+ {
-+ if (keySpec instanceof PBEKeySpec)
-+ {
-+ PBEKeySpec pbeSpec = (PBEKeySpec)keySpec;
-+
-+ if (pbeSpec.getSalt() == null)
-+ {
-+ throw new InvalidKeySpecException("missing required salt");
-+ }
-+
-+ if (pbeSpec.getIterationCount() <= 0)
-+ {
-+ throw new InvalidKeySpecException("positive iteration count required: "
-+ + pbeSpec.getIterationCount());
-+ }
-+
-+ if (pbeSpec.getKeyLength() <= 0)
-+ {
-+ throw new InvalidKeySpecException("positive key length required: "
-+ + pbeSpec.getKeyLength());
-+ }
-+
-+ if (pbeSpec.getPassword().length == 0)
-+ {
-+ throw new IllegalArgumentException("password empty");
-+ }
-+
-+ int digest = SHA1;
-+ int keySize = pbeSpec.getKeyLength();
-+ int ivSize = -1;
-+
-+ CipherParameters param = Util.makePBEMacParameters(pbeSpec, mScheme, digest, keySize);
-+
-+ return new BCPBEKey(this.algName, this.algOid, mScheme, digest, keySize, ivSize, pbeSpec, param);
-+ }
-+
-+ throw new InvalidKeySpecException("Invalid KeySpec");
-+ }
-+ }
-+
-+ static public class PBKDF2WithHmacSHA1
-+ extends PBKDF2WithHmacSHA1Base
-+ {
-+ public PBKDF2WithHmacSHA1()
-+ {
-+ super("PBKDF2WithHmacSHA1", PBKDF2);
-+ }
-+ }
-+
-+ static public class BrokenPBKDF2WithHmacSHA1
-+ extends PBKDF2WithHmacSHA1Base
-+ {
-+ public BrokenPBKDF2WithHmacSHA1()
-+ {
-+ super("BrokenPBKDF2WithHmacSHA1", PKCS5S2);
-+ }
-+ }
-+ // END android-added
- }
-diff -Naur bcprov-jdk15on-148.orig/org/bouncycastle/jce/provider/JCEStreamCipher.java bcprov-jdk15on-148/org/bouncycastle/jce/provider/JCEStreamCipher.java
---- bcprov-jdk15on-148.orig/org/bouncycastle/jce/provider/JCEStreamCipher.java 2013-02-10 00:37:58.000000000 +0000
-+++ bcprov-jdk15on-148/org/bouncycastle/jce/provider/JCEStreamCipher.java 2013-01-29 02:13:59.000000000 +0000
+diff -Naur bcprov-jdk15on-149.orig/org/bouncycastle/jce/provider/JCEStreamCipher.java bcprov-jdk15on-149/org/bouncycastle/jce/provider/JCEStreamCipher.java
+--- bcprov-jdk15on-149.orig/org/bouncycastle/jce/provider/JCEStreamCipher.java 2013-05-31 21:16:46.000000000 +0000
++++ bcprov-jdk15on-149/org/bouncycastle/jce/provider/JCEStreamCipher.java 2013-05-25 02:14:15.000000000 +0000
@@ -23,8 +23,10 @@
import javax.crypto.ShortBufferException;
import javax.crypto.spec.IvParameterSpec;
@@ -8290,7 +7545,7 @@ diff -Naur bcprov-jdk15on-148.orig/org/bouncycastle/jce/provider/JCEStreamCipher
IvParameterSpec.class,
PBEParameterSpec.class
};
-@@ -491,125 +499,127 @@
+@@ -491,123 +499,125 @@
* The ciphers that inherit from us.
*/
@@ -8534,394 +7789,10 @@ diff -Naur bcprov-jdk15on-148.orig/org/bouncycastle/jce/provider/JCEStreamCipher
+ // }
+ // }
+ // END android-removed
-
- /**
- * PBEWithSHAAnd128BitRC4
-diff -Naur bcprov-jdk15on-148.orig/org/bouncycastle/jce/provider/JDKAlgorithmParameters.java bcprov-jdk15on-148/org/bouncycastle/jce/provider/JDKAlgorithmParameters.java
---- bcprov-jdk15on-148.orig/org/bouncycastle/jce/provider/JDKAlgorithmParameters.java 2013-02-10 00:37:58.000000000 +0000
-+++ bcprov-jdk15on-148/org/bouncycastle/jce/provider/JDKAlgorithmParameters.java 2012-09-17 23:04:47.000000000 +0000
-@@ -17,7 +17,9 @@
- import org.bouncycastle.asn1.DERSequence;
- import org.bouncycastle.asn1.pkcs.PBKDF2Params;
- import org.bouncycastle.asn1.pkcs.PKCS12PBEParams;
--import org.bouncycastle.jce.spec.IESParameterSpec;
-+// BEGIN android-removed
-+// import org.bouncycastle.jce.spec.IESParameterSpec;
-+// END android-removed
-
- public abstract class JDKAlgorithmParameters
- extends AlgorithmParametersSpi
-@@ -208,109 +210,111 @@
- }
- }
-
-- public static class IES
-- extends JDKAlgorithmParameters
-- {
-- IESParameterSpec currentSpec;
--
-- /**
-- * in the absence of a standard way of doing it this will do for
-- * now...
-- */
-- protected byte[] engineGetEncoded()
-- {
-- try
-- {
-- ASN1EncodableVector v = new ASN1EncodableVector();
--
-- v.add(new DEROctetString(currentSpec.getDerivationV()));
-- v.add(new DEROctetString(currentSpec.getEncodingV()));
-- v.add(new DERInteger(currentSpec.getMacKeySize()));
--
-- return new DERSequence(v).getEncoded(ASN1Encoding.DER);
-- }
-- catch (IOException e)
-- {
-- throw new RuntimeException("Error encoding IESParameters");
-- }
-- }
--
-- protected byte[] engineGetEncoded(
-- String format)
-- {
-- if (isASN1FormatString(format) || format.equalsIgnoreCase("X.509"))
-- {
-- return engineGetEncoded();
-- }
--
-- return null;
-- }
--
-- protected AlgorithmParameterSpec localEngineGetParameterSpec(
-- Class paramSpec)
-- throws InvalidParameterSpecException
-- {
-- if (paramSpec == IESParameterSpec.class)
-- {
-- return currentSpec;
-- }
--
-- throw new InvalidParameterSpecException("unknown parameter spec passed to ElGamal parameters object.");
-- }
--
-- protected void engineInit(
-- AlgorithmParameterSpec paramSpec)
-- throws InvalidParameterSpecException
-- {
-- if (!(paramSpec instanceof IESParameterSpec))
-- {
-- throw new InvalidParameterSpecException("IESParameterSpec required to initialise a IES algorithm parameters object");
-- }
--
-- this.currentSpec = (IESParameterSpec)paramSpec;
-- }
--
-- protected void engineInit(
-- byte[] params)
-- throws IOException
-- {
-- try
-- {
-- ASN1Sequence s = (ASN1Sequence)ASN1Primitive.fromByteArray(params);
--
-- this.currentSpec = new IESParameterSpec(
-- ((ASN1OctetString)s.getObjectAt(0)).getOctets(),
-- ((ASN1OctetString)s.getObjectAt(0)).getOctets(),
-- ((DERInteger)s.getObjectAt(0)).getValue().intValue());
-- }
-- catch (ClassCastException e)
-- {
-- throw new IOException("Not a valid IES Parameter encoding.");
-- }
-- catch (ArrayIndexOutOfBoundsException e)
-- {
-- throw new IOException("Not a valid IES Parameter encoding.");
-- }
-- }
--
-- protected void engineInit(
-- byte[] params,
-- String format)
-- throws IOException
-- {
-- if (isASN1FormatString(format) || format.equalsIgnoreCase("X.509"))
-- {
-- engineInit(params);
-- }
-- else
-- {
-- throw new IOException("Unknown parameter format " + format);
-- }
-- }
--
-- protected String engineToString()
-- {
-- return "IES Parameters";
-- }
-- }
-+ // BEGIN android-removed
-+ // public static class IES
-+ // extends JDKAlgorithmParameters
-+ // {
-+ // IESParameterSpec currentSpec;
-+ //
-+ // /**
-+ // * in the absence of a standard way of doing it this will do for
-+ // * now...
-+ // */
-+ // protected byte[] engineGetEncoded()
-+ // {
-+ // try
-+ // {
-+ // ASN1EncodableVector v = new ASN1EncodableVector();
-+ //
-+ // v.add(new DEROctetString(currentSpec.getDerivationV()));
-+ // v.add(new DEROctetString(currentSpec.getEncodingV()));
-+ // v.add(new DERInteger(currentSpec.getMacKeySize()));
-+ //
-+ // return new DERSequence(v).getEncoded(ASN1Encoding.DER);
-+ // }
-+ // catch (IOException e)
-+ // {
-+ // throw new RuntimeException("Error encoding IESParameters");
-+ // }
-+ // }
-+ //
-+ // protected byte[] engineGetEncoded(
-+ // String format)
-+ // {
-+ // if (isASN1FormatString(format) || format.equalsIgnoreCase("X.509"))
-+ // {
-+ // return engineGetEncoded();
-+ // }
-+ //
-+ // return null;
-+ // }
-+ //
-+ // protected AlgorithmParameterSpec localEngineGetParameterSpec(
-+ // Class paramSpec)
-+ // throws InvalidParameterSpecException
-+ // {
-+ // if (paramSpec == IESParameterSpec.class)
-+ // {
-+ // return currentSpec;
-+ // }
-+ //
-+ // throw new InvalidParameterSpecException("unknown parameter spec passed to ElGamal parameters object.");
-+ // }
-+ //
-+ // protected void engineInit(
-+ // AlgorithmParameterSpec paramSpec)
-+ // throws InvalidParameterSpecException
-+ // {
-+ // if (!(paramSpec instanceof IESParameterSpec))
-+ // {
-+ // throw new InvalidParameterSpecException("IESParameterSpec required to initialise a IES algorithm parameters object");
-+ // }
-+ //
-+ // this.currentSpec = (IESParameterSpec)paramSpec;
-+ // }
-+ //
-+ // protected void engineInit(
-+ // byte[] params)
-+ // throws IOException
-+ // {
-+ // try
-+ // {
-+ // ASN1Sequence s = (ASN1Sequence)ASN1Primitive.fromByteArray(params);
-+ //
-+ // this.currentSpec = new IESParameterSpec(
-+ // ((ASN1OctetString)s.getObjectAt(0)).getOctets(),
-+ // ((ASN1OctetString)s.getObjectAt(0)).getOctets(),
-+ // ((DERInteger)s.getObjectAt(0)).getValue().intValue());
-+ // }
-+ // catch (ClassCastException e)
-+ // {
-+ // throw new IOException("Not a valid IES Parameter encoding.");
-+ // }
-+ // catch (ArrayIndexOutOfBoundsException e)
-+ // {
-+ // throw new IOException("Not a valid IES Parameter encoding.");
-+ // }
-+ // }
-+ //
-+ // protected void engineInit(
-+ // byte[] params,
-+ // String format)
-+ // throws IOException
-+ // {
-+ // if (isASN1FormatString(format) || format.equalsIgnoreCase("X.509"))
-+ // {
-+ // engineInit(params);
-+ // }
-+ // else
-+ // {
-+ // throw new IOException("Unknown parameter format " + format);
-+ // }
-+ // }
-+ //
-+ // protected String engineToString()
-+ // {
-+ // return "IES Parameters";
-+ // }
-+ // }
-+ // END android-removed
}
-diff -Naur bcprov-jdk15on-148.orig/org/bouncycastle/jce/provider/JDKKeyStore.java bcprov-jdk15on-148/org/bouncycastle/jce/provider/JDKKeyStore.java
---- bcprov-jdk15on-148.orig/org/bouncycastle/jce/provider/JDKKeyStore.java 2013-02-10 00:37:58.000000000 +0000
-+++ bcprov-jdk15on-148/org/bouncycastle/jce/provider/JDKKeyStore.java 2012-09-17 23:04:47.000000000 +0000
-@@ -39,7 +39,12 @@
- import org.bouncycastle.crypto.CipherParameters;
- import org.bouncycastle.crypto.Digest;
- import org.bouncycastle.crypto.PBEParametersGenerator;
--import org.bouncycastle.crypto.digests.SHA1Digest;
-+// BEGIN android-added
-+import org.bouncycastle.crypto.digests.AndroidDigestFactory;
-+// END android-added
-+// BEGIN android-removed
-+// import org.bouncycastle.crypto.digests.SHA1Digest;
-+// END android-removed
- import org.bouncycastle.crypto.generators.PKCS12ParametersGenerator;
- import org.bouncycastle.crypto.io.DigestInputStream;
- import org.bouncycastle.crypto.io.DigestOutputStream;
-@@ -498,7 +503,13 @@
-
- if (entry == null)
- {
-- throw new KeyStoreException("no such entry as " + alias);
-+ // BEGIN android-removed
-+ // Only throw if there is a problem removing, not if missing
-+ // throw new KeyStoreException("no such entry as " + alias);
-+ // END android-removed
-+ // BEGIN android-added
-+ return;
-+ // END android-added
- }
-
- table.remove(alias);
-@@ -817,12 +828,16 @@
- //
- // we only do an integrity check if the password is provided.
- //
-- HMac hMac = new HMac(new SHA1Digest());
-+ // BEGIN android-changed
-+ HMac hMac = new HMac(AndroidDigestFactory.getSHA1());
-+ // END android-changed
- if (password != null && password.length != 0)
- {
- byte[] passKey = PBEParametersGenerator.PKCS12PasswordToBytes(password);
-
-- PBEParametersGenerator pbeGen = new PKCS12ParametersGenerator(new SHA1Digest());
-+ // BEGIN android-changed
-+ PBEParametersGenerator pbeGen = new PKCS12ParametersGenerator(AndroidDigestFactory.getSHA1());
-+ // END android-changed
- pbeGen.init(passKey, salt, iterationCount);
-
- CipherParameters macParams;
-@@ -884,9 +899,11 @@
- dOut.write(salt);
- dOut.writeInt(iterationCount);
-
-- HMac hMac = new HMac(new SHA1Digest());
-+ // BEGIN android-changed
-+ HMac hMac = new HMac(AndroidDigestFactory.getSHA1());
- MacOutputStream mOut = new MacOutputStream(hMac);
-- PBEParametersGenerator pbeGen = new PKCS12ParametersGenerator(new SHA1Digest());
-+ PBEParametersGenerator pbeGen = new PKCS12ParametersGenerator(AndroidDigestFactory.getSHA1());
-+ // END android-changed
- byte[] passKey = PBEParametersGenerator.PKCS12PasswordToBytes(password);
-
- pbeGen.init(passKey, salt, iterationCount);
-@@ -974,7 +991,9 @@
- Cipher cipher = this.makePBECipher(cipherAlg, Cipher.DECRYPT_MODE, password, salt, iterationCount);
- CipherInputStream cIn = new CipherInputStream(dIn, cipher);
-
-- Digest dig = new SHA1Digest();
-+ // BEGIN android-changed
-+ Digest dig = AndroidDigestFactory.getSHA1();
-+ // END android-changed
- DigestInputStream dgIn = new DigestInputStream(cIn, dig);
-
- this.loadStore(dgIn);
-@@ -1013,7 +1032,9 @@
- cipher = this.makePBECipher(STORE_CIPHER, Cipher.ENCRYPT_MODE, password, salt, iterationCount);
-
- CipherOutputStream cOut = new CipherOutputStream(dOut, cipher);
-- DigestOutputStream dgOut = new DigestOutputStream(new SHA1Digest());
-+ // BEGIN android-changed
-+ DigestOutputStream dgOut = new DigestOutputStream(AndroidDigestFactory.getSHA1());
-+ // END android-changed
-
- this.saveStore(new TeeOutputStream(cOut, dgOut));
-
-diff -Naur bcprov-jdk15on-148.orig/org/bouncycastle/jce/provider/JDKPKCS12KeyStore.java bcprov-jdk15on-148/org/bouncycastle/jce/provider/JDKPKCS12KeyStore.java
---- bcprov-jdk15on-148.orig/org/bouncycastle/jce/provider/JDKPKCS12KeyStore.java 2013-02-10 00:37:58.000000000 +0000
-+++ bcprov-jdk15on-148/org/bouncycastle/jce/provider/JDKPKCS12KeyStore.java 2013-01-31 02:26:40.000000000 +0000
-@@ -1557,32 +1557,34 @@
- }
- }
-
-- public static class BCPKCS12KeyStore3DES
-- extends JDKPKCS12KeyStore
-- {
-- public BCPKCS12KeyStore3DES()
-- {
-- super(bcProvider, pbeWithSHAAnd3_KeyTripleDES_CBC, pbeWithSHAAnd3_KeyTripleDES_CBC);
-- }
-- }
--
-- public static class DefPKCS12KeyStore
-- extends JDKPKCS12KeyStore
-- {
-- public DefPKCS12KeyStore()
-- {
-- super(null, pbeWithSHAAnd3_KeyTripleDES_CBC, pbeWithSHAAnd40BitRC2_CBC);
-- }
-- }
--
-- public static class DefPKCS12KeyStore3DES
-- extends JDKPKCS12KeyStore
-- {
-- public DefPKCS12KeyStore3DES()
-- {
-- super(null, pbeWithSHAAnd3_KeyTripleDES_CBC, pbeWithSHAAnd3_KeyTripleDES_CBC);
-- }
-- }
-+ // BEGIN android-removed
-+ // public static class BCPKCS12KeyStore3DES
-+ // extends JDKPKCS12KeyStore
-+ // {
-+ // public BCPKCS12KeyStore3DES()
-+ // {
-+ // super(bcProvider, pbeWithSHAAnd3_KeyTripleDES_CBC, pbeWithSHAAnd3_KeyTripleDES_CBC);
-+ // }
-+ // }
-+ //
-+ // public static class DefPKCS12KeyStore
-+ // extends JDKPKCS12KeyStore
-+ // {
-+ // public DefPKCS12KeyStore()
-+ // {
-+ // super(null, pbeWithSHAAnd3_KeyTripleDES_CBC, pbeWithSHAAnd40BitRC2_CBC);
-+ // }
-+ // }
-+ //
-+ // public static class DefPKCS12KeyStore3DES
-+ // extends JDKPKCS12KeyStore
-+ // {
-+ // public DefPKCS12KeyStore3DES()
-+ // {
-+ // super(null, pbeWithSHAAnd3_KeyTripleDES_CBC, pbeWithSHAAnd3_KeyTripleDES_CBC);
-+ // }
-+ // }
-+ // END android-removed
-
- private static class IgnoresCaseHashtable
- {
-diff -Naur bcprov-jdk15on-148.orig/org/bouncycastle/jce/provider/PKIXCertPathValidatorSpi.java bcprov-jdk15on-148/org/bouncycastle/jce/provider/PKIXCertPathValidatorSpi.java
---- bcprov-jdk15on-148.orig/org/bouncycastle/jce/provider/PKIXCertPathValidatorSpi.java 2013-02-10 00:37:58.000000000 +0000
-+++ bcprov-jdk15on-148/org/bouncycastle/jce/provider/PKIXCertPathValidatorSpi.java 2012-09-17 23:04:47.000000000 +0000
+diff -Naur bcprov-jdk15on-149.orig/org/bouncycastle/jce/provider/PKIXCertPathValidatorSpi.java bcprov-jdk15on-149/org/bouncycastle/jce/provider/PKIXCertPathValidatorSpi.java
+--- bcprov-jdk15on-149.orig/org/bouncycastle/jce/provider/PKIXCertPathValidatorSpi.java 2013-05-31 21:16:46.000000000 +0000
++++ bcprov-jdk15on-149/org/bouncycastle/jce/provider/PKIXCertPathValidatorSpi.java 2012-09-17 23:04:47.000000000 +0000
@@ -1,5 +1,8 @@
package org.bouncycastle.jce.provider;
@@ -8980,9 +7851,9 @@ diff -Naur bcprov-jdk15on-148.orig/org/bouncycastle/jce/provider/PKIXCertPathVal
// try
// {
//
-diff -Naur bcprov-jdk15on-148.orig/org/bouncycastle/jce/provider/X509CertificateObject.java bcprov-jdk15on-148/org/bouncycastle/jce/provider/X509CertificateObject.java
---- bcprov-jdk15on-148.orig/org/bouncycastle/jce/provider/X509CertificateObject.java 2013-02-10 00:37:58.000000000 +0000
-+++ bcprov-jdk15on-148/org/bouncycastle/jce/provider/X509CertificateObject.java 2013-01-31 02:26:40.000000000 +0000
+diff -Naur bcprov-jdk15on-149.orig/org/bouncycastle/jce/provider/X509CertificateObject.java bcprov-jdk15on-149/org/bouncycastle/jce/provider/X509CertificateObject.java
+--- bcprov-jdk15on-149.orig/org/bouncycastle/jce/provider/X509CertificateObject.java 2013-05-31 21:16:46.000000000 +0000
++++ bcprov-jdk15on-149/org/bouncycastle/jce/provider/X509CertificateObject.java 2013-01-31 02:26:40.000000000 +0000
@@ -57,6 +57,9 @@
import org.bouncycastle.asn1.x509.Extensions;
import org.bouncycastle.asn1.x509.GeneralName;
@@ -9026,9 +7897,9 @@ diff -Naur bcprov-jdk15on-148.orig/org/bouncycastle/jce/provider/X509Certificate
break;
case GeneralName.dNSName:
case GeneralName.rfc822Name:
-diff -Naur bcprov-jdk15on-148.orig/org/bouncycastle/jce/provider/X509SignatureUtil.java bcprov-jdk15on-148/org/bouncycastle/jce/provider/X509SignatureUtil.java
---- bcprov-jdk15on-148.orig/org/bouncycastle/jce/provider/X509SignatureUtil.java 2013-02-10 00:37:58.000000000 +0000
-+++ bcprov-jdk15on-148/org/bouncycastle/jce/provider/X509SignatureUtil.java 2013-01-31 02:26:40.000000000 +0000
+diff -Naur bcprov-jdk15on-149.orig/org/bouncycastle/jce/provider/X509SignatureUtil.java bcprov-jdk15on-149/org/bouncycastle/jce/provider/X509SignatureUtil.java
+--- bcprov-jdk15on-149.orig/org/bouncycastle/jce/provider/X509SignatureUtil.java 2013-05-31 21:16:46.000000000 +0000
++++ bcprov-jdk15on-149/org/bouncycastle/jce/provider/X509SignatureUtil.java 2013-01-31 02:26:40.000000000 +0000
@@ -14,7 +14,9 @@
import org.bouncycastle.asn1.ASN1Sequence;
import org.bouncycastle.asn1.DERNull;
@@ -9119,9 +7990,9 @@ diff -Naur bcprov-jdk15on-148.orig/org/bouncycastle/jce/provider/X509SignatureUt
else
{
return digestAlgOID.getId();
-diff -Naur bcprov-jdk15on-148.orig/org/bouncycastle/x509/X509Util.java bcprov-jdk15on-148/org/bouncycastle/x509/X509Util.java
---- bcprov-jdk15on-148.orig/org/bouncycastle/x509/X509Util.java 2013-02-10 00:37:58.000000000 +0000
-+++ bcprov-jdk15on-148/org/bouncycastle/x509/X509Util.java 2013-01-31 02:26:40.000000000 +0000
+diff -Naur bcprov-jdk15on-149.orig/org/bouncycastle/x509/X509Util.java bcprov-jdk15on-149/org/bouncycastle/x509/X509Util.java
+--- bcprov-jdk15on-149.orig/org/bouncycastle/x509/X509Util.java 2013-05-31 21:16:46.000000000 +0000
++++ bcprov-jdk15on-149/org/bouncycastle/x509/X509Util.java 2013-01-31 02:26:40.000000000 +0000
@@ -25,12 +25,16 @@
import org.bouncycastle.asn1.ASN1Integer;
import org.bouncycastle.asn1.DERNull;