Remove RC5 references from bouncycastle

The RI doesn't include RC5 and we didn't either in the provider
definition, but I noticed we still had a few implementation support
classes so remove these unneeded files.

Also cleaned up a few RC2 mentions that are unneeded.
RC2 implementation does remain for PKCS12 support.

Change-Id: I4ef304e11a0cba677b3977c54a2afb2330ca5565
diff --git a/bouncycastle.config b/bouncycastle.config
index 5919ce5..729ebf7 100644
--- a/bouncycastle.config
+++ b/bouncycastle.config
@@ -207,6 +207,8 @@
 org/bouncycastle/crypto/engines/NoekeonEngine.java \
 org/bouncycastle/crypto/engines/NullEngine.java \
 org/bouncycastle/crypto/engines/RC2WrapEngine.java \
+org/bouncycastle/crypto/engines/RC532Engine.java \
+org/bouncycastle/crypto/engines/RC564Engine.java \
 org/bouncycastle/crypto/engines/RC6Engine.java \
 org/bouncycastle/crypto/engines/RFC3211WrapEngine.java \
 org/bouncycastle/crypto/engines/RSABlindingEngine.java \
@@ -282,6 +284,7 @@
 org/bouncycastle/crypto/params/NaccacheSternPrivateKeyParameters.java \
 org/bouncycastle/crypto/params/ParametersWithSBox.java \
 org/bouncycastle/crypto/params/ParametersWithSalt.java \
+org/bouncycastle/crypto/params/RC5Parameters.java \
 org/bouncycastle/crypto/params/RSABlindingParameters.java \
 org/bouncycastle/crypto/params/package.html \
 org/bouncycastle/crypto/signers/DSADigestSigner.java \
diff --git a/patches/README b/patches/README
index f4aa90e..48cda19 100644
--- a/patches/README
+++ b/patches/README
@@ -8,7 +8,6 @@
 up-do-date documentation of differences between the RI's list of
 supported algorithms and Android's. Some notable omissions versus the
 RI:
-- Blowfish
 - LDAP
 - MD2
 - RC2
diff --git a/patches/android.patch b/patches/android.patch
index 5eaccfe..80cb496 100644
--- a/patches/android.patch
+++ b/patches/android.patch
@@ -1,6 +1,6 @@
 diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/asn1/ASN1Collection.java bcprov-jdk16-145/org/bouncycastle/asn1/ASN1Collection.java
 --- bcprov-jdk16-145.orig/org/bouncycastle/asn1/ASN1Collection.java	1970-01-01 00:00:00.000000000 +0000
-+++ bcprov-jdk16-145/org/bouncycastle/asn1/ASN1Collection.java	2010-08-24 15:16:00.000000000 +0000
++++ bcprov-jdk16-145/org/bouncycastle/asn1/ASN1Collection.java	2010-08-25 15:47:14.000000000 +0000
 @@ -0,0 +1,298 @@
 +package org.bouncycastle.asn1;
 +
@@ -302,7 +302,7 @@
 +}
 diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/asn1/ASN1InputStream.java bcprov-jdk16-145/org/bouncycastle/asn1/ASN1InputStream.java
 --- bcprov-jdk16-145.orig/org/bouncycastle/asn1/ASN1InputStream.java	2010-01-11 21:46:14.000000000 +0000
-+++ bcprov-jdk16-145/org/bouncycastle/asn1/ASN1InputStream.java	2010-08-24 15:16:00.000000000 +0000
++++ bcprov-jdk16-145/org/bouncycastle/asn1/ASN1InputStream.java	2010-08-25 15:47:14.000000000 +0000
 @@ -348,7 +348,9 @@
              case BMP_STRING:
                  return new DERBMPString(bytes);
@@ -316,7 +316,7 @@
              case GENERALIZED_TIME:
 diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/asn1/ASN1Null.java bcprov-jdk16-145/org/bouncycastle/asn1/ASN1Null.java
 --- bcprov-jdk16-145.orig/org/bouncycastle/asn1/ASN1Null.java	2010-01-11 21:46:14.000000000 +0000
-+++ bcprov-jdk16-145/org/bouncycastle/asn1/ASN1Null.java	2010-08-24 15:16:00.000000000 +0000
++++ bcprov-jdk16-145/org/bouncycastle/asn1/ASN1Null.java	2010-08-25 15:47:14.000000000 +0000
 @@ -8,9 +8,11 @@
  public abstract class ASN1Null
      extends ASN1Object
@@ -332,7 +332,7 @@
      {
 diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/asn1/ASN1Sequence.java bcprov-jdk16-145/org/bouncycastle/asn1/ASN1Sequence.java
 --- bcprov-jdk16-145.orig/org/bouncycastle/asn1/ASN1Sequence.java	2010-01-11 21:46:14.000000000 +0000
-+++ bcprov-jdk16-145/org/bouncycastle/asn1/ASN1Sequence.java	2010-08-24 15:16:00.000000000 +0000
++++ bcprov-jdk16-145/org/bouncycastle/asn1/ASN1Sequence.java	2010-08-25 15:47:14.000000000 +0000
 @@ -2,12 +2,20 @@
  
  import java.io.IOException;
@@ -496,7 +496,7 @@
  }
 diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/asn1/ASN1Set.java bcprov-jdk16-145/org/bouncycastle/asn1/ASN1Set.java
 --- bcprov-jdk16-145.orig/org/bouncycastle/asn1/ASN1Set.java	2010-01-11 21:46:14.000000000 +0000
-+++ bcprov-jdk16-145/org/bouncycastle/asn1/ASN1Set.java	2010-08-24 15:16:00.000000000 +0000
++++ bcprov-jdk16-145/org/bouncycastle/asn1/ASN1Set.java	2010-08-25 15:47:14.000000000 +0000
 @@ -3,12 +3,20 @@
  import java.io.ByteArrayOutputStream;
  import java.io.IOException;
@@ -845,7 +845,7 @@
  }
 diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/asn1/DERBoolean.java bcprov-jdk16-145/org/bouncycastle/asn1/DERBoolean.java
 --- bcprov-jdk16-145.orig/org/bouncycastle/asn1/DERBoolean.java	2010-01-11 21:46:14.000000000 +0000
-+++ bcprov-jdk16-145/org/bouncycastle/asn1/DERBoolean.java	2010-08-24 15:16:00.000000000 +0000
++++ bcprov-jdk16-145/org/bouncycastle/asn1/DERBoolean.java	2010-08-25 15:47:14.000000000 +0000
 @@ -5,7 +5,9 @@
  public class DERBoolean
      extends ASN1Object
@@ -918,7 +918,7 @@
      {
 diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/asn1/DERInputStream.java bcprov-jdk16-145/org/bouncycastle/asn1/DERInputStream.java
 --- bcprov-jdk16-145.orig/org/bouncycastle/asn1/DERInputStream.java	2010-01-11 21:46:14.000000000 +0000
-+++ bcprov-jdk16-145/org/bouncycastle/asn1/DERInputStream.java	2010-08-24 15:16:00.000000000 +0000
++++ bcprov-jdk16-145/org/bouncycastle/asn1/DERInputStream.java	2010-08-25 15:47:14.000000000 +0000
 @@ -144,7 +144,9 @@
                  return new DERConstructedSet(v);
              }
@@ -943,7 +943,7 @@
                      {
 diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/asn1/DERNull.java bcprov-jdk16-145/org/bouncycastle/asn1/DERNull.java
 --- bcprov-jdk16-145.orig/org/bouncycastle/asn1/DERNull.java	2010-01-11 21:46:14.000000000 +0000
-+++ bcprov-jdk16-145/org/bouncycastle/asn1/DERNull.java	2010-08-24 15:16:00.000000000 +0000
++++ bcprov-jdk16-145/org/bouncycastle/asn1/DERNull.java	2010-08-25 15:47:14.000000000 +0000
 @@ -10,9 +10,13 @@
  {
      public static final DERNull INSTANCE = new DERNull();
@@ -962,7 +962,7 @@
  
 diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/asn1/DERObjectIdentifier.java bcprov-jdk16-145/org/bouncycastle/asn1/DERObjectIdentifier.java
 --- bcprov-jdk16-145.orig/org/bouncycastle/asn1/DERObjectIdentifier.java	2010-01-11 21:46:14.000000000 +0000
-+++ bcprov-jdk16-145/org/bouncycastle/asn1/DERObjectIdentifier.java	2010-08-24 15:16:00.000000000 +0000
++++ bcprov-jdk16-145/org/bouncycastle/asn1/DERObjectIdentifier.java	2010-08-25 15:47:14.000000000 +0000
 @@ -111,7 +111,13 @@
              }
          }
@@ -995,7 +995,7 @@
      public String getId()
 diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/asn1/DERPrintableString.java bcprov-jdk16-145/org/bouncycastle/asn1/DERPrintableString.java
 --- bcprov-jdk16-145.orig/org/bouncycastle/asn1/DERPrintableString.java	2010-01-11 21:46:14.000000000 +0000
-+++ bcprov-jdk16-145/org/bouncycastle/asn1/DERPrintableString.java	2010-08-24 15:16:00.000000000 +0000
++++ bcprov-jdk16-145/org/bouncycastle/asn1/DERPrintableString.java	2010-08-25 15:47:14.000000000 +0000
 @@ -9,7 +9,9 @@
      extends ASN1Object
      implements DERString
@@ -1031,7 +1031,7 @@
      public String getString()
 diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/asn1/OrderedTable.java bcprov-jdk16-145/org/bouncycastle/asn1/OrderedTable.java
 --- bcprov-jdk16-145.orig/org/bouncycastle/asn1/OrderedTable.java	1970-01-01 00:00:00.000000000 +0000
-+++ bcprov-jdk16-145/org/bouncycastle/asn1/OrderedTable.java	2010-08-24 15:16:00.000000000 +0000
++++ bcprov-jdk16-145/org/bouncycastle/asn1/OrderedTable.java	2010-08-25 15:47:14.000000000 +0000
 @@ -0,0 +1,281 @@
 +package org.bouncycastle.asn1;
 +
@@ -1316,7 +1316,7 @@
 +}
 diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/asn1/pkcs/PKCSObjectIdentifiers.java bcprov-jdk16-145/org/bouncycastle/asn1/pkcs/PKCSObjectIdentifiers.java
 --- bcprov-jdk16-145.orig/org/bouncycastle/asn1/pkcs/PKCSObjectIdentifiers.java	2010-01-11 21:46:14.000000000 +0000
-+++ bcprov-jdk16-145/org/bouncycastle/asn1/pkcs/PKCSObjectIdentifiers.java	2010-08-24 15:16:00.000000000 +0000
++++ bcprov-jdk16-145/org/bouncycastle/asn1/pkcs/PKCSObjectIdentifiers.java	2010-08-25 15:47:14.000000000 +0000
 @@ -10,7 +10,10 @@
      //
      static final String                 pkcs_1                    = "1.2.840.113549.1.1";
@@ -1354,7 +1354,7 @@
      // md4 OBJECT IDENTIFIER ::=
 diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/asn1/pkcs/RSAESOAEPparams.java bcprov-jdk16-145/org/bouncycastle/asn1/pkcs/RSAESOAEPparams.java
 --- bcprov-jdk16-145.orig/org/bouncycastle/asn1/pkcs/RSAESOAEPparams.java	2010-01-11 21:46:14.000000000 +0000
