Remove the workaround for psa_key_agreement_internal

Remove the workaround for psa_key_agreement_internal to
have a shared_secret array always non-zero. The spec is
recently updated so that PSA_RAW_KEY_AGREEMENT_OUTPUT_MAX_SIZE
is always non-zero

Signed-off-by: Antonio de Angelis <antonio.deangelis@arm.com>
This commit is contained in:
Antonio de Angelis 2023-08-17 15:27:54 +01:00
parent f1adc2a7a1
commit 8e9d6b927e

View file

@ -7049,13 +7049,8 @@ static psa_status_t psa_key_agreement_internal(psa_key_derivation_operation_t *o
size_t peer_key_length) size_t peer_key_length)
{ {
psa_status_t status; psa_status_t status;
#if PSA_RAW_KEY_AGREEMENT_OUTPUT_MAX_SIZE != 0
uint8_t shared_secret[PSA_RAW_KEY_AGREEMENT_OUTPUT_MAX_SIZE]; uint8_t shared_secret[PSA_RAW_KEY_AGREEMENT_OUTPUT_MAX_SIZE];
size_t shared_secret_length = sizeof(shared_secret);
#else
uint8_t *shared_secret = NULL;
size_t shared_secret_length = 0; size_t shared_secret_length = 0;
#endif
psa_algorithm_t ka_alg = PSA_ALG_KEY_AGREEMENT_GET_BASE(operation->alg); psa_algorithm_t ka_alg = PSA_ALG_KEY_AGREEMENT_GET_BASE(operation->alg);
/* Step 1: run the secret agreement algorithm to generate the shared /* Step 1: run the secret agreement algorithm to generate the shared
@ -7064,7 +7059,7 @@ static psa_status_t psa_key_agreement_internal(psa_key_derivation_operation_t *o
private_key, private_key,
peer_key, peer_key_length, peer_key, peer_key_length,
shared_secret, shared_secret,
shared_secret_length, sizeof(shared_secret),
&shared_secret_length); &shared_secret_length);
if (status != PSA_SUCCESS) { if (status != PSA_SUCCESS) {
goto exit; goto exit;