NimBLE-Arduino 2.1.2
Loading...
Searching...
No Matches
ecc_dh.h File Reference

– Interface to EC-DH implementation. More...

Go to the source code of this file.

Functions

int uECC_make_key (uint8_t *p_public_key, uint8_t *p_private_key, uECC_Curve curve)
 Create a public/private key pair.
 
int uECC_shared_secret (const uint8_t *p_public_key, const uint8_t *p_private_key, uint8_t *p_secret, uECC_Curve curve)
 Compute a shared secret given your secret key and someone else's public key.
 

Detailed Description

– Interface to EC-DH implementation.

Overview: This software is an implementation of EC-DH. This implementation uses curve NIST p-256.

Security: The curve NIST p-256 provides approximately 128 bits of security.

Function Documentation

◆ uECC_make_key()

int uECC_make_key ( uint8_t *  p_public_key,
uint8_t *  p_private_key,
uECC_Curve  curve 
)

Create a public/private key pair.

Returns
returns TC_CRYPTO_SUCCESS (1) if the key pair was generated successfully returns TC_CRYPTO_FAIL (0) if error while generating key pair
Parameters
p_public_keyOUT – Will be filled in with the public key. Must be at least 2 * the curve size (in bytes) long. For curve secp256r1, p_public_key must be 64 bytes long.
p_private_keyOUT – Will be filled in with the private key. Must be as long as the curve order (for secp256r1, p_private_key must be 32 bytes long).
Note
side-channel countermeasure: algorithm strengthened against timing attack.
Warning
A cryptographically-secure PRNG function must be set (using uECC_set_rng()) before calling uECC_make_key().

◆ uECC_shared_secret()

int uECC_shared_secret ( const uint8_t *  p_public_key,
const uint8_t *  p_private_key,
uint8_t *  p_secret,
uECC_Curve  curve 
)

Compute a shared secret given your secret key and someone else's public key.

Returns
returns TC_CRYPTO_SUCCESS (1) if the shared secret was computed successfully returns TC_CRYPTO_FAIL (0) otherwise
Parameters
p_secretOUT – Will be filled in with the shared secret value. Must be the same size as the curve size (for curve secp256r1, secret must be 32 bytes long.
p_public_keyIN – The public key of the remote party.
p_private_keyIN – Your private key.
Warning
It is recommended to use the output of uECC_shared_secret() as the input of a recommended Key Derivation Function (see NIST SP 800-108) in order to produce a cryptographically secure symmetric key.