-+++ bcprov-jdk16-145/org/bouncycastle/asn1/pkcs/RSAESOAEPparams.java	2010-08-24 15:16:00.000000000 +0000
++++ bcprov-jdk16-145/org/bouncycastle/asn1/pkcs/RSAESOAEPparams.java	2010-08-25 15:47:14.000000000 +0000
 @@ -19,7 +19,9 @@
      private AlgorithmIdentifier maskGenAlgorithm;
      private AlgorithmIdentifier pSourceAlgorithm;
@@ -1368,7 +1368,7 @@
      
 diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/asn1/pkcs/RSASSAPSSparams.java bcprov-jdk16-145/org/bouncycastle/asn1/pkcs/RSASSAPSSparams.java
 --- bcprov-jdk16-145.orig/org/bouncycastle/asn1/pkcs/RSASSAPSSparams.java	2010-01-11 21:46:14.000000000 +0000
-+++ bcprov-jdk16-145/org/bouncycastle/asn1/pkcs/RSASSAPSSparams.java	2010-08-24 15:16:00.000000000 +0000
++++ bcprov-jdk16-145/org/bouncycastle/asn1/pkcs/RSASSAPSSparams.java	2010-08-25 15:47:14.000000000 +0000
 @@ -20,7 +20,9 @@
      private DERInteger          saltLength;
      private DERInteger          trailerField;
@@ -1382,7 +1382,7 @@
      public final static DERInteger          DEFAULT_TRAILER_FIELD = new DERInteger(1);
 diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/asn1/util/ASN1Dump.java bcprov-jdk16-145/org/bouncycastle/asn1/util/ASN1Dump.java
 --- bcprov-jdk16-145.orig/org/bouncycastle/asn1/util/ASN1Dump.java	2010-01-11 21:46:14.000000000 +0000
-+++ bcprov-jdk16-145/org/bouncycastle/asn1/util/ASN1Dump.java	2010-08-24 15:16:00.000000000 +0000
++++ bcprov-jdk16-145/org/bouncycastle/asn1/util/ASN1Dump.java	2010-08-25 15:47:14.000000000 +0000
 @@ -90,7 +90,9 @@
              {
                  Object  o = e.nextElement();
@@ -1396,7 +1396,7 @@
                      buf.append("NULL");
 diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/asn1/x509/AttCertIssuer.java bcprov-jdk16-145/org/bouncycastle/asn1/x509/AttCertIssuer.java
 --- bcprov-jdk16-145.orig/org/bouncycastle/asn1/x509/AttCertIssuer.java	2010-01-11 21:46:14.000000000 +0000
-+++ bcprov-jdk16-145/org/bouncycastle/asn1/x509/AttCertIssuer.java	2010-08-24 15:16:00.000000000 +0000
++++ bcprov-jdk16-145/org/bouncycastle/asn1/x509/AttCertIssuer.java	2010-08-25 15:47:14.000000000 +0000
 @@ -45,7 +45,7 @@
          ASN1TaggedObject obj,
          boolean          explicit)
@@ -1408,7 +1408,7 @@
      /**
 diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/asn1/x509/BasicConstraints.java bcprov-jdk16-145/org/bouncycastle/asn1/x509/BasicConstraints.java
 --- bcprov-jdk16-145.orig/org/bouncycastle/asn1/x509/BasicConstraints.java	2010-01-11 21:46:14.000000000 +0000
-+++ bcprov-jdk16-145/org/bouncycastle/asn1/x509/BasicConstraints.java	2010-08-24 15:16:00.000000000 +0000
++++ bcprov-jdk16-145/org/bouncycastle/asn1/x509/BasicConstraints.java	2010-08-25 15:47:14.000000000 +0000
 @@ -14,7 +14,9 @@
  public class BasicConstraints
      extends ASN1Encodable
@@ -1455,7 +1455,7 @@
  
 diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/asn1/x509/IssuingDistributionPoint.java bcprov-jdk16-145/org/bouncycastle/asn1/x509/IssuingDistributionPoint.java
 --- bcprov-jdk16-145.orig/org/bouncycastle/asn1/x509/IssuingDistributionPoint.java	2010-01-11 21:46:14.000000000 +0000
-+++ bcprov-jdk16-145/org/bouncycastle/asn1/x509/IssuingDistributionPoint.java	2010-08-24 15:16:00.000000000 +0000
++++ bcprov-jdk16-145/org/bouncycastle/asn1/x509/IssuingDistributionPoint.java	2010-08-25 15:47:14.000000000 +0000
 @@ -96,11 +96,15 @@
          }
          if (onlyContainsUserCerts)
@@ -1494,7 +1494,7 @@
          seq = new DERSequence(vec);
 diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/asn1/x509/X509Extensions.java bcprov-jdk16-145/org/bouncycastle/asn1/x509/X509Extensions.java
 --- bcprov-jdk16-145.orig/org/bouncycastle/asn1/x509/X509Extensions.java	2010-01-11 21:46:14.000000000 +0000
-+++ bcprov-jdk16-145/org/bouncycastle/asn1/x509/X509Extensions.java	2010-08-24 15:16:00.000000000 +0000
++++ bcprov-jdk16-145/org/bouncycastle/asn1/x509/X509Extensions.java	2010-08-25 15:47:14.000000000 +0000
 @@ -9,6 +9,9 @@
  import org.bouncycastle.asn1.DERObject;
  import org.bouncycastle.asn1.DERObjectIdentifier;
@@ -1683,7 +1683,7 @@
              }
 diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/asn1/x509/X509Name.java bcprov-jdk16-145/org/bouncycastle/asn1/x509/X509Name.java
 --- bcprov-jdk16-145.orig/org/bouncycastle/asn1/x509/X509Name.java	2010-01-11 21:46:14.000000000 +0000
-+++ bcprov-jdk16-145/org/bouncycastle/asn1/x509/X509Name.java	2010-08-24 15:16:00.000000000 +0000
++++ bcprov-jdk16-145/org/bouncycastle/asn1/x509/X509Name.java	2010-08-25 15:47:14.000000000 +0000
 @@ -247,8 +247,10 @@
       */
      public static final Hashtable SymbolLookUp = DefaultLookUp;
@@ -2149,7 +2149,7 @@
                  {
 diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/asn1/x509/X509NameElementList.java bcprov-jdk16-145/org/bouncycastle/asn1/x509/X509NameElementList.java
 --- bcprov-jdk16-145.orig/org/bouncycastle/asn1/x509/X509NameElementList.java	1970-01-01 00:00:00.000000000 +0000
-+++ bcprov-jdk16-145/org/bouncycastle/asn1/x509/X509NameElementList.java	2010-08-24 15:16:00.000000000 +0000
++++ bcprov-jdk16-145/org/bouncycastle/asn1/x509/X509NameElementList.java	2010-08-25 15:47:14.000000000 +0000
 @@ -0,0 +1,206 @@
 +package org.bouncycastle.asn1.x509;
 +
@@ -2359,7 +2359,7 @@
 +}
 diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/asn1/x509/X509NameTokenizer.java bcprov-jdk16-145/org/bouncycastle/asn1/x509/X509NameTokenizer.java
 --- bcprov-jdk16-145.orig/org/bouncycastle/asn1/x509/X509NameTokenizer.java	2010-01-11 21:46:14.000000000 +0000
-+++ bcprov-jdk16-145/org/bouncycastle/asn1/x509/X509NameTokenizer.java	2010-08-24 15:16:00.000000000 +0000
++++ bcprov-jdk16-145/org/bouncycastle/asn1/x509/X509NameTokenizer.java	2010-08-25 15:47:14.000000000 +0000
 @@ -58,6 +58,17 @@
                  }
                  else
@@ -2387,7 +2387,7 @@
 \ No newline at end of file
 diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/crypto/PBEParametersGenerator.java bcprov-jdk16-145/org/bouncycastle/crypto/PBEParametersGenerator.java
 --- bcprov-jdk16-145.orig/org/bouncycastle/crypto/PBEParametersGenerator.java	2010-01-11 21:46:14.000000000 +0000
-+++ bcprov-jdk16-145/org/bouncycastle/crypto/PBEParametersGenerator.java	2010-08-24 15:16:00.000000000 +0000
++++ bcprov-jdk16-145/org/bouncycastle/crypto/PBEParametersGenerator.java	2010-08-25 15:47:14.000000000 +0000
 @@ -136,7 +136,8 @@
      public static byte[] PKCS12PasswordToBytes(
          char[]  password)
@@ -2407,7 +2407,7 @@
  }
 diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/crypto/digests/OpenSSLDigest.java bcprov-jdk16-145/org/bouncycastle/crypto/digests/OpenSSLDigest.java
 --- bcprov-jdk16-145.orig/org/bouncycastle/crypto/digests/OpenSSLDigest.java	1970-01-01 00:00:00.000000000 +0000
