ABY Framework  1.0
Arithmetic Bool Yao Framework
 All Classes Files Functions Variables Enumerations Enumerator Macros
pk-crypto.h
Go to the documentation of this file.
1 
19 #ifndef PK_CRYPTO_H_
20 #define PK_CRYPTO_H_
21 
22 #include "../typedefs.h"
23 #include "../constants.h"
24 
25 class pk_crypto;
26 class num;
27 class fe;
28 class brickexp;
29 
30 class pk_crypto {
31 public:
32  pk_crypto(seclvl sp, uint8_t* seed) {
33  }
34  ;
35  ~pk_crypto() {
36  }
37  ;
38  virtual num* get_num() = 0;
39  virtual num* get_rnd_num(uint32_t bitlen = 0) = 0;
40  virtual fe* get_fe() = 0;
41  virtual fe* get_rnd_fe(uint32_t bitlen) = 0;
42  virtual fe* get_generator() = 0;
43  virtual fe* get_rnd_generator() = 0;
44  virtual uint32_t num_byte_size() = 0;
45  uint32_t fe_byte_size() {
46  return fe_bytelen;
47  }
48  ;
49  virtual uint32_t get_field_size() =0;
50  virtual brickexp* get_brick(fe* gen) = 0;
51 
52 protected:
53  virtual void init(seclvl secparam, uint8_t* seed) = 0;
54  uint32_t fe_bytelen;
55  seclvl secparam;
56 };
57 
58 //class number
59 class num {
60 public:
61  num() {
62  }
63  ;
64  ~num() {
65  }
66  ;
67  virtual void set(num* src) = 0;
68  virtual void set_si(int32_t src) = 0;
69  virtual void set_add(num* a, num* b) = 0;
70  virtual void set_mul(num* a, num* b) = 0;
71  virtual void export_to_bytes(uint8_t* buf, uint32_t field_size) = 0;
72  virtual void import_from_bytes(uint8_t* buf, uint32_t field_size) = 0;
73  virtual void print() = 0;
74 };
75 
76 //class field_element
77 class fe {
78 public:
79  fe() {
80  }
81  ;
82  ~fe() {
83  }
84  ;
85  virtual void set(fe* src) = 0;
86  virtual void set_mul(fe* a, fe* b) = 0;
87  virtual void set_pow(fe* b, num* e) = 0;
88  virtual void set_div(fe* a, fe* b) = 0;
89  virtual void set_double_pow_mul(fe* b1, num* e1, fe* b2, num* e2) = 0;
90  virtual void export_to_bytes(uint8_t* buf) = 0;
91  virtual void import_from_bytes(uint8_t* buf) = 0;
92  virtual void sample_fe_from_bytes(uint8_t* buf, uint32_t bytelen) = 0;
93  virtual void print() = 0;
94 
95 protected:
96  virtual void init() = 0;
97 };
98 
99 class brickexp {
100 public:
101  brickexp() {
102  }
103  ;
104  ~brickexp() {
105  }
106  ;
107 
108  virtual void pow(fe* result, num* e) = 0;
109 };
110 
111 #endif /* PK_CRYPTO_H_ */
Definition: pk-crypto.h:77
Definition: pk-crypto.h:99
Definition: pk-crypto.h:59
Definition: pk-crypto.h:30
Definition: typedefs.h:79