DO NOT MERGE bouncycastle: limit input length as specified by the NIST spec

Bug: 24106146

Adapted from commit 9462245630b2913830b63310aa0d40a0901ccae5

Change-Id: Ic3cb8d87ac86700cab15c553e9cc638b55d92df4
diff --git a/bcprov/src/main/java/org/bouncycastle/crypto/modes/GCMBlockCipher.java b/bcprov/src/main/java/org/bouncycastle/crypto/modes/GCMBlockCipher.java
index 9e617ec..031fe1b 100644
--- a/bcprov/src/main/java/org/bouncycastle/crypto/modes/GCMBlockCipher.java
+++ b/bcprov/src/main/java/org/bouncycastle/crypto/modes/GCMBlockCipher.java
@@ -22,6 +22,11 @@
     implements AEADBlockCipher
 {
     private static final int BLOCK_SIZE = 16;
+    // BEGIN android-added
+    // 2^36-32 : limitation imposed by NIST GCM as otherwise the counter is wrapped and it can leak
+    // plaintext and authentication key
+    private static final long MAX_INPUT_SIZE = 68719476704L;
+    // END android-added
 
     // not final due to a compiler bug 
     private BlockCipher   cipher;
@@ -194,6 +199,14 @@
         return totalData < macSize ? 0 : totalData - macSize;
     }
 
