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

Macros

#define EVEN(vli)   (!(vli[0] & 1))
 

Functions

void tc_uECC_set_rng (tc_uECC_RNG_Function rng_function)
 
tc_uECC_RNG_Function tc_uECC_get_rng (void)
 
int tc_uECC_curve_private_key_size (tc_uECC_Curve curve)
 
int tc_uECC_curve_public_key_size (tc_uECC_Curve curve)
 
void tc_uECC_vli_clear (tc_uECC_word_t *vli, wordcount_t num_words)
 
tc_uECC_word_t tc_uECC_vli_isZero (const tc_uECC_word_t *vli, wordcount_t num_words)
 
tc_uECC_word_t tc_uECC_vli_testBit (const tc_uECC_word_t *vli, bitcount_t bit)
 
static wordcount_t vli_numDigits (const tc_uECC_word_t *vli, const wordcount_t max_words)
 
bitcount_t tc_uECC_vli_numBits (const tc_uECC_word_t *vli, const wordcount_t max_words)
 
void tc_uECC_vli_set (tc_uECC_word_t *dest, const tc_uECC_word_t *src, wordcount_t num_words)
 
cmpresult_t tc_uECC_vli_cmp_unsafe (const tc_uECC_word_t *left, const tc_uECC_word_t *right, wordcount_t num_words)
 
tc_uECC_word_t tc_uECC_vli_equal (const tc_uECC_word_t *left, const tc_uECC_word_t *right, wordcount_t num_words)
 
tc_uECC_word_t cond_set (tc_uECC_word_t p_true, tc_uECC_word_t p_false, unsigned int cond)
 
tc_uECC_word_t tc_uECC_vli_sub (tc_uECC_word_t *result, const tc_uECC_word_t *left, const tc_uECC_word_t *right, wordcount_t num_words)
 
static tc_uECC_word_t tc_uECC_vli_add (tc_uECC_word_t *result, const tc_uECC_word_t *left, const tc_uECC_word_t *right, wordcount_t num_words)
 
cmpresult_t tc_uECC_vli_cmp (const tc_uECC_word_t *left, const tc_uECC_word_t *right, wordcount_t num_words)
 
static void tc_uECC_vli_rshift1 (tc_uECC_word_t *vli, wordcount_t num_words)
 
static void muladd (tc_uECC_word_t a, tc_uECC_word_t b, tc_uECC_word_t *r0, tc_uECC_word_t *r1, tc_uECC_word_t *r2)
 
static void tc_uECC_vli_mult (tc_uECC_word_t *result, const tc_uECC_word_t *left, const tc_uECC_word_t *right, wordcount_t num_words)
 
void tc_uECC_vli_modAdd (tc_uECC_word_t *result, const tc_uECC_word_t *left, const tc_uECC_word_t *right, const tc_uECC_word_t *mod, wordcount_t num_words)
 
void tc_uECC_vli_modSub (tc_uECC_word_t *result, const tc_uECC_word_t *left, const tc_uECC_word_t *right, const tc_uECC_word_t *mod, wordcount_t num_words)
 
void tc_uECC_vli_mmod (tc_uECC_word_t *result, tc_uECC_word_t *product, const tc_uECC_word_t *mod, wordcount_t num_words)
 
void tc_uECC_vli_modMult (tc_uECC_word_t *result, const tc_uECC_word_t *left, const tc_uECC_word_t *right, const tc_uECC_word_t *mod, wordcount_t num_words)
 
void tc_uECC_vli_modMult_fast (tc_uECC_word_t *result, const tc_uECC_word_t *left, const tc_uECC_word_t *right, tc_uECC_Curve curve)
 
static void tc_uECC_vli_modSquare_fast (tc_uECC_word_t *result, const tc_uECC_word_t *left, tc_uECC_Curve curve)
 
static void vli_modInv_update (tc_uECC_word_t *uv, const tc_uECC_word_t *mod, wordcount_t num_words)
 
void tc_uECC_vli_modInv (tc_uECC_word_t *result, const tc_uECC_word_t *input, const tc_uECC_word_t *mod, wordcount_t num_words)
 
