libsodium (1.0.19)
1 #ifndef crypto_core_ristretto255_H
2 #define crypto_core_ristretto255_H
3
4 #include <stddef.h>
5 #include "export.h"
6
7 #ifdef __cplusplus
8 extern "C" {
9 #endif
10
11 #define crypto_core_ristretto255_BYTES 32
12 SODIUM_EXPORT
13 size_t crypto_core_ristretto255_bytes(void);
14
15 #define crypto_core_ristretto255_HASHBYTES 64
16 SODIUM_EXPORT
17 size_t crypto_core_ristretto255_hashbytes(void);
18
19 #define crypto_core_ristretto255_SCALARBYTES 32
20 SODIUM_EXPORT
21 size_t crypto_core_ristretto255_scalarbytes(void);
22
23 #define crypto_core_ristretto255_NONREDUCEDSCALARBYTES 64
24 SODIUM_EXPORT
25 size_t crypto_core_ristretto255_nonreducedscalarbytes(void);
26
27 SODIUM_EXPORT
28 int crypto_core_ristretto255_is_valid_point(const unsigned char *p)
29 __attribute__ ((nonnull));
30
31 SODIUM_EXPORT
32 int crypto_core_ristretto255_add(unsigned char *r,
33 const unsigned char *p, const unsigned char *q)
34 __attribute__ ((nonnull));
35
36 SODIUM_EXPORT
37 int crypto_core_ristretto255_sub(unsigned char *r,
38 const unsigned char *p, const unsigned char *q)
39 __attribute__ ((nonnull));
40
41 SODIUM_EXPORT
42 int crypto_core_ristretto255_from_hash(unsigned char *p,
43 const unsigned char *r)
44 __attribute__ ((nonnull));
45
46 SODIUM_EXPORT
47 void crypto_core_ristretto255_random(unsigned char *p)
48 __attribute__ ((nonnull));
49
50 SODIUM_EXPORT
51 void crypto_core_ristretto255_scalar_random(unsigned char *r)
52 __attribute__ ((nonnull));
53
54 SODIUM_EXPORT
55 int crypto_core_ristretto255_scalar_invert(unsigned char *recip,
56 const unsigned char *s)
57 __attribute__ ((nonnull));
58
59 SODIUM_EXPORT
60 void crypto_core_ristretto255_scalar_negate(unsigned char *neg,
61 const unsigned char *s)
62 __attribute__ ((nonnull));
63
64 SODIUM_EXPORT
65 void crypto_core_ristretto255_scalar_complement(unsigned char *comp,
66 const unsigned char *s)
67 __attribute__ ((nonnull));
68
69 SODIUM_EXPORT
70 void crypto_core_ristretto255_scalar_add(unsigned char *z,
71 const unsigned char *x,
72 const unsigned char *y)
73 __attribute__ ((nonnull));
74
75 SODIUM_EXPORT
76 void crypto_core_ristretto255_scalar_sub(unsigned char *z,
77 const unsigned char *x,
78 const unsigned char *y)
79 __attribute__ ((nonnull));
80
81 SODIUM_EXPORT
82 void crypto_core_ristretto255_scalar_mul(unsigned char *z,
83 const unsigned char *x,
84 const unsigned char *y)
85 __attribute__ ((nonnull));
86
87 /*
88 * The interval `s` is sampled from should be at least 317 bits to ensure almost
89 * uniformity of `r` over `L`.
90 */
91 SODIUM_EXPORT
92 void crypto_core_ristretto255_scalar_reduce(unsigned char *r,
93 const unsigned char *s)
94 __attribute__ ((nonnull));
95
96 #ifdef __cplusplus
97 }
98 #endif
99
100 #endif