MCUX CLNS
MCUX Crypto Library Normal Secure
 
Loading...
Searching...
No Matches
mcuxClOsccaSafo_Functions.h
1/*--------------------------------------------------------------------------*/
2/* Copyright 2023-2024 NXP */
3/* */
4/* NXP Proprietary. 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 */
10/* license terms, then you may not retain, install, activate or otherwise */
11/* use the 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
254MCUX_CSSL_FP_FUNCTION_DECL(mcuxClOsccaSafo_Drv_incrementData)
255void mcuxClOsccaSafo_Drv_incrementData(uint32_t offset, uint32_t length);
256#endif
257
267#define MCUXCLOSCCASAFO_DRV_BYTE_ORDER_LE (MCUXCLOSCCASAFO_SFR_CTRL2_BYTES_ORDER)
268#define MCUXCLOSCCASAFO_DRV_BYTE_ORDER_BE (0u)
269MCUX_CSSL_FP_FUNCTION_DECL(mcuxClOsccaSafo_Drv_setByteOrder)
270uint32_t mcuxClOsccaSafo_Drv_setByteOrder(uint32_t mode);
271
272#ifdef MCUXCL_FEATURE_HW_SAFO_SM4
281MCUX_CSSL_FP_FUNCTION_DECL(mcuxClOsccaSafo_Drv_enableXorWrite)
282uint32_t mcuxClOsccaSafo_Drv_enableXorWrite(void);
283
291MCUX_CSSL_FP_FUNCTION_DECL(mcuxClOsccaSafo_Drv_disableXorWrite)
292void mcuxClOsccaSafo_Drv_disableXorWrite(void);
293#endif
294
307MCUX_CSSL_FP_FUNCTION_DECL(mcuxClOsccaSafo_Drv_load)
308void mcuxClOsccaSafo_Drv_load(uint32_t offset, uint32_t data);
309
310#ifdef MCUXCL_FEATURE_HW_SAFO_SM3
320MCUX_CSSL_FP_FUNCTION_DECL(mcuxClOsccaSafo_Drv_loadFifo)
321void mcuxClOsccaSafo_Drv_loadFifo(uint32_t data);
322#endif
323
324#ifdef MCUXCL_FEATURE_HW_SAFO_SM4
336MCUX_CSSL_FP_FUNCTION_DECL(mcuxClOsccaSafo_Drv_dataOut_res)
337uint32_t mcuxClOsccaSafo_Drv_dataOut_res(uint32_t mode);
338
349MCUX_CSSL_FP_FUNCTION_DECL(mcuxClOsccaSafo_Drv_enableOutputToKey)
350uint32_t mcuxClOsccaSafo_Drv_enableOutputToKey(uint32_t keyIndex);
351
360MCUX_CSSL_FP_FUNCTION_DECL(mcuxClOsccaSafo_Drv_disableOutputToKey)
361void mcuxClOsccaSafo_Drv_disableOutputToKey(void);
362#endif
363
376MCUX_CSSL_FP_FUNCTION_DECL(mcuxClOsccaSafo_Drv_triggerOutput)
377void mcuxClOsccaSafo_Drv_triggerOutput(void);
378
389MCUX_CSSL_FP_FUNCTION_DECL(mcuxClOsccaSafo_Drv_store)
390uint32_t mcuxClOsccaSafo_Drv_store(uint32_t offset);
391
402MCUX_CSSL_FP_FUNCTION_DECL(mcuxClOsccaSafo_Drv_storeInput)
403uint32_t mcuxClOsccaSafo_Drv_storeInput(uint32_t offset);
404
405
406
417MCUX_CSSL_FP_FUNCTION_DECL(mcuxClOsccaSafo_Drv_storeKey)
418uint32_t mcuxClOsccaSafo_Drv_storeKey(uint32_t offset);
419
427MCUX_CSSL_FP_FUNCTION_DECL(mcuxClOsccaSafo_Drv_isStatusError)
428bool mcuxClOsccaSafo_Drv_isStatusError(void);
429
430
431#ifdef __cplusplus
432} /* extern "C" */
433#endif
434
435#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