TEE_ObjectHandle tmp_secret_handl = TEE_HANDLE_NULL;
TEE_Attribute ecdhParams[2];
uint32_t priv_curve = 0, pub_curve = 0, b = 0;
+ uint32_t maxKeySizeBits = 0;
TEE_GetObjectInfo(prv_key, &info);
+ maxKeySizeBits = KM_MaxObjectSizeBits(&info);
+
if(info.objectType != TEE_TYPE_ECDSA_KEYPAIR && info.objectType != TEE_TYPE_ECDH_KEYPAIR) {
LOG("Invalid objectType of private key. objectType=%x.", info.objectType);
return TEE_ERROR_BAD_PARAMETERS;
return TEE_ERROR_BAD_PARAMETERS;
}
- ret = TEE_AllocateTransientObject(TEE_TYPE_GENERIC_SECRET, info.objectSize, &tmp_secret_handl);
+ ret = TEE_AllocateTransientObject(TEE_TYPE_GENERIC_SECRET, maxKeySizeBits, &tmp_secret_handl);
if (TEE_SUCCESS != ret) {
- LOG("TEE_AllocateTransientObject has failed with=%x. key_type = %x size_bits = %u",
- ret, TEE_TYPE_GENERIC_SECRET, info.objectSize);
+ LOG("TEE_AllocateTransientObject has failed with=%x. key_type = %x max_key_bits_size = %u",
+ ret, TEE_TYPE_GENERIC_SECRET, maxKeySizeBits);
goto clean;
}
// Change type from TEE_TYPE_ECDSA_KEYPAIR to TEE_TYPE_ECDH_KEYPAIR
if(info.objectType == TEE_TYPE_ECDSA_KEYPAIR) {
- ret = TEE_AllocateTransientObject(TEE_TYPE_ECDH_KEYPAIR, info.objectSize, &ecdh_key);
+ ret = TEE_AllocateTransientObject(TEE_TYPE_ECDH_KEYPAIR, maxKeySizeBits, &ecdh_key);
if (TEE_SUCCESS != ret) {
LOG("TEE_AllocateTransientObject has failed with=%x. Arguments=(tee_key_type=%X, "
- "key_bits_size=%d.", ret, TEE_TYPE_ECDH_KEYPAIR, info.objectSize);
+ "max_key_bits_size=%d.", ret, TEE_TYPE_ECDH_KEYPAIR, maxKeySizeBits);
goto clean;
}
ret = KM_CopyEcdhPrivateAttributes(ecdh_key, prv_key);
TEE_GetObjectInfo(op_key_hndl, &info);
- bits = KM_ObjectSizeBits(&info);
+ bits = KM_MaxObjectSizeBits(&info);
+
LOGD("Operation key size: %d alg: %x mode: %x", bits, algo, mode);
ret = TEE_AllocateOperation(hndl, algo, mode, bits);
if (TEE_SUCCESS != ret) {