26 #ifndef MCUXCLELS_ECC_H_ 27 #define MCUXCLELS_ECC_H_ 29 #include <mcuxClConfig.h> 60 #define MCUXCLELS_ECC_VALUE_HASHED ((uint32_t) 0u<< 0u) 61 #define MCUXCLELS_ECC_VALUE_NOT_HASHED ((uint32_t) 1u<< 0u) 62 #define MCUXCLELS_ECC_VALUE_RTF ((uint32_t) 1u<< 1u) 63 #define MCUXCLELS_ECC_VALUE_NO_RTF ((uint32_t) 0u<< 1u) 74 #define MCUXCLELS_KEYGEN_VALUE_SIGN_PUBLICKEY ((uint32_t) 1u<< 0u) 75 #define MCUXCLELS_KEYGEN_VALUE_TYPE_SIGN ((uint32_t) 0u<< 1u) 76 #define MCUXCLELS_KEYGEN_VALUE_TYPE_KEYEXCHANGE ((uint32_t) 1u<< 1u) 77 #define MCUXCLELS_KEYGEN_VALUE_DETERMINISTIC ((uint32_t) 0u<< 2u) 78 #define MCUXCLELS_KEYGEN_VALUE_RANDOM ((uint32_t) 1u<< 2u) 79 #define MCUXCLELS_KEYGEN_VALUE_GEN_PUB_KEY ((uint32_t) 0u<< 3u) 80 #define MCUXCLELS_KEYGEN_VALUE_NO_PUB_KEY ((uint32_t) 1u<< 3u) 81 #define MCUXCLELS_KEYGEN_VALUE_NO_RANDOM_DATA ((uint32_t) 0u<< 5u) 82 #define MCUXCLELS_KEYGEN_VALUE_USE_RANDOM_DATA ((uint32_t) 1u<< 5u) 93 #define MCUXCLELS_ECC_HASHED ((uint32_t) 0U) 94 #define MCUXCLELS_ECC_NOT_HASHED ((uint32_t) 1U) 96 #define MCUXCLELS_ECC_RTF ((uint32_t) 1U) 97 #define MCUXCLELS_ECC_NO_RTF ((uint32_t) 0U) 108 #define MCUXCLELS_ECC_PUBLICKEY_SIGN_ENABLE 1U 109 #define MCUXCLELS_ECC_PUBLICKEY_SIGN_DISABLE 0U 111 #define MCUXCLELS_ECC_OUTPUTKEY_SIGN 0U 112 #define MCUXCLELS_ECC_OUTPUTKEY_KEYEXCHANGE 1U 114 #define MCUXCLELS_ECC_OUTPUTKEY_DETERMINISTIC 0U 115 #define MCUXCLELS_ECC_OUTPUTKEY_RANDOM 1U 117 #define MCUXCLELS_ECC_GEN_PUBLIC_KEY 0U 118 #define MCUXCLELS_ECC_SKIP_PUBLIC_KEY 1U 121 #define MCUXCLELS_ECC_NO_RANDOM_DATA 0U 122 #define MCUXCLELS_ECC_INCLUDE_RANDOM_DATA 1U 134 #define MCUXCLELS_ECC_REVERSEFETCH_ENABLE (0x01U) 135 #define MCUXCLELS_ECC_REVERSEFETCH_DISABLE (0x00U) 137 #ifdef MCUXCL_FEATURE_ELS_PUK_INTERNAL_BIT 138 #define MCUXCLELS_ECC_EXTKEY_EXTERNAL (0x01U) 139 #define MCUXCLELS_ECC_EXTKEY_INTERNAL (0x00U) 151 #define MCUXCLELS_ECC_PUBLICKEY_SIZE ((size_t) 64U) 152 #define MCUXCLELS_ECC_SIGNATURE_SIZE ((size_t) 64U) 153 #define MCUXCLELS_ECC_SIGNATURE_R_SIZE ((size_t) 32U) 214 #ifdef MCUXCL_FEATURE_ELS_PUK_INTERNAL_BIT 325 uint8_t
const * pRandomData,
363 uint8_t
const * pPublicKey,
368 #ifdef MCUXCL_FEATURE_ELS_PUK_INTERNAL 447 uint8_t
const * pInputHash,
448 uint8_t
const * pInputMessage,
449 size_t inputMessageLength,
508 uint8_t
const * pInputHash,
509 uint8_t
const * pInputMessage,
510 size_t inputMessageLength,
511 uint8_t
const * pSignatureAndPubKey,
515 #ifdef MCUXCL_FEATURE_ELS_PUK_INTERNAL 572 uint8_t
const * pInputHash,
573 uint8_t
const * pInputMessage,
574 size_t inputMessageLength,
575 uint8_t
const * pSignature,
uint32_t kgsign
Define if signing the output public key.
Definition: mcuxClEls_Ecc.h:236
uint32_t mcuxClEls_Status_t
Type for ELS driver status codes.
Definition: mcuxClEls_Types.h:211
uint32_t kgsign_rnd
Define if using user provided random data for the signature.
Definition: mcuxClEls_Ecc.h:241
uint32_t kgtypedh
Define the usage of the output key.
Definition: mcuxClEls_Ecc.h:237
uint32_t extkey
This field is managed internally.
Definition: mcuxClEls_Ecc.h:261
uint8_t mcuxClEls_EccByte_t
Data type for ECC parameters in ELS format.
Definition: mcuxClEls_Ecc.h:177
uint32_t echashchl
Define type of input, plain message or hash of message.
Definition: mcuxClEls_Ecc.h:191
MCUXCLELS_API mcuxClEls_Status_t mcuxClEls_EccSign_Async(mcuxClEls_EccSignOption_t options, mcuxClEls_KeyIndex_t keyIdx, uint8_t const *pInputHash, uint8_t const *pInputMessage, size_t inputMessageLength, uint8_t *pOutput)
Generates an ECDSA signature of a given message.
Command option bit field for mcuxClEls_EccKeyExchange_Async, for internal use only.
Definition: mcuxClEls_Ecc.h:250
uint32_t value
Accesses the bit field as a full word; initialize with a combination of constants from MCUXCLELS_KEYG...
Definition: mcuxClEls_Ecc.h:232
Command option bit field for mcuxClEls_EccKeyGen_Async Bit field to configure mcuxClEls_EccKeyGenOpti...
Definition: mcuxClEls_Ecc.h:228
Command option bit field for mcuxClEls_EccVerify_Async Bit field to configure mcuxClEls_EccVerifyOpti...
Definition: mcuxClEls_Ecc.h:203
Command option bit field for mcuxClEls_EccSign_Async Bit field to configure mcuxClEls_EccSign_Async.
Definition: mcuxClEls_Ecc.h:183
MCUXCLELS_API mcuxClEls_Status_t mcuxClEls_EccKeyExchange_Async(mcuxClEls_KeyIndex_t privateKeyIdx, uint8_t const *pPublicKey, mcuxClEls_KeyIndex_t sharedSecretIdx, mcuxClEls_KeyProp_t sharedSecretProperties)
Performs a Diffie-Hellman key exchange with an internal ECC private key and an external ECC public ke...
Type for ELS key store key properties.
Definition: mcuxClEls_Types.h:224
MCUXCLELS_API mcuxClEls_Status_t mcuxClEls_EccVerify_Async(mcuxClEls_EccVerifyOption_t options, uint8_t const *pInputHash, uint8_t const *pInputMessage, size_t inputMessageLength, uint8_t const *pSignatureAndPubKey, uint8_t *pOutput)
Verifies an ECDSA signature of a given message.
uint32_t revf
This field is managed internally.
Definition: mcuxClEls_Ecc.h:259
MCUXCLELS_API mcuxClEls_Status_t mcuxClEls_EccKeyGen_Async(mcuxClEls_EccKeyGenOption_t options, mcuxClEls_KeyIndex_t signingKeyIdx, mcuxClEls_KeyIndex_t privateKeyIdx, mcuxClEls_KeyProp_t generatedKeyProperties, uint8_t const *pRandomData, uint8_t *pPublicKey)
Generates an ECC key pair on the NIST P-256 curve.
uint32_t kgsrc
Define if the output key is deterministic or random.
Definition: mcuxClEls_Ecc.h:238
ELS header for common functionality.
uint32_t value
Accesses the bit field as a full word.
Definition: mcuxClEls_Ecc.h:254
#define MCUXCLELS_API
Marks a function as a public API function of the mcuxClEls component.
Definition: mcuxClEls_Common.h:47
uint32_t revf
This field is managed internally.
Definition: mcuxClEls_Ecc.h:240
uint32_t value
Access the bit field as a full word; initialize with a combination of constants from MCUXCLELS_ECC (S...
Definition: mcuxClEls_Ecc.h:207
uint32_t skip_pbk
Define if generating a public key.
Definition: mcuxClEls_Ecc.h:239
uint32_t revf
This field is managed internally.
Definition: mcuxClEls_Ecc.h:194
uint32_t revf
This field is managed internally.
Definition: mcuxClEls_Ecc.h:213
uint32_t echashchl
Define type of input, plain message or hash of message.
Definition: mcuxClEls_Ecc.h:211
uint32_t signrtf
Define if signing the Run-Time Fingerprint.
Definition: mcuxClEls_Ecc.h:192
uint32_t value
Access the bit field as a full word; initialize with a combination of constants from MCUXCLELS_ECC (S...
Definition: mcuxClEls_Ecc.h:187
#define MCUX_CSSL_FP_FUNCTION_DECL(...)
Declaration of a flow protected function.
Definition: mcuxCsslFlowProtection.h:125
uint32_t mcuxClEls_KeyIndex_t
Type for ELS keystore indices.
Definition: mcuxClEls_Types.h:221
#define MCUX_CSSL_FP_PROTECTED_TYPE(resultType)
Based on a given base type, builds a return type with flow protection.
Definition: mcuxCsslFlowProtection.h:81