From 76d33f8c553ed69a1133d0113df4eeafcaf23b3f Mon Sep 17 00:00:00 2001 From: subrahmanyaman Date: Thu, 3 Nov 2022 06:48:06 +0000 Subject: [PATCH] Unwrapping params should have SH256 and RSA_OAEP as digest and padding --- .../android/javacard/keymaster/KMKeymasterApplet.java | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/Applet/src/com/android/javacard/keymaster/KMKeymasterApplet.java b/Applet/src/com/android/javacard/keymaster/KMKeymasterApplet.java index da8aa4b7..fcf526ef 100644 --- a/Applet/src/com/android/javacard/keymaster/KMKeymasterApplet.java +++ b/Applet/src/com/android/javacard/keymaster/KMKeymasterApplet.java @@ -1358,6 +1358,15 @@ private void validateWrappingKeyBlob(){ if (!KMEnumArrayTag.contains(KMType.PURPOSE, KMType.WRAP_KEY, data[HW_PARAMETERS])) { KMException.throwIt((KMError.INCOMPATIBLE_PURPOSE)); } + + // Check that the digest and padding mode specified in unwrapping parameters are SHA2_256 + // and RSA_OAEP respectively. + if (!KMEnumArrayTag.contains(KMType.DIGEST, KMType.SHA2_256, data[KEY_PARAMETERS])) { + KMException.throwIt(KMError.INCOMPATIBLE_DIGEST); + } + if (!KMEnumArrayTag.contains(KMType.PADDING, KMType.RSA_OAEP, data[KEY_PARAMETERS])) { + KMException.throwIt(KMError.INCOMPATIBLE_PADDING_MODE); + } } private short decryptTransportKey(short privExp, short modulus, short transportKey, byte[] scratchPad){