@semaphore-protocol/identity 4.0.0-beta.1 → 4.0.0-beta.10
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.
- package/dist/index.cjs +2171 -0
- package/dist/index.js +2169 -0
- package/dist/types/index.d.ts +86 -2
- package/package.json +13 -19
- package/src/index.ts +140 -3
- package/dist/index.browser.js +0 -1075
- package/dist/index.node.cjs +0 -233
- package/dist/index.node.js +0 -231
- package/dist/types/bytes-to-bigint.d.ts +0 -1
- package/dist/types/identity.d.ts +0 -83
- package/dist/types/random-number.browser.d.ts +0 -1
- package/dist/types/random-number.node.d.ts +0 -1
- package/src/bytes-to-bigint.ts +0 -9
- package/src/identity.ts +0 -115
- package/src/random-number.browser.ts +0 -8
- package/src/random-number.node.ts +0 -9
package/dist/index.browser.js
DELETED
|
@@ -1,1075 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @module @semaphore-protocol/identity
|
|
3
|
-
* @version 4.0.0-beta.1
|
|
4
|
-
* @file A library to create Semaphore identities.
|
|
5
|
-
* @copyright Ethereum Foundation 2024
|
|
6
|
-
* @license MIT
|
|
7
|
-
* @see [Github]{@link https://github.com/semaphore-protocol/semaphore/tree/main/packages/identity}
|
|
8
|
-
*/
|
|
9
|
-
/**
|
|
10
|
-
* @module @zk-kit/utils
|
|
11
|
-
* @version 0.3.0
|
|
12
|
-
* @file Essential zero-knowledge utility library for JavaScript developers.
|
|
13
|
-
* @copyright Ethereum Foundation 2024
|
|
14
|
-
* @license MIT
|
|
15
|
-
* @see [Github]{@link https://github.com/privacy-scaling-explorations/zk-kit/tree/main/packages/utils}
|
|
16
|
-
*/
|
|
17
|
-
function isZero(a) {
|
|
18
|
-
return !a;
|
|
19
|
-
}
|
|
20
|
-
function isOdd(a) {
|
|
21
|
-
return (a & BigInt(1)) === BigInt(1);
|
|
22
|
-
}
|
|
23
|
-
function shiftRight(a, n) {
|
|
24
|
-
return a >> n;
|
|
25
|
-
}
|
|
26
|
-
function mul(a, b) {
|
|
27
|
-
return a * b;
|
|
28
|
-
}
|
|
29
|
-
function gt(a, b) {
|
|
30
|
-
return a > b;
|
|
31
|
-
}
|
|
32
|
-
function bits(n) {
|
|
33
|
-
const res = [];
|
|
34
|
-
let E = n;
|
|
35
|
-
while (E) {
|
|
36
|
-
if (E & BigInt(1)) {
|
|
37
|
-
res.push(1);
|
|
38
|
-
}
|
|
39
|
-
else {
|
|
40
|
-
res.push(0);
|
|
41
|
-
}
|
|
42
|
-
E >>= BigInt(1);
|
|
43
|
-
}
|
|
44
|
-
return res;
|
|
45
|
-
}
|
|
46
|
-
var scalar = Object.freeze({
|
|
47
|
-
__proto__: null,
|
|
48
|
-
bits: bits,
|
|
49
|
-
gt: gt,
|
|
50
|
-
isOdd: isOdd,
|
|
51
|
-
isZero: isZero,
|
|
52
|
-
mul: mul,
|
|
53
|
-
shiftRight: shiftRight
|
|
54
|
-
});
|
|
55
|
-
class F1Field {
|
|
56
|
-
constructor(order) {
|
|
57
|
-
this.one = BigInt(1);
|
|
58
|
-
this.zero = BigInt(0);
|
|
59
|
-
this._order = order;
|
|
60
|
-
this._half = order >> this.one;
|
|
61
|
-
this._negone = this._order - this.one;
|
|
62
|
-
}
|
|
63
|
-
e(res) {
|
|
64
|
-
if (res < 0) {
|
|
65
|
-
let nres = -res;
|
|
66
|
-
if (nres >= this._order) {
|
|
67
|
-
nres %= this._order;
|
|
68
|
-
}
|
|
69
|
-
return this._order - nres;
|
|
70
|
-
}
|
|
71
|
-
return res >= this._order ? res % this._order : res;
|
|
72
|
-
}
|
|
73
|
-
mul(a, b) {
|
|
74
|
-
return (a * b) % this._order;
|
|
75
|
-
}
|
|
76
|
-
sub(a, b) {
|
|
77
|
-
return a >= b ? a - b : this._order - b + a;
|
|
78
|
-
}
|
|
79
|
-
add(a, b) {
|
|
80
|
-
const res = a + b;
|
|
81
|
-
return res >= this._order ? res - this._order : res;
|
|
82
|
-
}
|
|
83
|
-
inv(a) {
|
|
84
|
-
let t = this.zero;
|
|
85
|
-
let r = this._order;
|
|
86
|
-
let newt = this.one;
|
|
87
|
-
let newr = a % this._order;
|
|
88
|
-
while (newr) {
|
|
89
|
-
const q = r / newr;
|
|
90
|
-
[t, newt] = [newt, t - q * newt];
|
|
91
|
-
[r, newr] = [newr, r - q * newr];
|
|
92
|
-
}
|
|
93
|
-
if (t < this.zero) {
|
|
94
|
-
t += this._order;
|
|
95
|
-
}
|
|
96
|
-
return t;
|
|
97
|
-
}
|
|
98
|
-
div(a, b) {
|
|
99
|
-
return this.mul(a, this.inv(b));
|
|
100
|
-
}
|
|
101
|
-
eq(a, b) {
|
|
102
|
-
return a === b;
|
|
103
|
-
}
|
|
104
|
-
square(a) {
|
|
105
|
-
return (a * a) % this._order;
|
|
106
|
-
}
|
|
107
|
-
lt(a, b) {
|
|
108
|
-
const aa = a > this._half ? a - this._order : a;
|
|
109
|
-
const bb = b > this._half ? b - this._order : b;
|
|
110
|
-
return aa < bb;
|
|
111
|
-
}
|
|
112
|
-
geq(a, b) {
|
|
113
|
-
const aa = a > this._half ? a - this._order : a;
|
|
114
|
-
const bb = b > this._half ? b - this._order : b;
|
|
115
|
-
return aa >= bb;
|
|
116
|
-
}
|
|
117
|
-
neg(a) {
|
|
118
|
-
return a ? this._order - a : a;
|
|
119
|
-
}
|
|
120
|
-
isZero(a) {
|
|
121
|
-
return a === this.zero;
|
|
122
|
-
}
|
|
123
|
-
pow(base, e) {
|
|
124
|
-
if (isZero(e)) {
|
|
125
|
-
return this.one;
|
|
126
|
-
}
|
|
127
|
-
const n = bits(e);
|
|
128
|
-
if (n.length === 0) {
|
|
129
|
-
return this.one;
|
|
130
|
-
}
|
|
131
|
-
let res = base;
|
|
132
|
-
for (let i = n.length - 2; i >= 0; i -= 1) {
|
|
133
|
-
res = this.square(res);
|
|
134
|
-
if (n[i]) {
|
|
135
|
-
res = this.mul(res, base);
|
|
136
|
-
}
|
|
137
|
-
}
|
|
138
|
-
return res;
|
|
139
|
-
}
|
|
140
|
-
}
|
|
141
|
-
function isStringifiedBigint(s) {
|
|
142
|
-
try {
|
|
143
|
-
BigInt(s);
|
|
144
|
-
return true;
|
|
145
|
-
}
|
|
146
|
-
catch (e) {
|
|
147
|
-
return false;
|
|
148
|
-
}
|
|
149
|
-
}
|
|
150
|
-
function isHexadecimal(s) {
|
|
151
|
-
return /^(0x|0X)[0-9a-fA-F]+$/.test(s);
|
|
152
|
-
}
|
|
153
|
-
function isBigNumberish(value) {
|
|
154
|
-
return (typeof value === "number" ||
|
|
155
|
-
typeof value === "bigint" ||
|
|
156
|
-
(typeof value === "string" && isStringifiedBigint(value)) ||
|
|
157
|
-
(typeof value === "string" && isHexadecimal(value)) ||
|
|
158
|
-
Buffer.isBuffer(value));
|
|
159
|
-
}
|
|
160
|
-
function bigintToHexadecimal(n) {
|
|
161
|
-
let hex = n.toString(16);
|
|
162
|
-
if (hex.length % 2 !== 0) {
|
|
163
|
-
hex = `0${hex}`;
|
|
164
|
-
}
|
|
165
|
-
return hex;
|
|
166
|
-
}
|
|
167
|
-
function bigNumberishToBuffer(value) {
|
|
168
|
-
if (typeof value === "number" ||
|
|
169
|
-
typeof value === "bigint" ||
|
|
170
|
-
(typeof value === "string" && isStringifiedBigint(value))) {
|
|
171
|
-
const hex = bigintToHexadecimal(BigInt(value));
|
|
172
|
-
return Buffer.from(hex, "hex");
|
|
173
|
-
}
|
|
174
|
-
return value;
|
|
175
|
-
}
|
|
176
|
-
function bufferToBigint(buffer) {
|
|
177
|
-
return BigInt(`0x${buffer.toString("hex")}`);
|
|
178
|
-
}
|
|
179
|
-
function bigNumberishToBigint(value) {
|
|
180
|
-
if (typeof value === "number" ||
|
|
181
|
-
typeof value === "bigint" ||
|
|
182
|
-
(typeof value === "string" && isStringifiedBigint(value)) ||
|
|
183
|
-
(typeof value === "string" && isHexadecimal(value))) {
|
|
184
|
-
return BigInt(value);
|
|
185
|
-
}
|
|
186
|
-
return bufferToBigint(value);
|
|
187
|
-
}
|
|
188
|
-
function leBufferToBigint(buffer) {
|
|
189
|
-
return BigInt(`0x${Buffer.from(buffer).reverse().toString("hex")}`);
|
|
190
|
-
}
|
|
191
|
-
function leBigintToBuffer(n) {
|
|
192
|
-
const hex = bigintToHexadecimal(n);
|
|
193
|
-
const buffer = Buffer.alloc(32, 0);
|
|
194
|
-
const fromHex = Buffer.from(hex, "hex").reverse();
|
|
195
|
-
fromHex.copy(buffer, 0);
|
|
196
|
-
return buffer;
|
|
197
|
-
}
|
|
198
|
-
|
|
199
|
-
/**
|
|
200
|
-
* @module @zk-kit/baby-jubjub
|
|
201
|
-
* @version 0.2.0
|
|
202
|
-
* @file A JavaScript library for adding points to the curve.
|
|
203
|
-
* @copyright Ethereum Foundation 2024
|
|
204
|
-
* @license MIT
|
|
205
|
-
* @see [Github]{@link https://github.com/privacy-scaling-explorations/zk-kit/tree/main/packages/baby-jubjub}
|
|
206
|
-
*/
|
|
207
|
-
/**
|
|
208
|
-
* Constants and curve parameters for BabyJubJub elliptic curve operations.
|
|
209
|
-
* See: {@link https://eips.ethereum.org/EIPS/eip-2494}
|
|
210
|
-
*/
|
|
211
|
-
const r = BigInt("21888242871839275222246405745257275088548364400416034343698204186575808495617");
|
|
212
|
-
const Fr = new F1Field(r);
|
|
213
|
-
const Base8 = [
|
|
214
|
-
Fr.e(BigInt("5299619240641551281634865583518297030282874472190772894086521144482721001553")),
|
|
215
|
-
Fr.e(BigInt("16950150798460657717958625567821834550301663161624707787222815936182638968203"))
|
|
216
|
-
];
|
|
217
|
-
const a = Fr.e(BigInt("168700"));
|
|
218
|
-
const d = Fr.e(BigInt("168696"));
|
|
219
|
-
const order = BigInt("21888242871839275222246405745257275088614511777268538073601725287587578984328");
|
|
220
|
-
const subOrder = scalar.shiftRight(order, BigInt(3));
|
|
221
|
-
/**
|
|
222
|
-
* Performs point addition on the Baby Jubjub elliptic curve,
|
|
223
|
-
* calculating a third point from two given points.
|
|
224
|
-
* Let P1 = (x1, y1) and P2 = (x2, y2) be two arbitrary points of the curve.
|
|
225
|
-
* Then P1 + P2 = (x3, y3) is calculated in the following way:
|
|
226
|
-
* x3 = (x1*y2 + y1*x2)/(1 + d*x1*x2*y1*y2)
|
|
227
|
-
* y3 = (y1*y2 - a*x1*x2)/(1 - d*x1*x2*y1*y2)
|
|
228
|
-
* @param p1 First point on the curve.
|
|
229
|
-
* @param p2 Second point on the curve.
|
|
230
|
-
* @returns Resultant third point on the curve.
|
|
231
|
-
*/
|
|
232
|
-
function addPoint(p1, p2) {
|
|
233
|
-
const beta = Fr.mul(p1[0], p2[1]);
|
|
234
|
-
const gamma = Fr.mul(p1[1], p2[0]);
|
|
235
|
-
const delta = Fr.mul(Fr.sub(p1[1], Fr.mul(a, p1[0])), Fr.add(p2[0], p2[1]));
|
|
236
|
-
const tau = Fr.mul(beta, gamma);
|
|
237
|
-
const dtau = Fr.mul(d, tau);
|
|
238
|
-
const p3x = Fr.div(Fr.add(beta, gamma), Fr.add(Fr.one, dtau));
|
|
239
|
-
const p3y = Fr.div(Fr.add(delta, Fr.sub(Fr.mul(a, beta), gamma)), Fr.sub(Fr.one, dtau));
|
|
240
|
-
return [p3x, p3y];
|
|
241
|
-
}
|
|
242
|
-
/**
|
|
243
|
-
* Performs a scalar multiplication by starting from the 'base' point and 'adding'
|
|
244
|
-
* it to itself 'e' times.
|
|
245
|
-
* @param base The base point used as a starting point.
|
|
246
|
-
* @param e A secret number representing the private key.
|
|
247
|
-
* @returns The resulting point representing the public key.
|
|
248
|
-
*/
|
|
249
|
-
function mulPointEscalar(base, e) {
|
|
250
|
-
let res = [Fr.e(BigInt(0)), Fr.e(BigInt(1))];
|
|
251
|
-
let rem = e;
|
|
252
|
-
let exp = base;
|
|
253
|
-
while (!scalar.isZero(rem)) {
|
|
254
|
-
if (scalar.isOdd(rem)) {
|
|
255
|
-
res = addPoint(res, exp);
|
|
256
|
-
}
|
|
257
|
-
exp = addPoint(exp, exp);
|
|
258
|
-
rem = scalar.shiftRight(rem, BigInt(1));
|
|
259
|
-
}
|
|
260
|
-
return res;
|
|
261
|
-
}
|
|
262
|
-
/**
|
|
263
|
-
* Determines if a given point lies on the Baby Jubjub elliptic curve by verifying the curve equation.
|
|
264
|
-
* This function checks if the point satisfies the curve equation `ax^2 + y^2 = 1 + dx^2y^2`.
|
|
265
|
-
* @param p The point to check, represented as a pair of bigint values.
|
|
266
|
-
* @returns True if the point is on the curve, otherwise false.
|
|
267
|
-
*/
|
|
268
|
-
function inCurve(p) {
|
|
269
|
-
const x1 = BigInt(p[0]);
|
|
270
|
-
const y1 = BigInt(p[1]);
|
|
271
|
-
const x2 = Fr.square(x1);
|
|
272
|
-
const y2 = Fr.square(y1);
|
|
273
|
-
return Fr.eq(Fr.add(Fr.mul(a, x2), y2), Fr.add(Fr.one, Fr.mul(Fr.mul(x2, y2), d)));
|
|
274
|
-
}
|
|
275
|
-
|
|
276
|
-
/**
|
|
277
|
-
* @module @zk-kit/eddsa-poseidon
|
|
278
|
-
* @version 0.6.0
|
|
279
|
-
* @file A JavaScript EdDSA library for secure signing and verification using Poseidon the Baby Jubjub elliptic curve.
|
|
280
|
-
* @copyright Ethereum Foundation 2024
|
|
281
|
-
* @license MIT
|
|
282
|
-
* @see [Github]{@link https://github.com/privacy-scaling-explorations/zk-kit/tree/main/packages/eddsa-poseidon}
|
|
283
|
-
*/
|
|
284
|
-
function getDefaultExportFromCjs$1 (x) {
|
|
285
|
-
return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;
|
|
286
|
-
}
|
|
287
|
-
var poseidon5$1 = {};
|
|
288
|
-
const F$1 = BigInt('21888242871839275222246405745257275088548364400416034343698204186575808495617');
|
|
289
|
-
const N_ROUNDS_F$1 = 8;
|
|
290
|
-
const N_ROUNDS_P$1 = [56, 57, 56, 60, 60, 63, 64, 63, 60, 66, 60, 65, 70, 60, 64, 68];
|
|
291
|
-
const pow5$1 = v => {
|
|
292
|
-
let o = v * v;
|
|
293
|
-
return v * o * o % F$1;
|
|
294
|
-
};
|
|
295
|
-
function mix$1(state, M) {
|
|
296
|
-
const out = [];
|
|
297
|
-
for (let x = 0; x < state.length; x++) {
|
|
298
|
-
let o = 0n;
|
|
299
|
-
for (let y = 0; y < state.length; y++) {
|
|
300
|
-
o = o + M[x][y] * state[y];
|
|
301
|
-
}
|
|
302
|
-
out.push(o % F$1);
|
|
303
|
-
}
|
|
304
|
-
return out;
|
|
305
|
-
}
|
|
306
|
-
function poseidon$1(_inputs, opt) {
|
|
307
|
-
const inputs = _inputs.map(i => BigInt(i));
|
|
308
|
-
if (inputs.length <= 0) {
|
|
309
|
-
throw new Error('poseidon-lite: Not enough inputs');
|
|
310
|
-
}
|
|
311
|
-
if (inputs.length > N_ROUNDS_P$1.length) {
|
|
312
|
-
throw new Error('poseidon-lite: Too many inputs');
|
|
313
|
-
}
|
|
314
|
-
const t = inputs.length + 1;
|
|
315
|
-
const nRoundsF = N_ROUNDS_F$1;
|
|
316
|
-
const nRoundsP = N_ROUNDS_P$1[t - 2];
|
|
317
|
-
const {
|
|
318
|
-
C,
|
|
319
|
-
M
|
|
320
|
-
} = opt;
|
|
321
|
-
if (M.length !== t) {
|
|
322
|
-
throw new Error(`poseidon-lite: Incorrect M length, expected ${t} got ${M.length}`);
|
|
323
|
-
}
|
|
324
|
-
let state = [0n, ...inputs];
|
|
325
|
-
for (let x = 0; x < nRoundsF + nRoundsP; x++) {
|
|
326
|
-
for (let y = 0; y < state.length; y++) {
|
|
327
|
-
state[y] = state[y] + C[x * t + y];
|
|
328
|
-
if (x < nRoundsF / 2 || x >= nRoundsF / 2 + nRoundsP) state[y] = pow5$1(state[y]);else if (y === 0) state[y] = pow5$1(state[y]);
|
|
329
|
-
}
|
|
330
|
-
state = mix$1(state, M);
|
|
331
|
-
}
|
|
332
|
-
return state[0];
|
|
333
|
-
}
|
|
334
|
-
var poseidon_1$1 = poseidon$1;
|
|
335
|
-
getDefaultExportFromCjs$1(poseidon_1$1);
|
|
336
|
-
var unstringify$1 = {};
|
|
337
|
-
Object.defineProperty(unstringify$1, "__esModule", {
|
|
338
|
-
value: true
|
|
339
|
-
});
|
|
340
|
-
unstringify$1.default = unstringifyBigInts$1;
|
|
341
|
-
function unstringifyBigInts$1(o) {
|
|
342
|
-
if (Array.isArray(o)) {
|
|
343
|
-
return o.map(unstringifyBigInts$1);
|
|
344
|
-
} else if (typeof o == 'object') {
|
|
345
|
-
const res = {};
|
|
346
|
-
for (const [key, val] of Object.entries(o)) {
|
|
347
|
-
res[key] = unstringifyBigInts$1(val);
|
|
348
|
-
}
|
|
349
|
-
return res;
|
|
350
|
-
}
|
|
351
|
-
const byteArray = Uint8Array.from(atob(o), c => c.charCodeAt(0));
|
|
352
|
-
const hex = [...byteArray].map(x => x.toString(16).padStart(2, '0')).join('');
|
|
353
|
-
return BigInt(`0x${hex}`);
|
|
354
|
-
}
|
|
355
|
-
var _5 = {};
|
|
356
|
-
Object.defineProperty(_5, "__esModule", {
|
|
357
|
-
value: true
|
|
358
|
-
});
|
|
359
|
-
_5.default = void 0;
|
|
360
|
-
var _default$1 = {
|
|
361
|
-
C: ['FEhhRZjgD5jnrn3qRfvYO9loZT74OQzeLoa3Bq1AxlE=', 'CreykTiOXJ5DwNwfWR+4Ps22UCLhtwr0O4p7QMHf98M=', 'K3y7IXiW9SyajAiOZUryHoTN51SjzvWxXE1UZmEtat8=', 'K8aw3b4dcBtlcEKL3Byhvw2ln/O7u5X8K8ccDG5nplw=', 'EjpVoxmAOE89ILLOy8RO1gw4wR99IOknHvq5qQXu/Tw=', 'A3UBzIydyBkwmnafTfCY5YiwGFi8jrfieeKIO+n7jFM=', 'HCEW5H4DqGuxFpWwpfbatrmkYLHrlRqwHCWeyj/UfVE=', 'LBghNIkDLoWpyMuOmmWDm/rtE+V7wPrknb2uv1T1b5M=', 'Luj+09TSxxoEKer9jl2xcY8p4iJ5hf3yrYcDyDW54DE=', 'KMZNj17XqsAEySAp2em/kbqUNtHM6UuTFtERxwoMFxQ=', 'GKAdn/t0euDePoPHB/iyT2gshPFav1cbNCVKA0eGZeA=', 'HCHZK+8ZfnOyNOR3e2DbFOZCpWzucVFdVOGscc3nK9M=', 'CtQEzLyx4ZWJfLYMgJgeu51mpmd9u+2ti2RV/mLYB7E=', 'Cptt6DMGT5O2rbma9sAFlFy2VMt70UyLl6+LYMwfs4c=', 'ExKeP5MK7W1HaQMx/wncUWDvpY3c4sPmGA1FvsOqOm8=', 'DXphTImRUIqxzkiVgTuxyC8Yv3v8nigMzKGAeYOTh/E=', 'BTL37DbjAEGwSGmGh1yROkm93y9a9f6+jDHy9AlP/qU=', 'BrvLjo4YAgEpPnEvSVDxsLvugIydZCY8hNnYrhVcuJI=', 'D1WKTbGjrAf2Hi5r7pR/c1hr9A8hHOtPaHylZ4qdyzM=', 'K+FApgtbXy+O3XioGKlpsgxkPkGbzwtXfCSg0Oes/pg=', 'HEnEuanwn3ua1fdOusxxBRK46Ge6zifLDeoG6JuW9jE=', 'FwwacychsSzefzPkdqOaGqd6gcBuLqxQOEewDVl2Uts=', 'GcJ9DlL2XKNPTjGgaOSTMca/w52SQfnUwwIEFhXPJ/E=', 'LxvcUlT5Igwacx/FJ2lk2rJrOF+kC2sEvtmWDiVDugg=', 'BbQtL7zL9NOdK+kznKvp0Nxtkh6FXNkRVLY50o1KHPA=', 'EiAEBxWkGtWfT0EODAWkLF/TKsUv6dBviBiNcfYeCTU=', 'JflSZSYVW4OUZgn3u5UH3Ukl74cd7pFtkUTrtOzhNDw=', 'AXv+QoQpmud0C20OIElR4xSopdBFJBkUeXipWzR0JEQ=', 'Kl1HZAIcpx14qWdMtnCPFYjSzq81eMQRHPizWe7wic8=', 'F/Atq3RfvjwIEyH+XO+EXnuNBwslFNKbKnt9icwIFdo=', 'GdpiYm23GZtl9K3PV/pKPbqhdkp70VVwjubzeMie8BM=', 'D4jilfou2BtCbJH6aTZqc+33Xzm/GGNM0mbsQDiCngU=', 'H+McVUhUbHlI/k7hvXQS4ygO/30gywmqhfSfJ2YUgBc=', 'EP3BYTvb9n84vd5WGy+R5MxItZ+Y1kNjj9wK+tv+Em4=', 'HyYYwuvpV0UIucUvAADjPr/drRoD/da8pu9/AJMSe+8=', 'Ep/n/D76xqirI9um2IbzlNoR9ZU8+Y4oJpoNuip0XdM=', 'Fa/UzfHk+CDBYx1KuFykujuvz+5yvq3p+uYFIxAkSOM=', 'Hyx0ulw2fjcNco5x4VsmiFGnu4tFUoy3NJVgeayZsBI=', 'ETDhhy128vk2nPWble35zhnwH6icnDaybgne9nhtrTw=', 'E1I9Fz9+a623O2P8HJu9vuJCxhvGhlZJMydTOlwbHco=', 'FNpA0K9CemXxhBta3JZThlM2j3JUy1Zn3a27rXpXTNQ=', 'AJH5ZADkKX6oW7GGwXswToJjjlf9Yx/2MVl24aXdi4Y=', 'MDMpv5AxxVFbmjTUmmS7agJnvHtUoN7KXEUCd6ACzcs=', 'FO1H5VwdocLwXTwaGy5sGFCfyDNuz+nbc3kW4oP6ghs=', 'EWHxCzV3ddgQrVO8xKINWt0rAyUcdH3rBO6UxWXljWs=', 'F6ilCucs5wfyK8Bw65koUcqRTrlMxo6vu4qWpxTrgiE=', 'Gmxh15Xbr2L5klCzfsXfiGRaHBU3kdtjErky3CUOT2I=', 'H4vSq4qoQGZMTu4ZjEaE3EsFdyuyoIadpnIrFfRHoTM=', 'H/y4UqTwAnqXmfExzXS5jM+4y8BjSdj+/MYvEMj7Pi8=', 'A150LsUvGbNtSJxyD0Z/+td81TvC213dskayMCH3nxg=', 'Hfqu5BvflNeDqin8Yrfse1VnOqgY0wX9QtF1oF8uPYY=', 'KCE3hHegLplQBaVjUIhUCUW9Mz8tFFXwOKIZuMR5azo=', 'HbSk0PI4pXCxBhxu7IHALzH/3Up8GedjF08jjQSJdCE=', 'FL94iUV7ILehNns0o6U4IX1pO1JCav9ApLtyiTsXhMo=', 'LO1Swr8pb4fldBDD7JqUg6eW0WT2BJEnEJ/w06nAhGU=', 'Hd6sWAWn9K2k0EQe0QjjFJ1M5lhPSa5b39RtZ2buozQ=', 'Lja05enJe0YjBOjitfnciOHJ8hYboEBnP5ERI/BCrnA=', 'DGhA0csGZtxZ6JsYZSddihZLRHxe1kNHyu5jUCwjjV4=', 'E34uPonnHUYfTJvD6PEhgyYqTR21XFibLK6qwBI49Yw=', 'JQky57CtzyyE7Uv7YKNra4LlWqlHURV7HUV5Swgciq0=', 'FwpykvVjTAbdO/CatcnE7NSwDVzi81+XK0VVOR8WtC0=', 'DWjLvnconnjVy/UdcPG3W6IV30570BSdELLFDypPO4E=', 'DK90VjuQUl9kWm0gNuzRMG+h3GgLSdnOTtJMl0mXMXg=', 'IKfRwKJ/zOeP/jcvTFgwaxZvlFbtRs3rJV45W30w1Co=', 'BiPzImtUcLJ4m4pTBA5ERDOF6Wuc+gvk01AVFYpGhGU=', 'FjIwhojCXnkPV9aKU1AkEkKlYwU0feSlAJzka4zcuR8=', 'LeR5Om+ZzRTj9mQiEfTQt7z6NhWXxUT/y1pWfpB29H8=', 'HU0G0Z6hsJyteQhtUb3hFyWlVPqZVZyi8J87tz1yjGY=', 'BIDnR5pmp82ephyLKJdDiZCDUKvEqvwYzXXjPdEwwUQ=', 'MEMLAzaOvKqRJGlgSQvPkX14aBRj4ufXRL+0QzXawk0=', 'C1ezcyASfUxQ8mkSSw29yysfE1IkGl0SEDKD4InAx0I=', 'LPSJBlDSckDhlfYKT2mO2iSbjdYUsjN2tQF40t9tK48=', 'HiIcVSaJi/0S3oaFGg2XA3UaLyOQCKtfm307aRHGQYQ=', 'KOB0ha19mS7RpY8ynKEq3OTsaT6927KVLlTTOfLuvaU=', 'L0TWT4TeFtxnvV6tUe+x3IOByEUgwShU3V7zoHms1OA=', 'BQp2vDLr0d/ivjMPME7ces5xZ6t7oVFvQCHGLPDU+sI=', 'L1jEXl1lmmfXgTZyQfbDXYy0Y2HZeyiUfSlCHCcFlKk=', 'JejamuDkLoQOBLIwNw54K9tnU0hEMlujb8fl4WDGanQ=', 'L+xzTaIP4yAD6gTxJ/hEck84o2i6EMKVRCUr55YED38=', 'KIpnePOoOYio7Rcn8V6TtMsU9OOju7kd1tH6yv/9Xu8=', 'INzGx1/Yklm+f0BnULPbZ5olqM0nFdJFuRdTkKySLIQ=', 'F/QroQlC3yXLilQXgqGLb9Mc+WXREXjHsErEW03qXdM=', 'Ao7rhdEVqQQCDgxhSO7GYD6c7avGZKvudkqv1FWYa6U=', 'Cx187POnmyrT+imPbOp66V2AwCmezJGOn4ycPTjVnUA=', 'BEAznJdkzsecFu/bg0omJh244/Es4c9yLSPA4R/0zwc=', 'BspkfClyfBlioAIXfaLVBPSwel9+tXx5uI5reru9rVw=', 'LqEgqGT1xAk90ali6PATx7jvd4sE0rpb/DyrKGGbqeM=', 'K7c3VGxK7nwMwrqHwRV+KnfEeev7Xcdq27Oc+Gl2M/0=', 'DjDaZJBiXTPnnNUBdvVo+aLCjC9EmivVGiXRVoaAOpM=', 'DffKcnihNlC5GdhUl7LrsPcQNafCBDDUEx2QOrf1dSE=', 'J8xYn1v1hXlKus5Yn7inSi94TAmQuA/KppRAl/hw4tU=', 'IlXDajjIc13kXO30Uq+oQjMtMwQveOYMQ8dFVCGzJb8=', 'Ez2WAr0zeNafaBwnsFvf/Ji32GzKY9c6YMrtSFeE0Ic=', 'DhVI6UKunT4mhgaZuTcnyBeplIYWyT70rM2YGx3D14o=', 'DyDw5V2TaJ/gnsMS9q9HYnSC5L3goWAqjiyNboTopq4=', 'LlIyhIPLW3/y605FsS5RsmIyybwXtykpVMCp9r+lG7k=', 'ArIWLVM+BZpu2iq7dHEu2zp4YL7qld2KSr/JV2YIBPQ=', 'GeCSdxXRzG04lCmUf7Nzfa1zOXTGsuE+Wz1DJRlRbHQ=', 'DTqABFfXd4VjYwO4uU8X3P/LRgSIcqyfdO9/J+5XNwU=', 'LJdNGVJVehqsX3uuSZZhbaYZtz9EHE5QTcj+nPtVnjI=', 'B2a/7u3izPNwjhtP8wcUwiwdQ0zb6PVVFLq8LdXZe+8=', 'I9rI6lQIL8Ex4XOuVeRjDNTKfIcbKgpHnB505/GR5iw=', 'F9X7bCyzcBDj41irLVdTdocO0zGGuOrkmtO0fjQKjX8=', 'F13Kx22KgSYTm1g644hTKQJG5D54P6aQPsgAfxeMACM=', 'DE/Qj+3l0iGtt6v1SYmMkeW+foW/H9KmEb8YLMLnFlU=', 'J3k0uQnnLTo0dbsex2arejitWbEoMD/FAC8Cplvf5yk=', 'Dog0mZjf5wPxsYRST5w5TWAEzKz5y5UolujP2wsHi2g=', 'HxsgeLYLD84Hgk4qK8jK6O5nNRSwBwqLRXEMx4y7mUI=', 'LrFVlWbFNt28MW9kgtUfo0BVdldwD1uKhG6BKg7TNNE=', 'HE29wzXPZ2Q1Ugi0ydJD00VB1iPGad7Cw7oGa76vZ3M=', 'I3SmstpvjKuOXP6NgF3Tot/KHot+ul3IV0Ah/RJB47Q=', 'Gd00JTPMxgOplzjj+1pWm5TvcbPkn5D7h09hYXMwcvQ=', 'IX1m22x/s+/6UIgAWH0us8bQPYOFEy8vzOfzXycFzM8=', 'CBX7hZH+AQOM06OziyNvnvynfGGNO/xsKn+okpbH5k8=', 'K7lDtAwr1FamwXhTscqI6w/zb1l0sv+aX1CT6b9joW8=', 'EaUVP85llRPufLmXSubLpYHjtM0UVwxXCf7D2NP8guk=', 'G3K/0HY12FAbLv+HhaJJW650x2U8+Q5tXJ8URCaDbfQ=', 'FJAsBwDuyJeuF4uoyvhQ15Px2HUSvqDs6jnPax/uIz0=', 'CcE4xuCmFqSf+Q1DprBD87dFt4hlhW3EwaReL9hMs/Q=', 'BbWKPc5XsoGicdaYlQUtiHRYpxV4PoMX4CSmGjXsELw=', 'K+jSlSXAz91eazEl473jv1WOVfvoZ/AkRXqWdlR00Dc=', 'Bh1y948bqdxrTX93hCJdaoG9/Bta1sJDafnAVgUj2a0=', 'C/GK78rP+r30ES7drcphRXOLSAOzYUW7lRbbUBoGkuk=', 'LnPdEF+osuyTHYzfKexnnjqYAakwcafV6jBlklXwO8Y=', 'D4RA72Z8mugTN7pdjJJ6U0fecpaGCyEcrR7L+101mO8=', 'AE0wOy3qYnsnMb6D+TrDTn0U0XihOABVjKc5Y5XrEY8=', 'I0VBrXIECnDaKZajUmkjDJRpnu8xOk1IBQgAjLw9N8E=', 'DRI/HnLSa5K92P1z0UKGwxKtTCOstGsuCMFXEEQJ4XQ=', 'L7Ngd28N551wmO56pBI8Be5rBai+Rgp3TzoEjhOFRbs=', 'A2hcB5Q04WcnbFfTzHlwO339xBwVbqHot/mbaValUyY=', 'Jgrw4P/8yXcsFjGxeTRFZrR6qto2geuQNMb3XDcFwcc=', 'KGK0E3T4m2lSdLM7dz8lVJFuK/+f9nJUX8L0lWP2J2c=', 'AqmRL+FwMQInGJ6h5pHQNi8Ys4tACw7/GSyllRPrqNU=', 'COUTreaUoNisHz6/GpZEDTLHE9UFjhIk4HA0jCgfSm8=', 'FApKQx4u55QA7XRll42EdzITxigmT/gPIax6a2c9Cas=', 'KWr00BnLXffZWbKdVJw/BxICtOuotT3F7pee0UM3eSc=', 'AYMuKEp/TIFhSIK2k5/A8YVXO9ICPj5QV2VHC7gSs0k=', 'GoTVame/3T2WWr3NMpqnjU/pNDRJby0QOGH9GdZtcmA=', 'BAy4KEd3OSfSrv3AdIkDep0fdjHsp1yfsN2gy5294UM=', 'AQ3PCEzCnLfK7PJqpjO85O0rAZ8oh87nsaePidP6vi8=', 'B+3CKgkR6iFEJe9UK3dtsjsP5YF4ENQMcsqYqr2a+oM=', 'LupKsIrsd18hSEeeo2+7lpNtpYuki9HS06zUgXOqq+c=', 'HkDA6CV/5KYQBc3PrRSM9/R9G1z936oIJzhpVRgkXxk=', 'I6J4CVg70epR9DbeVEPhCPadRM31HcHwPiGUi0mAuHY=', 'LkZSsETb/kDmO2sjL81fPzmr+9IFHuaK3HVAgNSSUKk=', 'Eeer227Lr8Ln2M3v6ce5xQR160dds8LK9/fWf0hXdfI=', 'GZ1SNQzDDoxzgh+AIJbw5UehNVGye/a4mTlvY6xc+Oc=', 'D1ddbuZ8vs2YNFYk4DKjfIWafL7zCz/dyUnNCXhIQQE=', 'HEtvmiritBjmJlrLqclrBhhNBwKOX7eE80da53cv8Fc=', 'Lctc+Ilt458ijhV8DFWT9GJvubwiUgY4PbIDYKvwySU=', 'E0CrufThExhr3CbL30vMpQtTGhB/hjylRFdePPhw+OE=', 'I2jmkrcnh8uIcOqIjnFOAG9Z0rRGDPt0xIqMxzsdGls=', 'H6ua3ZuqSk9W8jFld1xvLZIqdjKpT5Y3S33IUnVvVLY=', 'DH97gjANPGzj+JV7oeSt1UxMAV4g2XZdIgVxwWq4aA8=', 'FdY+hr6s2Txgg2iOXZyPPGlHkp+fH5mrV4pMOpIu/wM=', 'C+hDrl+bB+UlcheK99ro7QXTaxLAYHhikpNV6nQCPZ4=', 'EzJ0nFI2lMtpNeCWOgfoGwWWfOHZUMC3MQWOySp6DJo=', 'JUOUCIEOB0wL3UWYuYFf7okruVylECns8Am/+lubloI=', 'BX6NGd2ZmpGNopsJQLODup/RXbCw9kmW3/Z/61X5p0I=', 'HgFON+mxF887SHDZmfK1XTU00Ka+mOnjV/pD8B5wop0=', 'Gk7STm4DrrzWvbEAUz3JZll6/hXIUbS4Y/boiQhMZHk=', 'JTQgAHCD8aqGOtR2CQXBA57UERyfBT8ncQRS+DzjapA=', 'InahRBlxcJr/5tKpkyAAHsRexyFVxXXd7srA4ydZqwY=', 'KJV90SGOp5n9NBHrGTJYU633rorhKB91MwL+fTHfp7A=', 'L9klcmq3lMiL11eWqj5/HmaS8pFM+AImfd8B43kCoAg=', 'HPilycdqhLFHyCONklPNVbR8DEPYKWbEY2ooZ0cF/Zo=', 'A3PLvDBuG6uecHc2hxXmIwtLLi5KHbnGdLjDWaQekQg=', 'BgKD0v5/I9/1E9kRCz3GJEi8SPUxzgweq1kgvyMpCkA=', 'DatGXW2RB0DzPvbMDq3HG/gRm9/Vo1J9yLv636pAJjw=', 'DLp7y8giSyqOSroXl3IwpobNZCHcDKU0bzRGtiQ5xMM=', 'HkNl2weQycT0RbBlPEZv8h25bDi0B2uovWi8tN6mkR0=', 'G7LbohmamrO8hu9fnef2xcoT1g6rQs7WjemPxkOACo0=', 'CtPBhwxtbvQO661SEjzRopE9nWLoC/usroEuCCAh+co=', 'AbCYyR57DLtcNFiAd8Dd+VMA3fYUk1YwwM46JickUwg=', 'Gf1cDqwU+udZi9TO6jseKZiwwWhJO21yrkG1duVbnD8=', 'DUdJ15zBY/FxEKQEpG/kJ8ZDTz/me357TM+mq5W9fhg=', 'Hrv+gRSkG7gJ4LMzmSQSMuuUCthyjIpRbUCtpEDb/c8=', 'JwTlthM9l2TW0/F9SdgzIj45N/gOufrqu/upuvS0wbg=', 'IWXhyAJzBbGuDjI1cWNeXVQNE9cQw/mjkLaRPxTQNeM=', 'LjSX5NNf2llsBq+mO8Og8uVdTuukrOtg5lCBrWOqi4o=', 'Ax2kNF7s1ttsD3sHx4Fdet0f4FRtc49NeatcV6qEHt8=', 'CJ7OVOR6pckI5D5fCHN8FDaWcIkAasqxyc0Z6sSiCHY=', 'L1PBXire0zxH9VoHBIPmzH84Ifv4qkBnfQVS7Z0Q2Ec=', 'FCqjT0suitDfeiGz45wAyLCqKFcJSAHqr9cr7+0Hf5M=', 'F66k2kx7zw11iLAU64tAl53Scl7aTmrOMxmCRnx/8r8=', 'DpcMGdGXSNjEZRBNjwIgA2P5pBeG8C8YJ3QrINwNFyc=', 'BLytnlU3lWQvWbr3FKa9tDL8RaCgt38aujqYI0dt+bk=', 'JCwL+82qdvcV29S6glxx/P7WccGxkB+khMh/gQMV0M4=', 'JdsTQ8JBBAcQI/tu002ZCQeDEeHv6FrwoRsZEU+p55A=', 'L/5NnEIKWenNx8Masr81GHyhR8uJijlC3rNnd4YDaoA=', 'EluwOvPizxi75vW1kOs7+NDRumO+aWSD6Y8oO8fNB6M=', 'CBa+QnRbfbtM7/5bjiTqYP2LcZ3rpQA3rHt1lIdFxrw=', 'ERFg+az27DYNG2pxIxOg28viPmRCAFVHHS7kxd7bNdQ=', 'E3eXjhsfaokl+o57eUG9+PtZq5VCNCQZKD2CA0Nck5E=', 'De/B2IghZu88zeU6TyNvuoPThGIZN87lfkIaUT0NM5c=', 'L4+lx4xwbjpdSgPyp6OVMEbX6Uy4in7zUOZ7W6Dw3r8=', 'GiqVfsCnI9phwhNLqwvxe+sA5tzYRpDCMNy55Y2pSCc=', 'HN+HEJlfXgNBK0p/aZUy+f0B8OoWeo38Hd834oBa3e8=', 'Jv0xRxgow2rjbCe3SAVLDAxP5SObMBaZ43Ze6+zBiUY=', 'B3XZlswsRFbzA6LB+QB2R+Eakh2f6j97kmFDuZ0voL4=', 'AW+5M3cIymOM39qRvQ2uprlyJO97IGJnKt3RvRi7iQA=', 'LDkvvn0/3kL8pPlHi7Q5MxJYJVNW8YSvb3bxGQVBF9c=', 'GHoqO/eaafo+UInvnx/Vb9tHxV7s53qiKKo94bSGvLE=', 'AnGoY6KAoyZB/6M1ELLt0njJhjA1lTLz5Qaydf1dIM4=', 'FVdFnJx0yUqgDlr2mh4xEvtpU3zol+wMcYlY2WUW8qs=', 'Ko4myo1kfZpjiFFuqdz/iQg9U55YFowqUMba4w8QnyE=', 'Ict1IZTPQ/O1GULrAEDrqd4rz7HCo/rpeSS3EPJoMs0=', 'LCba+Za+JHrNbdSsrWDTi1pHHmMiGI0CwTfny0hDd+w=', 'AkAXbuDnmC7r6Spo0+OjjCaCGswPXQWM+ME3vKLSbxs=', 'JjbglzyGXBvZdN142qqNCoTNr2vhrUfs8qDRjxFzGPI=', 'GehPTyWnmUlgQWYdxdl1toH24GdEzuibe+XZ/eF0SsA=', 'Dr+JBko68kfKHzb281cBiOJx4LMmxPsmZk6J4UVMoRA=', 'Jcfpe0db4A6LVZo4xFI2T0ycUx/suKxpj3/XPOIucew=', 'BETJnlkjU+WuyqMCrdkBwU2MVScKFgr+1EKe9VmK108=', 'E424iHgwVl8mk9Dg8C5OeeFEln8LpTsDUZq6dktcmUo=', 'JNQPRiEU/p7gKq/PdLT8ok4a42XcdcO1K7E8u7LyHt0=', 'IeZdbY7kN2C8pA5zC130xM86inMtsUj0spUbTGHWjow=', 'JI3XlmnsCdvwNQoV1sdcapvarO/KFNUTAJePE9GrbRw=', 'K4I4wVSPnL4p/TXPkee0jw69p+Y57faf6NWrp5JNU2I=', 'JDn9I5JX84GBx7489RPxv3I166lPa4lCqUy93s9vYvc=', 'IAlYI1KBphuixL4KoygqGMdLbSYvXefC4z0rs+iT3+w=', 'Dh7KXfiO5fYM+n4f5b77txn62CEfqbLQL8wjMZDBfxI=', 'JrU0J/mz6ix2nZxmD8YIgaFpwScy0AG3FY7ksbhCyiQ=', 'IPOz9Kyv6fivPgZmGzqPd4+igSUiudcKZ0As/42ysbQ=', 'IR5dKznWJSCnpifs6MrLrJ+XUG3vTsKGkoumwn1GOxc=', 'C7dD7jSAISnFVnMa7Z0wLc0IUxPOVy9iQtE4MuU2tLQ=', 'I8smYbSI7nHkx1P/I65L0l2KRAlPZrZTKXfiIUDrpcs=', 'A6NaoxI5Ec20U1uu0zWfX2pSBbnJPvMdNTI6R4B7i8k=', 'J4A4SKCu2WqT+pQ7ZjXkUCF+E39K3nSmLXkXMicUtpc=', 'DLN4OcLJp/95iEy+x19B6b5eR8dtYVOCMb2BYpltb2c=', 'HwAm0L8fjh3VQjzC/sH7XNqh7NxMPLIY287vd8ANL5M=', 'AqfXu5cLim7S7mb6u7qVa22jsQD1tfuSju9C+XCCc8k=', 'DP1/QhXkNMjaF+wyWLC8YFrRqy6QqklDUeTuQLvEkfo=', 'GAsRtyBiKhVoSdxvf25/VxZZvmloIjDF7ZrDOXAKfN4=', 'BOlqllvOPToKJKSkV8lRWCyHE0nOfu4aq/5XipTGUBE=', 'FZMfeCtF9/tlbyzb0fdwXDU6I/4dMKWkahUi7RYN860=', 'LiluV8l6Uwms0m/r9VrJY6VETBxfcDrYig17l7ndOLE=', 'JhV7zreOhGu7Ji+aHgbUJxveWlvOjwQZlS+X/9E+rKg=', 'IZTriYR9aw8Yl/Z18ZwMVrYbEySO/zyjbjT7nRx57kM=', 'I1C/NUd2VomRUa193pbqeFfhVQFEcAjatrPSfI/6J08=', 'GkhvCuWRys2vCcWKScTReVQFQ1NAgZ4APwRp0RC3dSs=', 'G1bc92+yPMSoNNRVpAZeEzVxQCt98wnVm8MQXUKowwE=', 'GnSdeWSvC3ICkT7yBMZT8rS/tlzqt7aFIzq1nOO7aSU=', 'GK5ZAHP5aWlq92L/pOjw67+X+Mx4fjfN3R8yG+O+rbs=', 'IcR7J12C3eZGDV52mplCEUSxxanaWSlK3py7MXED8kk=', 'BHPdvVLnN+UnNk6OtjIHl1w41f1swysnIQKwgs0VGPs=', 'CxL6yVttOogdiSZXyEJOZFrE5rAFFfkC1ZRXQwKybgI=', 'CK52FqJgz2ZX+Pc6woRYjSxfB/9CXYN6p83O9j4+IQM=', 'A52vaHYoC4Doc78qMv0oNKg8aXV7rdWKiI74Gekmzig=', 'Jeex10cKPHXxPwtWVGyOCfLY7+/wbvdm+ceDyoadEw0=', 'Ho/TY0w/92QYTQNDX5hYSxG1sVrrnHUmLaPx6iwqnno=', 'JB3MUaw3gIpBXdHjwoHwWv8ReJ3Ayv3XejVITgmT+aQ=', 'H/wxU8Vu+XVZMs6ivgVzdJva/hxPoHgaS4tAeM6ddUc=', 'F2MNYtmj5RDIik1Dw2D5K8D6ALZgMa3sKb2VQ/06F+4=', 'KYBADt0ddOPWnbVFjSzNX6vbI27BaoKkMBoKtZ6kpuk=', 'MDT7JDZhI+xtyvytNXJtv7FhlMA23NZI+mlDm/zQDNQ=', 'Gqfo9Bicqd/z2yq3ZIvgojkplc5GBB4EaA3KitcjLfA=', 'H6GV+DSmnmI3L2DrSX2hZ2RurhQVPYA7OdxdEfXXgAs=', 'DyPxx01fv2GVrVpq7l5WmTxUd+hFP1uToNe6/TMwNtM=', 'AWVW+sk0inNatQqgiclxUbPKrwogo0+52TcFBaFRVyk=', 'I9kreTZIEQ/Fru8GM/DHfKyw27yhh5uKb25d9EXl9ws=', 'LkwQ7F5l4vI5u8Q8EwMd8mhqtA/XmjBLBdYRuCPyO3M=', 'EkGLv9d7Y61eFoZK2cMv+/xaPdm3jsK3kyn+XgqNKVM=', 'HkqKrOFavB1bdqnoSEMdLAanj3K2vrsSk+bFjlGFaW0=', 'Dz6WEH3s29aHLCDqCaz5LN8Xo+4dEzFIgJLZYXbet1U=', 'ASw3gCB/OVzCHesKvZUWge6jJJjdumzol6j58MI1cGc=', 'E+qxtOZyuhscG7kBdpMB8eVlnQPqEMYd4kd/8KwiFCE=', 'INxmSrsgt0VsBmKc43oeyxonpOiyTjG0i5xGNaowMj4=', 'LGseLP6njiw2eF52qM+xsFfpRx8k9bORF1w97LAeAA8=', 'GIySYlX1t689qWNVcpwqhnCrTCxwQASBsqyQN0Dgxas=', 'L5kTII4J49bp5vumOE/QdquJ8mYpduPjDghwuzDrVPI=', 'KzOAPZCIlwbnFPcgtWKNJvtgtUWh8+nOSaaukSsCQIY=', 'JsyrwQ6wQyfLXMPd4quzbwlwhsl+c4wTPJ9XB350iwk=', 'GxauDXxUQIy3X9kx8kZ1HysMPcINeegqJTG3bCK01d8=', 'EdC7RhvYryhE9J8PhAyU75UYslETRHQtH1Q4/j1BWuQ=', 'IzAxhHtHa+rQEY09szjokTPsQg1nPlBK1kclnfZVVx4=', 'H4TpeJW+5DjrPJLcmxhGya0pwWQ4ewautu0YQe2MTco=', 'J39/m1QvDCu19FvtBU8JYkU2AQw8+UUtInMZMyf4AdY=', 'HvyckGnlBouqwT0uZkVkG30n6A/CMHcWFTXERoLuV6k=', 'DW7Ed3YeLvusTxSzvz1SV6meZMPyX+EE+vmIsg/l/0Q=', 'Dg59fFUBmZt9Fhc7WbfK4fIDvvIa6/ACUYgUOcz5MBM=', 'IXvvL08SxtzJHCBYojORy3feU8puRNzcbqPTb+oybqY=', 'BXgMiK3wFTG1D4F+P+RER9KbNaqKOJxx6M8SJqzvaLo=', 'GHM4h6ays7TJDY5JkBluI0ReR9fqWTnr+4mj7j1ntL0=', 'ILrOY6z8rgscnyvuJLjp2oW6WX03sJBXIMTxXbIxsHo=', 'Fm6llTdaZ4asUn7p7O1z7Wv1UIdqvK86yStCyAiwDY8=', 'MEJiqe/0BArPQ+Mi1vUmdq4vhT7C56gNsAxIjPkXx04=', 'ImuscFAWbl9tt4zQsS028wW26MmgVRFK13Ceb1ckW2s=', 'JrL1OcVzgp9qypG6qVRQW8XD604d8dY4WCcX+98jiMw=', 'BqD79M1S6Tul5MbEr2XbAu6WKX+K0gDy8c/yUudptVE=', 'LLnCQRLTU0Gs6siDYPtSiSTli27KwyG5+ynmqjNo/yM=', 'IOiKTWB1Jt0H/gijVSpEZpEp64f8wLE6rI/or9kwFSE=', 'FURkmivXPjunLzlt+R3WVAHdj69R3jJfuu251TatlPw=', 'GYAHdFeZVxLETafhdxMljj+Os1S/2A7Z6vPsuvaWAQU=', 'JdHSL/E+dwXTwIX5f8Tk9pFLgv+qXSCR7GTaxCN2Xvc=', 'L+yZDvVW7+EDWkZP9VgedAZ0Rc1Uq8r2uMA5n+DSTPw=', 'G9lWNQbZVE7z5IMOE1RQEsV5N5wtzBMwQWxK5JvE7GE=', 'AK/80XumADxW36hVcfwpc3siWoDUgOfdft7AHxTyMBA=', 'I2cNuu+WaIHwf5GaLYgxKMeyPPdnpHeysuB2K8DbwYs=', 'H5OlMpFzlMfiL9F6vupjicZv164t2fAvhg9tlpR/Dt0=', 'LeQun1N7fWGwITdxwOdPVVUSvge2pQk0c04sW+tAvjc=', 'JcVX9FuZeBzTfTuyKTFmKmf3izd4LIhbRWu5bVXohAQ=', 'IHTItwlwXJiIU4p/ijxK/2R3Mb0W+OJU+nTqnyvnZiw=', 'Jzg1WVYpgTiUnkQhcdak5LdO8gZXQNt8/DoLYP1XOss=', 'E9Nq0KTr64GWl3hkllnGXLfQxBzFGYcf23Gp6moMqlY=', 'CKLBi6QTgTSMGs+/lhdxaAa0YqFpG8LjQ7ebgIXjdrA=', 'BZCS/Dla7ShYB7v1V62aEEH1nAeYIrEIhFeIL+57YSw=', 'FhkkFRtaWtLYysEZUiqZGpBvFehTHccFZ/ayg3HMJOM=', 'HGjKj3qhdlkHVAXvY0G45popi5pNcvO7hUswnkuoehs=', 'J/XQO8ocggf3I5pLLPc65VmhWqN+e93fOqsF7sXOVZI=', 'Dsv/SEaWKpddNH6pqPxGX7RoYVV2IvLCVkp+Y5gzwWk=', 'J3xN4jY9i1tFbPxaf/jkb/LsjapZhV9a1kvAUh86xWc=', 'GxGGLFKs01G3pGR5P0+7V/7Jn4MrYyJvldF1yNL8CLI=', 'BqcZxYTHT/vdchjrVly0yL2GyS49+zxz4VJyAapRI04=', 'Iw5K3uy3mYd/fOmljINrmdUzWEoZXB13oxOr4cfRJr0=', 'ELEJuGSAnEdnoTPM5sutbIhigXO46lHozKhYMMp95SI=', 'DiEReXDc+9SxUmslNjbzd1ONO0+q61qLJL9iANFMxZE=', 'Jmc0mXhAE2L2sXk57rDmT/VWB+vbNccHHbRrs+e6R3g=', 'BQAPpf2lBeApoTv+MEwmew2GxywDm6v20/8C7iRr4C4=', 'Jk2eCUrtX0GmAkIiCjSihAiQh7JDapv86BdMyb6MLiA=', 'CAdvnEdD3mEw/2Is9AHt0skvJL/hFPPF5ySJF0YxXEc=', 'EyNwq927Cx3VfypSDCUza9fO3pS5W79cIVHW2I5kG2Q=', 'CP8RFreiJ7/f1EZaZ4kIgrYVyMTBfyjY0klY7fYC3cs=', 'K8sLDbi54+ArfpwclGD92cbNmFYjMuZI2KPgq5RZdSA=', 'EupozmiBvsrX+KaxF7A6uXb3q9WX+QOwvyMNINIalDo=', 'J0OcmKdmiAZ6CXsZtv3X141fiOJ04Nj+peprdAb92n8=', 'AvQNCtBfVlLjHvlECtcevIQZ45NJOTfwXwBJnQKpnjY=', 'L78EKEMn7k9oDwa9OQ4wnQ0TrMdLnFsUtjBZuMx6v/U=', 'G+aG1T4qitV6gosGUUJc/Gl4xwJ+2/JH9rZyPCHfhuc=', 'JoO0JehaUI+WhS8UtCIPz+n3rYsXv+/A40jEfKeLtX8=', 'FtrOmy6AEuMdscfr5nLYa75hoao+FpPg7d/A3gqd2VE=', 'J6Mh+MfTyQIuli9/7y48hItFOdu3WqE58wQw/lRbzts=', 'BszXIQ3uHWsOIreeEtGQgtgHi3iNcQB7leendO2GplE=', 'CkHdQiIWU3Ur7zUPbXSpF7bLsf12o6EhZvTQvpeOQCY=', 'IgoCiB5NR6yU2VDN+DhidNF4LifL0NhFl43uyRKY8WU=', 'DiFVpUX+Xzy7Y5dgZYnqwZzZJjkznGsBcpikrTQItLk=', 'Dw8ZxikeUVRqJnxgzHdOX7nQiLrFMHgtiR7Br0uEcHM=', 'DpJbzRxt20o6HGfsje771AxTwNM+eu7xtGeVrtWUPJ0=', 'KtAAsXSKu4Es1uVBEoa5/z7wpb09JZo25F7wW561vus=', 'CmWqIy0y7W6N5j0c3/68Lz+mFkZcJ6r5fozT3P9khlI=', 'AmPYRwq0scYddNjoliQvTyYdyxZ6OgaSOJPXyyyT1qE=', 'KQHZRq3clLBA/VgATZpfjNGSZUDHqGEs7BxYy2DCs6U=', 'GInPqCCfSVLfkCLbncWDtXF6BpbaQc7mSTfQzWMh5pM=', 'I2Bk1xy2xkyEdHrCX8+NiBUC5fA7/4dWG4WhFrHzmso=', 'L/ehdP/Owphi4E9dvcc+vzZhVwAzV2KQwMH2zYztJ64=', 'GeckoddCyrEDRV8AQO33RaJpanEITJPjInFUUN1Nb1s=', 'A+7TiStvDmxdoQWcXzeTmFg1qig1AKgSmQSpTIfxYb8=', 'COK4Jzv6MMGshQMG2R5Gip6NBQkq7ky8gMaHJIRjujA=', 'B63Mp22DN3KIOaG2rDs+1Cr7h9cq+Y9S9Bby7FiyjOw=', 'Fx7zeJa64rECCgpYOb1ReEzhG7QjfVSMFxFp0y+hm0A=', 'IP/fy4b00AUGTtvClpGMMy0y++/xcp3lBWomq7w6Nfo=', 'COzXpvFzXu2GuqCU5gj0iPONuzmPz+1LmUODoMqORkc=', 'HD9dhuWSH96YkBifHYxhh1QohgDmkovBgqxNXkyfDMs=', 'KcYRhO2dRg8zdVihr2Oap+PAl15AFO2OvK1KJdUeq/M=', 'De/UWyiVhygiituy29rval6bGmSQKnNPQCuM77irO1Y=', 'CnTqItigkzYGBhAXmsHYL/+pSS33be7U6mDgEzsIEag=', 'A6N78S2vFADSl6xKwTuiTBfcJi2xbIUj3u5ODM3ppoA=', 'Ef4XkNWrv1k1/yIxjk9//mmWatovkTa1T4MOrLCmU2g=', 'AYFlhC9AY3XyNGaGkVr7FL8f4FZMiFjuO94Kuj3l9o8=', 'Jh2yXnz/Wp+3LydrH5JgtmcwD7fTYbUP1cDotplbBfk=', 'KjrDMUsrZueW++Nt93jF5GlyMgzEPsgHBIgmtnBLp8Q=', 'I8qkuA7PqZ6dP+orvB2782nRv8iTfQPQdAYcMP2M12s=', 'J9smAIXiJImN8UXyP2NfIGbY5OEk5YHoxiYZKbHf4Qc=', 'J09sX9NKeE1rkV7wXUJO5sC6u/Np55qxOLgWe1YY7H8=', 'LDop4TqE0moJEckona8apM9YQKraBwHVfiPfx5babaE=', 'HqIQ8gAaM00+gB9OUycNQtp6rzF6VTtCgqp46qIoLm0=', 'JU2+tSiEtpnBun+g1ugNYQkDsYo+UJw2NRzMOwJJRuM=', 'BZ54HWWJbr4OS6JtwvKZB/R7ze2kososcT2FBeox/V0=', 'C1sc7GPULV5hXcJpuIWiTO8wPseMly3RfNuz6RXMT/s=', 'KnwBXpw7LFfKi30m05obzIXW/6y32fvWbSqPHWTtDJI=', 'Kbc2uRHXGnnPY9im94bxG9Wr7iQWHcVnp8hR6uHkO1E=', 'KFdFqQp/49Ca9agIcEvGnG8XAeVzkS31zB4mXVlsQUE=', 'LZAbgZXDyWyMNuuZ/sATTsK4MEroEL0w2lVOMICCZxU=', 'GQXTUYNV6rp4WbWR7XuMnCU5gPBFDb31TXp3groFg5I=', 'I+gTAm/AuABk0ZtcVCiUL99+/qgL+o7ECVJyv9t7TJ8=', 'I8ChmiUsh+axwcIbGnmAAgDD+/8+MwDn5VaAcd6e+4E=', 'EcSuYHuuSSQTv2LNqiwoaO0f7G3AYxsGfKYPqxJbnio=', 'LNBV67fuRoY2XepFDwRv9iQF+uGxr8n7AXB8+B2g47k=', 'BTyf7y4CH6miD62iL96hUFtYoxWbu0czfb95GyFbFFI=', 'CjW9dOh8urqr6JrRMZ0snoY7TGMcIZOMmlOVv5eHKp8=', 'HBFQVlOc4gzVoE0aXEPisA++g7JZAb429d3EZm/Dg/4=', 'JClUBH5Xcv073tWQ7IvrTFQvLiZMjD4oTNxHNQXFGpA=', 'Diq9MVtHwNyThJwM3yZ+gRy9vbIApufCtn7ffLAXQhQ=', 'KCs3AgwIkNdRw/12lQ2AaGaOHf6uYh3VUtLeiH2i6nU=', 'KJM4UiZrUtnqa1u5I9nZTy5aW+XHeOdeB5QsI0tkO9k=', 'CZq2dlUFuhGY7xQOd7eVTU++eaBWznK6zjnASMANo88=', 'KvIR2OCsLY/af4SbjyKaIlxhhrVXYsensq4tHdhcV8s=', 'DNBw8jQBSigJq5DHHB2mHpipYyL+3Zm2qq4coQTz+s8=', 'Jnk+KryNPDDGBib7qhWPJjWH1r0Vgz1EixFiZLkwJWo=', 'IlvjbtDuheH4Ra2oTldIpWaZFSET/2G1BWtti95gwZ0=', 'AhdPSe2wLVFU0r7KLckrnMWVOD2h/ejwnkte4+paBl4=', 'D2SJHCyLAg5Gw1lMt1jwvdzb0JvQMIgW+0FzSoaYcsM=', 'GSqEyi+Z02mR4tKx3v85idHBVsI54Q6fVhQOGFRXYGc=', 'Kd/Ne2PwWr8nU6jDQda3pgxiQ7BMmhuLMyC7oEpNR4c=', 'HuJ61rm1qGdzOvxhorPnalK6PkvV5let6R/AOIGduls=', 'CrR3PxUMP4rTvJU49DzsOVp+NzGulz/v62I6CSF+ZMc=', 'E8NSoC9ZUYYgLLC5n6WMVUKrZ/m206Cv0QPe7/bYD0E=', 'KpfPLBDEv7/SmfZ8UqFp+SwFt9rFakHE3U/ofIJGzhQ=', 'AL7LtHBCvX+Mn2u0IhYtGu0ImihIL3/RarBqEyhf5wI=', 'AI5E2iHXOGkbiBdX7zftKcW9n3pEUPz1MpCpLMLKIXY=', 'KyBai21LcGPZMfO7XTRkBThD/n++S4PBeIP4ZSeIKhg=', 'LZ4yp8kFVv4QjSVawB513zOPzWOyv4TBkoDUJymIY/w=', 'KaMiqEwlvS3fbi5CACKNlavWNJoCJmrB27pSBzjOypc=', 'BnjJv8by3wEvT+VeM7torBTO0d8NAhUnkgidBG2CjEM=', 'D6/zpedCV5T+IKfg62FbixdgOUt/IwQoajrkAJEk2yM=', 'H49bYRr5/rnOqGwIQFgSBVPkBBA67iE/WkHR0CVBwNM=', 'Fgh12EeWAvlvQKzC0ELuUsFYi2op3kKEllptxskw6gc=', 'Fth6UYOjFqHXCvyVHv4s1mfHcyj8/aRYy/X+MEX0bZ4='],
|
|
362
|
-
M: [['EkZm+AVh7VkW8vBwsb0kjG1T9E0nPZVqDIe5F2kqTRg=', 'EZJPAv0ZsJJVqqHPRuoFGOPXv+70dCFglJEBHbC9CwI=', 'JH+n8CIwShmU/1BUVsIgHvm3FzaUmNP/zkRmAe2d+EU=', 'A/17Ge8shh8i93/4EPVOJ3vJTrdsAtedmGvj3N8FHD8=', 'GL1BI5w+cVeaZ3RD7P+9VVqB7u6mk1Kmi2fIVjwMKgY=', 'LXjDpdKN6f81vwoldjUZblcwyn9ASTJ3B4zXXai069w='], ['ClFKXCJ/TOyV36Ap6N0STDSJWqRrsnwJEfN4DVAVVAo=', 'GS4W0X2VayV7haZS7v3y7glYnqxb6AkVd1cj0ssdoG0=', 'KYzgweMRO7k1xwWOd3K1M7GqnbDAkmvciRflYFyjrBA=', 'CUy06DYhr9Jx5BvHFyfwFY69YSI5rJ1pixf+S+Bbf8g=', 'A9iAOVvpPCfWSa9f0ULnazORjLiEHVooFzvVz30yh5E=', 'KO6ua1hmrWjkQ7uvkWgNt9fiswN+OP72G0LLzP/OyoE='], ['J4u0mntORK6kbrD4gstpKAGm5g/dW1wjxjzWXMzk/go=', 'Bj7ewb7YMfUGr422SNb96hRTRYh+i9z/EJA1odm2dNc=', 'G67xy1UJtSakIGH7U2V/mbMjJQDoVRksvoyUDgaMR18=', 'EyRWSse9+eIhZOmFjX+o42ixZerqPa9Otn7lnA3y5dQ=', 'AFdhuMauyxqMpOpN/CyDdgZKSoAEzu2iEKVSQFYt3BM=', 'EMnigxWdWMtMsuNf3oOjuh/cKAAu2ZY9KpnxhheKFI0='], ['DDmen2eqQHB6ID/u+wuVi72tzsXKNJAdJT0CaiQZ9qI=', 'CD8N8/GgNR0DMOw/9gLKjMNTt/bnYscQcYTNe0I0SfY=', 'Gmdk1ZQ/xKcgtMChn9uMcRmEMHKHpYubX59dWCEssmM=', 'ARpjom/qv4f6Zr3mbMJakiyWOC12xqf/SPFTe+rtaDo=', 'CMp7ZGV8NUjzK+9bY60kKIpBwLJRCZrSf5Q0MH4+ZNQ=', 'AZmCcEcek2GVVEawzbi+qRXsBnXxzWSN3LBDA1B6RIk='], ['HWs9X26jacJvgl0jYpM+qjHqNewKd8H72eAcoVI+RDI=', 'EZ7xiLs90NMjBpdsGZQehmS+aH56aWkton2iFabwbUA=', 'LZ4KtcBok9/f0DSBOBuoa25ikt9WCdcfLGSy2aefgJ4=', 'JfFmMb93Bg9+o0CHwCW/E1eEMZ7wjNouMUGe4KUp5lg=', 'FEx6EdpafF2rrj8z+9A8rYbRi8WUx5pJfsuYlO21VPE=', 'D5cRYmJ3I/P+rayyiwwQTLj3TeUIdS+o18DbKvE96O4='], ['JL5RAJVDYgbdCr0LDLuVyIOrMEqlJZixppMG7JgaaI0=', 'IRYQ4q1KN3Qm+t9waLDBpsKZoWTBwaYD6u2USHDQubk=', 'FaZ9mBBBsfbwnz+evv2GTnedOvCBV3hqwHdQXlDsefw=', 'BJMn+nnSjBKiyCQGlH938Gd1sCh0aLMTaHdwHb58lZg=', 'IwlA3MUjJlj/nClpej/UFtFw6MmY8aqF3qDELXn5Uao=', 'GxIcBJzRFZ4okAfgydqZlcxLq0wm+4iOw5cqii5laWQ=']]
|
|
363
|
-
};
|
|
364
|
-
_5.default = _default$1;
|
|
365
|
-
Object.defineProperty(poseidon5$1, "__esModule", {
|
|
366
|
-
value: true
|
|
367
|
-
});
|
|
368
|
-
var poseidon5_2 = poseidon5$1.poseidon5 = poseidon5;
|
|
369
|
-
var _poseidon$1 = _interopRequireDefault$1(poseidon_1$1);
|
|
370
|
-
var _unstringify$1 = _interopRequireDefault$1(unstringify$1);
|
|
371
|
-
var _$1 = _interopRequireDefault$1(_5);
|
|
372
|
-
function _interopRequireDefault$1(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
373
|
-
const c$1 = (0, _unstringify$1.default)(_$1.default);
|
|
374
|
-
function poseidon5(inputs) {
|
|
375
|
-
return (0, _poseidon$1.default)(inputs, c$1);
|
|
376
|
-
}
|
|
377
|
-
let Blake$2 = class Blake {
|
|
378
|
-
_lengthCarry (arr) {
|
|
379
|
-
for (let j = 0; j < arr.length; ++j) {
|
|
380
|
-
if (arr[j] < 0x0100000000) break
|
|
381
|
-
arr[j] -= 0x0100000000;
|
|
382
|
-
arr[j + 1] += 1;
|
|
383
|
-
}
|
|
384
|
-
}
|
|
385
|
-
update (data) {
|
|
386
|
-
const block = this._block;
|
|
387
|
-
let offset = 0;
|
|
388
|
-
while (this._blockOffset + data.length - offset >= block.length) {
|
|
389
|
-
for (let i = this._blockOffset; i < block.length;) block[i++] = data[offset++];
|
|
390
|
-
this._length[0] += block.length * 8;
|
|
391
|
-
this._lengthCarry(this._length);
|
|
392
|
-
this._compress();
|
|
393
|
-
this._blockOffset = 0;
|
|
394
|
-
}
|
|
395
|
-
while (offset < data.length) block[this._blockOffset++] = data[offset++];
|
|
396
|
-
}
|
|
397
|
-
};
|
|
398
|
-
Blake$2.sigma = [
|
|
399
|
-
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15],
|
|
400
|
-
[14, 10, 4, 8, 9, 15, 13, 6, 1, 12, 0, 2, 11, 7, 5, 3],
|
|
401
|
-
[11, 8, 12, 0, 5, 2, 15, 13, 10, 14, 3, 6, 7, 1, 9, 4],
|
|
402
|
-
[7, 9, 3, 1, 13, 12, 11, 14, 2, 6, 5, 10, 4, 0, 15, 8],
|
|
403
|
-
[9, 0, 5, 7, 2, 4, 10, 15, 14, 1, 11, 12, 6, 8, 3, 13],
|
|
404
|
-
[2, 12, 6, 10, 0, 11, 8, 3, 4, 13, 7, 5, 15, 14, 1, 9],
|
|
405
|
-
[12, 5, 1, 15, 14, 13, 4, 10, 0, 7, 6, 3, 9, 2, 8, 11],
|
|
406
|
-
[13, 11, 7, 14, 12, 1, 3, 9, 5, 0, 15, 4, 8, 6, 2, 10],
|
|
407
|
-
[6, 15, 14, 9, 11, 3, 0, 8, 12, 2, 13, 7, 1, 4, 10, 5],
|
|
408
|
-
[10, 2, 8, 4, 7, 6, 1, 5, 15, 11, 9, 14, 3, 12, 13, 0],
|
|
409
|
-
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15],
|
|
410
|
-
[14, 10, 4, 8, 9, 15, 13, 6, 1, 12, 0, 2, 11, 7, 5, 3],
|
|
411
|
-
[11, 8, 12, 0, 5, 2, 15, 13, 10, 14, 3, 6, 7, 1, 9, 4],
|
|
412
|
-
[7, 9, 3, 1, 13, 12, 11, 14, 2, 6, 5, 10, 4, 0, 15, 8],
|
|
413
|
-
[9, 0, 5, 7, 2, 4, 10, 15, 14, 1, 11, 12, 6, 8, 3, 13],
|
|
414
|
-
[2, 12, 6, 10, 0, 11, 8, 3, 4, 13, 7, 5, 15, 14, 1, 9]
|
|
415
|
-
];
|
|
416
|
-
Blake$2.u256 = [
|
|
417
|
-
0x243f6a88, 0x85a308d3, 0x13198a2e, 0x03707344,
|
|
418
|
-
0xa4093822, 0x299f31d0, 0x082efa98, 0xec4e6c89,
|
|
419
|
-
0x452821e6, 0x38d01377, 0xbe5466cf, 0x34e90c6c,
|
|
420
|
-
0xc0ac29b7, 0xc97c50dd, 0x3f84d5b5, 0xb5470917
|
|
421
|
-
];
|
|
422
|
-
Blake$2.u512 = [
|
|
423
|
-
0x243f6a88, 0x85a308d3, 0x13198a2e, 0x03707344,
|
|
424
|
-
0xa4093822, 0x299f31d0, 0x082efa98, 0xec4e6c89,
|
|
425
|
-
0x452821e6, 0x38d01377, 0xbe5466cf, 0x34e90c6c,
|
|
426
|
-
0xc0ac29b7, 0xc97c50dd, 0x3f84d5b5, 0xb5470917,
|
|
427
|
-
0x9216d5d9, 0x8979fb1b, 0xd1310ba6, 0x98dfb5ac,
|
|
428
|
-
0x2ffd72db, 0xd01adfb7, 0xb8e1afed, 0x6a267e96,
|
|
429
|
-
0xba7c9045, 0xf12c7f99, 0x24a19947, 0xb3916cf7,
|
|
430
|
-
0x0801f2e2, 0x858efc16, 0x636920d8, 0x71574e69
|
|
431
|
-
];
|
|
432
|
-
Blake$2.padding = Buffer.from([
|
|
433
|
-
0x80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
434
|
-
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
435
|
-
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
436
|
-
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
437
|
-
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
438
|
-
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
439
|
-
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
440
|
-
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
|
|
441
|
-
]);
|
|
442
|
-
var blake = Blake$2;
|
|
443
|
-
getDefaultExportFromCjs$1(blake);
|
|
444
|
-
const Blake$1 = blake;
|
|
445
|
-
const zo$3 = Buffer.from([0x01]);
|
|
446
|
-
const oo$3 = Buffer.from([0x81]);
|
|
447
|
-
const rot$1 = (x, n) => ((x << (32 - n)) | (x >>> n)) >>> 0;
|
|
448
|
-
function g$1 (v, m, i, a, b, c, d, e) {
|
|
449
|
-
const sigma = Blake$1.sigma;
|
|
450
|
-
const u256 = Blake$1.u256;
|
|
451
|
-
v[a] = (v[a] + ((m[sigma[i][e]] ^ u256[sigma[i][e + 1]]) >>> 0) + v[b]) >>> 0;
|
|
452
|
-
v[d] = rot$1(v[d] ^ v[a], 16);
|
|
453
|
-
v[c] = (v[c] + v[d]) >>> 0;
|
|
454
|
-
v[b] = rot$1(v[b] ^ v[c], 12);
|
|
455
|
-
v[a] = (v[a] + ((m[sigma[i][e + 1]] ^ u256[sigma[i][e]]) >>> 0) + v[b]) >>> 0;
|
|
456
|
-
v[d] = rot$1(v[d] ^ v[a], 8);
|
|
457
|
-
v[c] = (v[c] + v[d]) >>> 0;
|
|
458
|
-
v[b] = rot$1(v[b] ^ v[c], 7);
|
|
459
|
-
}
|
|
460
|
-
var blake256 = class Blake256 extends Blake$1 {
|
|
461
|
-
constructor () {
|
|
462
|
-
super();
|
|
463
|
-
this._h = [
|
|
464
|
-
0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a,
|
|
465
|
-
0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19
|
|
466
|
-
];
|
|
467
|
-
this._s = [0, 0, 0, 0];
|
|
468
|
-
this._block = Buffer.alloc(64);
|
|
469
|
-
this._blockOffset = 0;
|
|
470
|
-
this._length = [0, 0];
|
|
471
|
-
this._nullt = false;
|
|
472
|
-
this._zo = zo$3;
|
|
473
|
-
this._oo = oo$3;
|
|
474
|
-
}
|
|
475
|
-
_compress () {
|
|
476
|
-
const u256 = Blake$1.u256;
|
|
477
|
-
const v = new Array(16);
|
|
478
|
-
const m = new Array(16);
|
|
479
|
-
let i;
|
|
480
|
-
for (i = 0; i < 16; ++i) m[i] = this._block.readUInt32BE(i * 4);
|
|
481
|
-
for (i = 0; i < 8; ++i) v[i] = this._h[i] >>> 0;
|
|
482
|
-
for (i = 8; i < 12; ++i) v[i] = (this._s[i - 8] ^ u256[i - 8]) >>> 0;
|
|
483
|
-
for (i = 12; i < 16; ++i) v[i] = u256[i - 8];
|
|
484
|
-
if (!this._nullt) {
|
|
485
|
-
v[12] = (v[12] ^ this._length[0]) >>> 0;
|
|
486
|
-
v[13] = (v[13] ^ this._length[0]) >>> 0;
|
|
487
|
-
v[14] = (v[14] ^ this._length[1]) >>> 0;
|
|
488
|
-
v[15] = (v[15] ^ this._length[1]) >>> 0;
|
|
489
|
-
}
|
|
490
|
-
for (i = 0; i < 14; ++i) {
|
|
491
|
-
g$1(v, m, i, 0, 4, 8, 12, 0);
|
|
492
|
-
g$1(v, m, i, 1, 5, 9, 13, 2);
|
|
493
|
-
g$1(v, m, i, 2, 6, 10, 14, 4);
|
|
494
|
-
g$1(v, m, i, 3, 7, 11, 15, 6);
|
|
495
|
-
g$1(v, m, i, 0, 5, 10, 15, 8);
|
|
496
|
-
g$1(v, m, i, 1, 6, 11, 12, 10);
|
|
497
|
-
g$1(v, m, i, 2, 7, 8, 13, 12);
|
|
498
|
-
g$1(v, m, i, 3, 4, 9, 14, 14);
|
|
499
|
-
}
|
|
500
|
-
for (i = 0; i < 16; ++i) this._h[i % 8] = (this._h[i % 8] ^ v[i]) >>> 0;
|
|
501
|
-
for (i = 0; i < 8; ++i) this._h[i] = (this._h[i] ^ this._s[i % 4]) >>> 0;
|
|
502
|
-
}
|
|
503
|
-
_padding () {
|
|
504
|
-
let lo = this._length[0] + this._blockOffset * 8;
|
|
505
|
-
let hi = this._length[1];
|
|
506
|
-
if (lo >= 0x0100000000) {
|
|
507
|
-
lo -= 0x0100000000;
|
|
508
|
-
hi += 1;
|
|
509
|
-
}
|
|
510
|
-
const msglen = Buffer.alloc(8);
|
|
511
|
-
msglen.writeUInt32BE(hi, 0);
|
|
512
|
-
msglen.writeUInt32BE(lo, 4);
|
|
513
|
-
if (this._blockOffset === 55) {
|
|
514
|
-
this._length[0] -= 8;
|
|
515
|
-
this.update(this._oo);
|
|
516
|
-
} else {
|
|
517
|
-
if (this._blockOffset < 55) {
|
|
518
|
-
if (this._blockOffset === 0) this._nullt = true;
|
|
519
|
-
this._length[0] -= (55 - this._blockOffset) * 8;
|
|
520
|
-
this.update(Blake$1.padding.slice(0, 55 - this._blockOffset));
|
|
521
|
-
} else {
|
|
522
|
-
this._length[0] -= (64 - this._blockOffset) * 8;
|
|
523
|
-
this.update(Blake$1.padding.slice(0, 64 - this._blockOffset));
|
|
524
|
-
this._length[0] -= 55 * 8;
|
|
525
|
-
this.update(Blake$1.padding.slice(1, 1 + 55));
|
|
526
|
-
this._nullt = true;
|
|
527
|
-
}
|
|
528
|
-
this.update(this._zo);
|
|
529
|
-
this._length[0] -= 8;
|
|
530
|
-
}
|
|
531
|
-
this._length[0] -= 64;
|
|
532
|
-
this.update(msglen);
|
|
533
|
-
}
|
|
534
|
-
digest () {
|
|
535
|
-
this._padding();
|
|
536
|
-
const buffer = Buffer.alloc(32);
|
|
537
|
-
for (let i = 0; i < 8; ++i) buffer.writeUInt32BE(this._h[i], i * 4);
|
|
538
|
-
return buffer
|
|
539
|
-
}
|
|
540
|
-
};
|
|
541
|
-
getDefaultExportFromCjs$1(blake256);
|
|
542
|
-
const Blake256 = blake256;
|
|
543
|
-
const zo$2 = Buffer.from([0x00]);
|
|
544
|
-
const oo$2 = Buffer.from([0x80]);
|
|
545
|
-
var blake224 = class Blake224 extends Blake256 {
|
|
546
|
-
constructor () {
|
|
547
|
-
super();
|
|
548
|
-
this._h = [
|
|
549
|
-
0xc1059ed8, 0x367cd507, 0x3070dd17, 0xf70e5939,
|
|
550
|
-
0xffc00b31, 0x68581511, 0x64f98fa7, 0xbefa4fa4
|
|
551
|
-
];
|
|
552
|
-
this._zo = zo$2;
|
|
553
|
-
this._oo = oo$2;
|
|
554
|
-
}
|
|
555
|
-
digest () {
|
|
556
|
-
this._padding();
|
|
557
|
-
const buffer = Buffer.alloc(28);
|
|
558
|
-
for (let i = 0; i < 7; ++i) buffer.writeUInt32BE(this._h[i], i * 4);
|
|
559
|
-
return buffer
|
|
560
|
-
}
|
|
561
|
-
};
|
|
562
|
-
getDefaultExportFromCjs$1(blake224);
|
|
563
|
-
const Blake = blake;
|
|
564
|
-
const zo$1 = Buffer.from([0x01]);
|
|
565
|
-
const oo$1 = Buffer.from([0x81]);
|
|
566
|
-
function rot (v, i, j, n) {
|
|
567
|
-
let hi = v[i * 2] ^ v[j * 2];
|
|
568
|
-
let lo = v[i * 2 + 1] ^ v[j * 2 + 1];
|
|
569
|
-
if (n >= 32) {
|
|
570
|
-
lo = lo ^ hi;
|
|
571
|
-
hi = lo ^ hi;
|
|
572
|
-
lo = lo ^ hi;
|
|
573
|
-
n -= 32;
|
|
574
|
-
}
|
|
575
|
-
if (n === 0) {
|
|
576
|
-
v[i * 2] = hi >>> 0;
|
|
577
|
-
v[i * 2 + 1] = lo >>> 0;
|
|
578
|
-
} else {
|
|
579
|
-
v[i * 2] = ((hi >>> n) | (lo << (32 - n))) >>> 0;
|
|
580
|
-
v[i * 2 + 1] = ((lo >>> n) | (hi << (32 - n))) >>> 0;
|
|
581
|
-
}
|
|
582
|
-
}
|
|
583
|
-
function g (v, m, i, a, b, c, d, e) {
|
|
584
|
-
const sigma = Blake.sigma;
|
|
585
|
-
const u512 = Blake.u512;
|
|
586
|
-
let lo;
|
|
587
|
-
lo = v[a * 2 + 1] + ((m[sigma[i][e] * 2 + 1] ^ u512[sigma[i][e + 1] * 2 + 1]) >>> 0) + v[b * 2 + 1];
|
|
588
|
-
v[a * 2] = (v[a * 2] + ((m[sigma[i][e] * 2] ^ u512[sigma[i][e + 1] * 2]) >>> 0) + v[b * 2] + ~~(lo / 0x0100000000)) >>> 0;
|
|
589
|
-
v[a * 2 + 1] = lo >>> 0;
|
|
590
|
-
rot(v, d, a, 32);
|
|
591
|
-
lo = v[c * 2 + 1] + v[d * 2 + 1];
|
|
592
|
-
v[c * 2] = (v[c * 2] + v[d * 2] + ~~(lo / 0x0100000000)) >>> 0;
|
|
593
|
-
v[c * 2 + 1] = lo >>> 0;
|
|
594
|
-
rot(v, b, c, 25);
|
|
595
|
-
lo = v[a * 2 + 1] + ((m[sigma[i][e + 1] * 2 + 1] ^ u512[sigma[i][e] * 2 + 1]) >>> 0) + v[b * 2 + 1];
|
|
596
|
-
v[a * 2] = (v[a * 2] + ((m[sigma[i][e + 1] * 2] ^ u512[sigma[i][e] * 2]) >>> 0) + v[b * 2] + ~~(lo / 0x0100000000)) >>> 0;
|
|
597
|
-
v[a * 2 + 1] = lo >>> 0;
|
|
598
|
-
rot(v, d, a, 16);
|
|
599
|
-
lo = v[c * 2 + 1] + v[d * 2 + 1];
|
|
600
|
-
v[c * 2] = (v[c * 2] + v[d * 2] + ~~(lo / 0x0100000000)) >>> 0;
|
|
601
|
-
v[c * 2 + 1] = lo >>> 0;
|
|
602
|
-
rot(v, b, c, 11);
|
|
603
|
-
}
|
|
604
|
-
var blake512 = class Blake512 extends Blake {
|
|
605
|
-
constructor () {
|
|
606
|
-
super();
|
|
607
|
-
this._h = [
|
|
608
|
-
0x6a09e667, 0xf3bcc908, 0xbb67ae85, 0x84caa73b,
|
|
609
|
-
0x3c6ef372, 0xfe94f82b, 0xa54ff53a, 0x5f1d36f1,
|
|
610
|
-
0x510e527f, 0xade682d1, 0x9b05688c, 0x2b3e6c1f,
|
|
611
|
-
0x1f83d9ab, 0xfb41bd6b, 0x5be0cd19, 0x137e2179
|
|
612
|
-
];
|
|
613
|
-
this._s = [0, 0, 0, 0, 0, 0, 0, 0];
|
|
614
|
-
this._block = Buffer.alloc(128);
|
|
615
|
-
this._blockOffset = 0;
|
|
616
|
-
this._length = [0, 0, 0, 0];
|
|
617
|
-
this._nullt = false;
|
|
618
|
-
this._zo = zo$1;
|
|
619
|
-
this._oo = oo$1;
|
|
620
|
-
}
|
|
621
|
-
_compress () {
|
|
622
|
-
const u512 = Blake.u512;
|
|
623
|
-
const v = new Array(32);
|
|
624
|
-
const m = new Array(32);
|
|
625
|
-
let i;
|
|
626
|
-
for (i = 0; i < 32; ++i) m[i] = this._block.readUInt32BE(i * 4);
|
|
627
|
-
for (i = 0; i < 16; ++i) v[i] = this._h[i] >>> 0;
|
|
628
|
-
for (i = 16; i < 24; ++i) v[i] = (this._s[i - 16] ^ u512[i - 16]) >>> 0;
|
|
629
|
-
for (i = 24; i < 32; ++i) v[i] = u512[i - 16];
|
|
630
|
-
if (!this._nullt) {
|
|
631
|
-
v[24] = (v[24] ^ this._length[1]) >>> 0;
|
|
632
|
-
v[25] = (v[25] ^ this._length[0]) >>> 0;
|
|
633
|
-
v[26] = (v[26] ^ this._length[1]) >>> 0;
|
|
634
|
-
v[27] = (v[27] ^ this._length[0]) >>> 0;
|
|
635
|
-
v[28] = (v[28] ^ this._length[3]) >>> 0;
|
|
636
|
-
v[29] = (v[29] ^ this._length[2]) >>> 0;
|
|
637
|
-
v[30] = (v[30] ^ this._length[3]) >>> 0;
|
|
638
|
-
v[31] = (v[31] ^ this._length[2]) >>> 0;
|
|
639
|
-
}
|
|
640
|
-
for (i = 0; i < 16; ++i) {
|
|
641
|
-
g(v, m, i, 0, 4, 8, 12, 0);
|
|
642
|
-
g(v, m, i, 1, 5, 9, 13, 2);
|
|
643
|
-
g(v, m, i, 2, 6, 10, 14, 4);
|
|
644
|
-
g(v, m, i, 3, 7, 11, 15, 6);
|
|
645
|
-
g(v, m, i, 0, 5, 10, 15, 8);
|
|
646
|
-
g(v, m, i, 1, 6, 11, 12, 10);
|
|
647
|
-
g(v, m, i, 2, 7, 8, 13, 12);
|
|
648
|
-
g(v, m, i, 3, 4, 9, 14, 14);
|
|
649
|
-
}
|
|
650
|
-
for (i = 0; i < 16; ++i) {
|
|
651
|
-
this._h[(i % 8) * 2] = (this._h[(i % 8) * 2] ^ v[i * 2]) >>> 0;
|
|
652
|
-
this._h[(i % 8) * 2 + 1] = (this._h[(i % 8) * 2 + 1] ^ v[i * 2 + 1]) >>> 0;
|
|
653
|
-
}
|
|
654
|
-
for (i = 0; i < 8; ++i) {
|
|
655
|
-
this._h[i * 2] = (this._h[i * 2] ^ this._s[(i % 4) * 2]) >>> 0;
|
|
656
|
-
this._h[i * 2 + 1] = (this._h[i * 2 + 1] ^ this._s[(i % 4) * 2 + 1]) >>> 0;
|
|
657
|
-
}
|
|
658
|
-
}
|
|
659
|
-
_padding () {
|
|
660
|
-
const len = this._length.slice();
|
|
661
|
-
len[0] += this._blockOffset * 8;
|
|
662
|
-
this._lengthCarry(len);
|
|
663
|
-
const msglen = Buffer.alloc(16);
|
|
664
|
-
for (let i = 0; i < 4; ++i) msglen.writeUInt32BE(len[3 - i], i * 4);
|
|
665
|
-
if (this._blockOffset === 111) {
|
|
666
|
-
this._length[0] -= 8;
|
|
667
|
-
this.update(this._oo);
|
|
668
|
-
} else {
|
|
669
|
-
if (this._blockOffset < 111) {
|
|
670
|
-
if (this._blockOffset === 0) this._nullt = true;
|
|
671
|
-
this._length[0] -= (111 - this._blockOffset) * 8;
|
|
672
|
-
this.update(Blake.padding.slice(0, 111 - this._blockOffset));
|
|
673
|
-
} else {
|
|
674
|
-
this._length[0] -= (128 - this._blockOffset) * 8;
|
|
675
|
-
this.update(Blake.padding.slice(0, 128 - this._blockOffset));
|
|
676
|
-
this._length[0] -= 111 * 8;
|
|
677
|
-
this.update(Blake.padding.slice(1, 1 + 111));
|
|
678
|
-
this._nullt = true;
|
|
679
|
-
}
|
|
680
|
-
this.update(this._zo);
|
|
681
|
-
this._length[0] -= 8;
|
|
682
|
-
}
|
|
683
|
-
this._length[0] -= 128;
|
|
684
|
-
this.update(msglen);
|
|
685
|
-
}
|
|
686
|
-
digest () {
|
|
687
|
-
this._padding();
|
|
688
|
-
const buffer = Buffer.alloc(64);
|
|
689
|
-
for (let i = 0; i < 16; ++i) buffer.writeUInt32BE(this._h[i], i * 4);
|
|
690
|
-
return buffer
|
|
691
|
-
}
|
|
692
|
-
};
|
|
693
|
-
getDefaultExportFromCjs$1(blake512);
|
|
694
|
-
const Blake512 = blake512;
|
|
695
|
-
const zo = Buffer.from([0x00]);
|
|
696
|
-
const oo = Buffer.from([0x80]);
|
|
697
|
-
var blake384 = class Blake384 extends Blake512 {
|
|
698
|
-
constructor () {
|
|
699
|
-
super();
|
|
700
|
-
this._h = [
|
|
701
|
-
0xcbbb9d5d, 0xc1059ed8, 0x629a292a, 0x367cd507,
|
|
702
|
-
0x9159015a, 0x3070dd17, 0x152fecd8, 0xf70e5939,
|
|
703
|
-
0x67332667, 0xffc00b31, 0x8eb44a87, 0x68581511,
|
|
704
|
-
0xdb0c2e0d, 0x64f98fa7, 0x47b5481d, 0xbefa4fa4
|
|
705
|
-
];
|
|
706
|
-
this._zo = zo;
|
|
707
|
-
this._oo = oo;
|
|
708
|
-
}
|
|
709
|
-
digest () {
|
|
710
|
-
this._padding();
|
|
711
|
-
const buffer = Buffer.alloc(48);
|
|
712
|
-
for (let i = 0; i < 12; ++i) buffer.writeUInt32BE(this._h[i], i * 4);
|
|
713
|
-
return buffer
|
|
714
|
-
}
|
|
715
|
-
};
|
|
716
|
-
getDefaultExportFromCjs$1(blake384);
|
|
717
|
-
var lib = {
|
|
718
|
-
Blake224: blake224,
|
|
719
|
-
Blake256: blake256,
|
|
720
|
-
Blake384: blake384,
|
|
721
|
-
Blake512: blake512
|
|
722
|
-
};
|
|
723
|
-
getDefaultExportFromCjs$1(lib);
|
|
724
|
-
function hash(message) {
|
|
725
|
-
const engine = new lib.Blake512();
|
|
726
|
-
engine.update(message);
|
|
727
|
-
return engine.digest();
|
|
728
|
-
}
|
|
729
|
-
function pruneBuffer(buff) {
|
|
730
|
-
buff[0] &= 0xf8;
|
|
731
|
-
buff[31] &= 0x7f;
|
|
732
|
-
buff[31] |= 0x40;
|
|
733
|
-
return buff;
|
|
734
|
-
}
|
|
735
|
-
function isPoint(point) {
|
|
736
|
-
return Array.isArray(point) && point.length === 2 && isStringifiedBigint(point[0]) && isStringifiedBigint(point[1]);
|
|
737
|
-
}
|
|
738
|
-
function isSignature(signature) {
|
|
739
|
-
return (typeof signature === "object" &&
|
|
740
|
-
Object.prototype.hasOwnProperty.call(signature, "R8") &&
|
|
741
|
-
Object.prototype.hasOwnProperty.call(signature, "S") &&
|
|
742
|
-
isPoint(signature.R8) &&
|
|
743
|
-
isStringifiedBigint(signature.S));
|
|
744
|
-
}
|
|
745
|
-
function checkPrivateKey(privateKey) {
|
|
746
|
-
if (isBigNumberish(privateKey)) {
|
|
747
|
-
return bigNumberishToBuffer(privateKey);
|
|
748
|
-
}
|
|
749
|
-
if (typeof privateKey !== "string") {
|
|
750
|
-
throw TypeError("Invalid private key type. Supported types: number, bigint, buffer, string.");
|
|
751
|
-
}
|
|
752
|
-
return Buffer.from(privateKey);
|
|
753
|
-
}
|
|
754
|
-
function checkMessage(message) {
|
|
755
|
-
if (isBigNumberish(message)) {
|
|
756
|
-
return bigNumberishToBigint(message);
|
|
757
|
-
}
|
|
758
|
-
if (typeof message !== "string") {
|
|
759
|
-
throw TypeError("Invalid message type. Supported types: number, bigint, buffer, string.");
|
|
760
|
-
}
|
|
761
|
-
return bufferToBigint(Buffer.from(message));
|
|
762
|
-
}
|
|
763
|
-
/**
|
|
764
|
-
* Hashes the 32-byte private key using Blake1, prunes the lower 32 bytes
|
|
765
|
-
* of the buffer and converts it to a little-endian integer.
|
|
766
|
-
* This function is used to obtain the secret scalar to be used as
|
|
767
|
-
* the input of the private key in the circuits, since the circuit only
|
|
768
|
-
* performs a fixed-base scalar multiplication.
|
|
769
|
-
* For more info about these steps: {@link https://datatracker.ietf.org/doc/html/rfc8032#section-5.1.5}.
|
|
770
|
-
* @param privateKey - The private key used for generating the public key.
|
|
771
|
-
* @returns The secret scalar to be used to calculate public key.
|
|
772
|
-
*/
|
|
773
|
-
function deriveSecretScalar(privateKey) {
|
|
774
|
-
privateKey = checkPrivateKey(privateKey);
|
|
775
|
-
let hash$1 = hash(privateKey);
|
|
776
|
-
hash$1 = hash$1.slice(0, 32);
|
|
777
|
-
hash$1 = pruneBuffer(hash$1);
|
|
778
|
-
return scalar.shiftRight(leBufferToBigint(hash$1), BigInt(3)).toString();
|
|
779
|
-
}
|
|
780
|
-
/**
|
|
781
|
-
* Derives a public key from a given private key using the
|
|
782
|
-
* {@link https://eips.ethereum.org/EIPS/eip-2494|Baby Jubjub} elliptic curve.
|
|
783
|
-
* This function utilizes the Baby Jubjub elliptic curve for cryptographic operations.
|
|
784
|
-
* The private key should be securely stored and managed, and it should never be exposed
|
|
785
|
-
* or transmitted in an unsecured manner.
|
|
786
|
-
* @param privateKey - The private key used for generating the public key.
|
|
787
|
-
* @returns The derived public key.
|
|
788
|
-
*/
|
|
789
|
-
function derivePublicKey(privateKey) {
|
|
790
|
-
const s = deriveSecretScalar(privateKey);
|
|
791
|
-
const publicKey = mulPointEscalar(Base8, BigInt(s));
|
|
792
|
-
return [publicKey[0].toString(), publicKey[1].toString()];
|
|
793
|
-
}
|
|
794
|
-
/**
|
|
795
|
-
* Signs a message using the provided private key, employing Poseidon hashing and
|
|
796
|
-
* EdDSA with the Baby Jubjub elliptic curve.
|
|
797
|
-
* @param privateKey - The private key used to sign the message.
|
|
798
|
-
* @param message - The message to be signed.
|
|
799
|
-
* @returns The signature object, containing properties relevant to EdDSA signatures, such as 'R8' and 'S' values.
|
|
800
|
-
*/
|
|
801
|
-
function signMessage(privateKey, message) {
|
|
802
|
-
privateKey = checkPrivateKey(privateKey);
|
|
803
|
-
message = checkMessage(message);
|
|
804
|
-
const hash$1 = hash(privateKey);
|
|
805
|
-
const sBuff = pruneBuffer(hash$1.slice(0, 32));
|
|
806
|
-
const s = leBufferToBigint(sBuff);
|
|
807
|
-
const A = mulPointEscalar(Base8, scalar.shiftRight(s, BigInt(3)));
|
|
808
|
-
const msgBuff = leBigintToBuffer(message);
|
|
809
|
-
const rBuff = hash(Buffer.concat([hash$1.slice(32, 64), msgBuff]));
|
|
810
|
-
const Fr = new F1Field(subOrder);
|
|
811
|
-
const r = Fr.e(leBufferToBigint(rBuff));
|
|
812
|
-
const R8 = mulPointEscalar(Base8, r);
|
|
813
|
-
const hm = poseidon5_2([R8[0], R8[1], A[0], A[1], message]);
|
|
814
|
-
const S = Fr.add(r, Fr.mul(hm, s));
|
|
815
|
-
return {
|
|
816
|
-
R8: [R8[0].toString(), R8[1].toString()],
|
|
817
|
-
S: S.toString()
|
|
818
|
-
};
|
|
819
|
-
}
|
|
820
|
-
/**
|
|
821
|
-
* Verifies an EdDSA signature using the Baby Jubjub elliptic curve and Poseidon hash function.
|
|
822
|
-
* @param message - The original message that was be signed.
|
|
823
|
-
* @param signature - The EdDSA signature to be verified.
|
|
824
|
-
* @param publicKey - The public key associated with the private key used to sign the message.
|
|
825
|
-
* @returns Returns true if the signature is valid and corresponds to the message and public key, false otherwise.
|
|
826
|
-
*/
|
|
827
|
-
function verifySignature(message, signature, publicKey) {
|
|
828
|
-
if (!isPoint(publicKey) ||
|
|
829
|
-
!isSignature(signature) ||
|
|
830
|
-
!inCurve(signature.R8) ||
|
|
831
|
-
!inCurve(publicKey) ||
|
|
832
|
-
BigInt(signature.S) >= subOrder) {
|
|
833
|
-
return false;
|
|
834
|
-
}
|
|
835
|
-
message = checkMessage(message);
|
|
836
|
-
const _signature = {
|
|
837
|
-
R8: [BigInt(signature.R8[0]), BigInt(signature.R8[1])],
|
|
838
|
-
S: BigInt(signature.S)
|
|
839
|
-
};
|
|
840
|
-
const _publicKey = [BigInt(publicKey[0]), BigInt(publicKey[1])];
|
|
841
|
-
const hm = poseidon5_2([signature.R8[0], signature.R8[1], publicKey[0], publicKey[1], message]);
|
|
842
|
-
const pLeft = mulPointEscalar(Base8, BigInt(signature.S));
|
|
843
|
-
let pRight = mulPointEscalar(_publicKey, scalar.mul(hm, BigInt(8)));
|
|
844
|
-
pRight = addPoint(_signature.R8, pRight);
|
|
845
|
-
return Fr.eq(BigInt(pLeft[0]), pRight[0]) && Fr.eq(pLeft[1], pRight[1]);
|
|
846
|
-
}
|
|
847
|
-
|
|
848
|
-
function getDefaultExportFromCjs (x) {
|
|
849
|
-
return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;
|
|
850
|
-
}
|
|
851
|
-
|
|
852
|
-
var poseidon2$1 = {};
|
|
853
|
-
|
|
854
|
-
const F = BigInt('21888242871839275222246405745257275088548364400416034343698204186575808495617');
|
|
855
|
-
const N_ROUNDS_F = 8;
|
|
856
|
-
const N_ROUNDS_P = [56, 57, 56, 60, 60, 63, 64, 63, 60, 66, 60, 65, 70, 60, 64, 68];
|
|
857
|
-
const pow5 = v => {
|
|
858
|
-
let o = v * v;
|
|
859
|
-
return v * o * o % F;
|
|
860
|
-
};
|
|
861
|
-
function mix(state, M) {
|
|
862
|
-
const out = [];
|
|
863
|
-
for (let x = 0; x < state.length; x++) {
|
|
864
|
-
let o = 0n;
|
|
865
|
-
for (let y = 0; y < state.length; y++) {
|
|
866
|
-
o = o + M[x][y] * state[y];
|
|
867
|
-
}
|
|
868
|
-
out.push(o % F);
|
|
869
|
-
}
|
|
870
|
-
return out;
|
|
871
|
-
}
|
|
872
|
-
function poseidon(_inputs, opt) {
|
|
873
|
-
const inputs = _inputs.map(i => BigInt(i));
|
|
874
|
-
if (inputs.length <= 0) {
|
|
875
|
-
throw new Error('poseidon-lite: Not enough inputs');
|
|
876
|
-
}
|
|
877
|
-
if (inputs.length > N_ROUNDS_P.length) {
|
|
878
|
-
throw new Error('poseidon-lite: Too many inputs');
|
|
879
|
-
}
|
|
880
|
-
const t = inputs.length + 1;
|
|
881
|
-
const nRoundsF = N_ROUNDS_F;
|
|
882
|
-
const nRoundsP = N_ROUNDS_P[t - 2];
|
|
883
|
-
const {
|
|
884
|
-
C,
|
|
885
|
-
M
|
|
886
|
-
} = opt;
|
|
887
|
-
if (M.length !== t) {
|
|
888
|
-
throw new Error(`poseidon-lite: Incorrect M length, expected ${t} got ${M.length}`);
|
|
889
|
-
}
|
|
890
|
-
let state = [0n, ...inputs];
|
|
891
|
-
for (let x = 0; x < nRoundsF + nRoundsP; x++) {
|
|
892
|
-
for (let y = 0; y < state.length; y++) {
|
|
893
|
-
state[y] = state[y] + C[x * t + y];
|
|
894
|
-
if (x < nRoundsF / 2 || x >= nRoundsF / 2 + nRoundsP) state[y] = pow5(state[y]);else if (y === 0) state[y] = pow5(state[y]);
|
|
895
|
-
}
|
|
896
|
-
state = mix(state, M);
|
|
897
|
-
}
|
|
898
|
-
return state[0];
|
|
899
|
-
}
|
|
900
|
-
var poseidon_1 = poseidon;
|
|
901
|
-
getDefaultExportFromCjs(poseidon_1);
|
|
902
|
-
|
|
903
|
-
var unstringify = {};
|
|
904
|
-
|
|
905
|
-
Object.defineProperty(unstringify, "__esModule", {
|
|
906
|
-
value: true
|
|
907
|
-
});
|
|
908
|
-
unstringify.default = unstringifyBigInts;
|
|
909
|
-
function unstringifyBigInts(o) {
|
|
910
|
-
if (Array.isArray(o)) {
|
|
911
|
-
return o.map(unstringifyBigInts);
|
|
912
|
-
} else if (typeof o == 'object') {
|
|
913
|
-
const res = {};
|
|
914
|
-
for (const [key, val] of Object.entries(o)) {
|
|
915
|
-
res[key] = unstringifyBigInts(val);
|
|
916
|
-
}
|
|
917
|
-
return res;
|
|
918
|
-
}
|
|
919
|
-
const byteArray = Uint8Array.from(atob(o), c => c.charCodeAt(0));
|
|
920
|
-
const hex = [...byteArray].map(x => x.toString(16).padStart(2, '0')).join('');
|
|
921
|
-
return BigInt(`0x${hex}`);
|
|
922
|
-
}
|
|
923
|
-
|
|
924
|
-
var _2 = {};
|
|
925
|
-
|
|
926
|
-
Object.defineProperty(_2, "__esModule", {
|
|
927
|
-
value: true
|
|
928
|
-
});
|
|
929
|
-
_2.default = void 0;
|
|
930
|
-
var _default = {
|
|
931
|
-
C: ['DumlkrqalRjQWYbWVvQMIRTEmTwRuymTjSHUcwTNjm4=', 'APFEUjXyFIxZhlhxafwbzYh7CNTQCGjfVpb/9AlW6GQ=', 'CN/zSH6KyZ4fKaBY0PqAuTDHKHMLerNs6HnziQ7Pc/U=', 'Lye+aQ/a7kbDzij3UysTyFbDU0LIS9puIJZjEPrcAdA=', 'KyrhrPaLe40kFr6/PU9iNLdj/gS4BD7ki4MnvryhbPI=', 'AxnQYgcr737MperAb5fU1VlSwXWrawPq5ktEx9vxHPo=', 'KIE9yuuuqoKKN234evSmO8i3vyetScYpjvezh78oUm0=', 'JydnOyzLyQPxgb844cHUDSAzhlIAw1K8FQkord35y3g=', 'I07EXKJ3J8LnSr0rKhSUzW771D40BYfWuPueMeZcxjI=', 'FbUlNAMa4Y9/hiyyz3z3YKsQqBUKM3sczZn/boeX1Cg=', 'Dcj61tnks19e2aPRhrec444Oio0bWLEy1wHU7s9o0fY=', 'G82V/8IR+8pgD3BfrT+1Z+pOs3j2Lh/sl4BVGKR+TZw=', 'EFILCrchyt/p7/gbAW/DTcdto2wleJN4F8uXjQad5Vk=', 'H21IFJuOf32bJX2O1fu69CkySYB1/tCs6IqeuB9WJ/Y=', 'HZZV9lIwkBTSngDvNaIIm//43ByBbw3JyjS9tUYMhwU=', 'BN9aVv+VvK+wUfexzUOpm6cx/2fkcDIFj+PUGFaXzH0=', 'BnLZlfj/9kAVGz0pDO2vFIaQoQqMhCSn9uwoK25L6Cg=', 'CZlStBSIRFSyEgDX/6/dXwyancwG8nCOn8HYIJtcdbk=', 'BSy6IlXf0Ax8SDFDuo1GlEjkNYaptM2Rg/0OhDprn6Y=', 'C4ut7mkK246wvXRxK3mZr4LeVXByUa13Fgd8uTxGTdw=', 'EZsVkPEzB69aHuZRAgwHx0nBXWBoOoBQuWPQqOSyvdE=', 'AxULfNbV0XslKdNr4PZ7gyxKz8iE707lzhW+C/tKjQk=', 'LMYYLF4UVG488ZUfFzkSNVN077g9gImKvmnLMXyepWU=', 'AFAyVR5jeMRQz+EppASzdkIYyt7awU4rktLNcxEb8Pk=', 'IzI34yibqjS7FH6XLry5UWRpw5n8wGn7iPnaLMKCdrU=', 'Bcj09OvUpuPJgNMWdL++YyMDfyGzSuWk6AwtTCTWAoA=', 'CnsdsTBC05a6BdgYoxnyUlK8817zru2R7h8JslkPxls=', 'KnO3H5shDPWxQpZXLJ0y2/FW4rCG/0fcXfVCNlpATsA=', 'GsmwQXq8yaGTUQfp/8kdw+wY8sTb5/Ipdqdgu1xQxGA=', 'EsAzmuCDdII/q7B2cH70eSafPk1ssQQ0kBXuBG3JP8A=', 'C3R1sQKhZa1/WxjbTh5wT1KQCqMlO6rGgkZoLlbpoo4=', 'A3woSeGRyj7bHF5J9ui4kXyEPjeTZvLqMqs6qI1/hEg=', 'BaaBH4VW8BTpJnRmHiF+m9UgbFyToH3BRf2xdqcWNG8=', 'KaeV59mAKJRulHt11U6fBEB26Hp7KIO0e2de9fOL1m4=', 'IEOaDISzIutFo4V6/Bj1gm6Mc4LIoVhcUHvhmZgf0i8=', 'Lguo2U2ez0qU7CBQxzcf8btQ8neZqEttSipvKgmCyIc=', 'FD/RFc4I+yfKOOt8zoIrRReCLNIQkEjS5tDdzKF9ccg=', 'DGTL7LHHNLhXlo273PgTzfhhFlkyPby/yEMjYjvpyvE=', 'AoowWEfGg/ZG/KklwWP/WudPNI1iwrZw8UJs75QD2lM=', 'Lk71EP8Lb9pfqUCrTEOA8mpry2TYlCe4JNZ1W1254ww=', 'AIHJW8QzhOZj15JwyVbOO4kltPbQM7B4uWOE9QV5QA4=', 'LtXwyRy9l0kYfi+t5ofgXuJJGzScA5oLuoqfQCOguzg=', 'MFCZkfiNo1BLvzdO1ari8DRIoix2I0yMmQ8B8zpzUgY=', 'HD8g/VVAmlMiG3xNSaNWufChEZ+yBntBp1KQlEJOxq0=', 'ELTn86td8AMElRRFm24Y7sRrsiE+jhMeFwiHtH3cuWw=', 'KhmCl5w/9/Q93VQ9iRwqvd2A+ATAd9d1A5qjUC5Dre8=', 'HHTuZPFeHbb+3b6tVtbVXbpDHrw5bJr5XK0PExW9XJE=', 'B1M+yFC6f5jquTA8rOAbS55PLouCcIz6nC/kWgrhRqA=', 'IVdrQ45QBEmhUeTurxexVChcaPQtQsGAihGr83ZMB1A=', 'LxfAVZuP55YIrVyhk9YvELzoOEyBXwkGdD1pMINtSp4=', 'LUd+OGLQdwinnoqulGFwvJd1pCATGEdK5mWwsbficw4=', 'Fi9SQ5ZwZMOQ4JVXeYTyka+6ImbDj1q82Jvg9bJ0fqs=', 'K0yyM+3pukgmTs0siuUNGteoWWqH8p+Kd3enAJI5MxE=', 'LI+8st2Fc9wduvj0YihUd22y7s5thcTPQlTnw14DsHo=', 'HW80dyXkgWry/0U/DNVrGZ4bYen2Aemt5eiNuHCUnak=', 'IEsMOX9OvnHrwtiz31uRPfnmrAK2jTEyTNSa9cRWVSk=', 'DEy53DxP2BdPEUmzxjw8L57LgnzX3CVTT/j7dbx5xQI=', 'F0rWGhRIyJmiVBZHT0kwMB5cSUdSeeBjmmFt3EW8e1Q=', 'GpYXe89NjYn3Wd9OwvPN4uqqKMF3zA+hOpgW1Jo40u8=', 'Bm0EskMx1xzQ74BUvGDE/wUgLBJqIzwagkKs42C4owo=', 'KkxPxuwLDPUhlXgoccbdOzgcxl9y4CrVJwN6Yqob2AQ=', 'E6stE2zPN9RH6fLhSnztyV5yf4RG9tnX5Vr8ASGf1kk=', 'ESFVL8omBhYZ0k2EPcgnacGwT87Cb1UZTC4+hprMapo=', 'AO9lMyKxPWyIm8gXFcN9d6bNJn1ZXEqJCaVUbHyXz/E=', 'DiVIPkWmZSCLJh2Lp0BR5kAMd21lJZXZhFrKNdijl9M=', 'KfU23LnddoIkUmRlnhXYjjlaw9Td6S2MRkSNuXnuuok=', 'KlbvnyxT/rrf2jNXXb29iFoSTieAu+oXDkVrqs4Ppb4=', 'HINhx461z13s+3otF7XECfKuKZmkZ2Lo7kFiQKjLmvE=', 'FRr/XziyCg/ARzCJqvAga4Po5op2RQe/09CrS+dDGcU=', 'BMYYfkHtiB3BsjnIj3+dQ6n1L8jIts3R525HYVtR8QA=', 'E7N72A9NJ/sQ2EMx9vttU0uBxh7RV3ZEnoAbfdycKWc=', 'AaXFNic8LZ31eL+9MsF7eizjZkwqUgMskyHOscToqOQ=', 'KrNWGDTKc4Na0F9desuVC0qaLGZrlybagyI5Blt8OwI=', 'HU2OwpHnINsgD+bWhsDWE6yvavTpXTv2n37VFqWXtkY=', 'BBKU0sxITSKPV4T+eRn9K7klNRJAoEtxFRTJyAtlrx0=', 'FUrJjgFwjGEcT6cVmR8ASJj1eTnRJuOSBClx3ZDoH8Y=', 'CzOdisyn1Pg+7dhAk671EFCzaEyI+LCwRSRWO8bqTaQ=', 'CVXknmYQyUJUpPhM+6s0RZjw5x6v9Kfdge2VtQg5yC4=', 'BnRqYVbrpUQmueIiBvFavKmm9B5vU1xvNSVAHqBlRiY=', 'Dxj1oOzRQjxJbzggxUnCeDjleQ4r0KGWrJF8f/Mgd/s=', 'BPbuyhdR9zCKxZ7/W+smHku1Y1g+3nvJKnOCI9b3bhM=', 'K1aXM2TExPXBo+xNo83OA4gR6xFvs+RbwXaNJvwLN1g=', 'Ejdp3UnVsFTc12uJgEsby44TkrOFcWpdg/62XUN/Ke8=', 'IUe0JPxIyAqI7lK5EWmqzqmJ9kRkcRUJlCV7L7AcY+k=', 'D9wfWFSLhXAabFUF6jMqKWR+bzStQkPC6lStiXzr5U0=', 'Ejc6glH+oATfaKvPD3eG1Lzv8oxdu+DDlE9oXMCgsfI=', 'IeT06l81+FutfqUv90LJ6KZCdWtq9EID3YofNcGpADU=', 'FiQ5FtadLKPftHIiJNTEYrVzZkkvRekNioGTTxvDsUc=', 'HvvkbdeleLT2b5rbyItDeKvCFWbhoEU8oTpBWcrASsI=', 'B+pehTfPXdCIhgIOI6fzh9Ro1VJb5m+FO2csyWqIlpo=', 'BajE+ZaLiqO3tHijD5pbY2UPGadefOEcqf4WwLdsALw=', 'IPBXcSzCFlT7/lm9NF6NrD94GMcBuceILZ1Xtyoy6D8=', 'BKEu3tqd/WiWcvjGf+4xY23NjojQHUkBm9kLM+sz22k=', 'J+iNjBXzfc7kTx5UJaUd7L0TbOUJGmdn5J7JVEzNEBo=', 'L+7Re4QoXtm4pcjF6VpB9m4JZhmncDIjF2xB7kM95NE=', 'HtfMdu30XHxAQkFCD3Kc85TllCkRMSoNaXK4vVOv8rg=', 'FXQumbm/oyMVf/jFhvVmDqxng0dhRM3K3yh0vkVGaxo=', 'GqwoU4f2XoLIlfxoh930BXcQdFTG7AMXKE8DPyfQx4U=', 'JYUcPIRdR5D53a29tgVzV4MuLnpJd19x7HWpZVTWfHc=', 'FaWCFWXMLsLOeEV9sZft81O367osVSM3DdzMPZ8Uamc=', 'JBHVekgTuZgO+n4xodtZZtz2TzYEQndQLxVIXyjHFyc=', 'AC5vjWUgzUcT4zW4wLbS5kfpqY4S9M0lWIKLXvbLTJs=', 'L/e8j0OAzemX2gC2FrD80a+PDpHi/h7XOYg0YJ4DFdI=', 'ALmDG5SFJVle4CckRxvNGC6VIfa3u2jx6Tvk/rsNPL4=', 'Ci9TdouOv2qGkTsOV8BOARykCGSKR0OofXetvwycNRI=', 'ACSBVhQv0Dc6R5+R/yOelg9Zn/fpS+abfyopAwXhGY0=', 'Fx1WILh7+xMoz4wCqz8MmjlxlqpqVCwjUOtRKisrzak=', 'FwpPVVNvfclwCHx8ENb612DJUhct1U3ZnRBF5Ow0qAg=', 'KaujP3mf5mwu8xNK6gQzbsw344wc0hG6SC7KF+Lb+uE=', 'HpvBeaT911j90bsZRQiNR+cNEUoD9qDotbplA2nmSXM=', 'HdJpeZtmD61Y9/SJLfsLWv6q2GmpxLRPnJ4cQ72vjwk=', 'Is28i3ARetFAEYHQLhVFnnzNQm/oacfJXR3Syw8krzg=', 'DvBC5FR3HFM6n1elXFA/zv0xUPUu2Up81bqTucfazv0=', 'EWCeBq1sj+Lyh/MDYDfohRMY6LCKA1mgOzBP/KYugoQ=', 'EWbZ5VRhbbqedT7qQnwXt/7NWMB23+QnCLCPW3g6qa8=', 'LeUpiUMahZWTQTAmNUQT2xd/v0zSrAtW+FWoiDV+5GY=', 'MAbrT/x6hYGabaSS86isHfUa7lsXuOiddL8Bz19x6a0=', 'KvQfu2G6ioD9z2//nj9vQimT/o8KRjn5YjRMgiUUUIY=', 'EZ5oTeR2FV/lprQajryF24cYqyeInoXngbIUus5IJ8M=', 'GDW3huLokl4Yi+pZrjY1N7USSMI4KPBHz/eEuXs/2AA=', 'KCAaNMWU36NNeUmWxkM6INFSusKnkFySbEDihasy7rY=', 'CD79eifRdRCU6A/vr3iwAIZMgutXEYdySnYfiMIsxOc=', 'C2+Io1dxmVJhWOYc7qJ76BHBbfd3TdhRngeVZPYf0Ts=', 'Dsho5tFeUdlkT2bh1kcalFiVEcoA0p4QFDkObuQlT1s=', 'KvM+P4ZncScawMmz7S4RQuzT50uTnNQNANk3q4TJhZE=', 'C1ICEfkEtefQm12WHGrOdzRWjFR91oWLNkzl5HlR8Xg=', 'Cy1yLQkZoarY21jxAGKpLqDFasQnDoIsyiKGIBiKHUA=', 'H3kNTX+M8JTZgM6zfCRT6Ve1SpmRyji74AYdHtblYtQ=', 'AXHrld+/fR6uqXzThfeAFQiFwWI1oqao2pLOsB5QQjM=', 'DC0OO1/VdUkym/aIXaZrm3kLQN79LIZQdiMFOBsWiHM=', 'EWL7KGicJxVOWoIotOcrN3y8r6WJ4oPDXTgDBUQHoY0=', 'LxRZtl3uRBtkrThqkegxDygsWpKonhmSFiPvgklxG8A=', 'Hm/zIWtojD2ZbXQ2fVzUwbxInUZ1TrcSwkP3DRtTz7s=', 'AcqL5zgyuNBoFIfSfRV4AtdBpvNs3CoFdogfkyZHiHU=', 'H3c1cG/+n8WG+XbVvfIj3GgChggLEM6gC5td4xX5ZQ4=', 'JSK2D06jMHZAoMLc4EH7qSGsEKPV8JbvR0XKg4KF8Bk=', 'I/C+4AGxAp1SVQdd3JV/gzQYytT1K2w/jOFsI1VyV1s=', 'K8Gui43buB/KrC1EVV7VaF0UJjPp35BfZtlAEJMILVk=', 'D5QGuCllZKNzBFB7jbo+0WI3EnOgex/JgBH81q1yIF8=', 'I2Co6wzH3vpntymY3pBxThfnWxdKUu5KyxJsjNmV8Kg=', 'FYcaXN3q2XaATIA8uu8lXrSBWl6W34sAbcu8J2f4iUg=', 'GTpWdmmY7p4KhlLdLzsdoDYvT1T3I3lUT5V8ze77Qg8=', 'KjlKQ5NPhpgvm+Vv9PqxcDsuY8itM0g05DCYBed3rg8=', 'GFmVTP64aV8+i2NdyzRRkoks0RIjRDuntBZuiHbA0UI=', 'BOEYF2MFDlgBNETby5nxkCsRvCXZC73KQI04GfT+0ys=', 'D9slPe6Dhp1AwzXqZN6MW7EOuC2wi16LH15VUr/QXyM=', 'BYy+ippQJ72qTvtiOt6tYnXwhobxwImEqdfFuum08cA=', 'E4Ltzplx4YZJfq2xrrH1KyO0uDvvAjqw0VIotMzspZo=', 'A0ZJkPBFxu4IGcpR/RGwvn9huOuZ8Ut34eZjRgHZ6LU=', 'I/e/yHINwpb/8ztB+Y/4PG/KtGBdsutaqlvBN663Clg=', 'ClmhWOPuwhF+bpTn8OnezxjD/9XhUxqSGWNhWLuvYvI=', 'BuxUyAOBwFK1i/I7MS/9POLE66BlQgr49MI+0Adf0Hs=', 'EYhy3IMuDrVHa1ZkjoZ+yLCTQPenvLG0li8P+e0fnQE=', 'E9afoSfYNBZa1cfLp61Z7VLgsPDkLX/qleGQa1IJIbE=', 'FpoXf2PqaBJwscaHenPSG94UOUL7cdxV/YpJ8Z8Qx3s=', 'BO9RWRxurZfvQvKHrc5A2Tq+sDK5IvZv+36aWnRQVE0=', 'JW4XWh3AeTkOzXynA/suOxnsYYBdTwPO1fRe5t0Paew=', 'MBAtKGNqvV/l8q9BL/YAT3XMNg0yBd0toAKBPT4s7rI=', 'EJmOQt/NO78cBxS8c+sb9ARDo/qZvvSjH9Mb4YL8x5I=', 'GT7djp/PPXYl+n0ktZih2J8zYur01YLv7K12+HnjaGA=', 'GBaK/TTy2RXQNozoC3szR9HHpWHOYRQl8mZNeqUfC10=', 'KTg8AevTtqsMAXZW6+ZYtqMo7He8M2JuKeLpWzPqYRE=', 'EGRtLyYD3jmh9K5ed3GmSnAttuhvt2q2AL9XP5AQxxE=', 'C+teB9GycUX1dfE5WlW/Ey+QwltA2ns4ZNAkLcsRF/s=', 'FtaFJSB4wTPcDT7K1itciDD5W7LlS1mr3/vwGNlvozY=', 'Cmq9HYM5OPM8dBVOBAS0tApVW7vsId36/Wct1iBH8Bo=', 'GmefXTbre1yOoSpMLe3I/rEt/+7EUDFycKbxmzTPGGA=', 'CYD7IzvUVsI5dNUODr/eRyakI+raTo9v+8dZLj8bk9Y=', 'FhtCIy5huEy/GBCvk6OPwM7OPVYoySggA+ustcMSxys=', 'CtoQqQx/BSCVD31Hpg1eakk/CXh/FWTl0JID20feGgs=', 'GnMNNyMQuoIyA0WimsQjjtPweoorThIbtQ3bmvQH9FE=', 'LIEg8mjvBU+BcGTDad2n6pCDd/6rpcTf+9oQ71joxVY=', 'HHyIJPdYdT+lfAB4nGhCF7kw6VMTvLc+bnuGSaSWj3A=', 'LNntMfX4aRyOOeQHenT6oPQArYtJHrP3tHsn+j/Rz3c=', 'I/9PnUaBNFfPYNkvV2GDmaXgIqwyHKVQhUriORiiLuo=', 'CZRaXRR6T2bO7OZAXd3Z0K9aLFEDUpQH3/HqWPGAQm0=', 'GI2cUoAl1MK2dmDGt3G5D3x9puqinT8mim3SI+xvxjA=', 'MFDjeZZZa3+B9oMRQx2HNNun2SbTYzWV4MDY3fTw9H8=', 'Fa8RaTloMKkWAMqBAsNcQmzq5UYeP5XYnYKVGNMK/Xg=', 'HabQmIVDLqmgbZ83+HPZhdrpM+NRRmspBChNozINisw=', 'J5bqkNJpryn1+KzzOSESTk5PrT2+ZYlF5UbuQR3aqcs=', 'IC190doPa0sDJcizMHdC8B4VYS7I6TBKfLAxngHTLWA=', 'CW1nkNBbt1kVapUromPWcqLX+ceI9Mgxop2s5MD4vl8=', 'BU76H2Ww/OKDgIllJ12He0ONojzlsT4ZY3mMsUR9JaQ=', 'GxYvg9kX6T7bMwjCmALeudiqaQETsuFIZMz24Y5BZfE=', 'IeUkHhJWTdb9nxzdKg3jnu3+/BRmzFaOxc63RaBQbtw=', 'HPtWYujPWskiaoDuF7Nqvstzq1+H4WGSe0NJ4Q5L3wg=', 'DyEXfjAqdxu65tjR7LNztiyZrzRiIKwBKcU/Zm6yQQA=', 'FnFSI3RgaZKv+w3X9xsSvsQjau3mKQVGvO9+H1FcIyA=', 'D6PsW5SIJZwutM8kUBv62b4uyeQsXMjM1BnSppLK2HA=', 'GTwOBOC9KYNXyyZsFQYIDtNu3OhcZIzAhejFexq1S7o=', 'ECrfjvdHNaJ+kSgwbcvDyZ9vcpHNQGV4zhTqKtq6aPg=', 'D+CveFjkmFnipU1vGtlFsTFqokv73SOuQKbQy3DD6rE=', 'IW9nF7vH3tsIU2oiIIQ/Ti2l8dqp69796KXqc0R5jSI=', 'HaVcyQDw0h9KPmlDkZGKGzwjsqx3PGs++I4uQigyUWE='],
|
|
932
|
-
M: [['EJt/QRug5MmytwyvXDansZS+fBGtJDeL/ttoWSuoEYs=', 'Fu1B4Tu5wMZq4RlCT928vJMU3J/b3upV1sZFQ9xJA+A=', 'K5C7oA/KBYn2F+fcv+guDfcGq2QM6yR7eRqTt042c20='], ['KWnyfu0xpIC5w2x2Q3nbyizI/dFBXD3e1ilAvN4L13E=', 'LiQZ+ewC7DlMmHHIMpY9wbiddDyMe5ZAKbIxFoex/iM=', 'EBBx8AMjebaXMVh2aQ8FPRSNThCfX7BlyKrMVaD4m/o='], ['FDAh7GhqPzMNX55lRjgGXObNeeKMWzdTMmJE7mWhsac=', 'F2zAKWla0CWCpw7/CKb9mdBX4S5Y59e2sWzfq8juKRE=', 'GaP8ClZwK/QXun/uOAJZP6ZERwMHBD93cyec1x0l1eA=']]
|
|
933
|
-
};
|
|
934
|
-
_2.default = _default;
|
|
935
|
-
|
|
936
|
-
Object.defineProperty(poseidon2$1, "__esModule", {
|
|
937
|
-
value: true
|
|
938
|
-
});
|
|
939
|
-
var poseidon2_2 = poseidon2$1.poseidon2 = poseidon2;
|
|
940
|
-
var _poseidon = _interopRequireDefault(poseidon_1);
|
|
941
|
-
var _unstringify = _interopRequireDefault(unstringify);
|
|
942
|
-
var _ = _interopRequireDefault(_2);
|
|
943
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
944
|
-
const c = (0, _unstringify.default)(_.default);
|
|
945
|
-
function poseidon2(inputs) {
|
|
946
|
-
return (0, _poseidon.default)(inputs, c);
|
|
947
|
-
}
|
|
948
|
-
|
|
949
|
-
function bytesToBigint(bytes) {
|
|
950
|
-
var hex = "0x";
|
|
951
|
-
for (var i = 0; i < bytes.length; i += 1) {
|
|
952
|
-
hex += bytes[i].toString(16).padStart(2, "0");
|
|
953
|
-
}
|
|
954
|
-
return BigInt(hex);
|
|
955
|
-
}
|
|
956
|
-
|
|
957
|
-
/* istanbul ignore file */
|
|
958
|
-
function randomNumber() {
|
|
959
|
-
var bytes = crypto.getRandomValues(new Uint8Array(32));
|
|
960
|
-
return bytesToBigint(bytes);
|
|
961
|
-
}
|
|
962
|
-
|
|
963
|
-
/**
|
|
964
|
-
* The Semaphore identity is essentially an {@link https://www.rfc-editor.org/rfc/rfc8032 | EdDSA}
|
|
965
|
-
* public/private key pair. The {@link https://github.com/privacy-scaling-explorations/zk-kit/tree/main/packages/eddsa-poseidon | EdDSA implementation}
|
|
966
|
-
* in this library uses {@link https://eips.ethereum.org/EIPS/eip-2494 | Baby Jubjub} for public key generation
|
|
967
|
-
* and {@link https://www.poseidon-hash.info | Poseidon} for signatures.
|
|
968
|
-
* In addition, the commitment, i.e. the hash of the public key, is used to represent
|
|
969
|
-
* Semaphore identities in groups, adding an additional layer of privacy and security.
|
|
970
|
-
*/
|
|
971
|
-
var Identity = /** @class */ (function () {
|
|
972
|
-
/**
|
|
973
|
-
* Initializes the class attributes based on a given private key.
|
|
974
|
-
* If the private key is not passed as a parameter, a random key is generated.
|
|
975
|
-
* The constructor calculates the secret scalar and public key from the private key,
|
|
976
|
-
* and computes a commitment of the public key using a hash function (Poseidon).
|
|
977
|
-
*
|
|
978
|
-
* @example
|
|
979
|
-
* // Generates an identity.
|
|
980
|
-
* const { privateKey, publicKey, commitment } = new Identity("private-key")
|
|
981
|
-
* @example
|
|
982
|
-
* // Generates an identity with a random private key.
|
|
983
|
-
* const { privateKey, publicKey, commitment } = new Identity()
|
|
984
|
-
*
|
|
985
|
-
* @param privateKey The private key used to derive the public key.
|
|
986
|
-
*/
|
|
987
|
-
function Identity(privateKey) {
|
|
988
|
-
if (privateKey === void 0) { privateKey = randomNumber().toString(); }
|
|
989
|
-
this._privateKey = privateKey;
|
|
990
|
-
this._secretScalar = deriveSecretScalar(privateKey);
|
|
991
|
-
this._publicKey = derivePublicKey(privateKey);
|
|
992
|
-
this._commitment = poseidon2_2(this._publicKey).toString();
|
|
993
|
-
}
|
|
994
|
-
Object.defineProperty(Identity.prototype, "privateKey", {
|
|
995
|
-
/**
|
|
996
|
-
* Returns the private key.
|
|
997
|
-
* @returns The private key as a {@link https://zkkit.pse.dev/types/_zk_kit_utils.BigNumberish.html | BigNumberish}.
|
|
998
|
-
*/
|
|
999
|
-
get: function () {
|
|
1000
|
-
return this._privateKey;
|
|
1001
|
-
},
|
|
1002
|
-
enumerable: false,
|
|
1003
|
-
configurable: true
|
|
1004
|
-
});
|
|
1005
|
-
Object.defineProperty(Identity.prototype, "secretScalar", {
|
|
1006
|
-
/**
|
|
1007
|
-
* Returns the secret scalar.
|
|
1008
|
-
* @returns The secret scalar as a string.
|
|
1009
|
-
*/
|
|
1010
|
-
get: function () {
|
|
1011
|
-
return this._secretScalar;
|
|
1012
|
-
},
|
|
1013
|
-
enumerable: false,
|
|
1014
|
-
configurable: true
|
|
1015
|
-
});
|
|
1016
|
-
Object.defineProperty(Identity.prototype, "publicKey", {
|
|
1017
|
-
/**
|
|
1018
|
-
* Returns the public key as a Baby Jubjub {@link https://zkkit.pse.dev/types/_zk_kit_baby_jubjub.Point.html | Point}.
|
|
1019
|
-
* @returns The public key as a point.
|
|
1020
|
-
*/
|
|
1021
|
-
get: function () {
|
|
1022
|
-
return this._publicKey;
|
|
1023
|
-
},
|
|
1024
|
-
enumerable: false,
|
|
1025
|
-
configurable: true
|
|
1026
|
-
});
|
|
1027
|
-
Object.defineProperty(Identity.prototype, "commitment", {
|
|
1028
|
-
/**
|
|
1029
|
-
* Returns the commitment hash of the public key.
|
|
1030
|
-
* @returns The commitment as a string.
|
|
1031
|
-
*/
|
|
1032
|
-
get: function () {
|
|
1033
|
-
return this._commitment;
|
|
1034
|
-
},
|
|
1035
|
-
enumerable: false,
|
|
1036
|
-
configurable: true
|
|
1037
|
-
});
|
|
1038
|
-
/**
|
|
1039
|
-
* Generates a signature for a given message using the private key.
|
|
1040
|
-
* This method demonstrates how to sign a message and could be used
|
|
1041
|
-
* for authentication or data integrity.
|
|
1042
|
-
*
|
|
1043
|
-
* @example
|
|
1044
|
-
* const identity = new Identity()
|
|
1045
|
-
* const signature = identity.signMessage("message")
|
|
1046
|
-
*
|
|
1047
|
-
* @param message The message to be signed.
|
|
1048
|
-
* @returns A {@link https://zkkit.pse.dev/types/_zk_kit_eddsa_poseidon.Signature.html | Signature} object containing the signature components.
|
|
1049
|
-
*/
|
|
1050
|
-
Identity.prototype.signMessage = function (message) {
|
|
1051
|
-
return signMessage(this.privateKey, message);
|
|
1052
|
-
};
|
|
1053
|
-
/**
|
|
1054
|
-
* Verifies a signature against a given message and public key.
|
|
1055
|
-
* This static method allows for the verification of signatures without needing
|
|
1056
|
-
* an instance of the Identity class. It's useful for cases where you only have
|
|
1057
|
-
* the public key, the message and a signature, and need to verify if they match.
|
|
1058
|
-
*
|
|
1059
|
-
* @example
|
|
1060
|
-
* const identity = new Identity()
|
|
1061
|
-
* const signature = identity.signMessage("message")
|
|
1062
|
-
* Identity.verifySignature("message", signature, identity.publicKey)
|
|
1063
|
-
*
|
|
1064
|
-
* @param message The message that was signed.
|
|
1065
|
-
* @param signature The signature to verify.
|
|
1066
|
-
* @param publicKey The public key to use for verification.
|
|
1067
|
-
* @returns A boolean indicating whether the signature is valid.
|
|
1068
|
-
*/
|
|
1069
|
-
Identity.verifySignature = function (message, signature, publicKey) {
|
|
1070
|
-
return verifySignature(message, signature, publicKey);
|
|
1071
|
-
};
|
|
1072
|
-
return Identity;
|
|
1073
|
-
}());
|
|
1074
|
-
|
|
1075
|
-
export { Identity };
|