diff options
author | Alex Klyubin <klyubin@google.com> | 2015-06-25 09:04:37 -0700 |
---|---|---|
committer | Alex Klyubin <klyubin@google.com> | 2015-06-25 09:09:04 -0700 |
commit | 25d2270704e246d897596c991a36233cdc620790 (patch) | |
tree | 70f1800de6e8474bbd3140a8a079eae29c3a7b48 /keystore/java/android/security/keystore/AndroidKeyStoreCipherSpiBase.java | |
parent | c781405f43ca06041777f2e382c0d5b7bdeac43a (diff) | |
download | frameworks_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.java | 15 |
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. /** |