merge in mnc-release history after reset to mnc-dev
diff --git a/bcprov/src/main/java/org/bouncycastle/jcajce/provider/symmetric/AES.java b/bcprov/src/main/java/org/bouncycastle/jcajce/provider/symmetric/AES.java
index 3ac173b..d476df8 100644
--- a/bcprov/src/main/java/org/bouncycastle/jcajce/provider/symmetric/AES.java
+++ b/bcprov/src/main/java/org/bouncycastle/jcajce/provider/symmetric/AES.java
@@ -3,6 +3,9 @@
 import java.io.IOException;
 import java.lang.reflect.Constructor;
 import java.lang.reflect.Method;
+// BEGIN android-added
+import java.security.NoSuchAlgorithmException;
+// END android-added
 // BEGIN android-removed
 // import java.security.AlgorithmParameters;
 // import java.security.InvalidAlgorithmParameterException;
@@ -15,6 +18,9 @@
 // import javax.crypto.spec.IvParameterSpec;
 // END android-removed
 
+// BEGIN android-added
+import javax.crypto.NoSuchPaddingException;
+// END android-added
 import org.bouncycastle.asn1.bc.BCObjectIdentifiers;
 // BEGIN android-removed
 // import org.bouncycastle.asn1.cms.CCMParameters;
@@ -112,6 +118,15 @@
         public GCM()
         {
             super(new GCMBlockCipher(new AESFastEngine()));
+            // BEGIN android-added
+            try {
+                engineSetMode("GCM");
+                engineSetPadding("NoPadding");
+            } catch (NoSuchAlgorithmException | NoSuchPaddingException e) {
+                // this should not be possible
+                throw new RuntimeException("Could not set mode or padding for GCM mode", e);
+            }
+            // END android-added
         }
     }
 
diff --git a/patches/bcprov.patch b/patches/bcprov.patch
index 33940ee..42dd030 100644
--- a/patches/bcprov.patch
+++ b/patches/bcprov.patch
@@ -4111,12 +4111,15 @@
 diff -Naur bcprov-jdk15on-152.orig/org/bouncycastle/jcajce/provider/symmetric/AES.java bcprov-jdk15on-152/org/bouncycastle/jcajce/provider/symmetric/AES.java
 --- bcprov-jdk15on-152.orig/org/bouncycastle/jcajce/provider/symmetric/AES.java	2015-03-01 20:03:02.000000000 +0000
 +++ bcprov-jdk15on-152/org/bouncycastle/jcajce/provider/symmetric/AES.java	2015-05-12 00:19:13.000000000 +0000
-@@ -3,16 +3,22 @@
+@@ -3,16 +3,28 @@
  import java.io.IOException;
  import java.lang.reflect.Constructor;
  import java.lang.reflect.Method;
 -import java.security.AlgorithmParameters;
 -import java.security.InvalidAlgorithmParameterException;
++// BEGIN android-added
++import java.security.NoSuchAlgorithmException;
++// END android-added
 +// BEGIN android-removed
 +// import java.security.AlgorithmParameters;
 +// import java.security.InvalidAlgorithmParameterException;
@@ -4126,10 +4129,14 @@
  import java.security.spec.InvalidParameterSpecException;
  
 -import javax.crypto.spec.IvParameterSpec;
+-
 +// BEGIN android-removed
 +// import javax.crypto.spec.IvParameterSpec;
 +// END android-removed
- 
++
++// BEGIN android-added
++import javax.crypto.NoSuchPaddingException;
++// END android-added
  import org.bouncycastle.asn1.bc.BCObjectIdentifiers;
 -import org.bouncycastle.asn1.cms.CCMParameters;
 +// BEGIN android-removed
@@ -4138,7 +4145,7 @@
  import org.bouncycastle.asn1.cms.GCMParameters;
  import org.bouncycastle.asn1.nist.NISTObjectIdentifiers;
  import org.bouncycastle.crypto.BlockCipher;