+    // BEGIN android-added
+    /** Helper used to ensure that {@link #MAX_INPUT_SIZE} is not exceeded. */
+    private long getTotalInputSizeAfterNewInput(int newInputLen)
+    {
+        return totalLength + newInputLen + bufOff;
+    }
+    // END android-added
+
     public int getUpdateOutputSize(int len)
     {
         int totalData = len + bufOff;
@@ -210,6 +223,11 @@
 
     public void processAADByte(byte in)
     {
+        // BEGIN android-added
+        if (getTotalInputSizeAfterNewInput(1) > MAX_INPUT_SIZE) {
+            throw new DataLengthException("Input exceeded " + MAX_INPUT_SIZE + " bytes");
+        }
+        // END android-added
         atBlock[atBlockPos] = in;
         if (++atBlockPos == BLOCK_SIZE)
         {
@@ -222,6 +240,11 @@
 
     public void processAADBytes(byte[] in, int inOff, int len)
     {
+        // BEGIN android-added
+        if (getTotalInputSizeAfterNewInput(len) > MAX_INPUT_SIZE) {
+            throw new DataLengthException("Input exceeded " + MAX_INPUT_SIZE + " bytes");
+        }
+        // END android-added
         for (int i = 0; i < len; ++i)
         {
             atBlock[atBlockPos] = in[inOff + i];
@@ -259,6 +282,11 @@
     public int processByte(byte in, byte[] out, int outOff)
         throws DataLengthException
     {
+        // BEGIN android-added
+        if (getTotalInputSizeAfterNewInput(1) > MAX_INPUT_SIZE) {
+            throw new DataLengthException("Input exceeded " + MAX_INPUT_SIZE + " bytes");
+        }
+        // END android-added
         bufBlock[bufOff] = in;
         if (++bufOff == bufBlock.length)
         {
@@ -271,6 +299,11 @@
     public int processBytes(byte[] in, int inOff, int len, byte[] out, int outOff)
         throws DataLengthException
     {
+        // BEGIN android-added
+        if (getTotalInputSizeAfterNewInput(len) > MAX_INPUT_SIZE) {
+            throw new DataLengthException("Input exceeded " + MAX_INPUT_SIZE + " bytes");
+        }
+        // END android-added
         int resultLen = 0;
 
         for (int i = 0; i < len; ++i)
diff --git a/patches/bcprov.patch b/patches/bcprov.patch
index a22ef4d..e1f3903 100644
--- a/patches/bcprov.patch
+++ b/patches/bcprov.patch
@@ -1,5 +1,5 @@
 diff -Naur bcprov-jdk15on-150.orig/org/bouncycastle/asn1/ASN1Null.java bcprov-jdk15on-150/org/bouncycastle/asn1/ASN1Null.java
---- bcprov-jdk15on-150.orig/org/bouncycastle/asn1/ASN1Null.java	2013-12-03 20:18:20.000000000 +0000
+--- bcprov-jdk15on-150.orig/org/bouncycastle/asn1/ASN1Null.java	2013-12-03 12:18:20.000000000 +0000
 +++ bcprov-jdk15on-150/org/bouncycastle/asn1/ASN1Null.java	2013-01-31 02:26:40.000000000 +0000
 @@ -11,9 +11,11 @@
      /**
@@ -15,7 +15,7 @@
      public static ASN1Null getInstance(Object o)
      {
 diff -Naur bcprov-jdk15on-150.orig/org/bouncycastle/asn1/DERBoolean.java bcprov-jdk15on-150/org/bouncycastle/asn1/DERBoolean.java
---- bcprov-jdk15on-150.orig/org/bouncycastle/asn1/DERBoolean.java	2013-12-03 20:18:20.000000000 +0000
+--- bcprov-jdk15on-150.orig/org/bouncycastle/asn1/DERBoolean.java	2013-12-03 12:18:20.000000000 +0000
 +++ bcprov-jdk15on-150/org/bouncycastle/asn1/DERBoolean.java	2013-12-12 00:35:05.000000000 +0000
 @@ -10,7 +10,9 @@
      private static final byte[] TRUE_VALUE = new byte[] { (byte)0xff };
@@ -70,7 +70,7 @@
          this.value = (value) ? TRUE_VALUE : FALSE_VALUE;
      }
 diff -Naur bcprov-jdk15on-150.orig/org/bouncycastle/asn1/DERNull.java bcprov-jdk15on-150/org/bouncycastle/asn1/DERNull.java
---- bcprov-jdk15on-150.orig/org/bouncycastle/asn1/DERNull.java	2013-12-03 20:18:20.000000000 +0000
+--- bcprov-jdk15on-150.orig/org/bouncycastle/asn1/DERNull.java	2013-12-03 12:18:20.000000000 +0000
 +++ bcprov-jdk15on-150/org/bouncycastle/asn1/DERNull.java	2013-01-31 02:26:40.000000000 +0000
 @@ -15,7 +15,9 @@
      /**
@@ -84,7 +84,7 @@
      }
  
 diff -Naur bcprov-jdk15on-150.orig/org/bouncycastle/asn1/DERObjectIdentifier.java bcprov-jdk15on-150/org/bouncycastle/asn1/DERObjectIdentifier.java
---- bcprov-jdk15on-150.orig/org/bouncycastle/asn1/DERObjectIdentifier.java	2013-12-03 20:18:20.000000000 +0000
+--- bcprov-jdk15on-150.orig/org/bouncycastle/asn1/DERObjectIdentifier.java	2013-12-03 12:18:20.000000000 +0000
 +++ bcprov-jdk15on-150/org/bouncycastle/asn1/DERObjectIdentifier.java	2013-12-12 00:35:05.000000000 +0000
 @@ -162,7 +162,13 @@
              }
@@ -117,7 +117,7 @@
  
      DERObjectIdentifier(DERObjectIdentifier oid, String branchID)
 diff -Naur bcprov-jdk15on-150.orig/org/bouncycastle/asn1/DERPrintableString.java bcprov-jdk15on-150/org/bouncycastle/asn1/DERPrintableString.java
---- bcprov-jdk15on-150.orig/org/bouncycastle/asn1/DERPrintableString.java	2013-12-03 20:18:20.000000000 +0000
+--- bcprov-jdk15on-150.orig/org/bouncycastle/asn1/DERPrintableString.java	2013-12-03 12:18:20.000000000 +0000
 +++ bcprov-jdk15on-150/org/bouncycastle/asn1/DERPrintableString.java	2013-01-31 02:26:40.000000000 +0000
 @@ -12,7 +12,9 @@
      extends ASN1Primitive
@@ -131,7 +131,7 @@
      /**
       * return a printable string from the passed in object.
 diff -Naur bcprov-jdk15on-150.orig/org/bouncycastle/asn1/StreamUtil.java bcprov-jdk15on-150/org/bouncycastle/asn1/StreamUtil.java
---- bcprov-jdk15on-150.orig/org/bouncycastle/asn1/StreamUtil.java	2013-12-03 20:18:20.000000000 +0000
+--- bcprov-jdk15on-150.orig/org/bouncycastle/asn1/StreamUtil.java	2013-12-03 12:18:20.000000000 +0000
 +++ bcprov-jdk15on-150/org/bouncycastle/asn1/StreamUtil.java	2014-05-05 17:17:14.000000000 +0000
 @@ -8,7 +8,9 @@
  
@@ -163,7 +163,7 @@
  
      static int calculateBodyLength(
 diff -Naur bcprov-jdk15on-150.orig/org/bouncycastle/asn1/cms/ContentInfo.java bcprov-jdk15on-150/org/bouncycastle/asn1/cms/ContentInfo.java
---- bcprov-jdk15on-150.orig/org/bouncycastle/asn1/cms/ContentInfo.java	2013-12-03 20:18:20.000000000 +0000
+--- bcprov-jdk15on-150.orig/org/bouncycastle/asn1/cms/ContentInfo.java	2013-12-03 12:18:20.000000000 +0000
 +++ bcprov-jdk15on-150/org/bouncycastle/asn1/cms/ContentInfo.java	2013-12-12 00:35:05.000000000 +0000
 @@ -28,7 +28,9 @@
   */
@@ -177,7 +177,7 @@
      private ASN1ObjectIdentifier contentType;
      private ASN1Encodable        content;
 diff -Naur bcprov-jdk15on-150.orig/org/bouncycastle/asn1/pkcs/PKCSObjectIdentifiers.java bcprov-jdk15on-150/org/bouncycastle/asn1/pkcs/PKCSObjectIdentifiers.java
---- bcprov-jdk15on-150.orig/org/bouncycastle/asn1/pkcs/PKCSObjectIdentifiers.java	2013-12-03 20:18:20.000000000 +0000
+--- bcprov-jdk15on-150.orig/org/bouncycastle/asn1/pkcs/PKCSObjectIdentifiers.java	2013-12-03 12:18:20.000000000 +0000
 +++ bcprov-jdk15on-150/org/bouncycastle/asn1/pkcs/PKCSObjectIdentifiers.java	2013-12-12 00:35:05.000000000 +0000
 @@ -13,10 +13,12 @@
      static final ASN1ObjectIdentifier    pkcs_1                    = new ASN1ObjectIdentifier("1.2.840.113549.1.1");
@@ -221,7 +221,7 @@
      //
      // md5 OBJECT IDENTIFIER ::=
 diff -Naur bcprov-jdk15on-150.orig/org/bouncycastle/asn1/x509/AuthorityKeyIdentifier.java bcprov-jdk15on-150/org/bouncycastle/asn1/x509/AuthorityKeyIdentifier.java
---- bcprov-jdk15on-150.orig/org/bouncycastle/asn1/x509/AuthorityKeyIdentifier.java	2013-12-03 20:18:20.000000000 +0000
+--- bcprov-jdk15on-150.orig/org/bouncycastle/asn1/x509/AuthorityKeyIdentifier.java	2013-12-03 12:18:20.000000000 +0000
 +++ bcprov-jdk15on-150/org/bouncycastle/asn1/x509/AuthorityKeyIdentifier.java	2013-05-25 02:14:15.000000000 +0000
 @@ -14,7 +14,9 @@
  import org.bouncycastle.asn1.DERSequence;
@@ -257,7 +257,7 @@
  
          byte[] bytes = spki.getPublicKeyData().getBytes();
 diff -Naur bcprov-jdk15on-150.orig/org/bouncycastle/asn1/x509/SubjectKeyIdentifier.java bcprov-jdk15on-150/org/bouncycastle/asn1/x509/SubjectKeyIdentifier.java
---- bcprov-jdk15on-150.orig/org/bouncycastle/asn1/x509/SubjectKeyIdentifier.java	2013-12-03 20:18:20.000000000 +0000
+--- bcprov-jdk15on-150.orig/org/bouncycastle/asn1/x509/SubjectKeyIdentifier.java	2013-12-03 12:18:20.000000000 +0000
 +++ bcprov-jdk15on-150/org/bouncycastle/asn1/x509/SubjectKeyIdentifier.java	2013-01-31 02:26:40.000000000 +0000
 @@ -6,7 +6,9 @@
  import org.bouncycastle.asn1.ASN1TaggedObject;
@@ -282,7 +282,7 @@
  
          byte[] bytes = spki.getPublicKeyData().getBytes();
 diff -Naur bcprov-jdk15on-150.orig/org/bouncycastle/asn1/x509/X509Name.java bcprov-jdk15on-150/org/bouncycastle/asn1/x509/X509Name.java
---- bcprov-jdk15on-150.orig/org/bouncycastle/asn1/x509/X509Name.java	2013-12-03 20:18:20.000000000 +0000
+--- bcprov-jdk15on-150.orig/org/bouncycastle/asn1/x509/X509Name.java	2013-12-03 12:18:20.000000000 +0000
 +++ bcprov-jdk15on-150/org/bouncycastle/asn1/x509/X509Name.java	2013-12-12 00:35:05.000000000 +0000
 @@ -255,8 +255,10 @@
       */
@@ -309,7 +309,7 @@
          }
      }
 diff -Naur bcprov-jdk15on-150.orig/org/bouncycastle/asn1/x509/X509NameTokenizer.java bcprov-jdk15on-150/org/bouncycastle/asn1/x509/X509NameTokenizer.java
---- bcprov-jdk15on-150.orig/org/bouncycastle/asn1/x509/X509NameTokenizer.java	2013-12-03 20:18:20.000000000 +0000
+--- bcprov-jdk15on-150.orig/org/bouncycastle/asn1/x509/X509NameTokenizer.java	2013-12-03 12:18:20.000000000 +0000
 +++ bcprov-jdk15on-150/org/bouncycastle/asn1/x509/X509NameTokenizer.java	2013-05-25 02:14:15.000000000 +0000
 @@ -78,6 +78,17 @@
                  }
@@ -330,7 +330,7 @@
                  }
              }
 diff -Naur bcprov-jdk15on-150.orig/org/bouncycastle/asn1/x9/ECNamedCurveTable.java bcprov-jdk15on-150/org/bouncycastle/asn1/x9/ECNamedCurveTable.java
---- bcprov-jdk15on-150.orig/org/bouncycastle/asn1/x9/ECNamedCurveTable.java	2013-12-03 20:18:20.000000000 +0000
+--- bcprov-jdk15on-150.orig/org/bouncycastle/asn1/x9/ECNamedCurveTable.java	2013-12-03 12:18:20.000000000 +0000
 +++ bcprov-jdk15on-150/org/bouncycastle/asn1/x9/ECNamedCurveTable.java	2013-12-12 00:35:05.000000000 +0000
 @@ -6,7 +6,9 @@
  import org.bouncycastle.asn1.ASN1ObjectIdentifier;
@@ -701,7 +701,7 @@
 +    }
 +}
 diff -Naur bcprov-jdk15on-150.orig/org/bouncycastle/crypto/encodings/OAEPEncoding.java bcprov-jdk15on-150/org/bouncycastle/crypto/encodings/OAEPEncoding.java
---- bcprov-jdk15on-150.orig/org/bouncycastle/crypto/encodings/OAEPEncoding.java	2013-12-03 20:18:20.000000000 +0000
+--- bcprov-jdk15on-150.orig/org/bouncycastle/crypto/encodings/OAEPEncoding.java	2013-12-03 12:18:20.000000000 +0000
 +++ bcprov-jdk15on-150/org/bouncycastle/crypto/encodings/OAEPEncoding.java	2013-05-25 02:14:15.000000000 +0000
 @@ -6,7 +6,9 @@
  import org.bouncycastle.crypto.CipherParameters;
@@ -726,7 +726,7 @@
      
      public OAEPEncoding(
 diff -Naur bcprov-jdk15on-150.orig/org/bouncycastle/crypto/encodings/PKCS1Encoding.java bcprov-jdk15on-150/org/bouncycastle/crypto/encodings/PKCS1Encoding.java
---- bcprov-jdk15on-150.orig/org/bouncycastle/crypto/encodings/PKCS1Encoding.java	2013-12-03 20:18:20.000000000 +0000
+--- bcprov-jdk15on-150.orig/org/bouncycastle/crypto/encodings/PKCS1Encoding.java	2013-12-03 12:18:20.000000000 +0000
 +++ bcprov-jdk15on-150/org/bouncycastle/crypto/encodings/PKCS1Encoding.java	2013-01-31 02:26:40.000000000 +0000
 @@ -216,6 +216,12 @@
                  throw new InvalidCipherTextException("unknown block type");
@@ -742,7 +742,7 @@
          if (useStrictLength && block.length != engine.getOutputBlockSize())
          {
 diff -Naur bcprov-jdk15on-150.orig/org/bouncycastle/crypto/engines/DESedeWrapEngine.java bcprov-jdk15on-150/org/bouncycastle/crypto/engines/DESedeWrapEngine.java
---- bcprov-jdk15on-150.orig/org/bouncycastle/crypto/engines/DESedeWrapEngine.java	2013-12-03 20:18:20.000000000 +0000
+--- bcprov-jdk15on-150.orig/org/bouncycastle/crypto/engines/DESedeWrapEngine.java	2013-12-03 12:18:20.000000000 +0000
 +++ bcprov-jdk15on-150/org/bouncycastle/crypto/engines/DESedeWrapEngine.java	2012-09-17 23:04:47.000000000 +0000
 @@ -6,7 +6,9 @@
  import org.bouncycastle.crypto.Digest;
@@ -767,7 +767,7 @@
  
     /**
 diff -Naur bcprov-jdk15on-150.orig/org/bouncycastle/crypto/generators/DHParametersHelper.java bcprov-jdk15on-150/org/bouncycastle/crypto/generators/DHParametersHelper.java
---- bcprov-jdk15on-150.orig/org/bouncycastle/crypto/generators/DHParametersHelper.java	2013-12-03 20:18:20.000000000 +0000
+--- bcprov-jdk15on-150.orig/org/bouncycastle/crypto/generators/DHParametersHelper.java	2013-12-03 12:18:20.000000000 +0000
 +++ bcprov-jdk15on-150/org/bouncycastle/crypto/generators/DHParametersHelper.java	2012-09-17 23:04:47.000000000 +0000
 @@ -3,10 +3,17 @@
  import java.math.BigInteger;
@@ -820,7 +820,7 @@
          return new BigInteger[] { p, q };
      }
 diff -Naur bcprov-jdk15on-150.orig/org/bouncycastle/crypto/generators/DSAParametersGenerator.java bcprov-jdk15on-150/org/bouncycastle/crypto/generators/DSAParametersGenerator.java
---- bcprov-jdk15on-150.orig/org/bouncycastle/crypto/generators/DSAParametersGenerator.java	2013-12-03 20:18:20.000000000 +0000
+--- bcprov-jdk15on-150.orig/org/bouncycastle/crypto/generators/DSAParametersGenerator.java	2013-12-03 12:18:20.000000000 +0000
 +++ bcprov-jdk15on-150/org/bouncycastle/crypto/generators/DSAParametersGenerator.java	2013-12-12 00:35:05.000000000 +0000
 @@ -4,7 +4,9 @@
  import java.security.SecureRandom;
@@ -856,7 +856,7 @@
              throw new IllegalStateException("can only use SHA-1 for generating FIPS 186-2 parameters");
          }
 diff -Naur bcprov-jdk15on-150.orig/org/bouncycastle/crypto/generators/OpenSSLPBEParametersGenerator.java bcprov-jdk15on-150/org/bouncycastle/crypto/generators/OpenSSLPBEParametersGenerator.java
---- bcprov-jdk15on-150.orig/org/bouncycastle/crypto/generators/OpenSSLPBEParametersGenerator.java	2013-12-03 20:18:20.000000000 +0000
+--- bcprov-jdk15on-150.orig/org/bouncycastle/crypto/generators/OpenSSLPBEParametersGenerator.java	2013-12-03 12:18:20.000000000 +0000
 +++ bcprov-jdk15on-150/org/bouncycastle/crypto/generators/OpenSSLPBEParametersGenerator.java	2012-09-17 23:04:47.000000000 +0000
 @@ -3,7 +3,9 @@
  import org.bouncycastle.crypto.CipherParameters;
@@ -881,7 +881,7 @@
      /**
       * Construct a OpenSSL Parameters generator. 
 diff -Naur bcprov-jdk15on-150.orig/org/bouncycastle/crypto/generators/PKCS5S2ParametersGenerator.java bcprov-jdk15on-150/org/bouncycastle/crypto/generators/PKCS5S2ParametersGenerator.java
---- bcprov-jdk15on-150.orig/org/bouncycastle/crypto/generators/PKCS5S2ParametersGenerator.java	2013-12-03 20:18:20.000000000 +0000
+--- bcprov-jdk15on-150.orig/org/bouncycastle/crypto/generators/PKCS5S2ParametersGenerator.java	2013-12-03 12:18:20.000000000 +0000
 +++ bcprov-jdk15on-150/org/bouncycastle/crypto/generators/PKCS5S2ParametersGenerator.java	2013-12-12 00:35:05.000000000 +0000
 @@ -4,7 +4,9 @@
  import org.bouncycastle.crypto.Digest;
@@ -906,7 +906,7 @@
  
      public PKCS5S2ParametersGenerator(Digest digest)
 diff -Naur bcprov-jdk15on-150.orig/org/bouncycastle/crypto/macs/HMac.java bcprov-jdk15on-150/org/bouncycastle/crypto/macs/HMac.java
---- bcprov-jdk15on-150.orig/org/bouncycastle/crypto/macs/HMac.java	2013-12-03 20:18:20.000000000 +0000
+--- bcprov-jdk15on-150.orig/org/bouncycastle/crypto/macs/HMac.java	2013-12-03 12:18:20.000000000 +0000
 +++ bcprov-jdk15on-150/org/bouncycastle/crypto/macs/HMac.java	2013-09-26 18:06:21.000000000 +0000
 @@ -36,14 +36,18 @@
      {
@@ -946,8 +946,86 @@
      }
      
      private static int getByteLength(
+diff -Naur bcprov-jdk15on-150.orig/org/bouncycastle/crypto/modes/GCMBlockCipher.java bcprov-jdk15on-150/org/bouncycastle/crypto/modes/GCMBlockCipher.java
+--- bcprov-jdk15on-150.orig/org/bouncycastle/crypto/modes/GCMBlockCipher.java	2013-12-03 12:18:20.000000000 +0000
++++ bcprov-jdk15on-150/org/bouncycastle/crypto/modes/GCMBlockCipher.java	2013-01-31 02:26:40.000000000 +0000
+@@ -22,6 +22,11 @@
+     implements AEADBlockCipher
+ {
+     private static final int BLOCK_SIZE = 16;
++    // BEGIN android-added
++    // 2^36-32 : limitation imposed by NIST GCM as otherwise the counter is wrapped and it can leak
++    // plaintext and authentication key
++    private static final long MAX_INPUT_SIZE = 68719476704L;
++    // END android-added
+ 
+     // not final due to a compiler bug 
+     private BlockCipher   cipher;
+@@ -194,6 +199,14 @@
+         return totalData < macSize ? 0 : totalData - macSize;
+     }
+ 
++    // BEGIN android-added
++    /** Helper used to ensure that {@link #MAX_INPUT_SIZE} is not exceeded. */
++    private long getTotalInputSizeAfterNewInput(int newInputLen)
++    {
++        return totalLength + newInputLen + bufOff;
++    }
++    // END android-added
++
+     public int getUpdateOutputSize(int len)
+     {
+         int totalData = len + bufOff;
+@@ -210,6 +223,11 @@
+ 
+     public void processAADByte(byte in)
+     {
++        // BEGIN android-added
++        if (getTotalInputSizeAfterNewInput(1) > MAX_INPUT_SIZE) {
++            throw new DataLengthException("Input exceeded " + MAX_INPUT_SIZE + " bytes");
++        }
++        // END android-added
+         atBlock[atBlockPos] = in;
+         if (++atBlockPos == BLOCK_SIZE)
+         {
+@@ -222,6 +240,11 @@
+ 
+     public void processAADBytes(byte[] in, int inOff, int len)
+     {
++        // BEGIN android-added
++        if (getTotalInputSizeAfterNewInput(len) > MAX_INPUT_SIZE) {
++            throw new DataLengthException("Input exceeded " + MAX_INPUT_SIZE + " bytes");
++        }
++        // END android-added
+         for (int i = 0; i < len; ++i)
+         {
+             atBlock[atBlockPos] = in[inOff + i];
+@@ -259,6 +282,11 @@
+     public int processByte(byte in, byte[] out, int outOff)
+         throws DataLengthException
+     {
++        // BEGIN android-added
++        if (getTotalInputSizeAfterNewInput(1) > MAX_INPUT_SIZE) {
++            throw new DataLengthException("Input exceeded " + MAX_INPUT_SIZE + " bytes");
++        }
++        // END android-added
+         bufBlock[bufOff] = in;
+         if (++bufOff == bufBlock.length)
+         {
+@@ -271,6 +299,11 @@
+     public int processBytes(byte[] in, int inOff, int len, byte[] out, int outOff)
+         throws DataLengthException
+     {
++        // BEGIN android-added
++        if (getTotalInputSizeAfterNewInput(len) > MAX_INPUT_SIZE) {
++            throw new DataLengthException("Input exceeded " + MAX_INPUT_SIZE + " bytes");
++        }
++        // END android-added
+         int resultLen = 0;
+ 
+         for (int i = 0; i < len; ++i)
 diff -Naur bcprov-jdk15on-150.orig/org/bouncycastle/crypto/signers/RSADigestSigner.java bcprov-jdk15on-150/org/bouncycastle/crypto/signers/RSADigestSigner.java
---- bcprov-jdk15on-150.orig/org/bouncycastle/crypto/signers/RSADigestSigner.java	2013-12-03 20:18:20.000000000 +0000
+--- bcprov-jdk15on-150.orig/org/bouncycastle/crypto/signers/RSADigestSigner.java	2013-12-03 12:18:20.000000000 +0000
 +++ bcprov-jdk15on-150/org/bouncycastle/crypto/signers/RSADigestSigner.java	2013-12-12 00:35:05.000000000 +0000
 @@ -39,9 +39,11 @@
       */
@@ -978,7 +1056,7 @@
      }
  
 diff -Naur bcprov-jdk15on-150.orig/org/bouncycastle/crypto/util/PrivateKeyFactory.java bcprov-jdk15on-150/org/bouncycastle/crypto/util/PrivateKeyFactory.java
---- bcprov-jdk15on-150.orig/org/bouncycastle/crypto/util/PrivateKeyFactory.java	2013-12-03 20:18:20.000000000 +0000
+--- bcprov-jdk15on-150.orig/org/bouncycastle/crypto/util/PrivateKeyFactory.java	2013-12-03 12:18:20.000000000 +0000
 +++ bcprov-jdk15on-150/org/bouncycastle/crypto/util/PrivateKeyFactory.java	2013-12-12 00:35:05.000000000 +0000
 @@ -10,7 +10,9 @@
  import org.bouncycastle.asn1.ASN1ObjectIdentifier;
@@ -1030,7 +1108,7 @@
          {
              ASN1Integer derX = (ASN1Integer)keyInfo.parsePrivateKey();
 diff -Naur bcprov-jdk15on-150.orig/org/bouncycastle/crypto/util/PublicKeyFactory.java bcprov-jdk15on-150/org/bouncycastle/crypto/util/PublicKeyFactory.java
---- bcprov-jdk15on-150.orig/org/bouncycastle/crypto/util/PublicKeyFactory.java	2013-12-03 20:18:20.000000000 +0000
+--- bcprov-jdk15on-150.orig/org/bouncycastle/crypto/util/PublicKeyFactory.java	2013-12-03 12:18:20.000000000 +0000
 +++ bcprov-jdk15on-150/org/bouncycastle/crypto/util/PublicKeyFactory.java	2013-12-12 00:35:05.000000000 +0000
 @@ -12,7 +12,9 @@
  import org.bouncycastle.asn1.ASN1Primitive;
@@ -1082,7 +1160,7 @@
              || algId.getAlgorithm().equals(OIWObjectIdentifiers.dsaWithSHA1))
          {
 diff -Naur bcprov-jdk15on-150.orig/org/bouncycastle/jcajce/provider/asymmetric/DH.java bcprov-jdk15on-150/org/bouncycastle/jcajce/provider/asymmetric/DH.java
---- bcprov-jdk15on-150.orig/org/bouncycastle/jcajce/provider/asymmetric/DH.java	2013-12-03 20:18:20.000000000 +0000
+--- bcprov-jdk15on-150.orig/org/bouncycastle/jcajce/provider/asymmetric/DH.java	2013-12-03 12:18:20.000000000 +0000
 +++ bcprov-jdk15on-150/org/bouncycastle/jcajce/provider/asymmetric/DH.java	2014-05-08 00:26:23.000000000 +0000
 @@ -1,7 +1,14 @@
  package org.bouncycastle.jcajce.provider.asymmetric;
@@ -1128,7 +1206,7 @@
      }
  }
 diff -Naur bcprov-jdk15on-150.orig/org/bouncycastle/jcajce/provider/asymmetric/DSA.java bcprov-jdk15on-150/org/bouncycastle/jcajce/provider/asymmetric/DSA.java
---- bcprov-jdk15on-150.orig/org/bouncycastle/jcajce/provider/asymmetric/DSA.java	2013-12-03 20:18:20.000000000 +0000
+--- bcprov-jdk15on-150.orig/org/bouncycastle/jcajce/provider/asymmetric/DSA.java	2013-12-03 12:18:20.000000000 +0000
 +++ bcprov-jdk15on-150/org/bouncycastle/jcajce/provider/asymmetric/DSA.java	2013-12-16 16:39:58.000000000 +0000
 @@ -27,40 +27,53 @@
              provider.addAlgorithm("KeyPairGenerator.DSA", PREFIX + "KeyPairGeneratorSpi");
@@ -1206,7 +1284,7 @@
                  registerOid(provider, DSAUtil.dsaOids[i], "DSA", keyFact);
                  registerOidAlgorithmParameters(provider, DSAUtil.dsaOids[i], "DSA");
 diff -Naur bcprov-jdk15on-150.orig/org/bouncycastle/jcajce/provider/asymmetric/EC.java bcprov-jdk15on-150/org/bouncycastle/jcajce/provider/asymmetric/EC.java
---- bcprov-jdk15on-150.orig/org/bouncycastle/jcajce/provider/asymmetric/EC.java	2013-12-03 20:18:20.000000000 +0000
+--- bcprov-jdk15on-150.orig/org/bouncycastle/jcajce/provider/asymmetric/EC.java	2013-12-03 12:18:20.000000000 +0000
 +++ bcprov-jdk15on-150/org/bouncycastle/jcajce/provider/asymmetric/EC.java	2013-12-12 00:35:05.000000000 +0000
 @@ -1,7 +1,9 @@
  package org.bouncycastle.jcajce.provider.asymmetric;
@@ -1354,7 +1432,7 @@
      }
  }
 diff -Naur bcprov-jdk15on-150.orig/org/bouncycastle/jcajce/provider/asymmetric/RSA.java bcprov-jdk15on-150/org/bouncycastle/jcajce/provider/asymmetric/RSA.java
---- bcprov-jdk15on-150.orig/org/bouncycastle/jcajce/provider/asymmetric/RSA.java	2013-12-03 20:18:20.000000000 +0000
+--- bcprov-jdk15on-150.orig/org/bouncycastle/jcajce/provider/asymmetric/RSA.java	2013-12-03 12:18:20.000000000 +0000
 +++ bcprov-jdk15on-150/org/bouncycastle/jcajce/provider/asymmetric/RSA.java	2013-09-26 18:06:21.000000000 +0000
 @@ -3,7 +3,9 @@
  import org.bouncycastle.asn1.ASN1ObjectIdentifier;
@@ -1633,7 +1711,7 @@
  
          private void addDigestSignature(
 diff -Naur bcprov-jdk15on-150.orig/org/bouncycastle/jcajce/provider/asymmetric/X509.java bcprov-jdk15on-150/org/bouncycastle/jcajce/provider/asymmetric/X509.java
---- bcprov-jdk15on-150.orig/org/bouncycastle/jcajce/provider/asymmetric/X509.java	2013-12-03 20:18:20.000000000 +0000
+--- bcprov-jdk15on-150.orig/org/bouncycastle/jcajce/provider/asymmetric/X509.java	2013-12-03 12:18:20.000000000 +0000
 +++ bcprov-jdk15on-150/org/bouncycastle/jcajce/provider/asymmetric/X509.java	2012-09-17 23:04:47.000000000 +0000
 @@ -18,8 +18,10 @@
  
@@ -1649,7 +1727,7 @@
              //
              // certificate factories.
 diff -Naur bcprov-jdk15on-150.orig/org/bouncycastle/jcajce/provider/asymmetric/dsa/DSASigner.java bcprov-jdk15on-150/org/bouncycastle/jcajce/provider/asymmetric/dsa/DSASigner.java
---- bcprov-jdk15on-150.orig/org/bouncycastle/jcajce/provider/asymmetric/dsa/DSASigner.java	2013-12-03 20:18:20.000000000 +0000
+--- bcprov-jdk15on-150.orig/org/bouncycastle/jcajce/provider/asymmetric/dsa/DSASigner.java	2013-12-03 12:18:20.000000000 +0000
 +++ bcprov-jdk15on-150/org/bouncycastle/jcajce/provider/asymmetric/dsa/DSASigner.java	2013-12-12 00:35:05.000000000 +0000
 @@ -23,13 +23,20 @@
  import org.bouncycastle.crypto.DSA;
@@ -1845,7 +1923,7 @@
      static public class noneDSA
          extends DSASigner
 diff -Naur bcprov-jdk15on-150.orig/org/bouncycastle/jcajce/provider/asymmetric/ec/KeyAgreementSpi.java bcprov-jdk15on-150/org/bouncycastle/jcajce/provider/asymmetric/ec/KeyAgreementSpi.java
---- bcprov-jdk15on-150.orig/org/bouncycastle/jcajce/provider/asymmetric/ec/KeyAgreementSpi.java	2013-12-03 20:18:20.000000000 +0000
+--- bcprov-jdk15on-150.orig/org/bouncycastle/jcajce/provider/asymmetric/ec/KeyAgreementSpi.java	2013-12-03 12:18:20.000000000 +0000
 +++ bcprov-jdk15on-150/org/bouncycastle/jcajce/provider/asymmetric/ec/KeyAgreementSpi.java	2013-12-12 00:35:05.000000000 +0000
 @@ -23,21 +23,27 @@
  import org.bouncycastle.crypto.CipherParameters;
@@ -2172,7 +2250,7 @@
 +    // END android-removed
  }
 diff -Naur bcprov-jdk15on-150.orig/org/bouncycastle/jcajce/provider/asymmetric/ec/KeyFactorySpi.java bcprov-jdk15on-150/org/bouncycastle/jcajce/provider/asymmetric/ec/KeyFactorySpi.java
---- bcprov-jdk15on-150.orig/org/bouncycastle/jcajce/provider/asymmetric/ec/KeyFactorySpi.java	2013-12-03 20:18:20.000000000 +0000
+--- bcprov-jdk15on-150.orig/org/bouncycastle/jcajce/provider/asymmetric/ec/KeyFactorySpi.java	2013-12-03 12:18:20.000000000 +0000
 +++ bcprov-jdk15on-150/org/bouncycastle/jcajce/provider/asymmetric/ec/KeyFactorySpi.java	2013-05-25 02:14:15.000000000 +0000
 @@ -201,14 +201,16 @@
          }
@@ -2200,7 +2278,7 @@
      public static class ECDH
          extends KeyFactorySpi
 diff -Naur bcprov-jdk15on-150.orig/org/bouncycastle/jcajce/provider/asymmetric/ec/KeyPairGeneratorSpi.java bcprov-jdk15on-150/org/bouncycastle/jcajce/provider/asymmetric/ec/KeyPairGeneratorSpi.java
---- bcprov-jdk15on-150.orig/org/bouncycastle/jcajce/provider/asymmetric/ec/KeyPairGeneratorSpi.java	2013-12-03 20:18:20.000000000 +0000
+--- bcprov-jdk15on-150.orig/org/bouncycastle/jcajce/provider/asymmetric/ec/KeyPairGeneratorSpi.java	2013-12-03 12:18:20.000000000 +0000
 +++ bcprov-jdk15on-150/org/bouncycastle/jcajce/provider/asymmetric/ec/KeyPairGeneratorSpi.java	2013-12-12 00:35:05.000000000 +0000
 @@ -84,7 +84,13 @@
              SecureRandom    random)
@@ -2229,7 +2307,7 @@
              {
                  ECParameterSpec p = (ECParameterSpec)params;
 diff -Naur bcprov-jdk15on-150.orig/org/bouncycastle/jcajce/provider/asymmetric/ec/SignatureSpi.java bcprov-jdk15on-150/org/bouncycastle/jcajce/provider/asymmetric/ec/SignatureSpi.java
---- bcprov-jdk15on-150.orig/org/bouncycastle/jcajce/provider/asymmetric/ec/SignatureSpi.java	2013-12-03 20:18:20.000000000 +0000
+--- bcprov-jdk15on-150.orig/org/bouncycastle/jcajce/provider/asymmetric/ec/SignatureSpi.java	2013-12-03 12:18:20.000000000 +0000
 +++ bcprov-jdk15on-150/org/bouncycastle/jcajce/provider/asymmetric/ec/SignatureSpi.java	2013-12-12 00:35:05.000000000 +0000
 @@ -16,16 +16,23 @@
  import org.bouncycastle.crypto.DSA;
@@ -2629,7 +2707,7 @@
 \ No newline at end of file
 +}
 diff -Naur bcprov-jdk15on-150.orig/org/bouncycastle/jcajce/provider/asymmetric/rsa/CipherSpi.java bcprov-jdk15on-150/org/bouncycastle/jcajce/provider/asymmetric/rsa/CipherSpi.java
---- bcprov-jdk15on-150.orig/org/bouncycastle/jcajce/provider/asymmetric/rsa/CipherSpi.java	2013-12-03 20:18:20.000000000 +0000
+--- bcprov-jdk15on-150.orig/org/bouncycastle/jcajce/provider/asymmetric/rsa/CipherSpi.java	2013-12-03 12:18:20.000000000 +0000
 +++ bcprov-jdk15on-150/org/bouncycastle/jcajce/provider/asymmetric/rsa/CipherSpi.java	2013-09-26 18:06:21.000000000 +0000
 @@ -26,7 +26,9 @@
  import org.bouncycastle.crypto.CipherParameters;
@@ -2755,7 +2833,7 @@
 +    // END android-removed
  }
 diff -Naur bcprov-jdk15on-150.orig/org/bouncycastle/jcajce/provider/asymmetric/rsa/DigestSignatureSpi.java bcprov-jdk15on-150/org/bouncycastle/jcajce/provider/asymmetric/rsa/DigestSignatureSpi.java
---- bcprov-jdk15on-150.orig/org/bouncycastle/jcajce/provider/asymmetric/rsa/DigestSignatureSpi.java	2013-12-03 20:18:20.000000000 +0000
+--- bcprov-jdk15on-150.orig/org/bouncycastle/jcajce/provider/asymmetric/rsa/DigestSignatureSpi.java	2013-12-03 12:18:20.000000000 +0000
 +++ bcprov-jdk15on-150/org/bouncycastle/jcajce/provider/asymmetric/rsa/DigestSignatureSpi.java	2013-09-26 18:06:21.000000000 +0000
 @@ -17,24 +17,31 @@
  import org.bouncycastle.asn1.nist.NISTObjectIdentifiers;
@@ -2980,7 +3058,7 @@
 +    // END android-removed
  }
 diff -Naur bcprov-jdk15on-150.orig/org/bouncycastle/jcajce/provider/asymmetric/util/BaseCipherSpi.java bcprov-jdk15on-150/org/bouncycastle/jcajce/provider/asymmetric/util/BaseCipherSpi.java
---- bcprov-jdk15on-150.orig/org/bouncycastle/jcajce/provider/asymmetric/util/BaseCipherSpi.java	2013-12-03 20:18:20.000000000 +0000
+--- bcprov-jdk15on-150.orig/org/bouncycastle/jcajce/provider/asymmetric/util/BaseCipherSpi.java	2013-12-03 12:18:20.000000000 +0000
 +++ bcprov-jdk15on-150/org/bouncycastle/jcajce/provider/asymmetric/util/BaseCipherSpi.java	2012-09-17 23:04:47.000000000 +0000
 @@ -18,8 +18,10 @@
  import javax.crypto.NoSuchPaddingException;
@@ -3009,7 +3087,7 @@
  
  
 diff -Naur bcprov-jdk15on-150.orig/org/bouncycastle/jcajce/provider/asymmetric/util/ECUtil.java bcprov-jdk15on-150/org/bouncycastle/jcajce/provider/asymmetric/util/ECUtil.java
---- bcprov-jdk15on-150.orig/org/bouncycastle/jcajce/provider/asymmetric/util/ECUtil.java	2013-12-03 20:18:20.000000000 +0000
+--- bcprov-jdk15on-150.orig/org/bouncycastle/jcajce/provider/asymmetric/util/ECUtil.java	2013-12-03 12:18:20.000000000 +0000
 +++ bcprov-jdk15on-150/org/bouncycastle/jcajce/provider/asymmetric/util/ECUtil.java	2013-05-25 02:14:15.000000000 +0000
 @@ -5,11 +5,15 @@
  import java.security.PublicKey;
@@ -3097,7 +3175,7 @@
  
          return name;
 diff -Naur bcprov-jdk15on-150.orig/org/bouncycastle/jcajce/provider/asymmetric/x509/PKIXCertPath.java bcprov-jdk15on-150/org/bouncycastle/jcajce/provider/asymmetric/x509/PKIXCertPath.java
---- bcprov-jdk15on-150.orig/org/bouncycastle/jcajce/provider/asymmetric/x509/PKIXCertPath.java	2013-12-03 20:18:20.000000000 +0000
+--- bcprov-jdk15on-150.orig/org/bouncycastle/jcajce/provider/asymmetric/x509/PKIXCertPath.java	2013-12-03 12:18:20.000000000 +0000
 +++ bcprov-jdk15on-150/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;
@@ -3173,7 +3251,7 @@
          {
              throw new CertificateEncodingException("unsupported encoding: " + encoding);
 diff -Naur bcprov-jdk15on-150.orig/org/bouncycastle/jcajce/provider/asymmetric/x509/X509CertificateObject.java bcprov-jdk15on-150/org/bouncycastle/jcajce/provider/asymmetric/x509/X509CertificateObject.java
---- bcprov-jdk15on-150.orig/org/bouncycastle/jcajce/provider/asymmetric/x509/X509CertificateObject.java	2013-12-03 20:18:20.000000000 +0000
+--- bcprov-jdk15on-150.orig/org/bouncycastle/jcajce/provider/asymmetric/x509/X509CertificateObject.java	2013-12-03 12:18:20.000000000 +0000
 +++ bcprov-jdk15on-150/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;
@@ -3219,7 +3297,7 @@
                  case GeneralName.dNSName:
                  case GeneralName.rfc822Name:
 diff -Naur bcprov-jdk15on-150.orig/org/bouncycastle/jcajce/provider/asymmetric/x509/X509SignatureUtil.java bcprov-jdk15on-150/org/bouncycastle/jcajce/provider/asymmetric/x509/X509SignatureUtil.java
---- bcprov-jdk15on-150.orig/org/bouncycastle/jcajce/provider/asymmetric/x509/X509SignatureUtil.java	2013-12-03 20:18:20.000000000 +0000
+--- bcprov-jdk15on-150.orig/org/bouncycastle/jcajce/provider/asymmetric/x509/X509SignatureUtil.java	2013-12-03 12:18:20.000000000 +0000
 +++ bcprov-jdk15on-150/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;
@@ -3282,7 +3360,7 @@
          {
              return digestAlgOID.getId();            
 diff -Naur bcprov-jdk15on-150.orig/org/bouncycastle/jcajce/provider/digest/SHA256.java bcprov-jdk15on-150/org/bouncycastle/jcajce/provider/digest/SHA256.java
---- bcprov-jdk15on-150.orig/org/bouncycastle/jcajce/provider/digest/SHA256.java	2013-12-03 20:18:20.000000000 +0000
+--- bcprov-jdk15on-150.orig/org/bouncycastle/jcajce/provider/digest/SHA256.java	2013-12-03 12:18:20.000000000 +0000
 +++ bcprov-jdk15on-150/org/bouncycastle/jcajce/provider/digest/SHA256.java	2013-05-25 02:14:15.000000000 +0000
 @@ -45,17 +45,19 @@
          }
@@ -3331,7 +3409,7 @@
              addHMACAlgorithm(provider, "SHA256", PREFIX + "$HashMac",  PREFIX + "$KeyGenerator");
              addHMACAlias(provider, "SHA256", PKCSObjectIdentifiers.id_hmacWithSHA256);
 diff -Naur bcprov-jdk15on-150.orig/org/bouncycastle/jcajce/provider/digest/SHA384.java bcprov-jdk15on-150/org/bouncycastle/jcajce/provider/digest/SHA384.java
---- bcprov-jdk15on-150.orig/org/bouncycastle/jcajce/provider/digest/SHA384.java	2013-12-03 20:18:20.000000000 +0000
+--- bcprov-jdk15on-150.orig/org/bouncycastle/jcajce/provider/digest/SHA384.java	2013-12-03 12:18:20.000000000 +0000
 +++ bcprov-jdk15on-150/org/bouncycastle/jcajce/provider/digest/SHA384.java	2013-05-25 02:14:15.000000000 +0000
 @@ -5,7 +5,9 @@
  import org.bouncycastle.crypto.CipherKeyGenerator;
@@ -3381,7 +3459,7 @@
              addHMACAlgorithm(provider, "SHA384", PREFIX + "$HashMac",  PREFIX + "$KeyGenerator");
              addHMACAlias(provider, "SHA384", PKCSObjectIdentifiers.id_hmacWithSHA384);
 diff -Naur bcprov-jdk15on-150.orig/org/bouncycastle/jcajce/provider/digest/SHA512.java bcprov-jdk15on-150/org/bouncycastle/jcajce/provider/digest/SHA512.java
---- bcprov-jdk15on-150.orig/org/bouncycastle/jcajce/provider/digest/SHA512.java	2013-12-03 20:18:20.000000000 +0000
+--- bcprov-jdk15on-150.orig/org/bouncycastle/jcajce/provider/digest/SHA512.java	2013-12-03 12:18:20.000000000 +0000
 +++ bcprov-jdk15on-150/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;
@@ -3628,7 +3706,7 @@
      }
  
 diff -Naur bcprov-jdk15on-150.orig/org/bouncycastle/jcajce/provider/keystore/BC.java bcprov-jdk15on-150/org/bouncycastle/jcajce/provider/keystore/BC.java
---- bcprov-jdk15on-150.orig/org/bouncycastle/jcajce/provider/keystore/BC.java	2013-12-03 20:18:20.000000000 +0000
+--- bcprov-jdk15on-150.orig/org/bouncycastle/jcajce/provider/keystore/BC.java	2013-12-03 12:18:20.000000000 +0000
 +++ bcprov-jdk15on-150/org/bouncycastle/jcajce/provider/keystore/BC.java	2013-05-25 02:14:15.000000000 +0000
 @@ -17,7 +17,9 @@
          public void configure(ConfigurableProvider provider)
@@ -3642,7 +3720,7 @@
              provider.addAlgorithm("Alg.Alias.KeyStore.UBER", "BouncyCastle");
              provider.addAlgorithm("Alg.Alias.KeyStore.BOUNCYCASTLE", "BouncyCastle");
 diff -Naur bcprov-jdk15on-150.orig/org/bouncycastle/jcajce/provider/keystore/PKCS12.java bcprov-jdk15on-150/org/bouncycastle/jcajce/provider/keystore/PKCS12.java
---- bcprov-jdk15on-150.orig/org/bouncycastle/jcajce/provider/keystore/PKCS12.java	2013-12-03 20:18:20.000000000 +0000
+--- bcprov-jdk15on-150.orig/org/bouncycastle/jcajce/provider/keystore/PKCS12.java	2013-12-03 12:18:20.000000000 +0000
 +++ bcprov-jdk15on-150/org/bouncycastle/jcajce/provider/keystore/PKCS12.java	2013-05-25 02:14:15.000000000 +0000
 @@ -17,14 +17,16 @@
          public void configure(ConfigurableProvider provider)
@@ -3670,7 +3748,7 @@
      }
  }
 diff -Naur bcprov-jdk15on-150.orig/org/bouncycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi.java bcprov-jdk15on-150/org/bouncycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi.java
---- bcprov-jdk15on-150.orig/org/bouncycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi.java	2013-12-03 20:18:20.000000000 +0000
+--- bcprov-jdk15on-150.orig/org/bouncycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi.java	2013-12-03 12:18:20.000000000 +0000
 +++ bcprov-jdk15on-150/org/bouncycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi.java	2013-12-12 00:35:05.000000000 +0000
 @@ -61,8 +61,10 @@
  import org.bouncycastle.asn1.DEROutputStream;
@@ -3792,7 +3870,7 @@
              KEY_SIZES = Collections.unmodifiableMap(keySizes);
          }
 diff -Naur bcprov-jdk15on-150.orig/org/bouncycastle/jcajce/provider/symmetric/AES.java bcprov-jdk15on-150/org/bouncycastle/jcajce/provider/symmetric/AES.java
