Clearmatics Libff  0.1
C++ library for Finite Fields and Elliptic Curves
ffi.h
Go to the documentation of this file.
1 #ifndef __LIBFF_FFI_FFI_H__
2 #define __LIBFF_FFI_FFI_H__
3 
4 #include <stddef.h>
5 
6 // Externally visible entry points for FFI implementations.
7 
8 #if __cplusplus
9 extern "C"
10 {
11 #endif
12 
13 // BLS12-377 entry points.
14 //
15 // Fr elements must be 32 bytes.
16 // G1 elements must be 96 bytes
17 // G2 elements must be 192 bytes
18 
19 bool bls12_377_init();
20 
21 bool bls12_377_g1_add(
22  const void *a_g1,
23  size_t a_g1_size,
24  const void *b_g1,
25  size_t b_g1_size,
26  void *out_g1,
27  size_t out_g1_size);
28 
29 bool bls12_377_g1_mul(
30  const void *p_g1,
31  size_t p_g1_size,
32  const void *s_fr,
33  size_t s_fr_size,
34  void *out_g1,
35  size_t out_g1_size);
36 
38  const void *a_g1,
39  size_t a_g1_size,
40  const void *b_g2,
41  size_t b_g2_size,
42  const void *c_g1,
43  size_t c_g1_size,
44  const void *d_g2,
45  size_t d_g2_size,
46  const void *e_g1,
47  size_t e_g1_size,
48  const void *f_g2,
49  size_t f_g2_size,
50  const void *g_g1,
51  size_t g_g1_size,
52  const void *h_g2,
53  size_t h_g2_size);
54 
55 // BW6-761 entry points
56 //
57 // Fr elements must be 48 bytes
58 // G1 elements must be 192 bytes
59 // G2 elements must be 192 bytes
60 
61 bool bw6_761_init();
62 
63 bool bw6_761_g1_add(
64  const void *a_g1,
65  size_t a_g1_size,
66  const void *b_g1,
67  size_t b_g1_size,
68  void *out_g1,
69  size_t out_g1_size);
70 
71 bool bw6_761_g1_mul(
72  const void *p_g1,
73  size_t p_g1_size,
74  const void *s_fr,
75  size_t s_fr_size,
76  void *out_g1,
77  size_t out_g1_size);
78 
79 bool bw6_761_pairing(
80  const void *a_g1,
81  size_t a_g1_size,
82  const void *b_g2,
83  size_t b_g2_size,
84  const void *c_g1,
85  size_t c_g1_size,
86  const void *d_g2,
87  size_t d_g2_size,
88  const void *e_g1,
89  size_t e_g1_size,
90  const void *f_g2,
91  size_t f_g2_size,
92  const void *g_g1,
93  size_t g_g1_size,
94  const void *h_g2,
95  size_t h_g2_size);
96 
97 #if __cplusplus
98 }
99 #endif
100 
101 #endif // __LIBFF_FFI_FFI_H__
bw6_761_pairing
bool bw6_761_pairing(const void *a_g1, size_t a_g1_size, const void *b_g2, size_t b_g2_size, const void *c_g1, size_t c_g1_size, const void *d_g2, size_t d_g2_size, const void *e_g1, size_t e_g1_size, const void *f_g2, size_t f_g2_size, const void *g_g1, size_t g_g1_size, const void *h_g2, size_t h_g2_size)
Definition: ffi.cpp:225
bw6_761_init
bool bw6_761_init()
Definition: ffi.cpp:194
bls12_377_g1_mul
bool bls12_377_g1_mul(const void *p_g1, size_t p_g1_size, const void *s_fr, size_t s_fr_size, void *out_g1, size_t out_g1_size)
Definition: ffi.cpp:142
bw6_761_g1_mul
bool bw6_761_g1_mul(const void *p_g1, size_t p_g1_size, const void *s_fr, size_t s_fr_size, void *out_g1, size_t out_g1_size)
Definition: ffi.cpp:212
bls12_377_init
bool bls12_377_init()
Definition: ffi.cpp:124
bls12_377_pairing
bool bls12_377_pairing(const void *a_g1, size_t a_g1_size, const void *b_g2, size_t b_g2_size, const void *c_g1, size_t c_g1_size, const void *d_g2, size_t d_g2_size, const void *e_g1, size_t e_g1_size, const void *f_g2, size_t f_g2_size, const void *g_g1, size_t g_g1_size, const void *h_g2, size_t h_g2_size)
Definition: ffi.cpp:155
bls12_377_g1_add
bool bls12_377_g1_add(const void *a_g1, size_t a_g1_size, const void *b_g1, size_t b_g1_size, void *out_g1, size_t out_g1_size)
Definition: ffi.cpp:130
bw6_761_g1_add
bool bw6_761_g1_add(const void *a_g1, size_t a_g1_size, const void *b_g1, size_t b_g1_size, void *out_g1, size_t out_g1_size)
Definition: ffi.cpp:200