-+++ bcprov-jdk16-145/org/bouncycastle/crypto/digests/OpenSSLDigest.java	2010-08-24 15:16:00.000000000 +0000
++++ bcprov-jdk16-145/org/bouncycastle/crypto/digests/OpenSSLDigest.java	2010-08-25 15:47:14.000000000 +0000
 @@ -0,0 +1,120 @@
 +/*
 + * Copyright (C) 2008 The Android Open Source Project
@@ -2531,7 +2531,7 @@
 +}
 diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/crypto/engines/RC2Engine.java bcprov-jdk16-145/org/bouncycastle/crypto/engines/RC2Engine.java
 --- bcprov-jdk16-145.orig/org/bouncycastle/crypto/engines/RC2Engine.java	2010-01-11 21:46:14.000000000 +0000
-+++ bcprov-jdk16-145/org/bouncycastle/crypto/engines/RC2Engine.java	2010-08-24 15:16:00.000000000 +0000
++++ bcprov-jdk16-145/org/bouncycastle/crypto/engines/RC2Engine.java	2010-08-25 15:47:14.000000000 +0000
 @@ -313,4 +313,4 @@
          out[outOff + 6] = (byte)x76;
          out[outOff + 7] = (byte)(x76 >> 8);
@@ -2541,7 +2541,7 @@
 \ No newline at end of file
 diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/crypto/macs/HMac.java bcprov-jdk16-145/org/bouncycastle/crypto/macs/HMac.java
 --- bcprov-jdk16-145.orig/org/bouncycastle/crypto/macs/HMac.java	2010-01-11 21:46:14.000000000 +0000
-+++ bcprov-jdk16-145/org/bouncycastle/crypto/macs/HMac.java	2010-08-24 15:16:00.000000000 +0000
++++ bcprov-jdk16-145/org/bouncycastle/crypto/macs/HMac.java	2010-08-25 15:47:14.000000000 +0000
 @@ -32,23 +32,23 @@
      {
          blockLengths = new Hashtable();
@@ -2583,7 +2583,7 @@
      private static int getByteLength(
 diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/crypto/signers/RSADigestSigner.java bcprov-jdk16-145/org/bouncycastle/crypto/signers/RSADigestSigner.java
 --- bcprov-jdk16-145.orig/org/bouncycastle/crypto/signers/RSADigestSigner.java	2010-01-11 21:46:14.000000000 +0000
-+++ bcprov-jdk16-145/org/bouncycastle/crypto/signers/RSADigestSigner.java	2010-08-24 15:16:00.000000000 +0000
++++ bcprov-jdk16-145/org/bouncycastle/crypto/signers/RSADigestSigner.java	2010-08-25 15:47:14.000000000 +0000
 @@ -46,8 +46,10 @@
          oidMap.put("SHA-384", NISTObjectIdentifiers.id_sha384);
          oidMap.put("SHA-512", NISTObjectIdentifiers.id_sha512);
@@ -2599,7 +2599,7 @@
  
 diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/crypto/util/PrivateKeyFactory.java bcprov-jdk16-145/org/bouncycastle/crypto/util/PrivateKeyFactory.java
 --- bcprov-jdk16-145.orig/org/bouncycastle/crypto/util/PrivateKeyFactory.java	2010-01-11 21:46:14.000000000 +0000
-+++ bcprov-jdk16-145/org/bouncycastle/crypto/util/PrivateKeyFactory.java	2010-08-24 15:16:00.000000000 +0000
++++ bcprov-jdk16-145/org/bouncycastle/crypto/util/PrivateKeyFactory.java	2010-08-25 15:47:14.000000000 +0000
 @@ -7,31 +7,39 @@
  import org.bouncycastle.asn1.DERInteger;
  import org.bouncycastle.asn1.DERObject;
@@ -2802,7 +2802,7 @@
              throw new RuntimeException("algorithm identifier in key not recognised");
 diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/crypto/util/PublicKeyFactory.java bcprov-jdk16-145/org/bouncycastle/crypto/util/PublicKeyFactory.java
 --- bcprov-jdk16-145.orig/org/bouncycastle/crypto/util/PublicKeyFactory.java	2010-01-11 21:46:14.000000000 +0000
-+++ bcprov-jdk16-145/org/bouncycastle/crypto/util/PublicKeyFactory.java	2010-08-24 15:16:00.000000000 +0000
++++ bcprov-jdk16-145/org/bouncycastle/crypto/util/PublicKeyFactory.java	2010-08-25 15:47:14.000000000 +0000
 @@ -10,32 +10,40 @@
  import org.bouncycastle.asn1.DERObject;
  import org.bouncycastle.asn1.DERObjectIdentifier;
@@ -2994,7 +2994,7 @@
              throw new RuntimeException("algorithm identifier in key not recognised");
 diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/jce/PKCS10CertificationRequest.java bcprov-jdk16-145/org/bouncycastle/jce/PKCS10CertificationRequest.java
 --- bcprov-jdk16-145.orig/org/bouncycastle/jce/PKCS10CertificationRequest.java	2010-01-11 21:46:14.000000000 +0000
-+++ bcprov-jdk16-145/org/bouncycastle/jce/PKCS10CertificationRequest.java	2010-08-24 15:15:59.000000000 +0000
++++ bcprov-jdk16-145/org/bouncycastle/jce/PKCS10CertificationRequest.java	2010-08-25 15:47:14.000000000 +0000
 @@ -78,8 +78,11 @@
  
      static
@@ -3058,7 +3058,7 @@
  
 diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/jce/provider/BouncyCastleProvider.java bcprov-jdk16-145/org/bouncycastle/jce/provider/BouncyCastleProvider.java
 --- bcprov-jdk16-145.orig/org/bouncycastle/jce/provider/BouncyCastleProvider.java	2010-01-11 21:46:14.000000000 +0000
-+++ bcprov-jdk16-145/org/bouncycastle/jce/provider/BouncyCastleProvider.java	2010-08-24 15:15:59.000000000 +0000
++++ bcprov-jdk16-145/org/bouncycastle/jce/provider/BouncyCastleProvider.java	2010-08-25 15:47:14.000000000 +0000
 @@ -53,7 +53,12 @@
      private static final String SYMMETRIC_CIPHER_PACKAGE = "org.bouncycastle.jce.provider.symmetric.";
      private static final String[] SYMMETRIC_CIPHERS =
@@ -4366,7 +4366,7 @@
      {
 diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/jce/provider/CertPathValidatorUtilities.java bcprov-jdk16-145/org/bouncycastle/jce/provider/CertPathValidatorUtilities.java
 --- bcprov-jdk16-145.orig/org/bouncycastle/jce/provider/CertPathValidatorUtilities.java	2010-01-11 21:46:14.000000000 +0000
-+++ bcprov-jdk16-145/org/bouncycastle/jce/provider/CertPathValidatorUtilities.java	2010-08-24 15:15:59.000000000 +0000
++++ bcprov-jdk16-145/org/bouncycastle/jce/provider/CertPathValidatorUtilities.java	2010-08-25 15:47:14.000000000 +0000
 @@ -24,6 +24,7 @@
  import java.security.spec.DSAPublicKeySpec;
  import java.text.ParseException;
@@ -4713,8 +4713,8 @@
          CRLDistPoint crldp, ExtendedPKIXParameters pkixParams)
 diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/jce/provider/JCEBlockCipher.java bcprov-jdk16-145/org/bouncycastle/jce/provider/JCEBlockCipher.java
 --- bcprov-jdk16-145.orig/org/bouncycastle/jce/provider/JCEBlockCipher.java	2010-01-11 21:46:14.000000000 +0000
-+++ bcprov-jdk16-145/org/bouncycastle/jce/provider/JCEBlockCipher.java	2010-08-24 15:15:59.000000000 +0000
-@@ -7,22 +7,29 @@
++++ bcprov-jdk16-145/org/bouncycastle/jce/provider/JCEBlockCipher.java	2010-08-25 15:47:14.000000000 +0000
+@@ -7,22 +7,31 @@
  import org.bouncycastle.crypto.InvalidCipherTextException;
  import org.bouncycastle.crypto.engines.AESFastEngine;
  import org.bouncycastle.crypto.engines.BlowfishEngine;
@@ -4731,14 +4731,18 @@
 +// import org.bouncycastle.crypto.engines.GOST28147Engine;
 +// END android-removed
  import org.bouncycastle.crypto.engines.RC2Engine;
- import org.bouncycastle.crypto.engines.RC532Engine;
- import org.bouncycastle.crypto.engines.RC564Engine;
+-import org.bouncycastle.crypto.engines.RC532Engine;
+-import org.bouncycastle.crypto.engines.RC564Engine;
 -import org.bouncycastle.crypto.engines.RC6Engine;
 -import org.bouncycastle.crypto.engines.RijndaelEngine;
 -import org.bouncycastle.crypto.engines.SEEDEngine;
 -import org.bouncycastle.crypto.engines.SerpentEngine;
 -import org.bouncycastle.crypto.engines.SkipjackEngine;
 -import org.bouncycastle.crypto.engines.TEAEngine;
++// BEGIN android-removed
++// import org.bouncycastle.crypto.engines.RC532Engine;
++// import org.bouncycastle.crypto.engines.RC564Engine;
++// END android-removed
 +// import org.bouncycastle.crypto.engines.RC6Engine;
 +// import org.bouncycastle.crypto.engines.RijndaelEngine;
 +// import org.bouncycastle.crypto.engines.SEEDEngine;
@@ -4754,7 +4758,7 @@
  import org.bouncycastle.crypto.modes.AEADBlockCipher;
  import org.bouncycastle.crypto.modes.CBCBlockCipher;
  import org.bouncycastle.crypto.modes.CCMBlockCipher;
-@@ -32,8 +39,10 @@
+@@ -32,8 +41,10 @@
  import org.bouncycastle.crypto.modes.GCMBlockCipher;
  import org.bouncycastle.crypto.modes.GOFBBlockCipher;
  import org.bouncycastle.crypto.modes.OFBBlockCipher;
@@ -4767,25 +4771,46 @@
  import org.bouncycastle.crypto.modes.SICBlockCipher;
  import org.bouncycastle.crypto.paddings.BlockCipherPadding;
  import org.bouncycastle.crypto.paddings.ISO10126d2Padding;
-@@ -45,10 +54,14 @@
+@@ -45,10 +56,12 @@
  import org.bouncycastle.crypto.params.KeyParameter;
  import org.bouncycastle.crypto.params.ParametersWithIV;
  import org.bouncycastle.crypto.params.ParametersWithRandom;
 -import org.bouncycastle.crypto.params.ParametersWithSBox;
-+// BEGIN android-removed
-+// import org.bouncycastle.crypto.params.ParametersWithSBox;
-+// END android-removed
- import org.bouncycastle.crypto.params.RC2Parameters;
- import org.bouncycastle.crypto.params.RC5Parameters;
+-import org.bouncycastle.crypto.params.RC2Parameters;
+-import org.bouncycastle.crypto.params.RC5Parameters;
 -import org.bouncycastle.jce.spec.GOST28147ParameterSpec;
 +// BEGIN android-removed
++// import org.bouncycastle.crypto.params.ParametersWithSBox;
++// import org.bouncycastle.crypto.params.RC2Parameters;
++// import org.bouncycastle.crypto.params.RC5Parameters;
 +// import org.bouncycastle.jce.spec.GOST28147ParameterSpec;
 +// END android-removed
  import org.bouncycastle.util.Strings;
  
  import javax.crypto.BadPaddingException;
-@@ -82,7 +95,9 @@
-                                         RC5ParameterSpec.class,
+@@ -59,8 +72,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 java.security.AlgorithmParameters;
+ import java.security.InvalidAlgorithmParameterException;
+ import java.security.InvalidKeyException;
+@@ -78,11 +93,15 @@
+     //
+     private Class[]                 availableSpecs =
+                                     {
+-                                        RC2ParameterSpec.class,
+-                                        RC5ParameterSpec.class,
++                                        // BEGIN android-removed
++                                        // RC2ParameterSpec.class,
++                                        // RC5ParameterSpec.class,
++                                        // END android-removed
                                          IvParameterSpec.class,
                                          PBEParameterSpec.class,
 -                                        GOST28147ParameterSpec.class
@@ -4795,7 +4820,7 @@
                                      };
   
      private BlockCipher             baseEngine;
-@@ -237,20 +252,22 @@
+@@ -237,20 +256,22 @@
                          new CFBBlockCipher(baseEngine, 8 * baseEngine.getBlockSize()));
              }
          }
@@ -4832,7 +4857,30 @@
          else if (modeName.startsWith("SIC"))
          {
              ivLength = baseEngine.getBlockSize();
-@@ -448,19 +465,21 @@
+@@ -376,13 +397,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).
+@@ -448,63 +471,65 @@
                  param = new KeyParameter(key.getEncoded());
              }
          }
@@ -4849,6 +4897,50 @@
 -                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)
 +        // {
@@ -4863,11 +4955,55 @@
 +        //         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 if (params instanceof RC2ParameterSpec)
+         else
          {
-             RC2ParameterSpec    rc2Param = (RC2ParameterSpec)params;
-@@ -708,10 +727,21 @@
+             throw new InvalidAlgorithmParameterException("unknown parameter type.");
+@@ -708,10 +733,21 @@
          int     inputLen,
          byte[]  output,
          int     outputOffset) 
@@ -4890,7 +5026,7 @@
          if (inputLen != 0)
          {
                  len = cipher.processBytes(input, inputOffset, inputLen, output, outputOffset);
-@@ -753,17 +783,19 @@
+@@ -753,17 +789,19 @@
          }
      }
  
@@ -4921,7 +5057,7 @@
  
      /**
       * DESede
-@@ -777,52 +809,54 @@
+@@ -777,52 +815,54 @@
          }
      }
  
@@ -5020,7 +5156,7 @@
       * Blowfish
       */
      static public class Blowfish
-@@ -833,236 +867,238 @@
+@@ -833,236 +873,238 @@
              super(new BlowfishEngine());
          }
      }
@@ -5488,7 +5624,7 @@
  
      /**
       * PBEWithMD5AndDES
-@@ -1087,7 +1123,7 @@
+@@ -1087,7 +1129,7 @@
              super(new CBCBlockCipher(new RC2Engine()));
          }
      }
@@ -5497,7 +5633,7 @@
      /**
       * PBEWithSHA1AndDES
       */