---- bcprov-jdk15on-150.orig/org/bouncycastle/jcajce/provider/symmetric/AES.java	2013-12-03 20:18:20.000000000 +0000
+--- bcprov-jdk15on-150.orig/org/bouncycastle/jcajce/provider/symmetric/AES.java	2013-12-03 12:18:20.000000000 +0000
 +++ bcprov-jdk15on-150/org/bouncycastle/jcajce/provider/symmetric/AES.java	2013-12-12 00:35:05.000000000 +0000
 @@ -3,13 +3,17 @@
  import java.io.IOException;
@@ -4233,7 +4311,7 @@
      }
  
 diff -Naur bcprov-jdk15on-150.orig/org/bouncycastle/jcajce/provider/symmetric/ARC4.java bcprov-jdk15on-150/org/bouncycastle/jcajce/provider/symmetric/ARC4.java
---- bcprov-jdk15on-150.orig/org/bouncycastle/jcajce/provider/symmetric/ARC4.java	2013-12-03 20:18:20.000000000 +0000
+--- bcprov-jdk15on-150.orig/org/bouncycastle/jcajce/provider/symmetric/ARC4.java	2013-12-03 12:18:20.000000000 +0000
 +++ bcprov-jdk15on-150/org/bouncycastle/jcajce/provider/symmetric/ARC4.java	2013-05-25 02:14:15.000000000 +0000
 @@ -29,7 +29,9 @@
      {
@@ -4247,7 +4325,7 @@
      }
  
 diff -Naur bcprov-jdk15on-150.orig/org/bouncycastle/jcajce/provider/symmetric/Blowfish.java bcprov-jdk15on-150/org/bouncycastle/jcajce/provider/symmetric/Blowfish.java
