BaseBlockCipher: for BCEPBEKeys, ignore parameters if no IV is present

(cherry picked from commit d66ae962406981a998aa3d8a6c7311a8f23276a6)
Bug: 27224566

Change-Id: Ideceeba353aff5b3a4540b71f1ca40065058fd1d
diff --git a/bcprov/src/main/java/org/bouncycastle/jcajce/provider/symmetric/util/BaseBlockCipher.java b/bcprov/src/main/java/org/bouncycastle/jcajce/provider/symmetric/util/BaseBlockCipher.java
index da2b4d5..eec06f3 100644
--- a/bcprov/src/main/java/org/bouncycastle/jcajce/provider/symmetric/util/BaseBlockCipher.java
+++ b/bcprov/src/main/java/org/bouncycastle/jcajce/provider/symmetric/util/BaseBlockCipher.java
@@ -553,7 +553,15 @@
             }
             if (key instanceof BCPBEKey)
             {
-                if (((BCPBEKey)key).getParam() != null)
+                // BEGIN android-changed
+                // Was:
+                // if (((BCPBEKey)key).getParam() != null)
+                // Change taken from:
+                // https://github.com/bcgit/bc-java/commit/fcba5c782188d772148ba168beae368d06646ee2
+                // PKCS#12 sets an IV, if we get a key that doesn't have ParametersWithIV we need to forget about the fact
+                // it's a BCPBEKey
+                if (((BCPBEKey)key).getParam() != null && ((BCPBEKey)key).getParam() instanceof ParametersWithIV)
+                // END android-changed
                 {
                     param = ((BCPBEKey)key).getParam();
                 }