diff options
author | Brian Carlstrom <bdc@google.com> | 2013-05-24 19:14:15 -0700 |
---|---|---|
committer | Brian Carlstrom <bdc@google.com> | 2013-06-03 14:01:40 -0700 |
commit | a198e1ecc615e26a167d0f2dca9fa7e5fc62de10 (patch) | |
tree | 6ac741d0b1ccd61f033299754a0b9a3a54985e18 /patches | |
parent | 67e643cbf3cff776bf1a8fe1ea50a14ccf2d41e4 (diff) | |
download | android_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.patch | 1051 | ||||
-rw-r--r-- | patches/bcprov.patch | 5107 |
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; |