Provides functions to generate Hash-based message authentication code (HMAC). More...
Modules |
|
| Meta backend. | |
|
Includes all backends definitions.
|
|
| Types shared between all @ref nrf_crypto_hmac backends. | |
|
Types shared between all
Hash-based message authentication code (HMAC) related functions
backends.
|
|
Typedefs |
|
|
typedef
nrf_crypto_backend_hmac_context_t |
nrf_crypto_hmac_context_t |
|
Context type for HMAC.
More...
|
|
Functions |
|
| ret_code_t | nrf_crypto_hmac_init ( nrf_crypto_hmac_context_t *const p_context, nrf_crypto_hmac_info_t const *p_info, uint8_t const *p_key, size_t key_size) |
|
Initialize context object for HMAC.
More...
|
|
| ret_code_t | nrf_crypto_hmac_update ( nrf_crypto_hmac_context_t *const p_context, uint8_t const *p_data, size_t data_size) |
|
Feed data to HMAC algorithm.
More...
|
|
| ret_code_t | nrf_crypto_hmac_finalize ( nrf_crypto_hmac_context_t *const p_context, uint8_t *p_digest, size_t *const p_digest_size) |
|
Calculate HMAC.
More...
|
|
| ret_code_t | nrf_crypto_hmac_calculate ( nrf_crypto_hmac_context_t *const p_context, nrf_crypto_hmac_info_t const *p_info, uint8_t *p_digest, size_t *const p_digest_size, uint8_t const *p_key, size_t key_size, uint8_t const *p_data, size_t data_size) |
|
Integrated HMAC wrapper function.
More...
|
|
Variables |
|
| const nrf_crypto_hmac_info_t | g_nrf_crypto_hmac_sha256_info |
|
Information structures used to select the specific algorithm (SHA-256)
More...
|
|
| const nrf_crypto_hmac_info_t | g_nrf_crypto_hmac_sha512_info |
|
Information structures used to select the specific algorithm (SHA-512)
More...
|
|
Detailed Description
Provides functions to generate Hash-based message authentication code (HMAC).
Provides functions to generate Hash-based message authentication code (HMAC) using one of the supported hash algorithms. This layer is independent of backend crypto library.
Typedef Documentation
Context type for HMAC.
- Note
- The size of this type is scaled for the largest HMAC backend context that is enabled in SDK configuration header file .
Function Documentation
| ret_code_t nrf_crypto_hmac_calculate | ( | nrf_crypto_hmac_context_t *const | p_context , |
| nrf_crypto_hmac_info_t const * | p_info , | ||
| uint8_t * | p_digest , | ||
| size_t *const | p_digest_size , | ||
| uint8_t const * | p_key , | ||
| size_t | key_size , | ||
| uint8_t const * | p_data , | ||
| size_t | data_size | ||
| ) |
Integrated HMAC wrapper function.
- Note
- This is an integrated wrapper functions that can be used instead of calling other HMAC functions individually.
- Parameters
-
[in,out] p_context Optional pointer to context structure. Context memory will be allocated internally if the pointer is NULL. [in] p_info Pointer to static info structure. This defines the algorithm. This should be either g_nrf_crypto_hmac_sha256_info or g_nrf_crypto_hmac_sha512_info . [out] p_digest Pointer to HMAC digest. Buffer must be large enough to hold the digest. [in,out] p_digest_size Length of digest (result) buffer as input. Length of digest as output. [in] p_key Pointer to HMAC key. [in] key_size Lenth of the HMAC key in bytes. [in] p_data Pointer to input data. [in] data_size Length of input data.
- Return values
-
NRF_SUCCESS HMAC hash was successfully calculated. NRF_ERROR_CRYPTO_INPUT_NULL If p_key or p_data was NULL. NRF_ERROR_CRYPTO_INPUT_LOCATION Input data not in RAM (CC310 only). NRF_ERROR_CRYPTO_INPUT_LENGTH If key_size or data_size was invalid. NRF_ERROR_CRYPTO_OUTPUT_NULL If data_size was NULL. NRF_ERROR_CRYPTO_OUTPUT_LENGTH If data_size is not enough to hold the digest. NRF_ERROR_CRYPTO_ALLOC_FAILED Unable to allocate memory for the context. NRF_ERROR_CRYPTO_INTERNAL An error occurred in the crypto backend. NRF_ERROR_CRYPTO_BUSY The function could not be called because the nrf_crypto backend was busy. Please rerun the cryptographic routine at a later time. CC310 only.
| ret_code_t nrf_crypto_hmac_finalize | ( | nrf_crypto_hmac_context_t *const | p_context , |
| uint8_t * | p_digest , | ||
| size_t *const | p_digest_size | ||
| ) |
Calculate HMAC.
- Note
- nrf_crypto_hmac_update must be called at least once before calling this.
- Parameters
-
[in,out] p_context Context pointer. [out] p_digest Pointer to HMAC digest (result) buffer. Must be large enough to hold the digest (32 byte for SHA-256 and 64 byte for SHA-512). [in,out] p_digest_size Length of buffer as input. Length of digest as output.
- Return values
-
NRF_SUCCESS HMAC hash was successfully calculated. NRF_ERROR_CRYPTO_CONTEXT_NULL If p_context was NULL. NRF_ERROR_CRYPTO_CONTEXT_NOT_INITIALIZED If p_context has not been initialized. NRF_ERROR_CRYPTO_OUTPUT_NULL If p_digest was NULL. NRF_ERROR_CRYPTO_OUTPUT_LENGTH If p_size is not enough to hold the digest. NRF_ERROR_CRYPTO_INTERNAL An error occurred in the crypto backend. NRF_ERROR_CRYPTO_BUSY The function could not be called because the nrf_crypto backend was busy. Please rerun the cryptographic routine at a later time. CC310 only.
| ret_code_t nrf_crypto_hmac_init | ( | nrf_crypto_hmac_context_t *const | p_context , |
| nrf_crypto_hmac_info_t const * | p_info , | ||
| uint8_t const * | p_key , | ||
| size_t | key_size | ||
| ) |
Initialize context object for HMAC.
Use to initialize a context once it has been allocated.
- Note
- Must be called before nrf_crypto_hmac_update . Can also be called after nrf_crypto_hmac_finalize order to start a new HMAC calculation re-using an existing context object.
- Parameters
-
[in,out] p_context Pointer to context structure. [in] p_info Pointer to static info structure. This defines the algorithm. This should be either g_nrf_crypto_hmac_sha256_info or g_nrf_crypto_hmac_sha512_info . [in] p_key HMAC key. [in] key_size Length of the HMAC key in bytes.
- Return values
-
NRF_SUCCESS Data successfully consumed. NRF_ERROR_CRYPTO_CONTEXT_NULL If p_context has not been initialized. NRF_ERROR_CRYPTO_INPUT_NULL If p_info or p_key was NULL. NRF_ERROR_CRYPTO_INPUT_LENGTH If key_size was invalid. NRF_ERROR_CRYPTO_INPUT_LOCATION Input data not in RAM (CC310 only). NRF_ERROR_CRYPTO_INTERNAL An error occurred in the crypto backend. NRF_ERROR_CRYPTO_BUSY The function could not be called because the nrf_crypto backend was busy. Please rerun the cryptographic routine at a later time. CC310 only.
| ret_code_t nrf_crypto_hmac_update | ( | nrf_crypto_hmac_context_t *const | p_context , |
| uint8_t const * | p_data , | ||
| size_t | data_size | ||
| ) |
Feed data to HMAC algorithm.
- Note
- Must be called after nrf_crypto_hmac_init and before nrf_crypto_hmac_finalize . Can be called repeatedly to consume data as it arrives.
- Parameters
-
[in,out] p_context Context pointer. [in] p_data Pointer to input data buffer. [in] data_size Length of input data.
- Return values
-
NRF_SUCCESS Data successfully consumed. NRF_ERROR_CRYPTO_CONTEXT_NULL If p_context has not been initialized. NRF_ERROR_CRYPTO_CONTEXT_NOT_INITIALIZED If p_data was NULL. NRF_ERROR_CRYPTO_INPUT_NULL If p_data was NULL. NRF_ERROR_CRYPTO_INPUT_LENGTH If size was invalid. NRF_ERROR_CRYPTO_INPUT_LOCATION Input data not in RAM (CC310 only). NRF_ERROR_CRYPTO_INTERNAL An error occurred in the crypto backend. NRF_ERROR_CRYPTO_BUSY The function could not be called because the nrf_crypto backend was busy. Please rerun the cryptographic routine at a later time. CC310 only.
Variable Documentation
| const nrf_crypto_hmac_info_t g_nrf_crypto_hmac_sha256_info |
Information structures used to select the specific algorithm (SHA-256)
The information structure is used in a generic way but is populated by the backend, and contains backend specific data.
| const nrf_crypto_hmac_info_t g_nrf_crypto_hmac_sha512_info |
Information structures used to select the specific algorithm (SHA-512)
The information structure is used in a generic way but is populated by the backend, and contains backend specific data.