-@@ -20,22 +26,30 @@
+@@ -20,22 +32,30 @@
  import org.bouncycastle.crypto.CipherKeyGenerator;
  import org.bouncycastle.crypto.engines.AESFastEngine;
  import org.bouncycastle.crypto.engines.AESWrapEngine;
@@ -4177,7 +4184,19 @@
  import org.bouncycastle.jcajce.provider.symmetric.util.BaseWrapCipher;
  import org.bouncycastle.jcajce.provider.symmetric.util.BlockCipherProvider;
  import org.bouncycastle.jcajce.provider.symmetric.util.IvAlgorithmParameters;
-@@ -101,50 +115,52 @@
+@@ -98,53 +118,64 @@
+         public GCM()
+         {
+             super(new GCMBlockCipher(new AESFastEngine()));
++            // BEGIN android-added
++            try {
++                engineSetMode("GCM");
++                engineSetPadding("NoPadding");
++            } catch (NoSuchAlgorithmException | NoSuchPaddingException e) {
++                // this should not be possible
++                throw new RuntimeException("Could not set mode or padding for GCM mode", e);
++            }
++            // END android-added
          }
      }
  
@@ -4274,7 +4293,7 @@
  
      static public class Wrap
          extends BaseWrapCipher
-@@ -155,23 +171,25 @@
+@@ -155,23 +186,25 @@
          }
      }
  
@@ -4317,7 +4336,7 @@
  
      /**
       * PBEWithAES-CBC
-@@ -190,7 +208,9 @@
+@@ -190,7 +223,9 @@
      {
          public KeyGen()
          {
@@ -4328,7 +4347,7 @@
          }
  
          public KeyGen(int keySize)
-@@ -199,32 +219,34 @@
+@@ -199,32 +234,34 @@
          }
      }
  
@@ -4389,7 +4408,7 @@
      
      /**
       * PBEWithSHA1And128BitAES-BC
-@@ -334,119 +356,121 @@
+@@ -334,119 +371,121 @@
          }
      }
      
@@ -4624,7 +4643,7 @@
  
      public static class AlgParams
          extends IvAlgorithmParameters
-@@ -545,80 +569,82 @@
+@@ -545,80 +584,82 @@
          }
      }
  
@@ -4781,7 +4800,7 @@
  
      public static class Mappings
          extends SymmetricAlgorithmProvider
-@@ -652,92 +678,101 @@
+@@ -652,92 +693,101 @@
              provider.addAlgorithm("Alg.Alias.AlgorithmParameters." + NISTObjectIdentifiers.id_aes128_GCM, "GCM");
              provider.addAlgorithm("Alg.Alias.AlgorithmParameters." + NISTObjectIdentifiers.id_aes192_GCM, "GCM");
              provider.addAlgorithm("Alg.Alias.AlgorithmParameters." + NISTObjectIdentifiers.id_aes256_GCM, "GCM");
@@ -4957,7 +4976,7 @@
              
              provider.addAlgorithm("Alg.Alias.Cipher." + BCObjectIdentifiers.bc_pbe_sha1_pkcs12_aes128_cbc.getId(), "PBEWITHSHAAND128BITAES-CBC-BC");
              provider.addAlgorithm("Alg.Alias.Cipher." + BCObjectIdentifiers.bc_pbe_sha1_pkcs12_aes192_cbc.getId(), "PBEWITHSHAAND192BITAES-CBC-BC");
-@@ -816,8 +851,10 @@
+@@ -816,8 +866,10 @@
              provider.addAlgorithm("Alg.Alias.AlgorithmParameters." + BCObjectIdentifiers.bc_pbe_sha256_pkcs12_aes192_cbc.getId(), "PKCS12PBE");
              provider.addAlgorithm("Alg.Alias.AlgorithmParameters." + BCObjectIdentifiers.bc_pbe_sha256_pkcs12_aes256_cbc.getId(), "PKCS12PBE");