| 1 |
/* $OpenBSD: fe25519.h,v 1.3 2013/12/09 11:03:45 markus Exp $ */ |
| 2 |
|
| 3 |
/* |
| 4 |
* Public Domain, Authors: Daniel J. Bernstein, Niels Duif, Tanja Lange, |
| 5 |
* Peter Schwabe, Bo-Yin Yang. |
| 6 |
* Copied from supercop-20130419/crypto_sign/ed25519/ref/fe25519.h |
| 7 |
*/ |
| 8 |
|
| 9 |
#ifndef FE25519_H |
| 10 |
#define FE25519_H |
| 11 |
|
| 12 |
#include "ed25519_crypto_api.h" |
| 13 |
|
| 14 |
#define fe25519 crypto_sign_ed25519_ref_fe25519 |
| 15 |
#define fe25519_freeze crypto_sign_ed25519_ref_fe25519_freeze |
| 16 |
#define fe25519_unpack crypto_sign_ed25519_ref_fe25519_unpack |
| 17 |
#define fe25519_pack crypto_sign_ed25519_ref_fe25519_pack |
| 18 |
#define fe25519_iszero crypto_sign_ed25519_ref_fe25519_iszero |
| 19 |
#define fe25519_iseq_vartime crypto_sign_ed25519_ref_fe25519_iseq_vartime |
| 20 |
#define fe25519_cmov crypto_sign_ed25519_ref_fe25519_cmov |
| 21 |
#define fe25519_setone crypto_sign_ed25519_ref_fe25519_setone |
| 22 |
#define fe25519_setzero crypto_sign_ed25519_ref_fe25519_setzero |
| 23 |
#define fe25519_neg crypto_sign_ed25519_ref_fe25519_neg |
| 24 |
#define fe25519_getparity crypto_sign_ed25519_ref_fe25519_getparity |
| 25 |
#define fe25519_add crypto_sign_ed25519_ref_fe25519_add |
| 26 |
#define fe25519_sub crypto_sign_ed25519_ref_fe25519_sub |
| 27 |
#define fe25519_mul crypto_sign_ed25519_ref_fe25519_mul |
| 28 |
#define fe25519_square crypto_sign_ed25519_ref_fe25519_square |
| 29 |
#define fe25519_invert crypto_sign_ed25519_ref_fe25519_invert |
| 30 |
#define fe25519_pow2523 crypto_sign_ed25519_ref_fe25519_pow2523 |
| 31 |
|
| 32 |
typedef struct |
| 33 |
{ |
| 34 |
crypto_uint32 v[32]; |
| 35 |
} |
| 36 |
fe25519; |
| 37 |
|
| 38 |
void fe25519_freeze(fe25519 *r); |
| 39 |
|
| 40 |
void fe25519_unpack(fe25519 *r, const unsigned char x[32]); |
| 41 |
|
| 42 |
void fe25519_pack(unsigned char r[32], const fe25519 *x); |
| 43 |
|
| 44 |
int fe25519_iszero(const fe25519 *x); |
| 45 |
|
| 46 |
int fe25519_iseq_vartime(const fe25519 *x, const fe25519 *y); |
| 47 |
|
| 48 |
void fe25519_cmov(fe25519 *r, const fe25519 *x, unsigned char b); |
| 49 |
|
| 50 |
void fe25519_setone(fe25519 *r); |
| 51 |
|
| 52 |
void fe25519_setzero(fe25519 *r); |
| 53 |
|
| 54 |
void fe25519_neg(fe25519 *r, const fe25519 *x); |
| 55 |
|
| 56 |
unsigned char fe25519_getparity(const fe25519 *x); |
| 57 |
|
| 58 |
void fe25519_add(fe25519 *r, const fe25519 *x, const fe25519 *y); |
| 59 |
|
| 60 |
void fe25519_sub(fe25519 *r, const fe25519 *x, const fe25519 *y); |
| 61 |
|
| 62 |
void fe25519_mul(fe25519 *r, const fe25519 *x, const fe25519 *y); |
| 63 |
|
| 64 |
void fe25519_square(fe25519 *r, const fe25519 *x); |
| 65 |
|
| 66 |
void fe25519_invert(fe25519 *r, const fe25519 *x); |
| 67 |
|
| 68 |
void fe25519_pow2523(fe25519 *r, const fe25519 *x); |
| 69 |
|
| 70 |
#endif |