MCUX CLNS
MCUX Crypto Library Normal Secure
 
Loading...
Searching...
No Matches
mcuxClOsccaSafo_Functions.h
1/*--------------------------------------------------------------------------*/
2/* Copyright 2023-2024 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
14#ifndef MCUXCLOSCCASAFO_FUNCTIONS_H_
15#define MCUXCLOSCCASAFO_FUNCTIONS_H_
16
18#include <stdbool.h>
20#include <mcuxClOsccaSafo_Sfr_Ctrl.h>
21
22#ifdef __cplusplus
23extern "C" {
24#endif
25
26/*****************************************************
27 * Functions related to controlling SAFO
28 *****************************************************/
29
35MCUX_CSSL_FP_FUNCTION_DECL(mcuxClOsccaSafo_Drv_wait)
36void mcuxClOsccaSafo_Drv_wait(void);
37
49MCUX_CSSL_FP_FUNCTION_DECL(mcuxClOsccaSafo_Drv_init)
50void mcuxClOsccaSafo_Drv_init(uint32_t mode);
51
61MCUX_CSSL_FP_FUNCTION_DECL(mcuxClOsccaSafo_Drv_close)
62mcuxClOsccaSafo_Status_t mcuxClOsccaSafo_Drv_close(void);
63
75#ifdef MCUXCL_FEATURE_HW_SAFO_SM3
76#define MCUXCLOSCCASAFO_DRV_START_SM3 (MCUXCLOSCCASAFO_SFR_CTRL_SM3 | MCUXCLOSCCASAFO_SFR_CTRL_DATOUT_RES_END_UP)
77#endif
78MCUX_CSSL_FP_FUNCTION_DECL(mcuxClOsccaSafo_Drv_start)
79void mcuxClOsccaSafo_Drv_start(uint32_t operation);
80
88#ifdef MCUXCL_FEATURE_HW_SAFO_SM3
89MCUX_CSSL_FP_FUNCTION_DECL(mcuxClOsccaSafo_Drv_stopSm3)
90void mcuxClOsccaSafo_Drv_stopSm3(void);
91#endif
92
100MCUX_CSSL_FP_FUNCTION_DECL(mcuxClOsccaSafo_Drv_setControl2)
101void mcuxClOsccaSafo_Drv_setControl2(uint32_t control);
102
103#ifdef MCUXCL_FEATURE_HW_SAFO_SM3
114#define MCUXCLOSCCASAFO_DRV_STATE_SIZE_SM3 (32u)
115
116#define MCUXCLOSCCASAFO_DRV_DIGEST_SIZE_SM3 (32u)
117
118#define MCUXCLOSCCASAFO_DRV_CONFIG_SM3 (MCUXCLOSCCASAFO_SFR_CTRL_SM3_EN \
119 | MCUXCLOSCCASAFO_SFR_CTRL_SM3_LOW_LIM)
120
121#define MCUXCLOSCCASAFO_DRV_CONFIG_SM3_LOAD_IV (MCUXCLOSCCASAFO_SFR_CTRL_SM3_HASH_RELOAD \
122 | MCUXCLOSCCASAFO_SFR_CTRL_SM3_NO_AUTO_INIT)
123
124#define MCUXCLOSCCASAFO_DRV_CONFIG_SM3_USE_LOADED_IV (MCUXCLOSCCASAFO_SFR_CTRL_SM3_NO_AUTO_INIT)
125
126#define MCUXCLOSCCASAFO_DRV_CONFIG_SM3_AUTO_MODE (MCUXCLOSCCASAFO_SFR_CTRL_SM3_MODE_AUTO \
127 | MCUXCLOSCCASAFO_SFR_CTRL_SM3_HIGH_LIM)
128
129#define MCUXCLOSCCASAFO_DRV_CONFIG_SM3_FIFO_HILIM (MCUXCLOSCCASAFO_SFR_CTRL_SM3_HIGH_LIM)
130
131#define MCUXCLOSCCASAFO_DRV_CONFIG_SM3_AUTOMODE_LOADDATA_USESTANDARDIV (MCUXCLOSCCASAFO_DRV_CONFIG_SM3 \
132 | MCUXCLOSCCASAFO_DRV_CONFIG_SM3_AUTO_MODE)
133
134#define MCUXCLOSCCASAFO_DRV_CONFIG_SM3_AUTOMODE_LOADIV (MCUXCLOSCCASAFO_DRV_CONFIG_SM3 \
135 | MCUXCLOSCCASAFO_DRV_CONFIG_SM3_AUTO_MODE \
136 | MCUXCLOSCCASAFO_DRV_CONFIG_SM3_LOAD_IV)
137
138#define MCUXCLOSCCASAFO_DRV_CONFIG_SM3_AUTOMODE_LOADDATA_USELOADEDIV (MCUXCLOSCCASAFO_DRV_CONFIG_SM3 \
139 | MCUXCLOSCCASAFO_DRV_CONFIG_SM3_AUTO_MODE \
140 | MCUXCLOSCCASAFO_DRV_CONFIG_SM3_USE_LOADED_IV)
141
142#define MCUXCLOSCCASAFO_DRV_CONFIG_SM3_NORMALMODE_LOADDATA_USESTANDARDIV (MCUXCLOSCCASAFO_DRV_CONFIG_SM3 \
143 | MCUXCLOSCCASAFO_DRV_CONFIG_SM3_FIFO_HILIM)
144
145#define MCUXCLOSCCASAFO_DRV_CONFIG_SM3_NORMALMODE_LOADIV (MCUXCLOSCCASAFO_DRV_CONFIG_SM3 \
146 | MCUXCLOSCCASAFO_DRV_CONFIG_SM3_FIFO_HILIM \
147 | MCUXCLOSCCASAFO_DRV_CONFIG_SM3_LOAD_IV)
148
149#define MCUXCLOSCCASAFO_DRV_CONFIG_SM3_NORMALMODE_LOADDATA_USELOADEDIV (MCUXCLOSCCASAFO_DRV_CONFIG_SM3 \
150 | MCUXCLOSCCASAFO_DRV_CONFIG_SM3_FIFO_HILIM \
151 | MCUXCLOSCCASAFO_DRV_CONFIG_SM3_USE_LOADED_IV)
152
153MCUX_CSSL_FP_FUNCTION_DECL(mcuxClOsccaSafo_Drv_configureSm3)
154void mcuxClOsccaSafo_Drv_configureSm3(uint32_t control);
155
166MCUX_CSSL_FP_FUNCTION_DECL(mcuxClOsccaSafo_Drv_enableHashReload)
167void mcuxClOsccaSafo_Drv_enableHashReload(void);
168
178MCUX_CSSL_FP_FUNCTION_DECL(mcuxClOsccaSafo_Drv_disableHashReload)
179void mcuxClOsccaSafo_Drv_disableHashReload(void);
180
190MCUX_CSSL_FP_FUNCTION_DECL(mcuxClOsccaSafo_Drv_disableIvAutoInit)
191void mcuxClOsccaSafo_Drv_disableIvAutoInit(void);
192
200MCUX_CSSL_FP_FUNCTION_DEF(mcuxClOsccaSafo_Drv_enableIvAutoInit)
201void mcuxClOsccaSafo_Drv_enableIvAutoInit(void);
202#endif
203
204/*****************************************************
205 * Functions related to security features
206 *****************************************************/
207
217#define MCUXCLOSCCASAFO_DRV_FLUSH_ALL (MCUXCLOSCCASAFO_SFR_CTRL2_FLUSH)
218#define MCUXCLOSCCASAFO_DRV_FLUSH_KEY (MCUXCLOSCCASAFO_SFR_CTRL2_FLUSHKEY)
219#define MCUXCLOSCCASAFO_DRV_FLUSH_DATA (MCUXCLOSCCASAFO_SFR_CTRL2_FLUSHDATA)
220MCUX_CSSL_FP_FUNCTION_DECL(mcuxClOsccaSafo_Drv_enableFlush)
221void mcuxClOsccaSafo_Drv_enableFlush(uint32_t option);
222
223/*****************************************************
224 * Functions related to input output handling
225 *****************************************************/
226
239MCUX_CSSL_FP_FUNCTION_DECL(mcuxClOsccaSafo_Drv_loadKey)
240void mcuxClOsccaSafo_Drv_loadKey(uint32_t offset, uint32_t key);
241
242#ifdef MCUXCL_FEATURE_HW_SAFO_SM4
253MCUX_CSSL_FP_FUNCTION_DECL(mcuxClOsccaSafo_Drv_incrementData)
254void mcuxClOsccaSafo_Drv_incrementData(uint32_t offset, uint32_t length);
255#endif
256
266#define MCUXCLOSCCASAFO_DRV_BYTE_ORDER_LE (MCUXCLOSCCASAFO_SFR_CTRL2_BYTES_ORDER)
267#define MCUXCLOSCCASAFO_DRV_BYTE_ORDER_BE (0u)
268MCUX_CSSL_FP_FUNCTION_DECL(mcuxClOsccaSafo_Drv_setByteOrder)
269uint32_t mcuxClOsccaSafo_Drv_setByteOrder(uint32_t mode);
270
271#ifdef MCUXCL_FEATURE_HW_SAFO_SM4
280MCUX_CSSL_FP_FUNCTION_DECL(mcuxClOsccaSafo_Drv_enableXorWrite)
281uint32_t mcuxClOsccaSafo_Drv_enableXorWrite(void);
282
290MCUX_CSSL_FP_FUNCTION_DECL(mcuxClOsccaSafo_Drv_disableXorWrite)
291void mcuxClOsccaSafo_Drv_disableXorWrite(void);
292#endif
293
306MCUX_CSSL_FP_FUNCTION_DECL(mcuxClOsccaSafo_Drv_load)
307void mcuxClOsccaSafo_Drv_load(uint32_t offset, uint32_t data);
308
309#ifdef MCUXCL_FEATURE_HW_SAFO_SM3
319MCUX_CSSL_FP_FUNCTION_DECL(mcuxClOsccaSafo_Drv_loadFifo)
320void mcuxClOsccaSafo_Drv_loadFifo(uint32_t data);
321#endif
322
323#ifdef MCUXCL_FEATURE_HW_SAFO_SM4
335MCUX_CSSL_FP_FUNCTION_DECL(mcuxClOsccaSafo_Drv_dataOut_res)
336uint32_t mcuxClOsccaSafo_Drv_dataOut_res(uint32_t mode);
337
348MCUX_CSSL_FP_FUNCTION_DECL(mcuxClOsccaSafo_Drv_enableOutputToKey)
349uint32_t mcuxClOsccaSafo_Drv_enableOutputToKey(uint32_t keyIndex);
350
359MCUX_CSSL_FP_FUNCTION_DECL(mcuxClOsccaSafo_Drv_disableOutputToKey)
360void mcuxClOsccaSafo_Drv_disableOutputToKey(void);
361#endif
362
375MCUX_CSSL_FP_FUNCTION_DECL(mcuxClOsccaSafo_Drv_triggerOutput)
376void mcuxClOsccaSafo_Drv_triggerOutput(void);
377
388MCUX_CSSL_FP_FUNCTION_DECL(mcuxClOsccaSafo_Drv_store)
389uint32_t mcuxClOsccaSafo_Drv_store(uint32_t offset);
390
401MCUX_CSSL_FP_FUNCTION_DECL(mcuxClOsccaSafo_Drv_storeInput)
402uint32_t mcuxClOsccaSafo_Drv_storeInput(uint32_t offset);
403
404
405
416MCUX_CSSL_FP_FUNCTION_DECL(mcuxClOsccaSafo_Drv_storeKey)
417uint32_t mcuxClOsccaSafo_Drv_storeKey(uint32_t offset);
418
426MCUX_CSSL_FP_FUNCTION_DECL(mcuxClOsccaSafo_Drv_isStatusError)
427bool mcuxClOsccaSafo_Drv_isStatusError(void);
428
429
430#ifdef __cplusplus
431} /* extern "C" */
432#endif
433
434#endif /* MCUXCLOSCCASAFO_FUNCTIONS_H_ */
Type and associated constant definitions of the mcuxClOsccaSafo component.
Provides the API for the CSSL flow protection mechanism.
uint32_t mcuxClOsccaSafo_Status_t
SAFO status code.
Definition mcuxClOsccaSafo_Types.h:44
#define MCUX_CSSL_FP_FUNCTION_DECL(...)
Declaration of a flow protected function.
Definition mcuxCsslFlowProtection.h:125
#define MCUX_CSSL_FP_FUNCTION_DEF(...)
Definition of a flow protected function.
Definition mcuxCsslFlowProtection.h:159