@semaphore-protocol/identity 4.0.0-alpha → 4.0.0-alpha.2

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 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="Github license" src="https://img.shields.io/github/license/semaphore-protocol/semaphore.svg?style=flat-square">
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,94 @@
1
+ /**
2
+ * @module @semaphore-protocol/identity
3
+ * @version 4.0.0-alpha.2
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
+ import { signMessage, verifySignature, deriveSecretScalar, derivePublicKey } from '@zk-kit/eddsa-poseidon';
10
+ import { poseidon2 } from 'poseidon-lite/poseidon2';
11
+
12
+ function bytesToBigint(bytes) {
13
+ var hex = "0x";
14
+ for (var i = 0; i < bytes.length; i += 1) {
15
+ hex += bytes[i].toString(16).padStart(2, "0");
16
+ }
17
+ return BigInt(hex);
18
+ }
19
+
20
+ /* istanbul ignore file */
21
+ function randomNumber() {
22
+ var bytes = crypto.getRandomValues(new Uint8Array(32));
23
+ return bytesToBigint(bytes);
24
+ }
25
+
26
+ var Identity = /** @class */ (function () {
27
+ /**
28
+ * Initializes the class attributes based on the parameters.
29
+ * @param privateKey The secret value used to generate an EdDSA public key.
30
+ */
31
+ function Identity(privateKey) {
32
+ if (privateKey === void 0) { privateKey = randomNumber().toString(); }
33
+ this._privateKey = privateKey;
34
+ this._secretScalar = deriveSecretScalar(privateKey);
35
+ this._publicKey = derivePublicKey(privateKey);
36
+ this._commitment = poseidon2(this._publicKey).toString();
37
+ }
38
+ Object.defineProperty(Identity.prototype, "privateKey", {
39
+ /**
40
+ * Returns the private key.
41
+ * @returns The private key.
42
+ */
43
+ get: function () {
44
+ return this._privateKey;
45
+ },
46
+ enumerable: false,
47
+ configurable: true
48
+ });
49
+ Object.defineProperty(Identity.prototype, "secretScalar", {
50
+ /**
51
+ * Returns the secret scalar.
52
+ * @returns The secret scalar.
53
+ */
54
+ get: function () {
55
+ return this._secretScalar;
56
+ },
57
+ enumerable: false,
58
+ configurable: true
59
+ });
60
+ Object.defineProperty(Identity.prototype, "publicKey", {
61
+ /**
62
+ * Returns the public key.
63
+ * @returns The public key.
64
+ */
65
+ get: function () {
66
+ return this._publicKey;
67
+ },
68
+ enumerable: false,
69
+ configurable: true
70
+ });
71
+ Object.defineProperty(Identity.prototype, "commitment", {
72
+ /**
73
+ * Returns the identity commitment.
74
+ * @returns The identity commitment.
75
+ */
76
+ get: function () {
77
+ return this._commitment;
78
+ },
79
+ enumerable: false,
80
+ configurable: true
81
+ });
82
+ Identity.prototype.signMessage = function (message) {
83
+ return signMessage(this.privateKey, message);
84
+ };
85
+ Identity.prototype.verifySignature = function (message, signature) {
86
+ return verifySignature(message, signature, this._publicKey);
87
+ };
88
+ Identity.verifySignature = function (message, signature, publicKey) {
89
+ return verifySignature(message, signature, publicKey);
90
+ };
91
+ return Identity;
92
+ }());
93
+
94
+ export { Identity };
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * @module @semaphore-protocol/identity
3
- * @version 4.0.0-alpha
3
+ * @version 4.0.0-alpha.2
4
4
  * @file A library to create Semaphore identities.
5
5
  * @copyright Ethereum Foundation 2024
6
6
  * @license MIT
@@ -11,102 +11,13 @@
11
11
  Object.defineProperty(exports, '__esModule', { value: true });
12
12
 
13
13
  var eddsaPoseidon = require('@zk-kit/eddsa-poseidon');
14
- var crypto = require('crypto');
14
+ var poseidon2 = require('poseidon-lite/poseidon2');
15
+ var node_crypto = require('node:crypto');
15
16
 
