psa_sign_message() function
Sign a message with a private key. For hash-and-sign algorithms, this includes the hashing step.
Arguments
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.
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.
input
The input message to sign.
input_length
Size of the \p input buffer in bytes.
signature
Buffer where the signature is to be written.
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.
signature_length
On success, the number of bytes that make up the returned signature value.
Return value
#PSA_SUCCESS \emptydescription #PSA_ERROR_INVALID_HANDLE \emptydescription #PSA_ERROR_NOT_PERMITTED The key does not have the #PSA_KEY_USAGE_SIGN_MESSAGE flag, or it does not permit the requested algorithm. #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. #PSA_ERROR_NOT_SUPPORTED \emptydescription #PSA_ERROR_INVALID_ARGUMENT \emptydescription #PSA_ERROR_INSUFFICIENT_MEMORY \emptydescription #PSA_ERROR_COMMUNICATION_FAILURE \emptydescription #PSA_ERROR_HARDWARE_FAILURE \emptydescription #PSA_ERROR_CORRUPTION_DETECTED \emptydescription #PSA_ERROR_STORAGE_FAILURE \emptydescription #PSA_ERROR_DATA_CORRUPT \emptydescription #PSA_ERROR_DATA_INVALID \emptydescription #PSA_ERROR_INSUFFICIENT_ENTROPY \emptydescription #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.
Notes
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_SIGN_GET_HASH(\p alg) can be used to determine the hash algorithm to use.