---- bcprov-jdk15on-150.orig/org/bouncycastle/jcajce/provider/symmetric/Blowfish.java	2013-12-03 20:18:20.000000000 +0000
+--- bcprov-jdk15on-150.orig/org/bouncycastle/jcajce/provider/symmetric/Blowfish.java	2013-12-03 12:18:20.000000000 +0000
 +++ bcprov-jdk15on-150/org/bouncycastle/jcajce/provider/symmetric/Blowfish.java	2012-09-17 23:04:47.000000000 +0000
 @@ -64,7 +64,9 @@
          {
@@ -4261,7 +4339,7 @@
              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-150.orig/org/bouncycastle/jcajce/provider/symmetric/DES.java bcprov-jdk15on-150/org/bouncycastle/jcajce/provider/symmetric/DES.java
---- bcprov-jdk15on-150.orig/org/bouncycastle/jcajce/provider/symmetric/DES.java	2013-12-03 20:18:20.000000000 +0000
+--- bcprov-jdk15on-150.orig/org/bouncycastle/jcajce/provider/symmetric/DES.java	2013-12-03 12:18:20.000000000 +0000
 +++ bcprov-jdk15on-150/org/bouncycastle/jcajce/provider/symmetric/DES.java	2013-05-25 02:14:15.000000000 +0000
 @@ -19,12 +19,16 @@
  import org.bouncycastle.crypto.CipherParameters;
@@ -4580,7 +4658,7 @@
              provider.addAlgorithm("Alg.Alias.SecretKeyFactory." + PKCSObjectIdentifiers.pbeWithSHA1AndDES_CBC, "PBEWITHSHA1ANDDES");
          }
 diff -Naur bcprov-jdk15on-150.orig/org/bouncycastle/jcajce/provider/symmetric/DESede.java bcprov-jdk15on-150/org/bouncycastle/jcajce/provider/symmetric/DESede.java