void double_jacobian_default (tc_uECC_word_t *X1, tc_uECC_word_t *Y1, tc_uECC_word_t *Z1, tc_uECC_Curve curve)
 
void x_side_default (tc_uECC_word_t *result, const tc_uECC_word_t *x, tc_uECC_Curve curve)
 
tc_uECC_Curve tc_uECC_secp256r1 (void)
 
void vli_mmod_fast_secp256r1 (unsigned int *result, unsigned int *product)
 
tc_uECC_word_t EccPoint_isZero (const tc_uECC_word_t *point, tc_uECC_Curve curve)
 
void apply_z (tc_uECC_word_t *X1, tc_uECC_word_t *Y1, const tc_uECC_word_t *const Z, tc_uECC_Curve curve)
 
static void XYcZ_initial_double (tc_uECC_word_t *X1, tc_uECC_word_t *Y1, tc_uECC_word_t *X2, tc_uECC_word_t *Y2, const tc_uECC_word_t *const initial_Z, tc_uECC_Curve curve)
 
void XYcZ_add (tc_uECC_word_t *X1, tc_uECC_word_t *Y1, tc_uECC_word_t *X2, tc_uECC_word_t *Y2, tc_uECC_Curve curve)
 
static void XYcZ_addC (tc_uECC_word_t *X1, tc_uECC_word_t *Y1, tc_uECC_word_t *X2, tc_uECC_word_t *Y2, tc_uECC_Curve curve)
 
void EccPoint_mult (tc_uECC_word_t *result, const tc_uECC_word_t *point, const tc_uECC_word_t *scalar, const tc_uECC_word_t *initial_Z, bitcount_t num_bits, tc_uECC_Curve curve)
 
tc_uECC_word_t regularize_k (const tc_uECC_word_t *const k, tc_uECC_word_t *k0, tc_uECC_word_t *k1, tc_uECC_Curve curve)
 
tc_uECC_word_t EccPoint_compute_public_key (tc_uECC_word_t *result, tc_uECC_word_t *private_key, tc_uECC_Curve curve)
 
void tc_uECC_vli_nativeToBytes (uint8_t *bytes, int num_bytes, const unsigned int *native)
 
void tc_uECC_vli_bytesToNative (unsigned int *native, const uint8_t *bytes, int num_bytes)
 
int tc_uECC_generate_random_int (tc_uECC_word_t *random, const tc_uECC_word_t *top, wordcount_t num_words)
 
int tc_uECC_valid_point (const tc_uECC_word_t *point, tc_uECC_Curve curve)
 
int tc_uECC_valid_public_key (const uint8_t *public_key, tc_uECC_Curve curve)
 
int tc_uECC_compute_public_key (const uint8_t *private_key, uint8_t *public_key, tc_uECC_Curve curve)
 

Variables

static tc_uECC_RNG_Function g_rng_function = 0
 

Macro Definition Documentation

◆ EVEN

#define EVEN (   vli)    (!(vli[0] & 1))

Function Documentation

◆ apply_z()

void apply_z ( tc_uECC_word_t X1,
tc_uECC_word_t Y1,
const tc_uECC_word_t *const  Z,
tc_uECC_Curve  curve 
)

◆ cond_set()

tc_uECC_word_t cond_set ( tc_uECC_word_t  p_true,
tc_uECC_word_t  p_false,
unsigned int  cond 
)

◆ double_jacobian_default()

void double_jacobian_default ( tc_uECC_word_t X1,
tc_uECC_word_t Y1,
tc_uECC_word_t Z1,
tc_uECC_Curve  curve 
)

◆ EccPoint_compute_public_key()

tc_uECC_word_t EccPoint_compute_public_key ( tc_uECC_word_t result,
tc_uECC_word_t private_key,
tc_uECC_Curve  curve 
)

◆ EccPoint_isZero()

tc_uECC_word_t EccPoint_isZero ( const tc_uECC_word_t point,
tc_uECC_Curve  curve 
)

◆ EccPoint_mult()

