23 #ifndef CRYPTO_CURVE25519_h
24 #define CRYPTO_CURVE25519_h
26 #include "BigNumberUtil.h"
31 static bool eval(uint8_t result[32],
const uint8_t s[32],
const uint8_t x[32]);
33 static void dh1(uint8_t k[32], uint8_t f[32]);
34 static bool dh2(uint8_t k[32], uint8_t f[32]);
36 #if defined(TEST_CURVE25519_FIELD_OPS)
41 static uint8_t isWeakPoint(
const uint8_t k[32]);
43 static void reduce(limb_t *result, limb_t *x, uint8_t size);
44 static limb_t reduceQuick(limb_t *x);
46 static void mul(limb_t *result,
const limb_t *x,
const limb_t *y);
47 static void square(limb_t *result,
const limb_t *x)
52 static void mulA24(limb_t *result,
const limb_t *x);
54 static void add(limb_t *result,
const limb_t *x,
const limb_t *y);
55 static void sub(limb_t *result,
const limb_t *x,
const limb_t *y);
57 static void cswap(uint8_t select, limb_t *x, limb_t *y);
59 static void recip(limb_t *result,
const limb_t *x);
Diffie-Hellman key agreement based on the elliptic curve modulo 2^255 - 19.
static bool eval(uint8_t result[32], const uint8_t s[32], const uint8_t x[32])
Evaluates the raw Curve25519 function.
static void dh1(uint8_t k[32], uint8_t f[32])
Performs phase 1 of a Diffie-Hellman key exchange using Curve25519.
static bool dh2(uint8_t k[32], uint8_t f[32])
Performs phase 2 of a Diffie-Hellman key exchange using Curve25519.