---- bcprov-jdk15on-150.orig/org/bouncycastle/jcajce/provider/symmetric/DESede.java	2013-12-03 20:18:20.000000000 +0000
+--- bcprov-jdk15on-150.orig/org/bouncycastle/jcajce/provider/symmetric/DESede.java	2013-12-03 12:18:20.000000000 +0000
 +++ bcprov-jdk15on-150/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;
@@ -4903,7 +4981,7 @@
              provider.addAlgorithm("SecretKeyFactory.PBEWITHSHAAND3-KEYTRIPLEDES-CBC", PREFIX + "$PBEWithSHAAndDES3KeyFactory");
              provider.addAlgorithm("SecretKeyFactory.PBEWITHSHAAND2-KEYTRIPLEDES-CBC", PREFIX + "$PBEWithSHAAndDES2KeyFactory");
 diff -Naur bcprov-jdk15on-150.orig/org/bouncycastle/jcajce/provider/symmetric/RC2.java bcprov-jdk15on-150/org/bouncycastle/jcajce/provider/symmetric/RC2.java
---- bcprov-jdk15on-150.orig/org/bouncycastle/jcajce/provider/symmetric/RC2.java	2013-12-03 20:18:20.000000000 +0000
+--- bcprov-jdk15on-150.orig/org/bouncycastle/jcajce/provider/symmetric/RC2.java	2013-12-03 12:18:20.000000000 +0000
 +++ bcprov-jdk15on-150/org/bouncycastle/jcajce/provider/symmetric/RC2.java	2013-05-25 02:14:15.000000000 +0000
 @@ -12,24 +12,34 @@
  
