26 #ifndef MCUXCLELS_CRC_H_ 27 #define MCUXCLELS_CRC_H_ 29 #include <mcuxClConfig.h> 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) 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) 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 82 #define MCUXCLELS_CMD_CRC_REFERENCE_RESET(crc) \ 83 (crc) = MCUXCLELS_CMD_CRC_INITIAL_VALUE 88 #ifndef MCUXCL_FEATURE_ELS_NO_INTERNAL_STATE_FLAGS 89 #define MCUXCLELS_CMD_CRC_REFERENCE_UPDATE_AEAD_INIT(crc, options) \ 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)); \ 99 #define MCUXCLELS_CMD_CRC_REFERENCE_UPDATE_AEAD_INIT(crc, options) \ 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)); \ 112 #ifndef MCUXCL_FEATURE_ELS_NO_INTERNAL_STATE_FLAGS 113 #define MCUXCLELS_CMD_CRC_REFERENCE_UPDATE_AEAD_PARTIALINIT(crc, options) \ 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)); \ 121 #define MCUXCLELS_CMD_CRC_REFERENCE_UPDATE_AEAD_PARTIALINIT(crc, options) \ 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)); \ 132 #ifndef MCUXCL_FEATURE_ELS_NO_INTERNAL_STATE_FLAGS 133 #define MCUXCLELS_CMD_CRC_REFERENCE_UPDATE_AEAD_UPDATEAAD(crc, options) \ 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)); \ 142 #define MCUXCLELS_CMD_CRC_REFERENCE_UPDATE_AEAD_UPDATEAAD(crc, options) \ 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)); \ 153 #ifndef MCUXCL_FEATURE_ELS_NO_INTERNAL_STATE_FLAGS 154 #define MCUXCLELS_CMD_CRC_REFERENCE_UPDATE_AEAD_UPDATEDATA(crc, options) \ 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)); \ 163 #define MCUXCLELS_CMD_CRC_REFERENCE_UPDATE_AEAD_UPDATEDATA(crc, options) \ 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)); \ 174 #ifndef MCUXCL_FEATURE_ELS_NO_INTERNAL_STATE_FLAGS 175 #define MCUXCLELS_CMD_CRC_REFERENCE_UPDATE_AEAD_FINALIZE(crc, options) \ 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)); \ 183 #define MCUXCLELS_CMD_CRC_REFERENCE_UPDATE_AEAD_FINALIZE(crc, options) \ 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)); \ 194 #define MCUXCLELS_CMD_CRC_REFERENCE_UPDATE_CIPHER(crc, options) \ 195 mcuxClEls_UpdateRefCRC(MCUXCLELS_CMD_CRC_CMD_ID_CIPHER, (options).word.value, &(crc)) 200 #define MCUXCLELS_CMD_CRC_REFERENCE_UPDATE_CMAC(crc, options) \ 201 mcuxClEls_UpdateRefCRC(MCUXCLELS_CMD_CRC_CMD_ID_CMAC, (options).word.value, &(crc)) 207 #define MCUXCLELS_CMD_CRC_REFERENCE_UPDATE_ECCKEYGEN(crc, options) \ 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)); \ 217 #ifdef MCUXCL_FEATURE_ELS_PUK_INTERNAL_BIT 218 #define MCUXCLELS_CMD_CRC_REFERENCE_UPDATE_ECCKEYEXCHANGE(crc) \ 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)); \ 227 #define MCUXCLELS_CMD_CRC_REFERENCE_UPDATE_ECCKEYEXCHANGE(crc) \ 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)); \ 236 #ifdef MCUXCL_FEATURE_ELS_PUK_INTERNAL 240 #define MCUXCLELS_CMD_CRC_REFERENCE_UPDATE_ECCKEYEXCHANGEINT(crc) \ 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)); \ 253 #define MCUXCLELS_CMD_CRC_REFERENCE_UPDATE_ECCSIGN(crc, options) \ 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)); \ 263 #ifdef MCUXCL_FEATURE_ELS_PUK_INTERNAL_BIT 264 #define MCUXCLELS_CMD_CRC_REFERENCE_UPDATE_ECCVERFIFY(crc, options) \ 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)); \ 272 #define MCUXCLELS_CMD_CRC_REFERENCE_UPDATE_ECCVERFIFY(crc, options) \ 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)); \ 280 #ifdef MCUXCL_FEATURE_ELS_PUK_INTERNAL 284 #define MCUXCLELS_CMD_CRC_REFERENCE_UPDATE_ECCVERFIFYINT(crc, options) \ 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)); \ 296 #define MCUXCLELS_CMD_CRC_REFERENCE_UPDATE_GLITCHDETECTOR_LOADCONFIG(crc) \ 297 mcuxClEls_UpdateRefCRC(MCUXCLELS_CMD_CRC_CMD_ID_GDET_CFG_LOAD, 0u, &(crc)) 302 #define MCUXCLELS_CMD_CRC_REFERENCE_UPDATE_GLITCHDETECTOR_TRIM(crc) \ 303 mcuxClEls_UpdateRefCRC(MCUXCLELS_CMD_CRC_CMD_ID_GDET_TRIM, 0u, &(crc)) 308 #define MCUXCLELS_CMD_CRC_REFERENCE_UPDATE_HASH(crc, options) \ 309 mcuxClEls_UpdateRefCRC(MCUXCLELS_CMD_CRC_CMD_ID_HASH, (options).word.value, &(crc)) 314 #define MCUXCLELS_CMD_CRC_REFERENCE_UPDATE_HMAC(crc, options) \ 315 mcuxClEls_UpdateRefCRC(MCUXCLELS_CMD_CRC_CMD_ID_HMAC, (options).word.value, &(crc)) 320 #define MCUXCLELS_CMD_CRC_REFERENCE_UPDATE_CKDF_SP800108(crc) \ 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)); \ 332 #define MCUXCLELS_CMD_CRC_REFERENCE_UPDATE_HKDF_RFC5869(crc, options) \ 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)); \ 342 #define MCUXCLELS_CMD_CRC_REFERENCE_UPDATE_HKDF_SP80056C(crc) \ 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)); \ 353 #define MCUXCLELS_CMD_CRC_REFERENCE_UPDATE_TLSGENERATEMASTERKEYFROMPREMASTERKEY(crc) \ 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)); \ 364 #define MCUXCLELS_CMD_CRC_REFERENCE_UPDATE_TLSGENERATESESSIONKEYSFROMMASTERKEY(crc) \ 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)); \ 375 #define MCUXCLELS_CMD_CRC_REFERENCE_UPDATE_KEYDELETE(crc) \ 376 mcuxClEls_UpdateRefCRC(MCUXCLELS_CMD_CRC_CMD_ID_KDELETE, 0u, &(crc)) 383 #define MCUXCLELS_CMD_CRC_REFERENCE_UPDATE_KEYIMPORT(crc, options) \ 384 mcuxClEls_UpdateRefCRC(MCUXCLELS_CMD_CRC_CMD_ID_KEYIN, (options).word.value, &(crc)) 386 #ifdef MCUXCL_FEATURE_ELS_PUK_INTERNAL 390 #define MCUXCLELS_CMD_CRC_REFERENCE_UPDATE_KEYIMPORTPUK(crc) \ 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)); \ 403 #define MCUXCLELS_CMD_CRC_REFERENCE_UPDATE_KEYEXPORT(crc) \ 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); \ 416 #define MCUXCLELS_CMD_CRC_REFERENCE_UPDATE_RNG_DRBGREQUEST(crc) \ 417 mcuxClEls_UpdateRefCRC(MCUXCLELS_CMD_CRC_CMD_ID_RND_REQ, 0u, &(crc)) 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)) 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)) 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)) 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)) 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)) 454 #define MCUXCLELS_CMD_CRC_REFERENCE_UPDATE_RNG_DTRNG_CONFIGLOAD(crc) \ 455 mcuxClEls_UpdateRefCRC(MCUXCLELS_CMD_CRC_CMD_ID_DTRNG_CFG_LOAD, 0u, &(crc)) 460 #define MCUXCLELS_CMD_CRC_REFERENCE_UPDATE_RNG_DTRNG_CONFIGEVALUATE(crc) \ 461 mcuxClEls_UpdateRefCRC(MCUXCLELS_CMD_CRC_CMD_ID_DTRNG_EVAL, 0u, &(crc)) 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)) 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 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.
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