-@@ -1135,7 +1171,7 @@
+@@ -1135,7 +1177,7 @@
              super(new CBCBlockCipher(new DESedeEngine()));
          }
      }
@@ -5506,7 +5642,7 @@
      /**
       * PBEWithSHAAnd128BitRC2-CBC
       */
-@@ -1159,7 +1195,7 @@
+@@ -1159,7 +1201,7 @@
              super(new CBCBlockCipher(new RC2Engine()));
          }
      }
@@ -5515,7 +5651,7 @@
      /**
       * PBEWithSHAAndTwofish-CBC
       */
-@@ -1171,7 +1207,7 @@
+@@ -1171,7 +1213,7 @@
              super(new CBCBlockCipher(new TwofishEngine()));
          }
      }
@@ -5526,7 +5662,7 @@
       */
 diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/jce/provider/JCEDHKeyAgreement.java bcprov-jdk16-145/org/bouncycastle/jce/provider/JCEDHKeyAgreement.java
 --- bcprov-jdk16-145.orig/org/bouncycastle/jce/provider/JCEDHKeyAgreement.java	2010-01-11 21:46:14.000000000 +0000
-+++ bcprov-jdk16-145/org/bouncycastle/jce/provider/JCEDHKeyAgreement.java	2010-08-24 15:15:59.000000000 +0000
++++ bcprov-jdk16-145/org/bouncycastle/jce/provider/JCEDHKeyAgreement.java	2010-08-25 15:47:14.000000000 +0000
 @@ -37,9 +37,11 @@
  
      static
@@ -5544,7 +5680,7 @@
          algorithms.put("DESEDE", i192);
 diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/jce/provider/JCEDigestUtil.java bcprov-jdk16-145/org/bouncycastle/jce/provider/JCEDigestUtil.java
 --- bcprov-jdk16-145.orig/org/bouncycastle/jce/provider/JCEDigestUtil.java	2010-01-11 21:46:14.000000000 +0000
-+++ bcprov-jdk16-145/org/bouncycastle/jce/provider/JCEDigestUtil.java	2010-08-24 15:15:59.000000000 +0000
++++ bcprov-jdk16-145/org/bouncycastle/jce/provider/JCEDigestUtil.java	2010-08-25 15:47:14.000000000 +0000
 @@ -12,7 +12,9 @@
  import org.bouncycastle.crypto.Digest;
  import org.bouncycastle.crypto.digests.MD5Digest;
@@ -5627,7 +5763,7 @@
              || (sha512.contains(digest1) && sha512.contains(digest2))
 diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/jce/provider/JCEKeyGenerator.java bcprov-jdk16-145/org/bouncycastle/jce/provider/JCEKeyGenerator.java
 --- bcprov-jdk16-145.orig/org/bouncycastle/jce/provider/JCEKeyGenerator.java	2010-01-11 21:46:14.000000000 +0000
-+++ bcprov-jdk16-145/org/bouncycastle/jce/provider/JCEKeyGenerator.java	2010-08-24 15:15:59.000000000 +0000
++++ bcprov-jdk16-145/org/bouncycastle/jce/provider/JCEKeyGenerator.java	2010-08-25 15:47:14.000000000 +0000
 @@ -145,30 +145,32 @@
          }
      }
@@ -6259,7 +6395,7 @@
  }
 diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/jce/provider/JCEMac.java bcprov-jdk16-145/org/bouncycastle/jce/provider/JCEMac.java
 --- bcprov-jdk16-145.orig/org/bouncycastle/jce/provider/JCEMac.java	2010-01-11 21:46:14.000000000 +0000
-+++ bcprov-jdk16-145/org/bouncycastle/jce/provider/JCEMac.java	2010-08-24 15:15:59.000000000 +0000
++++ bcprov-jdk16-145/org/bouncycastle/jce/provider/JCEMac.java	2010-08-25 15:47:14.000000000 +0000
 @@ -2,29 +2,43 @@
  
  import org.bouncycastle.crypto.CipherParameters;
@@ -7012,7 +7148,7 @@
  }
 diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/jce/provider/JCERSACipher.java bcprov-jdk16-145/org/bouncycastle/jce/provider/JCERSACipher.java
 --- bcprov-jdk16-145.orig/org/bouncycastle/jce/provider/JCERSACipher.java	2010-01-11 21:46:14.000000000 +0000
-+++ bcprov-jdk16-145/org/bouncycastle/jce/provider/JCERSACipher.java	2010-08-24 15:15:59.000000000 +0000
++++ bcprov-jdk16-145/org/bouncycastle/jce/provider/JCERSACipher.java	2010-08-25 15:47:14.000000000 +0000
 @@ -534,48 +534,50 @@
          }
      }
@@ -7110,7 +7246,7 @@
  }
 diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/jce/provider/JCERSAPrivateCrtKey.java bcprov-jdk16-145/org/bouncycastle/jce/provider/JCERSAPrivateCrtKey.java
 --- bcprov-jdk16-145.orig/org/bouncycastle/jce/provider/JCERSAPrivateCrtKey.java	2010-01-11 21:46:14.000000000 +0000
-+++ bcprov-jdk16-145/org/bouncycastle/jce/provider/JCERSAPrivateCrtKey.java	2010-08-24 15:15:59.000000000 +0000
++++ bcprov-jdk16-145/org/bouncycastle/jce/provider/JCERSAPrivateCrtKey.java	2010-08-25 15:47:14.000000000 +0000
 @@ -125,7 +125,9 @@
       */
      public byte[] getEncoded()
@@ -7124,7 +7260,7 @@
      }
 diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/jce/provider/JCERSAPrivateKey.java bcprov-jdk16-145/org/bouncycastle/jce/provider/JCERSAPrivateKey.java
 --- bcprov-jdk16-145.orig/org/bouncycastle/jce/provider/JCERSAPrivateKey.java	2010-01-11 21:46:14.000000000 +0000
-+++ bcprov-jdk16-145/org/bouncycastle/jce/provider/JCERSAPrivateKey.java	2010-08-24 15:15:59.000000000 +0000
++++ bcprov-jdk16-145/org/bouncycastle/jce/provider/JCERSAPrivateKey.java	2010-08-25 15:47:14.000000000 +0000
 @@ -77,7 +77,9 @@
  
      public byte[] getEncoded()
@@ -7138,7 +7274,7 @@
      }
 diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/jce/provider/JCERSAPublicKey.java bcprov-jdk16-145/org/bouncycastle/jce/provider/JCERSAPublicKey.java
 --- bcprov-jdk16-145.orig/org/bouncycastle/jce/provider/JCERSAPublicKey.java	2010-01-11 21:46:14.000000000 +0000
-+++ bcprov-jdk16-145/org/bouncycastle/jce/provider/JCERSAPublicKey.java	2010-08-24 15:15:59.000000000 +0000
++++ bcprov-jdk16-145/org/bouncycastle/jce/provider/JCERSAPublicKey.java	2010-08-25 15:47:14.000000000 +0000
 @@ -90,7 +90,9 @@
  
      public byte[] getEncoded()
@@ -7152,7 +7288,7 @@
      }
 diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/jce/provider/JCESecretKeyFactory.java bcprov-jdk16-145/org/bouncycastle/jce/provider/JCESecretKeyFactory.java
 --- bcprov-jdk16-145.orig/org/bouncycastle/jce/provider/JCESecretKeyFactory.java	2010-01-11 21:46:14.000000000 +0000
-+++ bcprov-jdk16-145/org/bouncycastle/jce/provider/JCESecretKeyFactory.java	2010-08-24 15:15:59.000000000 +0000
++++ bcprov-jdk16-145/org/bouncycastle/jce/provider/JCESecretKeyFactory.java	2010-08-25 15:47:14.000000000 +0000
 @@ -321,29 +321,31 @@
          }
      }
@@ -7272,7 +7408,7 @@
      * PBEWithSHA1And128BitAES-BC
 diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/jce/provider/JCEStreamCipher.java bcprov-jdk16-145/org/bouncycastle/jce/provider/JCEStreamCipher.java
 --- bcprov-jdk16-145.orig/org/bouncycastle/jce/provider/JCEStreamCipher.java	2010-01-11 21:46:14.000000000 +0000
-+++ bcprov-jdk16-145/org/bouncycastle/jce/provider/JCEStreamCipher.java	2010-08-24 15:15:59.000000000 +0000
++++ bcprov-jdk16-145/org/bouncycastle/jce/provider/JCEStreamCipher.java	2010-08-25 15:47:14.000000000 +0000
 @@ -5,17 +5,21 @@
  import org.bouncycastle.crypto.DataLengthException;
  import org.bouncycastle.crypto.StreamBlockCipher;
@@ -7305,7 +7441,33 @@
  import org.bouncycastle.crypto.modes.CFBBlockCipher;
  import org.bouncycastle.crypto.modes.OFBBlockCipher;
  import org.bouncycastle.crypto.params.KeyParameter;
-@@ -374,125 +378,127 @@
+@@ -27,8 +31,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 java.security.AlgorithmParameters;
+ import java.security.InvalidAlgorithmParameterException;
+ import java.security.InvalidKeyException;
+@@ -44,8 +50,10 @@
+     //
+     private Class[]                 availableSpecs =
+                                     {
+-                                        RC2ParameterSpec.class,
+-                                        RC5ParameterSpec.class,
++                                        // BEGIN android-removed
++                                        // RC2ParameterSpec.class,
++                                        // RC5ParameterSpec.class,
++                                        // END android-removed
+                                         IvParameterSpec.class,
+                                         PBEParameterSpec.class
+                                     };
+@@ -374,125 +382,127 @@
       * The ciphers that inherit from us.
       */
  
@@ -7552,7 +7714,7 @@
  
      /**
       * RC4
-@@ -517,7 +523,7 @@
+@@ -517,7 +527,7 @@
              super(new RC4Engine(), 0);
          }
      }
@@ -7561,7 +7723,7 @@
      /**
       * PBEWithSHAAnd40BitRC4
       */
-@@ -529,64 +535,66 @@
+@@ -529,64 +539,66 @@
              super(new RC4Engine(), 0);
          }
      }
@@ -7690,8 +7852,8 @@
  }
 diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/jce/provider/JDKAlgorithmParameterGenerator.java bcprov-jdk16-145/org/bouncycastle/jce/provider/JDKAlgorithmParameterGenerator.java
 --- bcprov-jdk16-145.orig/org/bouncycastle/jce/provider/JDKAlgorithmParameterGenerator.java	2010-01-11 21:46:14.000000000 +0000
-+++ bcprov-jdk16-145/org/bouncycastle/jce/provider/JDKAlgorithmParameterGenerator.java	2010-08-24 15:15:59.000000000 +0000
-@@ -2,14 +2,18 @@
++++ bcprov-jdk16-145/org/bouncycastle/jce/provider/JDKAlgorithmParameterGenerator.java	2010-08-25 15:47:14.000000000 +0000
+@@ -2,19 +2,25 @@
  
  import org.bouncycastle.crypto.generators.DHParametersGenerator;
  import org.bouncycastle.crypto.generators.DSAParametersGenerator;
@@ -7716,7 +7878,15 @@
  
  import javax.crypto.spec.DHGenParameterSpec;
  import javax.crypto.spec.DHParameterSpec;