@@ -5668,7 +5746,7 @@
              provider.addAlgorithm("Alg.Alias.Cipher." + PKCSObjectIdentifiers.pbeWithMD5AndRC2_CBC, "PBEWITHMD5ANDRC2");
  
 diff -Naur bcprov-jdk15on-150.orig/org/bouncycastle/jcajce/provider/symmetric/SymmetricAlgorithmProvider.java bcprov-jdk15on-150/org/bouncycastle/jcajce/provider/symmetric/SymmetricAlgorithmProvider.java
---- bcprov-jdk15on-150.orig/org/bouncycastle/jcajce/provider/symmetric/SymmetricAlgorithmProvider.java	2013-12-03 20:18:20.000000000 +0000
+--- bcprov-jdk15on-150.orig/org/bouncycastle/jcajce/provider/symmetric/SymmetricAlgorithmProvider.java	2013-12-03 12:18:20.000000000 +0000
 +++ bcprov-jdk15on-150/org/bouncycastle/jcajce/provider/symmetric/SymmetricAlgorithmProvider.java	2013-12-12 00:35:05.000000000 +0000
 @@ -6,29 +6,31 @@
  abstract class SymmetricAlgorithmProvider
@@ -5727,7 +5805,7 @@
  
  }
 diff -Naur bcprov-jdk15on-150.orig/org/bouncycastle/jcajce/provider/symmetric/Twofish.java bcprov-jdk15on-150/org/bouncycastle/jcajce/provider/symmetric/Twofish.java
