Defines all functions of mcuxClEls_Ecc. More...
Functions | |
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. More... | |
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 key. More... | |
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. More... | |
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. More... | |
Defines all functions of mcuxClEls_Ecc.
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.
Before execution, ELS will wait until mcuxClEls_HwState_t.drbgentlvl == MCUXCLELS_STATUS_DRBGENTLVL_HIGH. This can lead to a delay if the DRBG is in a state with less security strength at the time of the call.
Call mcuxClEls_WaitForOperation to complete the operation. The public key will be stored in the standard ANSI X9.62 byte order (big-endian).
[in] | options | The command options. For more information, see mcuxClEls_EccKeyGenOption_t. |
[in] | signingKeyIdx | The index of the key to sign the generated public key. |
[in] | privateKeyIdx | Output key index. |
[in] | generatedKeyProperties | The desired key properties of the generated key. |
[in] | pRandomData | Random data provided by the user. |
[out] | pPublicKey | Pointer to the memory area which receives the public key and optionally the key signature. |
options.kgsign
== MCUXCLELS_ECC_PUBLICKEY_SIGN_DISABLE signingKeyIdx
is ignored. options.kgsrc
== MCUXCLELS_ECC_OUTPUTKEY_DETERMINISTIC privateKeyIdx
also defines the key index of the source key material. The source key material will be overwritten by the output public key. options.kgsign_rnd
== MCUXCLELS_ECC_NO_RANDOM_DATA pRandomData
is ignored. pPublicKey
must be aligned on a 4-byte boundary. MCUXCLELS_STATUS_SW_INVALID_PARAM | if invalid parameters were specified |
MCUXCLELS_STATUS_SW_CANNOT_INTERRUPT | if a running operation prevented the request |
MCUXCLELS_STATUS_OK_WAIT | on successful request |
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 key.
Before execution, ELS will wait until mcuxClEls_HwState_t.drbgentlvl == MCUXCLELS_STATUS_DRBGENTLVL_LOW. This can lead to a delay if the DRBG is in a state with less security strength at the time of the call.
Call mcuxClEls_WaitForOperation to complete the operation. The public key must be stored in the standard ANSI X9.62 byte order (big-endian).
[in] | privateKeyIdx | The private key index. |
[in] | pPublicKey | Pointer to the public key of a third party. |
[in] | sharedSecretIdx | The index in the ELS keystore that receives the shared secret that is generated by the ECDH operation. |
[in] | sharedSecretProperties | The desired key properties of the shared secret. |
pPublicKey
MCUXCLELS_STATUS_SW_INVALID_PARAM | if invalid parameters were specified |
MCUXCLELS_STATUS_SW_CANNOT_INTERRUPT | if a running operation prevented the request |
MCUXCLELS_STATUS_OK_WAIT | on successful request |
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.
The curve is NIST P-256. The message hash, must be stored in the standard ANSI X9.62 format. If the message is provided in plain, no prior conversion is necessary. The signature will be stored in the standard ANSI X9.62 byte order (big-endian).
Before execution, ELS will wait until mcuxClEls_HwState_t.drbgentlvl == MCUXCLELS_STATUS_DRBGENTLVL_HIGH. This can lead to a delay if the DRBG is in a state with less security strength at the time of the call.
Call mcuxClEls_WaitForOperation to complete the operation.
[in] | options | The command options. For more information, see mcuxClEls_EccSignOption_t. |
[in] | keyIdx | The private key index. |
[in] | pInputHash | The hash of the message to sign in X9.62 format. |
[in] | pInputMessage | The message to sign. |
[in] | inputMessageLength | Size of pInputMessage in bytes. |
[out] | pOutput | Pointer to the memory area which receives the generated signature in X9.62 format. (64 bytes) |
options.echashchl
== MCUXCLELS_ECC_HASHED pInputHash
is used, and it must be aligned on a 4-byte boundary. pInputMessage
is ignored. options.echashchl
== MCUXCLELS_ECC_NOT_HASHED pInputHash
is ignored. pInputMessage
and inputMessageLength
are used. pOptput
must be aligned on a 4-byte boundary. MCUXCLELS_STATUS_SW_INVALID_PARAM | if invalid parameters were specified |
MCUXCLELS_STATUS_SW_CANNOT_INTERRUPT | if a running operation prevented the request |
MCUXCLELS_STATUS_OK_WAIT | on successful request |
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.
The curve is NIST P-256. The message hash, must be stored in the standard ANSI X9.62 format. If the message is provided in plain, no prior conversion is necessary. The signature and public key must be stored in the standard ANSI X9.62 byte order (big-endian).
Before execution, ELS will wait until mcuxClEls_HwState_t.drbgentlvl == MCUXCLELS_STATUS_DRBGENTLVL_LOW. This can lead to a delay if the DRBG is in a state with less security strength at the time of the call.
Call mcuxClEls_WaitForOperation to complete the operation.
[in] | options | The command options. For more information, see mcuxClEls_EccVerifyOption_t. |
[in] | pInputHash | The hash of the signed message in X9.62 format. |
[in] | pInputMessage | The message to sign. |
[in] | inputMessageLength | Size of pInputMessage in bytes. |
[in] | pSignatureAndPubKey | Pointer to the memory area which contains the concatenation of the signature and the public key. |
[out] | pOutput | Pointer to the memory area which will receive the recalculated value of the R component in case of a successful signature verification. |
options.echashchl
== MCUXCLELS_ECC_HASHED pInputHash
is used, and it must be aligned on a 4-byte boundary. pInputMessage
is ignored. options.echashchl
== MCUXCLELS_ECC_NOT_HASHED pInputHash
is ignored. pInputMessage
and inputMessageLength
are used. pSignatureAndPubKey
pOutput
pSignatureAndPublicKey
. MCUXCLELS_STATUS_SW_INVALID_PARAM | if invalid parameters were specified |
MCUXCLELS_STATUS_SW_CANNOT_INTERRUPT | if a running operation prevented the request |
MCUXCLELS_STATUS_OK_WAIT | on successful request |