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