MCUX CLNS
MCUX Crypto Library Normal Secure
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
31 #include <mcuxCsslFlowProtection.h>
33 
34 #ifdef __cplusplus
35 extern "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)
63 
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
237 
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
281 
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
387 
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
420 
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
464 
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 */
470 
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
503 
509 /**********************************************
510  * TYPEDEFS
511  **********************************************/
512 
522 typedef 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 
MCUXCLELS_API mcuxClEls_Status_t mcuxClEls_ConfigureCommandCRC(mcuxClEls_CommandCrcConfig_t options)
Set command CRC flags.
Provides the API for the CSSL flow protection mechanism.
uint32_t enable
Enable/Disable update of Command CRC value by executing commands, set with MCUXCLELS_CMD_CRC_ENABLE /...
Definition: mcuxClEls_Crc.h:531
#define MCUXCLELS_API
Marks a function as a public API function of the mcuxClEls component.
Definition: mcuxClEls_Common.h:47
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.
ELS type header.
uint32_t reset
Reset the Command CRC to initial value, set by MCUXCLELS_CMD_CRC_RESET.
Definition: mcuxClEls_Crc.h:530
uint32_t value
Accesses the bit field as a full word.
Definition: mcuxClEls_Crc.h:526
#define MCUX_CSSL_FP_FUNCTION_DECL(...)
Declaration of a flow protected function.
Definition: mcuxCsslFlowProtection.h:125
Type to control ELS Command CRC.
Definition: mcuxClEls_Crc.h:522
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_GetCommandCRC(uint32_t *commandCrc)
Get the current command CRC value.
Definition of function identifiers for the flow protection mechanism.
#define MCUX_CSSL_FP_PROTECTED_TYPE(resultType)
Based on a given base type, builds a return type with flow protection.
Definition: mcuxCsslFlowProtection.h:81
uint32_t mcuxClEls_Status_t
Type for ELS driver status codes.
Definition: mcuxClEls_Types.h:211