Reserve enough space for GCM tag in TZ backend 78/295878/1
authorKrzysztof Jackiewicz <k.jackiewicz@samsung.com>
Wed, 12 Jul 2023 06:58:38 +0000 (08:58 +0200)
committerKrzysztof Jackiewicz <k.jackiewicz@samsung.com>
Fri, 14 Jul 2023 12:43:22 +0000 (14:43 +0200)
Change-Id: I36f9718cfdc37f7fdac1e47fc056aeaabdeee242

src/manager/crypto/tz-backend/tz-context.cpp

index 1359258..3cf5702 100644 (file)
@@ -50,6 +50,9 @@ namespace {
 // whatever TA will return us.
 const uint32_t CIPHER_EXTRA_PADDING_SIZE = 16;
 
+// Maximum size of GCM tag in bytes.
+const size_t MAX_GCM_TAG_SIZE = 16;
+
 // Identifier of our TA
 const TEEC_UUID KEY_MANAGER_TA_UUID = KM_TA_UUID;
 
@@ -547,7 +550,7 @@ RawBuffer TrustZoneContext::finalizeGcmCipher(uint32_t opId,
        sIn.Serialize(inMemory);
 
        TZSerializer sOut;
-       sOut.Push(new TZSerializableBinary(data.size()));
+       sOut.Push(new TZSerializableBinary(MAX_GCM_TAG_SIZE, false));
        TrustZoneMemory outMemory(m_Context, sOut.GetSize(), TEEC_MEM_OUTPUT);
 
        TEEC_Operation op = makeOp(TEEC_VALUE_INOUT, inMemory, outMemory);