Main Page
Related Pages
Namespaces
Classes
Files
File List
File Members
All
Classes
Namespaces
Files
Functions
Variables
Macros
Pages
arithm
group
group.hpp
Go to the documentation of this file.
1
12
#ifndef _GROUP_H_
13
#define _GROUP_H_
14
15
16
#include <vector>
17
#include <cstdint>
18
#include <iostream>
19
#include <gmp.h>
20
#include <gmpxx.h>
21
22
#include "../../verifierutils/verifierutils.hpp"
23
#include "../../cryptotools/cryptotools.hpp"
24
25
#include "
elmt.hpp
"
26
#include "
arrayofelmts.hpp
"
27
28
29
namespace
arithm {
30
31
35
class
Group
36
{
37
protected
:
41
mpz_class
multOrder
;
42
46
mpz_class
generator
;
47
48
public
:
55
Group
(mpz_class order, mpz_class gen);
56
60
virtual
verifierUtils::ByteTree
*
toByteTree
();
61
62
65
70
virtual
Elmt
multiplication
(
Elmt
e1,
Elmt
e2);
71
75
virtual
Elmt
multInverse
(
Elmt
e);
76
80
virtual
Elmt
exponentiation
(
Elmt
e,
Elmt
s);
81
86
bool
compare
(
Elmt
e1,
Elmt
e2);
87
88
90
93
98
ArrayOfElmts
multiplication
(
ArrayOfElmts
e1,
ArrayOfElmts
e2);
99
104
ArrayOfElmts
multInverse
(
ArrayOfElmts
e);
105
110
ArrayOfElmts
exponentiation
(
ArrayOfElmts
e,
ArrayOfElmts
s);
111
116
Elmt
product
(
ArrayOfElmts
e);
117
122
Elmt
expProduct
(
ArrayOfElmts
e,
ArrayOfElmts
s);
123
129
bool
compare
(
ArrayOfElmts
e1,
ArrayOfElmts
e2);
130
131
133
136
137
141
virtual
Elmt
encode
(std::vector<uint8_t> message);
142
147
virtual
std::vector<uint8_t>
decode
(
Elmt
e);
148
150
153
158
Elmt
getOne
();
159
164
ArrayOfElmts
getOne
(
unsigned
int
n);
165
170
Elmt
getElmt
(mpz_class repr);
171
176
Elmt
getElmt
(
verifierUtils::ByteTree
* bt);
177
182
ArrayOfElmts
getArray
(
verifierUtils::ByteTree
* bt);
183
192
virtual
ArrayOfElmts
getRandArray
(
cryptoTools::PRG
* prg,
unsigned
int
nr,
unsigned
int
n0);
193
195
198
202
mpz_class
getMultOrder
();
203
208
virtual
unsigned
int
getLeafSize
();
209
214
Elmt
getGenerator
();
215
220
ArrayOfElmts
getGenerator
(
unsigned
int
n);
221
226
virtual
bool
isIn
(mpz_class repr);
227
231
virtual
std::string
getType
();
232
234
};
235
236
237
}
// closing namespace
238
239
#endif