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();
}