MCUX CLNS
MCUX Crypto Library Normal Secure
 
Loading...
Searching...
No Matches
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
36extern "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)
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
73#define MCUXCLELS_CMAC_OUT_SIZE ((size_t) 16U)
74
79/**********************************************
80 * TYPEDEFS
81 **********************************************/
91typedef 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 **********************************************/
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
ELS header for common functionality.
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 MCUXCLELS_API
Marks a function as a public API function of the mcuxClEls component.
Definition mcuxClEls_Common.h:46
uint32_t mcuxClEls_Status_t
Type for ELS driver status codes.
Definition mcuxClEls_Types.h:212
uint32_t mcuxClEls_KeyIndex_t
Type for ELS keystore indices.
Definition mcuxClEls_Types.h:222
#define MCUX_CSSL_FP_FUNCTION_DECL(...)
Declaration of a flow protected function.
Definition mcuxCsslFlowProtection.h:125
#define MCUX_CSSL_FP_PROTECTED_TYPE(resultType)
Based on a given base type, builds a return type with flow protection.
Definition mcuxCsslFlowProtection.h:81
Command option bit field for mcuxClEls_Cmac_Async.
Definition mcuxClEls_Cmac.h:92
uint32_t extkey
An external key should be used.
Definition mcuxClEls_Cmac.h:104
uint32_t soe
This field is managed internally.
Definition mcuxClEls_Cmac.h:101
uint32_t initialize
Request initial processing for the first block of the message.
Definition mcuxClEls_Cmac.h:99
uint32_t finalize
Request final processing for the last block of the message.
Definition mcuxClEls_Cmac.h:100
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