-@@ -144,196 +148,198 @@
+ import javax.crypto.spec.IvParameterSpec;
+-import javax.crypto.spec.RC2ParameterSpec;
++// BEGIN android-removed
++// import javax.crypto.spec.RC2ParameterSpec;
++// END android-removed
+ import java.security.AlgorithmParameterGeneratorSpi;
+ import java.security.AlgorithmParameters;
+ import java.security.InvalidAlgorithmParameterException;
+@@ -144,196 +150,198 @@
          }
      }
  
@@ -8109,7 +8279,7 @@
  }
 diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/jce/provider/JDKAlgorithmParameters.java bcprov-jdk16-145/org/bouncycastle/jce/provider/JDKAlgorithmParameters.java
 --- bcprov-jdk16-145.orig/org/bouncycastle/jce/provider/JDKAlgorithmParameters.java	2010-01-11 21:46:14.000000000 +0000
-+++ bcprov-jdk16-145/org/bouncycastle/jce/provider/JDKAlgorithmParameters.java	2010-08-24 15:15:59.000000000 +0000
++++ bcprov-jdk16-145/org/bouncycastle/jce/provider/JDKAlgorithmParameters.java	2010-08-25 15:47:14.000000000 +0000
 @@ -10,21 +10,29 @@
  import org.bouncycastle.asn1.DERObjectIdentifier;
  import org.bouncycastle.asn1.DEROctetString;
@@ -9834,7 +10004,7 @@
  }
 diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/jce/provider/JDKDSASigner.java bcprov-jdk16-145/org/bouncycastle/jce/provider/JDKDSASigner.java
 --- bcprov-jdk16-145.orig/org/bouncycastle/jce/provider/JDKDSASigner.java	2010-01-11 21:46:14.000000000 +0000
-+++ bcprov-jdk16-145/org/bouncycastle/jce/provider/JDKDSASigner.java	2010-08-24 15:15:59.000000000 +0000
++++ bcprov-jdk16-145/org/bouncycastle/jce/provider/JDKDSASigner.java	2010-08-25 15:47:14.000000000 +0000
 @@ -22,13 +22,17 @@
  import org.bouncycastle.crypto.DSA;
  import org.bouncycastle.crypto.Digest;
@@ -9985,7 +10155,7 @@
          extends JDKDSASigner
 diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/jce/provider/JDKDigestSignature.java bcprov-jdk16-145/org/bouncycastle/jce/provider/JDKDigestSignature.java
 --- bcprov-jdk16-145.orig/org/bouncycastle/jce/provider/JDKDigestSignature.java	2010-01-11 21:46:14.000000000 +0000
-+++ bcprov-jdk16-145/org/bouncycastle/jce/provider/JDKDigestSignature.java	2010-08-24 15:15:59.000000000 +0000
++++ bcprov-jdk16-145/org/bouncycastle/jce/provider/JDKDigestSignature.java	2010-08-25 15:47:14.000000000 +0000
 @@ -23,14 +23,20 @@
  import org.bouncycastle.crypto.AsymmetricBlockCipher;
  import org.bouncycastle.crypto.CipherParameters;
@@ -10186,7 +10356,7 @@
  }
 diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/jce/provider/JDKKeyFactory.java bcprov-jdk16-145/org/bouncycastle/jce/provider/JDKKeyFactory.java
 --- bcprov-jdk16-145.orig/org/bouncycastle/jce/provider/JDKKeyFactory.java	2010-01-11 21:46:14.000000000 +0000
-+++ bcprov-jdk16-145/org/bouncycastle/jce/provider/JDKKeyFactory.java	2010-08-24 15:15:59.000000000 +0000
++++ bcprov-jdk16-145/org/bouncycastle/jce/provider/JDKKeyFactory.java	2010-08-25 15:47:14.000000000 +0000
 @@ -36,17 +36,21 @@
  import org.bouncycastle.asn1.pkcs.RSAPrivateKeyStructure;
  import org.bouncycastle.asn1.x509.SubjectPublicKeyInfo;
@@ -10564,7 +10734,7 @@
  }
 diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/jce/provider/JDKKeyPairGenerator.java bcprov-jdk16-145/org/bouncycastle/jce/provider/JDKKeyPairGenerator.java
 --- bcprov-jdk16-145.orig/org/bouncycastle/jce/provider/JDKKeyPairGenerator.java	2010-01-11 21:46:14.000000000 +0000
-+++ bcprov-jdk16-145/org/bouncycastle/jce/provider/JDKKeyPairGenerator.java	2010-08-24 15:15:59.000000000 +0000
++++ bcprov-jdk16-145/org/bouncycastle/jce/provider/JDKKeyPairGenerator.java	2010-08-25 15:47:14.000000000 +0000
 @@ -6,9 +6,11 @@
  import org.bouncycastle.crypto.generators.DHParametersGenerator;
  import org.bouncycastle.crypto.generators.DSAKeyPairGenerator;
@@ -10908,7 +11078,7 @@
  }
 diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/jce/provider/JDKKeyStore.java bcprov-jdk16-145/org/bouncycastle/jce/provider/JDKKeyStore.java
 --- bcprov-jdk16-145.orig/org/bouncycastle/jce/provider/JDKKeyStore.java	2010-01-11 21:46:14.000000000 +0000
-+++ bcprov-jdk16-145/org/bouncycastle/jce/provider/JDKKeyStore.java	2010-08-24 15:15:59.000000000 +0000
++++ bcprov-jdk16-145/org/bouncycastle/jce/provider/JDKKeyStore.java	2010-08-25 15:47:14.000000000 +0000
 @@ -39,7 +39,12 @@
  import org.bouncycastle.crypto.CipherParameters;
  import org.bouncycastle.crypto.Digest;
@@ -11011,7 +11181,7 @@
  }
 diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/jce/provider/JDKMessageDigest.java bcprov-jdk16-145/org/bouncycastle/jce/provider/JDKMessageDigest.java
 --- bcprov-jdk16-145.orig/org/bouncycastle/jce/provider/JDKMessageDigest.java	2010-01-11 21:46:14.000000000 +0000
-+++ bcprov-jdk16-145/org/bouncycastle/jce/provider/JDKMessageDigest.java	2010-08-24 15:15:59.000000000 +0000
++++ bcprov-jdk16-145/org/bouncycastle/jce/provider/JDKMessageDigest.java	2010-08-25 15:47:14.000000000 +0000
 @@ -57,36 +57,38 @@
          {
              super(new SHA1Digest());
@@ -11458,7 +11628,7 @@
  }
 diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/jce/provider/JDKPKCS12KeyStore.java bcprov-jdk16-145/org/bouncycastle/jce/provider/JDKPKCS12KeyStore.java
 --- bcprov-jdk16-145.orig/org/bouncycastle/jce/provider/JDKPKCS12KeyStore.java	2010-01-11 21:46:14.000000000 +0000
-+++ bcprov-jdk16-145/org/bouncycastle/jce/provider/JDKPKCS12KeyStore.java	2010-08-24 15:15:59.000000000 +0000
++++ bcprov-jdk16-145/org/bouncycastle/jce/provider/JDKPKCS12KeyStore.java	2010-08-25 15:47:14.000000000 +0000
 @@ -255,10 +255,13 @@
              }
          }
@@ -11628,7 +11798,7 @@
                  return null;
 diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/jce/provider/PBE.java bcprov-jdk16-145/org/bouncycastle/jce/provider/PBE.java
 --- bcprov-jdk16-145.orig/org/bouncycastle/jce/provider/PBE.java	2010-01-11 21:46:14.000000000 +0000
-+++ bcprov-jdk16-145/org/bouncycastle/jce/provider/PBE.java	2010-08-24 15:15:59.000000000 +0000
++++ bcprov-jdk16-145/org/bouncycastle/jce/provider/PBE.java	2010-08-25 15:47:14.000000000 +0000
 @@ -7,12 +7,18 @@
  
  import org.bouncycastle.crypto.CipherParameters;
@@ -11703,7 +11873,7 @@
                      break;
 diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/jce/provider/PKCS12BagAttributeCarrierImpl.java bcprov-jdk16-145/org/bouncycastle/jce/provider/PKCS12BagAttributeCarrierImpl.java
 --- bcprov-jdk16-145.orig/org/bouncycastle/jce/provider/PKCS12BagAttributeCarrierImpl.java	2010-01-11 21:46:14.000000000 +0000
-+++ bcprov-jdk16-145/org/bouncycastle/jce/provider/PKCS12BagAttributeCarrierImpl.java	2010-08-24 15:15:59.000000000 +0000
++++ bcprov-jdk16-145/org/bouncycastle/jce/provider/PKCS12BagAttributeCarrierImpl.java	2010-08-25 15:47:14.000000000 +0000
 @@ -1,6 +1,9 @@
  package org.bouncycastle.jce.provider;
  