void EccPoint_mult ( tc_uECC_word_t result,
const tc_uECC_word_t point,
const tc_uECC_word_t scalar,
const tc_uECC_word_t initial_Z,
bitcount_t  num_bits,
tc_uECC_Curve  curve 
)

◆ muladd()

static void muladd ( tc_uECC_word_t  a,
tc_uECC_word_t  b,
tc_uECC_word_t r0,
tc_uECC_word_t r1,
tc_uECC_word_t r2 
)
static

◆ regularize_k()

tc_uECC_word_t regularize_k ( const tc_uECC_word_t *const  k,
tc_uECC_word_t k0,
tc_uECC_word_t k1,
tc_uECC_Curve  curve 
)

◆ tc_uECC_compute_public_key()

int tc_uECC_compute_public_key ( const uint8_t *  private_key,
uint8_t *  public_key,
tc_uECC_Curve  curve 
)

◆ tc_uECC_curve_private_key_size()

int tc_uECC_curve_private_key_size ( tc_uECC_Curve  curve)

◆ tc_uECC_curve_public_key_size()

int tc_uECC_curve_public_key_size ( tc_uECC_Curve  curve)

◆ tc_uECC_generate_random_int()

int tc_uECC_generate_random_int ( tc_uECC_word_t random,
const tc_uECC_word_t top,
wordcount_t  num_words 
)

◆ tc_uECC_get_rng()

tc_uECC_RNG_Function tc_uECC_get_rng ( void  )

◆ tc_uECC_secp256r1()

tc_uECC_Curve tc_uECC_secp256r1 ( void  )

◆ tc_uECC_set_rng()

void tc_uECC_set_rng ( tc_uECC_RNG_Function  rng_function)

◆ tc_uECC_valid_point()

int tc_uECC_valid_point ( const tc_uECC_word_t point,
tc_uECC_Curve  curve 
)

◆ tc_uECC_valid_public_key()

int tc_uECC_valid_public_key ( const uint8_t *  public_key,
tc_uECC_Curve  curve 
)

◆ tc_uECC_vli_add()

static tc_uECC_word_t tc_uECC_vli_add ( tc_uECC_word_t result,
const tc_uECC_word_t left,
const tc_uECC_word_t right,
wordcount_t  num_words 
)
static

◆ tc_uECC_vli_bytesToNative()

void tc_uECC_vli_bytesToNative ( unsigned int *  native,
const uint8_t *  bytes,
int  num_bytes 
)

◆ tc_uECC_vli_clear()

void tc_uECC_vli_clear ( tc_uECC_word_t vli,
wordcount_t  num_words 
)

◆ tc_uECC_vli_cmp()

cmpresult_t tc_uECC_vli_cmp ( const tc_uECC_word_t left,
const tc_uECC_word_t right,
wordcount_t  num_words 
)

◆ tc_uECC_vli_cmp_unsafe()

cmpresult_t tc_uECC_vli_cmp_unsafe ( const tc_uECC_word_t left,
const tc_uECC_word_t right,
wordcount_t  num_words 
)

◆ tc_uECC_vli_equal()

tc_uECC_word_t tc_uECC_vli_equal ( const tc_uECC_word_t left,
const tc_uECC_word_t right,
wordcount_t  num_words 
)

◆ tc_uECC_vli_isZero()

tc_uECC_word_t tc_uECC_vli_isZero ( const tc_uECC_word_t vli,
wordcount_t  num_words 
)

◆ tc_uECC_vli_mmod()

void tc_uECC_vli_mmod ( tc_uECC_word_t result,
tc_uECC_word_t product,
const tc_uECC_word_t mod,
wordcount_t  num_words 
)

◆ tc_uECC_vli_modAdd()

void tc_uECC_vli_modAdd ( tc_uECC_word_t result,
const tc_uECC_word_t left,
const tc_uECC_word_t right,
const tc_uECC_word_t mod,
wordcount_t  num_words 
)

◆ tc_uECC_vli_modInv()

