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-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
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 (options).bits.lastinit = MCUXCLELS_AEAD_LASTINIT_TRUE; \
93 (options).bits.acpsie = MCUXCLELS_AEAD_STATE_IN_DISABLE; \
94 (options).bits.acpsoe = MCUXCLELS_AEAD_STATE_OUT_ENABLE; \
95 mcuxClEls_Status_t retVal = mcuxClEls_UpdateRefCRC(MCUXCLELS_CMD_CRC_CMD_ID_AUTH_CIPHER, (options).word.value, &(crc)); \
96 (retVal); \
97 })
98#else
99#define MCUXCLELS_CMD_CRC_REFERENCE_UPDATE_AEAD_INIT(crc, options) \
100 ({ \
101 (options).bits.acpmod = MCUXCLELS_AEAD_ACPMOD_INIT; \
102 (options).bits.lastinit = MCUXCLELS_AEAD_LASTINIT_TRUE; \
103 (options).bits.acpsie = MCUXCLELS_AEAD_STATE_IN_DISABLE; \
104 mcuxClEls_Status_t retVal = mcuxClEls_UpdateRefCRC(MCUXCLELS_CMD_CRC_CMD_ID_AUTH_CIPHER, (options).word.value, &(crc)); \
105 (retVal); \
106 })
107#endif /* MCUXCL_FEATURE_ELS_NO_INTERNAL_STATE_FLAGS */
108
112#ifndef MCUXCL_FEATURE_ELS_NO_INTERNAL_STATE_FLAGS
113#define MCUXCLELS_CMD_CRC_REFERENCE_UPDATE_AEAD_PARTIALINIT(crc, options) \
114 ({ \
115 (options).bits.acpmod = MCUXCLELS_AEAD_ACPMOD_INIT; \
116 (options).bits.acpsoe = MCUXCLELS_AEAD_STATE_OUT_ENABLE; \
117 mcuxClEls_Status_t retVal = mcuxClEls_UpdateRefCRC(MCUXCLELS_CMD_CRC_CMD_ID_AUTH_CIPHER, (options).word.value, &(crc)); \
118 (retVal); \
119 })
120#else
121#define MCUXCLELS_CMD_CRC_REFERENCE_UPDATE_AEAD_PARTIALINIT(crc, options) \
122 ({ \
123 (options).bits.acpmod = MCUXCLELS_AEAD_ACPMOD_INIT; \
124 mcuxClEls_Status_t retVal = mcuxClEls_UpdateRefCRC(MCUXCLELS_CMD_CRC_CMD_ID_AUTH_CIPHER, (options).word.value, &(crc)); \
125 (retVal); \
126 })
127#endif /* MCUXCL_FEATURE_ELS_NO_INTERNAL_STATE_FLAGS */
128
132#ifndef MCUXCL_FEATURE_ELS_NO_INTERNAL_STATE_FLAGS
133#define MCUXCLELS_CMD_CRC_REFERENCE_UPDATE_AEAD_UPDATEAAD(crc, options) \
134 ({ \
135 (options).bits.acpmod = MCUXCLELS_AEAD_ACPMOD_AADPROC \
136 (options).bits.acpsie = MCUXCLELS_AEAD_STATE_IN_ENABLE; \
137 (options).bits.acpsoe = MCUXCLELS_AEAD_STATE_OUT_ENABLE; \
138 mcuxClEls_Status_t retVal = mcuxClEls_UpdateRefCRC(MCUXCLELS_CMD_CRC_CMD_ID_AUTH_CIPHER, (options).word.value, &(crc)); \
139 (retVal); \
140 })
141#else
142#define MCUXCLELS_CMD_CRC_REFERENCE_UPDATE_AEAD_UPDATEAAD(crc, options) \
143 ({ \
144 (options).bits.acpmod = MCUXCLELS_AEAD_ACPMOD_AADPROC; \
145 mcuxClEls_Status_t retVal = mcuxClEls_UpdateRefCRC(MCUXCLELS_CMD_CRC_CMD_ID_AUTH_CIPHER, (options).word.value, &(crc)); \
146 (retVal); \
147 })
148#endif /* MCUXCL_FEATURE_ELS_NO_INTERNAL_STATE_FLAGS */
149
153#ifndef MCUXCL_FEATURE_ELS_NO_INTERNAL_STATE_FLAGS
154#define MCUXCLELS_CMD_CRC_REFERENCE_UPDATE_AEAD_UPDATEDATA(crc, options) \
155 ({ \
156 (options).bits.acpmod = MCUXCLELS_AEAD_ACPMOD_MSGPROC \
157 (options).bits.acpsie = MCUXCLELS_AEAD_STATE_IN_ENABLE; \
158 (options).bits.acpsoe = MCUXCLELS_AEAD_STATE_OUT_ENABLE; \
159 mcuxClEls_Status_t retVal = mcuxClEls_UpdateRefCRC(MCUXCLELS_CMD_CRC_CMD_ID_AUTH_CIPHER, (options).word.value, &(crc)); \
160 (retVal); \
161 })
162#else
163#define MCUXCLELS_CMD_CRC_REFERENCE_UPDATE_AEAD_UPDATEDATA(crc, options) \
164 ({ \
165 (options).bits.acpmod = MCUXCLELS_AEAD_ACPMOD_MSGPROC; \
166 mcuxClEls_Status_t retVal = mcuxClEls_UpdateRefCRC(MCUXCLELS_CMD_CRC_CMD_ID_AUTH_CIPHER, (options).word.value, &(crc)); \
167 (retVal); \
168 })
169#endif /* MCUXCL_FEATURE_ELS_NO_INTERNAL_STATE_FLAGS */
170
174#ifndef MCUXCL_FEATURE_ELS_NO_INTERNAL_STATE_FLAGS
175#define MCUXCLELS_CMD_CRC_REFERENCE_UPDATE_AEAD_FINALIZE(crc, options) \
176 ({ \
177 (options).bits.acpmod = MCUXCLELS_AEAD_ACPMOD_FINAL \
178 (options).bits.acpsie = MCUXCLELS_AEAD_STATE_IN_ENABLE; \
179 mcuxClEls_Status_t retVal = mcuxClEls_UpdateRefCRC(MCUXCLELS_CMD_CRC_CMD_ID_AUTH_CIPHER, (options).word.value, &(crc)); \
180 (retVal); \
181 })
182#else
183#define MCUXCLELS_CMD_CRC_REFERENCE_UPDATE_AEAD_FINALIZE(crc, options) \
184 ({ \
185 (options).bits.acpmod = MCUXCLELS_AEAD_ACPMOD_FINAL; \
186 mcuxClEls_Status_t retVal = mcuxClEls_UpdateRefCRC(MCUXCLELS_CMD_CRC_CMD_ID_AUTH_CIPHER, (options).word.value, &(crc)); \
187 (retVal); \
188 })
189#endif /* MCUXCL_FEATURE_ELS_NO_INTERNAL_STATE_FLAGS */
190
194#define MCUXCLELS_CMD_CRC_REFERENCE_UPDATE_CIPHER(crc, options) \
195 mcuxClEls_UpdateRefCRC(MCUXCLELS_CMD_CRC_CMD_ID_CIPHER, (options).word.value, &(crc))
196
200#define MCUXCLELS_CMD_CRC_REFERENCE_UPDATE_CMAC(crc, options) \
201 mcuxClEls_UpdateRefCRC(MCUXCLELS_CMD_CRC_CMD_ID_CMAC, (options).word.value, &(crc))
202
203
207#define MCUXCLELS_CMD_CRC_REFERENCE_UPDATE_ECCKEYGEN(crc, options) \
208 ({ \
209 (options).bits.revf = MCUXCLELS_ECC_REVERSEFETCH_ENABLE; \
210 mcuxClEls_Status_t retVal = mcuxClEls_UpdateRefCRC(MCUXCLELS_CMD_CRC_CMD_ID_KEYGEN, (options).word.value, &(crc)); \
211 (retVal); \
212 })
213
217#ifdef MCUXCL_FEATURE_ELS_PUK_INTERNAL_BIT
218#define MCUXCLELS_CMD_CRC_REFERENCE_UPDATE_ECCKEYEXCHANGE(crc) \
219 ({ \
220 mcuxClEls_EccKeyExchOption_t options = {0u}; \
221 options.bits.revf = MCUXCLELS_ECC_REVERSEFETCH_ENABLE; \
222 options.bits.extkey = MCUXCLELS_ECC_EXTKEY_EXTERNAL; \
223 mcuxClEls_Status_t retVal = mcuxClEls_UpdateRefCRC(MCUXCLELS_CMD_CRC_CMD_ID_ECKXH, options.word.value, &(crc)); \
224 (retVal); \
225 })
226#else
227#define MCUXCLELS_CMD_CRC_REFERENCE_UPDATE_ECCKEYEXCHANGE(crc) \
228 ({ \
229 mcuxClEls_EccKeyExchOption_t options = {0u}; \
230 options.bits.revf = MCUXCLELS_ECC_REVERSEFETCH_ENABLE; \
231 mcuxClEls_Status_t retVal = mcuxClEls_UpdateRefCRC(MCUXCLELS_CMD_CRC_CMD_ID_ECKXH, options.word.value, &(crc)); \
232 (retVal); \
233 })
234#endif /* MCUXCL_FEATURE_ELS_PUK_INTERNAL_BIT */
235
236#ifdef MCUXCL_FEATURE_ELS_PUK_INTERNAL
240#define MCUXCLELS_CMD_CRC_REFERENCE_UPDATE_ECCKEYEXCHANGEINT(crc) \
241 ({ \
242 mcuxClEls_EccKeyExchOption_t options = {0u}; \
243 options.bits.revf = MCUXCLELS_ECC_REVERSEFETCH_ENABLE; \
244 options.bits.extkey = MCUXCLELS_ECC_EXTKEY_INTERNAL; \
245 mcuxClEls_Status_t retVal = mcuxClEls_UpdateRefCRC(MCUXCLELS_CMD_CRC_CMD_ID_ECKXH, options.word.value, &(crc)); \
246 (retVal); \
247 })
248#endif /* MCUXCL_FEATURE_ELS_PUK_INTERNAL */
249
253#define MCUXCLELS_CMD_CRC_REFERENCE_UPDATE_ECCSIGN(crc, options) \
254 ({ \
255 (options).bits.revf = MCUXCLELS_ECC_REVERSEFETCH_ENABLE; \
256 mcuxClEls_Status_t retVal = mcuxClEls_UpdateRefCRC(MCUXCLELS_CMD_CRC_CMD_ID_ECSIGN, (options).word.value, &(crc)); \
257 (retVal); \
258 })
259
263#ifdef MCUXCL_FEATURE_ELS_PUK_INTERNAL_BIT
264#define MCUXCLELS_CMD_CRC_REFERENCE_UPDATE_ECCVERFIFY(crc, options) \
265 ({ \
266 (options).bits.revf = MCUXCLELS_ECC_REVERSEFETCH_ENABLE; \
267 (options).bits.extkey = MCUXCLELS_ECC_EXTKEY_EXTERNAL; \
268 mcuxClEls_Status_t retVal = mcuxClEls_UpdateRefCRC(MCUXCLELS_CMD_CRC_CMD_ID_ECVFY, (options).word.value, &(crc)); \
269 (retVal); \
270 })
271#else
272#define MCUXCLELS_CMD_CRC_REFERENCE_UPDATE_ECCVERFIFY(crc, options) \
273 ({ \
274 (options).bits.revf = MCUXCLELS_ECC_REVERSEFETCH_ENABLE; \
275 mcuxClEls_Status_t retVal = mcuxClEls_UpdateRefCRC(MCUXCLELS_CMD_CRC_CMD_ID_ECVFY, (options).word.value, &(crc)); \
276 (retVal); \
277 })
278#endif /* MCUXCL_FEATURE_ELS_PUK_INTERNAL_BIT */
279
280#ifdef MCUXCL_FEATURE_ELS_PUK_INTERNAL
284#define MCUXCLELS_CMD_CRC_REFERENCE_UPDATE_ECCVERFIFYINT(crc, options) \
285 ({ \
286 (options).bits.revf = MCUXCLELS_ECC_REVERSEFETCH_ENABLE; \
287 (options).bits.extkey = MCUXCLELS_ECC_EXTKEY_INTERNAL; \
288 mcuxClEls_Status_t retVal = mcuxClEls_UpdateRefCRC(MCUXCLELS_CMD_CRC_CMD_ID_ECVFY, (options).word.value, &(crc)); \
289 (retVal); \
290 })
291#endif /* MCUXCL_FEATURE_ELS_PUK_INTERNAL */
292
296#define MCUXCLELS_CMD_CRC_REFERENCE_UPDATE_GLITCHDETECTOR_LOADCONFIG(crc) \
297 mcuxClEls_UpdateRefCRC(MCUXCLELS_CMD_CRC_CMD_ID_GDET_CFG_LOAD, 0u, &(crc))
298
302#define MCUXCLELS_CMD_CRC_REFERENCE_UPDATE_GLITCHDETECTOR_TRIM(crc) \
303 mcuxClEls_UpdateRefCRC(MCUXCLELS_CMD_CRC_CMD_ID_GDET_TRIM, 0u, &(crc))
304
308#define MCUXCLELS_CMD_CRC_REFERENCE_UPDATE_HASH(crc, options) \
309 mcuxClEls_UpdateRefCRC(MCUXCLELS_CMD_CRC_CMD_ID_HASH, (options).word.value, &(crc))
310
314#define MCUXCLELS_CMD_CRC_REFERENCE_UPDATE_HMAC(crc, options) \
315 mcuxClEls_UpdateRefCRC(MCUXCLELS_CMD_CRC_CMD_ID_HMAC, (options).word.value, &(crc))
316
320#define MCUXCLELS_CMD_CRC_REFERENCE_UPDATE_CKDF_SP800108(crc) \
321 ({ \
322 mcuxClEls_CkdfOption_t options = {0u}; \
323 options.bits.ckdf_algo = MCUXCLELS_CKDF_ALGO_SP800108; \
324 mcuxClEls_Status_t retVal = mcuxClEls_UpdateRefCRC(MCUXCLELS_CMD_CRC_CMD_ID_CKDF, options.word.value, &(crc)); \
325 (retVal); \
326 })
327
328
332#define MCUXCLELS_CMD_CRC_REFERENCE_UPDATE_HKDF_RFC5869(crc, options) \
333 ({ \
334 (options).bits.hkdf_algo = MCUXCLELS_HKDF_ALGO_RFC5869; \
335 mcuxClEls_Status_t retVal = mcuxClEls_UpdateRefCRC(MCUXCLELS_CMD_CRC_CMD_ID_HKDF, (options).word.value, &(crc)); \
336 (retVal); \
337 })
338
342#define MCUXCLELS_CMD_CRC_REFERENCE_UPDATE_HKDF_SP80056C(crc) \
343 ({ \
344 mcuxClEls_HkdfOption_t options = {0u}; \
345 options.bits.hkdf_algo = MCUXCLELS_HKDF_ALGO_SP80056C; \
346 mcuxClEls_Status_t retVal = mcuxClEls_UpdateRefCRC(MCUXCLELS_CMD_CRC_CMD_ID_HKDF, options.word.value, &(crc)); \
347 (retVal); \
348 })
349
353#define MCUXCLELS_CMD_CRC_REFERENCE_UPDATE_TLSGENERATEMASTERKEYFROMPREMASTERKEY(crc) \
354 ({ \
355 mcuxClEls_TlsOption_t options = {0u}; \
356 options.bits.mode = MCUXCLELS_TLS_INIT; \
357 mcuxClEls_Status_t retVal = mcuxClEls_UpdateRefCRC(MCUXCLELS_CMD_CRC_CMD_ID_TLS, options.word.value, &(crc)); \
358 (retVal); \
359 })
360
364#define MCUXCLELS_CMD_CRC_REFERENCE_UPDATE_TLSGENERATESESSIONKEYSFROMMASTERKEY(crc) \
365 ({ \
366 mcuxClEls_TlsOption_t options = {0u}; \
367 options.bits.mode = MCUXCLELS_TLS_FINALIZE; \
368 mcuxClEls_Status_t retVal = mcuxClEls_UpdateRefCRC(MCUXCLELS_CMD_CRC_CMD_ID_TLS, options.word.value, &(crc)); \
369 (retVal); \
370 })
371
375#define MCUXCLELS_CMD_CRC_REFERENCE_UPDATE_KEYDELETE(crc) \
376 mcuxClEls_UpdateRefCRC(MCUXCLELS_CMD_CRC_CMD_ID_KDELETE, 0u, &(crc))
377
378
379
383#define MCUXCLELS_CMD_CRC_REFERENCE_UPDATE_KEYIMPORT(crc, options) \
384 mcuxClEls_UpdateRefCRC(MCUXCLELS_CMD_CRC_CMD_ID_KEYIN, (options).word.value, &(crc))
385
386#ifdef MCUXCL_FEATURE_ELS_PUK_INTERNAL
390#define MCUXCLELS_CMD_CRC_REFERENCE_UPDATE_KEYIMPORTPUK(crc) \
391 ({ \
392 mcuxClEls_KeyImportOption_t options = {0u}; \
393 options.bits.revf = MCUXCLELS_KEYIMPORT_REVERSEFETCH_ENABLE; \
394 options.bits.kfmt = MCUXCLELS_KEYIMPORT_KFMT_PBK; \
395 mcuxClEls_Status_t retVal = mcuxClEls_UpdateRefCRC(MCUXCLELS_CMD_CRC_CMD_ID_KEYIN, options.word.value, &(crc)); \
396 (retVal); \
397 })
398#endif /* MCUXCL_FEATURE_ELS_PUK_INTERNAL */
399
403#define MCUXCLELS_CMD_CRC_REFERENCE_UPDATE_KEYEXPORT(crc) \
404 ({ \
405 mcuxClEls_Status_t retVal = mcuxClEls_UpdateRefCRC(MCUXCLELS_CMD_CRC_CMD_ID_KEYOUT, 0u, &(crc)); \
406 mcuxClEls_KeyImportOption_t import_options = {0u}; \
407 import_options.bits.kfmt = MCUXCLELS_KEYIMPORT_KFMT_RFC3394; \
408 retVal = MCUXCLELS_CMD_CRC_REFERENCE_UPDATE_KEYDELETE(crc); \
409 retVal = MCUXCLELS_CMD_CRC_REFERENCE_UPDATE_KEYIMPORT(crc, import_options); \
410 (retVal); \
411 })
412
416#define MCUXCLELS_CMD_CRC_REFERENCE_UPDATE_RNG_DRBGREQUEST(crc) \
417 mcuxClEls_UpdateRefCRC(MCUXCLELS_CMD_CRC_CMD_ID_RND_REQ, 0u, &(crc))
418
419#ifdef MCUXCL_FEATURE_ELS_RND_RAW
423#define MCUXCLELS_CMD_CRC_REFERENCE_UPDATE_RNG_DRBGREQUESTRAW(crc) \
424 mcuxClEls_UpdateRefCRC(MCUXCLELS_CMD_CRC_CMD_ID_RND_REQ, MCUXCLELS_RNG_RND_REQ_RND_RAW, &(crc))
425#endif /* MCUXCL_FEATURE_ELS_RND_RAW */
426
430#define MCUXCLELS_CMD_CRC_REFERENCE_UPDATE_RNG_DRBGTESTINSTANTIATE(crc) \
431 mcuxClEls_UpdateRefCRC(MCUXCLELS_CMD_CRC_CMD_ID_DRBG_TEST, MCUXCLELS_RNG_DRBG_TEST_MODE_INSTANTIATE, &(crc))
432
436#define MCUXCLELS_CMD_CRC_REFERENCE_UPDATE_RNG_DRBGTESTEXTRACT(crc) \
437 mcuxClEls_UpdateRefCRC(MCUXCLELS_CMD_CRC_CMD_ID_DRBG_TEST, MCUXCLELS_RNG_DRBG_TEST_MODE_EXTRACT, &(crc))
438
442#define MCUXCLELS_CMD_CRC_REFERENCE_UPDATE_RNG_DRBGTESTAESECB(crc) \
443 mcuxClEls_UpdateRefCRC(MCUXCLELS_CMD_CRC_CMD_ID_DRBG_TEST, MCUXCLELS_RNG_DRBG_TEST_MODE_AES_ECB, &(crc))
444
448#define MCUXCLELS_CMD_CRC_REFERENCE_UPDATE_RNG_DRBGTESTAESCTR(crc) \
449 mcuxClEls_UpdateRefCRC(MCUXCLELS_CMD_CRC_CMD_ID_DRBG_TEST, MCUXCLELS_RNG_DRBG_TEST_MODE_AES_CTR, &(crc))
450
454#define MCUXCLELS_CMD_CRC_REFERENCE_UPDATE_RNG_DTRNG_CONFIGLOAD(crc) \
455 mcuxClEls_UpdateRefCRC(MCUXCLELS_CMD_CRC_CMD_ID_DTRNG_CFG_LOAD, 0u, &(crc))
456
460#define MCUXCLELS_CMD_CRC_REFERENCE_UPDATE_RNG_DTRNG_CONFIGEVALUATE(crc) \
461 mcuxClEls_UpdateRefCRC(MCUXCLELS_CMD_CRC_CMD_ID_DTRNG_EVAL, 0u, &(crc))
462
463#ifdef MCUXCL_FEATURE_ELS_PRND_INIT
467#define MCUXCLELS_CMD_CRC_REFERENCE_UPDATE_PRNG_INIT(crc) \
468 mcuxClEls_UpdateRefCRC(MCUXCLELS_CMD_CRC_CMD_ID_RND_REQ, MCUXCLELS_RNG_RND_REQ_PRND_INIT, &(crc))
469#endif /* MCUXCL_FEATURE_ELS_PRND_INIT */
480#define MCUXCLELS_CMD_CRC_CMD_ID_CIPHER 0
481#define MCUXCLELS_CMD_CRC_CMD_ID_AUTH_CIPHER 1
482#define MCUXCLELS_CMD_CRC_CMD_ID_CHAL_RESP_GEN 3
483#define MCUXCLELS_CMD_CRC_CMD_ID_ECSIGN 4
484#define MCUXCLELS_CMD_CRC_CMD_ID_ECVFY 5
485#define MCUXCLELS_CMD_CRC_CMD_ID_ECKXH 6
486#define MCUXCLELS_CMD_CRC_CMD_ID_KEYGEN 8
487#define MCUXCLELS_CMD_CRC_CMD_ID_KEYIN 9
488#define MCUXCLELS_CMD_CRC_CMD_ID_KEYOUT 10
489#define MCUXCLELS_CMD_CRC_CMD_ID_KDELETE 11
490#define MCUXCLELS_CMD_CRC_CMD_ID_KEYPROV 12
491#define MCUXCLELS_CMD_CRC_CMD_ID_CKDF 16
492#define MCUXCLELS_CMD_CRC_CMD_ID_HKDF 17
493#define MCUXCLELS_CMD_CRC_CMD_ID_TLS 18
494#define MCUXCLELS_CMD_CRC_CMD_ID_HASH 20
495#define MCUXCLELS_CMD_CRC_CMD_ID_HMAC 21
496#define MCUXCLELS_CMD_CRC_CMD_ID_CMAC 22
497#define MCUXCLELS_CMD_CRC_CMD_ID_RND_REQ 24
498#define MCUXCLELS_CMD_CRC_CMD_ID_DRBG_TEST 25
499#define MCUXCLELS_CMD_CRC_CMD_ID_DTRNG_CFG_LOAD 28
500#define MCUXCLELS_CMD_CRC_CMD_ID_DTRNG_EVAL 29
501#define MCUXCLELS_CMD_CRC_CMD_ID_GDET_CFG_LOAD 30
502#define MCUXCLELS_CMD_CRC_CMD_ID_GDET_TRIM 31
509/**********************************************
510 * TYPEDEFS
511 **********************************************/
522typedef union
523{
524 struct
525 {
526 uint32_t value;
527 } word;
528 struct
529 {
530 uint32_t reset :1;
531 uint32_t enable :1;
532 uint32_t : 30;
533 } bits;
535
540/**********************************************
541 * FUNCTIONS
542 **********************************************/
564 );
565
583 uint32_t* commandCrc
584 );
585
599 uint32_t refCrc
600 );
601
622 uint8_t command,
623 uint32_t options,
624 uint32_t* refCrc
625 );
626
627#ifdef __cplusplus
628} /* extern "C" */
629#endif
630
631#endif /* MCUXCLELS_CRC_H_ */
632
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:523
uint32_t value
Accesses the bit field as a full word.
Definition mcuxClEls_Crc.h:526
uint32_t enable
Enable/Disable update of Command CRC value by executing commands, set with MCUXCLELS_CMD_CRC_ENABLE /...
Definition mcuxClEls_Crc.h:531
uint32_t reset
Reset the Command CRC to initial value, set by MCUXCLELS_CMD_CRC_RESET.
Definition mcuxClEls_Crc.h:530