@@ -11846,7 +12016,7 @@
          {
 diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/jce/provider/PKIXCertPath.java bcprov-jdk16-145/org/bouncycastle/jce/provider/PKIXCertPath.java
 --- bcprov-jdk16-145.orig/org/bouncycastle/jce/provider/PKIXCertPath.java	2010-01-11 21:46:14.000000000 +0000
-+++ bcprov-jdk16-145/org/bouncycastle/jce/provider/PKIXCertPath.java	2010-08-24 15:15:59.000000000 +0000
++++ bcprov-jdk16-145/org/bouncycastle/jce/provider/PKIXCertPath.java	2010-08-25 15:47:14.000000000 +0000
 @@ -33,7 +33,9 @@
  import org.bouncycastle.asn1.pkcs.ContentInfo;
  import org.bouncycastle.asn1.pkcs.PKCSObjectIdentifiers;
@@ -11911,7 +12081,7 @@
              throw new CertificateEncodingException("unsupported encoding: " + encoding);
 diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/jce/provider/PKIXCertPathBuilderSpi.java bcprov-jdk16-145/org/bouncycastle/jce/provider/PKIXCertPathBuilderSpi.java
 --- bcprov-jdk16-145.orig/org/bouncycastle/jce/provider/PKIXCertPathBuilderSpi.java	2010-01-11 21:46:14.000000000 +0000
-+++ bcprov-jdk16-145/org/bouncycastle/jce/provider/PKIXCertPathBuilderSpi.java	2010-08-24 15:15:59.000000000 +0000
++++ bcprov-jdk16-145/org/bouncycastle/jce/provider/PKIXCertPathBuilderSpi.java	2010-08-25 15:47:14.000000000 +0000
 @@ -172,8 +172,9 @@
          try
          {
@@ -11926,7 +12096,7 @@
                  // chains
 diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/jce/provider/PKIXCertPathValidatorSpi.java bcprov-jdk16-145/org/bouncycastle/jce/provider/PKIXCertPathValidatorSpi.java
 --- bcprov-jdk16-145.orig/org/bouncycastle/jce/provider/PKIXCertPathValidatorSpi.java	2010-01-11 21:46:14.000000000 +0000
-+++ bcprov-jdk16-145/org/bouncycastle/jce/provider/PKIXCertPathValidatorSpi.java	2010-08-24 15:15:59.000000000 +0000
++++ bcprov-jdk16-145/org/bouncycastle/jce/provider/PKIXCertPathValidatorSpi.java	2010-08-25 15:47:14.000000000 +0000
 @@ -13,6 +13,7 @@
  import java.security.cert.TrustAnchor;
  import java.security.cert.X509Certificate;
@@ -12022,7 +12192,7 @@
                  maxPathLength = RFC3280CertPathUtilities.prepareNextCertL(certPath, index, maxPathLength);
 diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/jce/provider/PKIXNameConstraintValidator.java bcprov-jdk16-145/org/bouncycastle/jce/provider/PKIXNameConstraintValidator.java
 --- bcprov-jdk16-145.orig/org/bouncycastle/jce/provider/PKIXNameConstraintValidator.java	2010-01-11 21:46:14.000000000 +0000
-+++ bcprov-jdk16-145/org/bouncycastle/jce/provider/PKIXNameConstraintValidator.java	2010-08-24 15:15:59.000000000 +0000
++++ bcprov-jdk16-145/org/bouncycastle/jce/provider/PKIXNameConstraintValidator.java	2010-08-25 15:47:14.000000000 +0000
 @@ -1533,7 +1533,9 @@
          for (Enumeration e = permitted.getObjects(); e.hasMoreElements();)
          {
@@ -12036,7 +12206,7 @@
                  subtreesMap.put(tagNo, new HashSet());
 diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/jce/provider/ProviderUtil.java bcprov-jdk16-145/org/bouncycastle/jce/provider/ProviderUtil.java
 --- bcprov-jdk16-145.orig/org/bouncycastle/jce/provider/ProviderUtil.java	2010-01-11 21:46:14.000000000 +0000
-+++ bcprov-jdk16-145/org/bouncycastle/jce/provider/ProviderUtil.java	2010-08-24 15:15:59.000000000 +0000
++++ bcprov-jdk16-145/org/bouncycastle/jce/provider/ProviderUtil.java	2010-08-25 15:47:14.000000000 +0000
 @@ -1,9 +1,13 @@
  package org.bouncycastle.jce.provider;
  
@@ -12185,7 +12355,7 @@
          throws IOException
 diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/jce/provider/RFC3280CertPathUtilities.java bcprov-jdk16-145/org/bouncycastle/jce/provider/RFC3280CertPathUtilities.java
 --- bcprov-jdk16-145.orig/org/bouncycastle/jce/provider/RFC3280CertPathUtilities.java	2010-01-11 21:46:14.000000000 +0000
-+++ bcprov-jdk16-145/org/bouncycastle/jce/provider/RFC3280CertPathUtilities.java	2010-08-24 15:15:59.000000000 +0000
++++ bcprov-jdk16-145/org/bouncycastle/jce/provider/RFC3280CertPathUtilities.java	2010-08-25 15:47:14.000000000 +0000
 @@ -1471,7 +1471,11 @@
          PublicKey workingPublicKey,
          boolean verificationAlreadyPerformed,
@@ -12245,7 +12415,7 @@
  
 diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/jce/provider/WrapCipherSpi.java bcprov-jdk16-145/org/bouncycastle/jce/provider/WrapCipherSpi.java
 --- bcprov-jdk16-145.orig/org/bouncycastle/jce/provider/WrapCipherSpi.java	2010-01-11 21:46:14.000000000 +0000
-+++ bcprov-jdk16-145/org/bouncycastle/jce/provider/WrapCipherSpi.java	2010-08-24 15:15:59.000000000 +0000
++++ bcprov-jdk16-145/org/bouncycastle/jce/provider/WrapCipherSpi.java	2010-08-25 15:47:14.000000000 +0000
 @@ -12,8 +12,10 @@
  import org.bouncycastle.crypto.Wrapper;
  import org.bouncycastle.crypto.engines.DESedeEngine;
@@ -12259,28 +12429,32 @@
  import org.bouncycastle.crypto.params.KeyParameter;
  import org.bouncycastle.crypto.params.ParametersWithIV;
  
-@@ -25,7 +27,9 @@
+@@ -25,8 +27,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.RC5ParameterSpec;
  import javax.crypto.spec.SecretKeySpec;
  import java.security.AlgorithmParameters;
-@@ -52,7 +56,9 @@
+ import java.security.InvalidAlgorithmParameterException;
+@@ -52,8 +56,10 @@
                                      {
                                          IvParameterSpec.class,
                                          PBEParameterSpec.class,
 -                                        RC2ParameterSpec.class,
+-                                        RC5ParameterSpec.class
 +                                        // BEGIN android-removed
 +                                        // RC2ParameterSpec.class,
++                                        // RC5ParameterSpec.class
 +                                        // END android-removed
-                                         RC5ParameterSpec.class
                                      };
  
+     protected int                     pbeType = PKCS12;
 @@ -265,16 +271,19 @@
          return null;
      }
@@ -12406,7 +12580,7 @@
  }
 diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/jce/provider/X509CertificateObject.java bcprov-jdk16-145/org/bouncycastle/jce/provider/X509CertificateObject.java
 --- bcprov-jdk16-145.orig/org/bouncycastle/jce/provider/X509CertificateObject.java	2010-01-11 21:46:14.000000000 +0000
-+++ bcprov-jdk16-145/org/bouncycastle/jce/provider/X509CertificateObject.java	2010-08-24 15:15:59.000000000 +0000
++++ bcprov-jdk16-145/org/bouncycastle/jce/provider/X509CertificateObject.java	2010-08-25 15:47:14.000000000 +0000
 @@ -518,12 +518,20 @@
          return JDKKeyFactory.createPublicKeyFromPublicKeyInfo(c.getSubjectPublicKeyInfo());
      }
@@ -12440,7 +12614,7 @@
              signature = Signature.getInstance(sigName, "BC");
 diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/jce/provider/X509SignatureUtil.java bcprov-jdk16-145/org/bouncycastle/jce/provider/X509SignatureUtil.java
 --- bcprov-jdk16-145.orig/org/bouncycastle/jce/provider/X509SignatureUtil.java	2010-01-11 21:46:14.000000000 +0000
-+++ bcprov-jdk16-145/org/bouncycastle/jce/provider/X509SignatureUtil.java	2010-08-24 15:15:59.000000000 +0000
++++ bcprov-jdk16-145/org/bouncycastle/jce/provider/X509SignatureUtil.java	2010-08-25 15:47:14.000000000 +0000
 @@ -25,7 +25,9 @@
  
  class X509SignatureUtil
@@ -12533,7 +12707,7 @@
              return digestAlgOID.getId();            
 diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/jce/provider/symmetric/AES.java bcprov-jdk16-145/org/bouncycastle/jce/provider/symmetric/AES.java
 --- bcprov-jdk16-145.orig/org/bouncycastle/jce/provider/symmetric/AES.java	2010-01-11 21:46:14.000000000 +0000
-+++ bcprov-jdk16-145/org/bouncycastle/jce/provider/symmetric/AES.java	2010-08-24 15:15:59.000000000 +0000
++++ bcprov-jdk16-145/org/bouncycastle/jce/provider/symmetric/AES.java	2010-08-25 15:47:14.000000000 +0000
 @@ -5,7 +5,9 @@
  import org.bouncycastle.crypto.engines.AESEngine;
  import org.bouncycastle.crypto.engines.AESFastEngine;
@@ -12770,7 +12944,7 @@
          extends JDKAlgorithmParameters.IVAlgorithmParameters
 diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/jce/provider/symmetric/AESMappings.java bcprov-jdk16-145/org/bouncycastle/jce/provider/symmetric/AESMappings.java
 --- bcprov-jdk16-145.orig/org/bouncycastle/jce/provider/symmetric/AESMappings.java	2010-01-11 21:46:14.000000000 +0000
-+++ bcprov-jdk16-145/org/bouncycastle/jce/provider/symmetric/AESMappings.java	2010-08-24 15:15:59.000000000 +0000
++++ bcprov-jdk16-145/org/bouncycastle/jce/provider/symmetric/AESMappings.java	2010-08-25 15:47:14.000000000 +0000
 @@ -26,55 +26,63 @@
          put("Alg.Alias.AlgorithmParameters." + NISTObjectIdentifiers.id_aes192_CBC, "AES");
          put("Alg.Alias.AlgorithmParameters." + NISTObjectIdentifiers.id_aes256_CBC, "AES");
@@ -12876,7 +13050,7 @@
  }
 diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/x509/X509Util.java bcprov-jdk16-145/org/bouncycastle/x509/X509Util.java
 --- bcprov-jdk16-145.orig/org/bouncycastle/x509/X509Util.java	2010-01-11 21:46:14.000000000 +0000
-+++ bcprov-jdk16-145/org/bouncycastle/x509/X509Util.java	2010-08-24 15:15:59.000000000 +0000
++++ bcprov-jdk16-145/org/bouncycastle/x509/X509Util.java	2010-08-25 15:47:14.000000000 +0000
 @@ -43,8 +43,10 @@
      
      static
@@ -12938,7 +13112,7 @@
      
 diff -Naur bcprov-jdk16-145.orig/org/bouncycastle/x509/extension/X509ExtensionUtil.java bcprov-jdk16-145/org/bouncycastle/x509/extension/X509ExtensionUtil.java
 --- bcprov-jdk16-145.orig/org/bouncycastle/x509/extension/X509ExtensionUtil.java	2010-01-11 21:46:14.000000000 +0000
