ndn-lite
Functions | Variables
tc_ecc_dh.c File Reference
#include "tc_constants.h"
#include "tc_ecc.h"
#include "tc_ecc_dh.h"
#include <string.h>

Functions

int tc_uECC_make_key_with_d (uint8_t *public_key, uint8_t *private_key, unsigned int *d, tc_uECC_Curve curve)
 
int tc_uECC_make_key (uint8_t *public_key, uint8_t *private_key, tc_uECC_Curve curve)
 Create a public/private key pair. More...
 
int tc_uECC_shared_secret (const uint8_t *public_key, const uint8_t *private_key, uint8_t *secret, tc_uECC_Curve curve)
 Compute a shared secret given your secret key and someone else's public key. More...
 

Variables

static tc_uECC_RNG_Function g_rng_function = 0
 

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_make_key_with_d()

int tc_uECC_make_key_with_d ( uint8_t *  public_key,
uint8_t *  private_key,
unsigned int *  d,
tc_uECC_Curve  curve 
)

◆ 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.

Variable Documentation

◆ g_rng_function

tc_uECC_RNG_Function g_rng_function = 0
static