Function esp_idf_svc::sys::psa_sign_message

source ยท
pub unsafe extern "C" fn psa_sign_message(
    key: u32,
    alg: u32,
    input: *const u8,
    input_length: usize,
    signature: *mut u8,
    signature_size: usize,
    signature_length: *mut usize,
) -> i32
Expand description

\brief Sign a message with a private key. For hash-and-sign algorithms, this includes the hashing step.

\note To perform a multi-part hash-and-sign signature algorithm, first use a multi-part hash operation and then pass the resulting hash to psa_sign_hash(). PSA_ALG_GET_HASH(\p alg) can be used to determine the hash algorithm to use.

\param[in] key Identifier of the key to use for the operation. It must be an asymmetric key pair. The key must allow the usage #PSA_KEY_USAGE_SIGN_MESSAGE. \param[in] alg An asymmetric signature algorithm (PSA_ALG_XXX value such that #PSA_ALG_IS_SIGN_MESSAGE(\p alg) is true), that is compatible with the type of \p key. \param[in] input The input message to sign. \param[in] input_length Size of the \p input buffer in bytes. \param[out] signature Buffer where the signature is to be written. \param[in] signature_size Size of the \p signature buffer in bytes. This must be appropriate for the selected algorithm and key: - The required signature size is #PSA_SIGN_OUTPUT_SIZE(\c key_type, \c key_bits, \p alg) where \c key_type and \c key_bits are the type and bit-size respectively of key. - #PSA_SIGNATURE_MAX_SIZE evaluates to the maximum signature size of any supported signature algorithm. \param[out] signature_length On success, the number of bytes that make up the returned signature value.

\retval #PSA_SUCCESS \emptydescription \retval #PSA_ERROR_INVALID_HANDLE \emptydescription \retval #PSA_ERROR_NOT_PERMITTED The key does not have the #PSA_KEY_USAGE_SIGN_MESSAGE flag, or it does not permit the requested algorithm. \retval #PSA_ERROR_BUFFER_TOO_SMALL The size of the \p signature buffer is too small. You can determine a sufficient buffer size by calling #PSA_SIGN_OUTPUT_SIZE(\c key_type, \c key_bits, \p alg) where \c key_type and \c key_bits are the type and bit-size respectively of \p key. \retval #PSA_ERROR_NOT_SUPPORTED \emptydescription \retval #PSA_ERROR_INVALID_ARGUMENT \emptydescription \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_STORAGE_FAILURE \emptydescription \retval #PSA_ERROR_DATA_CORRUPT \emptydescription \retval #PSA_ERROR_DATA_INVALID \emptydescription \retval #PSA_ERROR_INSUFFICIENT_ENTROPY \emptydescription \retval #PSA_ERROR_BAD_STATE 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.