1 | #ifndef SC25519_H |
---|
2 | #define SC25519_H |
---|
3 | |
---|
4 | #include "crypto_int32.h" |
---|
5 | #include "crypto_uint32.h" |
---|
6 | |
---|
7 | #define sc25519 crypto_sign_ed25519_ref_sc25519 |
---|
8 | #define shortsc25519 crypto_sign_ed25519_ref_shortsc25519 |
---|
9 | #define sc25519_from32bytes crypto_sign_ed25519_ref_sc25519_from32bytes |
---|
10 | #define shortsc25519_from16bytes crypto_sign_ed25519_ref_shortsc25519_from16bytes |
---|
11 | #define sc25519_from64bytes crypto_sign_ed25519_ref_sc25519_from64bytes |
---|
12 | #define sc25519_from_shortsc crypto_sign_ed25519_ref_sc25519_from_shortsc |
---|
13 | #define sc25519_to32bytes crypto_sign_ed25519_ref_sc25519_to32bytes |
---|
14 | #define sc25519_iszero_vartime crypto_sign_ed25519_ref_sc25519_iszero_vartime |
---|
15 | #define sc25519_isshort_vartime crypto_sign_ed25519_ref_sc25519_isshort_vartime |
---|
16 | #define sc25519_lt_vartime crypto_sign_ed25519_ref_sc25519_lt_vartime |
---|
17 | #define sc25519_add crypto_sign_ed25519_ref_sc25519_add |
---|
18 | #define sc25519_sub_nored crypto_sign_ed25519_ref_sc25519_sub_nored |
---|
19 | #define sc25519_mul crypto_sign_ed25519_ref_sc25519_mul |
---|
20 | #define sc25519_mul_shortsc crypto_sign_ed25519_ref_sc25519_mul_shortsc |
---|
21 | #define sc25519_window3 crypto_sign_ed25519_ref_sc25519_window3 |
---|
22 | #define sc25519_window5 crypto_sign_ed25519_ref_sc25519_window5 |
---|
23 | #define sc25519_2interleave2 crypto_sign_ed25519_ref_sc25519_2interleave2 |
---|
24 | |
---|
25 | typedef struct |
---|
26 | { |
---|
27 | crypto_uint32 v[32]; |
---|
28 | } |
---|
29 | sc25519; |
---|
30 | |
---|
31 | typedef struct |
---|
32 | { |
---|
33 | crypto_uint32 v[16]; |
---|
34 | } |
---|
35 | shortsc25519; |
---|
36 | |
---|
37 | void sc25519_from32bytes(sc25519 *r, const unsigned char x[32]); |
---|
38 | |
---|
39 | void shortsc25519_from16bytes(shortsc25519 *r, const unsigned char x[16]); |
---|
40 | |
---|
41 | void sc25519_from64bytes(sc25519 *r, const unsigned char x[64]); |
---|
42 | |
---|
43 | void sc25519_from_shortsc(sc25519 *r, const shortsc25519 *x); |
---|
44 | |
---|
45 | void sc25519_to32bytes(unsigned char r[32], const sc25519 *x); |
---|
46 | |
---|
47 | int sc25519_iszero_vartime(const sc25519 *x); |
---|
48 | |
---|
49 | int sc25519_isshort_vartime(const sc25519 *x); |
---|
50 | |
---|
51 | int sc25519_lt_vartime(const sc25519 *x, const sc25519 *y); |
---|
52 | |
---|
53 | void sc25519_add(sc25519 *r, const sc25519 *x, const sc25519 *y); |
---|
54 | |
---|
55 | void sc25519_sub_nored(sc25519 *r, const sc25519 *x, const sc25519 *y); |
---|
56 | |
---|
57 | void sc25519_mul(sc25519 *r, const sc25519 *x, const sc25519 *y); |
---|
58 | |
---|
59 | void sc25519_mul_shortsc(sc25519 *r, const sc25519 *x, const shortsc25519 *y); |
---|
60 | |
---|
61 | /* Convert s into a representation of the form \sum_{i=0}^{84}r[i]2^3 |
---|
62 | * with r[i] in {-4,...,3} |
---|
63 | */ |
---|
64 | void sc25519_window3(signed char r[85], const sc25519 *s); |
---|
65 | |
---|
66 | /* Convert s into a representation of the form \sum_{i=0}^{50}r[i]2^5 |
---|
67 | * with r[i] in {-16,...,15} |
---|
68 | */ |
---|
69 | void sc25519_window5(signed char r[51], const sc25519 *s); |
---|
70 | |
---|
71 | void sc25519_2interleave2(unsigned char r[127], const sc25519 *s1, const sc25519 *s2); |
---|
72 | |
---|
73 | #endif |
---|