23 #ifndef CRYPTO_CURVE15519_h
24 #define CRYPTO_CURVE15519_h
26 #include "BigNumberUtil.h"
32 static bool eval(uint8_t result[32],
const uint8_t s[32],
const uint8_t x[32]);
34 static void dh1(uint8_t k[32], uint8_t f[32]);
35 static bool dh2(uint8_t k[32], uint8_t f[32]);
37 #if defined(TEST_CURVE25519_FIELD_OPS)
42 static uint8_t isWeakPoint(
const uint8_t k[32]);
44 static void reduce(limb_t *result, limb_t *x, uint8_t size);
45 static limb_t reduceQuick(limb_t *x);
47 static void mul(limb_t *result,
const limb_t *x,
const limb_t *y);
48 static void square(limb_t *result,
const limb_t *x)
53 static void mulA24(limb_t *result,
const limb_t *x);
55 static void add(limb_t *result,
const limb_t *x,
const limb_t *y);
56 static void sub(limb_t *result,
const limb_t *x,
const limb_t *y);
58 static void cswap(uint8_t select, limb_t *x, limb_t *y);
60 static void recip(limb_t *result,
const limb_t *x);
62 static void unpack(limb_t *result,
const uint8_t *x);
63 static void pack(uint8_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.