---- bcprov-jdk15on-150.orig/org/bouncycastle/jcajce/provider/symmetric/Twofish.java	2013-12-03 20:18:20.000000000 +0000
+--- bcprov-jdk15on-150.orig/org/bouncycastle/jcajce/provider/symmetric/Twofish.java	2013-12-03 12:18:20.000000000 +0000
 +++ bcprov-jdk15on-150/org/bouncycastle/jcajce/provider/symmetric/Twofish.java	2013-12-12 00:35:05.000000000 +0000
 @@ -1,18 +1,26 @@
  package org.bouncycastle.jcajce.provider.symmetric;
@@ -5927,7 +6005,7 @@
      }
  }
 diff -Naur bcprov-jdk15on-150.orig/org/bouncycastle/jcajce/provider/symmetric/util/BaseBlockCipher.java bcprov-jdk15on-150/org/bouncycastle/jcajce/provider/symmetric/util/BaseBlockCipher.java
---- bcprov-jdk15on-150.orig/org/bouncycastle/jcajce/provider/symmetric/util/BaseBlockCipher.java	2013-12-03 20:18:20.000000000 +0000
+--- bcprov-jdk15on-150.orig/org/bouncycastle/jcajce/provider/symmetric/util/BaseBlockCipher.java	2013-12-03 12:18:20.000000000 +0000
 +++ bcprov-jdk15on-150/org/bouncycastle/jcajce/provider/symmetric/util/BaseBlockCipher.java	2013-12-13 23:56:53.000000000 +0000
 @@ -19,8 +19,10 @@
  import javax.crypto.ShortBufferException;
