mirror of
https://github.com/plume-sig/zk-nullifier-sig.git
synced 2026-01-10 13:28:07 -05:00
Test hash_to_curve output.
This commit is contained in:
305
circuits/package-lock.json
generated
305
circuits/package-lock.json
generated
@@ -12,6 +12,7 @@
|
||||
"circom_tester": "^0.0.19",
|
||||
"circom-ecdsa": "github:0xPARC/circom-ecdsa",
|
||||
"circomlib": "^2.0.5",
|
||||
"ffjavascript": "^0.2.57",
|
||||
"secp256k1_hash_to_curve_circom": "https://gitpkg.now.sh/geometryresearch/secp256k1_hash_to_curve/circuits?main"
|
||||
},
|
||||
"devDependencies": {
|
||||
@@ -2413,6 +2414,34 @@
|
||||
"calcwit": "calcwit.js"
|
||||
}
|
||||
},
|
||||
"node_modules/circom_runtime/node_modules/ffjavascript": {
|
||||
"version": "0.2.55",
|
||||
"resolved": "https://registry.npmjs.org/ffjavascript/-/ffjavascript-0.2.55.tgz",
|
||||
"integrity": "sha512-8X0FCIPOWiK6DTWh3pnE3O6D6nIQsirStAXpWMzRDnoDX7SEnDX4I28aVhwjL7L35XS1vy2AU7zc0UCGYxdLjw==",
|
||||
"dependencies": {
|
||||
"big-integer": "^1.6.48",
|
||||
"wasmbuilder": "^0.0.12",
|
||||
"wasmcurves": "0.1.0",
|
||||
"web-worker": "^1.2.0"
|
||||
}
|
||||
},
|
||||
"node_modules/circom_runtime/node_modules/wasmbuilder": {
|
||||
"version": "0.0.12",
|
||||
"resolved": "https://registry.npmjs.org/wasmbuilder/-/wasmbuilder-0.0.12.tgz",
|
||||
"integrity": "sha512-dTMpBgrnLOXrN58i2zakn2ScynsBhq9LfyQIsPz4CyxRF9k1GAORniuqn3xmE9NnI1l7g3iiVCkoB2Cl0/oG8w==",
|
||||
"dependencies": {
|
||||
"big-integer": "^1.6.48"
|
||||
}
|
||||
},
|
||||
"node_modules/circom_runtime/node_modules/wasmcurves": {
|
||||
"version": "0.1.0",
|
||||
"resolved": "https://registry.npmjs.org/wasmcurves/-/wasmcurves-0.1.0.tgz",
|
||||
"integrity": "sha512-kIlcgbVUAv2uQ6lGsepGz/m5V40+Z6rvTBkqCYn3Y2+OcXst+UaP4filJYLh/xDxjJl62FFjZZeAnpeli1Y5/Q==",
|
||||
"dependencies": {
|
||||
"big-integer": "^1.6.42",
|
||||
"blakejs": "^1.1.0"
|
||||
}
|
||||
},
|
||||
"node_modules/circom_tester": {
|
||||
"version": "0.0.19",
|
||||
"resolved": "https://registry.npmjs.org/circom_tester/-/circom_tester-0.0.19.tgz",
|
||||
@@ -2449,16 +2478,6 @@
|
||||
"web-worker": "^1.2.0"
|
||||
}
|
||||
},
|
||||
"node_modules/circom_tester/node_modules/ffjavascript": {
|
||||
"version": "0.2.57",
|
||||
"resolved": "https://registry.npmjs.org/ffjavascript/-/ffjavascript-0.2.57.tgz",
|
||||
"integrity": "sha512-V+vxZ/zPNcthrWmqfe/1YGgqdkTamJeXiED0tsk7B84g40DKlrTdx47IqZuiygqAVG6zMw4qYuvXftIJWsmfKQ==",
|
||||
"dependencies": {
|
||||
"wasmbuilder": "0.0.16",
|
||||
"wasmcurves": "0.2.0",
|
||||
"web-worker": "^1.2.0"
|
||||
}
|
||||
},
|
||||
"node_modules/circom_tester/node_modules/r1csfile": {
|
||||
"version": "0.0.41",
|
||||
"resolved": "https://registry.npmjs.org/r1csfile/-/r1csfile-0.0.41.tgz",
|
||||
@@ -2510,19 +2529,6 @@
|
||||
"web-worker": "^1.2.0"
|
||||
}
|
||||
},
|
||||
"node_modules/circom_tester/node_modules/wasmbuilder": {
|
||||
"version": "0.0.16",
|
||||
"resolved": "https://registry.npmjs.org/wasmbuilder/-/wasmbuilder-0.0.16.tgz",
|
||||
"integrity": "sha512-Qx3lEFqaVvp1cEYW7Bfi+ebRJrOiwz2Ieu7ZG2l7YyeSJIok/reEQCQCuicj/Y32ITIJuGIM9xZQppGx5LrQdA=="
|
||||
},
|
||||
"node_modules/circom_tester/node_modules/wasmcurves": {
|
||||
"version": "0.2.0",
|
||||
"resolved": "https://registry.npmjs.org/wasmcurves/-/wasmcurves-0.2.0.tgz",
|
||||
"integrity": "sha512-3e2rbxdujOwaod657gxgmdhZNn+i1qKdHO3Y/bK+8E7bV8ttV/fu5FO4/WLBACF375cK0QDLOP+65Na63qYuWA==",
|
||||
"dependencies": {
|
||||
"wasmbuilder": "0.0.16"
|
||||
}
|
||||
},
|
||||
"node_modules/circom-ecdsa": {
|
||||
"version": "0.0.1",
|
||||
"resolved": "git+ssh://git@github.com/0xPARC/circom-ecdsa.git#d87eb7068cb35c951187093abe966275c1839ead",
|
||||
@@ -3211,13 +3217,12 @@
|
||||
}
|
||||
},
|
||||
"node_modules/ffjavascript": {
|
||||
"version": "0.2.55",
|
||||
"resolved": "https://registry.npmjs.org/ffjavascript/-/ffjavascript-0.2.55.tgz",
|
||||
"integrity": "sha512-8X0FCIPOWiK6DTWh3pnE3O6D6nIQsirStAXpWMzRDnoDX7SEnDX4I28aVhwjL7L35XS1vy2AU7zc0UCGYxdLjw==",
|
||||
"version": "0.2.57",
|
||||
"resolved": "https://registry.npmjs.org/ffjavascript/-/ffjavascript-0.2.57.tgz",
|
||||
"integrity": "sha512-V+vxZ/zPNcthrWmqfe/1YGgqdkTamJeXiED0tsk7B84g40DKlrTdx47IqZuiygqAVG6zMw4qYuvXftIJWsmfKQ==",
|
||||
"dependencies": {
|
||||
"big-integer": "^1.6.48",
|
||||
"wasmbuilder": "^0.0.12",
|
||||
"wasmcurves": "0.1.0",
|
||||
"wasmbuilder": "0.0.16",
|
||||
"wasmcurves": "0.2.0",
|
||||
"web-worker": "^1.2.0"
|
||||
}
|
||||
},
|
||||
@@ -5280,6 +5285,34 @@
|
||||
"ffjavascript": "0.2.55"
|
||||
}
|
||||
},
|
||||
"node_modules/r1csfile/node_modules/ffjavascript": {
|
||||
"version": "0.2.55",
|
||||
"resolved": "https://registry.npmjs.org/ffjavascript/-/ffjavascript-0.2.55.tgz",
|
||||
"integrity": "sha512-8X0FCIPOWiK6DTWh3pnE3O6D6nIQsirStAXpWMzRDnoDX7SEnDX4I28aVhwjL7L35XS1vy2AU7zc0UCGYxdLjw==",
|
||||
"dependencies": {
|
||||
"big-integer": "^1.6.48",
|
||||
"wasmbuilder": "^0.0.12",
|
||||
"wasmcurves": "0.1.0",
|
||||
"web-worker": "^1.2.0"
|
||||
}
|
||||
},
|
||||
"node_modules/r1csfile/node_modules/wasmbuilder": {
|
||||
"version": "0.0.12",
|
||||
"resolved": "https://registry.npmjs.org/wasmbuilder/-/wasmbuilder-0.0.12.tgz",
|
||||
"integrity": "sha512-dTMpBgrnLOXrN58i2zakn2ScynsBhq9LfyQIsPz4CyxRF9k1GAORniuqn3xmE9NnI1l7g3iiVCkoB2Cl0/oG8w==",
|
||||
"dependencies": {
|
||||
"big-integer": "^1.6.48"
|
||||
}
|
||||
},
|
||||
"node_modules/r1csfile/node_modules/wasmcurves": {
|
||||
"version": "0.1.0",
|
||||
"resolved": "https://registry.npmjs.org/wasmcurves/-/wasmcurves-0.1.0.tgz",
|
||||
"integrity": "sha512-kIlcgbVUAv2uQ6lGsepGz/m5V40+Z6rvTBkqCYn3Y2+OcXst+UaP4filJYLh/xDxjJl62FFjZZeAnpeli1Y5/Q==",
|
||||
"dependencies": {
|
||||
"big-integer": "^1.6.42",
|
||||
"blakejs": "^1.1.0"
|
||||
}
|
||||
},
|
||||
"node_modules/raw-body": {
|
||||
"version": "2.5.1",
|
||||
"resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz",
|
||||
@@ -5543,19 +5576,6 @@
|
||||
"snarkjs": "build/cli.cjs"
|
||||
}
|
||||
},
|
||||
"node_modules/secp256k1_hash_to_curve_circom/node_modules/wasmbuilder": {
|
||||
"version": "0.0.16",
|
||||
"resolved": "https://registry.npmjs.org/wasmbuilder/-/wasmbuilder-0.0.16.tgz",
|
||||
"integrity": "sha512-Qx3lEFqaVvp1cEYW7Bfi+ebRJrOiwz2Ieu7ZG2l7YyeSJIok/reEQCQCuicj/Y32ITIJuGIM9xZQppGx5LrQdA=="
|
||||
},
|
||||
"node_modules/secp256k1_hash_to_curve_circom/node_modules/wasmcurves": {
|
||||
"version": "0.2.0",
|
||||
"resolved": "https://registry.npmjs.org/wasmcurves/-/wasmcurves-0.2.0.tgz",
|
||||
"integrity": "sha512-3e2rbxdujOwaod657gxgmdhZNn+i1qKdHO3Y/bK+8E7bV8ttV/fu5FO4/WLBACF375cK0QDLOP+65Na63qYuWA==",
|
||||
"dependencies": {
|
||||
"wasmbuilder": "0.0.16"
|
||||
}
|
||||
},
|
||||
"node_modules/semver": {
|
||||
"version": "7.3.8",
|
||||
"resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz",
|
||||
@@ -5709,6 +5729,34 @@
|
||||
"snarkjs": "build/cli.cjs"
|
||||
}
|
||||
},
|
||||
"node_modules/snarkjs/node_modules/ffjavascript": {
|
||||
"version": "0.2.55",
|
||||
"resolved": "https://registry.npmjs.org/ffjavascript/-/ffjavascript-0.2.55.tgz",
|
||||
"integrity": "sha512-8X0FCIPOWiK6DTWh3pnE3O6D6nIQsirStAXpWMzRDnoDX7SEnDX4I28aVhwjL7L35XS1vy2AU7zc0UCGYxdLjw==",
|
||||
"dependencies": {
|
||||
"big-integer": "^1.6.48",
|
||||
"wasmbuilder": "^0.0.12",
|
||||
"wasmcurves": "0.1.0",
|
||||
"web-worker": "^1.2.0"
|
||||
}
|
||||
},
|
||||
"node_modules/snarkjs/node_modules/wasmbuilder": {
|
||||
"version": "0.0.12",
|
||||
"resolved": "https://registry.npmjs.org/wasmbuilder/-/wasmbuilder-0.0.12.tgz",
|
||||
"integrity": "sha512-dTMpBgrnLOXrN58i2zakn2ScynsBhq9LfyQIsPz4CyxRF9k1GAORniuqn3xmE9NnI1l7g3iiVCkoB2Cl0/oG8w==",
|
||||
"dependencies": {
|
||||
"big-integer": "^1.6.48"
|
||||
}
|
||||
},
|
||||
"node_modules/snarkjs/node_modules/wasmcurves": {
|
||||
"version": "0.1.0",
|
||||
"resolved": "https://registry.npmjs.org/wasmcurves/-/wasmcurves-0.1.0.tgz",
|
||||
"integrity": "sha512-kIlcgbVUAv2uQ6lGsepGz/m5V40+Z6rvTBkqCYn3Y2+OcXst+UaP4filJYLh/xDxjJl62FFjZZeAnpeli1Y5/Q==",
|
||||
"dependencies": {
|
||||
"big-integer": "^1.6.42",
|
||||
"blakejs": "^1.1.0"
|
||||
}
|
||||
},
|
||||
"node_modules/source-map": {
|
||||
"version": "0.6.1",
|
||||
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
|
||||
@@ -6165,20 +6213,16 @@
|
||||
}
|
||||
},
|
||||
"node_modules/wasmbuilder": {
|
||||
"version": "0.0.12",
|
||||
"resolved": "https://registry.npmjs.org/wasmbuilder/-/wasmbuilder-0.0.12.tgz",
|
||||
"integrity": "sha512-dTMpBgrnLOXrN58i2zakn2ScynsBhq9LfyQIsPz4CyxRF9k1GAORniuqn3xmE9NnI1l7g3iiVCkoB2Cl0/oG8w==",
|
||||
"dependencies": {
|
||||
"big-integer": "^1.6.48"
|
||||
}
|
||||
"version": "0.0.16",
|
||||
"resolved": "https://registry.npmjs.org/wasmbuilder/-/wasmbuilder-0.0.16.tgz",
|
||||
"integrity": "sha512-Qx3lEFqaVvp1cEYW7Bfi+ebRJrOiwz2Ieu7ZG2l7YyeSJIok/reEQCQCuicj/Y32ITIJuGIM9xZQppGx5LrQdA=="
|
||||
},
|
||||
"node_modules/wasmcurves": {
|
||||
"version": "0.1.0",
|
||||
"resolved": "https://registry.npmjs.org/wasmcurves/-/wasmcurves-0.1.0.tgz",
|
||||
"integrity": "sha512-kIlcgbVUAv2uQ6lGsepGz/m5V40+Z6rvTBkqCYn3Y2+OcXst+UaP4filJYLh/xDxjJl62FFjZZeAnpeli1Y5/Q==",
|
||||
"version": "0.2.0",
|
||||
"resolved": "https://registry.npmjs.org/wasmcurves/-/wasmcurves-0.2.0.tgz",
|
||||
"integrity": "sha512-3e2rbxdujOwaod657gxgmdhZNn+i1qKdHO3Y/bK+8E7bV8ttV/fu5FO4/WLBACF375cK0QDLOP+65Na63qYuWA==",
|
||||
"dependencies": {
|
||||
"big-integer": "^1.6.42",
|
||||
"blakejs": "^1.1.0"
|
||||
"wasmbuilder": "0.0.16"
|
||||
}
|
||||
},
|
||||
"node_modules/web-worker": {
|
||||
@@ -8062,6 +8106,36 @@
|
||||
"integrity": "sha512-61AnccA8Ozo5apyDf3hR1JMDDNx1DttKll2bdxVpNjUaTiawDuuYE0VNmRvuoKlcy/WAY+HtD3K994WGrOFhJQ==",
|
||||
"requires": {
|
||||
"ffjavascript": "0.2.55"
|
||||
},
|
||||
"dependencies": {
|
||||
"ffjavascript": {
|
||||
"version": "0.2.55",
|
||||
"resolved": "https://registry.npmjs.org/ffjavascript/-/ffjavascript-0.2.55.tgz",
|
||||
"integrity": "sha512-8X0FCIPOWiK6DTWh3pnE3O6D6nIQsirStAXpWMzRDnoDX7SEnDX4I28aVhwjL7L35XS1vy2AU7zc0UCGYxdLjw==",
|
||||
"requires": {
|
||||
"big-integer": "^1.6.48",
|
||||
"wasmbuilder": "^0.0.12",
|
||||
"wasmcurves": "0.1.0",
|
||||
"web-worker": "^1.2.0"
|
||||
}
|
||||
},
|
||||
"wasmbuilder": {
|
||||
"version": "0.0.12",
|
||||
"resolved": "https://registry.npmjs.org/wasmbuilder/-/wasmbuilder-0.0.12.tgz",
|
||||
"integrity": "sha512-dTMpBgrnLOXrN58i2zakn2ScynsBhq9LfyQIsPz4CyxRF9k1GAORniuqn3xmE9NnI1l7g3iiVCkoB2Cl0/oG8w==",
|
||||
"requires": {
|
||||
"big-integer": "^1.6.48"
|
||||
}
|
||||
},
|
||||
"wasmcurves": {
|
||||
"version": "0.1.0",
|
||||
"resolved": "https://registry.npmjs.org/wasmcurves/-/wasmcurves-0.1.0.tgz",
|
||||
"integrity": "sha512-kIlcgbVUAv2uQ6lGsepGz/m5V40+Z6rvTBkqCYn3Y2+OcXst+UaP4filJYLh/xDxjJl62FFjZZeAnpeli1Y5/Q==",
|
||||
"requires": {
|
||||
"big-integer": "^1.6.42",
|
||||
"blakejs": "^1.1.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"circom_tester": {
|
||||
@@ -8099,16 +8173,6 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"ffjavascript": {
|
||||
"version": "0.2.57",
|
||||
"resolved": "https://registry.npmjs.org/ffjavascript/-/ffjavascript-0.2.57.tgz",
|
||||
"integrity": "sha512-V+vxZ/zPNcthrWmqfe/1YGgqdkTamJeXiED0tsk7B84g40DKlrTdx47IqZuiygqAVG6zMw4qYuvXftIJWsmfKQ==",
|
||||
"requires": {
|
||||
"wasmbuilder": "0.0.16",
|
||||
"wasmcurves": "0.2.0",
|
||||
"web-worker": "^1.2.0"
|
||||
}
|
||||
},
|
||||
"r1csfile": {
|
||||
"version": "0.0.41",
|
||||
"resolved": "https://registry.npmjs.org/r1csfile/-/r1csfile-0.0.41.tgz",
|
||||
@@ -8160,19 +8224,6 @@
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"wasmbuilder": {
|
||||
"version": "0.0.16",
|
||||
"resolved": "https://registry.npmjs.org/wasmbuilder/-/wasmbuilder-0.0.16.tgz",
|
||||
"integrity": "sha512-Qx3lEFqaVvp1cEYW7Bfi+ebRJrOiwz2Ieu7ZG2l7YyeSJIok/reEQCQCuicj/Y32ITIJuGIM9xZQppGx5LrQdA=="
|
||||
},
|
||||
"wasmcurves": {
|
||||
"version": "0.2.0",
|
||||
"resolved": "https://registry.npmjs.org/wasmcurves/-/wasmcurves-0.2.0.tgz",
|
||||
"integrity": "sha512-3e2rbxdujOwaod657gxgmdhZNn+i1qKdHO3Y/bK+8E7bV8ttV/fu5FO4/WLBACF375cK0QDLOP+65Na63qYuWA==",
|
||||
"requires": {
|
||||
"wasmbuilder": "0.0.16"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -8735,13 +8786,12 @@
|
||||
"integrity": "sha512-ZtijOTFN7TzCujt1fnNhfWPFPSHeZkesff9AXZj+UEjYBynWNUIYpC87Ve4wHzyexQsImicLu7WsC2LHq7/xrQ=="
|
||||
},
|
||||
"ffjavascript": {
|
||||
"version": "0.2.55",
|
||||
"resolved": "https://registry.npmjs.org/ffjavascript/-/ffjavascript-0.2.55.tgz",
|
||||
"integrity": "sha512-8X0FCIPOWiK6DTWh3pnE3O6D6nIQsirStAXpWMzRDnoDX7SEnDX4I28aVhwjL7L35XS1vy2AU7zc0UCGYxdLjw==",
|
||||
"version": "0.2.57",
|
||||
"resolved": "https://registry.npmjs.org/ffjavascript/-/ffjavascript-0.2.57.tgz",
|
||||
"integrity": "sha512-V+vxZ/zPNcthrWmqfe/1YGgqdkTamJeXiED0tsk7B84g40DKlrTdx47IqZuiygqAVG6zMw4qYuvXftIJWsmfKQ==",
|
||||
"requires": {
|
||||
"big-integer": "^1.6.48",
|
||||
"wasmbuilder": "^0.0.12",
|
||||
"wasmcurves": "0.1.0",
|
||||
"wasmbuilder": "0.0.16",
|
||||
"wasmcurves": "0.2.0",
|
||||
"web-worker": "^1.2.0"
|
||||
}
|
||||
},
|
||||
@@ -10282,6 +10332,36 @@
|
||||
"@iden3/binfileutils": "0.0.11",
|
||||
"fastfile": "0.0.20",
|
||||
"ffjavascript": "0.2.55"
|
||||
},
|
||||
"dependencies": {
|
||||
"ffjavascript": {
|
||||
"version": "0.2.55",
|
||||
"resolved": "https://registry.npmjs.org/ffjavascript/-/ffjavascript-0.2.55.tgz",
|
||||
"integrity": "sha512-8X0FCIPOWiK6DTWh3pnE3O6D6nIQsirStAXpWMzRDnoDX7SEnDX4I28aVhwjL7L35XS1vy2AU7zc0UCGYxdLjw==",
|
||||
"requires": {
|
||||
"big-integer": "^1.6.48",
|
||||
"wasmbuilder": "^0.0.12",
|
||||
"wasmcurves": "0.1.0",
|
||||
"web-worker": "^1.2.0"
|
||||
}
|
||||
},
|
||||
"wasmbuilder": {
|
||||
"version": "0.0.12",
|
||||
"resolved": "https://registry.npmjs.org/wasmbuilder/-/wasmbuilder-0.0.12.tgz",
|
||||
"integrity": "sha512-dTMpBgrnLOXrN58i2zakn2ScynsBhq9LfyQIsPz4CyxRF9k1GAORniuqn3xmE9NnI1l7g3iiVCkoB2Cl0/oG8w==",
|
||||
"requires": {
|
||||
"big-integer": "^1.6.48"
|
||||
}
|
||||
},
|
||||
"wasmcurves": {
|
||||
"version": "0.1.0",
|
||||
"resolved": "https://registry.npmjs.org/wasmcurves/-/wasmcurves-0.1.0.tgz",
|
||||
"integrity": "sha512-kIlcgbVUAv2uQ6lGsepGz/m5V40+Z6rvTBkqCYn3Y2+OcXst+UaP4filJYLh/xDxjJl62FFjZZeAnpeli1Y5/Q==",
|
||||
"requires": {
|
||||
"big-integer": "^1.6.42",
|
||||
"blakejs": "^1.1.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"raw-body": {
|
||||
@@ -10480,19 +10560,6 @@
|
||||
"logplease": "^1.2.15",
|
||||
"r1csfile": "0.0.41"
|
||||
}
|
||||
},
|
||||
"wasmbuilder": {
|
||||
"version": "0.0.16",
|
||||
"resolved": "https://registry.npmjs.org/wasmbuilder/-/wasmbuilder-0.0.16.tgz",
|
||||
"integrity": "sha512-Qx3lEFqaVvp1cEYW7Bfi+ebRJrOiwz2Ieu7ZG2l7YyeSJIok/reEQCQCuicj/Y32ITIJuGIM9xZQppGx5LrQdA=="
|
||||
},
|
||||
"wasmcurves": {
|
||||
"version": "0.2.0",
|
||||
"resolved": "https://registry.npmjs.org/wasmcurves/-/wasmcurves-0.2.0.tgz",
|
||||
"integrity": "sha512-3e2rbxdujOwaod657gxgmdhZNn+i1qKdHO3Y/bK+8E7bV8ttV/fu5FO4/WLBACF375cK0QDLOP+65Na63qYuWA==",
|
||||
"requires": {
|
||||
"wasmbuilder": "0.0.16"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -10592,6 +10659,36 @@
|
||||
"js-sha3": "^0.8.0",
|
||||
"logplease": "^1.2.15",
|
||||
"r1csfile": "0.0.40"
|
||||
},
|
||||
"dependencies": {
|
||||
"ffjavascript": {
|
||||
"version": "0.2.55",
|
||||
"resolved": "https://registry.npmjs.org/ffjavascript/-/ffjavascript-0.2.55.tgz",
|
||||
"integrity": "sha512-8X0FCIPOWiK6DTWh3pnE3O6D6nIQsirStAXpWMzRDnoDX7SEnDX4I28aVhwjL7L35XS1vy2AU7zc0UCGYxdLjw==",
|
||||
"requires": {
|
||||
"big-integer": "^1.6.48",
|
||||
"wasmbuilder": "^0.0.12",
|
||||
"wasmcurves": "0.1.0",
|
||||
"web-worker": "^1.2.0"
|
||||
}
|
||||
},
|
||||
"wasmbuilder": {
|
||||
"version": "0.0.12",
|
||||
"resolved": "https://registry.npmjs.org/wasmbuilder/-/wasmbuilder-0.0.12.tgz",
|
||||
"integrity": "sha512-dTMpBgrnLOXrN58i2zakn2ScynsBhq9LfyQIsPz4CyxRF9k1GAORniuqn3xmE9NnI1l7g3iiVCkoB2Cl0/oG8w==",
|
||||
"requires": {
|
||||
"big-integer": "^1.6.48"
|
||||
}
|
||||
},
|
||||
"wasmcurves": {
|
||||
"version": "0.1.0",
|
||||
"resolved": "https://registry.npmjs.org/wasmcurves/-/wasmcurves-0.1.0.tgz",
|
||||
"integrity": "sha512-kIlcgbVUAv2uQ6lGsepGz/m5V40+Z6rvTBkqCYn3Y2+OcXst+UaP4filJYLh/xDxjJl62FFjZZeAnpeli1Y5/Q==",
|
||||
"requires": {
|
||||
"big-integer": "^1.6.42",
|
||||
"blakejs": "^1.1.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"source-map": {
|
||||
@@ -10918,20 +11015,16 @@
|
||||
}
|
||||
},
|
||||
"wasmbuilder": {
|
||||
"version": "0.0.12",
|
||||
"resolved": "https://registry.npmjs.org/wasmbuilder/-/wasmbuilder-0.0.12.tgz",
|
||||
"integrity": "sha512-dTMpBgrnLOXrN58i2zakn2ScynsBhq9LfyQIsPz4CyxRF9k1GAORniuqn3xmE9NnI1l7g3iiVCkoB2Cl0/oG8w==",
|
||||
"requires": {
|
||||
"big-integer": "^1.6.48"
|
||||
}
|
||||
"version": "0.0.16",
|
||||
"resolved": "https://registry.npmjs.org/wasmbuilder/-/wasmbuilder-0.0.16.tgz",
|
||||
"integrity": "sha512-Qx3lEFqaVvp1cEYW7Bfi+ebRJrOiwz2Ieu7ZG2l7YyeSJIok/reEQCQCuicj/Y32ITIJuGIM9xZQppGx5LrQdA=="
|
||||
},
|
||||
"wasmcurves": {
|
||||
"version": "0.1.0",
|
||||
"resolved": "https://registry.npmjs.org/wasmcurves/-/wasmcurves-0.1.0.tgz",
|
||||
"integrity": "sha512-kIlcgbVUAv2uQ6lGsepGz/m5V40+Z6rvTBkqCYn3Y2+OcXst+UaP4filJYLh/xDxjJl62FFjZZeAnpeli1Y5/Q==",
|
||||
"version": "0.2.0",
|
||||
"resolved": "https://registry.npmjs.org/wasmcurves/-/wasmcurves-0.2.0.tgz",
|
||||
"integrity": "sha512-3e2rbxdujOwaod657gxgmdhZNn+i1qKdHO3Y/bK+8E7bV8ttV/fu5FO4/WLBACF375cK0QDLOP+65Na63qYuWA==",
|
||||
"requires": {
|
||||
"big-integer": "^1.6.42",
|
||||
"blakejs": "^1.1.0"
|
||||
"wasmbuilder": "0.0.16"
|
||||
}
|
||||
},
|
||||
"web-worker": {
|
||||
|
||||
@@ -9,9 +9,10 @@
|
||||
},
|
||||
"license": "ISC",
|
||||
"dependencies": {
|
||||
"circom_tester": "^0.0.19",
|
||||
"circom-ecdsa": "github:0xPARC/circom-ecdsa",
|
||||
"circom_tester": "^0.0.19",
|
||||
"circomlib": "^2.0.5",
|
||||
"ffjavascript": "^0.2.57",
|
||||
"secp256k1_hash_to_curve_circom": "https://gitpkg.now.sh/geometryresearch/secp256k1_hash_to_curve/circuits?main"
|
||||
},
|
||||
"devDependencies": {
|
||||
|
||||
5
circuits/test/hash_to_curve_test.circom
Normal file
5
circuits/test/hash_to_curve_test.circom
Normal file
@@ -0,0 +1,5 @@
|
||||
pragma circom 2.1.2;
|
||||
|
||||
include "../node_modules/secp256k1_hash_to_curve_circom/circom/hash_to_curve.circom";
|
||||
|
||||
component main = HashToCurve(49);
|
||||
@@ -3,9 +3,13 @@ import { wasm as wasm_tester } from 'circom_tester'
|
||||
import { describe, expect, test } from '@jest/globals';
|
||||
import * as enclave from "../../javascript/src/index";
|
||||
import { testSecretKey, testPublicKey, testR, testMessage, testMessageString } from "../../javascript/test/signals.test";
|
||||
import { uint8ArrayToBigInt, hexToBigInt, hexToUint8Array } from "../../javascript/src/utils/encoding";
|
||||
import { uint8ArrayToBigInt, hexToBigInt, hexToUint8Array, messageToUint8Array } from "../../javascript/src/utils/encoding";
|
||||
import { CURVE, Point } from "@noble/secp256k1";
|
||||
import { generate_inputs } from "secp256k1_hash_to_curve_circom/ts/generate_inputs";
|
||||
import { generate_inputs_from_array, generate_inputs } from "secp256k1_hash_to_curve_circom/ts/generate_inputs";
|
||||
import { bufToSha256PaddedBitArr, strToSha256PaddedBitArr } from "secp256k1_hash_to_curve_circom/ts/utils";
|
||||
import { utils } from "ffjavascript"
|
||||
import { concatUint8Arrays } from '../../javascript/src/utils/encoding';
|
||||
|
||||
|
||||
jest.setTimeout(1_000_000);
|
||||
|
||||
@@ -25,7 +29,28 @@ describe("Nullifier Circuit", () => {
|
||||
const skMultC = (uint8ArrayToBigInt(testSecretKey) * hexToBigInt(c)) % CURVE.n;
|
||||
const s = ((skMultC + uint8ArrayToBigInt(testR)) % CURVE.n);
|
||||
|
||||
test.only("circuit verifies valid nullifier", async () => {
|
||||
const public_key_bytes = Array.from(testPublicKey);
|
||||
const message_bytes = Array.from(testMessage);
|
||||
|
||||
const hashMPkPoint = new Point(
|
||||
hexToBigInt(hashMPk.x.toString()),
|
||||
hexToBigInt(hashMPk.y.toString())
|
||||
)
|
||||
const hashMPkBytes = hashMPkPoint.toRawBytes(true);
|
||||
|
||||
test("hash to curve works", async () => {
|
||||
const inputs = utils.stringifyBigInts(generate_inputs_from_array(message_bytes.concat(public_key_bytes)));
|
||||
|
||||
const p = join(__dirname, 'hash_to_curve_test.circom')
|
||||
const circuit = await wasm_tester(p, {"json":true, "sym": true})
|
||||
const w = await circuit.calculateWitness({
|
||||
...inputs,
|
||||
}, true)
|
||||
await circuit.checkConstraints(w)
|
||||
await circuit.assertOut(w, {out: pointToCircuitValue(hashMPkPoint)});
|
||||
})
|
||||
|
||||
test("circuit verifies valid nullifier", async () => {
|
||||
const p = join(__dirname, 'vfy_test.circom')
|
||||
console.log("about to compile")
|
||||
const circuit = await wasm_tester(p)
|
||||
@@ -33,19 +58,29 @@ describe("Nullifier Circuit", () => {
|
||||
|
||||
console.log("about to calculate witness")
|
||||
|
||||
const public_key_bytes = [];
|
||||
testPublicKey.forEach(x => {
|
||||
public_key_bytes.push(BigInt(x))
|
||||
})
|
||||
const {msg: _, ...hash_to_curve_inputs} = utils.stringifyBigInts(generate_inputs_from_array(message_bytes.concat(public_key_bytes)));
|
||||
|
||||
// Calculate padded bit string for sha256 circuit
|
||||
const preimage = concatUint8Arrays([
|
||||
Point.BASE.toRawBytes(false).slice(1),
|
||||
Point.fromPrivateKey(testSecretKey).toRawBytes(false).slice(1),
|
||||
hashMPkBytes.slice(1),
|
||||
nullifier.toRawBytes(false).slice(1),
|
||||
gPowR.toRawBytes(false).slice(1),
|
||||
hashMPkPowR.toRawBytes(false).slice(1),
|
||||
])
|
||||
const padded_bit_string = bufToSha256PaddedBitArr(Buffer.from(Array.from(preimage)));
|
||||
|
||||
const w = await circuit.calculateWitness({
|
||||
// Main circuit inputs
|
||||
c: scalarToCircuitValue(hexToBigInt(c)),
|
||||
s: scalarToCircuitValue(s),
|
||||
msg: message_bytes,
|
||||
public_key: pointToCircuitValue(Point.fromPrivateKey(testSecretKey)),
|
||||
public_key_bytes,
|
||||
nullifier: pointToCircuitValue(nullifier),
|
||||
...generate_inputs(testMessageString),
|
||||
hash_padded_bits: [...padded_bit_string].map(Number),
|
||||
...hash_to_curve_inputs,
|
||||
})
|
||||
console.log("calculated witness")
|
||||
await circuit.checkConstraints(w)
|
||||
@@ -134,4 +169,4 @@ function registersToBigint(registers: bigint[], bits_per_register: bigint): bigi
|
||||
}
|
||||
|
||||
return value;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user