MCUX CLNS
MCUX Crypto Library Normal Secure
mcuxClPkc_Functions.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 
20 #ifndef MCUXCLPKC_FUNCTIONS_H_
21 #define MCUXCLPKC_FUNCTIONS_H_
22 
23 
24 #include <mcuxClCore_Platform.h>
26 #include <mcuxCsslFlowProtection.h>
27 #include <mcuxClSession.h>
28 
29 #include <mcuxClPkc_Types.h>
30 
31 #ifdef __cplusplus
32 extern "C" {
33 #endif
34 
43 /**********************************************************/
44 /* PKC initialization and deinitialization */
45 /**********************************************************/
55 typedef struct
56 {
57  uint16_t ctrl;
58  uint16_t cfg;
60 
61 
69 MCUX_CSSL_FP_FUNCTION_POINTER(mcuxClPkc_PkcInitializeEngine_t,
70 typedef MCUX_CSSL_FP_PROTECTED_TYPE(void) (* mcuxClPkc_PkcInitializeEngine_t)(mcuxClPkc_State_t *pState));
71 
79 MCUX_CSSL_FP_FUNCTION_POINTER(mcuxClPkc_PkcDeInitializeEngine_t,
80 typedef MCUX_CSSL_FP_PROTECTED_TYPE(void) (* mcuxClPkc_PkcDeInitializeEngine_t)(const mcuxClPkc_State_t *pState));
81 
90 MCUX_CSSL_FP_FUNCTION_DECL(mcuxClPkc_Initialize, mcuxClPkc_PkcInitializeEngine_t)
91 MCUX_CSSL_FP_PROTECTED_TYPE(void) mcuxClPkc_Initialize(
92  mcuxClPkc_State_t *pState
93  );
95 #define MCUXCLPKC_FP_INITIALIZE(pState) \
96  MCUX_CSSL_FP_FUNCTION_CALL_VOID(mcuxClPkc_Initialize(pState))
97 
106 MCUX_CSSL_FP_FUNCTION_DECL(mcuxClPkc_Deinitialize, mcuxClPkc_PkcDeInitializeEngine_t)
107 MCUX_CSSL_FP_PROTECTED_TYPE(void) mcuxClPkc_Deinitialize(
108  const mcuxClPkc_State_t *pState
109  );
111 #define MCUXCLPKC_FP_DEINITIALIZE(pState) \
112  MCUX_CSSL_FP_FUNCTION_CALL_VOID(mcuxClPkc_Deinitialize(pState))
113 
114  /* mcuxClPkc_Functions_Init */
118 
119 
120 /**********************************************************/
121 /* UPTR table */
122 /**********************************************************/
154 MCUX_CSSL_FP_FUNCTION_DECL(mcuxClPkc_GenerateUPTRT)
155 MCUX_CSSL_FP_PROTECTED_TYPE(void) mcuxClPkc_GenerateUPTRT(
156  uint16_t *pUPTRT,
157  const uint8_t *pBaseBuffer,
158  uint16_t bufferLength,
159  uint8_t noOfBuffer
160  );
162 #define MCUXCLPKC_FP_GENERATEUPTRT(pUPTRT, pBaseBuffer, bufferSize, noOfBuffer) \
163  MCUX_CSSL_FP_FUNCTION_CALL_VOID(mcuxClPkc_GenerateUPTRT(pUPTRT, pBaseBuffer, bufferSize, noOfBuffer))
164 
195 MCUX_CSSL_FP_FUNCTION_DECL(mcuxClPkc_RandomizeUPTRT)
196 MCUX_CSSL_FP_PROTECTED_TYPE(mcuxClPkc_Status_t) mcuxClPkc_RandomizeUPTRT(
197  mcuxClSession_Handle_t pSession,
198  uint16_t *pUPTRT,
199  uint8_t noOfBuffer
200  );
201 
235 MCUX_CSSL_FP_FUNCTION_DECL(mcuxClPkc_ReRandomizeUPTRT)
236 MCUX_CSSL_FP_PROTECTED_TYPE(mcuxClPkc_Status_t) mcuxClPkc_ReRandomizeUPTRT(
237  mcuxClSession_Handle_t pSession,
238  uint16_t *pUPTRT,
239  uint16_t bufferLength,
240  uint8_t noOfBuffer
241  );
242  /* mcuxClPkc_Functions_UPTRT */
246 
247 
248 /**********************************************************/
249 /* PKC calculation */
250 /**********************************************************/
269 MCUX_CSSL_FP_FUNCTION_DECL(mcuxClPkc_Calc)
270 MCUX_CSSL_FP_PROTECTED_TYPE(void) mcuxClPkc_Calc(
271  uint16_t param_mode,
272  uint32_t iR_iX_iY_iZ
273  );
274 
289 MCUX_CSSL_FP_FUNCTION_DECL(mcuxClPkc_CalcConst)
290 MCUX_CSSL_FP_PROTECTED_TYPE(void) mcuxClPkc_CalcConst(
291  uint16_t param_mode,
292  uint32_t iR_iX_iY_C
293  );
294 
296 typedef const struct mcuxClPkc_FUPEntry * mcuxClPkc_PtrFUPEntry_t;
297 
308 MCUX_CSSL_FP_FUNCTION_DECL(mcuxClPkc_CalcFup)
309 MCUX_CSSL_FP_PROTECTED_TYPE(void) mcuxClPkc_CalcFup(
311  uint8_t uLength
312  );
314 #define MCUXCLPKC_FP_CALCFUP(pUPTR, ulen) \
315  MCUX_CSSL_FP_FUNCTION_CALL_VOID(mcuxClPkc_CalcFup(pUPTR, ulen))
316 
318 #define MCUXCLPKC_FP_CALCFUP_OFFSET(pUPTR, skipLen, ulen) \
319  MCUX_CSSL_FP_FUNCTION_CALL_VOID(mcuxClPkc_CalcFup(&((mcuxClPkc_PtrFUPEntry_t) (pUPTR))[(skipLen)], ulen))
320  /* mcuxClPkc_Functions_Calculation */
324 
325 
326 /**********************************************************/
327 /* PKC wait functions */
328 /**********************************************************/
341 MCUX_CSSL_FP_FUNCTION_DECL(mcuxClPkc_WaitForFinish)
342 MCUX_CSSL_FP_PROTECTED_TYPE(void) mcuxClPkc_WaitForFinish(void);
344 #define MCUXCLPKC_FP_WAITFORFINISH() \
345  MCUX_CSSL_FP_FUNCTION_CALL_VOID(mcuxClPkc_WaitForFinish())
346 
352 MCUX_CSSL_FP_FUNCTION_DECL(mcuxClPkc_WaitForReady)
353 MCUX_CSSL_FP_PROTECTED_TYPE(void) mcuxClPkc_WaitForReady(void);
355 #define MCUXCLPKC_FP_WAITFORREADY() \
356  MCUX_CSSL_FP_FUNCTION_CALL_VOID(mcuxClPkc_WaitForReady())
357 
358  /* mcuxClPkc_Functions_Wait */
362  /* mcuxClPkc_Functions */
366 
367 #ifdef __cplusplus
368 } /* extern "C" */
369 #endif
370 
371 #endif /* MCUXCLPKC_FUNCTIONS_H_ */
uint16_t cfg
backup of PKC CFG bits
Definition: mcuxClPkc_Functions.h:58
MCUX_CSSL_FP_PROTECTED_TYPE(void) mcuxClPkc_Initialize(mcuxClPkc_State_t *pState)
initialize PKC hardware
mcuxClSession_Descriptor_t *const mcuxClSession_Handle_t
Type for mcuxClSession Handle.
Definition: mcuxClSession_Types.h:124
Type definitions of mcuxClPkc component.
#define MCUX_CSSL_FP_FUNCTION_DECL(...)
Declaration of a flow protected function.
Definition: mcuxCsslFlowProtection.h:125
uint32_t mcuxClPkc_Status_t
Type for error codes used by PKC component functions.
Definition: mcuxClPkc_Types.h:55
MCUX_CSSL_FP_FUNCTION_POINTER(mcuxClPkc_PkcInitializeEngine_t, typedef MCUX_CSSL_FP_PROTECTED_TYPE(void)(*mcuxClPkc_PkcInitializeEngine_t)(mcuxClPkc_State_t *pState))
Function type for PKC initialization engine.
uint16_t ctrl
backup of PKC CTRL bits
Definition: mcuxClPkc_Functions.h:57
Structure of PKC state backup.
Definition: mcuxClPkc_Functions.h:55
Definition of function identifiers for the flow protection mechanism.
const struct mcuxClPkc_FUPEntry * mcuxClPkc_PtrFUPEntry_t
type of FUP program address.
Definition: mcuxClPkc_Functions.h:296
Top-level include file for the mcuxClSession component.
Provides the API for the CSSL flow protection mechanism.