@@ -6362,7 +6440,7 @@
  
      /*
 diff -Naur bcprov-jdk15on-150.orig/org/bouncycastle/jcajce/provider/symmetric/util/BaseMac.java bcprov-jdk15on-150/org/bouncycastle/jcajce/provider/symmetric/util/BaseMac.java
---- bcprov-jdk15on-150.orig/org/bouncycastle/jcajce/provider/symmetric/util/BaseMac.java	2013-12-03 20:18:20.000000000 +0000
+--- bcprov-jdk15on-150.orig/org/bouncycastle/jcajce/provider/symmetric/util/BaseMac.java	2013-12-03 12:18:20.000000000 +0000
 +++ bcprov-jdk15on-150/org/bouncycastle/jcajce/provider/symmetric/util/BaseMac.java	2013-12-12 00:35:05.000000000 +0000
 @@ -16,8 +16,10 @@
  import org.bouncycastle.crypto.Mac;
@@ -6395,7 +6473,7 @@
          {
              param = new KeyParameter(key.getEncoded());
 diff -Naur bcprov-jdk15on-150.orig/org/bouncycastle/jcajce/provider/symmetric/util/BaseStreamCipher.java bcprov-jdk15on-150/org/bouncycastle/jcajce/provider/symmetric/util/BaseStreamCipher.java
---- bcprov-jdk15on-150.orig/org/bouncycastle/jcajce/provider/symmetric/util/BaseStreamCipher.java	2013-12-03 20:18:20.000000000 +0000
+--- bcprov-jdk15on-150.orig/org/bouncycastle/jcajce/provider/symmetric/util/BaseStreamCipher.java	2013-12-03 12:18:20.000000000 +0000
 +++ bcprov-jdk15on-150/org/bouncycastle/jcajce/provider/symmetric/util/BaseStreamCipher.java	2013-12-12 00:35:05.000000000 +0000
 @@ -14,8 +14,10 @@
  import javax.crypto.ShortBufferException;
@@ -6424,7 +6502,7 @@
                                          PBEParameterSpec.class
                                      };
 diff -Naur bcprov-jdk15on-150.orig/org/bouncycastle/jcajce/provider/symmetric/util/BaseWrapCipher.java bcprov-jdk15on-150/org/bouncycastle/jcajce/provider/symmetric/util/BaseWrapCipher.java
---- bcprov-jdk15on-150.orig/org/bouncycastle/jcajce/provider/symmetric/util/BaseWrapCipher.java	2013-12-03 20:18:20.000000000 +0000
+--- bcprov-jdk15on-150.orig/org/bouncycastle/jcajce/provider/symmetric/util/BaseWrapCipher.java	2013-12-03 12:18:20.000000000 +0000
 +++ bcprov-jdk15on-150/org/bouncycastle/jcajce/provider/symmetric/util/BaseWrapCipher.java	2013-01-31 02:26:40.000000000 +0000
 @@ -22,8 +22,10 @@
  import javax.crypto.ShortBufferException;
@@ -6470,7 +6548,7 @@
      protected byte[] engineWrap(
          Key     key)
 diff -Naur bcprov-jdk15on-150.orig/org/bouncycastle/jcajce/provider/symmetric/util/PBE.java bcprov-jdk15on-150/org/bouncycastle/jcajce/provider/symmetric/util/PBE.java
---- bcprov-jdk15on-150.orig/org/bouncycastle/jcajce/provider/symmetric/util/PBE.java	2013-12-03 20:18:20.000000000 +0000
+--- bcprov-jdk15on-150.orig/org/bouncycastle/jcajce/provider/symmetric/util/PBE.java	2013-12-03 12:18:20.000000000 +0000
 +++ bcprov-jdk15on-150/org/bouncycastle/jcajce/provider/symmetric/util/PBE.java	2013-12-12 00:35:05.000000000 +0000
 @@ -7,13 +7,18 @@
  
@@ -6659,7 +6737,7 @@
                      throw new IllegalStateException("unknown digest scheme for PBE encryption.");
                  }
 diff -Naur bcprov-jdk15on-150.orig/org/bouncycastle/jcajce/provider/util/DigestFactory.java bcprov-jdk15on-150/org/bouncycastle/jcajce/provider/util/DigestFactory.java
---- bcprov-jdk15on-150.orig/org/bouncycastle/jcajce/provider/util/DigestFactory.java	2013-12-03 20:18:20.000000000 +0000
+--- bcprov-jdk15on-150.orig/org/bouncycastle/jcajce/provider/util/DigestFactory.java	2013-12-03 12:18:20.000000000 +0000
 +++ bcprov-jdk15on-150/org/bouncycastle/jcajce/provider/util/DigestFactory.java	2013-09-26 18:06:21.000000000 +0000
 @@ -10,12 +10,17 @@
  import org.bouncycastle.asn1.oiw.OIWObjectIdentifiers;
@@ -6732,7 +6810,7 @@
          
          return null;
 diff -Naur bcprov-jdk15on-150.orig/org/bouncycastle/jce/PKCS10CertificationRequest.java bcprov-jdk15on-150/org/bouncycastle/jce/PKCS10CertificationRequest.java
---- bcprov-jdk15on-150.orig/org/bouncycastle/jce/PKCS10CertificationRequest.java	2013-12-03 20:18:20.000000000 +0000
+--- bcprov-jdk15on-150.orig/org/bouncycastle/jce/PKCS10CertificationRequest.java	2013-12-03 12:18:20.000000000 +0000
 +++ bcprov-jdk15on-150/org/bouncycastle/jce/PKCS10CertificationRequest.java	2013-09-26 18:06:21.000000000 +0000
 @@ -30,14 +30,18 @@
  import org.bouncycastle.asn1.DERBitString;
@@ -6884,7 +6962,7 @@
          {
              return digestAlgOID.getId();            
 diff -Naur bcprov-jdk15on-150.orig/org/bouncycastle/jce/provider/BouncyCastleProvider.java bcprov-jdk15on-150/org/bouncycastle/jce/provider/BouncyCastleProvider.java
---- bcprov-jdk15on-150.orig/org/bouncycastle/jce/provider/BouncyCastleProvider.java	2013-12-03 20:18:20.000000000 +0000
+--- bcprov-jdk15on-150.orig/org/bouncycastle/jce/provider/BouncyCastleProvider.java	2013-12-03 12:18:20.000000000 +0000
 +++ bcprov-jdk15on-150/org/bouncycastle/jce/provider/BouncyCastleProvider.java	2013-12-12 00:35:05.000000000 +0000
 @@ -64,15 +64,22 @@
  
@@ -7047,7 +7125,7 @@
      private void loadAlgorithms(String packageName, String[] names)
 diff -Naur bcprov-jdk15on-150.orig/org/bouncycastle/jce/provider/CertBlacklist.java bcprov-jdk15on-150/org/bouncycastle/jce/provider/CertBlacklist.java
 --- bcprov-jdk15on-150.orig/org/bouncycastle/jce/provider/CertBlacklist.java	1970-01-01 00:00:00.000000000 +0000
-+++ bcprov-jdk15on-150/org/bouncycastle/jce/provider/CertBlacklist.java	2013-12-10 21:31:49.000000000 +0000
++++ bcprov-jdk15on-150/org/bouncycastle/jce/provider/CertBlacklist.java	2014-05-05 17:28:58.000000000 +0000
 @@ -0,0 +1,228 @@
 +/*
 + * Copyright (C) 2012 The Android Open Source Project
@@ -7278,7 +7356,7 @@
 +
 +}
 diff -Naur bcprov-jdk15on-150.orig/org/bouncycastle/jce/provider/CertPathValidatorUtilities.java bcprov-jdk15on-150/org/bouncycastle/jce/provider/CertPathValidatorUtilities.java
---- bcprov-jdk15on-150.orig/org/bouncycastle/jce/provider/CertPathValidatorUtilities.java	2013-12-03 20:18:20.000000000 +0000
+--- bcprov-jdk15on-150.orig/org/bouncycastle/jce/provider/CertPathValidatorUtilities.java	2013-12-03 12:18:20.000000000 +0000
 +++ bcprov-jdk15on-150/org/bouncycastle/jce/provider/CertPathValidatorUtilities.java	2013-12-12 00:35:05.000000000 +0000
 @@ -61,18 +61,24 @@
  import org.bouncycastle.asn1.x509.PolicyInformation;
@@ -7482,7 +7560,7 @@
      protected static void addAdditionalStoresFromCRLDistributionPoint(
          CRLDistPoint crldp, ExtendedPKIXParameters pkixParams)
 diff -Naur bcprov-jdk15on-150.orig/org/bouncycastle/jce/provider/JCEECPrivateKey.java bcprov-jdk15on-150/org/bouncycastle/jce/provider/JCEECPrivateKey.java
---- bcprov-jdk15on-150.orig/org/bouncycastle/jce/provider/JCEECPrivateKey.java	2013-12-03 20:18:20.000000000 +0000
+--- bcprov-jdk15on-150.orig/org/bouncycastle/jce/provider/JCEECPrivateKey.java	2013-12-03 12:18:20.000000000 +0000
 +++ bcprov-jdk15on-150/org/bouncycastle/jce/provider/JCEECPrivateKey.java	2013-12-12 00:35:05.000000000 +0000
 @@ -20,8 +20,10 @@
  import org.bouncycastle.asn1.DERInteger;
@@ -7556,7 +7634,7 @@
  
                  info = new PrivateKeyInfo(new AlgorithmIdentifier(X9ObjectIdentifiers.id_ecPublicKey, params.toASN1Primitive()), keyStructure.toASN1Primitive());
 diff -Naur bcprov-jdk15on-150.orig/org/bouncycastle/jce/provider/JCEECPublicKey.java bcprov-jdk15on-150/org/bouncycastle/jce/provider/JCEECPublicKey.java
---- bcprov-jdk15on-150.orig/org/bouncycastle/jce/provider/JCEECPublicKey.java	2013-12-03 20:18:20.000000000 +0000
+--- bcprov-jdk15on-150.orig/org/bouncycastle/jce/provider/JCEECPublicKey.java	2013-12-03 12:18:20.000000000 +0000
 +++ bcprov-jdk15on-150/org/bouncycastle/jce/provider/JCEECPublicKey.java	2013-12-12 00:35:05.000000000 +0000
 @@ -18,9 +18,11 @@
  import org.bouncycastle.asn1.DERBitString;
@@ -7817,7 +7895,7 @@
              if (ecSpec instanceof ECNamedCurveSpec)
              {
 diff -Naur bcprov-jdk15on-150.orig/org/bouncycastle/jce/provider/JCEStreamCipher.java bcprov-jdk15on-150/org/bouncycastle/jce/provider/JCEStreamCipher.java
---- bcprov-jdk15on-150.orig/org/bouncycastle/jce/provider/JCEStreamCipher.java	2013-12-03 20:18:20.000000000 +0000
+--- bcprov-jdk15on-150.orig/org/bouncycastle/jce/provider/JCEStreamCipher.java	2013-12-03 12:18:20.000000000 +0000
 +++ bcprov-jdk15on-150/org/bouncycastle/jce/provider/JCEStreamCipher.java	2013-05-25 02:14:15.000000000 +0000
 @@ -23,8 +23,10 @@
  import javax.crypto.ShortBufferException;
@@ -8113,7 +8191,7 @@
 +    // END android-removed
  }
 diff -Naur bcprov-jdk15on-150.orig/org/bouncycastle/jce/provider/PKIXCRLUtil.java bcprov-jdk15on-150/org/bouncycastle/jce/provider/PKIXCRLUtil.java
---- bcprov-jdk15on-150.orig/org/bouncycastle/jce/provider/PKIXCRLUtil.java	2013-12-03 20:18:20.000000000 +0000
+--- bcprov-jdk15on-150.orig/org/bouncycastle/jce/provider/PKIXCRLUtil.java	2013-12-03 12:18:20.000000000 +0000
 +++ bcprov-jdk15on-150/org/bouncycastle/jce/provider/PKIXCRLUtil.java	2013-12-12 00:35:05.000000000 +0000
 @@ -15,7 +15,9 @@
  import org.bouncycastle.util.StoreException;
@@ -8168,8 +8246,8 @@
                  CertStore store = (CertStore)obj;
  
 diff -Naur bcprov-jdk15on-150.orig/org/bouncycastle/jce/provider/PKIXCertPathValidatorSpi.java bcprov-jdk15on-150/org/bouncycastle/jce/provider/PKIXCertPathValidatorSpi.java
---- bcprov-jdk15on-150.orig/org/bouncycastle/jce/provider/PKIXCertPathValidatorSpi.java	2013-12-03 20:18:20.000000000 +0000
-+++ bcprov-jdk15on-150/org/bouncycastle/jce/provider/PKIXCertPathValidatorSpi.java	2012-09-17 23:04:47.000000000 +0000
+--- bcprov-jdk15on-150.orig/org/bouncycastle/jce/provider/PKIXCertPathValidatorSpi.java	2013-12-03 12:18:20.000000000 +0000
++++ bcprov-jdk15on-150/org/bouncycastle/jce/provider/PKIXCertPathValidatorSpi.java	2014-05-05 17:28:58.000000000 +0000
 @@ -1,5 +1,8 @@
  package org.bouncycastle.jce.provider;
  
@@ -8231,7 +8309,7 @@
              // {
              //
 diff -Naur bcprov-jdk15on-150.orig/org/bouncycastle/jce/provider/X509CertificateObject.java bcprov-jdk15on-150/org/bouncycastle/jce/provider/X509CertificateObject.java
---- bcprov-jdk15on-150.orig/org/bouncycastle/jce/provider/X509CertificateObject.java	2013-12-03 20:18:20.000000000 +0000
+--- bcprov-jdk15on-150.orig/org/bouncycastle/jce/provider/X509CertificateObject.java	2013-12-03 12:18:20.000000000 +0000
 +++ bcprov-jdk15on-150/org/bouncycastle/jce/provider/X509CertificateObject.java	2013-01-31 02:26:40.000000000 +0000
 @@ -57,6 +57,9 @@
  import org.bouncycastle.asn1.x509.Extensions;
@@ -8277,7 +8355,7 @@
                  case GeneralName.dNSName:
                  case GeneralName.rfc822Name:
 diff -Naur bcprov-jdk15on-150.orig/org/bouncycastle/jce/provider/X509SignatureUtil.java bcprov-jdk15on-150/org/bouncycastle/jce/provider/X509SignatureUtil.java
---- bcprov-jdk15on-150.orig/org/bouncycastle/jce/provider/X509SignatureUtil.java	2013-12-03 20:18:20.000000000 +0000
+--- bcprov-jdk15on-150.orig/org/bouncycastle/jce/provider/X509SignatureUtil.java	2013-12-03 12:18:20.000000000 +0000
 +++ bcprov-jdk15on-150/org/bouncycastle/jce/provider/X509SignatureUtil.java	2013-09-26 18:06:21.000000000 +0000
 @@ -14,7 +14,9 @@
  import org.bouncycastle.asn1.ASN1Sequence;
@@ -8353,7 +8431,7 @@
          {
              return digestAlgOID.getId();            
 diff -Naur bcprov-jdk15on-150.orig/org/bouncycastle/x509/X509Util.java bcprov-jdk15on-150/org/bouncycastle/x509/X509Util.java
---- bcprov-jdk15on-150.orig/org/bouncycastle/x509/X509Util.java	2013-12-03 20:18:20.000000000 +0000
+--- bcprov-jdk15on-150.orig/org/bouncycastle/x509/X509Util.java	2013-12-03 12:18:20.000000000 +0000
 +++ bcprov-jdk15on-150/org/bouncycastle/x509/X509Util.java	2013-09-26 18:06:21.000000000 +0000
 @@ -25,12 +25,16 @@
  import org.bouncycastle.asn1.ASN1Integer;