From 6358b881f2e483a4d96ff440fb19136e2d25e893 Mon Sep 17 00:00:00 2001 From: Alex Klyubin Date: Thu, 30 Apr 2015 13:57:44 -0700 Subject: [PATCH] Handle KM_ERROR_CALLER_NONCE_PROHIBITED. This converts KM_ERROR_CALLER_NONCE_PROHIBITED into InvalidAlgorithmParameterSpec, as expected by the contract of JCA Cipher. Bug: 18088752 Change-Id: I6a01e2d7118c478b27a0d7a5a14a127de8913755 --- core/java/android/security/keymaster/KeymasterDefs.java | 2 ++ .../java/android/security/KeyStoreCryptoOperationUtils.java | 2 ++ 2 files changed, 4 insertions(+) diff --git a/core/java/android/security/keymaster/KeymasterDefs.java b/core/java/android/security/keymaster/KeymasterDefs.java index d8834fec5000e..0e2b8ba85749c 100644 --- a/core/java/android/security/keymaster/KeymasterDefs.java +++ b/core/java/android/security/keymaster/KeymasterDefs.java @@ -238,6 +238,8 @@ public final class KeymasterDefs { sErrorCodeToString.put(KM_ERROR_UNSUPPORTED_EC_FIELD, "Unsupported EC field"); sErrorCodeToString.put(KM_ERROR_MISSING_NONCE, "Required IV missing"); sErrorCodeToString.put(KM_ERROR_INVALID_NONCE, "Invalid IV"); + sErrorCodeToString.put(KM_ERROR_CALLER_NONCE_PROHIBITED, + "Caller-provided IV not permitted"); sErrorCodeToString.put(KM_ERROR_UNIMPLEMENTED, "Not implemented"); sErrorCodeToString.put(KM_ERROR_UNKNOWN_ERROR, "Unknown error"); } diff --git a/keystore/java/android/security/KeyStoreCryptoOperationUtils.java b/keystore/java/android/security/KeyStoreCryptoOperationUtils.java index 313b5270a32d2..e5933add7331b 100644 --- a/keystore/java/android/security/KeyStoreCryptoOperationUtils.java +++ b/keystore/java/android/security/KeyStoreCryptoOperationUtils.java @@ -74,6 +74,8 @@ abstract class KeyStoreCryptoOperationUtils { switch (beginOpResultCode) { case KeymasterDefs.KM_ERROR_INVALID_NONCE: return new InvalidAlgorithmParameterException("Invalid IV"); + case KeymasterDefs.KM_ERROR_CALLER_NONCE_PROHIBITED: + return new InvalidAlgorithmParameterException("Caller-provided IV not permitted"); } // General cases