26#ifndef MCUXCLELS_TYPES_H_
27#define MCUXCLELS_TYPES_H_
31#include <mcuxClConfig.h>
50#define MCUXCLELS_KEY_SLOTS (20U)
57#define MCUXCLELS_KEYPROPERTY_VALUE_KEY_SIZE_128 ((uint32_t) 0u<< 0u)
58#define MCUXCLELS_KEYPROPERTY_VALUE_KEY_SIZE_256 ((uint32_t) 1u<< 0u)
59#ifdef MCUXCL_FEATURE_ELS_PUK_INTERNAL
60#define MCUXCLELS_KEYPROPERTY_VALUE_KEY_SIZE_512 ((uint32_t) 3u<< 0u)
62#define MCUXCLELS_KEYPROPERTY_VALUE_ACTIVE ((uint32_t) 1u<< 5u)
63#define MCUXCLELS_KEYPROPERTY_VALUE_BASE_SLOT ((uint32_t) 1u<< 6u)
64#define MCUXCLELS_KEYPROPERTY_VALUE_GENERAL_PURPOSE_SLOT ((uint32_t) 1u<< 7u)
65#define MCUXCLELS_KEYPROPERTY_VALUE_RETENTION_SLOT ((uint32_t) 1u<< 8u)
66#define MCUXCLELS_KEYPROPERTY_VALUE_HW_OUT_SLOT ((uint32_t) 1u<< 9u)
67#ifdef MCUXCL_FEATURE_ELS_PUK_INTERNAL
68#define MCUXCLELS_KEYPROPERTY_VALUE_PUK ((uint32_t) 1u<<11u)
69#define MCUXCLELS_KEYPROPERTY_VALUE_TECDH ((uint32_t) 1u<<12u)
71#define MCUXCLELS_KEYPROPERTY_VALUE_CMAC ((uint32_t) 1u<<13u)
72#define MCUXCLELS_KEYPROPERTY_VALUE_KSK ((uint32_t) 1u<<14u)
73#define MCUXCLELS_KEYPROPERTY_VALUE_RTF ((uint32_t) 1u<<15u)
74#define MCUXCLELS_KEYPROPERTY_VALUE_CKDF ((uint32_t) 1u<<16u)
75#define MCUXCLELS_KEYPROPERTY_VALUE_HKDF ((uint32_t) 1u<<17u)
76#define MCUXCLELS_KEYPROPERTY_VALUE_ECSGN ((uint32_t) 1u<<18u)
77#define MCUXCLELS_KEYPROPERTY_VALUE_ECDH ((uint32_t) 1u<<19u)
78#define MCUXCLELS_KEYPROPERTY_VALUE_AES ((uint32_t) 1u<<20u)
79#define MCUXCLELS_KEYPROPERTY_VALUE_HMAC ((uint32_t) 1u<<21u)
80#define MCUXCLELS_KEYPROPERTY_VALUE_KWK ((uint32_t) 1u<<22u)
81#define MCUXCLELS_KEYPROPERTY_VALUE_KUOK ((uint32_t) 1u<<23u)
82#define MCUXCLELS_KEYPROPERTY_VALUE_TLS_PREMASTER_SECRET ((uint32_t) 1u<<24u)
83#define MCUXCLELS_KEYPROPERTY_VALUE_TLS_MASTER_SECRET ((uint32_t) 1u<<25u)
84#define MCUXCLELS_KEYPROPERTY_VALUE_KGSRC ((uint32_t) 1u<<26u)
85#define MCUXCLELS_KEYPROPERTY_VALUE_HW_OUT ((uint32_t) 1u<<27u)
86#define MCUXCLELS_KEYPROPERTY_VALUE_WRPOK ((uint32_t) 1u<<28u)
87#define MCUXCLELS_KEYPROPERTY_VALUE_DUK ((uint32_t) 1u<<29u)
88#define MCUXCLELS_KEYPROPERTY_VALUE_PRIVILEGED ((uint32_t) 1u<<30u)
89#define MCUXCLELS_KEYPROPERTY_VALUE_NOTPRIVILEGED ((uint32_t) 0u<<30u)
90#define MCUXCLELS_KEYPROPERTY_VALUE_SECURE ((uint32_t) 0u<<31u)
91#define MCUXCLELS_KEYPROPERTY_VALUE_NOTSECURE ((uint32_t) 1u<<31u)
101#define MCUXCLELS_KEYPROPERTY_KEY_SIZE_128 (0U)
102#define MCUXCLELS_KEYPROPERTY_KEY_SIZE_256 (1U)
103#ifdef MCUXCL_FEATURE_ELS_PUK_INTERNAL
104#define MCUXCLELS_KEYPROPERTY_KEY_SIZE_512 (3U)
106#define MCUXCLELS_KEYPROPERTY_ACTIVE_TRUE (1U)
107#define MCUXCLELS_KEYPROPERTY_ACTIVE_FALSE (0U)
108#define MCUXCLELS_KEYPROPERTY_BASE_SLOT (1U)
109#define MCUXCLELS_KEYPROPERTY_SECOND_SLOT (0U)
110#define MCUXCLELS_KEYPROPERTY_GENERAL_PURPOSE_SLOT_TRUE (1U)
111#define MCUXCLELS_KEYPROPERTY_GENERAL_PURPOSE_SLOT_FALSE (0U)
112#define MCUXCLELS_KEYPROPERTY_RETENTION_SLOT_TRUE (1U)
113#define MCUXCLELS_KEYPROPERTY_RETENTION_SLOT_FALSE (0U)
114#define MCUXCLELS_KEYPROPERTY_HW_OUT_SLOT_TRUE (1U)
115#define MCUXCLELS_KEYPROPERTY_HW_OUT_SLOT_FALSE (0U)
116#ifdef MCUXCL_FEATURE_ELS_PUK_INTERNAL
117#define MCUXCLELS_KEYPROPERTY_PUK_TRUE (1U)
118#define MCUXCLELS_KEYPROPERTY_PUK_FALSE (0U)
119#define MCUXCLELS_KEYPROPERTY_TECDH_TRUE (1U)
120#define MCUXCLELS_KEYPROPERTY_TECDH_FALSE (0U)
122#define MCUXCLELS_KEYPROPERTY_CMAC_TRUE (1U)
123#define MCUXCLELS_KEYPROPERTY_CMAC_FALSE (0U)
124#define MCUXCLELS_KEYPROPERTY_KSK_TRUE (1U)
125#define MCUXCLELS_KEYPROPERTY_KSK_FALSE (0U)
126#define MCUXCLELS_KEYPROPERTY_RTF_TRUE (1U)
127#define MCUXCLELS_KEYPROPERTY_RTF_FALSE (0U)
128#define MCUXCLELS_KEYPROPERTY_CKDF_TRUE (1U)
129#define MCUXCLELS_KEYPROPERTY_CKDF_FALSE (0U)
130#define MCUXCLELS_KEYPROPERTY_HKDF_TRUE (1U)
131#define MCUXCLELS_KEYPROPERTY_HKDF_FALSE (0U)
132#define MCUXCLELS_KEYPROPERTY_ECC_TRUE (1U)
133#define MCUXCLELS_KEYPROPERTY_ECC_FALSE (0U)
134#define MCUXCLELS_KEYPROPERTY_ECC_DH_PRIVATE_TRUE (1U)
135#define MCUXCLELS_KEYPROPERTY_ECC_DH_PRIVATE_FALSE (0U)
136#define MCUXCLELS_KEYPROPERTY_AES_TRUE (1U)
137#define MCUXCLELS_KEYPROPERTY_AES_FALSE (0U)
138#define MCUXCLELS_KEYPROPERTY_HMAC_TRUE (1U)
139#define MCUXCLELS_KEYPROPERTY_HMAC_FALSE (0U)
140#define MCUXCLELS_KEYPROPERTY_KWK_TRUE (1U)
141#define MCUXCLELS_KEYPROPERTY_KWK_FALSE (0U)
142#define MCUXCLELS_KEYPROPERTY_KUOK_TRUE (1U)
143#define MCUXCLELS_KEYPROPERTY_KUOK_FALSE (0U)
144#define MCUXCLELS_KEYPROPERTY_TLS_PREMASTER_SECRET_TRUE (1U)
145#define MCUXCLELS_KEYPROPERTY_TLS_PREMASTER_SECRET_FALSE (0U)
146#define MCUXCLELS_KEYPROPERTY_TLS_MASTER_SECRET_TRUE (1U)
147#define MCUXCLELS_KEYPROPERTY_TLS_MASTER_SECRET_FALSE (0U)
148#define MCUXCLELS_KEYPROPERTY_INPUT_FOR_ECC_TRUE (1U)
149#define MCUXCLELS_KEYPROPERTY_INPUT_FOR_ECC_FALSE (0U)
150#define MCUXCLELS_KEYPROPERTY_HW_OUT_TRUE (1U)
151#define MCUXCLELS_KEYPROPERTY_HW_OUT_FALSE (0U)
152#define MCUXCLELS_KEYPROPERTY_WRAP_TRUE (1U)
153#define MCUXCLELS_KEYPROPERTY_WRAP_FALSE (0U)
154#define MCUXCLELS_KEYPROPERTY_DEVICE_UNIQUE_TRUE (1U)
155#define MCUXCLELS_KEYPROPERTY_DEVICE_UNIQUE_FALSE (0U)
156#define MCUXCLELS_KEYPROPERTY_PRIVILEGED_TRUE (1U)
157#define MCUXCLELS_KEYPROPERTY_PRIVILEGED_FALSE (0U)
158#define MCUXCLELS_KEYPROPERTY_SECURE_TRUE (0U)
159#define MCUXCLELS_KEYPROPERTY_SECURE_FALSE (1U)
171#define MCUXCLELS_STATUS_OK ((mcuxClEls_Status_t) 0x05552E03u)
172#define MCUXCLELS_STATUS_OK_WAIT ((mcuxClEls_Status_t) 0x05552E07u)
173#define MCUXCLELS_STATUS_HW_FAULT ((mcuxClEls_Status_t) 0x05555330u)
174#define MCUXCLELS_STATUS_HW_ALGORITHM ((mcuxClEls_Status_t) 0x05555334u)
175#define MCUXCLELS_STATUS_HW_OPERATIONAL ((mcuxClEls_Status_t) 0x05555338u)
176#define MCUXCLELS_STATUS_HW_BUS ((mcuxClEls_Status_t) 0x0555533Cu)
177#define MCUXCLELS_STATUS_HW_INTEGRITY ((mcuxClEls_Status_t) 0x05555370u)
178#define MCUXCLELS_STATUS_HW_PRNG ((mcuxClEls_Status_t) 0x05555374u)
179#define MCUXCLELS_STATUS_HW_DTRNG ((mcuxClEls_Status_t) 0x05555378u)
180#define MCUXCLELS_STATUS_SW_FAULT ((mcuxClEls_Status_t) 0x0555F0F0u)
181#define MCUXCLELS_STATUS_SW_CANNOT_INTERRUPT ((mcuxClEls_Status_t) 0x055553B0u)
182#define MCUXCLELS_STATUS_SW_INVALID_PARAM ((mcuxClEls_Status_t) 0x055553F8u)
183#define MCUXCLELS_STATUS_SW_INVALID_STATE ((mcuxClEls_Status_t) 0x055553B8u)
184#define MCUXCLELS_STATUS_SW_COUNTER_EXPIRED ((mcuxClEls_Status_t) 0x055553BCu)
185#define MCUXCLELS_STATUS_SW_COMPARISON_FAILED ((mcuxClEls_Status_t) 0x05558930u)
186#ifdef MCUXCL_FEATURE_ELS_LOCKING
187#define MCUXCLELS_STATUS_SW_LOCKING_FAILED ((mcuxClEls_Status_t) 0x055553F4u)
188#define MCUXCLELS_STATUS_SW_STATUS_LOCKED ((mcuxClEls_Status_t) 0x05552E0Bu)
192#define MCUXCLELS_STATUS_IS_HW_ERROR(x_) ((((mcuxClEls_Status_t) (x_)) & 0x0000FF00U) == 0x0000E100U)
194#define MCUXCLELS_STATUS_IS_SW_ERROR(x_) ((((mcuxClEls_Status_t) (x_)) & 0x0000FF00U) == 0x0000F000U)
233#ifdef MCUXCL_FEATURE_ELS_PUK_INTERNAL
245#ifdef MCUXCL_FEATURE_ELS_PUK_INTERNAL
275#define utlpsms utlspms
291 uint32_t
volatile * pDestRegister,
292 uint8_t
const * pSource,
Header providing mapping for legacy function/definition names (with CSS)
Provides the API for the CSSL flow protection mechanism.
uint32_t mcuxClEls_Status_t
Type for ELS driver status codes.
Definition mcuxClEls_Types.h:212
uint32_t mcuxClEls_KeyIndex_t
Type for ELS keystore indices.
Definition mcuxClEls_Types.h:222
mcuxClEls_Status_t mcuxClEls_Status_Protected_t
Deprecated type for ELS driver protected status codes.
Definition mcuxClEls_Types.h:217
mcuxClEls_Status_t(* mcuxClEls_TransferToRegisterFunction_t)(uint32_t volatile *pDestRegister, uint8_t const *pSource, size_t sourceLength, void *pCallerData)
Function type for transfer of data to a memory-mapped register.
Definition mcuxClEls_Types.h:290
#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 for ELS key store key properties.
Definition mcuxClEls_Types.h:226
uint32_t ukwk
Usage permission for key wrapping.
Definition mcuxClEls_Types.h:261
uint32_t uhwo
Usage permission in a hardware-out key slot.
Definition mcuxClEls_Types.h:266
uint32_t fhwo
Hardware feature flag: Hardware-out key slot.
Definition mcuxClEls_Types.h:244
uint32_t upprot_sec
Access restriction to TrustZone secure mode.
Definition mcuxClEls_Types.h:270
uint32_t uaes
Usage permission for AES.
Definition mcuxClEls_Types.h:259
uint32_t uksk
Usage permission for key signing.
Definition mcuxClEls_Types.h:253
uint32_t utlspms
Usage permission as a TLS premaster secret.
Definition mcuxClEls_Types.h:263
uint32_t urtf
Usage permission for RTF signing.
Definition mcuxClEls_Types.h:254
uint32_t uckdf
Usage permission for CKDF.
Definition mcuxClEls_Types.h:255
uint32_t ksize
Key size.
Definition mcuxClEls_Types.h:237
uint32_t upprot_priv
Access restriction to privileged mode.
Definition mcuxClEls_Types.h:269
uint32_t utlsms
Usage permission as a TLS master secret.
Definition mcuxClEls_Types.h:264
uint32_t frtn
Hardware feature flag: Retention key slot.
Definition mcuxClEls_Types.h:243
uint32_t wrpok
Usage permission to wrap.
Definition mcuxClEls_Types.h:267
uint32_t uhkdf
Usage permission for HKDF.
Definition mcuxClEls_Types.h:256
uint32_t ukuok
Usage permission for key unwrapping, but not for key wrapping.
Definition mcuxClEls_Types.h:262
uint32_t duk
Device-unique key flag.
Definition mcuxClEls_Types.h:268
uint32_t ukgsrc
Usage permission as input for ECC key generation.
Definition mcuxClEls_Types.h:265
uint32_t kbase
Status flag to indicate whether the key slot is a base slot or the second slot of a 256-bit key.
Definition mcuxClEls_Types.h:241
uint32_t ucmac
Usage permission for CMAC.
Definition mcuxClEls_Types.h:252
uint32_t kactv
Status flag to indicate whether the key slot contains an active key or not.
Definition mcuxClEls_Types.h:240
uint32_t uecsg
Usage permission for ECDSA signing.
Definition mcuxClEls_Types.h:257
uint32_t uhmac
Usage permission for HMAC.
Definition mcuxClEls_Types.h:260
uint32_t value
Accesses the bit field as a full word; initialize with a combination of constants from MCUXCLELS_KEYP...
Definition mcuxClEls_Types.h:229
uint32_t uecdh
Usage permission for Elliptic Curve Diffie-Hellman.
Definition mcuxClEls_Types.h:258
uint32_t fgp
Hardware feature flag: General purpose key slot.
Definition mcuxClEls_Types.h:242