nRF5 SDK v17.0.2
Modules | Data Structures | Macros | Typedefs | Functions
Elliptic Curve Digital Signature (ECDSA)

Provides elliptic curve cryptography functions for digital signature. More...

Modules

 Definitions specific to secp160r1 (NIST 160-bit)
 
 Definitions specific to secp160r2 (NIST 160-bit)
 
 Definitions specific to secp192r1 (NIST 192-bit)
 
 Definitions specific to secp224r1 (NIST 224-bit)
 
 Definitions specific to secp256r1 (NIST 256-bit)
 
 Definitions specific to secp384r1 (NIST 384-bit)
 
 Definitions specific to secp521r1 (NIST 521-bit)
 
 Definitions specific to secp160k1 (Koblitz 160-bit)
 
 Definitions specific to secp192k1 (Koblitz 192-bit)
 
 Definitions specific to secp224k1 (Koblitz 224-bit)
 
 Definitions specific to secp256k1 (Koblitz 256-bit)
 
 Definitions specific to bp256r1 (Brainpool 256-bit)
 
 Definitions specific to bp384r1 (Brainpool 384-bit)
 
 Definitions specific to bp512r1 (Brainpool 512-bit)
 
 Definitions specific to Curve25519
 

Data Structures

union  nrf_crypto_ecdsa_sign_context_t
 Union holding a context for ECDSA hash sign. More...
 
union  nrf_crypto_ecdsa_verify_context_t
 Union holding a context for ECDSA hash verify. More...
 

Macros

#define NRF_CRYPTO_ECDSA_SIGNATURE_MAX_SIZE   (2 * NRF_CRYPTO_ECC_RAW_PRIVATE_KEY_MAX_SIZE)
 Maximum size of a signature for all enabled curves.
 

Typedefs

typedef uint8_t nrf_crypto_ecdsa_signature_t [(2 *NRF_CRYPTO_BACKEND_ECC_RAW_PRIVATE_KEY_MAX_SIZE)]
 Type big enough to hold signature output for any curve type.
 

Functions

ret_code_t nrf_crypto_ecdsa_sign (nrf_crypto_ecdsa_sign_context_t *p_context, nrf_crypto_ecc_private_key_t const *p_private_key, uint8_t const *p_hash, size_t hash_size, uint8_t *p_signature, size_t *p_signature_size)
 Sign a hash of a message. More...
 
ret_code_t nrf_crypto_ecdsa_verify (nrf_crypto_ecdsa_verify_context_t *p_context, nrf_crypto_ecc_public_key_t const *p_public_key, uint8_t const *p_hash, size_t hash_size, uint8_t const *p_signature, size_t signature_size)
 Verify a signature using a hash of a message. More...
 

Detailed Description

Provides elliptic curve cryptography functions for digital signature.

Function Documentation

ret_code_t nrf_crypto_ecdsa_sign ( nrf_crypto_ecdsa_sign_context_t p_context,
nrf_crypto_ecc_private_key_t const *  p_private_key,
uint8_t const *  p_hash,
size_t  hash_size,
uint8_t *  p_signature,
size_t *  p_signature_size 
)

Sign a hash of a message.

Parameters
[in]p_contextPointer to temporary structure holding context information. If it is NULL, necessary data will be allocated with NRF_CRYPTO_ALLOC and freed at the end of the function.
[in]p_private_keyPointer to structure holding a private key.
[in]p_hashPointer to hash to sign.
[in]hash_sizeNumber of bytes in p_hash.
[out]p_signaturePointer to buffer where digital signature will be put.
[in,out]p_signature_sizeMaximum number of bytes that p_signature buffer can hold on input and the actual number of bytes used by the data on output. Actual size for selected curve is defined by the preprocessor definitions, e.g. NRF_CRYPTO_ECDSA_SECP256R1_SIGNATURE_SIZE.
ret_code_t nrf_crypto_ecdsa_verify ( nrf_crypto_ecdsa_verify_context_t p_context,
nrf_crypto_ecc_public_key_t const *  p_public_key,
uint8_t const *  p_hash,
size_t  hash_size,
uint8_t const *  p_signature,
size_t  signature_size 
)

Verify a signature using a hash of a message.

Parameters
[in]p_contextPointer to temporary structure holding context information. If it is NULL, necessary data will be allocated with NRF_CRYPTO_ALLOC and freed at the end of the function.
[in]p_public_keyPointer to structure holding a public key.
[in]p_hashPointer to hash to verify.
[in]hash_sizeNumber of bytes in p_hash.
[in]p_signaturePointer to buffer containing digital signature.
[in,out]signature_sizeNumber of bytes in p_signature.

Documentation feedback | Developer Zone | Subscribe | Updated