@ -0,0 +1 @@ |
|||||
|
/target |
@ -0,0 +1,594 @@ |
|||||
|
# This file is automatically @generated by Cargo. |
||||
|
# It is not intended for manual editing. |
||||
|
version = 3 |
||||
|
|
||||
|
[[package]] |
||||
|
name = "ahash" |
||||
|
version = "0.8.11" |
||||
|
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
|
checksum = "e89da841a80418a9b391ebaea17f5c112ffaaa96f621d2c285b5174da76b9011" |
||||
|
dependencies = [ |
||||
|
"cfg-if", |
||||
|
"const-random", |
||||
|
"once_cell", |
||||
|
"version_check", |
||||
|
"zerocopy", |
||||
|
] |
||||
|
|
||||
|
[[package]] |
||||
|
name = "anyhow" |
||||
|
version = "1.0.89" |
||||
|
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
|
checksum = "86fdf8605db99b54d3cd748a44c6d04df638eb5dafb219b135d0149bd0db01f6" |
||||
|
|
||||
|
[[package]] |
||||
|
name = "autocfg" |
||||
|
version = "1.4.0" |
||||
|
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
|
checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" |
||||
|
|
||||
|
[[package]] |
||||
|
name = "bumpalo" |
||||
|
version = "3.16.0" |
||||
|
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
|
checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c" |
||||
|
|
||||
|
[[package]] |
||||
|
name = "byteorder" |
||||
|
version = "1.5.0" |
||||
|
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
|
checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" |
||||
|
|
||||
|
[[package]] |
||||
|
name = "cfg-if" |
||||
|
version = "1.0.0" |
||||
|
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
|
checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" |
||||
|
|
||||
|
[[package]] |
||||
|
name = "const-random" |
||||
|
version = "0.1.18" |
||||
|
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
|
checksum = "87e00182fe74b066627d63b85fd550ac2998d4b0bd86bfed477a0ae4c7c71359" |
||||
|
dependencies = [ |
||||
|
"const-random-macro", |
||||
|
] |
||||
|
|
||||
|
[[package]] |
||||
|
name = "const-random-macro" |
||||
|
version = "0.1.16" |
||||
|
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
|
checksum = "f9d839f2a20b0aee515dc581a6172f2321f96cab76c1a38a4c584a194955390e" |
||||
|
dependencies = [ |
||||
|
"getrandom", |
||||
|
"once_cell", |
||||
|
"tiny-keccak", |
||||
|
] |
||||
|
|
||||
|
[[package]] |
||||
|
name = "crossbeam-deque" |
||||
|
version = "0.8.5" |
||||
|
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
|
checksum = "613f8cc01fe9cf1a3eb3d7f488fd2fa8388403e97039e2f73692932e291a770d" |
||||
|
dependencies = [ |
||||
|
"crossbeam-epoch", |
||||
|
"crossbeam-utils", |
||||
|
] |
||||
|
|
||||
|
[[package]] |
||||
|
name = "crossbeam-epoch" |
||||
|
version = "0.9.18" |
||||
|
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
|
checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e" |
||||
|
dependencies = [ |
||||
|
"crossbeam-utils", |
||||
|
] |
||||
|
|
||||
|
[[package]] |
||||
|
name = "crossbeam-utils" |
||||
|
version = "0.8.20" |
||||
|
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
|
checksum = "22ec99545bb0ed0ea7bb9b8e1e9122ea386ff8a48c0922e43f36d45ab09e0e80" |
||||
|
|
||||
|
[[package]] |
||||
|
name = "crunchy" |
||||
|
version = "0.2.2" |
||||
|
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
|
checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7" |
||||
|
|
||||
|
[[package]] |
||||
|
name = "either" |
||||
|
version = "1.13.0" |
||||
|
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
|
checksum = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0" |
||||
|
|
||||
|
[[package]] |
||||
|
name = "fixed-hash" |
||||
|
version = "0.7.0" |
||||
|
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
|
checksum = "cfcf0ed7fe52a17a03854ec54a9f76d6d84508d1c0e66bc1793301c73fc8493c" |
||||
|
dependencies = [ |
||||
|
"static_assertions", |
||||
|
] |
||||
|
|
||||
|
[[package]] |
||||
|
name = "getrandom" |
||||
|
version = "0.2.15" |
||||
|
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
|
checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" |
||||
|
dependencies = [ |
||||
|
"cfg-if", |
||||
|
"js-sys", |
||||
|
"libc", |
||||
|
"wasi", |
||||
|
"wasm-bindgen", |
||||
|
] |
||||
|
|
||||
|
[[package]] |
||||
|
name = "hashbrown" |
||||
|
version = "0.14.5" |
||||
|
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
|
checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" |
||||
|
dependencies = [ |
||||
|
"ahash", |
||||
|
"rayon", |
||||
|
"serde", |
||||
|
] |
||||
|
|
||||
|
[[package]] |
||||
|
name = "hex" |
||||
|
version = "0.4.3" |
||||
|
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
|
checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" |
||||
|
|
||||
|
[[package]] |
||||
|
name = "itertools" |
||||
|
version = "0.11.0" |
||||
|
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
|
checksum = "b1c173a5686ce8bfa551b3563d0c2170bf24ca44da99c7ca4bfdab5418c3fe57" |
||||
|
dependencies = [ |
||||
|
"either", |
||||
|
] |
||||
|
|
||||
|
[[package]] |
||||
|
name = "js-sys" |
||||
|
version = "0.3.70" |
||||
|
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
|
checksum = "1868808506b929d7b0cfa8f75951347aa71bb21144b7791bae35d9bccfcfe37a" |
||||
|
dependencies = [ |
||||
|
"wasm-bindgen", |
||||
|
] |
||||
|
|
||||
|
[[package]] |
||||
|
name = "keccak-hash" |
||||
|
version = "0.8.0" |
||||
|
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
|
checksum = "ce2bd4c29270e724d3eaadf7bdc8700af4221fc0ed771b855eadcd1b98d52851" |
||||
|
dependencies = [ |
||||
|
"primitive-types", |
||||
|
"tiny-keccak", |
||||
|
] |
||||
|
|
||||
|
[[package]] |
||||
|
name = "libc" |
||||
|
version = "0.2.159" |
||||
|
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
|
checksum = "561d97a539a36e26a9a5fad1ea11a3039a67714694aaa379433e580854bc3dc5" |
||||
|
|
||||
|
[[package]] |
||||
|
name = "log" |
||||
|
version = "0.4.22" |
||||
|
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
|
checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24" |
||||
|
|
||||
|
[[package]] |
||||
|
name = "num" |
||||
|
version = "0.4.3" |
||||
|
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
|
checksum = "35bd024e8b2ff75562e5f34e7f4905839deb4b22955ef5e73d2fea1b9813cb23" |
||||
|
dependencies = [ |
||||
|
"num-bigint", |
||||
|
"num-complex", |
||||
|
"num-integer", |
||||
|
"num-iter", |
||||
|
"num-rational", |
||||
|
"num-traits", |
||||
|
] |
||||
|
|
||||
|
[[package]] |
||||
|
name = "num-bigint" |
||||
|
version = "0.4.6" |
||||
|
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
|
checksum = "a5e44f723f1133c9deac646763579fdb3ac745e418f2a7af9cd0c431da1f20b9" |
||||
|
dependencies = [ |
||||
|
"num-integer", |
||||
|
"num-traits", |
||||
|
"rand", |
||||
|
] |
||||
|
|
||||
|
[[package]] |
||||
|
name = "num-complex" |
||||
|
version = "0.4.6" |
||||
|
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
|
checksum = "73f88a1307638156682bada9d7604135552957b7818057dcef22705b4d509495" |
||||
|
dependencies = [ |
||||
|
"num-traits", |
||||
|
"rand", |
||||
|
] |
||||
|
|
||||
|
[[package]] |
||||
|
name = "num-integer" |
||||
|
version = "0.1.46" |
||||
|
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
|
checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f" |
||||
|
dependencies = [ |
||||
|
"num-traits", |
||||
|
] |
||||
|
|
||||
|
[[package]] |
||||
|
name = "num-iter" |
||||
|
version = "0.1.45" |
||||
|
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
|
checksum = "1429034a0490724d0075ebb2bc9e875d6503c3cf69e235a8941aa757d83ef5bf" |
||||
|
dependencies = [ |
||||
|
"autocfg", |
||||
|
"num-integer", |
||||
|
"num-traits", |
||||
|
] |
||||
|
|
||||
|
[[package]] |
||||
|
name = "num-rational" |
||||
|
version = "0.4.2" |
||||
|
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
|
checksum = "f83d14da390562dca69fc84082e73e548e1ad308d24accdedd2720017cb37824" |
||||
|
dependencies = [ |
||||
|
"num-bigint", |
||||
|
"num-integer", |
||||
|
"num-traits", |
||||
|
] |
||||
|
|
||||
|
[[package]] |
||||
|
name = "num-traits" |
||||
|
version = "0.2.19" |
||||
|
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
|
checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" |
||||
|
dependencies = [ |
||||
|
"autocfg", |
||||
|
] |
||||
|
|
||||
|
[[package]] |
||||
|
name = "once_cell" |
||||
|
version = "1.19.0" |
||||
|
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
|
checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" |
||||
|
|
||||
|
[[package]] |
||||
|
name = "plonky2" |
||||
|
version = "0.2.2" |
||||
|
source = "git+https://github.com/mir-protocol/plonky2#41dc325e61ab8d4c0491e68e667c35a4e8173ffa" |
||||
|
dependencies = [ |
||||
|
"ahash", |
||||
|
"anyhow", |
||||
|
"getrandom", |
||||
|
"hashbrown", |
||||
|
"itertools", |
||||
|
"keccak-hash", |
||||
|
"log", |
||||
|
"num", |
||||
|
"plonky2_field", |
||||
|
"plonky2_maybe_rayon", |
||||
|
"plonky2_util", |
||||
|
"rand", |
||||
|
"rand_chacha", |
||||
|
"serde", |
||||
|
"static_assertions", |
||||
|
"unroll", |
||||
|
"web-time", |
||||
|
] |
||||
|
|
||||
|
[[package]] |
||||
|
name = "plonky2_field" |
||||
|
version = "0.2.2" |
||||
|
source = "git+https://github.com/mir-protocol/plonky2#41dc325e61ab8d4c0491e68e667c35a4e8173ffa" |
||||
|
dependencies = [ |
||||
|
"anyhow", |
||||
|
"itertools", |
||||
|
"num", |
||||
|
"plonky2_util", |
||||
|
"rand", |
||||
|
"serde", |
||||
|
"static_assertions", |
||||
|
"unroll", |
||||
|
] |
||||
|
|
||||
|
[[package]] |
||||
|
name = "plonky2_maybe_rayon" |
||||
|
version = "0.2.0" |
||||
|
source = "git+https://github.com/mir-protocol/plonky2#41dc325e61ab8d4c0491e68e667c35a4e8173ffa" |
||||
|
dependencies = [ |
||||
|
"rayon", |
||||
|
] |
||||
|
|
||||
|
[[package]] |
||||
|
name = "plonky2_util" |
||||
|
version = "0.2.0" |
||||
|
source = "git+https://github.com/mir-protocol/plonky2#41dc325e61ab8d4c0491e68e667c35a4e8173ffa" |
||||
|
|
||||
|
[[package]] |
||||
|
name = "ppv-lite86" |
||||
|
version = "0.2.20" |
||||
|
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
|
checksum = "77957b295656769bb8ad2b6a6b09d897d94f05c41b069aede1fcdaa675eaea04" |
||||
|
dependencies = [ |
||||
|
"zerocopy", |
||||
|
] |
||||
|
|
||||
|
[[package]] |
||||
|
name = "primitive-types" |
||||
|
version = "0.10.1" |
||||
|
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
|
checksum = "05e4722c697a58a99d5d06a08c30821d7c082a4632198de1eaa5a6c22ef42373" |
||||
|
dependencies = [ |
||||
|
"fixed-hash", |
||||
|
"uint", |
||||
|
] |
||||
|
|
||||
|
[[package]] |
||||
|
name = "proc-macro2" |
||||
|
version = "1.0.86" |
||||
|
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
|
checksum = "5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77" |
||||
|
dependencies = [ |
||||
|
"unicode-ident", |
||||
|
] |
||||
|
|
||||
|
[[package]] |
||||
|
name = "quote" |
||||
|
version = "1.0.37" |
||||
|
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
|
checksum = "b5b9d34b8991d19d98081b46eacdd8eb58c6f2b201139f7c5f643cc155a633af" |
||||
|
dependencies = [ |
||||
|
"proc-macro2", |
||||
|
] |
||||
|
|
||||
|
[[package]] |
||||
|
name = "rand" |
||||
|
version = "0.8.5" |
||||
|
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
|
checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" |
||||
|
dependencies = [ |
||||
|
"libc", |
||||
|
"rand_chacha", |
||||
|
"rand_core", |
||||
|
] |
||||
|
|
||||
|
[[package]] |
||||
|
name = "rand_chacha" |
||||
|
version = "0.3.1" |
||||
|
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
|
checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" |
||||
|
dependencies = [ |
||||
|
"ppv-lite86", |
||||
|
"rand_core", |
||||
|
] |
||||
|
|
||||
|
[[package]] |
||||
|
name = "rand_core" |
||||
|
version = "0.6.4" |
||||
|
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
|
checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" |
||||
|
dependencies = [ |
||||
|
"getrandom", |
||||
|
] |
||||
|
|
||||
|
[[package]] |
||||
|
name = "rayon" |
||||
|
version = "1.10.0" |
||||
|
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
|
checksum = "b418a60154510ca1a002a752ca9714984e21e4241e804d32555251faf8b78ffa" |
||||
|
dependencies = [ |
||||
|
"either", |
||||
|
"rayon-core", |
||||
|
] |
||||
|
|
||||
|
[[package]] |
||||
|
name = "rayon-core" |
||||
|
version = "1.12.1" |
||||
|
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
|
checksum = "1465873a3dfdaa8ae7cb14b4383657caab0b3e8a0aa9ae8e04b044854c8dfce2" |
||||
|
dependencies = [ |
||||
|
"crossbeam-deque", |
||||
|
"crossbeam-utils", |
||||
|
] |
||||
|
|
||||
|
[[package]] |
||||
|
name = "sch" |
||||
|
version = "0.1.0" |
||||
|
dependencies = [ |
||||
|
"anyhow", |
||||
|
"plonky2", |
||||
|
"rand", |
||||
|
] |
||||
|
|
||||
|
[[package]] |
||||
|
name = "serde" |
||||
|
version = "1.0.210" |
||||
|
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
|
checksum = "c8e3592472072e6e22e0a54d5904d9febf8508f65fb8552499a1abc7d1078c3a" |
||||
|
dependencies = [ |
||||
|
"serde_derive", |
||||
|
] |
||||
|
|
||||
|
[[package]] |
||||
|
name = "serde_derive" |
||||
|
version = "1.0.210" |
||||
|
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
|
checksum = "243902eda00fad750862fc144cea25caca5e20d615af0a81bee94ca738f1df1f" |
||||
|
dependencies = [ |
||||
|
"proc-macro2", |
||||
|
"quote", |
||||
|
"syn 2.0.79", |
||||
|
] |
||||
|
|
||||
|
[[package]] |
||||
|
name = "static_assertions" |
||||
|
version = "1.1.0" |
||||
|
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
|
checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" |
||||
|
|
||||
|
[[package]] |
||||
|
name = "syn" |
||||
|
version = "1.0.109" |
||||
|
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
|
checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" |
||||
|
dependencies = [ |
||||
|
"proc-macro2", |
||||
|
"quote", |
||||
|
"unicode-ident", |
||||
|
] |
||||
|
|
||||
|
[[package]] |
||||
|
name = "syn" |
||||
|
version = "2.0.79" |
||||
|
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
|
checksum = "89132cd0bf050864e1d38dc3bbc07a0eb8e7530af26344d3d2bbbef83499f590" |
||||
|
dependencies = [ |
||||
|
"proc-macro2", |
||||
|
"quote", |
||||
|
"unicode-ident", |
||||
|
] |
||||
|
|
||||
|
[[package]] |
||||
|
name = "tiny-keccak" |
||||
|
version = "2.0.2" |
||||
|
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
|
checksum = "2c9d3793400a45f954c52e73d068316d76b6f4e36977e3fcebb13a2721e80237" |
||||
|
dependencies = [ |
||||
|
"crunchy", |
||||
|
] |
||||
|
|
||||
|
[[package]] |
||||
|
name = "uint" |
||||
|
version = "0.9.5" |
||||
|
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
|
checksum = "76f64bba2c53b04fcab63c01a7d7427eadc821e3bc48c34dc9ba29c501164b52" |
||||
|
dependencies = [ |
||||
|
"byteorder", |
||||
|
"crunchy", |
||||
|
"hex", |
||||
|
"static_assertions", |
||||
|
] |
||||
|
|
||||
|
[[package]] |
||||
|
name = "unicode-ident" |
||||
|
version = "1.0.13" |
||||
|
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
|
checksum = "e91b56cd4cadaeb79bbf1a5645f6b4f8dc5bde8834ad5894a8db35fda9efa1fe" |
||||
|
|
||||
|
[[package]] |
||||
|
name = "unroll" |
||||
|
version = "0.1.5" |
||||
|
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
|
checksum = "5ad948c1cb799b1a70f836077721a92a35ac177d4daddf4c20a633786d4cf618" |
||||
|
dependencies = [ |
||||
|
"quote", |
||||
|
"syn 1.0.109", |
||||
|
] |
||||
|
|
||||
|
[[package]] |
||||
|
name = "version_check" |
||||
|
version = "0.9.5" |
||||
|
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
|
checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" |
||||
|
|
||||
|
[[package]] |
||||
|
name = "wasi" |
||||
|
version = "0.11.0+wasi-snapshot-preview1" |
||||
|
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
|
checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" |
||||
|
|
||||
|
[[package]] |
||||
|
name = "wasm-bindgen" |
||||
|
version = "0.2.93" |
||||
|
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
|
checksum = "a82edfc16a6c469f5f44dc7b571814045d60404b55a0ee849f9bcfa2e63dd9b5" |
||||
|
dependencies = [ |
||||
|
"cfg-if", |
||||
|
"once_cell", |
||||
|
"wasm-bindgen-macro", |
||||
|
] |
||||
|
|
||||
|
[[package]] |
||||
|
name = "wasm-bindgen-backend" |
||||
|
version = "0.2.93" |
||||
|
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
|
checksum = "9de396da306523044d3302746f1208fa71d7532227f15e347e2d93e4145dd77b" |
||||
|
dependencies = [ |
||||
|
"bumpalo", |
||||
|
"log", |
||||
|
"once_cell", |
||||
|
"proc-macro2", |
||||
|
"quote", |
||||
|
"syn 2.0.79", |
||||
|
"wasm-bindgen-shared", |
||||
|
] |
||||
|
|
||||
|
[[package]] |
||||
|
name = "wasm-bindgen-macro" |
||||
|
version = "0.2.93" |
||||
|
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
|
checksum = "585c4c91a46b072c92e908d99cb1dcdf95c5218eeb6f3bf1efa991ee7a68cccf" |
||||
|
dependencies = [ |
||||
|
"quote", |
||||
|
"wasm-bindgen-macro-support", |
||||
|
] |
||||
|
|
||||
|
[[package]] |
||||
|
name = "wasm-bindgen-macro-support" |
||||
|
version = "0.2.93" |
||||
|
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
|
checksum = "afc340c74d9005395cf9dd098506f7f44e38f2b4a21c6aaacf9a105ea5e1e836" |
||||
|
dependencies = [ |
||||
|
"proc-macro2", |
||||
|
"quote", |
||||
|
"syn 2.0.79", |
||||
|
"wasm-bindgen-backend", |
||||
|
"wasm-bindgen-shared", |
||||
|
] |
||||
|
|
||||
|
[[package]] |
||||
|
name = "wasm-bindgen-shared" |
||||
|
version = "0.2.93" |
||||
|
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
|
checksum = "c62a0a307cb4a311d3a07867860911ca130c3494e8c2719593806c08bc5d0484" |
||||
|
|
||||
|
[[package]] |
||||
|
name = "web-time" |
||||
|
version = "1.1.0" |
||||
|
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
|
checksum = "5a6580f308b1fad9207618087a65c04e7a10bc77e02c8e84e9b00dd4b12fa0bb" |
||||
|
dependencies = [ |
||||
|
"js-sys", |
||||
|
"wasm-bindgen", |
||||
|
] |
||||
|
|
||||
|
[[package]] |
||||
|
name = "zerocopy" |
||||
|
version = "0.7.35" |
||||
|
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
|
checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0" |
||||
|
dependencies = [ |
||||
|
"byteorder", |
||||
|
"zerocopy-derive", |
||||
|
] |
||||
|
|
||||
|
[[package]] |
||||
|
name = "zerocopy-derive" |
||||
|
version = "0.7.35" |
||||
|
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
|
checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" |
||||
|
dependencies = [ |
||||
|
"proc-macro2", |
||||
|
"quote", |
||||
|
"syn 2.0.79", |
||||
|
] |
@ -0,0 +1,9 @@ |
|||||
|
[package] |
||||
|
name = "sch" |
||||
|
version = "0.1.0" |
||||
|
edition = "2021" |
||||
|
|
||||
|
[dependencies] |
||||
|
plonky2 = { git = "https://github.com/mir-protocol/plonky2" } |
||||
|
anyhow = "1.0.56" |
||||
|
rand = "0.8.5" |
@ -0,0 +1,122 @@ |
|||||
|
use plonky2::hash::poseidon::PoseidonHash;
|
||||
|
use plonky2::field::goldilocks_field::GoldilocksField;
|
||||
|
use plonky2::field::types::Field;
|
||||
|
use plonky2::plonk::config::Hasher;
|
||||
|
use plonky2::field::types::PrimeField64;
|
||||
|
use rand;
|
||||
|
use rand::Rng;
|
||||
|
|
||||
|
const BIG_GROUP_GEN: GoldilocksField = GoldilocksField(14293326489335486720);
|
||||
|
|
||||
|
struct SchnorrSigner {
|
||||
|
PRIME_GROUP_GEN: GoldilocksField,
|
||||
|
PRIME_GROUP_ORDER: u64,
|
||||
|
}
|
||||
|
|
||||
|
struct SchnorrSecretKey {
|
||||
|
sk: u64,
|
||||
|
}
|
||||
|
|
||||
|
struct SchnorrPublicKey {
|
||||
|
pk: GoldilocksField,
|
||||
|
}
|
||||
|
|
||||
|
struct SchnorrSignature {
|
||||
|
s: u64,
|
||||
|
e: u64,
|
||||
|
}
|
||||
|
|
||||
|
impl SchnorrSigner{
|
||||
|
fn new() -> Self {
|
||||
|
let quotient_order: u64 = (1 << 48) - (1 << 32);
|
||||
|
let PRIME_GROUP_GEN: GoldilocksField = Self::pow(BIG_GROUP_GEN, quotient_order);
|
||||
|
let PRIME_GROUP_ORDER: u64 = (1 << 32) + 1;
|
||||
|
SchnorrSigner{PRIME_GROUP_GEN, PRIME_GROUP_ORDER}
|
||||
|
}
|
||||
|
|
||||
|
fn pow(x: GoldilocksField, a: u64) -> GoldilocksField {
|
||||
|
let mut a_copy = a;
|
||||
|
let mut res = GoldilocksField(1);
|
||||
|
let mut x_pow_2n = x.clone();
|
||||
|
while (a_copy > 0) {
|
||||
|
if (a_copy % 2 != 0) {
|
||||
|
res *= x_pow_2n;
|
||||
|
}
|
||||
|
a_copy /= 2;
|
||||
|
x_pow_2n *= x_pow_2n;
|
||||
|
}
|
||||
|
res
|
||||
|
}
|
||||
|
|
||||
|
fn keygen(&self, sk: SchnorrSecretKey) -> SchnorrPublicKey {
|
||||
|
let pk: GoldilocksField = Self::pow(self.PRIME_GROUP_GEN, sk.sk);
|
||||
|
SchnorrPublicKey{pk: pk}
|
||||
|
}
|
||||
|
|
||||
|
fn hash_insecure(&self, r: &GoldilocksField, msg: &Vec<GoldilocksField>) -> u64 {
|
||||
|
let poseidon_input: Vec<GoldilocksField> = std::iter::once(r)
|
||||
|
.chain(msg.iter())
|
||||
|
.copied()
|
||||
|
.collect();
|
||||
|
|
||||
|
println!("Running hash on concatenated elts: {:?}", poseidon_input);
|
||||
|
let h = PoseidonHash::hash_no_pad(&poseidon_input);
|
||||
|
h.elements[0].to_canonical_u64() % self.PRIME_GROUP_ORDER
|
||||
|
}
|
||||
|
|
||||
|
fn rand_group_multiplier(&self, rng: &mut rand::rngs::ThreadRng) -> u64 {
|
||||
|
let group_order: u64 = (1 << 16) + 1;
|
||||
|
rng.gen_range(0..group_order)
|
||||
|
}
|
||||
|
|
||||
|
fn sign(&self, msg: &Vec<GoldilocksField>, sk: SchnorrSecretKey, rng: &mut rand::rngs::ThreadRng) -> SchnorrSignature {
|
||||
|
let k: u64 = self.rand_group_multiplier(rng);
|
||||
|
let r: GoldilocksField = Self::pow(self.PRIME_GROUP_GEN, k);
|
||||
|
let e: u64 = self.hash_insecure(&r, msg);
|
||||
|
assert!(k < self.PRIME_GROUP_ORDER);
|
||||
|
assert!(sk < self.PRIME_GROUP_ORDER);
|
||||
|
assert!(e < self.PRIME_GROUP_ORDER);
|
||||
|
let mut s128: u128 = ((k as u128) + (sk.sk as u128) * (e as u128));
|
||||
|
s128 %= (self.PRIME_GROUP_ORDER as u128);
|
||||
|
let s: u64 = s128 as u64;
|
||||
|
SchnorrSignature{e, s}
|
||||
|
}
|
||||
|
|
||||
|
fn verify(&self, sig: SchnorrSignature, msg: &Vec<GoldilocksField>, pk: SchnorrPublicKey) -> bool {
|
||||
|
let r: GoldilocksField = Self::pow(self.PRIME_GROUP_GEN, sig.s)
|
||||
|
* Self::pow(pk.pk, sig.e);
|
||||
|
let e_v: u64 = self.hash_insecure(&r, msg);
|
||||
|
e_v == sig.e
|
||||
|
}
|
||||
|
}
|
||||
|
|
||||
|
fn main() {
|
||||
|
println!("Hello, world!");
|
||||
|
|
||||
|
let mut rng: rand::rngs::ThreadRng = rand::thread_rng();
|
||||
|
|
||||
|
type F = GoldilocksField;
|
||||
|
|
||||
|
let x = F::from_noncanonical_i64(3);
|
||||
|
let h = PoseidonHash::hash_no_pad(&[x]);
|
||||
|
println!("Hash is {:?}", h);
|
||||
|
}
|
||||
|
|
||||
|
#[cfg(test)]
|
||||
|
mod tests {
|
||||
|
use plonky2::field::goldilocks_field::GoldilocksField;
|
||||
|
|
||||
|
use crate::SchnorrSigner;
|
||||
|
|
||||
|
#[test]
|
||||
|
fn test_pow() {
|
||||
|
let g = GoldilocksField(3);
|
||||
|
let res = GoldilocksField(16305451354880172407);
|
||||
|
assert_eq!(res, SchnorrSigner::pow(g, 1234567));
|
||||
|
}
|
||||
|
|
||||
|
#[test]
|
||||
|
fn test_sig() {
|
||||
|
println!("NOT IMPLEMENTED");
|
||||
|
}
|
||||
|
}
|