@semaphore-protocol/identity 4.0.0-alpha.1 → 4.0.0-alpha.3
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/README.md +1 -1
- package/dist/index.browser.mjs +980 -0
- package/dist/index.node.js +9 -3
- package/dist/{index.mjs → index.node.mjs} +9 -3
- package/dist/types/bytes-to-bigint.d.ts +1 -0
- package/dist/types/random-number.browser.d.ts +1 -0
- package/dist/types/random-number.node.d.ts +1 -0
- package/package.json +15 -6
- package/src/bytes-to-bigint.ts +9 -0
- package/src/identity.ts +2 -2
- package/src/random-number.browser.ts +8 -0
- package/src/random-number.node.ts +9 -0
package/README.md
CHANGED
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
<img src="https://img.shields.io/badge/project-Semaphore-blue.svg?style=flat-square">
|
|
11
11
|
</a>
|
|
12
12
|
<a href="https://github.com/semaphore-protocol/semaphore/blob/main/LICENSE">
|
|
13
|
-
<img alt="
|
|
13
|
+
<img alt="NPM license" src="https://img.shields.io/npm/l/%40semaphore-protocol%2Fidentity?style=flat-square">
|
|
14
14
|
</a>
|
|
15
15
|
<a href="https://www.npmjs.com/package/@semaphore-protocol/identity">
|
|
16
16
|
<img alt="NPM version" src="https://img.shields.io/npm/v/@semaphore-protocol/identity?style=flat-square" />
|
|
@@ -0,0 +1,980 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module @semaphore-protocol/identity
|
|
3
|
+
* @version 4.0.0-alpha.3
|
|
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/eddsa-poseidon
|
|
11
|
+
* @version 0.4.1
|
|
12
|
+
* @file A JavaScript EdDSA library for secure signing and verification using Poseidon the Baby Jubjub elliptic curve.
|
|
13
|
+
* @copyright Ethereum Foundation 2023
|
|
14
|
+
* @license MIT
|
|
15
|
+
* @see [Github]{@link https://github.com/privacy-scaling-explorations/zk-kit/tree/main/packages/eddsa-poseidon}
|
|
16
|
+
*/
|
|
17
|
+
function getDefaultExportFromCjs (x) {
|
|
18
|
+
return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;
|
|
19
|
+
}
|
|
20
|
+
var poseidon5$1 = {};
|
|
21
|
+
const F$1 = BigInt('21888242871839275222246405745257275088548364400416034343698204186575808495617');
|
|
22
|
+
const N_ROUNDS_F$1 = 8;
|
|
23
|
+
const N_ROUNDS_P$1 = [56, 57, 56, 60, 60, 63, 64, 63, 60, 66, 60, 65, 70, 60, 64, 68];
|
|
24
|
+
const pow5$1 = v => {
|
|
25
|
+
let o = v * v;
|
|
26
|
+
return v * o * o % F$1;
|
|
27
|
+
};
|
|
28
|
+
function mix$1(state, M) {
|
|
29
|
+
const out = [];
|
|
30
|
+
for (let x = 0; x < state.length; x++) {
|
|
31
|
+
let o = 0n;
|
|
32
|
+
for (let y = 0; y < state.length; y++) {
|
|
33
|
+
o = o + M[x][y] * state[y];
|
|
34
|
+
}
|
|
35
|
+
out.push(o % F$1);
|
|
36
|
+
}
|
|
37
|
+
return out;
|
|
38
|
+
}
|
|
39
|
+
function poseidon$1(_inputs, opt) {
|
|
40
|
+
const inputs = _inputs.map(i => BigInt(i));
|
|
41
|
+
if (inputs.length <= 0) {
|
|
42
|
+
throw new Error('poseidon-lite: Not enough inputs');
|
|
43
|
+
}
|
|
44
|
+
if (inputs.length > N_ROUNDS_P$1.length) {
|
|
45
|
+
throw new Error('poseidon-lite: Too many inputs');
|
|
46
|
+
}
|
|
47
|
+
const t = inputs.length + 1;
|
|
48
|
+
const nRoundsF = N_ROUNDS_F$1;
|
|
49
|
+
const nRoundsP = N_ROUNDS_P$1[t - 2];
|
|
50
|
+
const {
|
|
51
|
+
C,
|
|
52
|
+
M
|
|
53
|
+
} = opt;
|
|
54
|
+
if (M.length !== t) {
|
|
55
|
+
throw new Error(`poseidon-lite: Incorrect M length, expected ${t} got ${M.length}`);
|
|
56
|
+
}
|
|
57
|
+
let state = [0n, ...inputs];
|
|
58
|
+
for (let x = 0; x < nRoundsF + nRoundsP; x++) {
|
|
59
|
+
for (let y = 0; y < state.length; y++) {
|
|
60
|
+
state[y] = state[y] + C[x * t + y];
|
|
61
|
+
if (x < nRoundsF / 2 || x >= nRoundsF / 2 + nRoundsP) state[y] = pow5$1(state[y]);else if (y === 0) state[y] = pow5$1(state[y]);
|
|
62
|
+
}
|
|
63
|
+
state = mix$1(state, M);
|
|
64
|
+
}
|
|
65
|
+
return state[0];
|
|
66
|
+
}
|
|
67
|
+
var poseidon_1$1 = poseidon$1;
|
|
68
|
+
getDefaultExportFromCjs(poseidon_1$1);
|
|
69
|
+
var unstringify$1 = {};
|
|
70
|
+
Object.defineProperty(unstringify$1, "__esModule", {
|
|
71
|
+
value: true
|
|
72
|
+
});
|
|
73
|
+
unstringify$1.default = unstringifyBigInts$1;
|
|
74
|
+
function unstringifyBigInts$1(o) {
|
|
75
|
+
if (Array.isArray(o)) {
|
|
76
|
+
return o.map(unstringifyBigInts$1);
|
|
77
|
+
} else if (typeof o == 'object') {
|
|
78
|
+
const res = {};
|
|
79
|
+
for (const [key, val] of Object.entries(o)) {
|
|
80
|
+
res[key] = unstringifyBigInts$1(val);
|
|
81
|
+
}
|
|
82
|
+
return res;
|
|
83
|
+
}
|
|
84
|
+
const byteArray = Uint8Array.from(atob(o), c => c.charCodeAt(0));
|
|
85
|
+
const hex = [...byteArray].map(x => x.toString(16).padStart(2, '0')).join('');
|
|
86
|
+
return BigInt(`0x${hex}`);
|
|
87
|
+
}
|
|
88
|
+
var _5 = {};
|
|
89
|
+
Object.defineProperty(_5, "__esModule", {
|
|
90
|
+
value: true
|
|
91
|
+
});
|
|
92
|
+
_5.default = void 0;
|
|
93
|
+
var _default$1 = {
|
|
94
|
+
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='],
|
|
95
|
+
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=']]
|
|
96
|
+
};
|
|
97
|
+
_5.default = _default$1;
|
|
98
|
+
Object.defineProperty(poseidon5$1, "__esModule", {
|
|
99
|
+
value: true
|
|
100
|
+
});
|
|
101
|
+
var poseidon5_2 = poseidon5$1.poseidon5 = poseidon5;
|
|
102
|
+
var _poseidon$1 = _interopRequireDefault$1(poseidon_1$1);
|
|
103
|
+
var _unstringify$1 = _interopRequireDefault$1(unstringify$1);
|
|
104
|
+
var _$1 = _interopRequireDefault$1(_5);
|
|
105
|
+
function _interopRequireDefault$1(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
106
|
+
const c$1 = (0, _unstringify$1.default)(_$1.default);
|
|
107
|
+
function poseidon5(inputs) {
|
|
108
|
+
return (0, _poseidon$1.default)(inputs, c$1);
|
|
109
|
+
}
|
|
110
|
+
function isZero(a) {
|
|
111
|
+
return !a;
|
|
112
|
+
}
|
|
113
|
+
function isOdd(a) {
|
|
114
|
+
return (a & BigInt(1)) === BigInt(1);
|
|
115
|
+
}
|
|
116
|
+
function shiftRight(a, n) {
|
|
117
|
+
return a >> n;
|
|
118
|
+
}
|
|
119
|
+
function mul(a, b) {
|
|
120
|
+
return a * b;
|
|
121
|
+
}
|
|
122
|
+
function bits(n) {
|
|
123
|
+
var res = [];
|
|
124
|
+
var E = n;
|
|
125
|
+
while (E) {
|
|
126
|
+
if (E & BigInt(1)) {
|
|
127
|
+
res.push(1);
|
|
128
|
+
}
|
|
129
|
+
else {
|
|
130
|
+
res.push(0);
|
|
131
|
+
}
|
|
132
|
+
E >>= BigInt(1);
|
|
133
|
+
}
|
|
134
|
+
return res;
|
|
135
|
+
}
|
|
136
|
+
var Field = /** @class */ (function () {
|
|
137
|
+
function Field(order) {
|
|
138
|
+
this.one = BigInt(1);
|
|
139
|
+
this.zero = BigInt(0);
|
|
140
|
+
this._order = order;
|
|
141
|
+
this._half = order >> this.one;
|
|
142
|
+
this._negone = this._order - this.one;
|
|
143
|
+
}
|
|
144
|
+
Field.prototype.e = function (res) {
|
|
145
|
+
return res >= this._order ? res % this._order : res;
|
|
146
|
+
};
|
|
147
|
+
Field.prototype.mul = function (a, b) {
|
|
148
|
+
return (a * b) % this._order;
|
|
149
|
+
};
|
|
150
|
+
Field.prototype.sub = function (a, b) {
|
|
151
|
+
return a >= b ? a - b : this._order - b + a;
|
|
152
|
+
};
|
|
153
|
+
Field.prototype.add = function (a, b) {
|
|
154
|
+
var res = a + b;
|
|
155
|
+
return res >= this._order ? res - this._order : res;
|
|
156
|
+
};
|
|
157
|
+
Field.prototype.inv = function (a) {
|
|
158
|
+
var _a, _b;
|
|
159
|
+
var t = this.zero;
|
|
160
|
+
var r = this._order;
|
|
161
|
+
var newt = this.one;
|
|
162
|
+
var newr = a % this._order;
|
|
163
|
+
while (newr) {
|
|
164
|
+
var q = r / newr;
|
|
165
|
+
_a = [newt, t - q * newt], t = _a[0], newt = _a[1];
|
|
166
|
+
_b = [newr, r - q * newr], r = _b[0], newr = _b[1];
|
|
167
|
+
}
|
|
168
|
+
if (t < this.zero) {
|
|
169
|
+
t += this._order;
|
|
170
|
+
}
|
|
171
|
+
return t;
|
|
172
|
+
};
|
|
173
|
+
Field.prototype.div = function (a, b) {
|
|
174
|
+
return this.mul(a, this.inv(b));
|
|
175
|
+
};
|
|
176
|
+
Field.prototype.eq = function (a, b) {
|
|
177
|
+
return a === b;
|
|
178
|
+
};
|
|
179
|
+
Field.prototype.square = function (a) {
|
|
180
|
+
return (a * a) % this._order;
|
|
181
|
+
};
|
|
182
|
+
Field.prototype.lt = function (a, b) {
|
|
183
|
+
var aa = a > this._half ? a - this._order : a;
|
|
184
|
+
var bb = b > this._half ? b - this._order : b;
|
|
185
|
+
return aa < bb;
|
|
186
|
+
};
|
|
187
|
+
Field.prototype.geq = function (a, b) {
|
|
188
|
+
var aa = a > this._half ? a - this._order : a;
|
|
189
|
+
var bb = b > this._half ? b - this._order : b;
|
|
190
|
+
return aa >= bb;
|
|
191
|
+
};
|
|
192
|
+
Field.prototype.neg = function (a) {
|
|
193
|
+
return a ? this._order - a : a;
|
|
194
|
+
};
|
|
195
|
+
Field.prototype.isZero = function (a) {
|
|
196
|
+
return a === this.zero;
|
|
197
|
+
};
|
|
198
|
+
Field.prototype.pow = function (base, e) {
|
|
199
|
+
if (isZero(e)) {
|
|
200
|
+
return this.one;
|
|
201
|
+
}
|
|
202
|
+
var n = bits(e);
|
|
203
|
+
if (n.length === 0) {
|
|
204
|
+
return this.one;
|
|
205
|
+
}
|
|
206
|
+
var res = base;
|
|
207
|
+
for (var i = n.length - 2; i >= 0; i -= 1) {
|
|
208
|
+
res = this.square(res);
|
|
209
|
+
if (n[i]) {
|
|
210
|
+
res = this.mul(res, base);
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
return res;
|
|
214
|
+
};
|
|
215
|
+
return Field;
|
|
216
|
+
}());
|
|
217
|
+
function pruneBuffer(buff) {
|
|
218
|
+
buff[0] &= 0xf8;
|
|
219
|
+
buff[31] &= 0x7f;
|
|
220
|
+
buff[31] |= 0x40;
|
|
221
|
+
return buff;
|
|
222
|
+
}
|
|
223
|
+
function isStringifiedBigint(s) {
|
|
224
|
+
try {
|
|
225
|
+
BigInt(s);
|
|
226
|
+
return true;
|
|
227
|
+
}
|
|
228
|
+
catch (e) {
|
|
229
|
+
return false;
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
function isHexadecimal(s) {
|
|
233
|
+
return /^(0x|0X)[0-9a-fA-F]+$/.test(s);
|
|
234
|
+
}
|
|
235
|
+
function isBigNumberish(value) {
|
|
236
|
+
return (typeof value === "number" ||
|
|
237
|
+
typeof value === "bigint" ||
|
|
238
|
+
(typeof value === "string" && isStringifiedBigint(value)) ||
|
|
239
|
+
(typeof value === "string" && isHexadecimal(value)) ||
|
|
240
|
+
Buffer.isBuffer(value));
|
|
241
|
+
}
|
|
242
|
+
function isPoint(point) {
|
|
243
|
+
return Array.isArray(point) && point.length === 2 && isStringifiedBigint(point[0]) && isStringifiedBigint(point[1]);
|
|
244
|
+
}
|
|
245
|
+
function isSignature(signature) {
|
|
246
|
+
return (typeof signature === "object" &&
|
|
247
|
+
Object.prototype.hasOwnProperty.call(signature, "R8") &&
|
|
248
|
+
Object.prototype.hasOwnProperty.call(signature, "S") &&
|
|
249
|
+
isPoint(signature.R8) &&
|
|
250
|
+
isStringifiedBigint(signature.S));
|
|
251
|
+
}
|
|
252
|
+
function int2hex(n) {
|
|
253
|
+
var hex = n.toString(16);
|
|
254
|
+
if (hex.length % 2 !== 0) {
|
|
255
|
+
hex = "0".concat(hex);
|
|
256
|
+
}
|
|
257
|
+
return hex;
|
|
258
|
+
}
|
|
259
|
+
function bigNumberish2Buff(value) {
|
|
260
|
+
if (typeof value === "number" ||
|
|
261
|
+
typeof value === "bigint" ||
|
|
262
|
+
(typeof value === "string" && isStringifiedBigint(value))) {
|
|
263
|
+
var hex = int2hex(BigInt(value));
|
|
264
|
+
return Buffer.from(hex, "hex");
|
|
265
|
+
}
|
|
266
|
+
return value;
|
|
267
|
+
}
|
|
268
|
+
function buff2int(buffer) {
|
|
269
|
+
return BigInt("0x".concat(buffer.toString("hex")));
|
|
270
|
+
}
|
|
271
|
+
function bigNumberish2BigNumber(value) {
|
|
272
|
+
if (typeof value === "number" ||
|
|
273
|
+
typeof value === "bigint" ||
|
|
274
|
+
(typeof value === "string" && isStringifiedBigint(value)) ||
|
|
275
|
+
(typeof value === "string" && isHexadecimal(value))) {
|
|
276
|
+
return BigInt(value);
|
|
277
|
+
}
|
|
278
|
+
return buff2int(value);
|
|
279
|
+
}
|
|
280
|
+
function leBuff2int(buffer) {
|
|
281
|
+
return BigInt("0x".concat(buffer.reverse().toString("hex")));
|
|
282
|
+
}
|
|
283
|
+
function leInt2Buff(n) {
|
|
284
|
+
var hex = int2hex(n);
|
|
285
|
+
var buffer = Buffer.alloc(32, 0);
|
|
286
|
+
Buffer.from(hex, "hex").reverse().copy(buffer);
|
|
287
|
+
return buffer;
|
|
288
|
+
}
|
|
289
|
+
function checkPrivateKey(privateKey) {
|
|
290
|
+
if (isBigNumberish(privateKey)) {
|
|
291
|
+
return bigNumberish2Buff(privateKey);
|
|
292
|
+
}
|
|
293
|
+
if (typeof privateKey !== "string") {
|
|
294
|
+
throw TypeError("Invalid private key type. Supported types: number, bigint, buffer, string.");
|
|
295
|
+
}
|
|
296
|
+
return Buffer.from(privateKey);
|
|
297
|
+
}
|
|
298
|
+
function checkMessage(message) {
|
|
299
|
+
if (isBigNumberish(message)) {
|
|
300
|
+
return bigNumberish2BigNumber(message);
|
|
301
|
+
}
|
|
302
|
+
if (typeof message !== "string") {
|
|
303
|
+
throw TypeError("Invalid message type. Supported types: number, bigint, buffer, string.");
|
|
304
|
+
}
|
|
305
|
+
return buff2int(Buffer.from(message));
|
|
306
|
+
}
|
|
307
|
+
var r = BigInt("21888242871839275222246405745257275088548364400416034343698204186575808495617");
|
|
308
|
+
var Fr = new Field(r);
|
|
309
|
+
var Base8 = [
|
|
310
|
+
Fr.e(BigInt("5299619240641551281634865583518297030282874472190772894086521144482721001553")),
|
|
311
|
+
Fr.e(BigInt("16950150798460657717958625567821834550301663161624707787222815936182638968203"))
|
|
312
|
+
];
|
|
313
|
+
var a = Fr.e(BigInt("168700"));
|
|
314
|
+
var d = Fr.e(BigInt("168696"));
|
|
315
|
+
var order = BigInt("21888242871839275222246405745257275088614511777268538073601725287587578984328");
|
|
316
|
+
var subOrder = shiftRight(order, BigInt(3));
|
|
317
|
+
/**
|
|
318
|
+
* Performs point addition on the Baby Jubjub elliptic curve,
|
|
319
|
+
* calculating a third point from two given points.
|
|
320
|
+
* Let P1 = (x1, y1) and P2 = (x2, y2) be two arbitrary points of the curve.
|
|
321
|
+
* Then P1 + P2 = (x3, y3) is calculated in the following way:
|
|
322
|
+
* x3 = (x1*y2 + y1*x2)/(1 + d*x1*x2*y1*y2)
|
|
323
|
+
* y3 = (y1*y2 - a*x1*x2)/(1 - d*x1*x2*y1*y2)
|
|
324
|
+
* @param p1 - First point on the curve.
|
|
325
|
+
* @param p2 - Second point on the curve.
|
|
326
|
+
* @returns Resultant third point on the curve.
|
|
327
|
+
*/
|
|
328
|
+
function addPoint(p1, p2) {
|
|
329
|
+
var beta = Fr.mul(p1[0], p2[1]);
|
|
330
|
+
var gamma = Fr.mul(p1[1], p2[0]);
|
|
331
|
+
var delta = Fr.mul(Fr.sub(p1[1], Fr.mul(a, p1[0])), Fr.add(p2[0], p2[1]));
|
|
332
|
+
var tau = Fr.mul(beta, gamma);
|
|
333
|
+
var dtau = Fr.mul(d, tau);
|
|
334
|
+
var p3x = Fr.div(Fr.add(beta, gamma), Fr.add(Fr.one, dtau));
|
|
335
|
+
var p3y = Fr.div(Fr.add(delta, Fr.sub(Fr.mul(a, beta), gamma)), Fr.sub(Fr.one, dtau));
|
|
336
|
+
return [p3x, p3y];
|
|
337
|
+
}
|
|
338
|
+
/**
|
|
339
|
+
* Performs a scalar multiplication by starting from the 'base' point and 'adding'
|
|
340
|
+
* it to itself 'e' times.
|
|
341
|
+
* @param base - The base point used as a starting point.
|
|
342
|
+
* @param e - A secret number representing the private key.
|
|
343
|
+
* @returns The resulting point representing the public key.
|
|
344
|
+
*/
|
|
345
|
+
function mulPointEscalar(base, e) {
|
|
346
|
+
var res = [Fr.e(BigInt(0)), Fr.e(BigInt(1))];
|
|
347
|
+
var rem = e;
|
|
348
|
+
var exp = base;
|
|
349
|
+
while (!isZero(rem)) {
|
|
350
|
+
if (isOdd(rem)) {
|
|
351
|
+
res = addPoint(res, exp);
|
|
352
|
+
}
|
|
353
|
+
exp = addPoint(exp, exp);
|
|
354
|
+
rem = shiftRight(rem, BigInt(1));
|
|
355
|
+
}
|
|
356
|
+
return res;
|
|
357
|
+
}
|
|
358
|
+
function inCurve(p) {
|
|
359
|
+
var x1 = BigInt(p[0]);
|
|
360
|
+
var y1 = BigInt(p[1]);
|
|
361
|
+
var x2 = Fr.square(x1);
|
|
362
|
+
var y2 = Fr.square(y1);
|
|
363
|
+
return Fr.eq(Fr.add(Fr.mul(a, x2), y2), Fr.add(Fr.one, Fr.mul(Fr.mul(x2, y2), d)));
|
|
364
|
+
}
|
|
365
|
+
class Blake$2 {
|
|
366
|
+
_lengthCarry (arr) {
|
|
367
|
+
for (let j = 0; j < arr.length; ++j) {
|
|
368
|
+
if (arr[j] < 0x0100000000) break
|
|
369
|
+
arr[j] -= 0x0100000000;
|
|
370
|
+
arr[j + 1] += 1;
|
|
371
|
+
}
|
|
372
|
+
}
|
|
373
|
+
update (data) {
|
|
374
|
+
const block = this._block;
|
|
375
|
+
let offset = 0;
|
|
376
|
+
while (this._blockOffset + data.length - offset >= block.length) {
|
|
377
|
+
for (let i = this._blockOffset; i < block.length;) block[i++] = data[offset++];
|
|
378
|
+
this._length[0] += block.length * 8;
|
|
379
|
+
this._lengthCarry(this._length);
|
|
380
|
+
this._compress();
|
|
381
|
+
this._blockOffset = 0;
|
|
382
|
+
}
|
|
383
|
+
while (offset < data.length) block[this._blockOffset++] = data[offset++];
|
|
384
|
+
}
|
|
385
|
+
}
|
|
386
|
+
Blake$2.sigma = [
|
|
387
|
+
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15],
|
|
388
|
+
[14, 10, 4, 8, 9, 15, 13, 6, 1, 12, 0, 2, 11, 7, 5, 3],
|
|
389
|
+
[11, 8, 12, 0, 5, 2, 15, 13, 10, 14, 3, 6, 7, 1, 9, 4],
|
|
390
|
+
[7, 9, 3, 1, 13, 12, 11, 14, 2, 6, 5, 10, 4, 0, 15, 8],
|
|
391
|
+
[9, 0, 5, 7, 2, 4, 10, 15, 14, 1, 11, 12, 6, 8, 3, 13],
|
|
392
|
+
[2, 12, 6, 10, 0, 11, 8, 3, 4, 13, 7, 5, 15, 14, 1, 9],
|
|
393
|
+
[12, 5, 1, 15, 14, 13, 4, 10, 0, 7, 6, 3, 9, 2, 8, 11],
|
|
394
|
+
[13, 11, 7, 14, 12, 1, 3, 9, 5, 0, 15, 4, 8, 6, 2, 10],
|
|
395
|
+
[6, 15, 14, 9, 11, 3, 0, 8, 12, 2, 13, 7, 1, 4, 10, 5],
|
|
396
|
+
[10, 2, 8, 4, 7, 6, 1, 5, 15, 11, 9, 14, 3, 12, 13, 0],
|
|
397
|
+
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15],
|
|
398
|
+
[14, 10, 4, 8, 9, 15, 13, 6, 1, 12, 0, 2, 11, 7, 5, 3],
|
|
399
|
+
[11, 8, 12, 0, 5, 2, 15, 13, 10, 14, 3, 6, 7, 1, 9, 4],
|
|
400
|
+
[7, 9, 3, 1, 13, 12, 11, 14, 2, 6, 5, 10, 4, 0, 15, 8],
|
|
401
|
+
[9, 0, 5, 7, 2, 4, 10, 15, 14, 1, 11, 12, 6, 8, 3, 13],
|
|
402
|
+
[2, 12, 6, 10, 0, 11, 8, 3, 4, 13, 7, 5, 15, 14, 1, 9]
|
|
403
|
+
];
|
|
404
|
+
Blake$2.u256 = [
|
|
405
|
+
0x243f6a88, 0x85a308d3, 0x13198a2e, 0x03707344,
|
|
406
|
+
0xa4093822, 0x299f31d0, 0x082efa98, 0xec4e6c89,
|
|
407
|
+
0x452821e6, 0x38d01377, 0xbe5466cf, 0x34e90c6c,
|
|
408
|
+
0xc0ac29b7, 0xc97c50dd, 0x3f84d5b5, 0xb5470917
|
|
409
|
+
];
|
|
410
|
+
Blake$2.u512 = [
|
|
411
|
+
0x243f6a88, 0x85a308d3, 0x13198a2e, 0x03707344,
|
|
412
|
+
0xa4093822, 0x299f31d0, 0x082efa98, 0xec4e6c89,
|
|
413
|
+
0x452821e6, 0x38d01377, 0xbe5466cf, 0x34e90c6c,
|
|
414
|
+
0xc0ac29b7, 0xc97c50dd, 0x3f84d5b5, 0xb5470917,
|
|
415
|
+
0x9216d5d9, 0x8979fb1b, 0xd1310ba6, 0x98dfb5ac,
|
|
416
|
+
0x2ffd72db, 0xd01adfb7, 0xb8e1afed, 0x6a267e96,
|
|
417
|
+
0xba7c9045, 0xf12c7f99, 0x24a19947, 0xb3916cf7,
|
|
418
|
+
0x0801f2e2, 0x858efc16, 0x636920d8, 0x71574e69
|
|
419
|
+
];
|
|
420
|
+
Blake$2.padding = Buffer.from([
|
|
421
|
+
0x80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
422
|
+
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
423
|
+
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
424
|
+
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
425
|
+
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
426
|
+
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
427
|
+
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
428
|
+
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
|
|
429
|
+
]);
|
|
430
|
+
var blake = Blake$2;
|
|
431
|
+
getDefaultExportFromCjs(blake);
|
|
432
|
+
const Blake$1 = blake;
|
|
433
|
+
const zo$3 = Buffer.from([0x01]);
|
|
434
|
+
const oo$3 = Buffer.from([0x81]);
|
|
435
|
+
const rot$1 = (x, n) => ((x << (32 - n)) | (x >>> n)) >>> 0;
|
|
436
|
+
function g$1 (v, m, i, a, b, c, d, e) {
|
|
437
|
+
const sigma = Blake$1.sigma;
|
|
438
|
+
const u256 = Blake$1.u256;
|
|
439
|
+
v[a] = (v[a] + ((m[sigma[i][e]] ^ u256[sigma[i][e + 1]]) >>> 0) + v[b]) >>> 0;
|
|
440
|
+
v[d] = rot$1(v[d] ^ v[a], 16);
|
|
441
|
+
v[c] = (v[c] + v[d]) >>> 0;
|
|
442
|
+
v[b] = rot$1(v[b] ^ v[c], 12);
|
|
443
|
+
v[a] = (v[a] + ((m[sigma[i][e + 1]] ^ u256[sigma[i][e]]) >>> 0) + v[b]) >>> 0;
|
|
444
|
+
v[d] = rot$1(v[d] ^ v[a], 8);
|
|
445
|
+
v[c] = (v[c] + v[d]) >>> 0;
|
|
446
|
+
v[b] = rot$1(v[b] ^ v[c], 7);
|
|
447
|
+
}
|
|
448
|
+
var blake256 = class Blake256 extends Blake$1 {
|
|
449
|
+
constructor () {
|
|
450
|
+
super();
|
|
451
|
+
this._h = [
|
|
452
|
+
0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a,
|
|
453
|
+
0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19
|
|
454
|
+
];
|
|
455
|
+
this._s = [0, 0, 0, 0];
|
|
456
|
+
this._block = Buffer.alloc(64);
|
|
457
|
+
this._blockOffset = 0;
|
|
458
|
+
this._length = [0, 0];
|
|
459
|
+
this._nullt = false;
|
|
460
|
+
this._zo = zo$3;
|
|
461
|
+
this._oo = oo$3;
|
|
462
|
+
}
|
|
463
|
+
_compress () {
|
|
464
|
+
const u256 = Blake$1.u256;
|
|
465
|
+
const v = new Array(16);
|
|
466
|
+
const m = new Array(16);
|
|
467
|
+
let i;
|
|
468
|
+
for (i = 0; i < 16; ++i) m[i] = this._block.readUInt32BE(i * 4);
|
|
469
|
+
for (i = 0; i < 8; ++i) v[i] = this._h[i] >>> 0;
|
|
470
|
+
for (i = 8; i < 12; ++i) v[i] = (this._s[i - 8] ^ u256[i - 8]) >>> 0;
|
|
471
|
+
for (i = 12; i < 16; ++i) v[i] = u256[i - 8];
|
|
472
|
+
if (!this._nullt) {
|
|
473
|
+
v[12] = (v[12] ^ this._length[0]) >>> 0;
|
|
474
|
+
v[13] = (v[13] ^ this._length[0]) >>> 0;
|
|
475
|
+
v[14] = (v[14] ^ this._length[1]) >>> 0;
|
|
476
|
+
v[15] = (v[15] ^ this._length[1]) >>> 0;
|
|
477
|
+
}
|
|
478
|
+
for (i = 0; i < 14; ++i) {
|
|
479
|
+
g$1(v, m, i, 0, 4, 8, 12, 0);
|
|
480
|
+
g$1(v, m, i, 1, 5, 9, 13, 2);
|
|
481
|
+
g$1(v, m, i, 2, 6, 10, 14, 4);
|
|
482
|
+
g$1(v, m, i, 3, 7, 11, 15, 6);
|
|
483
|
+
g$1(v, m, i, 0, 5, 10, 15, 8);
|
|
484
|
+
g$1(v, m, i, 1, 6, 11, 12, 10);
|
|
485
|
+
g$1(v, m, i, 2, 7, 8, 13, 12);
|
|
486
|
+
g$1(v, m, i, 3, 4, 9, 14, 14);
|
|
487
|
+
}
|
|
488
|
+
for (i = 0; i < 16; ++i) this._h[i % 8] = (this._h[i % 8] ^ v[i]) >>> 0;
|
|
489
|
+
for (i = 0; i < 8; ++i) this._h[i] = (this._h[i] ^ this._s[i % 4]) >>> 0;
|
|
490
|
+
}
|
|
491
|
+
_padding () {
|
|
492
|
+
let lo = this._length[0] + this._blockOffset * 8;
|
|
493
|
+
let hi = this._length[1];
|
|
494
|
+
if (lo >= 0x0100000000) {
|
|
495
|
+
lo -= 0x0100000000;
|
|
496
|
+
hi += 1;
|
|
497
|
+
}
|
|
498
|
+
const msglen = Buffer.alloc(8);
|
|
499
|
+
msglen.writeUInt32BE(hi, 0);
|
|
500
|
+
msglen.writeUInt32BE(lo, 4);
|
|
501
|
+
if (this._blockOffset === 55) {
|
|
502
|
+
this._length[0] -= 8;
|
|
503
|
+
this.update(this._oo);
|
|
504
|
+
} else {
|
|
505
|
+
if (this._blockOffset < 55) {
|
|
506
|
+
if (this._blockOffset === 0) this._nullt = true;
|
|
507
|
+
this._length[0] -= (55 - this._blockOffset) * 8;
|
|
508
|
+
this.update(Blake$1.padding.slice(0, 55 - this._blockOffset));
|
|
509
|
+
} else {
|
|
510
|
+
this._length[0] -= (64 - this._blockOffset) * 8;
|
|
511
|
+
this.update(Blake$1.padding.slice(0, 64 - this._blockOffset));
|
|
512
|
+
this._length[0] -= 55 * 8;
|
|
513
|
+
this.update(Blake$1.padding.slice(1, 1 + 55));
|
|
514
|
+
this._nullt = true;
|
|
515
|
+
}
|
|
516
|
+
this.update(this._zo);
|
|
517
|
+
this._length[0] -= 8;
|
|
518
|
+
}
|
|
519
|
+
this._length[0] -= 64;
|
|
520
|
+
this.update(msglen);
|
|
521
|
+
}
|
|
522
|
+
digest () {
|
|
523
|
+
this._padding();
|
|
524
|
+
const buffer = Buffer.alloc(32);
|
|
525
|
+
for (let i = 0; i < 8; ++i) buffer.writeUInt32BE(this._h[i], i * 4);
|
|
526
|
+
return buffer
|
|
527
|
+
}
|
|
528
|
+
};
|
|
529
|
+
getDefaultExportFromCjs(blake256);
|
|
530
|
+
const Blake256 = blake256;
|
|
531
|
+
const zo$2 = Buffer.from([0x00]);
|
|
532
|
+
const oo$2 = Buffer.from([0x80]);
|
|
533
|
+
var blake224 = class Blake224 extends Blake256 {
|
|
534
|
+
constructor () {
|
|
535
|
+
super();
|
|
536
|
+
this._h = [
|
|
537
|
+
0xc1059ed8, 0x367cd507, 0x3070dd17, 0xf70e5939,
|
|
538
|
+
0xffc00b31, 0x68581511, 0x64f98fa7, 0xbefa4fa4
|
|
539
|
+
];
|
|
540
|
+
this._zo = zo$2;
|
|
541
|
+
this._oo = oo$2;
|
|
542
|
+
}
|
|
543
|
+
digest () {
|
|
544
|
+
this._padding();
|
|
545
|
+
const buffer = Buffer.alloc(28);
|
|
546
|
+
for (let i = 0; i < 7; ++i) buffer.writeUInt32BE(this._h[i], i * 4);
|
|
547
|
+
return buffer
|
|
548
|
+
}
|
|
549
|
+
};
|
|
550
|
+
getDefaultExportFromCjs(blake224);
|
|
551
|
+
const Blake = blake;
|
|
552
|
+
const zo$1 = Buffer.from([0x01]);
|
|
553
|
+
const oo$1 = Buffer.from([0x81]);
|
|
554
|
+
function rot (v, i, j, n) {
|
|
555
|
+
let hi = v[i * 2] ^ v[j * 2];
|
|
556
|
+
let lo = v[i * 2 + 1] ^ v[j * 2 + 1];
|
|
557
|
+
if (n >= 32) {
|
|
558
|
+
lo = lo ^ hi;
|
|
559
|
+
hi = lo ^ hi;
|
|
560
|
+
lo = lo ^ hi;
|
|
561
|
+
n -= 32;
|
|
562
|
+
}
|
|
563
|
+
if (n === 0) {
|
|
564
|
+
v[i * 2] = hi >>> 0;
|
|
565
|
+
v[i * 2 + 1] = lo >>> 0;
|
|
566
|
+
} else {
|
|
567
|
+
v[i * 2] = ((hi >>> n) | (lo << (32 - n))) >>> 0;
|
|
568
|
+
v[i * 2 + 1] = ((lo >>> n) | (hi << (32 - n))) >>> 0;
|
|
569
|
+
}
|
|
570
|
+
}
|
|
571
|
+
function g (v, m, i, a, b, c, d, e) {
|
|
572
|
+
const sigma = Blake.sigma;
|
|
573
|
+
const u512 = Blake.u512;
|
|
574
|
+
let lo;
|
|
575
|
+
lo = v[a * 2 + 1] + ((m[sigma[i][e] * 2 + 1] ^ u512[sigma[i][e + 1] * 2 + 1]) >>> 0) + v[b * 2 + 1];
|
|
576
|
+
v[a * 2] = (v[a * 2] + ((m[sigma[i][e] * 2] ^ u512[sigma[i][e + 1] * 2]) >>> 0) + v[b * 2] + ~~(lo / 0x0100000000)) >>> 0;
|
|
577
|
+
v[a * 2 + 1] = lo >>> 0;
|
|
578
|
+
rot(v, d, a, 32);
|
|
579
|
+
lo = v[c * 2 + 1] + v[d * 2 + 1];
|
|
580
|
+
v[c * 2] = (v[c * 2] + v[d * 2] + ~~(lo / 0x0100000000)) >>> 0;
|
|
581
|
+
v[c * 2 + 1] = lo >>> 0;
|
|
582
|
+
rot(v, b, c, 25);
|
|
583
|
+
lo = v[a * 2 + 1] + ((m[sigma[i][e + 1] * 2 + 1] ^ u512[sigma[i][e] * 2 + 1]) >>> 0) + v[b * 2 + 1];
|
|
584
|
+
v[a * 2] = (v[a * 2] + ((m[sigma[i][e + 1] * 2] ^ u512[sigma[i][e] * 2]) >>> 0) + v[b * 2] + ~~(lo / 0x0100000000)) >>> 0;
|
|
585
|
+
v[a * 2 + 1] = lo >>> 0;
|
|
586
|
+
rot(v, d, a, 16);
|
|
587
|
+
lo = v[c * 2 + 1] + v[d * 2 + 1];
|
|
588
|
+
v[c * 2] = (v[c * 2] + v[d * 2] + ~~(lo / 0x0100000000)) >>> 0;
|
|
589
|
+
v[c * 2 + 1] = lo >>> 0;
|
|
590
|
+
rot(v, b, c, 11);
|
|
591
|
+
}
|
|
592
|
+
var blake512 = class Blake512 extends Blake {
|
|
593
|
+
constructor () {
|
|
594
|
+
super();
|
|
595
|
+
this._h = [
|
|
596
|
+
0x6a09e667, 0xf3bcc908, 0xbb67ae85, 0x84caa73b,
|
|
597
|
+
0x3c6ef372, 0xfe94f82b, 0xa54ff53a, 0x5f1d36f1,
|
|
598
|
+
0x510e527f, 0xade682d1, 0x9b05688c, 0x2b3e6c1f,
|
|
599
|
+
0x1f83d9ab, 0xfb41bd6b, 0x5be0cd19, 0x137e2179
|
|
600
|
+
];
|
|
601
|
+
this._s = [0, 0, 0, 0, 0, 0, 0, 0];
|
|
602
|
+
this._block = Buffer.alloc(128);
|
|
603
|
+
this._blockOffset = 0;
|
|
604
|
+
this._length = [0, 0, 0, 0];
|
|
605
|
+
this._nullt = false;
|
|
606
|
+
this._zo = zo$1;
|
|
607
|
+
this._oo = oo$1;
|
|
608
|
+
}
|
|
609
|
+
_compress () {
|
|
610
|
+
const u512 = Blake.u512;
|
|
611
|
+
const v = new Array(32);
|
|
612
|
+
const m = new Array(32);
|
|
613
|
+
let i;
|
|
614
|
+
for (i = 0; i < 32; ++i) m[i] = this._block.readUInt32BE(i * 4);
|
|
615
|
+
for (i = 0; i < 16; ++i) v[i] = this._h[i] >>> 0;
|
|
616
|
+
for (i = 16; i < 24; ++i) v[i] = (this._s[i - 16] ^ u512[i - 16]) >>> 0;
|
|
617
|
+
for (i = 24; i < 32; ++i) v[i] = u512[i - 16];
|
|
618
|
+
if (!this._nullt) {
|
|
619
|
+
v[24] = (v[24] ^ this._length[1]) >>> 0;
|
|
620
|
+
v[25] = (v[25] ^ this._length[0]) >>> 0;
|
|
621
|
+
v[26] = (v[26] ^ this._length[1]) >>> 0;
|
|
622
|
+
v[27] = (v[27] ^ this._length[0]) >>> 0;
|
|
623
|
+
v[28] = (v[28] ^ this._length[3]) >>> 0;
|
|
624
|
+
v[29] = (v[29] ^ this._length[2]) >>> 0;
|
|
625
|
+
v[30] = (v[30] ^ this._length[3]) >>> 0;
|
|
626
|
+
v[31] = (v[31] ^ this._length[2]) >>> 0;
|
|
627
|
+
}
|
|
628
|
+
for (i = 0; i < 16; ++i) {
|
|
629
|
+
g(v, m, i, 0, 4, 8, 12, 0);
|
|
630
|
+
g(v, m, i, 1, 5, 9, 13, 2);
|
|
631
|
+
g(v, m, i, 2, 6, 10, 14, 4);
|
|
632
|
+
g(v, m, i, 3, 7, 11, 15, 6);
|
|
633
|
+
g(v, m, i, 0, 5, 10, 15, 8);
|
|
634
|
+
g(v, m, i, 1, 6, 11, 12, 10);
|
|
635
|
+
g(v, m, i, 2, 7, 8, 13, 12);
|
|
636
|
+
g(v, m, i, 3, 4, 9, 14, 14);
|
|
637
|
+
}
|
|
638
|
+
for (i = 0; i < 16; ++i) {
|
|
639
|
+
this._h[(i % 8) * 2] = (this._h[(i % 8) * 2] ^ v[i * 2]) >>> 0;
|
|
640
|
+
this._h[(i % 8) * 2 + 1] = (this._h[(i % 8) * 2 + 1] ^ v[i * 2 + 1]) >>> 0;
|
|
641
|
+
}
|
|
642
|
+
for (i = 0; i < 8; ++i) {
|
|
643
|
+
this._h[i * 2] = (this._h[i * 2] ^ this._s[(i % 4) * 2]) >>> 0;
|
|
644
|
+
this._h[i * 2 + 1] = (this._h[i * 2 + 1] ^ this._s[(i % 4) * 2 + 1]) >>> 0;
|
|
645
|
+
}
|
|
646
|
+
}
|
|
647
|
+
_padding () {
|
|
648
|
+
const len = this._length.slice();
|
|
649
|
+
len[0] += this._blockOffset * 8;
|
|
650
|
+
this._lengthCarry(len);
|
|
651
|
+
const msglen = Buffer.alloc(16);
|
|
652
|
+
for (let i = 0; i < 4; ++i) msglen.writeUInt32BE(len[3 - i], i * 4);
|
|
653
|
+
if (this._blockOffset === 111) {
|
|
654
|
+
this._length[0] -= 8;
|
|
655
|
+
this.update(this._oo);
|
|
656
|
+
} else {
|
|
657
|
+
if (this._blockOffset < 111) {
|
|
658
|
+
if (this._blockOffset === 0) this._nullt = true;
|
|
659
|
+
this._length[0] -= (111 - this._blockOffset) * 8;
|
|
660
|
+
this.update(Blake.padding.slice(0, 111 - this._blockOffset));
|
|
661
|
+
} else {
|
|
662
|
+
this._length[0] -= (128 - this._blockOffset) * 8;
|
|
663
|
+
this.update(Blake.padding.slice(0, 128 - this._blockOffset));
|
|
664
|
+
this._length[0] -= 111 * 8;
|
|
665
|
+
this.update(Blake.padding.slice(1, 1 + 111));
|
|
666
|
+
this._nullt = true;
|
|
667
|
+
}
|
|
668
|
+
this.update(this._zo);
|
|
669
|
+
this._length[0] -= 8;
|
|
670
|
+
}
|
|
671
|
+
this._length[0] -= 128;
|
|
672
|
+
this.update(msglen);
|
|
673
|
+
}
|
|
674
|
+
digest () {
|
|
675
|
+
this._padding();
|
|
676
|
+
const buffer = Buffer.alloc(64);
|
|
677
|
+
for (let i = 0; i < 16; ++i) buffer.writeUInt32BE(this._h[i], i * 4);
|
|
678
|
+
return buffer
|
|
679
|
+
}
|
|
680
|
+
};
|
|
681
|
+
getDefaultExportFromCjs(blake512);
|
|
682
|
+
const Blake512 = blake512;
|
|
683
|
+
const zo = Buffer.from([0x00]);
|
|
684
|
+
const oo = Buffer.from([0x80]);
|
|
685
|
+
var blake384 = class Blake384 extends Blake512 {
|
|
686
|
+
constructor () {
|
|
687
|
+
super();
|
|
688
|
+
this._h = [
|
|
689
|
+
0xcbbb9d5d, 0xc1059ed8, 0x629a292a, 0x367cd507,
|
|
690
|
+
0x9159015a, 0x3070dd17, 0x152fecd8, 0xf70e5939,
|
|
691
|
+
0x67332667, 0xffc00b31, 0x8eb44a87, 0x68581511,
|
|
692
|
+
0xdb0c2e0d, 0x64f98fa7, 0x47b5481d, 0xbefa4fa4
|
|
693
|
+
];
|
|
694
|
+
this._zo = zo;
|
|
695
|
+
this._oo = oo;
|
|
696
|
+
}
|
|
697
|
+
digest () {
|
|
698
|
+
this._padding();
|
|
699
|
+
const buffer = Buffer.alloc(48);
|
|
700
|
+
for (let i = 0; i < 12; ++i) buffer.writeUInt32BE(this._h[i], i * 4);
|
|
701
|
+
return buffer
|
|
702
|
+
}
|
|
703
|
+
};
|
|
704
|
+
getDefaultExportFromCjs(blake384);
|
|
705
|
+
var lib = {
|
|
706
|
+
Blake224: blake224,
|
|
707
|
+
Blake256: blake256,
|
|
708
|
+
Blake384: blake384,
|
|
709
|
+
Blake512: blake512
|
|
710
|
+
};
|
|
711
|
+
getDefaultExportFromCjs(lib);
|
|
712
|
+
function hash(message) {
|
|
713
|
+
var engine = new lib.Blake512();
|
|
714
|
+
engine.update(message);
|
|
715
|
+
return engine.digest();
|
|
716
|
+
}
|
|
717
|
+
/**
|
|
718
|
+
* Hashes the 32-byte private key using Blake1, prunes the lower 32 bytes
|
|
719
|
+
* of the buffer and converts it to a little-endian integer.
|
|
720
|
+
* This function is used to obtain the secret scalar to be used as
|
|
721
|
+
* the input of the private key in the circuits, since the circuit only
|
|
722
|
+
* performs a fixed-base scalar multiplication.
|
|
723
|
+
* For more info about these steps: {@link https://datatracker.ietf.org/doc/html/rfc8032#section-5.1.5}.
|
|
724
|
+
* @param privateKey - The private key used for generating the public key.
|
|
725
|
+
* @returns The secret scalar to be used to calculate public key.
|
|
726
|
+
*/
|
|
727
|
+
function deriveSecretScalar(privateKey) {
|
|
728
|
+
privateKey = checkPrivateKey(privateKey);
|
|
729
|
+
var hash$1 = hash(privateKey);
|
|
730
|
+
hash$1 = hash$1.slice(0, 32);
|
|
731
|
+
hash$1 = pruneBuffer(hash$1);
|
|
732
|
+
return shiftRight(leBuff2int(hash$1), BigInt(3)).toString();
|
|
733
|
+
}
|
|
734
|
+
/**
|
|
735
|
+
* Derives a public key from a given private key using the
|
|
736
|
+
* {@link https://eips.ethereum.org/EIPS/eip-2494|Baby Jubjub} elliptic curve.
|
|
737
|
+
* This function utilizes the Baby Jubjub elliptic curve for cryptographic operations.
|
|
738
|
+
* The private key should be securely stored and managed, and it should never be exposed
|
|
739
|
+
* or transmitted in an unsecured manner.
|
|
740
|
+
* @param privateKey - The private key used for generating the public key.
|
|
741
|
+
* @returns The derived public key.
|
|
742
|
+
*/
|
|
743
|
+
function derivePublicKey(privateKey) {
|
|
744
|
+
var s = deriveSecretScalar(privateKey);
|
|
745
|
+
var publicKey = mulPointEscalar(Base8, BigInt(s));
|
|
746
|
+
return [publicKey[0].toString(), publicKey[1].toString()];
|
|
747
|
+
}
|
|
748
|
+
/**
|
|
749
|
+
* Signs a message using the provided private key, employing Poseidon hashing and
|
|
750
|
+
* EdDSA with the Baby Jubjub elliptic curve.
|
|
751
|
+
* @param privateKey - The private key used to sign the message.
|
|
752
|
+
* @param message - The message to be signed.
|
|
753
|
+
* @returns The signature object, containing properties relevant to EdDSA signatures, such as 'R8' and 'S' values.
|
|
754
|
+
*/
|
|
755
|
+
function signMessage(privateKey, message) {
|
|
756
|
+
privateKey = checkPrivateKey(privateKey);
|
|
757
|
+
message = checkMessage(message);
|
|
758
|
+
var hash$1 = hash(privateKey);
|
|
759
|
+
var sBuff = pruneBuffer(hash$1.slice(0, 32));
|
|
760
|
+
var s = leBuff2int(sBuff);
|
|
761
|
+
var A = mulPointEscalar(Base8, shiftRight(s, BigInt(3)));
|
|
762
|
+
var msgBuff = leInt2Buff(message);
|
|
763
|
+
var rBuff = hash(Buffer.concat([hash$1.slice(32, 64), msgBuff]));
|
|
764
|
+
var Fr = new Field(subOrder);
|
|
765
|
+
var r = Fr.e(leBuff2int(rBuff));
|
|
766
|
+
var R8 = mulPointEscalar(Base8, r);
|
|
767
|
+
var hm = poseidon5_2([R8[0], R8[1], A[0], A[1], message]);
|
|
768
|
+
var S = Fr.add(r, Fr.mul(hm, s));
|
|
769
|
+
return {
|
|
770
|
+
R8: [R8[0].toString(), R8[1].toString()],
|
|
771
|
+
S: S.toString()
|
|
772
|
+
};
|
|
773
|
+
}
|
|
774
|
+
/**
|
|
775
|
+
* Verifies an EdDSA signature using the Baby Jubjub elliptic curve and Poseidon hash function.
|
|
776
|
+
* @param message - The original message that was be signed.
|
|
777
|
+
* @param signature - The EdDSA signature to be verified.
|
|
778
|
+
* @param publicKey - The public key associated with the private key used to sign the message.
|
|
779
|
+
* @returns Returns true if the signature is valid and corresponds to the message and public key, false otherwise.
|
|
780
|
+
*/
|
|
781
|
+
function verifySignature(message, signature, publicKey) {
|
|
782
|
+
if (!isPoint(publicKey) ||
|
|
783
|
+
!isSignature(signature) ||
|
|
784
|
+
!inCurve(signature.R8) ||
|
|
785
|
+
!inCurve(publicKey) ||
|
|
786
|
+
BigInt(signature.S) >= subOrder) {
|
|
787
|
+
return false;
|
|
788
|
+
}
|
|
789
|
+
message = checkMessage(message);
|
|
790
|
+
var _signature = {
|
|
791
|
+
R8: [BigInt(signature.R8[0]), BigInt(signature.R8[1])],
|
|
792
|
+
S: BigInt(signature.S)
|
|
793
|
+
};
|
|
794
|
+
var _publicKey = [BigInt(publicKey[0]), BigInt(publicKey[1])];
|
|
795
|
+
var hm = poseidon5_2([signature.R8[0], signature.R8[1], publicKey[0], publicKey[1], message]);
|
|
796
|
+
var pLeft = mulPointEscalar(Base8, BigInt(signature.S));
|
|
797
|
+
var pRight = mulPointEscalar(_publicKey, mul(hm, BigInt(8)));
|
|
798
|
+
pRight = addPoint(_signature.R8, pRight);
|
|
799
|
+
return Fr.eq(BigInt(pLeft[0]), pRight[0]) && Fr.eq(pLeft[1], pRight[1]);
|
|
800
|
+
}
|
|
801
|
+
|
|
802
|
+
var poseidon2$1 = {};
|
|
803
|
+
|
|
804
|
+
const F = BigInt('21888242871839275222246405745257275088548364400416034343698204186575808495617');
|
|
805
|
+
const N_ROUNDS_F = 8;
|
|
806
|
+
const N_ROUNDS_P = [56, 57, 56, 60, 60, 63, 64, 63, 60, 66, 60, 65, 70, 60, 64, 68];
|
|
807
|
+
const pow5 = v => {
|
|
808
|
+
let o = v * v;
|
|
809
|
+
return v * o * o % F;
|
|
810
|
+
};
|
|
811
|
+
function mix(state, M) {
|
|
812
|
+
const out = [];
|
|
813
|
+
for (let x = 0; x < state.length; x++) {
|
|
814
|
+
let o = 0n;
|
|
815
|
+
for (let y = 0; y < state.length; y++) {
|
|
816
|
+
o = o + M[x][y] * state[y];
|
|
817
|
+
}
|
|
818
|
+
out.push(o % F);
|
|
819
|
+
}
|
|
820
|
+
return out;
|
|
821
|
+
}
|
|
822
|
+
function poseidon(_inputs, opt) {
|
|
823
|
+
const inputs = _inputs.map(i => BigInt(i));
|
|
824
|
+
if (inputs.length <= 0) {
|
|
825
|
+
throw new Error('poseidon-lite: Not enough inputs');
|
|
826
|
+
}
|
|
827
|
+
if (inputs.length > N_ROUNDS_P.length) {
|
|
828
|
+
throw new Error('poseidon-lite: Too many inputs');
|
|
829
|
+
}
|
|
830
|
+
const t = inputs.length + 1;
|
|
831
|
+
const nRoundsF = N_ROUNDS_F;
|
|
832
|
+
const nRoundsP = N_ROUNDS_P[t - 2];
|
|
833
|
+
const {
|
|
834
|
+
C,
|
|
835
|
+
M
|
|
836
|
+
} = opt;
|
|
837
|
+
if (M.length !== t) {
|
|
838
|
+
throw new Error(`poseidon-lite: Incorrect M length, expected ${t} got ${M.length}`);
|
|
839
|
+
}
|
|
840
|
+
let state = [0n, ...inputs];
|
|
841
|
+
for (let x = 0; x < nRoundsF + nRoundsP; x++) {
|
|
842
|
+
for (let y = 0; y < state.length; y++) {
|
|
843
|
+
state[y] = state[y] + C[x * t + y];
|
|
844
|
+
if (x < nRoundsF / 2 || x >= nRoundsF / 2 + nRoundsP) state[y] = pow5(state[y]);else if (y === 0) state[y] = pow5(state[y]);
|
|
845
|
+
}
|
|
846
|
+
state = mix(state, M);
|
|
847
|
+
}
|
|
848
|
+
return state[0];
|
|
849
|
+
}
|
|
850
|
+
var poseidon_1 = poseidon;
|
|
851
|
+
|
|
852
|
+
var unstringify = {};
|
|
853
|
+
|
|
854
|
+
Object.defineProperty(unstringify, "__esModule", {
|
|
855
|
+
value: true
|
|
856
|
+
});
|
|
857
|
+
unstringify.default = unstringifyBigInts;
|
|
858
|
+
function unstringifyBigInts(o) {
|
|
859
|
+
if (Array.isArray(o)) {
|
|
860
|
+
return o.map(unstringifyBigInts);
|
|
861
|
+
} else if (typeof o == 'object') {
|
|
862
|
+
const res = {};
|
|
863
|
+
for (const [key, val] of Object.entries(o)) {
|
|
864
|
+
res[key] = unstringifyBigInts(val);
|
|
865
|
+
}
|
|
866
|
+
return res;
|
|
867
|
+
}
|
|
868
|
+
const byteArray = Uint8Array.from(atob(o), c => c.charCodeAt(0));
|
|
869
|
+
const hex = [...byteArray].map(x => x.toString(16).padStart(2, '0')).join('');
|
|
870
|
+
return BigInt(`0x${hex}`);
|
|
871
|
+
}
|
|
872
|
+
|
|
873
|
+
var _2 = {};
|
|
874
|
+
|
|
875
|
+
Object.defineProperty(_2, "__esModule", {
|
|
876
|
+
value: true
|
|
877
|
+
});
|
|
878
|
+
_2.default = void 0;
|
|
879
|
+
var _default = {
|
|
880
|
+
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='],
|
|
881
|
+
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=']]
|
|
882
|
+
};
|
|
883
|
+
_2.default = _default;
|
|
884
|
+
|
|
885
|
+
Object.defineProperty(poseidon2$1, "__esModule", {
|
|
886
|
+
value: true
|
|
887
|
+
});
|
|
888
|
+
var poseidon2_2 = poseidon2$1.poseidon2 = poseidon2;
|
|
889
|
+
var _poseidon = _interopRequireDefault(poseidon_1);
|
|
890
|
+
var _unstringify = _interopRequireDefault(unstringify);
|
|
891
|
+
var _ = _interopRequireDefault(_2);
|
|
892
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
893
|
+
const c = (0, _unstringify.default)(_.default);
|
|
894
|
+
function poseidon2(inputs) {
|
|
895
|
+
return (0, _poseidon.default)(inputs, c);
|
|
896
|
+
}
|
|
897
|
+
|
|
898
|
+
function bytesToBigint(bytes) {
|
|
899
|
+
var hex = "0x";
|
|
900
|
+
for (var i = 0; i < bytes.length; i += 1) {
|
|
901
|
+
hex += bytes[i].toString(16).padStart(2, "0");
|
|
902
|
+
}
|
|
903
|
+
return BigInt(hex);
|
|
904
|
+
}
|
|
905
|
+
|
|
906
|
+
/* istanbul ignore file */
|
|
907
|
+
function randomNumber() {
|
|
908
|
+
var bytes = crypto.getRandomValues(new Uint8Array(32));
|
|
909
|
+
return bytesToBigint(bytes);
|
|
910
|
+
}
|
|
911
|
+
|
|
912
|
+
var Identity = /** @class */ (function () {
|
|
913
|
+
/**
|
|
914
|
+
* Initializes the class attributes based on the parameters.
|
|
915
|
+
* @param privateKey The secret value used to generate an EdDSA public key.
|
|
916
|
+
*/
|
|
917
|
+
function Identity(privateKey) {
|
|
918
|
+
if (privateKey === void 0) { privateKey = randomNumber().toString(); }
|
|
919
|
+
this._privateKey = privateKey;
|
|
920
|
+
this._secretScalar = deriveSecretScalar(privateKey);
|
|
921
|
+
this._publicKey = derivePublicKey(privateKey);
|
|
922
|
+
this._commitment = poseidon2_2(this._publicKey).toString();
|
|
923
|
+
}
|
|
924
|
+
Object.defineProperty(Identity.prototype, "privateKey", {
|
|
925
|
+
/**
|
|
926
|
+
* Returns the private key.
|
|
927
|
+
* @returns The private key.
|
|
928
|
+
*/
|
|
929
|
+
get: function () {
|
|
930
|
+
return this._privateKey;
|
|
931
|
+
},
|
|
932
|
+
enumerable: false,
|
|
933
|
+
configurable: true
|
|
934
|
+
});
|
|
935
|
+
Object.defineProperty(Identity.prototype, "secretScalar", {
|
|
936
|
+
/**
|
|
937
|
+
* Returns the secret scalar.
|
|
938
|
+
* @returns The secret scalar.
|
|
939
|
+
*/
|
|
940
|
+
get: function () {
|
|
941
|
+
return this._secretScalar;
|
|
942
|
+
},
|
|
943
|
+
enumerable: false,
|
|
944
|
+
configurable: true
|
|
945
|
+
});
|
|
946
|
+
Object.defineProperty(Identity.prototype, "publicKey", {
|
|
947
|
+
/**
|
|
948
|
+
* Returns the public key.
|
|
949
|
+
* @returns The public key.
|
|
950
|
+
*/
|
|
951
|
+
get: function () {
|
|
952
|
+
return this._publicKey;
|
|
953
|
+
},
|
|
954
|
+
enumerable: false,
|
|
955
|
+
configurable: true
|
|
956
|
+
});
|
|
957
|
+
Object.defineProperty(Identity.prototype, "commitment", {
|
|
958
|
+
/**
|
|
959
|
+
* Returns the identity commitment.
|
|
960
|
+
* @returns The identity commitment.
|
|
961
|
+
*/
|
|
962
|
+
get: function () {
|
|
963
|
+
return this._commitment;
|
|
964
|
+
},
|
|
965
|
+
enumerable: false,
|
|
966
|
+
configurable: true
|
|
967
|
+
});
|
|
968
|
+
Identity.prototype.signMessage = function (message) {
|
|
969
|
+
return signMessage(this.privateKey, message);
|
|
970
|
+
};
|
|
971
|
+
Identity.prototype.verifySignature = function (message, signature) {
|
|
972
|
+
return verifySignature(message, signature, this._publicKey);
|
|
973
|
+
};
|
|
974
|
+
Identity.verifySignature = function (message, signature, publicKey) {
|
|
975
|
+
return verifySignature(message, signature, publicKey);
|
|
976
|
+
};
|
|
977
|
+
return Identity;
|
|
978
|
+
}());
|
|
979
|
+
|
|
980
|
+
export { Identity };
|
package/dist/index.node.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @module @semaphore-protocol/identity
|
|
3
|
-
* @version 4.0.0-alpha.
|
|
3
|
+
* @version 4.0.0-alpha.3
|
|
4
4
|
* @file A library to create Semaphore identities.
|
|
5
5
|
* @copyright Ethereum Foundation 2024
|
|
6
6
|
* @license MIT
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
12
12
|
|
|
13
13
|
var eddsaPoseidon = require('@zk-kit/eddsa-poseidon');
|
|
14
|
-
var
|
|
14
|
+
var node_crypto = require('node:crypto');
|
|
15
15
|
|
|
16
16
|
var poseidon2$1 = {};
|
|
17
17
|
|
|
@@ -109,13 +109,19 @@ function poseidon2(inputs) {
|
|
|
109
109
|
return (0, _poseidon.default)(inputs, c);
|
|
110
110
|
}
|
|
111
111
|
|
|
112
|
+
function randomNumber() {
|
|
113
|
+
var bytes = node_crypto.randomBytes(32);
|
|
114
|
+
var hex = "0x".concat(bytes.toString("hex"));
|
|
115
|
+
return BigInt(hex);
|
|
116
|
+
}
|
|
117
|
+
|
|
112
118
|
var Identity = /** @class */ (function () {
|
|
113
119
|
/**
|
|
114
120
|
* Initializes the class attributes based on the parameters.
|
|
115
121
|
* @param privateKey The secret value used to generate an EdDSA public key.
|
|
116
122
|
*/
|
|
117
123
|
function Identity(privateKey) {
|
|
118
|
-
if (privateKey === void 0) { privateKey =
|
|
124
|
+
if (privateKey === void 0) { privateKey = randomNumber().toString(); }
|
|
119
125
|
this._privateKey = privateKey;
|
|
120
126
|
this._secretScalar = eddsaPoseidon.deriveSecretScalar(privateKey);
|
|
121
127
|
this._publicKey = eddsaPoseidon.derivePublicKey(privateKey);
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @module @semaphore-protocol/identity
|
|
3
|
-
* @version 4.0.0-alpha.
|
|
3
|
+
* @version 4.0.0-alpha.3
|
|
4
4
|
* @file A library to create Semaphore identities.
|
|
5
5
|
* @copyright Ethereum Foundation 2024
|
|
6
6
|
* @license MIT
|
|
7
7
|
* @see [Github]{@link https://github.com/semaphore-protocol/semaphore/tree/main/packages/identity}
|
|
8
8
|
*/
|
|
9
9
|
import { signMessage, verifySignature, deriveSecretScalar, derivePublicKey } from '@zk-kit/eddsa-poseidon';
|
|
10
|
-
import { randomBytes } from 'crypto';
|
|
10
|
+
import { randomBytes } from 'node:crypto';
|
|
11
11
|
|
|
12
12
|
var poseidon2$1 = {};
|
|
13
13
|
|
|
@@ -105,13 +105,19 @@ function poseidon2(inputs) {
|
|
|
105
105
|
return (0, _poseidon.default)(inputs, c);
|
|
106
106
|
}
|
|
107
107
|
|
|
108
|
+
function randomNumber() {
|
|
109
|
+
var bytes = randomBytes(32);
|
|
110
|
+
var hex = "0x".concat(bytes.toString("hex"));
|
|
111
|
+
return BigInt(hex);
|
|
112
|
+
}
|
|
113
|
+
|
|
108
114
|
var Identity = /** @class */ (function () {
|
|
109
115
|
/**
|
|
110
116
|
* Initializes the class attributes based on the parameters.
|
|
111
117
|
* @param privateKey The secret value used to generate an EdDSA public key.
|
|
112
118
|
*/
|
|
113
119
|
function Identity(privateKey) {
|
|
114
|
-
if (privateKey === void 0) { privateKey =
|
|
120
|
+
if (privateKey === void 0) { privateKey = randomNumber().toString(); }
|
|
115
121
|
this._privateKey = privateKey;
|
|
116
122
|
this._secretScalar = deriveSecretScalar(privateKey);
|
|
117
123
|
this._publicKey = derivePublicKey(privateKey);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function bytesToBigint(bytes: Uint8Array): bigint;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function randomNumber(): bigint;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function randomNumber(): bigint;
|
package/package.json
CHANGED
|
@@ -1,13 +1,20 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@semaphore-protocol/identity",
|
|
3
|
-
"version": "4.0.0-alpha.
|
|
3
|
+
"version": "4.0.0-alpha.3",
|
|
4
4
|
"description": "A library to create Semaphore identities.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"main": "dist/index.node.js",
|
|
7
|
+
"browser": "dist/index.browser.mjs",
|
|
7
8
|
"exports": {
|
|
8
|
-
"
|
|
9
|
-
|
|
10
|
-
|
|
9
|
+
".": {
|
|
10
|
+
"node": {
|
|
11
|
+
"import": "./dist/index.node.mjs",
|
|
12
|
+
"require": "./dist/index.node.js"
|
|
13
|
+
},
|
|
14
|
+
"browser": "./dist/index.browser.mjs",
|
|
15
|
+
"default": "./dist/index.browser.mjs",
|
|
16
|
+
"types": "./dist/types/index.d.ts"
|
|
17
|
+
}
|
|
11
18
|
},
|
|
12
19
|
"types": "dist/types/index.d.ts",
|
|
13
20
|
"files": [
|
|
@@ -22,14 +29,16 @@
|
|
|
22
29
|
"url": "https://github.com/semaphore-protocol/semaphore.git/issues"
|
|
23
30
|
},
|
|
24
31
|
"scripts": {
|
|
25
|
-
"build
|
|
26
|
-
"build": "
|
|
32
|
+
"build": "rimraf dist && yarn build:browser && yarn build:node",
|
|
33
|
+
"build:browser": "rollup -c rollup.browser.config.ts --configPlugin typescript",
|
|
34
|
+
"build:node": "rollup -c rollup.node.config.ts --configPlugin typescript",
|
|
27
35
|
"prepublishOnly": "yarn build"
|
|
28
36
|
},
|
|
29
37
|
"publishConfig": {
|
|
30
38
|
"access": "public"
|
|
31
39
|
},
|
|
32
40
|
"devDependencies": {
|
|
41
|
+
"@rollup/plugin-alias": "^5.1.0",
|
|
33
42
|
"@rollup/plugin-commonjs": "^24.0.1",
|
|
34
43
|
"@rollup/plugin-node-resolve": "^15.0.1",
|
|
35
44
|
"rollup-plugin-cleanup": "^3.2.1",
|
package/src/identity.ts
CHANGED
|
@@ -7,8 +7,8 @@ import {
|
|
|
7
7
|
signMessage,
|
|
8
8
|
verifySignature
|
|
9
9
|
} from "@zk-kit/eddsa-poseidon"
|
|
10
|
-
import { randomBytes } from "crypto"
|
|
11
10
|
import { poseidon2 } from "poseidon-lite/poseidon2"
|
|
11
|
+
import { randomNumber } from "./random-number.node"
|
|
12
12
|
|
|
13
13
|
export default class Identity {
|
|
14
14
|
private _privateKey: BigNumberish
|
|
@@ -20,7 +20,7 @@ export default class Identity {
|
|
|
20
20
|
* Initializes the class attributes based on the parameters.
|
|
21
21
|
* @param privateKey The secret value used to generate an EdDSA public key.
|
|
22
22
|
*/
|
|
23
|
-
constructor(privateKey: BigNumberish =
|
|
23
|
+
constructor(privateKey: BigNumberish = randomNumber().toString()) {
|
|
24
24
|
this._privateKey = privateKey
|
|
25
25
|
this._secretScalar = deriveSecretScalar(privateKey)
|
|
26
26
|
|