Use for \n
[gnuk/gnuk.git] / src / bn.h
1 #define BN256_WORDS 8
2 typedef struct bn256 {
3   uint32_t word[ BN256_WORDS ]; /* Little endian */
4 } bn256;
5
6 #define BN512_WORDS 16
7 typedef struct bn512 {
8   uint32_t word[ BN512_WORDS ]; /* Little endian */
9 } bn512;
10
11 uint32_t bn256_add (bn256 *X, const bn256 *A, const bn256 *B);
12 uint32_t bn256_sub (bn256 *X, const bn256 *A, const bn256 *B);
13 uint32_t bn256_add_uint (bn256 *X, const bn256 *A, uint32_t w);
14 uint32_t bn256_sub_uint (bn256 *X, const bn256 *A, uint32_t w);
15
16 void bn256_mul (bn512 *X, const bn256 *A, const bn256 *B);
17 void bn256_sqr (bn512 *X, const bn256 *A);
18 uint32_t bn256_shift (bn256 *X, const bn256 *A, int shift);
19 int bn256_is_zero (const bn256 *X);
20 int bn256_is_even (const bn256 *X);
21 int bn256_is_ge (const bn256 *A, const bn256 *B);
22 int bn256_cmp (const bn256 *A, const bn256 *B);
23 void bn256_random (bn256 *X);