-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathtypes.go
189 lines (148 loc) · 2.83 KB
/
types.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
package main
import (
"crypto/elliptic"
"log"
"math/big"
"time"
"github.com/fatih/color"
)
// #############################################################################
type Party struct {
ctx EGContext
agg_pk DHElement
X map[string]int
id, n, nBits int
log *log.Logger
partial_sk *big.Int
h2c *HtoCParams
log_color color.Attribute
}
type Delegate struct {
party Party
aesKey []byte
L DHElement
alpha DHScalar
}
// #############################################################################
type DHContext struct {
G DHElement
Curve elliptic.Curve
}
type DHScalar *big.Int
type DHElement struct {
x, y *big.Int
}
type EGContext struct {
ecc DHContext
n, Ny []*big.Int
table map[string]big.Int
N *big.Int
nModuli uint
}
type EGCiphertext struct {
c1, c2 []DHElement
}
type Ciphertext struct {
EG EGCiphertext
AES []byte
}
type HashMapValues struct {
EncData []Ciphertext
DHData []HashMapValue
nBits int
}
type HashMapValue struct {
Q, S DHElement
}
type HashMapFinal struct {
Q []DHElement
AES [][]byte
}
type Set struct {
data map[string]int
}
type ChanMsg struct {
data interface{}
id uint64
}
type WorkerInput ChanMsg
type InputChannel chan WorkerInput
type WorkerOutput ChanMsg
type OutputChannel chan WorkerOutput
type WorkerCtx interface{}
type WorkerFunc func(WorkerCtx, interface{}) interface{}
type WorkerPool struct {
InChan InputChannel
OutChan OutputChannel
nJobs uint64
}
type Stopwatch struct {
start time.Time
}
// #############################################################################
type HashFunction func([]byte) []byte
type HtoCParams struct {
DST string
A, B, q, Z *big.Int
k, m, L, h int
H HashFunction
b, s int
}
// #############################################################################
type BlindInput struct {
w string
v int
}
type H2CInput string
type RandomizeInput struct{}
type HashAndReduceInput struct {
w string
P DHElement
}
type MPSIReduceInput struct {
w string
Rj0, Rj1, Mj DHElement
}
type ReduceInput struct {
H, P DHElement
}
type EncryptInput struct {
ct *Ciphertext
S *DHElement
}
type UnblindInput struct {
AES []byte
Q DHElement
}
type BlindCtxInt struct {
sk []byte
ctx *DHContext
alpha DHScalar
h2c *HtoCParams
}
type BlindCtxSum struct {
pk DHElement
ctx *EGContext
alpha DHScalar
sk DHScalar
h2c *HtoCParams
}
type H2CCtx elliptic.Curve
type DHCtx struct {
L DHElement
ctx *DHContext
h2c *HtoCParams
isP1 bool
}
type EncryptCtx struct {
ctx *EGContext
apk *DHElement
}
type H2COutput DHElement
type DHOutput struct {
Ct Ciphertext
Q, S DHElement
}
type EncryptOutput []byte
type UnblindOutput int
// #############################################################################