-+++ bcprov-jdk16-145/org/bouncycastle/x509/extension/X509ExtensionUtil.java	2010-08-24 15:16:00.000000000 +0000
++++ bcprov-jdk16-145/org/bouncycastle/x509/extension/X509ExtensionUtil.java	2010-08-25 15:47:14.000000000 +0000
 @@ -62,7 +62,9 @@
              {
                  GeneralName genName = GeneralName.getInstance(it.nextElement());
diff --git a/src/main/java/org/bouncycastle/crypto/engines/RC532Engine.java b/src/main/java/org/bouncycastle/crypto/engines/RC532Engine.java
deleted file mode 100644
index 9fb6f55..0000000
--- a/src/main/java/org/bouncycastle/crypto/engines/RC532Engine.java
+++ /dev/null
@@ -1,287 +0,0 @@
-package org.bouncycastle.crypto.engines;
-
-import org.bouncycastle.crypto.BlockCipher;
-import org.bouncycastle.crypto.CipherParameters;
-import org.bouncycastle.crypto.params.KeyParameter;
-import org.bouncycastle.crypto.params.RC5Parameters;
-
-/**
- * The specification for RC5 came from the <code>RC5 Encryption Algorithm</code>
- * publication in RSA CryptoBytes, Spring of 1995. 
- * <em>http://www.rsasecurity.com/rsalabs/cryptobytes</em>.
- * <p>
- * This implementation has a word size of 32 bits.
- * <p>
- * Implementation courtesy of Tito Pena.
- */
-public class RC532Engine
-    implements BlockCipher
-{
-    /*
-     * the number of rounds to perform
-     */
-    private int _noRounds;
-
-    /*
-     * the expanded key array of size 2*(rounds + 1)
-     */
-    private int _S[];
-
-    /*
-     * our "magic constants" for 32 32
-     *
-     * Pw = Odd((e-2) * 2^wordsize)
-     * Qw = Odd((o-2) * 2^wordsize)
-     *
-     * where e is the base of natural logarithms (2.718281828...)
-     * and o is the golden ratio (1.61803398...)
-     */
-    private static final int P32 = 0xb7e15163;
-    private static final int Q32 = 0x9e3779b9;
-
-    private boolean forEncryption;
-
-    /**
-     * Create an instance of the RC5 encryption algorithm
-     * and set some defaults
-     */
-    public RC532Engine()
-    {
-        _noRounds     = 12;         // the default
-        _S            = null;
-    }
-
-    public String getAlgorithmName()
-    {
-        return "RC5-32";
-    }
-
-    public int getBlockSize()
-    {
-        return 2 * 4;
-    }
-
-    /**
-     * initialise a RC5-32 cipher.
-     *
-     * @param forEncryption whether or not we are for encryption.
-     * @param params the parameters required to set up the cipher.
-     * @exception IllegalArgumentException if the params argument is
-     * inappropriate.
-     */
-    public void init(
-        boolean             forEncryption,
-        CipherParameters    params)
-    {
-        if (params instanceof RC5Parameters)
-        {
-            RC5Parameters       p = (RC5Parameters)params;
-
-            _noRounds     = p.getRounds();
-
-            setKey(p.getKey());
-        }
-        else if (params instanceof KeyParameter)
-        {
-            KeyParameter       p = (KeyParameter)params;
-
-            setKey(p.getKey());
-        }
-        else
-        {
-            throw new IllegalArgumentException("invalid parameter passed to RC532 init - " + params.getClass().getName());
-        }
-
-        this.forEncryption = forEncryption;
-    }
-
-    public int processBlock(
-        byte[]  in,
-        int     inOff,
-        byte[]  out,
-        int     outOff)
-    {
-        return (forEncryption) ? encryptBlock(in, inOff, out, outOff) 
-                                    : decryptBlock(in, inOff, out, outOff);
-    }
-
-    public void reset()
-    {
-    }
-
-    /**
-     * Re-key the cipher.
-     * <p>
-     * @param  key  the key to be used
-     */
-    private void setKey(
-        byte[]      key)
-    {
-        //
-        // KEY EXPANSION:
-        //
-        // There are 3 phases to the key expansion.
-        //
-        // Phase 1:
-        //   Copy the secret key K[0...b-1] into an array L[0..c-1] of
-        //   c = ceil(b/u), where u = 32/8 in little-endian order.
-        //   In other words, we fill up L using u consecutive key bytes
-        //   of K. Any unfilled byte positions in L are zeroed. In the
-        //   case that b = c = 0, set c = 1 and L[0] = 0.
-        //
-        int[]   L = new int[(key.length + (4 - 1)) / 4];
-
-        for (int i = 0; i != key.length; i++)
-        {
-            L[i / 4] += (key[i] & 0xff) << (8 * (i % 4));
-        }
-
-        //
-        // Phase 2:
-        //   Initialize S to a particular fixed pseudo-random bit pattern
-        //   using an arithmetic progression modulo 2^wordsize determined
-        //   by the magic numbers, Pw & Qw.
-        //
-        _S            = new int[2*(_noRounds + 1)];
-
-        _S[0] = P32;
-        for (int i=1; i < _S.length; i++)
-        {
-            _S[i] = (_S[i-1] + Q32);
-        }
-
-        //
-        // Phase 3:
-        //   Mix in the user's secret key in 3 passes over the arrays S & L.
-        //   The max of the arrays sizes is used as the loop control
-        //
-        int iter;
-
-        if (L.length > _S.length)
-        {
-            iter = 3 * L.length;
-        }
-        else
-        {
-            iter = 3 * _S.length;
-        }
-
-        int A = 0, B = 0;
-        int i = 0, j = 0;
-
-        for (int k = 0; k < iter; k++)
-        {
-            A = _S[i] = rotateLeft(_S[i] + A + B, 3);
-            B =  L[j] = rotateLeft(L[j] + A + B, A+B);
-            i = (i+1) % _S.length;
-            j = (j+1) %  L.length;
-        }
-    }
-
-    /**
-     * Encrypt the given block starting at the given offset and place
-     * the result in the provided buffer starting at the given offset.
-     * <p>
-     * @param  in     in byte buffer containing data to encrypt
-     * @param  inOff  offset into src buffer
-     * @param  out     out buffer where encrypted data is written
-     * @param  outOff  offset into out buffer
-     */
-    private int encryptBlock(
-        byte[]  in,
-        int     inOff,
-        byte[]  out,
-        int     outOff)
-    {
-        int A = bytesToWord(in, inOff) + _S[0];
-        int B = bytesToWord(in, inOff + 4) + _S[1];
-
-        for (int i = 1; i <= _noRounds; i++)
-        {
-            A = rotateLeft(A ^ B, B) + _S[2*i];
-            B = rotateLeft(B ^ A, A) + _S[2*i+1];
-        }
-        
-        wordToBytes(A, out, outOff);
-        wordToBytes(B, out, outOff + 4);
-        
-        return 2 * 4;
-    }
-
-    private int decryptBlock(
-        byte[]  in,
-        int     inOff,
-        byte[]  out,
-        int     outOff)
-    {
-        int A = bytesToWord(in, inOff);
-        int B = bytesToWord(in, inOff + 4);
-
-        for (int i = _noRounds; i >= 1; i--)
-        {
-            B = rotateRight(B - _S[2*i+1], A) ^ A;
-            A = rotateRight(A - _S[2*i],   B) ^ B;
-        }
-        
-        wordToBytes(A - _S[0], out, outOff);
-        wordToBytes(B - _S[1], out, outOff + 4);
-        
-        return 2 * 4;
-    }
-
-    
-    //////////////////////////////////////////////////////////////
-    //
-    // PRIVATE Helper Methods
-    //
-    //////////////////////////////////////////////////////////////
-
-    /**
-     * Perform a left "spin" of the word. The rotation of the given
-     * word <em>x</em> is rotated left by <em>y</em> bits.
-     * Only the <em>lg(32)</em> low-order bits of <em>y</em>
-     * are used to determine the rotation amount. Here it is 
-     * assumed that the wordsize used is a power of 2.
-     * <p>
-     * @param  x  word to rotate
-     * @param  y    number of bits to rotate % 32
-     */
-    private int rotateLeft(int x, int y)
-    {
-        return ((x << (y & (32-1))) | (x >>> (32 - (y & (32-1)))));
-    }
-
-    /**
-     * Perform a right "spin" of the word. The rotation of the given
-     * word <em>x</em> is rotated left by <em>y</em> bits.
-     * Only the <em>lg(32)</em> low-order bits of <em>y</em>
-     * are used to determine the rotation amount. Here it is 
-     * assumed that the wordsize used is a power of 2.
-     * <p>
-     * @param  x  word to rotate
-     * @param  y    number of bits to rotate % 32
-     */
-    private int rotateRight(int x, int y)
-    {
-        return ((x >>> (y & (32-1))) | (x << (32 - (y & (32-1)))));
-    }
-
-    private int bytesToWord(
-        byte[]  src,
-        int     srcOff)
-    {
-        return (src[srcOff] & 0xff) | ((src[srcOff + 1] & 0xff) << 8)
-            | ((src[srcOff + 2] & 0xff) << 16) | ((src[srcOff + 3] & 0xff) << 24);
-    }
-
-    private void wordToBytes(
-        int    word,
-        byte[]  dst,
-        int     dstOff)
-    {
-        dst[dstOff] = (byte)word;
-        dst[dstOff + 1] = (byte)(word >> 8);
-        dst[dstOff + 2] = (byte)(word >> 16);
-        dst[dstOff + 3] = (byte)(word >> 24);
-    }
-}
diff --git a/src/main/java/org/bouncycastle/crypto/engines/RC564Engine.java b/src/main/java/org/bouncycastle/crypto/engines/RC564Engine.java
deleted file mode 100644
index 2121a4b..0000000
--- a/src/main/java/org/bouncycastle/crypto/engines/RC564Engine.java
+++ /dev/null
@@ -1,288 +0,0 @@
-package org.bouncycastle.crypto.engines;
-
-import org.bouncycastle.crypto.BlockCipher;
-import org.bouncycastle.crypto.CipherParameters;
-import org.bouncycastle.crypto.params.RC5Parameters;
-
-/**
- * The specification for RC5 came from the <code>RC5 Encryption Algorithm</code>
- * publication in RSA CryptoBytes, Spring of 1995. 
- * <em>http://www.rsasecurity.com/rsalabs/cryptobytes</em>.
- * <p>
- * This implementation is set to work with a 64 bit word size.
- * <p>
- * Implementation courtesy of Tito Pena.
- */
-public class RC564Engine
-    implements BlockCipher
-{
-    private static final int wordSize = 64;
-    private static final int bytesPerWord = wordSize / 8;
-
-    /*
-     * the number of rounds to perform
-     */
-    private int _noRounds;
-
-    /*
-     * the expanded key array of size 2*(rounds + 1)
-     */
-    private long _S[];
-
-    /*
-     * our "magic constants" for wordSize 62
-     *
-     * Pw = Odd((e-2) * 2^wordsize)
-     * Qw = Odd((o-2) * 2^wordsize)
-     *
-     * where e is the base of natural logarithms (2.718281828...)
-     * and o is the golden ratio (1.61803398...)
-     */
-    private static final long P64 = 0xb7e151628aed2a6bL;
-    private static final long Q64 = 0x9e3779b97f4a7c15L;
-
-    private boolean forEncryption;
-
-    /**
-     * Create an instance of the RC5 encryption algorithm
-     * and set some defaults
-     */
-    public RC564Engine()
-    {
-        _noRounds     = 12;
-        _S            = null;
-    }
-
-    public String getAlgorithmName()
-    {
-        return "RC5-64";
-    }
-
-    public int getBlockSize()
-    {
-        return 2 * bytesPerWord;
-    }
-
-    /**
-     * initialise a RC5-64 cipher.
-     *
-     * @param forEncryption whether or not we are for encryption.
-     * @param params the parameters required to set up the cipher.
-     * @exception IllegalArgumentException if the params argument is
-     * inappropriate.
-     */
-    public void init(
-        boolean             forEncryption,
-        CipherParameters    params)
-    {
-        if (!(params instanceof RC5Parameters))
-        {
-            throw new IllegalArgumentException("invalid parameter passed to RC564 init - " + params.getClass().getName());
-        }
-
-        RC5Parameters       p = (RC5Parameters)params;
-
-        this.forEncryption = forEncryption;
-
-        _noRounds     = p.getRounds();
-
-        setKey(p.getKey());
-    }
-
-    public int processBlock(
-        byte[]  in,
-        int     inOff,
-        byte[]  out,
-        int     outOff)
-    {
-        return (forEncryption) ? encryptBlock(in, inOff, out, outOff) 
-                                    : decryptBlock(in, inOff, out, outOff);
-    }
-
-    public void reset()
-    {
-    }
-
-    /**
-     * Re-key the cipher.
-     * <p>
-     * @param  key  the key to be used
-     */
-    private void setKey(
-        byte[]      key)
-    {
-        //
-        // KEY EXPANSION:
-        //
-        // There are 3 phases to the key expansion.
-        //
-        // Phase 1:
-        //   Copy the secret key K[0...b-1] into an array L[0..c-1] of
-        //   c = ceil(b/u), where u = wordSize/8 in little-endian order.
-        //   In other words, we fill up L using u consecutive key bytes
-        //   of K. Any unfilled byte positions in L are zeroed. In the
-        //   case that b = c = 0, set c = 1 and L[0] = 0.
-        //
-        long[]   L = new long[(key.length + (bytesPerWord - 1)) / bytesPerWord];
-
-        for (int i = 0; i != key.length; i++)
-        {
-            L[i / bytesPerWord] += (long)(key[i] & 0xff) << (8 * (i % bytesPerWord));
-        }
-
-        //
-        // Phase 2:
-        //   Initialize S to a particular fixed pseudo-random bit pattern
-        //   using an arithmetic progression modulo 2^wordsize determined
-        //   by the magic numbers, Pw & Qw.
-        //
-        _S            = new long[2*(_noRounds + 1)];
-
-        _S[0] = P64;
-        for (int i=1; i < _S.length; i++)
-        {
-            _S[i] = (_S[i-1] + Q64);
-        }
-
-        //
-        // Phase 3:
-        //   Mix in the user's secret key in 3 passes over the arrays S & L.
-        //   The max of the arrays sizes is used as the loop control
-        //
-        int iter;
-
-        if (L.length > _S.length)
-        {
-            iter = 3 * L.length;
-        }
-        else
-        {
-            iter = 3 * _S.length;
-        }
-
-        long A = 0, B = 0;
-        int i = 0, j = 0;
-
-        for (int k = 0; k < iter; k++)
-        {
-            A = _S[i] = rotateLeft(_S[i] + A + B, 3);
-            B =  L[j] = rotateLeft(L[j] + A + B, A+B);
-            i = (i+1) % _S.length;
-            j = (j+1) %  L.length;
-        }
-    }
-
-    /**
-     * Encrypt the given block starting at the given offset and place
-     * the result in the provided buffer starting at the given offset.
-     * <p>
-     * @param  in      in byte buffer containing data to encrypt
-     * @param  inOff   offset into src buffer
-     * @param  out     out buffer where encrypted data is written
-     * @param  outOff  offset into out buffer
-     */
-    private int encryptBlock(
-        byte[]  in,
-        int     inOff,
-        byte[]  out,
-        int     outOff)
-    {
-        long A = bytesToWord(in, inOff) + _S[0];
-        long B = bytesToWord(in, inOff + bytesPerWord) + _S[1];
-
-        for (int i = 1; i <= _noRounds; i++)
-        {
-            A = rotateLeft(A ^ B, B) + _S[2*i];
-            B = rotateLeft(B ^ A, A) + _S[2*i+1];
-        }
-        
-        wordToBytes(A, out, outOff);
-        wordToBytes(B, out, outOff + bytesPerWord);
-        
-        return 2 * bytesPerWord;
-    }
-
-    private int decryptBlock(
-        byte[]  in,
-        int     inOff,
-        byte[]  out,
-        int     outOff)
-    {
-        long A = bytesToWord(in, inOff);
-        long B = bytesToWord(in, inOff + bytesPerWord);
-
-        for (int i = _noRounds; i >= 1; i--)
-        {
-            B = rotateRight(B - _S[2*i+1], A) ^ A;
-            A = rotateRight(A - _S[2*i],   B) ^ B;
-        }
-        
-        wordToBytes(A - _S[0], out, outOff);
-        wordToBytes(B - _S[1], out, outOff + bytesPerWord);
-        
-        return 2 * bytesPerWord;
-    }
-
-    
-    //////////////////////////////////////////////////////////////
-    //
-    // PRIVATE Helper Methods
-    //
-    //////////////////////////////////////////////////////////////
-
-    /**
-     * Perform a left "spin" of the word. The rotation of the given
-     * word <em>x</em> is rotated left by <em>y</em> bits.
-     * Only the <em>lg(wordSize)</em> low-order bits of <em>y</em>
-     * are used to determine the rotation amount. Here it is 
-     * assumed that the wordsize used is a power of 2.
-     * <p>
-     * @param  x  word to rotate
-     * @param  y    number of bits to rotate % wordSize
-     */
-    private long rotateLeft(long x, long y)
-    {
-        return ((x << (y & (wordSize-1))) | (x >>> (wordSize - (y & (wordSize-1)))));
-    }
-
-    /**
-     * Perform a right "spin" of the word. The rotation of the given
-     * word <em>x</em> is rotated left by <em>y</em> bits.
-     * Only the <em>lg(wordSize)</em> low-order bits of <em>y</em>
-     * are used to determine the rotation amount. Here it is 
-     * assumed that the wordsize used is a power of 2.
-     * <p>
-     * @param  x  word to rotate
-     * @param  y    number of bits to rotate % wordSize
-     */
-    private long rotateRight(long x, long y)
-    {
-        return ((x >>> (y & (wordSize-1))) | (x << (wordSize - (y & (wordSize-1)))));
-    }
-
-    private long bytesToWord(
-        byte[]  src,
-        int     srcOff)
-    {
-        long    word = 0;
-
-        for (int i = bytesPerWord - 1; i >= 0; i--)
-        {
-            word = (word << 8) + (src[i + srcOff] & 0xff);
-        }
-
-        return word;
-    }
-
-    private void wordToBytes(
-        long    word,
-        byte[]  dst,
-        int     dstOff)
-    {
-        for (int i = 0; i < bytesPerWord; i++)
-        {
-            dst[i + dstOff] = (byte)word;
-            word >>>= 8;
-        }
-    }
-}
diff --git a/src/main/java/org/bouncycastle/crypto/params/RC5Parameters.java b/src/main/java/org/bouncycastle/crypto/params/RC5Parameters.java
deleted file mode 100644
index 6cbd57f..0000000
--- a/src/main/java/org/bouncycastle/crypto/params/RC5Parameters.java
+++ /dev/null
@@ -1,35 +0,0 @@
-package org.bouncycastle.crypto.params;
-
-import org.bouncycastle.crypto.CipherParameters;
-
-public class RC5Parameters
-    implements CipherParameters
-{
-    private byte[]  key;
-    private int     rounds;
-
-    public RC5Parameters(
-        byte[]  key,
-        int     rounds)
-    {
-        if (key.length > 255)
-        {
-            throw new IllegalArgumentException("RC5 key length can be no greater than 255");
-        }
-
-        this.key = new byte[key.length];
-        this.rounds = rounds;
-
-        System.arraycopy(key, 0, this.key, 0, key.length);
-    }
-
-    public byte[] getKey()
-    {
-        return key;
-    }
-
-    public int getRounds()
-    {
-        return rounds;
-    }
-}
diff --git a/src/main/java/org/bouncycastle/jce/provider/JCEBlockCipher.java b/src/main/java/org/bouncycastle/jce/provider/JCEBlockCipher.java
index f3c9d1f..5ba4cc2 100644
--- a/src/main/java/org/bouncycastle/jce/provider/JCEBlockCipher.java
+++ b/src/main/java/org/bouncycastle/jce/provider/JCEBlockCipher.java
@@ -17,8 +17,10 @@
 // import org.bouncycastle.crypto.engines.GOST28147Engine;
 // END android-removed
 import org.bouncycastle.crypto.engines.RC2Engine;
-import org.bouncycastle.crypto.engines.RC532Engine;
-import org.bouncycastle.crypto.engines.RC564Engine;
+// BEGIN android-removed
+// import org.bouncycastle.crypto.engines.RC532Engine;
+// import org.bouncycastle.crypto.engines.RC564Engine;
+// END android-removed
 // import org.bouncycastle.crypto.engines.RC6Engine;
 // import org.bouncycastle.crypto.engines.RijndaelEngine;
 // import org.bouncycastle.crypto.engines.SEEDEngine;
@@ -56,10 +58,8 @@
 import org.bouncycastle.crypto.params.ParametersWithRandom;
 // BEGIN android-removed
 // import org.bouncycastle.crypto.params.ParametersWithSBox;
-// END android-removed
-import org.bouncycastle.crypto.params.RC2Parameters;
-import org.bouncycastle.crypto.params.RC5Parameters;
-// BEGIN android-removed
+// import org.bouncycastle.crypto.params.RC2Parameters;
+// import org.bouncycastle.crypto.params.RC5Parameters;
 // import org.bouncycastle.jce.spec.GOST28147ParameterSpec;
 // END android-removed
 import org.bouncycastle.util.Strings;
@@ -72,8 +72,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 java.security.AlgorithmParameters;
 import java.security.InvalidAlgorithmParameterException;
 import java.security.InvalidKeyException;
@@ -91,8 +93,10 @@
     //
     private Class[]                 availableSpecs =
                                     {
-                                        RC2ParameterSpec.class,
-                                        RC5ParameterSpec.class,
+                                        // BEGIN android-removed
+                                        // RC2ParameterSpec.class,
+                                        // RC5ParameterSpec.class,
+                                        // END android-removed
                                         IvParameterSpec.class,
                                         PBEParameterSpec.class,
                                         // BEGIN android-removed
@@ -393,13 +397,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).
@@ -479,51 +485,51 @@
         //         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 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;
-            }
-        }
         else
         {
             throw new InvalidAlgorithmParameterException("unknown parameter type.");
diff --git a/src/main/java/org/bouncycastle/jce/provider/JCEStreamCipher.java b/src/main/java/org/bouncycastle/jce/provider/JCEStreamCipher.java
index 27fe299..6226581 100644
--- a/src/main/java/org/bouncycastle/jce/provider/JCEStreamCipher.java
+++ b/src/main/java/org/bouncycastle/jce/provider/JCEStreamCipher.java
@@ -31,8 +31,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 java.security.AlgorithmParameters;
 import java.security.InvalidAlgorithmParameterException;
 import java.security.InvalidKeyException;
@@ -48,8 +50,10 @@
     //
     private Class[]                 availableSpecs =
                                     {
-                                        RC2ParameterSpec.class,
-                                        RC5ParameterSpec.class,
+                                        // BEGIN android-removed
+                                        // RC2ParameterSpec.class,
+                                        // RC5ParameterSpec.class,
+                                        // END android-removed
                                         IvParameterSpec.class,
                                         PBEParameterSpec.class
                                     };
diff --git a/src/main/java/org/bouncycastle/jce/provider/JDKAlgorithmParameterGenerator.java b/src/main/java/org/bouncycastle/jce/provider/JDKAlgorithmParameterGenerator.java
index f1865ec..f367434 100644
--- a/src/main/java/org/bouncycastle/jce/provider/JDKAlgorithmParameterGenerator.java
+++ b/src/main/java/org/bouncycastle/jce/provider/JDKAlgorithmParameterGenerator.java
@@ -18,7 +18,9 @@
 import javax.crypto.spec.DHGenParameterSpec;
 import javax.crypto.spec.DHParameterSpec;
 import javax.crypto.spec.IvParameterSpec;
-import javax.crypto.spec.RC2ParameterSpec;
+// BEGIN android-removed
+// import javax.crypto.spec.RC2ParameterSpec;
+// END android-removed
 import java.security.AlgorithmParameterGeneratorSpi;
 import java.security.AlgorithmParameters;
 import java.security.InvalidAlgorithmParameterException;
diff --git a/src/main/java/org/bouncycastle/jce/provider/WrapCipherSpi.java b/src/main/java/org/bouncycastle/jce/provider/WrapCipherSpi.java
index f2cdc73..aa50406 100644
--- a/src/main/java/org/bouncycastle/jce/provider/WrapCipherSpi.java
+++ b/src/main/java/org/bouncycastle/jce/provider/WrapCipherSpi.java
@@ -29,8 +29,8 @@
 import javax.crypto.spec.PBEParameterSpec;
 // BEGIN android-removed
 // import javax.crypto.spec.RC2ParameterSpec;
+// import javax.crypto.spec.RC5ParameterSpec;
 // END android-removed
-import javax.crypto.spec.RC5ParameterSpec;
 import javax.crypto.spec.SecretKeySpec;
 import java.security.AlgorithmParameters;
 import java.security.InvalidAlgorithmParameterException;
@@ -58,8 +58,8 @@
                                         PBEParameterSpec.class,
                                         // BEGIN android-removed
                                         // RC2ParameterSpec.class,
+                                        // RC5ParameterSpec.class
                                         // END android-removed
-                                        RC5ParameterSpec.class
                                     };
 
     protected int                     pbeType = PKCS12;