ndn-lite
Functions
tc_ecc_dh.h File Reference

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

#include "tc_ecc.h"

Go to the source code of this file.

Functions

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

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

◆ tc_uECC_make_key()

int tc_uECC_make_key ( uint8_t *  p_public_key,
uint8_t *  p_private_key,
tc_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 tc_uECC_set_rng()) before calling tc_uECC_make_key().

◆ tc_uECC_shared_secret()

int tc_uECC_shared_secret ( const uint8_t *  p_public_key,
const uint8_t *  p_private_key,
uint8_t *  p_secret,
tc_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 tc_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.