diff --git a/keystore/java/android/security/keystore2/AndroidKeyStoreProvider.java b/keystore/java/android/security/keystore2/AndroidKeyStoreProvider.java index 164bc86695257..75ac61a22cabb 100644 --- a/keystore/java/android/security/keystore2/AndroidKeyStoreProvider.java +++ b/keystore/java/android/security/keystore2/AndroidKeyStoreProvider.java @@ -363,6 +363,11 @@ public class AndroidKeyStoreProvider extends Provider { } } + if (response.iSecurityLevel == null) { + // This seems to be a pure certificate entry, nothing to return here. + return null; + } + Integer keymasterAlgorithm = null; // We just need one digest for the algorithm name int keymasterDigest = -1; diff --git a/keystore/java/android/security/keystore2/AndroidKeyStoreSpi.java b/keystore/java/android/security/keystore2/AndroidKeyStoreSpi.java index 5e7f6482ebed9..07169cedc1d95 100644 --- a/keystore/java/android/security/keystore2/AndroidKeyStoreSpi.java +++ b/keystore/java/android/security/keystore2/AndroidKeyStoreSpi.java @@ -490,7 +490,7 @@ public class AndroidKeyStoreSpi extends KeyStoreSpi { int[] keymasterEncryptionPaddings = KeyProperties.EncryptionPadding.allToKeymaster( spec.getEncryptionPaddings()); - if (((spec.getPurposes() & KeyProperties.PURPOSE_DECRYPT) != 0) + if (((spec.getPurposes() & KeyProperties.PURPOSE_ENCRYPT) != 0) && (spec.isRandomizedEncryptionRequired())) { for (int keymasterPadding : keymasterEncryptionPaddings) { if (!KeymasterUtils