diff --git a/Applet/src/com/android/javacard/keymaster/KMKeymasterApplet.java b/Applet/src/com/android/javacard/keymaster/KMKeymasterApplet.java index 9db7208a..9aa1be77 100644 --- a/Applet/src/com/android/javacard/keymaster/KMKeymasterApplet.java +++ b/Applet/src/com/android/javacard/keymaster/KMKeymasterApplet.java @@ -1766,6 +1766,8 @@ private void finishAesDesOperation(KMOperationState op){ if (op.getPurpose() == KMType.DECRYPT && (len < (short) (op.getMacLength() / 8))) { KMException.throwIt(KMError.INVALID_INPUT_LENGTH); } + // update aad if there is any + updateAAD(op, KMType.INVALID_VALUE, (byte) 0x01); if(op.isAesGcmUpdateAllowed()){ op.setAesGcmUpdateComplete(); } @@ -2206,7 +2208,7 @@ private void updateAAD(KMOperationState op, short associatedData, byte finish) { if (!op.isAesGcmUpdateAllowed()) { KMException.throwIt(KMError.INVALID_TAG); } - aData = KMByteTag.cast(tmpVariables[1]).getValue(); + aData = KMByteTag.cast(tag).getValue(); } } try {