1 /******************************************************************************* 2 3 D language bindings for libsodium's crypto_core_ristretto255.h 4 5 License: ISC (see LICENSE.txt) 6 7 *******************************************************************************/ 8 9 module libsodium.crypto_core_ristretto255; 10 11 @nogc nothrow: 12 13 import libsodium.export_; 14 15 extern (C): 16 17 enum crypto_core_ristretto255_BYTES = 32; 18 size_t crypto_core_ristretto255_bytes (); 19 20 enum crypto_core_ristretto255_HASHBYTES = 64; 21 size_t crypto_core_ristretto255_hashbytes (); 22 23 enum crypto_core_ristretto255_SCALARBYTES = 32; 24 size_t crypto_core_ristretto255_scalarbytes (); 25 26 enum crypto_core_ristretto255_NONREDUCEDSCALARBYTES = 64; 27 size_t crypto_core_ristretto255_nonreducedscalarbytes (); 28 29 int crypto_core_ristretto255_is_valid_point (const(ubyte)* p); 30 31 int crypto_core_ristretto255_add (ubyte* r, const(ubyte)* p, const(ubyte)* q); 32 33 int crypto_core_ristretto255_sub (ubyte* r, const(ubyte)* p, const(ubyte)* q); 34 35 int crypto_core_ristretto255_from_hash (ubyte* p, const(ubyte)* r); 36 37 void crypto_core_ristretto255_random (ubyte* p); 38 39 void crypto_core_ristretto255_scalar_random (ubyte* r); 40 41 int crypto_core_ristretto255_scalar_invert (ubyte* recip, const(ubyte)* s); 42 43 void crypto_core_ristretto255_scalar_negate (ubyte* neg, const(ubyte)* s); 44 45 void crypto_core_ristretto255_scalar_complement (ubyte* comp, const(ubyte)* s); 46 47 void crypto_core_ristretto255_scalar_add ( 48 ubyte* z, 49 const(ubyte)* x, 50 const(ubyte)* y); 51 52 void crypto_core_ristretto255_scalar_sub ( 53 ubyte* z, 54 const(ubyte)* x, 55 const(ubyte)* y); 56 57 void crypto_core_ristretto255_scalar_mul ( 58 ubyte* z, 59 const(ubyte)* x, 60 const(ubyte)* y); 61 62 /* 63 * The interval `s` is sampled from should be at least 317 bits to ensure almost 64 * uniformity of `r` over `L`. 65 */ 66 void crypto_core_ristretto255_scalar_reduce (ubyte* r, const(ubyte)* s); 67