1 /* 2 Written in the D programming language. 3 For git maintenance (ensure at least one congruent line with originating C header): 4 #define crypto_core_ristretto255_H 5 */ 6 7 module deimos.sodium.crypto_core_ristretto255; 8 9 version(SODIUM_LIBRARY_MINIMAL) {} 10 else { 11 12 13 extern(C) @nogc nothrow /*pure*/ : 14 15 16 enum crypto_core_ristretto255_BYTES = 32U; 17 18 size_t crypto_core_ristretto255_bytes() @trusted; 19 20 enum crypto_core_ristretto255_HASHBYTES = 64U; 21 22 size_t crypto_core_ristretto255_hashbytes() @trusted; 23 24 enum crypto_core_ristretto255_SCALARBYTES = 32U; 25 26 size_t crypto_core_ristretto255_scalarbytes() @trusted; 27 28 enum crypto_core_ristretto255_NONREDUCEDSCALARBYTES = 64U; 29 30 size_t crypto_core_ristretto255_nonreducedscalarbytes() @trusted; 31 32 int crypto_core_ristretto255_is_valid_point(const(ubyte)* p); // __attribute__ ((nonnull)); 33 34 int crypto_core_ristretto255_add(ubyte* r, 35 const(ubyte)* p, const(ubyte)* q); // __attribute__ ((nonnull)); 36 37 int crypto_core_ristretto255_sub(ubyte* r, 38 const(ubyte)* p, const(ubyte)* q); // __attribute__ ((nonnull)); 39 40 int crypto_core_ristretto255_from_hash(ubyte* p, 41 const(ubyte)* r); // __attribute__ ((nonnull)); 42 43 void crypto_core_ristretto255_random(ubyte* p); // __attribute__ ((nonnull)); 44 45 void crypto_core_ristretto255_scalar_random(ubyte* r); // __attribute__ ((nonnull)); 46 47 int crypto_core_ristretto255_scalar_invert(ubyte* recip, 48 const(ubyte)* s); // __attribute__ ((nonnull)); 49 50 void crypto_core_ristretto255_scalar_negate(ubyte* neg, 51 const(ubyte)* s); // __attribute__ ((nonnull)); 52 53 void crypto_core_ristretto255_scalar_complement(ubyte* comp, 54 const(ubyte)* s); // __attribute__ ((nonnull)); 55 56 void crypto_core_ristretto255_scalar_add(ubyte* z, 57 const(ubyte)* x, 58 const(ubyte)* y); // __attribute__ ((nonnull)); 59 60 void crypto_core_ristretto255_scalar_sub(ubyte* z, 61 const(ubyte)* x, 62 const(ubyte)* y); // __attribute__ ((nonnull)); 63 64 void crypto_core_ristretto255_scalar_mul(ubyte* z, 65 const(ubyte)* x, 66 const(ubyte)* y); // __attribute__ ((nonnull)); 67 68 /* 69 * The interval `s` is sampled from should be at least 317 bits to ensure almost 70 * uniformity of `r` over `L`. 71 */ 72 void crypto_core_ristretto255_scalar_reduce(ubyte* r, 73 const(ubyte)* s); // __attribute__ ((nonnull)); 74 75 }