Function esp_idf_svc::sys::psa_hash_setup
source ยท pub unsafe extern "C" fn psa_hash_setup(
operation: *mut psa_hash_operation_s,
alg: u32,
) -> i32
Expand description
Set up a multipart hash operation.
The sequence of operations to calculate a hash (message digest) is as follows: -# Allocate an operation object which will be passed to all the functions listed here. -# Initialize the operation object with one of the methods described in the documentation for #psa_hash_operation_t, e.g. #PSA_HASH_OPERATION_INIT. -# Call psa_hash_setup() to specify the algorithm. -# Call psa_hash_update() zero, one or more times, passing a fragment of the message each time. The hash that is calculated is the hash of the concatenation of these messages in order. -# To calculate the hash, call psa_hash_finish(). To compare the hash with an expected value, call psa_hash_verify().
If an error occurs at any step after a call to psa_hash_setup(), the operation will need to be reset by a call to psa_hash_abort(). The application may call psa_hash_abort() at any time after the operation has been initialized.
After a successful call to psa_hash_setup(), the application must eventually terminate the operation. The following events terminate an operation:
- A successful call to psa_hash_finish() or psa_hash_verify().
- A call to psa_hash_abort().
\param[in,out] operation The operation object to set up. It must have been initialized as per the documentation for #psa_hash_operation_t and not yet in use. \param alg The hash algorithm to compute (\c PSA_ALG_XXX value such that #PSA_ALG_IS_HASH(\p alg) is true).
\retval #PSA_SUCCESS Success. \retval #PSA_ERROR_NOT_SUPPORTED \p alg is not a supported hash algorithm. \retval #PSA_ERROR_INVALID_ARGUMENT \p alg is not a hash algorithm. \retval #PSA_ERROR_INSUFFICIENT_MEMORY \emptydescription \retval #PSA_ERROR_COMMUNICATION_FAILURE \emptydescription \retval #PSA_ERROR_HARDWARE_FAILURE \emptydescription \retval #PSA_ERROR_CORRUPTION_DETECTED \emptydescription \retval #PSA_ERROR_BAD_STATE The operation state is not valid (it must be inactive), or the library has not been previously initialized by psa_crypto_init(). It is implementation-dependent whether a failure to initialize results in this error code.