case TEE_ALG_ECDH_P256:
case TEE_ALG_ECDH_P384:
case TEE_ALG_ECDH_P521:
- case TEE_ALG_ECDH_DERIVE_SHARED_SECRET:
return 0; // do nothing
default:
return sw_crypto_open(operation);
case TEE_ALG_ECDH_P256:
case TEE_ALG_ECDH_P384:
case TEE_ALG_ECDH_P521:
- case TEE_ALG_ECDH_DERIVE_SHARED_SECRET:
return 0; // do nothing
default:
return sw_crypto_close(operation);
case TEE_ALG_ECDH_P256:
case TEE_ALG_ECDH_P384:
case TEE_ALG_ECDH_P521:
- if (mode != TEE_MODE_SIGN && mode != TEE_MODE_VERIFY) {
+ if (mode != TEE_MODE_DERIVE) {
return TEE_ERROR_NOT_SUPPORTED;
}
- alg_class = TEE_OPERATION_ASYMMETRIC_SIGNATURE;
- if (mode == TEE_MODE_SIGN)
- key_object_type = TEE_TYPE_ECDH_KEYPAIR;
- else
- key_object_type = TEE_TYPE_ECDH_KEYPAIR;
+ alg_class = TEE_OPERATION_KEY_DERIVATION;
+ key_object_type = TEE_TYPE_ECDH_KEYPAIR;
break;
/* Algorithm Class is KEY DERIVATION */
key_object_type = TEE_TYPE_DH_KEYPAIR;
break;
- case TEE_ALG_ECDH_DERIVE_SHARED_SECRET:
- if (mode != TEE_MODE_DERIVE) {
- return TEE_ERROR_NOT_SUPPORTED;
- }
-
- alg_class = TEE_OPERATION_KEY_DERIVATION;
- key_object_type = TEE_TYPE_ECDH_KEYPAIR;
- break;
-
default:
LOGE(MODULE_SSF_LIB, "Not Support Algorithm : %X", algorithm);
rc = TEE_ERROR_NOT_SUPPORTED;
}
}
-// Only TEE_ALG_ECDH_DERIVE_SHARED_SECRET supported for now.
+// Only TEE_ALG_ECDH_PXXX supported for now.
void TEE_DeriveKey( TEE_OperationHandle operation, TEE_Attribute* params, uint32_t paramCount, TEE_ObjectHandle derivedKey)
{
PERMISSION_CHECK_RETURN_VOID(PERM_CRYPTO);