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);
RawBuffer keyPwdBuf(keyPwd.begin(), keyPwd.end());
TrustZoneContext::Instance().executeKbkdf(secret,
+ label,
+ context,
+ fixed,
toTzPrf(prf),
toTzKbkdfMode(mode),
toTzCtrLoc(location),
}
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,
// 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);
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,