summaryrefslogtreecommitdiffstats
path: root/keystore/java/android/security/keystore/AndroidKeyStoreCipherSpiBase.java
diff options
context:
space:
mode:
authorAlex Klyubin <klyubin@google.com>2015-06-25 09:04:37 -0700
committerAlex Klyubin <klyubin@google.com>2015-06-25 09:09:04 -0700
commit25d2270704e246d897596c991a36233cdc620790 (patch)
tree70f1800de6e8474bbd3140a8a079eae29c3a7b48 /keystore/java/android/security/keystore/AndroidKeyStoreCipherSpiBase.java
parentc781405f43ca06041777f2e382c0d5b7bdeac43a (diff)
downloadframeworks_base-25d2270704e246d897596c991a36233cdc620790.zip
frameworks_base-25d2270704e246d897596c991a36233cdc620790.tar.gz
frameworks_base-25d2270704e246d897596c991a36233cdc620790.tar.bz2
Support RSA encrypt using private key and PKCS#1 paddding.
Some apps such as OpenVPN Connect for some reason generate PKCS#1-padded RSA signatures using Cipher (initialized in Cipher.ENCRYPT_MODE with private key!) instead of using Signature. Unfortunately, RI supports this strange behavior and previous releases of Android Keystore did the same. So, we have to continue supporting this craziness. Bug: 22083023 Change-Id: Ife3950d0d4ceb4e44e08014635312c1252878b69
Diffstat (limited to 'keystore/java/android/security/keystore/AndroidKeyStoreCipherSpiBase.java')
-rw-r--r--keystore/java/android/security/keystore/AndroidKeyStoreCipherSpiBase.java15
1 files changed, 15 insertions, 0 deletions
diff --git a/keystore/java/android/security/keystore/AndroidKeyStoreCipherSpiBase.java b/keystore/java/android/security/keystore/AndroidKeyStoreCipherSpiBase.java
index 50f3ed4..38cacd0 100644
--- a/keystore/java/android/security/keystore/AndroidKeyStoreCipherSpiBase.java
+++ b/keystore/java/android/security/keystore/AndroidKeyStoreCipherSpiBase.java
@@ -731,6 +731,21 @@ abstract class AndroidKeyStoreCipherSpiBase extends CipherSpi implements KeyStor
return mMainDataStreamer.getProducedOutputSizeBytes();
}
+ static String opmodeToString(int opmode) {
+ switch (opmode) {
+ case Cipher.ENCRYPT_MODE:
+ return "ENCRYPT_MODE";
+ case Cipher.DECRYPT_MODE:
+ return "DECRYPT_MODE";
+ case Cipher.WRAP_MODE:
+ return "WRAP_MODE";
+ case Cipher.UNWRAP_MODE:
+ return "UNWRAP_MODE";
+ default:
+ return String.valueOf(opmode);
+ }
+ }
+
// The methods below need to be implemented by subclasses.
/**