MCUX CLNS
MCUX Crypto Library Normal Secure
mcuxClEls_Cmac.h
Go to the documentation of this file.
1 /*--------------------------------------------------------------------------*/
2 /* Copyright 2020-2023 NXP */
3 /* */
4 /* NXP Confidential. This software is owned or controlled by NXP and may */
5 /* only be used strictly in accordance with the applicable license terms. */
6 /* By expressly accepting such terms or by downloading, installing, */
7 /* activating and/or otherwise using the software, you are agreeing that */
8 /* you have read, and that you agree to comply with and are bound by, such */
9 /* license terms. If you do not agree to be bound by the applicable license */
10 /* terms, then you may not retain, install, activate or otherwise use the */
11 /* software. */
12 /*--------------------------------------------------------------------------*/
13 
29 #ifndef MCUXCLELS_CMAC_H_
30 #define MCUXCLELS_CMAC_H_
31 
32 #include <mcuxClConfig.h> // Exported features flags header
33 #include <mcuxClEls_Common.h> // Common functionality
34 
35 #ifdef __cplusplus
36 extern "C" {
37 #endif
38 
39 /**********************************************
40  * MACROS
41  **********************************************/
54 #define MCUXCLELS_CMAC_KEY_SIZE_128 ((size_t) 16U)
55 #define MCUXCLELS_CMAC_KEY_SIZE_256 ((size_t) 32U)
56 
63 #define MCUXCLELS_CMAC_EXTERNAL_KEY_ENABLE 1U
64 #define MCUXCLELS_CMAC_EXTERNAL_KEY_DISABLE 0U
65 #define MCUXCLELS_CMAC_INITIALIZE_DISABLE 0U
66 #define MCUXCLELS_CMAC_INITIALIZE_ENABLE 1U
67 #define MCUXCLELS_CMAC_FINALIZE_DISABLE 0U
68 #define MCUXCLELS_CMAC_FINALIZE_ENABLE 1U
69 
73 #define MCUXCLELS_CMAC_OUT_SIZE ((size_t) 16U)
74 
75 
79 /**********************************************
80  * TYPEDEFS
81  **********************************************/
91 typedef union
92 {
93  struct
94  {
95  uint32_t value;
96  } word;
97  struct
98  {
99  uint32_t initialize : 1;
100  uint32_t finalize : 1;
101  uint32_t soe : 1;
102  uint32_t sie : 1;
103  uint32_t :9;
104  uint32_t extkey :1;
105  uint32_t :18;
106  } bits;
112 /**********************************************
113  * FUNCTIONS
114  **********************************************/
172  mcuxClEls_CmacOption_t options,
173  mcuxClEls_KeyIndex_t keyIdx,
174  uint8_t const * pKey,
175  size_t keyLength,
176  uint8_t const * pInput,
177  size_t inputLength,
178  uint8_t * pMac
179  );
180 
181 #ifdef __cplusplus
182 } /* extern "C" */
183 #endif
184 
185 #endif /* MCUXCLELS_CMAC_H_ */
186 
uint32_t mcuxClEls_Status_t
Type for ELS driver status codes.
Definition: mcuxClEls_Types.h:211
Command option bit field for mcuxClEls_Cmac_Async.
Definition: mcuxClEls_Cmac.h:91
uint32_t initialize
Request initial processing for the first block of the message.
Definition: mcuxClEls_Cmac.h:99
ELS header for common functionality.
uint32_t sie
This field is managed internally.
Definition: mcuxClEls_Cmac.h:102
uint32_t value
Accesses the bit field as a full word.
Definition: mcuxClEls_Cmac.h:95
MCUXCLELS_API mcuxClEls_Status_t mcuxClEls_Cmac_Async(mcuxClEls_CmacOption_t options, mcuxClEls_KeyIndex_t keyIdx, uint8_t const *pKey, size_t keyLength, uint8_t const *pInput, size_t inputLength, uint8_t *pMac)
Performs CMAC with AES-128 or AES-256.
#define MCUX_CSSL_FP_FUNCTION_DECL(...)
Declaration of a flow protected function.
Definition: mcuxCsslFlowProtection.h:125
#define MCUXCLELS_API
Marks a function as a public API function of the mcuxClEls component.
Definition: mcuxClEls_Common.h:47
uint32_t mcuxClEls_KeyIndex_t
Type for ELS keystore indices.
Definition: mcuxClEls_Types.h:221
uint32_t soe
This field is managed internally.
Definition: mcuxClEls_Cmac.h:101
#define MCUX_CSSL_FP_PROTECTED_TYPE(resultType)
Based on a given base type, builds a return type with flow protection.
Definition: mcuxCsslFlowProtection.h:81
uint32_t finalize
Request final processing for the last block of the message.
Definition: mcuxClEls_Cmac.h:100
uint32_t extkey
An external key should be used.
Definition: mcuxClEls_Cmac.h:104