void tc_uECC_vli_modInv ( tc_uECC_word_t result,
const tc_uECC_word_t input,
const tc_uECC_word_t mod,
wordcount_t  num_words 
)

◆ tc_uECC_vli_modMult()

void tc_uECC_vli_modMult ( tc_uECC_word_t result,
const tc_uECC_word_t left,
const tc_uECC_word_t right,
const tc_uECC_word_t mod,
wordcount_t  num_words 
)

◆ tc_uECC_vli_modMult_fast()

void tc_uECC_vli_modMult_fast ( tc_uECC_word_t result,
const tc_uECC_word_t left,
const tc_uECC_word_t right,
tc_uECC_Curve  curve 
)

◆ tc_uECC_vli_modSquare_fast()

static void tc_uECC_vli_modSquare_fast ( tc_uECC_word_t result,
const tc_uECC_word_t left,
tc_uECC_Curve  curve 
)
static

◆ tc_uECC_vli_modSub()

void tc_uECC_vli_modSub ( tc_uECC_word_t result,
const tc_uECC_word_t left,
const tc_uECC_word_t right,
const tc_uECC_word_t mod,
wordcount_t  num_words 
)

◆ tc_uECC_vli_mult()

static void tc_uECC_vli_mult ( tc_uECC_word_t result,
const tc_uECC_word_t left,
const tc_uECC_word_t right,
wordcount_t  num_words 
)
static

◆ tc_uECC_vli_nativeToBytes()

void tc_uECC_vli_nativeToBytes ( uint8_t *  bytes,
int  num_bytes,
const unsigned int *  native 
)

◆ tc_uECC_vli_numBits()

bitcount_t tc_uECC_vli_numBits ( const tc_uECC_word_t vli,
const wordcount_t  max_words 
)

◆ tc_uECC_vli_rshift1()

static void tc_uECC_vli_rshift1 ( tc_uECC_word_t vli,
wordcount_t  num_words 
)
static

◆ tc_uECC_vli_set()

void tc_uECC_vli_set ( tc_uECC_word_t dest,
const tc_uECC_word_t src,
wordcount_t  num_words 
)

◆ tc_uECC_vli_sub()

tc_uECC_word_t tc_uECC_vli_sub ( tc_uECC_word_t result,
const tc_uECC_word_t left,
const tc_uECC_word_t right,
wordcount_t  num_words 
)

◆ tc_uECC_vli_testBit()

tc_uECC_word_t tc_uECC_vli_testBit ( const tc_uECC_word_t vli,
bitcount_t  bit 
)

◆ vli_mmod_fast_secp256r1()

void vli_mmod_fast_secp256r1 ( unsigned int *  result,
unsigned int *  product 
)

◆ vli_modInv_update()

static void vli_modInv_update ( tc_uECC_word_t uv,
const tc_uECC_word_t mod,
wordcount_t  num_words 
)
static

◆ vli_numDigits()

static wordcount_t vli_numDigits ( const tc_uECC_word_t vli,
const wordcount_t  max_words 
)
static

◆ x_side_default()

void x_side_default ( tc_uECC_word_t result,
const tc_uECC_word_t x,
tc_uECC_Curve  curve 
)

◆ XYcZ_add()

void XYcZ_add ( tc_uECC_word_t X1,
tc_uECC_word_t Y1,
tc_uECC_word_t X2,
tc_uECC_word_t Y2,
tc_uECC_Curve  curve 
)

◆ XYcZ_addC()

static void XYcZ_addC ( tc_uECC_word_t X1,
tc_uECC_word_t Y1,
tc_uECC_word_t X2,
tc_uECC_word_t Y2,
tc_uECC_Curve  curve 
)
static

◆ XYcZ_initial_double()

static void XYcZ_initial_double ( tc_uECC_word_t X1,
tc_uECC_word_t Y1,
tc_uECC_word_t X2,
tc_uECC_word_t Y2,
const tc_uECC_word_t *const  initial_Z,
tc_uECC_Curve  curve 
)
static

Variable Documentation

◆ g_rng_function

tc_uECC_RNG_Function g_rng_function = 0
static