diff options
Diffstat (limited to 'sc25519.h')
-rw-r--r-- | sc25519.h | 80 |
1 files changed, 80 insertions, 0 deletions
diff --git a/sc25519.h b/sc25519.h new file mode 100644 index 000000000..a2c15d5ff --- /dev/null +++ b/sc25519.h | |||
@@ -0,0 +1,80 @@ | |||
1 | /* $OpenBSD: sc25519.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/sc25519.h | ||
7 | */ | ||
8 | |||
9 | #ifndef SC25519_H | ||
10 | #define SC25519_H | ||
11 | |||
12 | #include "crypto_api.h" | ||
13 | |||
14 | #define sc25519 crypto_sign_ed25519_ref_sc25519 | ||
15 | #define shortsc25519 crypto_sign_ed25519_ref_shortsc25519 | ||
16 | #define sc25519_from32bytes crypto_sign_ed25519_ref_sc25519_from32bytes | ||
17 | #define shortsc25519_from16bytes crypto_sign_ed25519_ref_shortsc25519_from16bytes | ||
18 | #define sc25519_from64bytes crypto_sign_ed25519_ref_sc25519_from64bytes | ||
19 | #define sc25519_from_shortsc crypto_sign_ed25519_ref_sc25519_from_shortsc | ||
20 | #define sc25519_to32bytes crypto_sign_ed25519_ref_sc25519_to32bytes | ||
21 | #define sc25519_iszero_vartime crypto_sign_ed25519_ref_sc25519_iszero_vartime | ||
22 | #define sc25519_isshort_vartime crypto_sign_ed25519_ref_sc25519_isshort_vartime | ||
23 | #define sc25519_lt_vartime crypto_sign_ed25519_ref_sc25519_lt_vartime | ||
24 | #define sc25519_add crypto_sign_ed25519_ref_sc25519_add | ||
25 | #define sc25519_sub_nored crypto_sign_ed25519_ref_sc25519_sub_nored | ||
26 | #define sc25519_mul crypto_sign_ed25519_ref_sc25519_mul | ||
27 | #define sc25519_mul_shortsc crypto_sign_ed25519_ref_sc25519_mul_shortsc | ||
28 | #define sc25519_window3 crypto_sign_ed25519_ref_sc25519_window3 | ||
29 | #define sc25519_window5 crypto_sign_ed25519_ref_sc25519_window5 | ||
30 | #define sc25519_2interleave2 crypto_sign_ed25519_ref_sc25519_2interleave2 | ||
31 | |||
32 | typedef struct | ||
33 | { | ||
34 | crypto_uint32 v[32]; | ||
35 | } | ||
36 | sc25519; | ||
37 | |||
38 | typedef struct | ||
39 | { | ||
40 | crypto_uint32 v[16]; | ||
41 | } | ||
42 | shortsc25519; | ||
43 | |||
44 | void sc25519_from32bytes(sc25519 *r, const unsigned char x[32]); | ||
45 | |||
46 | void shortsc25519_from16bytes(shortsc25519 *r, const unsigned char x[16]); | ||
47 | |||
48 | void sc25519_from64bytes(sc25519 *r, const unsigned char x[64]); | ||
49 | |||
50 | void sc25519_from_shortsc(sc25519 *r, const shortsc25519 *x); | ||
51 | |||
52 | void sc25519_to32bytes(unsigned char r[32], const sc25519 *x); | ||
53 | |||
54 | int sc25519_iszero_vartime(const sc25519 *x); | ||
55 | |||
56 | int sc25519_isshort_vartime(const sc25519 *x); | ||
57 | |||
58 | int sc25519_lt_vartime(const sc25519 *x, const sc25519 *y); | ||
59 | |||
60 | void sc25519_add(sc25519 *r, const sc25519 *x, const sc25519 *y); | ||
61 | |||
62 | void sc25519_sub_nored(sc25519 *r, const sc25519 *x, const sc25519 *y); | ||
63 | |||
64 | void sc25519_mul(sc25519 *r, const sc25519 *x, const sc25519 *y); | ||
65 | |||
66 | void sc25519_mul_shortsc(sc25519 *r, const sc25519 *x, const shortsc25519 *y); | ||
67 | |||
68 | /* Convert s into a representation of the form \sum_{i=0}^{84}r[i]2^3 | ||
69 | * with r[i] in {-4,...,3} | ||
70 | */ | ||
71 | void sc25519_window3(signed char r[85], const sc25519 *s); | ||
72 | |||
73 | /* Convert s into a representation of the form \sum_{i=0}^{50}r[i]2^5 | ||
74 | * with r[i] in {-16,...,15} | ||
75 | */ | ||
76 | void sc25519_window5(signed char r[51], const sc25519 *s); | ||
77 | |||
78 | void sc25519_2interleave2(unsigned char r[127], const sc25519 *s1, const sc25519 *s2); | ||
79 | |||
80 | #endif | ||