kpqc 0.1.1 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +15 -0
- data/README.md +9 -6
- data/THIRD_PARTY_NOTICES.md +14 -47
- data/ext/kpqc/extconf_helper.rb +6 -3
- data/ext/kpqc/secure_clear.c +8 -0
- data/kpqc.gemspec +4 -2
- data/lib/kpqc/aimer.rb +6 -6
- data/lib/kpqc/version.rb +1 -1
- data/test/kat/aimer128f.rsp +4 -4
- data/test/kat/aimer128s.rsp +4 -4
- data/test/kat/aimer192f.rsp +4 -4
- data/test/kat/aimer192s.rsp +4 -4
- data/test/kat/aimer256f.rsp +4 -4
- data/test/kat/aimer256s.rsp +4 -4
- data/test/kat/haetae2.rsp +1 -1
- data/test/kat/haetae3.rsp +1 -1
- data/test/kat/haetae5.rsp +1 -1
- data/vendor/AIMer/LICENSE +1 -1
- data/vendor/AIMer/aim3.c +227 -0
- data/vendor/AIMer/aim3.h +63 -0
- data/vendor/AIMer/field.h +12 -4
- data/vendor/AIMer/field128.c +24 -381
- data/vendor/AIMer/field192.c +24 -400
- data/vendor/AIMer/field256.c +28 -447
- data/vendor/AIMer/field_common.c +98 -0
- data/vendor/AIMer/field_internal.h +218 -0
- data/vendor/AIMer/params/params-aimer-128f.h +8 -8
- data/vendor/AIMer/params/params-aimer-128s.h +8 -8
- data/vendor/AIMer/params/params-aimer-192f.h +8 -8
- data/vendor/AIMer/params/params-aimer-192s.h +8 -8
- data/vendor/AIMer/params/params-aimer-256f.h +8 -8
- data/vendor/AIMer/params/params-aimer-256s.h +8 -8
- data/vendor/AIMer/params.h +5 -0
- data/vendor/AIMer/sign.c +246 -167
- data/vendor/AIMer/sign.h +6 -6
- data/vendor/AIMer/tree.c +10 -4
- data/vendor/AIMer/tree.h +1 -1
- data/vendor/HAETAE/include/fixpoint.h +14 -14
- data/vendor/HAETAE/include/rans_byte.h +10 -9
- data/vendor/HAETAE/src/decompose.c +8 -4
- data/vendor/HAETAE/src/encoding.c +5 -5
- data/vendor/HAETAE/src/fft.c +1 -1
- data/vendor/HAETAE/src/fips202.c +26 -14
- data/vendor/HAETAE/src/fixpoint.c +21 -18
- data/vendor/HAETAE/src/ntt.c +2 -0
- data/vendor/HAETAE/src/packing.c +15 -15
- data/vendor/HAETAE/src/poly.c +30 -3
- data/vendor/HAETAE/src/polyfix.c +2 -2
- data/vendor/HAETAE/src/polymat.c +2 -2
- data/vendor/HAETAE/src/polyvec.c +7 -5
- data/vendor/HAETAE/src/reduce.c +2 -0
- data/vendor/HAETAE/src/sampler.c +231 -47
- data/vendor/HAETAE/src/sign.c +11 -10
- data/vendor/NTRUplus/NTRU+1152/api.h +27 -8
- data/vendor/NTRUplus/NTRU+1152/fips202/fips202.c +12 -269
- data/vendor/NTRUplus/NTRU+1152/fips202/fips202.h +4 -113
- data/vendor/NTRUplus/NTRU+1152/kem.c +110 -40
- data/vendor/NTRUplus/NTRU+1152/ntt.c +50 -54
- data/vendor/NTRUplus/NTRU+1152/poly.c +21 -13
- data/vendor/NTRUplus/NTRU+1152/poly.h +3 -3
- data/vendor/NTRUplus/NTRU+1152/randombytes.h +1 -0
- data/vendor/NTRUplus/NTRU+1152/symmetric.c +3 -9
- data/vendor/NTRUplus/NTRU+1152/symmetric.h +13 -3
- data/vendor/NTRUplus/NTRU+1152/util.h +15 -0
- data/vendor/NTRUplus/NTRU+768/api.h +27 -8
- data/vendor/NTRUplus/NTRU+768/fips202/fips202.c +12 -269
- data/vendor/NTRUplus/NTRU+768/fips202/fips202.h +4 -113
- data/vendor/NTRUplus/NTRU+768/kem.c +110 -40
- data/vendor/NTRUplus/NTRU+768/ntt.c +50 -54
- data/vendor/NTRUplus/NTRU+768/poly.c +23 -13
- data/vendor/NTRUplus/NTRU+768/poly.h +3 -3
- data/vendor/NTRUplus/NTRU+768/randombytes.h +1 -0
- data/vendor/NTRUplus/NTRU+768/symmetric.c +3 -9
- data/vendor/NTRUplus/NTRU+768/symmetric.h +13 -3
- data/vendor/NTRUplus/NTRU+768/util.h +15 -0
- data/vendor/NTRUplus/NTRU+864/api.h +27 -8
- data/vendor/NTRUplus/NTRU+864/fips202/fips202.c +12 -269
- data/vendor/NTRUplus/NTRU+864/fips202/fips202.h +4 -113
- data/vendor/NTRUplus/NTRU+864/kem.c +110 -40
- data/vendor/NTRUplus/NTRU+864/ntt.c +24 -28
- data/vendor/NTRUplus/NTRU+864/poly.c +26 -12
- data/vendor/NTRUplus/NTRU+864/poly.h +3 -3
- data/vendor/NTRUplus/NTRU+864/randombytes.h +1 -0
- data/vendor/NTRUplus/NTRU+864/symmetric.c +3 -9
- data/vendor/NTRUplus/NTRU+864/symmetric.h +13 -3
- data/vendor/NTRUplus/NTRU+864/util.h +15 -0
- data/vendor/SMAUG-T/src/cbd.c +4 -4
- data/vendor/SMAUG-T/src/ciphertext.c +2 -2
- data/vendor/SMAUG-T/src/dg.c +2 -2
- data/vendor/SMAUG-T/src/hwt.c +4 -4
- data/vendor/SMAUG-T/src/indcpa.c +5 -5
- data/vendor/SMAUG-T/src/kem.c +9 -7
- data/vendor/SMAUG-T/src/key.c +2 -2
- data/vendor/SMAUG-T/src/pack.c +8 -8
- metadata +16 -13
- data/vendor/AIMer/aim2.c +0 -163
- data/vendor/AIMer/aim2.h +0 -36
- data/vendor/AIMer/aim2_constant.h +0 -74
- data/vendor/SOURCES.json +0 -130
|
@@ -0,0 +1,218 @@
|
|
|
1
|
+
// SPDX-License-Identifier: MIT
|
|
2
|
+
|
|
3
|
+
#ifndef FIELD_INTERNAL_H
|
|
4
|
+
#define FIELD_INTERNAL_H
|
|
5
|
+
|
|
6
|
+
#include <stdint.h>
|
|
7
|
+
|
|
8
|
+
static inline void poly64_mul(uint64_t *z1, uint64_t *z0,
|
|
9
|
+
uint64_t x0, uint64_t y0)
|
|
10
|
+
{
|
|
11
|
+
const uint64_t C0 = 0x5555555555555555;
|
|
12
|
+
const uint64_t C1 = 0x3333333333333333;
|
|
13
|
+
const uint64_t C2 = 0x0f0f0f0f0f0f0f0f;
|
|
14
|
+
const uint64_t C3 = 0x00ff00ff00ff00ff;
|
|
15
|
+
const uint64_t C4 = 0x0000ffff0000ffff;
|
|
16
|
+
const uint64_t C5 = 0x00000000ffffffff;
|
|
17
|
+
uint64_t x1, x2, x3, x4, x5, x6, x7;
|
|
18
|
+
uint64_t y1, y2, y3, y4, y5, y6, y7;
|
|
19
|
+
uint64_t f0, f1, f2, f3, f4, f5, f6, f7;
|
|
20
|
+
uint64_t g0, g1, g2, g3, g4, g5, g6, g7;
|
|
21
|
+
uint64_t s, t;
|
|
22
|
+
|
|
23
|
+
x1 = x0 ^ (x0 >> 32); // will ignore outside C5
|
|
24
|
+
x2 = ((x0 ^ (x0 >> 16)) & C4) | ((x1 ^ (x1 << 16)) & (C4 << 16));
|
|
25
|
+
x3 = ((x0 ^ (x0 >> 8)) & C3) | ((x1 ^ (x1 << 8)) & (C3 << 8));
|
|
26
|
+
x4 = x2 ^ (x2 >> 8); // will ignore outside C3
|
|
27
|
+
x5 = ((x0 ^ (x0 >> 4)) & C2) | ((x1 ^ (x1 << 4)) & (C2 << 4));
|
|
28
|
+
x6 = ((x2 ^ (x2 >> 4)) & C2) | ((x3 ^ (x3 << 4)) & (C2 << 4));
|
|
29
|
+
x7 = x4 ^ (x4 >> 4); // will ignore outside C2
|
|
30
|
+
s = ((x0 >> 2) ^ x2) & C1;
|
|
31
|
+
x0 ^= s << 2;
|
|
32
|
+
x2 ^= s;
|
|
33
|
+
s = ((x1 >> 2) ^ x3) & C1;
|
|
34
|
+
x1 ^= s << 2;
|
|
35
|
+
x3 ^= s;
|
|
36
|
+
s = ((x4 >> 2) ^ x6) & C1;
|
|
37
|
+
x4 ^= s << 2;
|
|
38
|
+
x6 ^= s;
|
|
39
|
+
s = ((x5 >> 2) ^ x7) & C1;
|
|
40
|
+
x5 ^= s << 2;
|
|
41
|
+
x7 ^= s;
|
|
42
|
+
s = ((x0 >> 1) ^ x1) & C0;
|
|
43
|
+
x0 ^= s << 1;
|
|
44
|
+
x1 ^= s;
|
|
45
|
+
s = ((x2 >> 1) ^ x3) & C0;
|
|
46
|
+
x2 ^= s << 1;
|
|
47
|
+
x3 ^= s;
|
|
48
|
+
s = ((x4 >> 1) ^ x5) & C0;
|
|
49
|
+
x4 ^= s << 1;
|
|
50
|
+
x5 ^= s;
|
|
51
|
+
s = ((x6 >> 1) ^ x7) & C0;
|
|
52
|
+
x6 ^= s << 1;
|
|
53
|
+
x7 ^= s;
|
|
54
|
+
|
|
55
|
+
y1 = y0 ^ (y0 >> 32);
|
|
56
|
+
y2 = ((y0 ^ (y0 >> 16)) & C4) | ((y1 ^ (y1 << 16)) & (C4 << 16));
|
|
57
|
+
y3 = ((y0 ^ (y0 >> 8)) & C3) | ((y1 ^ (y1 << 8)) & (C3 << 8));
|
|
58
|
+
y4 = y2 ^ (y2 >> 8);
|
|
59
|
+
y5 = ((y0 ^ (y0 >> 4)) & C2) | ((y1 ^ (y1 << 4)) & (C2 << 4));
|
|
60
|
+
y6 = ((y2 ^ (y2 >> 4)) & C2) | ((y3 ^ (y3 << 4)) & (C2 << 4));
|
|
61
|
+
y7 = y4 ^ (y4 >> 4);
|
|
62
|
+
s = ((y0 >> 2) ^ y2) & C1;
|
|
63
|
+
y0 ^= s << 2;
|
|
64
|
+
y2 ^= s;
|
|
65
|
+
s = ((y1 >> 2) ^ y3) & C1;
|
|
66
|
+
y1 ^= s << 2;
|
|
67
|
+
y3 ^= s;
|
|
68
|
+
s = ((y4 >> 2) ^ y6) & C1;
|
|
69
|
+
y4 ^= s << 2;
|
|
70
|
+
y6 ^= s;
|
|
71
|
+
s = ((y5 >> 2) ^ y7) & C1;
|
|
72
|
+
y5 ^= s << 2;
|
|
73
|
+
y7 ^= s;
|
|
74
|
+
s = ((y0 >> 1) ^ y1) & C0;
|
|
75
|
+
y0 ^= s << 1;
|
|
76
|
+
y1 ^= s;
|
|
77
|
+
s = ((y2 >> 1) ^ y3) & C0;
|
|
78
|
+
y2 ^= s << 1;
|
|
79
|
+
y3 ^= s;
|
|
80
|
+
s = ((y4 >> 1) ^ y5) & C0;
|
|
81
|
+
y4 ^= s << 1;
|
|
82
|
+
y5 ^= s;
|
|
83
|
+
s = ((y6 >> 1) ^ y7) & C0;
|
|
84
|
+
y6 ^= s << 1;
|
|
85
|
+
y7 ^= s;
|
|
86
|
+
|
|
87
|
+
f0 = x0 & y0;
|
|
88
|
+
f1 = (x0 & y1) ^ (x1 & y0);
|
|
89
|
+
f2 = (x0 & y2) ^ (x1 & y1) ^ (x2 & y0);
|
|
90
|
+
f3 = (x0 & y3) ^ (x1 & y2) ^ (x2 & y1) ^ (x3 & y0);
|
|
91
|
+
g0 = (x1 & y3) ^ (x2 & y2) ^ (x3 & y1);
|
|
92
|
+
g1 = (x2 & y3) ^ (x3 & y2);
|
|
93
|
+
g2 = x3 & y3;
|
|
94
|
+
|
|
95
|
+
f4 = x4 & y4;
|
|
96
|
+
f5 = (x4 & y5) ^ (x5 & y4);
|
|
97
|
+
f6 = (x4 & y6) ^ (x5 & y5) ^ (x6 & y4);
|
|
98
|
+
f7 = (x4 & y7) ^ (x5 & y6) ^ (x6 & y5) ^ (x7 & y4);
|
|
99
|
+
g4 = (x5 & y7) ^ (x6 & y6) ^ (x7 & y5);
|
|
100
|
+
g5 = (x6 & y7) ^ (x7 & y6);
|
|
101
|
+
g6 = x7 & y7;
|
|
102
|
+
|
|
103
|
+
s = ((f0 >> 1) ^ f1) & C0;
|
|
104
|
+
f0 ^= s << 1;
|
|
105
|
+
f1 ^= s;
|
|
106
|
+
s = ((f2 >> 1) ^ f3) & C0;
|
|
107
|
+
f2 ^= s << 1;
|
|
108
|
+
f3 ^= s;
|
|
109
|
+
s = ((f0 >> 2) ^ f2) & C1;
|
|
110
|
+
f0 ^= s << 2;
|
|
111
|
+
f2 ^= s;
|
|
112
|
+
s = ((f1 >> 2) ^ f3) & C1;
|
|
113
|
+
f1 ^= s << 2;
|
|
114
|
+
f3 ^= s;
|
|
115
|
+
s = ((g0 >> 1) ^ g1) & C0;
|
|
116
|
+
g0 ^= s << 1;
|
|
117
|
+
g1 ^= s;
|
|
118
|
+
s = (g2 >> 1) & C0;
|
|
119
|
+
g2 ^= s << 1;
|
|
120
|
+
g3 = s;
|
|
121
|
+
s = ((g0 >> 2) ^ g2) & C1;
|
|
122
|
+
g0 ^= s << 2;
|
|
123
|
+
g2 ^= s;
|
|
124
|
+
s = ((g1 >> 2) ^ g3) & C1;
|
|
125
|
+
g1 ^= s << 2;
|
|
126
|
+
g3 ^= s;
|
|
127
|
+
|
|
128
|
+
s = ((f4 >> 1) ^ f5) & C0;
|
|
129
|
+
f4 ^= s << 1;
|
|
130
|
+
f5 ^= s;
|
|
131
|
+
s = ((f6 >> 1) ^ f7) & C0;
|
|
132
|
+
f6 ^= s << 1;
|
|
133
|
+
f7 ^= s;
|
|
134
|
+
s = ((f4 >> 2) ^ f6) & C1;
|
|
135
|
+
f4 ^= s << 2;
|
|
136
|
+
f6 ^= s;
|
|
137
|
+
s = ((f5 >> 2) ^ f7) & C1;
|
|
138
|
+
f5 ^= s << 2;
|
|
139
|
+
f7 ^= s;
|
|
140
|
+
s = ((g4 >> 1) ^ g5) & C0;
|
|
141
|
+
g4 ^= s << 1;
|
|
142
|
+
g5 ^= s;
|
|
143
|
+
s = (g6 >> 1) & C0;
|
|
144
|
+
g6 ^= s << 1;
|
|
145
|
+
g7 = s;
|
|
146
|
+
s = ((g4 >> 2) ^ g6) & C1;
|
|
147
|
+
g4 ^= s << 2;
|
|
148
|
+
g6 ^= s;
|
|
149
|
+
s = ((g5 >> 2) ^ g7) & C1;
|
|
150
|
+
g5 ^= s << 2;
|
|
151
|
+
g7 ^= s;
|
|
152
|
+
|
|
153
|
+
t = f0 ^ g0;
|
|
154
|
+
f0 ^= ((f5 ^ t) & C2) << 4;
|
|
155
|
+
g0 ^= (g5 ^ (t >> 4)) & C2;
|
|
156
|
+
t = f1 ^ g1;
|
|
157
|
+
f1 ^= (f5 ^ (t << 4)) & (C2 << 4);
|
|
158
|
+
g1 ^= ((g5 ^ t) >> 4) & C2;
|
|
159
|
+
t = f2 ^ g2;
|
|
160
|
+
f2 ^= ((f6 ^ t) & C2) << 4;
|
|
161
|
+
g2 ^= (g6 ^ (t >> 4)) & C2;
|
|
162
|
+
t = f3 ^ g3;
|
|
163
|
+
f3 ^= (f6 ^ (t << 4)) & (C2 << 4);
|
|
164
|
+
g3 ^= ((g6 ^ t) >> 4) & C2;
|
|
165
|
+
t = f4 ^ g4;
|
|
166
|
+
f4 ^= ((f7 ^ t) & C2) << 4;
|
|
167
|
+
g4 ^= (g7 ^ (t >> 4)) & C2;
|
|
168
|
+
|
|
169
|
+
t = f0 ^ g0;
|
|
170
|
+
f0 ^= ((f3 ^ t) & C3) << 8;
|
|
171
|
+
g0 ^= (g3 ^ (t >> 8)) & C3;
|
|
172
|
+
t = f1 ^ g1;
|
|
173
|
+
f1 ^= (f3 ^ (t << 8)) & (C3 << 8);
|
|
174
|
+
g1 ^= ((g3 ^ t) >> 8) & C3;
|
|
175
|
+
t = f2 ^ g2;
|
|
176
|
+
f2 ^= ((f4 ^ t) & C3) << 8;
|
|
177
|
+
g2 ^= (g4 ^ (t >> 8)) & C3;
|
|
178
|
+
|
|
179
|
+
t = f0 ^ g0;
|
|
180
|
+
f0 ^= ((f2 ^ t) & C4) << 16;
|
|
181
|
+
g0 ^= (g2 ^ (t >> 16)) & C4;
|
|
182
|
+
t = f1 ^ g1;
|
|
183
|
+
f1 ^= (f2 ^ (t << 16)) & (C4 << 16);
|
|
184
|
+
g1 ^= ((g2 ^ t) >> 16) & C4;
|
|
185
|
+
|
|
186
|
+
t = f0 ^ g0;
|
|
187
|
+
f0 ^= ((t ^ f1) & C5) << 32;
|
|
188
|
+
g0 ^= ((t >> 32) ^ g1) & C5;
|
|
189
|
+
|
|
190
|
+
*z0 = f0;
|
|
191
|
+
*z1 = g0;
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
static inline void poly64_sqr(uint64_t *z1, uint64_t *z0, uint64_t x)
|
|
195
|
+
{
|
|
196
|
+
const uint64_t C0 = 0x5555555555555555;
|
|
197
|
+
const uint64_t C1 = 0x3333333333333333;
|
|
198
|
+
const uint64_t C2 = 0x0f0f0f0f0f0f0f0f;
|
|
199
|
+
const uint64_t C3 = 0x00ff00ff00ff00ff;
|
|
200
|
+
const uint64_t C4 = 0x0000ffff0000ffff;
|
|
201
|
+
const uint64_t C5 = 0x00000000ffffffff;
|
|
202
|
+
uint64_t y = x >> 32;
|
|
203
|
+
x &= C5;
|
|
204
|
+
x = (x | (x << 16)) & C4;
|
|
205
|
+
y = (y | (y << 16)) & C4;
|
|
206
|
+
x = (x | (x << 8)) & C3;
|
|
207
|
+
y = (y | (y << 8)) & C3;
|
|
208
|
+
x = (x | (x << 4)) & C2;
|
|
209
|
+
y = (y | (y << 4)) & C2;
|
|
210
|
+
x = (x | (x << 2)) & C1;
|
|
211
|
+
y = (y | (y << 2)) & C1;
|
|
212
|
+
x = (x | (x << 1)) & C0;
|
|
213
|
+
y = (y | (y << 1)) & C0;
|
|
214
|
+
*z0 = x;
|
|
215
|
+
*z1 = y;
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
#endif // FIELD_INTERNAL_H
|
|
@@ -8,26 +8,26 @@
|
|
|
8
8
|
#define SECURITY_BITS 128 // security parameter
|
|
9
9
|
#define SECURITY_BYTES (SECURITY_BITS / 8) // byte size of security parameter
|
|
10
10
|
|
|
11
|
-
#define
|
|
12
|
-
#define
|
|
13
|
-
#define
|
|
14
|
-
#define
|
|
15
|
-
#define
|
|
11
|
+
#define AIM3_NUM_BITS_FIELD SECURITY_BITS // number of bits in field element
|
|
12
|
+
#define AIM3_NUM_BYTES_FIELD SECURITY_BYTES // number of bytes in field element
|
|
13
|
+
#define AIM3_NUM_WORDS_FIELD (SECURITY_BITS / 64) // number of 64-bit words in element
|
|
14
|
+
#define AIM3_NUM_BITS_WORD 64 // number of bits in word
|
|
15
|
+
#define AIM3_IV_SIZE SECURITY_BYTES // byte size of AIM3 initial vector
|
|
16
16
|
|
|
17
|
-
#define
|
|
17
|
+
#define AIM3_NUM_INPUT_SBOX 2 // number of AIM3 input S-boxes
|
|
18
18
|
|
|
19
19
|
#define AIMER_SALT_SIZE SECURITY_BYTES // byte size of salt
|
|
20
20
|
#define AIMER_SEED_SIZE SECURITY_BYTES // byte size of seed
|
|
21
21
|
#define AIMER_COMMIT_SIZE (SECURITY_BYTES * 2) // byte size of commitment
|
|
22
22
|
|
|
23
|
-
#define AIMER_L
|
|
23
|
+
#define AIMER_L AIM3_NUM_INPUT_SBOX
|
|
24
24
|
#define AIMER_T 33 // number of parallel repetitions (Tau)
|
|
25
25
|
#define AIMER_N 16 // number of MPC parties (N)
|
|
26
26
|
#define AIMER_LOGN 4 // log_2(N)
|
|
27
27
|
|
|
28
28
|
#define AIMER_PK_BYTES 32 // byte size of public key
|
|
29
29
|
#define AIMER_SK_BYTES 48 // byte size of secret key
|
|
30
|
-
#define AIMER_SIG_BYTES
|
|
30
|
+
#define AIMER_SIG_BYTES 6944 // byte size of signature
|
|
31
31
|
|
|
32
32
|
#define AIMER_HASH_PREFIX_0 0x00
|
|
33
33
|
|
|
@@ -8,26 +8,26 @@
|
|
|
8
8
|
#define SECURITY_BITS 128 // security parameter
|
|
9
9
|
#define SECURITY_BYTES (SECURITY_BITS / 8) // byte size of security parameter
|
|
10
10
|
|
|
11
|
-
#define
|
|
12
|
-
#define
|
|
13
|
-
#define
|
|
14
|
-
#define
|
|
15
|
-
#define
|
|
11
|
+
#define AIM3_NUM_BITS_FIELD SECURITY_BITS // number of bits in field element
|
|
12
|
+
#define AIM3_NUM_BYTES_FIELD SECURITY_BYTES // number of bytes in field element
|
|
13
|
+
#define AIM3_NUM_WORDS_FIELD (SECURITY_BITS / 64) // number of 64-bit words in element
|
|
14
|
+
#define AIM3_NUM_BITS_WORD 64 // number of bits in word
|
|
15
|
+
#define AIM3_IV_SIZE SECURITY_BYTES // byte size of AIM3 initial vector
|
|
16
16
|
|
|
17
|
-
#define
|
|
17
|
+
#define AIM3_NUM_INPUT_SBOX 2 // number of AIM3 input S-boxes
|
|
18
18
|
|
|
19
19
|
#define AIMER_SALT_SIZE SECURITY_BYTES // byte size of salt
|
|
20
20
|
#define AIMER_SEED_SIZE SECURITY_BYTES // byte size of seed
|
|
21
21
|
#define AIMER_COMMIT_SIZE (SECURITY_BYTES * 2) // byte size of commitment
|
|
22
22
|
|
|
23
|
-
#define AIMER_L
|
|
23
|
+
#define AIMER_L AIM3_NUM_INPUT_SBOX
|
|
24
24
|
#define AIMER_T 17 // number of parallel repetitions (Tau)
|
|
25
25
|
#define AIMER_N 256 // number of MPC parties (N)
|
|
26
26
|
#define AIMER_LOGN 8 // log_2(N)
|
|
27
27
|
|
|
28
28
|
#define AIMER_PK_BYTES 32 // byte size of public key
|
|
29
29
|
#define AIMER_SK_BYTES 48 // byte size of secret key
|
|
30
|
-
#define AIMER_SIG_BYTES
|
|
30
|
+
#define AIMER_SIG_BYTES 4704 // byte size of signature
|
|
31
31
|
|
|
32
32
|
#define AIMER_HASH_PREFIX_0 0x10
|
|
33
33
|
|
|
@@ -8,26 +8,26 @@
|
|
|
8
8
|
#define SECURITY_BITS 192 // security parameter
|
|
9
9
|
#define SECURITY_BYTES (SECURITY_BITS / 8) // byte size of security parameter
|
|
10
10
|
|
|
11
|
-
#define
|
|
12
|
-
#define
|
|
13
|
-
#define
|
|
14
|
-
#define
|
|
15
|
-
#define
|
|
11
|
+
#define AIM3_NUM_BITS_FIELD SECURITY_BITS // number of bits in field element
|
|
12
|
+
#define AIM3_NUM_BYTES_FIELD SECURITY_BYTES // number of bytes in field element
|
|
13
|
+
#define AIM3_NUM_WORDS_FIELD (SECURITY_BITS / 64) // number of 64-bit words in element
|
|
14
|
+
#define AIM3_NUM_BITS_WORD 64 // number of bits in word
|
|
15
|
+
#define AIM3_IV_SIZE SECURITY_BYTES // byte size of AIM3 initial vector
|
|
16
16
|
|
|
17
|
-
#define
|
|
17
|
+
#define AIM3_NUM_INPUT_SBOX 2 // number of AIM3 input S-boxes
|
|
18
18
|
|
|
19
19
|
#define AIMER_SALT_SIZE SECURITY_BYTES // byte size of salt
|
|
20
20
|
#define AIMER_SEED_SIZE SECURITY_BYTES // byte size of seed
|
|
21
21
|
#define AIMER_COMMIT_SIZE (SECURITY_BYTES * 2) // byte size of commitment
|
|
22
22
|
|
|
23
|
-
#define AIMER_L
|
|
23
|
+
#define AIMER_L AIM3_NUM_INPUT_SBOX
|
|
24
24
|
#define AIMER_T 49 // number of parallel repetitions (Tau)
|
|
25
25
|
#define AIMER_N 16 // number of MPC parties (N)
|
|
26
26
|
#define AIMER_LOGN 4 // log_2(N)
|
|
27
27
|
|
|
28
28
|
#define AIMER_PK_BYTES 48 // byte size of public key
|
|
29
29
|
#define AIMER_SK_BYTES 72 // byte size of secret key
|
|
30
|
-
#define AIMER_SIG_BYTES
|
|
30
|
+
#define AIMER_SIG_BYTES 15408 // byte size of signature
|
|
31
31
|
|
|
32
32
|
#define AIMER_HASH_PREFIX_0 0x20
|
|
33
33
|
|
|
@@ -8,26 +8,26 @@
|
|
|
8
8
|
#define SECURITY_BITS 192 // security parameter
|
|
9
9
|
#define SECURITY_BYTES (SECURITY_BITS / 8) // byte size of security parameter
|
|
10
10
|
|
|
11
|
-
#define
|
|
12
|
-
#define
|
|
13
|
-
#define
|
|
14
|
-
#define
|
|
15
|
-
#define
|
|
11
|
+
#define AIM3_NUM_BITS_FIELD SECURITY_BITS // number of bits in field element
|
|
12
|
+
#define AIM3_NUM_BYTES_FIELD SECURITY_BYTES // number of bytes in field element
|
|
13
|
+
#define AIM3_NUM_WORDS_FIELD (SECURITY_BITS / 64) // number of 64-bit words in element
|
|
14
|
+
#define AIM3_NUM_BITS_WORD 64 // number of bits in word
|
|
15
|
+
#define AIM3_IV_SIZE SECURITY_BYTES // byte size of AIM3 initial vector
|
|
16
16
|
|
|
17
|
-
#define
|
|
17
|
+
#define AIM3_NUM_INPUT_SBOX 2 // number of AIM3 input S-boxes
|
|
18
18
|
|
|
19
19
|
#define AIMER_SALT_SIZE SECURITY_BYTES // byte size of salt
|
|
20
20
|
#define AIMER_SEED_SIZE SECURITY_BYTES // byte size of seed
|
|
21
21
|
#define AIMER_COMMIT_SIZE (SECURITY_BYTES * 2) // byte size of commitment
|
|
22
22
|
|
|
23
|
-
#define AIMER_L
|
|
23
|
+
#define AIMER_L AIM3_NUM_INPUT_SBOX
|
|
24
24
|
#define AIMER_T 25 // number of parallel repetitions (Tau)
|
|
25
25
|
#define AIMER_N 256 // number of MPC parties (N)
|
|
26
26
|
#define AIMER_LOGN 8 // log_2(N)
|
|
27
27
|
|
|
28
28
|
#define AIMER_PK_BYTES 48 // byte size of public key
|
|
29
29
|
#define AIMER_SK_BYTES 72 // byte size of secret key
|
|
30
|
-
#define AIMER_SIG_BYTES
|
|
30
|
+
#define AIMER_SIG_BYTES 10320 // byte size of signature
|
|
31
31
|
|
|
32
32
|
#define AIMER_HASH_PREFIX_0 0x30
|
|
33
33
|
|
|
@@ -8,26 +8,26 @@
|
|
|
8
8
|
#define SECURITY_BITS 256 // security parameter
|
|
9
9
|
#define SECURITY_BYTES (SECURITY_BITS / 8) // byte size of security parameter
|
|
10
10
|
|
|
11
|
-
#define
|
|
12
|
-
#define
|
|
13
|
-
#define
|
|
14
|
-
#define
|
|
15
|
-
#define
|
|
11
|
+
#define AIM3_NUM_BITS_FIELD SECURITY_BITS // number of bits in field element
|
|
12
|
+
#define AIM3_NUM_BYTES_FIELD SECURITY_BYTES // number of bytes in field element
|
|
13
|
+
#define AIM3_NUM_WORDS_FIELD (SECURITY_BITS / 64) // number of 64-bit words in element
|
|
14
|
+
#define AIM3_NUM_BITS_WORD 64 // number of bits in word
|
|
15
|
+
#define AIM3_IV_SIZE SECURITY_BYTES // byte size of AIM3 initial vector
|
|
16
16
|
|
|
17
|
-
#define
|
|
17
|
+
#define AIM3_NUM_INPUT_SBOX 3 // number of AIM3 input S-boxes
|
|
18
18
|
|
|
19
19
|
#define AIMER_SALT_SIZE SECURITY_BYTES // byte size of salt
|
|
20
20
|
#define AIMER_SEED_SIZE SECURITY_BYTES // byte size of seed
|
|
21
21
|
#define AIMER_COMMIT_SIZE (SECURITY_BYTES * 2) // byte size of commitment
|
|
22
22
|
|
|
23
|
-
#define AIMER_L
|
|
23
|
+
#define AIMER_L AIM3_NUM_INPUT_SBOX
|
|
24
24
|
#define AIMER_T 65 // number of parallel repetitions (Tau)
|
|
25
25
|
#define AIMER_N 16 // number of MPC parties (N)
|
|
26
26
|
#define AIMER_LOGN 4 // log_2(N)
|
|
27
27
|
|
|
28
28
|
#define AIMER_PK_BYTES 64 // byte size of public key
|
|
29
29
|
#define AIMER_SK_BYTES 96 // byte size of secret key
|
|
30
|
-
#define AIMER_SIG_BYTES
|
|
30
|
+
#define AIMER_SIG_BYTES 31360 // byte size of signature
|
|
31
31
|
|
|
32
32
|
#define AIMER_HASH_PREFIX_0 0x40
|
|
33
33
|
|
|
@@ -8,26 +8,26 @@
|
|
|
8
8
|
#define SECURITY_BITS 256 // security parameter
|
|
9
9
|
#define SECURITY_BYTES (SECURITY_BITS / 8) // byte size of security parameter
|
|
10
10
|
|
|
11
|
-
#define
|
|
12
|
-
#define
|
|
13
|
-
#define
|
|
14
|
-
#define
|
|
15
|
-
#define
|
|
11
|
+
#define AIM3_NUM_BITS_FIELD SECURITY_BITS // number of bits in field element
|
|
12
|
+
#define AIM3_NUM_BYTES_FIELD SECURITY_BYTES // number of bytes in field element
|
|
13
|
+
#define AIM3_NUM_WORDS_FIELD (SECURITY_BITS / 64) // number of 64-bit words in element
|
|
14
|
+
#define AIM3_NUM_BITS_WORD 64 // number of bits in word
|
|
15
|
+
#define AIM3_IV_SIZE SECURITY_BYTES // byte size of AIM3 initial vector
|
|
16
16
|
|
|
17
|
-
#define
|
|
17
|
+
#define AIM3_NUM_INPUT_SBOX 3 // number of AIM3 input S-boxes
|
|
18
18
|
|
|
19
19
|
#define AIMER_SALT_SIZE SECURITY_BYTES // byte size of salt
|
|
20
20
|
#define AIMER_SEED_SIZE SECURITY_BYTES // byte size of seed
|
|
21
21
|
#define AIMER_COMMIT_SIZE (SECURITY_BYTES * 2) // byte size of commitment
|
|
22
22
|
|
|
23
|
-
#define AIMER_L
|
|
23
|
+
#define AIMER_L AIM3_NUM_INPUT_SBOX
|
|
24
24
|
#define AIMER_T 33 // number of parallel repetitions (Tau)
|
|
25
25
|
#define AIMER_N 256 // number of MPC parties (N)
|
|
26
26
|
#define AIMER_LOGN 8 // log_2(N)
|
|
27
27
|
|
|
28
28
|
#define AIMER_PK_BYTES 64 // byte size of public key
|
|
29
29
|
#define AIMER_SK_BYTES 96 // byte size of secret key
|
|
30
|
-
#define AIMER_SIG_BYTES
|
|
30
|
+
#define AIMER_SIG_BYTES 20224 // byte size of signature
|
|
31
31
|
|
|
32
32
|
#define AIMER_HASH_PREFIX_0 0x50
|
|
33
33
|
|