RawBuffer secretPwdBuf(secretPwd.begin(), secretPwd.end());
+ int pubCurve = EC_GROUP_get_curve_name(ecGroup);
+ tz_ec tzCurve;
+ switch (pubCurve)
+ {
+ case NID_X9_62_prime192v1:
+ tzCurve = EC_NIST_P192;
+ break;
+
+ case NID_X9_62_prime256v1:
+ tzCurve = EC_NIST_P256;
+ break;
+
+ case NID_secp384r1:
+ tzCurve = EC_NIST_P384;
+ break;
+
+ default:
+ ThrowErr(Exc::Crypto::InputParam, "Unsupported public key EC");
+ }
+
TrustZoneContext::Instance().executeEcdh(prvKeyId,
prvKeyPwd,
+ tzCurve,
xBuf,
yBuf,
secretPwdBuf,
void TrustZoneContext::executeEcdh(const RawBuffer &prvKeyId,
const Pwd &prvKeyPwd,
+ const tz_ec curve,
const RawBuffer &pubX,
const RawBuffer &pubY,
const RawBuffer &secretPwdBuf,
LogDebug("TrustZoneContext::executeEcdh");
auto sIn = makeSerializer(
- prvKeyId, prvKeyPwd, pubX, pubY, EncPwd{secretPwdBuf, secretPwdIV}, secretHash);
+ prvKeyId, prvKeyPwd, curve, pubX, pubY, EncPwd{secretPwdBuf, secretPwdIV}, secretHash);
TrustZoneMemory inMemory(m_Context, sIn.GetSize(), TEEC_MEM_INPUT);
sIn.Serialize(inMemory);