diff --git a/tf-psa-crypto/core/psa_crypto_ecp.c b/tf-psa-crypto/core/psa_crypto_ecp.c index 948e14675b..096bc116b2 100644 --- a/tf-psa-crypto/core/psa_crypto_ecp.c +++ b/tf-psa-crypto/core/psa_crypto_ecp.c @@ -631,4 +631,11 @@ psa_status_t psa_key_agreement_iop_complete( return PSA_SUCCESS; } +psa_status_t psa_key_agreement_iop_abort( + psa_key_agreement_iop_t *operation) +{ + (void) operation; + + return PSA_SUCCESS; +} #endif /* MBEDTLS_PSA_CRYPTO_C */ diff --git a/tf-psa-crypto/include/psa/crypto.h b/tf-psa-crypto/include/psa/crypto.h index 7ec865a9ad..eaac3585c2 100644 --- a/tf-psa-crypto/include/psa/crypto.h +++ b/tf-psa-crypto/include/psa/crypto.h @@ -5117,6 +5117,47 @@ psa_status_t psa_key_agreement_iop_complete( psa_key_agreement_iop_t *operation, psa_key_id_t *key); +/** + * \brief Abort a key agreement operation. + * + * \warning This is a beta API, and thus subject to change + * at any point. It is not bound by the usual + * interface stability promises. + * + * \note This function is the only function that clears + * the number of ops completed as part of the + * operation. Please ensure you copy this value via + * \c psa_key_agreement_iop_get_num_ops() if + * required before calling. + * + * \note Aborting an operation frees all + * associated resources except for the operation + * structure itself. Once aborted, the operation + * object can be reused for another operation by + * calling \c psa_key_agreement_iop_setup() again. + * + * \note You may call this function any time after the + * operation object has been initialized. + * In particular, calling \c + * psa_key_agreement_iop_abort() after the + * operation has already been terminated by a call + * to \c psa_key_agreement_iop_abort() or + * psa_key_agreement_iop_complete() is safe. + * + * \param[in,out] operation The \c psa_key_agreement_iop_t to use + * + * \retval #PSA_SUCCESS + * The operation was aborted successfully. + * + * \retval #PSA_ERROR_NOT_SUPPORTED \emptydescription + * \retval #PSA_ERROR_BAD_STATE + * The library has not been previously initialized by + * \c psa_crypto_init(). It is implementation-dependent whether a + * failure to initialize results in this error code. + */ +psa_status_t psa_key_agreement_iop_abort( + psa_key_agreement_iop_t *operation); + /**@}*/ #ifdef __cplusplus