16
- var poseidon2$1 = {};
17
-
18
- const F = BigInt('21888242871839275222246405745257275088548364400416034343698204186575808495617');
19
- const N_ROUNDS_F = 8;
20
- const N_ROUNDS_P = [56, 57, 56, 60, 60, 63, 64, 63, 60, 66, 60, 65, 70, 60, 64, 68];
21
- const pow5 = v => {
22
- let o = v * v;
23
- return v * o * o % F;
24
- };
25
- function mix(state, M) {
26
- const out = [];
27
- for (let x = 0; x < state.length; x++) {
28
- let o = 0n;
29
- for (let y = 0; y < state.length; y++) {
30
- o = o + M[x][y] * state[y];
31
- }
32
- out.push(o % F);
33
- }
34
- return out;
35
- }
36
- function poseidon(_inputs, opt) {
37
- const inputs = _inputs.map(i => BigInt(i));
38
- if (inputs.length <= 0) {
39
- throw new Error('poseidon-lite: Not enough inputs');
40
- }
41
- if (inputs.length > N_ROUNDS_P.length) {
42
- throw new Error('poseidon-lite: Too many inputs');
43
- }
44
- const t = inputs.length + 1;
45
- const nRoundsF = N_ROUNDS_F;
46
- const nRoundsP = N_ROUNDS_P[t - 2];
47
- const {
48
- C,
49
- M
50
- } = opt;
51
- if (M.length !== t) {
52
- throw new Error(`poseidon-lite: Incorrect M length, expected ${t} got ${M.length}`);
53
- }
54
- let state = [0n, ...inputs];
55
- for (let x = 0; x < nRoundsF + nRoundsP; x++) {
56
- for (let y = 0; y < state.length; y++) {
57
- state[y] = state[y] + C[x * t + y];
58
- if (x < nRoundsF / 2 || x >= nRoundsF / 2 + nRoundsP) state[y] = pow5(state[y]);else if (y === 0) state[y] = pow5(state[y]);
59
- }
60
- state = mix(state, M);
61
- }
62
- return state[0];
63
- }
64
- var poseidon_1 = poseidon;
65
-
66
- var unstringify = {};
67
-
68
- Object.defineProperty(unstringify, "__esModule", {
69
- value: true
70
- });
71
- unstringify.default = unstringifyBigInts;
72
- function unstringifyBigInts(o) {
73
- if (Array.isArray(o)) {
74
- return o.map(unstringifyBigInts);
75
- } else if (typeof o == 'object') {
76
- const res = {};
77
- for (const [key, val] of Object.entries(o)) {
78
- res[key] = unstringifyBigInts(val);
79
- }
80
- return res;
81
- }
82
- const byteArray = Uint8Array.from(atob(o), c => c.charCodeAt(0));
83
- const hex = [...byteArray].map(x => x.toString(16).padStart(2, '0')).join('');
84
- return BigInt(`0x${hex}`);
85
- }
86
-
87
- var _2 = {};
88
-
89
- Object.defineProperty(_2, "__esModule", {
90
- value: true
91
- });
92
- _2.default = void 0;
93
- var _default = {
94
- 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='],
95
- 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=']]
96
- };
97
- _2.default = _default;
98
-
99
- Object.defineProperty(poseidon2$1, "__esModule", {
100
- value: true
101
- });
102
- var poseidon2_2 = poseidon2$1.poseidon2 = poseidon2;
103
- var _poseidon = _interopRequireDefault(poseidon_1);
104
- var _unstringify = _interopRequireDefault(unstringify);
105
- var _ = _interopRequireDefault(_2);
106
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
107
- const c = (0, _unstringify.default)(_.default);
108
- function poseidon2(inputs) {
109
- return (0, _poseidon.default)(inputs, c);
17
+ function randomNumber() {
18
+ var bytes = node_crypto.randomBytes(32);
19
+ var hex = "0x".concat(bytes.toString("hex"));
20
+ return BigInt(hex);
110
21
  }
111
22
 
112
23
  var Identity = /** @class */ (function () {
@@ -115,11 +26,11 @@ var Identity = /** @class */ (function () {
115
26
  * @param privateKey The secret value used to generate an EdDSA public key.
116
27
  */
117
28
  function Identity(privateKey) {
118
- if (privateKey === void 0) { privateKey = BigInt("0x".concat(crypto.randomBytes(32).toString("hex"))).toString(); }
29
+ if (privateKey === void 0) { privateKey = randomNumber().toString(); }
119
30
  this._privateKey = privateKey;
120
31
  this._secretScalar = eddsaPoseidon.deriveSecretScalar(privateKey);
121
32
  this._publicKey = eddsaPoseidon.derivePublicKey(privateKey);
122
- this._commitment = poseidon2_2(this._publicKey).toString();
33
+ this._commitment = poseidon2.poseidon2(this._publicKey).toString();
123
34
  }
124
35
  Object.defineProperty(Identity.prototype, "privateKey", {
125
36
  /**
@@ -0,0 +1,87 @@
1
+ /**
2
+ * @module @semaphore-protocol/identity
3
+ * @version 4.0.0-alpha.2
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
+ import { signMessage, verifySignature, deriveSecretScalar, derivePublicKey } from '@zk-kit/eddsa-poseidon';
10
+ import { poseidon2 } from 'poseidon-lite/poseidon2';
11
+ import { randomBytes } from 'node:crypto';
12
+
13
+ function randomNumber() {
14
+ var bytes = randomBytes(32);
15
+ var hex = "0x".concat(bytes.toString("hex"));
16
+ return BigInt(hex);
17
+ }
18
+
19
+ var Identity = /** @class */ (function () {
20
+ /**
21
+ * Initializes the class attributes based on the parameters.
22
+ * @param privateKey The secret value used to generate an EdDSA public key.
23
+ */
24
+ function Identity(privateKey) {
25
+ if (privateKey === void 0) { privateKey = randomNumber().toString(); }
26
+ this._privateKey = privateKey;
27
+ this._secretScalar = deriveSecretScalar(privateKey);
28
+ this._publicKey = derivePublicKey(privateKey);
29
+ this._commitment = poseidon2(this._publicKey).toString();
30
+ }
31
+ Object.defineProperty(Identity.prototype, "privateKey", {
32
+ /**
33
+ * Returns the private key.
34
+ * @returns The private key.
35
+ */
36
+ get: function () {
37
+ return this._privateKey;
38
+ },
39
+ enumerable: false,
40
+ configurable: true
41
+ });
42
+ Object.defineProperty(Identity.prototype, "secretScalar", {
43
+ /**
44
+ * Returns the secret scalar.
45
+ * @returns The secret scalar.
46
+ */
47
+ get: function () {
48
+ return this._secretScalar;
49
+ },
50
+ enumerable: false,
51
+ configurable: true
52
+ });
53
+ Object.defineProperty(Identity.prototype, "publicKey", {
54
+ /**
55
+ * Returns the public key.
56
+ * @returns The public key.
57
+ */
58
+ get: function () {
59
+ return this._publicKey;
60
+ },
61
+ enumerable: false,
62
+ configurable: true
63
+ });
64
+ Object.defineProperty(Identity.prototype, "commitment", {
65
+ /**
66
+ * Returns the identity commitment.
67
+ * @returns The identity commitment.
68
+ */
69
+ get: function () {
70
+ return this._commitment;
71
+ },
72
+ enumerable: false,
73
+ configurable: true
74
+ });
75
+ Identity.prototype.signMessage = function (message) {
76
+ return signMessage(this.privateKey, message);
77
+ };
78
+ Identity.prototype.verifySignature = function (message, signature) {
79
+ return verifySignature(message, signature, this._publicKey);
80
+ };
81
+ Identity.verifySignature = function (message, signature, publicKey) {
82
+ return verifySignature(message, signature, publicKey);
83
+ };
84
+ return Identity;
85
+ }());
86
+
87
+ export { Identity };
@@ -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.2",
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
- "import": "./dist/index.mjs",
9
- "require": "./dist/index.node.js",
10
- "types": "./dist/types/index.d.ts"
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:watch": "rollup -c rollup.config.ts -w --configPlugin typescript",
26
- "build": "rimraf dist && rollup -c rollup.config.ts --configPlugin typescript",
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",
@@ -0,0 +1,9 @@
1
+ export function bytesToBigint(bytes: Uint8Array): bigint {
2
+ let hex = "0x"
3
+
4
+ for (let i = 0; i < bytes.length; i += 1) {
5
+ hex += bytes[i].toString(16).padStart(2, "0")
6
+ }
7
+
8
+ return BigInt(hex)
9
+ }
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 = BigInt(`0x${randomBytes(32).toString("hex")}`).toString()) {
23
+ constructor(privateKey: BigNumberish = randomNumber().toString()) {
24
24
  this._privateKey = privateKey
25
25
  this._secretScalar = deriveSecretScalar(privateKey)
26
26
 
@@ -0,0 +1,8 @@
1
+ /* istanbul ignore file */
2
+ import { bytesToBigint } from "./bytes-to-bigint"
3
+
4
+ export function randomNumber(): bigint {
5
+ const bytes = crypto.getRandomValues(new Uint8Array(32))
6
+
7
+ return bytesToBigint(bytes)
8
+ }
@@ -0,0 +1,9 @@
1
+ import { randomBytes } from "node:crypto"
2
+
3
+ export function randomNumber(): bigint {
4
+ const bytes = randomBytes(32)
5
+
6
+ const hex = `0x${bytes.toString("hex")}`
7
+
8
+ return BigInt(hex)
9
+ }
package/dist/index.mjs DELETED
@@ -1,176 +0,0 @@
1
- /**
2
- * @module @semaphore-protocol/identity
3
- * @version 4.0.0-alpha
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
- import { signMessage, verifySignature, deriveSecretScalar, derivePublicKey } from '@zk-kit/eddsa-poseidon';
10
- import { randomBytes } from 'crypto';
11
-
12
- var poseidon2$1 = {};
13
-
14
- const F = BigInt('21888242871839275222246405745257275088548364400416034343698204186575808495617');
15
- const N_ROUNDS_F = 8;
16
- const N_ROUNDS_P = [56, 57, 56, 60, 60, 63, 64, 63, 60, 66, 60, 65, 70, 60, 64, 68];
17
- const pow5 = v => {
18
- let o = v * v;
19
- return v * o * o % F;
20
- };
21
- function mix(state, M) {
22
- const out = [];
23
- for (let x = 0; x < state.length; x++) {
24
- let o = 0n;
25
- for (let y = 0; y < state.length; y++) {
26
- o = o + M[x][y] * state[y];
27
- }
28
- out.push(o % F);
29
- }
30
- return out;
31
- }
32
- function poseidon(_inputs, opt) {
33
- const inputs = _inputs.map(i => BigInt(i));
34
- if (inputs.length <= 0) {
35
- throw new Error('poseidon-lite: Not enough inputs');
36
- }
37
- if (inputs.length > N_ROUNDS_P.length) {
38
- throw new Error('poseidon-lite: Too many inputs');
39
- }
40
- const t = inputs.length + 1;
41
- const nRoundsF = N_ROUNDS_F;
42
- const nRoundsP = N_ROUNDS_P[t - 2];
43
- const {
44
- C,
45
- M
46
- } = opt;
47
- if (M.length !== t) {
48
- throw new Error(`poseidon-lite: Incorrect M length, expected ${t} got ${M.length}`);
49
- }
50
- let state = [0n, ...inputs];
51
- for (let x = 0; x < nRoundsF + nRoundsP; x++) {
52
- for (let y = 0; y < state.length; y++) {
53
- state[y] = state[y] + C[x * t + y];
54
- if (x < nRoundsF / 2 || x >= nRoundsF / 2 + nRoundsP) state[y] = pow5(state[y]);else if (y === 0) state[y] = pow5(state[y]);
55
- }
56
- state = mix(state, M);
57
- }
58
- return state[0];
59
- }
60
- var poseidon_1 = poseidon;
61
-
62
- var unstringify = {};
63
-
64
- Object.defineProperty(unstringify, "__esModule", {
65
- value: true
66
- });
67
- unstringify.default = unstringifyBigInts;
68
- function unstringifyBigInts(o) {
69
- if (Array.isArray(o)) {
70
- return o.map(unstringifyBigInts);
71
- } else if (typeof o == 'object') {
72
- const res = {};
73
- for (const [key, val] of Object.entries(o)) {
74
- res[key] = unstringifyBigInts(val);
75
- }
76
- return res;
77
- }
78
- const byteArray = Uint8Array.from(atob(o), c => c.charCodeAt(0));
79
- const hex = [...byteArray].map(x => x.toString(16).padStart(2, '0')).join('');
80
- return BigInt(`0x${hex}`);
81
- }
82
-
83
- var _2 = {};
84
-
85
- Object.defineProperty(_2, "__esModule", {
86
- value: true
87
- });
88
- _2.default = void 0;
89
- var _default = {
90
- 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='],
91
- 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=']]
92
- };
93
- _2.default = _default;
94
-
95
- Object.defineProperty(poseidon2$1, "__esModule", {
96
- value: true
97
- });
98
- var poseidon2_2 = poseidon2$1.poseidon2 = poseidon2;
99
- var _poseidon = _interopRequireDefault(poseidon_1);
100
- var _unstringify = _interopRequireDefault(unstringify);
101
- var _ = _interopRequireDefault(_2);
102
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
103
- const c = (0, _unstringify.default)(_.default);
104
- function poseidon2(inputs) {
105
- return (0, _poseidon.default)(inputs, c);
106
- }
107
-
108
- var Identity = /** @class */ (function () {
109
- /**
110
- * Initializes the class attributes based on the parameters.
111
- * @param privateKey The secret value used to generate an EdDSA public key.
112
- */
113
- function Identity(privateKey) {
114
- if (privateKey === void 0) { privateKey = BigInt("0x".concat(randomBytes(32).toString("hex"))).toString(); }
115
- this._privateKey = privateKey;
116
- this._secretScalar = deriveSecretScalar(privateKey);
117
- this._publicKey = derivePublicKey(privateKey);
118
- this._commitment = poseidon2_2(this._publicKey).toString();
119
- }
120
- Object.defineProperty(Identity.prototype, "privateKey", {
121
- /**
122
- * Returns the private key.
123
- * @returns The private key.
124
- */
125
- get: function () {
126
- return this._privateKey;
127
- },
128
- enumerable: false,
129
- configurable: true
130
- });
131
- Object.defineProperty(Identity.prototype, "secretScalar", {
132
- /**
133
- * Returns the secret scalar.
134
- * @returns The secret scalar.
135
- */
136
- get: function () {
137
- return this._secretScalar;
138
- },
139
- enumerable: false,
140
- configurable: true
141
- });
142
- Object.defineProperty(Identity.prototype, "publicKey", {
143
- /**
144
- * Returns the public key.
145
- * @returns The public key.
146
- */
147
- get: function () {
148
- return this._publicKey;
149
- },
150
- enumerable: false,
151
- configurable: true
152
- });
153
- Object.defineProperty(Identity.prototype, "commitment", {
154
- /**
155
- * Returns the identity commitment.
156
- * @returns The identity commitment.
157
- */
158
- get: function () {
159
- return this._commitment;
160
- },
161
- enumerable: false,
162
- configurable: true
163
- });
164
- Identity.prototype.signMessage = function (message) {
165
- return signMessage(this.privateKey, message);
166
- };
167
- Identity.prototype.verifySignature = function (message, signature) {
168
- return verifySignature(message, signature, this._publicKey);
169
- };
170
- Identity.verifySignature = function (message, signature, publicKey) {
171
- return verifySignature(message, signature, publicKey);
172
- };
173
- return Identity;
174
- }());
175
-
176
- export { Identity };