MCUX CLNS
MCUX Crypto Library Normal Secure
 
Loading...
Searching...
No Matches
mcuxClEls_Crc.h
Go to the documentation of this file.
1/*--------------------------------------------------------------------------*/
2/* Copyright 2021-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
26#ifndef MCUXCLELS_CRC_H_
27#define MCUXCLELS_CRC_H_
28
29#include <mcuxClConfig.h> // Exported features flags header
30#include <mcuxClEls_Types.h> // Common types
33
34#ifdef __cplusplus
35extern "C" {
36#endif
37
38/**********************************************
39 * CONSTANTS
40 **********************************************/
53#define MCUXCLELS_CMD_CRC_VALUE_RESET ((uint32_t) 0x1u)
54#define MCUXCLELS_CMD_CRC_VALUE_ENABLE ((uint32_t) 0x2u)
55#define MCUXCLELS_CMD_CRC_VALUE_DISABLE ((uint32_t) 0x0u)
56
57#define MCUXCLELS_CMD_CRC_RESET ((uint32_t) 0x1u)
58#define MCUXCLELS_CMD_CRC_ENABLE ((uint32_t) 0x1u)
59#define MCUXCLELS_CMD_CRC_DISABLE ((uint32_t) 0x0u)
60
61#define MCUXCLELS_CMD_CRC_POLYNOMIAL ((uint32_t) 0x04C11DB7u)
62#define MCUXCLELS_CMD_CRC_INITIAL_VALUE ((uint32_t) 0xA5A5A5A5u)
76#define MCUXCLELS_CMD_CRC_REFERENCE_INIT(crc) \
77 uint32_t (crc) = MCUXCLELS_CMD_CRC_INITIAL_VALUE
78
82#define MCUXCLELS_CMD_CRC_REFERENCE_RESET(crc) \
83 (crc) = MCUXCLELS_CMD_CRC_INITIAL_VALUE
84
88#ifndef MCUXCL_FEATURE_ELS_NO_INTERNAL_STATE_FLAGS
89#define MCUXCLELS_CMD_CRC_REFERENCE_UPDATE_AEAD_INIT(crc, options) \
90 ({ \
91 (options).bits.acpmod = MCUXCLELS_AEAD_ACPMOD_INIT; \
92 MCUX_CSSL_ANALYSIS_START_PATTERN_0U_1U_ARE_UNSIGNED() \
93 (options).bits.lastinit = MCUXCLELS_AEAD_LASTINIT_TRUE; \
94 MCUX_CSSL_ANALYSIS_STOP_PATTERN_0U_1U_ARE_UNSIGNED() \
95 (options).bits.acpsie = MCUXCLELS_AEAD_STATE_IN_DISABLE; \
96 (options).bits.acpsoe = MCUXCLELS_AEAD_STATE_OUT_ENABLE; \
97 mcuxClEls_Status_t retVal = mcuxClEls_UpdateRefCRC(MCUXCLELS_CMD_CRC_CMD_ID_AUTH_CIPHER, (options).word.value, &(crc)); \
98 (retVal); \
99 })
100#else
101#define MCUXCLELS_CMD_CRC_REFERENCE_UPDATE_AEAD_INIT(crc, options) \
102 ({ \
103 (options).bits.acpmod = MCUXCLELS_AEAD_ACPMOD_INIT; \
104 MCUX_CSSL_ANALYSIS_START_PATTERN_0U_1U_ARE_UNSIGNED() \
105 (options).bits.lastinit = MCUXCLELS_AEAD_LASTINIT_TRUE; \
106 MCUX_CSSL_ANALYSIS_STOP_PATTERN_0U_1U_ARE_UNSIGNED() \
107 (options).bits.acpsie = MCUXCLELS_AEAD_STATE_IN_DISABLE; \
108 mcuxClEls_Status_t retVal = mcuxClEls_UpdateRefCRC(MCUXCLELS_CMD_CRC_CMD_ID_AUTH_CIPHER, (options).word.value, &(crc)); \
109 (retVal); \
110 })
111#endif /* MCUXCL_FEATURE_ELS_NO_INTERNAL_STATE_FLAGS */
112
116#ifndef MCUXCL_FEATURE_ELS_NO_INTERNAL_STATE_FLAGS
117#define MCUXCLELS_CMD_CRC_REFERENCE_UPDATE_AEAD_PARTIALINIT(crc, options) \
118 ({ \
119 (options).bits.acpmod = MCUXCLELS_AEAD_ACPMOD_INIT; \
120 (options).bits.acpsoe = MCUXCLELS_AEAD_STATE_OUT_ENABLE; \
121 mcuxClEls_Status_t retVal = mcuxClEls_UpdateRefCRC(MCUXCLELS_CMD_CRC_CMD_ID_AUTH_CIPHER, (options).word.value, &(crc)); \
122 (retVal); \
123 })
124#else
125#define MCUXCLELS_CMD_CRC_REFERENCE_UPDATE_AEAD_PARTIALINIT(crc, options) \
126 ({ \
127 (options).bits.acpmod = MCUXCLELS_AEAD_ACPMOD_INIT; \
128 mcuxClEls_Status_t retVal = mcuxClEls_UpdateRefCRC(MCUXCLELS_CMD_CRC_CMD_ID_AUTH_CIPHER, (options).word.value, &(crc)); \
129 (retVal); \
130 })
131#endif /* MCUXCL_FEATURE_ELS_NO_INTERNAL_STATE_FLAGS */
132
136#ifndef MCUXCL_FEATURE_ELS_NO_INTERNAL_STATE_FLAGS
137#define MCUXCLELS_CMD_CRC_REFERENCE_UPDATE_AEAD_UPDATEAAD(crc, options) \
138 ({ \
139 (options).bits.acpmod = MCUXCLELS_AEAD_ACPMOD_AADPROC \
140 (options).bits.acpsie = MCUXCLELS_AEAD_STATE_IN_ENABLE; \
141 (options).bits.acpsoe = MCUXCLELS_AEAD_STATE_OUT_ENABLE; \
142 mcuxClEls_Status_t retVal = mcuxClEls_UpdateRefCRC(MCUXCLELS_CMD_CRC_CMD_ID_AUTH_CIPHER, (options).word.value, &(crc)); \
143 (retVal); \
144 })
145#else
146#define MCUXCLELS_CMD_CRC_REFERENCE_UPDATE_AEAD_UPDATEAAD(crc, options) \
147 ({ \
148 (options).bits.acpmod = MCUXCLELS_AEAD_ACPMOD_AADPROC; \
149 mcuxClEls_Status_t retVal = mcuxClEls_UpdateRefCRC(MCUXCLELS_CMD_CRC_CMD_ID_AUTH_CIPHER, (options).word.value, &(crc)); \
150 (retVal); \
151 })
152#endif /* MCUXCL_FEATURE_ELS_NO_INTERNAL_STATE_FLAGS */
153
157#ifndef MCUXCL_FEATURE_ELS_NO_INTERNAL_STATE_FLAGS
158#define MCUXCLELS_CMD_CRC_REFERENCE_UPDATE_AEAD_UPDATEDATA(crc, options) \
159 ({ \
160 (options).bits.acpmod = MCUXCLELS_AEAD_ACPMOD_MSGPROC \
161 (options).bits.acpsie = MCUXCLELS_AEAD_STATE_IN_ENABLE; \
162 (options).bits.acpsoe = MCUXCLELS_AEAD_STATE_OUT_ENABLE; \
163 mcuxClEls_Status_t retVal = mcuxClEls_UpdateRefCRC(MCUXCLELS_CMD_CRC_CMD_ID_AUTH_CIPHER, (options).word.value, &(crc)); \
164 (retVal); \
165 })
166#else
167#define MCUXCLELS_CMD_CRC_REFERENCE_UPDATE_AEAD_UPDATEDATA(crc, options) \
168 ({ \
169 (options).bits.acpmod = MCUXCLELS_AEAD_ACPMOD_MSGPROC; \
170 mcuxClEls_Status_t retVal = mcuxClEls_UpdateRefCRC(MCUXCLELS_CMD_CRC_CMD_ID_AUTH_CIPHER, (options).word.value, &(crc)); \
171 (retVal); \
172 })
173#endif /* MCUXCL_FEATURE_ELS_NO_INTERNAL_STATE_FLAGS */
174
178#ifndef MCUXCL_FEATURE_ELS_NO_INTERNAL_STATE_FLAGS
179#define MCUXCLELS_CMD_CRC_REFERENCE_UPDATE_AEAD_FINALIZE(crc, options) \
180 ({ \
181 (options).bits.acpmod = MCUXCLELS_AEAD_ACPMOD_FINAL \
182 (options).bits.acpsie = MCUXCLELS_AEAD_STATE_IN_ENABLE; \
183 mcuxClEls_Status_t retVal = mcuxClEls_UpdateRefCRC(MCUXCLELS_CMD_CRC_CMD_ID_AUTH_CIPHER, (options).word.value, &(crc)); \
184 (retVal); \
185 })
186#else
187#define MCUXCLELS_CMD_CRC_REFERENCE_UPDATE_AEAD_FINALIZE(crc, options) \
188 ({ \
189 (options).bits.acpmod = MCUXCLELS_AEAD_ACPMOD_FINAL; \
190 mcuxClEls_Status_t retVal = mcuxClEls_UpdateRefCRC(MCUXCLELS_CMD_CRC_CMD_ID_AUTH_CIPHER, (options).word.value, &(crc)); \
191 (retVal); \
192 })
193#endif /* MCUXCL_FEATURE_ELS_NO_INTERNAL_STATE_FLAGS */
194
198#define MCUXCLELS_CMD_CRC_REFERENCE_UPDATE_CIPHER(crc, options) \
199 mcuxClEls_UpdateRefCRC(MCUXCLELS_CMD_CRC_CMD_ID_CIPHER, (options).word.value, &(crc))
200
204#define MCUXCLELS_CMD_CRC_REFERENCE_UPDATE_CMAC(crc, options) \
205 mcuxClEls_UpdateRefCRC(MCUXCLELS_CMD_CRC_CMD_ID_CMAC, (options).word.value, &(crc))
206
207
211#define MCUXCLELS_CMD_CRC_REFERENCE_UPDATE_ECCKEYGEN(crc, options) \
212 ({ \
213 (options).bits.revf = MCUXCLELS_ECC_REVERSEFETCH_ENABLE; \
214 mcuxClEls_Status_t retVal = mcuxClEls_UpdateRefCRC(MCUXCLELS_CMD_CRC_CMD_ID_KEYGEN, (options).word.value, &(crc)); \
215 (retVal); \
216 })
217
221#ifdef MCUXCL_FEATURE_ELS_PUK_INTERNAL_BIT
222#define MCUXCLELS_CMD_CRC_REFERENCE_UPDATE_ECCKEYEXCHANGE(crc) \
223 ({ \
224 mcuxClEls_EccKeyExchOption_t options = {0u}; \
225 options.bits.revf = MCUXCLELS_ECC_REVERSEFETCH_ENABLE; \
226 options.bits.extkey = MCUXCLELS_ECC_EXTKEY_EXTERNAL; \
227 mcuxClEls_Status_t retVal = mcuxClEls_UpdateRefCRC(MCUXCLELS_CMD_CRC_CMD_ID_ECKXH, options.word.value, &(crc)); \
228 (retVal); \
229 })
230#else
231#define MCUXCLELS_CMD_CRC_REFERENCE_UPDATE_ECCKEYEXCHANGE(crc) \
232 ({ \
233 mcuxClEls_EccKeyExchOption_t options = {0u}; \
234 options.bits.revf = MCUXCLELS_ECC_REVERSEFETCH_ENABLE; \
235 mcuxClEls_Status_t retVal = mcuxClEls_UpdateRefCRC(MCUXCLELS_CMD_CRC_CMD_ID_ECKXH, options.word.value, &(crc)); \
236 (retVal); \
237 })
238#endif /* MCUXCL_FEATURE_ELS_PUK_INTERNAL_BIT */
239
240#ifdef MCUXCL_FEATURE_ELS_PUK_INTERNAL
244#define MCUXCLELS_CMD_CRC_REFERENCE_UPDATE_ECCKEYEXCHANGEINT(crc) \
245 ({ \
246 mcuxClEls_EccKeyExchOption_t options = {0u}; \
247 options.bits.revf = MCUXCLELS_ECC_REVERSEFETCH_ENABLE; \
248 options.bits.extkey = MCUXCLELS_ECC_EXTKEY_INTERNAL; \
249 mcuxClEls_Status_t retVal = mcuxClEls_UpdateRefCRC(MCUXCLELS_CMD_CRC_CMD_ID_ECKXH, options.word.value, &(crc)); \
250 (retVal); \
251 })
252#endif /* MCUXCL_FEATURE_ELS_PUK_INTERNAL */
253
257#define MCUXCLELS_CMD_CRC_REFERENCE_UPDATE_ECCSIGN(crc, options) \
258 ({ \
259 (options).bits.revf = MCUXCLELS_ECC_REVERSEFETCH_ENABLE; \
260 mcuxClEls_Status_t retVal = mcuxClEls_UpdateRefCRC(MCUXCLELS_CMD_CRC_CMD_ID_ECSIGN, (options).word.value, &(crc)); \
261 (retVal); \
262 })
263
267#ifdef MCUXCL_FEATURE_ELS_PUK_INTERNAL_BIT
268#define MCUXCLELS_CMD_CRC_REFERENCE_UPDATE_ECCVERFIFY(crc, options) \
269 ({ \
270 (options).bits.revf = MCUXCLELS_ECC_REVERSEFETCH_ENABLE; \
271 (options).bits.extkey = MCUXCLELS_ECC_EXTKEY_EXTERNAL; \
272 mcuxClEls_Status_t retVal = mcuxClEls_UpdateRefCRC(MCUXCLELS_CMD_CRC_CMD_ID_ECVFY, (options).word.value, &(crc)); \
273 (retVal); \
274 })
275#else
276#define MCUXCLELS_CMD_CRC_REFERENCE_UPDATE_ECCVERFIFY(crc, options) \
277 ({ \
278 (options).bits.revf = MCUXCLELS_ECC_REVERSEFETCH_ENABLE; \
279 mcuxClEls_Status_t retVal = mcuxClEls_UpdateRefCRC(MCUXCLELS_CMD_CRC_CMD_ID_ECVFY, (options).word.value, &(crc)); \
280 (retVal); \
281 })
282#endif /* MCUXCL_FEATURE_ELS_PUK_INTERNAL_BIT */
283
284#ifdef MCUXCL_FEATURE_ELS_PUK_INTERNAL
288#define MCUXCLELS_CMD_CRC_REFERENCE_UPDATE_ECCVERFIFYINT(crc, options) \
289 ({ \
290 (options).bits.revf = MCUXCLELS_ECC_REVERSEFETCH_ENABLE; \
291 (options).bits.extkey = MCUXCLELS_ECC_EXTKEY_INTERNAL; \
292 mcuxClEls_Status_t retVal = mcuxClEls_UpdateRefCRC(MCUXCLELS_CMD_CRC_CMD_ID_ECVFY, (options).word.value, &(crc)); \
293 (retVal); \
294 })
295#endif /* MCUXCL_FEATURE_ELS_PUK_INTERNAL */
296
300#define MCUXCLELS_CMD_CRC_REFERENCE_UPDATE_GLITCHDETECTOR_LOADCONFIG(crc) \
301 mcuxClEls_UpdateRefCRC(MCUXCLELS_CMD_CRC_CMD_ID_GDET_CFG_LOAD, 0u, &(crc))
302
306#define MCUXCLELS_CMD_CRC_REFERENCE_UPDATE_GLITCHDETECTOR_TRIM(crc) \
307 mcuxClEls_UpdateRefCRC(MCUXCLELS_CMD_CRC_CMD_ID_GDET_TRIM, 0u, &(crc))
308
312#define MCUXCLELS_CMD_CRC_REFERENCE_UPDATE_HASH(crc, options) \
313 mcuxClEls_UpdateRefCRC(MCUXCLELS_CMD_CRC_CMD_ID_HASH, (options).word.value, &(crc))
314
318#define MCUXCLELS_CMD_CRC_REFERENCE_UPDATE_HMAC(crc, options) \
319 mcuxClEls_UpdateRefCRC(MCUXCLELS_CMD_CRC_CMD_ID_HMAC, (options).word.value, &(crc))
320
324#define MCUXCLELS_CMD_CRC_REFERENCE_UPDATE_CKDF_SP800108(crc) \
325 ({ \
326 mcuxClEls_CkdfOption_t options = {0u}; \
327 options.bits.ckdf_algo = MCUXCLELS_CKDF_ALGO_SP800108; \
328 mcuxClEls_Status_t retVal = mcuxClEls_UpdateRefCRC(MCUXCLELS_CMD_CRC_CMD_ID_CKDF, options.word.value, &(crc)); \
329 (retVal); \
330 })
331
332
336#define MCUXCLELS_CMD_CRC_REFERENCE_UPDATE_HKDF_RFC5869(crc, options) \
337 ({ \
338 (options).bits.hkdf_algo = MCUXCLELS_HKDF_ALGO_RFC5869; \
339 mcuxClEls_Status_t retVal = mcuxClEls_UpdateRefCRC(MCUXCLELS_CMD_CRC_CMD_ID_HKDF, (options).word.value, &(crc)); \
340 (retVal); \
341 })
342
346#define MCUXCLELS_CMD_CRC_REFERENCE_UPDATE_HKDF_SP80056C(crc) \
347 ({ \
348 mcuxClEls_HkdfOption_t options = {0u}; \
349 options.bits.hkdf_algo = MCUXCLELS_HKDF_ALGO_SP80056C; \
350 mcuxClEls_Status_t retVal = mcuxClEls_UpdateRefCRC(MCUXCLELS_CMD_CRC_CMD_ID_HKDF, options.word.value, &(crc)); \
351 (retVal); \
352 })
353
357#define MCUXCLELS_CMD_CRC_REFERENCE_UPDATE_TLSGENERATEMASTERKEYFROMPREMASTERKEY(crc) \
358 ({ \
359 mcuxClEls_TlsOption_t options = {0u}; \
360 options.bits.mode = MCUXCLELS_TLS_INIT; \
361 mcuxClEls_Status_t retVal = mcuxClEls_UpdateRefCRC(MCUXCLELS_CMD_CRC_CMD_ID_TLS, options.word.value, &(crc)); \
362 (retVal); \
363 })
364
368#define MCUXCLELS_CMD_CRC_REFERENCE_UPDATE_TLSGENERATESESSIONKEYSFROMMASTERKEY(crc) \
369 ({ \
370 mcuxClEls_TlsOption_t options = {0u}; \
371 options.bits.mode = MCUXCLELS_TLS_FINALIZE; \
372 mcuxClEls_Status_t retVal = mcuxClEls_UpdateRefCRC(MCUXCLELS_CMD_CRC_CMD_ID_TLS, options.word.value, &(crc)); \
373 (retVal); \
374 })
375
379#define MCUXCLELS_CMD_CRC_REFERENCE_UPDATE_KEYDELETE(crc) \
380 mcuxClEls_UpdateRefCRC(MCUXCLELS_CMD_CRC_CMD_ID_KDELETE, 0u, &(crc))
381
382
383
387#define MCUXCLELS_CMD_CRC_REFERENCE_UPDATE_KEYIMPORT(crc, options) \
388 mcuxClEls_UpdateRefCRC(MCUXCLELS_CMD_CRC_CMD_ID_KEYIN, (options).word.value, &(crc))
389
390#ifdef MCUXCL_FEATURE_ELS_PUK_INTERNAL
394#define MCUXCLELS_CMD_CRC_REFERENCE_UPDATE_KEYIMPORTPUK(crc) \
395 ({ \
396 mcuxClEls_KeyImportOption_t options = {0u}; \
397 options.bits.revf = MCUXCLELS_KEYIMPORT_REVERSEFETCH_ENABLE; \
398 options.bits.kfmt = MCUXCLELS_KEYIMPORT_KFMT_PBK; \
399 mcuxClEls_Status_t retVal = mcuxClEls_UpdateRefCRC(MCUXCLELS_CMD_CRC_CMD_ID_KEYIN, options.word.value, &(crc)); \
400 (retVal); \
401 })
402#endif /* MCUXCL_FEATURE_ELS_PUK_INTERNAL */
403
407#define MCUXCLELS_CMD_CRC_REFERENCE_UPDATE_KEYEXPORT(crc) \
408 ({ \
409 mcuxClEls_Status_t retVal = mcuxClEls_UpdateRefCRC(MCUXCLELS_CMD_CRC_CMD_ID_KEYOUT, 0u, &(crc)); \
410 mcuxClEls_KeyImportOption_t import_options = {0u}; \
411 import_options.bits.kfmt = MCUXCLELS_KEYIMPORT_KFMT_RFC3394; \
412 retVal = MCUXCLELS_CMD_CRC_REFERENCE_UPDATE_KEYDELETE(crc); \
413 retVal = MCUXCLELS_CMD_CRC_REFERENCE_UPDATE_KEYIMPORT(crc, import_options); \
414 (retVal); \
415 })
416
420#define MCUXCLELS_CMD_CRC_REFERENCE_UPDATE_RNG_DRBGREQUEST(crc) \
421 mcuxClEls_UpdateRefCRC(MCUXCLELS_CMD_CRC_CMD_ID_RND_REQ, 0u, &(crc))
422
423#ifdef MCUXCL_FEATURE_ELS_RND_RAW
427#define MCUXCLELS_CMD_CRC_REFERENCE_UPDATE_RNG_DRBGREQUESTRAW(crc) \
428 mcuxClEls_UpdateRefCRC(MCUXCLELS_CMD_CRC_CMD_ID_RND_REQ, MCUXCLELS_RNG_RND_REQ_RND_RAW, &(crc))
429#endif /* MCUXCL_FEATURE_ELS_RND_RAW */
430
434#define MCUXCLELS_CMD_CRC_REFERENCE_UPDATE_RNG_DRBGTESTINSTANTIATE(crc) \
435 mcuxClEls_UpdateRefCRC(MCUXCLELS_CMD_CRC_CMD_ID_DRBG_TEST, MCUXCLELS_RNG_DRBG_TEST_MODE_INSTANTIATE, &(crc))
436
440#define MCUXCLELS_CMD_CRC_REFERENCE_UPDATE_RNG_DRBGTESTEXTRACT(crc) \
441 mcuxClEls_UpdateRefCRC(MCUXCLELS_CMD_CRC_CMD_ID_DRBG_TEST, MCUXCLELS_RNG_DRBG_TEST_MODE_EXTRACT, &(crc))
442
446#define MCUXCLELS_CMD_CRC_REFERENCE_UPDATE_RNG_DRBGTESTAESECB(crc) \
447 mcuxClEls_UpdateRefCRC(MCUXCLELS_CMD_CRC_CMD_ID_DRBG_TEST, MCUXCLELS_RNG_DRBG_TEST_MODE_AES_ECB, &(crc))
448
452#define MCUXCLELS_CMD_CRC_REFERENCE_UPDATE_RNG_DRBGTESTAESCTR(crc) \
453 mcuxClEls_UpdateRefCRC(MCUXCLELS_CMD_CRC_CMD_ID_DRBG_TEST, MCUXCLELS_RNG_DRBG_TEST_MODE_AES_CTR, &(crc))
454
458#define MCUXCLELS_CMD_CRC_REFERENCE_UPDATE_RNG_DTRNG_CONFIGLOAD(crc) \
459 mcuxClEls_UpdateRefCRC(MCUXCLELS_CMD_CRC_CMD_ID_DTRNG_CFG_LOAD, 0u, &(crc))
460
464#define MCUXCLELS_CMD_CRC_REFERENCE_UPDATE_RNG_DTRNG_CONFIGEVALUATE(crc) \
465 mcuxClEls_UpdateRefCRC(MCUXCLELS_CMD_CRC_CMD_ID_DTRNG_EVAL, 0u, &(crc))
466
467#ifdef MCUXCL_FEATURE_ELS_PRND_INIT
471#define MCUXCLELS_CMD_CRC_REFERENCE_UPDATE_PRNG_INIT(crc) \
472 mcuxClEls_UpdateRefCRC(MCUXCLELS_CMD_CRC_CMD_ID_RND_REQ, MCUXCLELS_RNG_RND_REQ_PRND_INIT, &(crc))
473#endif /* MCUXCL_FEATURE_ELS_PRND_INIT */
484#define MCUXCLELS_CMD_CRC_CMD_ID_CIPHER 0
485#define MCUXCLELS_CMD_CRC_CMD_ID_AUTH_CIPHER 1
486#define MCUXCLELS_CMD_CRC_CMD_ID_CHAL_RESP_GEN 3
487#define MCUXCLELS_CMD_CRC_CMD_ID_ECSIGN 4
488#define MCUXCLELS_CMD_CRC_CMD_ID_ECVFY 5
489#define MCUXCLELS_CMD_CRC_CMD_ID_ECKXH 6
490#define MCUXCLELS_CMD_CRC_CMD_ID_KEYGEN 8
491#define MCUXCLELS_CMD_CRC_CMD_ID_KEYIN 9
492#define MCUXCLELS_CMD_CRC_CMD_ID_KEYOUT 10
493#define MCUXCLELS_CMD_CRC_CMD_ID_KDELETE 11
494#define MCUXCLELS_CMD_CRC_CMD_ID_KEYPROV 12
495#define MCUXCLELS_CMD_CRC_CMD_ID_CKDF 16
496#define MCUXCLELS_CMD_CRC_CMD_ID_HKDF 17
497#define MCUXCLELS_CMD_CRC_CMD_ID_TLS 18
498#define MCUXCLELS_CMD_CRC_CMD_ID_HASH 20
499#define MCUXCLELS_CMD_CRC_CMD_ID_HMAC 21
500#define MCUXCLELS_CMD_CRC_CMD_ID_CMAC 22
501#define MCUXCLELS_CMD_CRC_CMD_ID_RND_REQ 24
502#define MCUXCLELS_CMD_CRC_CMD_ID_DRBG_TEST 25
503#define MCUXCLELS_CMD_CRC_CMD_ID_DTRNG_CFG_LOAD 28
504#define MCUXCLELS_CMD_CRC_CMD_ID_DTRNG_EVAL 29
505#define MCUXCLELS_CMD_CRC_CMD_ID_GDET_CFG_LOAD 30
506#define MCUXCLELS_CMD_CRC_CMD_ID_GDET_TRIM 31
513/**********************************************
514 * TYPEDEFS
515 **********************************************/
526typedef union
527{
528 struct
529 {
530 uint32_t value;
531 } word;
532 struct
533 {
534 uint32_t reset :1;
535 uint32_t enable :1;
536 uint32_t : 30;
537 } bits;
539
544/**********************************************
545 * FUNCTIONS
546 **********************************************/
568 );
569
587 uint32_t* commandCrc
588 );
589
603 uint32_t refCrc
604 );
605
626 uint8_t command,
627 uint32_t options,
628 uint32_t* refCrc
629 );
630
631#ifdef __cplusplus
632} /* extern "C" */
633#endif
634
635#endif /* MCUXCLELS_CRC_H_ */
636
Definition of function identifiers for the flow protection mechanism.
ELS type header.
Provides the API for the CSSL flow protection mechanism.
#define MCUXCLELS_API
Marks a function as a public API function of the mcuxClEls component.
Definition mcuxClEls_Common.h:46
MCUXCLELS_API mcuxClEls_Status_t mcuxClEls_ConfigureCommandCRC(mcuxClEls_CommandCrcConfig_t options)
Set command CRC flags.
MCUXCLELS_API mcuxClEls_Status_t mcuxClEls_VerifyVsRefCRC(uint32_t refCrc)
Verifies a reference CRC against the computed ELS command CRC.
MCUXCLELS_API mcuxClEls_Status_t mcuxClEls_UpdateRefCRC(uint8_t command, uint32_t options, uint32_t *refCrc)
Updates a reference CRC with the parameters of an ELS command.
MCUXCLELS_API mcuxClEls_Status_t mcuxClEls_GetCommandCRC(uint32_t *commandCrc)
Get the current command CRC value.
uint32_t mcuxClEls_Status_t
Type for ELS driver status codes.
Definition mcuxClEls_Types.h:212
#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
Type to control ELS Command CRC.
Definition mcuxClEls_Crc.h:527
uint32_t value
Accesses the bit field as a full word.
Definition mcuxClEls_Crc.h:530
uint32_t enable
Enable/Disable update of Command CRC value by executing commands, set with MCUXCLELS_CMD_CRC_ENABLE /...
Definition mcuxClEls_Crc.h:535
uint32_t reset
Reset the Command CRC to initial value, set by MCUXCLELS_CMD_CRC_RESET.
Definition mcuxClEls_Crc.h:534