Add missing KBKDF params in TZ backend 41/293041/6
authorKrzysztof Jackiewicz <k.jackiewicz@samsung.com>
Thu, 18 May 2023 11:50:04 +0000 (13:50 +0200)
committerKrzysztof Jackiewicz <k.jackiewicz@samsung.com>
Mon, 5 Jun 2023 14:05:26 +0000 (16:05 +0200)
Change-Id: I4cadca649889190c30868c55a2e91c9f49252d84

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

index d732c4c..51bce1d 100644 (file)
@@ -755,6 +755,10 @@ void deriveKBKDF(const RawBuffer &secret,
                                 RawBuffer &keyTag,
                                 const RawBuffer &keyHash)
 {
+       RawBuffer label, context, fixed;
+       alg.getParam(ParamName::KBKDF_LABEL, label);
+       alg.getParam(ParamName::KBKDF_CONTEXT, context);
+       alg.getParam(ParamName::KBKDF_FIXED_INPUT, fixed);
        auto prf = unpack<KdfPrf>(alg, ParamName::KDF_PRF);
        auto mode = unpack<KbkdfMode>(alg, ParamName::KBKDF_MODE);
        auto location = unpack<KbkdfCounterLocation>(alg, ParamName::KBKDF_COUNTER_LOCATION);
@@ -767,6 +771,9 @@ void deriveKBKDF(const RawBuffer &secret,
        RawBuffer keyPwdBuf(keyPwd.begin(), keyPwd.end());
 
        TrustZoneContext::Instance().executeKbkdf(secret,
+                                                                                         label,
+                                                                                         context,
+                                                                                         fixed,
                                                                                          toTzPrf(prf),
                                                                                          toTzKbkdfMode(mode),
                                                                                          toTzCtrLoc(location),
index bf603c9..06e9706 100644 (file)
@@ -801,6 +801,9 @@ void TrustZoneContext::executeEcdh(const RawBuffer &prvKeyId,
 }
 
 void TrustZoneContext::executeKbkdf(const RawBuffer& secret,
+                                                                       const RawBuffer& label,
+                                                                       const RawBuffer& context,
+                                                                       const RawBuffer& fixed,
                                                                        tz_prf prf,
                                                                        tz_kbkdf_mode mode,
                                                                        tz_kbkdf_ctr_loc location,
@@ -815,8 +818,18 @@ void TrustZoneContext::executeKbkdf(const RawBuffer& secret,
        // command ID = CMD_DERIVE
        LogDebug("TrustZoneContext::executeKbkdf");
 
-       auto sIn = makeSerializer(
-               secret, prf, mode, location, rlen, llen, noSeparator, EncPwd{keyPwdBuf, keyPwdIV}, keyHash);
+       auto sIn = makeSerializer(secret,
+                                                         label,
+                                                         context,
+                                                         fixed,
+                                                         prf,
+                                                         mode,
+                                                         location,
+                                                         rlen,
+                                                         llen,
+                                                         noSeparator,
+                                                         EncPwd{keyPwdBuf, keyPwdIV}, keyHash);
+
        TrustZoneMemory inMemory(m_Context, sIn.GetSize(), TEEC_MEM_INPUT);
        sIn.Serialize(inMemory);
 
index e48e642..bee3dd5 100644 (file)
@@ -167,6 +167,9 @@ public:
                                         const RawBuffer &secretHash);
 
        void executeKbkdf(const RawBuffer& secret,
+                                         const RawBuffer& label,
+                                         const RawBuffer& context,
+                                         const RawBuffer& fixed,
                                          tz_prf prf,
                                          tz_kbkdf_mode mode,
                                          tz_kbkdf_ctr_loc location,