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