diff --git a/.cargo/config.toml b/.cargo/config.toml index deac5747f..1218c7945 100644 --- a/.cargo/config.toml +++ b/.cargo/config.toml @@ -1,6 +1,6 @@ [alias] -build-node= "build --features node --no-default-features" -build-browser-pack = "build --lib --target=wasm32-unknown-unknown --features browser --no-default-features" +build-node = "build --features node --no-default-features" +build-browser = "build --lib --target=wasm32-unknown-unknown --features browser --no-default-features" test-browser = "test --target=wasm32-unknown-unknown --features browser --no-default-features" [target.wasm32-unknown-unknown] diff --git a/.github/workflows/auto-release.yml b/.github/workflows/auto-release.yml index e7891a179..41877a380 100644 --- a/.github/workflows/auto-release.yml +++ b/.github/workflows/auto-release.yml @@ -180,7 +180,7 @@ jobs: - uses: jetli/wasm-bindgen-action@v0.2.0 with: - version: "0.2.84" + version: "0.2.89" - name: Install wasm-pack run: curl https://rustwasm.github.io/wasm-pack/installer/init.sh -sSf | sh diff --git a/.github/workflows/qaci.yml b/.github/workflows/qaci.yml index eb2c33223..4de15e45c 100644 --- a/.github/workflows/qaci.yml +++ b/.github/workflows/qaci.yml @@ -32,7 +32,7 @@ jobs: - uses: jetli/wasm-bindgen-action@v0.2.0 with: - version: "0.2.87" + version: "0.2.89" # If you need to reset the cache version, increment the number after `v` - uses: Swatinem/rust-cache@v2 diff --git a/.gitignore b/.gitignore index 868c9b614..bbdad6e15 100644 --- a/.gitignore +++ b/.gitignore @@ -4,6 +4,7 @@ config.yaml config*.yaml **/*.rs.bk **/*.ipynb +**/*.js .ipynb_checkpoints # Local environment configuration .envrc diff --git a/Cargo.lock b/Cargo.lock index 3fc63a58f..c103770a6 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2,13 +2,24 @@ # It is not intended for manual editing. version = 3 +[[package]] +name = "addchain" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b2e69442aa5628ea6951fa33e24efe8313f4321a91bd729fc2f75bdfc858570" +dependencies = [ + "num-bigint 0.3.3", + "num-integer", + "num-traits", +] + [[package]] name = "addr2line" -version = "0.19.0" +version = "0.21.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a76fd60b23679b7d19bd066031410fb7e458ccc5e958eb5c325888ce4baedc97" +checksum = "8a30b2e23b9e17a9f90641c7ab1549cd9b44f296d3ccbf309d2863cfe398a0cb" dependencies = [ - "gimli 0.27.2", + "gimli 0.28.1", ] [[package]] @@ -71,9 +82,9 @@ dependencies = [ [[package]] name = "aes" -version = "0.8.2" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "433cfd6710c9986c576a25ca913c39d66a6474107b406f34f91d4a8923395241" +checksum = "ac1f845298e95f983ff1944b728ae08b8cebab80d684f0a832ed0fc74dfa27e2" dependencies = [ "cfg-if 1.0.0", "cipher 0.4.4", @@ -82,29 +93,15 @@ dependencies = [ [[package]] name = "aes-gcm" -version = "0.9.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df5f85a83a7d8b0442b6aa7b504b8212c1733da07b98aae43d4bc21b2cb3cdf6" -dependencies = [ - "aead 0.4.3", - "aes 0.7.5", - "cipher 0.3.0", - "ctr 0.8.0", - "ghash 0.4.4", - "subtle", -] - -[[package]] -name = "aes-gcm" -version = "0.10.2" +version = "0.10.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "209b47e8954a928e1d72e86eca7000ebb6655fe1436d33eefc2201cad027e237" +checksum = "831010a0f742e1209b3bcea8fab6a8e149051ba6099432c8cb2cc117dec3ead1" dependencies = [ "aead 0.5.2", - "aes 0.8.2", + "aes 0.8.3", "cipher 0.4.4", "ctr 0.9.2", - "ghash 0.5.0", + "ghash", "subtle", ] @@ -130,20 +127,20 @@ dependencies = [ [[package]] name = "ahash" -version = "0.7.6" +version = "0.7.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fcb51a0695d8f838b1ee009b3fbf66bda078cd64590202a864a8f3e8c4315c47" +checksum = "5a824f2aa7e75a0c98c5a504fceb80649e9c35265d44525b5f94de4771a395cd" dependencies = [ - "getrandom 0.2.9", + "getrandom 0.2.11", "once_cell", "version_check", ] [[package]] name = "aho-corasick" -version = "1.0.1" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67fc08ce920c31afb70f013dcce1bfc3a3195de6a228474e45e1f145b36f8d04" +checksum = "b2969dcb958b36655471fc61f7e416fa76033bdd4bfed0678d8fee1e2d07a1f0" dependencies = [ "memchr", ] @@ -163,60 +160,68 @@ dependencies = [ "libc", ] +[[package]] +name = "ansi_term" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d52a9bb7ec0cf484c551830a7ce27bd20d67eac647e1befb56b0be4ee39a55d2" +dependencies = [ + "winapi", +] + [[package]] name = "anstream" -version = "0.3.2" +version = "0.6.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ca84f3628370c59db74ee214b3263d58f9aadd9b4fe7e711fd87dc452b7f163" +checksum = "d664a92ecae85fd0a7392615844904654d1d5f5514837f471ddef4a057aba1b6" dependencies = [ "anstyle", "anstyle-parse", "anstyle-query", "anstyle-wincon", "colorchoice", - "is-terminal", "utf8parse", ] [[package]] name = "anstyle" -version = "1.0.0" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41ed9a86bf92ae6580e0a31281f65a1b1d867c0cc68d5346e2ae128dddfa6a7d" +checksum = "7079075b41f533b8c61d2a4d073c4676e1f8b249ff94a393b0595db304e0dd87" [[package]] name = "anstyle-parse" -version = "0.2.0" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e765fd216e48e067936442276d1d57399e37bce53c264d6fefbe298080cb57ee" +checksum = "c75ac65da39e5fe5ab759307499ddad880d724eed2f6ce5b5e8a26f4f387928c" dependencies = [ "utf8parse", ] [[package]] name = "anstyle-query" -version = "1.0.0" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ca11d4be1bab0c8bc8734a9aa7bf4ee8316d462a08c6ac5052f888fef5b494b" +checksum = "e28923312444cdd728e4738b3f9c9cac739500909bb3d3c94b43551b16517648" dependencies = [ - "windows-sys 0.48.0", + "windows-sys 0.52.0", ] [[package]] name = "anstyle-wincon" -version = "1.0.1" +version = "3.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "180abfa45703aebe0093f79badacc01b8fd4ea2e35118747e5811127f926e188" +checksum = "1cd54b81ec8d6180e24654d0b371ad22fc3dd083b6ff8ba325b72e00c87660a7" dependencies = [ "anstyle", - "windows-sys 0.48.0", + "windows-sys 0.52.0", ] [[package]] name = "anyhow" -version = "1.0.71" +version = "1.0.79" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c7d0618f0e0b7e8ff11427422b64564d5fb0be1940354bfe2e0529b18a9d9b8" +checksum = "080e9890a082662b09c1ad45f567faeeb47f22b5fb23895fbe1e651e718e25ca" [[package]] name = "arc-swap" @@ -232,9 +237,18 @@ checksum = "6b4930d2cb77ce62f89ee5d5289b4ac049559b1c45539271f5ed4fdc7db34545" [[package]] name = "arrayvec" -version = "0.7.2" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" + +[[package]] +name = "ascii-canvas" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8da52d66c7071e2e3fa2a1e5c6d088fec47b593032b254f5e980de8ea54454d6" +checksum = "8824ecca2e851cec16968d54a01dd372ef8f95b244fb84b84e70128be347c3c6" +dependencies = [ + "term", +] [[package]] name = "asn1-rs" @@ -305,9 +319,9 @@ dependencies = [ [[package]] name = "async-channel" -version = "1.8.0" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf46fee83e5ccffc220104713af3292ff9bc7c64c7de289f66dae8e38d826833" +checksum = "81953c529336010edd6d8e358f886d9581267795c61b19475b71314bffa46d35" dependencies = [ "concurrent-queue", "event-listener", @@ -316,22 +330,22 @@ dependencies = [ [[package]] name = "async-lock" -version = "2.7.0" +version = "2.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa24f727524730b077666307f2734b4a1a1c57acb79193127dcc8914d5242dd7" +checksum = "287272293e9d8c41773cec55e365490fe034813a2f172f502d6ddcf75b2f582b" dependencies = [ "event-listener", ] [[package]] name = "async-recursion" -version = "1.0.4" +version = "1.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e97ce7de6cf12de5d7226c73f5ba9811622f4db3a5b91b55c53e987e5f91cba" +checksum = "5fd55a5ba1179988837d24ab4c7cc8ed6efdeff578ede0416b4225a5fca35bd0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.46", + "syn 2.0.48", ] [[package]] @@ -353,7 +367,7 @@ checksum = "16e62a023e7c117e27523144c5d2459f4397fcc3cab0085af8e2224f643a0193" dependencies = [ "proc-macro2", "quote", - "syn 2.0.46", + "syn 2.0.48", ] [[package]] @@ -364,14 +378,14 @@ checksum = "c980ee35e870bd1a4d2c8294d4c04d0499e67bca1e4b5cefcc693c2fa00caea9" dependencies = [ "proc-macro2", "quote", - "syn 2.0.46", + "syn 2.0.48", ] [[package]] name = "atomic-waker" -version = "1.1.1" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1181e1e0d1fce796a03db1ae795d67167da795f9cf4a39c37589e85ef57f26d3" +checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" [[package]] name = "atty" @@ -384,6 +398,15 @@ dependencies = [ "winapi", ] +[[package]] +name = "autocfg" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0dde43e75fd43e8a1bf86103336bc699aa8d17ad1be60c76c0bdfd4828e19b78" +dependencies = [ + "autocfg 1.1.0", +] + [[package]] name = "autocfg" version = "1.1.0" @@ -398,7 +421,7 @@ checksum = "3b829e4e32b91e643de6eafe82b1d90675f5874230191a4ffbc1b336dec4d6bf" dependencies = [ "async-trait", "axum-core", - "base64 0.21.2", + "base64 0.21.5", "bitflags 1.3.2", "bytes", "futures-util", @@ -445,15 +468,15 @@ dependencies = [ [[package]] name = "backtrace" -version = "0.3.67" +version = "0.3.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "233d376d6d185f2a3093e58f283f60f880315b6c60075b01f36b3b85154564ca" +checksum = "2089b7e3f35b9dd2d0ed921ead4f6d318c27680d4a5bd167b3ee120edb105837" dependencies = [ "addr2line", "cc", "cfg-if 1.0.0", "libc", - "miniz_oxide 0.6.2", + "miniz_oxide", "object", "rustc-demangle", ] @@ -494,9 +517,9 @@ checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" [[package]] name = "base64" -version = "0.21.2" +version = "0.21.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "604178f6c5c21f02dc555784810edfb88d34ac2c73b2eae109655649ee73ce3d" +checksum = "35636a1494ede3b646cc98f74f8e62c773a38a659ebc777a2cf26b9b74171df9" [[package]] name = "base64ct" @@ -504,6 +527,30 @@ version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8c3c1a368f70d6cf7302d78f8f7093da241fb8e8807c05cc9e51a125895a6d5b" +[[package]] +name = "bellpepper" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ae286c2cb403324ab644c7cc68dceb25fe52ca9429908a726d7ed272c1edf7b" +dependencies = [ + "bellpepper-core", + "byteorder", + "ff 0.13.0", +] + +[[package]] +name = "bellpepper-core" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d8abb418570756396d722841b19edfec21d4e89e1cf8990610663040ecb1aea" +dependencies = [ + "blake2s_simd", + "byteorder", + "ff 0.13.0", + "serde", + "thiserror", +] + [[package]] name = "bincode" version = "1.3.3" @@ -513,6 +560,21 @@ dependencies = [ "serde", ] +[[package]] +name = "bit-set" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0700ddab506f33b20a03b13996eccd309a48e5ff77d0d95926aa0210fb4e95f1" +dependencies = [ + "bit-vec", +] + +[[package]] +name = "bit-vec" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "349f9b6a179ed607305526ca489b34ad0a41aed5f7980fa90eb03160b69598fb" + [[package]] name = "bitflags" version = "1.3.2" @@ -537,6 +599,28 @@ dependencies = [ "wyz", ] +[[package]] +name = "blake2b_simd" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23285ad32269793932e830392f2fe2f83e26488fd3ec778883a93c8323735780" +dependencies = [ + "arrayref", + "arrayvec", + "constant_time_eq", +] + +[[package]] +name = "blake2s_simd" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94230421e395b9920d23df13ea5d77a20e1725331f90fbbf6df6040b33f756ae" +dependencies = [ + "arrayref", + "arrayvec", + "constant_time_eq", +] + [[package]] name = "block-buffer" version = "0.9.0" @@ -561,7 +645,7 @@ version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "57a0e8073e8baa88212fb5823574c02ebccb395136ba9a164ab89379ec6072f0" dependencies = [ - "block-padding", + "block-padding 0.2.1", "cipher 0.2.5", ] @@ -571,11 +655,48 @@ version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8d696c370c750c948ada61c69a0ee2cbbb9c50b1019ddb86d9317157a99c2cae" +[[package]] +name = "block-padding" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8894febbff9f758034a5b8e12d87918f56dfc64a8e1fe757d65e29041538d93" +dependencies = [ + "generic-array", +] + +[[package]] +name = "blst" +version = "0.3.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c94087b935a822949d3291a9989ad2b2051ea141eda0fd4e478a75f6aa3e604b" +dependencies = [ + "cc", + "glob", + "threadpool", + "zeroize", +] + +[[package]] +name = "blstrs" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a8a8ed6fefbeef4a8c7b460e4110e12c5e22a5b7cf32621aae6ad650c4dcf29" +dependencies = [ + "blst", + "byte-slice-cast", + "ff 0.13.0", + "group 0.13.0", + "pairing", + "rand_core 0.6.4", + "serde", + "subtle", +] + [[package]] name = "bumpalo" -version = "3.13.0" +version = "3.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a3e2c3daef883ecc1b5d58c15adae93470a91d425f3532ba1695849656af3fc1" +checksum = "7f30e7476521f6f8af1a1c4c0b8cc94f0bee37d91763d0ca2665f299b6cd8aec" [[package]] name = "byte-slice-cast" @@ -607,9 +728,9 @@ dependencies = [ [[package]] name = "byteorder" -version = "1.4.3" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610" +checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "bytes" @@ -620,6 +741,15 @@ dependencies = [ "serde", ] +[[package]] +name = "cbc" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26b52a9543ae338f279b96b0b9fed9c8093744685043739079ce85cd58f289a6" +dependencies = [ + "cipher 0.4.4", +] + [[package]] name = "cbindgen" version = "0.24.5" @@ -641,9 +771,12 @@ dependencies = [ [[package]] name = "cc" -version = "1.0.79" +version = "1.0.83" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50d30906286121d95be3d479533b458f87493b30a4b5f79a607db8f5d11aa91f" +checksum = "f1174fb0b6ec23863f8b971027804a42614e347eafb0a95bf0b12cdae21fc4d0" +dependencies = [ + "libc", +] [[package]] name = "ccm" @@ -656,6 +789,18 @@ dependencies = [ "subtle", ] +[[package]] +name = "ccm" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ae3c82e4355234767756212c570e29833699ab63e6ffd161887314cc5b43847" +dependencies = [ + "aead 0.5.2", + "cipher 0.4.4", + "ctr 0.9.2", + "subtle", +] + [[package]] name = "cfg-if" version = "0.1.10" @@ -670,16 +815,16 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" [[package]] name = "chrono" -version = "0.4.30" +version = "0.4.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "defd4e7873dbddba6c7c91e199c7fcb946abc4a6a4ac3195400bcfb01b5de877" +checksum = "7f2c685bad3eb3d45a01354cedb7d5faa66194d1d58ba6e267a8de788f79db38" dependencies = [ "android-tzdata", "iana-time-zone", "js-sys", "num-traits", "wasm-bindgen", - "windows-targets", + "windows-targets 0.48.5", ] [[package]] @@ -710,6 +855,70 @@ dependencies = [ "inout", ] +[[package]] +name = "circom" +version = "2.1.7" +source = "git+https://github.com/RingsNetwork/circom?rev=ea8c4cd987f035ef4f08e17269d9b68cb5ab9122#ea8c4cd987f035ef4f08e17269d9b68cb5ab9122" +dependencies = [ + "ansi_term", + "clap 2.34.0", + "compiler", + "constraint_generation", + "constraint_writers", + "dag", + "exitcode", + "parser", + "program_structure", + "type_analysis", + "wast 39.0.0", +] + +[[package]] +name = "circom-scotia" +version = "0.2.0" +source = "git+https://github.com/RingsNetwork/circom-scotia?rev=d453cc8cf55e62712762282b2c531b7a02787190#d453cc8cf55e62712762282b2c531b7a02787190" +dependencies = [ + "anyhow", + "bellpepper-core", + "byteorder", + "cfg-if 1.0.0", + "color-eyre", + "crypto-bigint 0.5.5", + "ff 0.13.0", + "fnv", + "getrandom 0.2.11", + "itertools 0.9.0", + "serde", + "serde_json", + "thiserror", + "wasmer 4.2.5", +] + +[[package]] +name = "circom_algebra" +version = "2.1.4" +source = "git+https://github.com/RingsNetwork/circom?rev=ea8c4cd987f035ef4f08e17269d9b68cb5ab9122#ea8c4cd987f035ef4f08e17269d9b68cb5ab9122" +dependencies = [ + "constant_tracking", + "num-bigint-dig", + "num-traits", +] + +[[package]] +name = "clap" +version = "2.34.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a0610544180c38b88101fecf2dd634b174a62eef6946f84dfc6a7127512b381c" +dependencies = [ + "ansi_term", + "atty", + "bitflags 1.3.2", + "strsim 0.8.0", + "textwrap 0.11.0", + "unicode-width", + "vec_map", +] + [[package]] name = "clap" version = "3.2.25" @@ -720,45 +929,43 @@ dependencies = [ "bitflags 1.3.2", "clap_lex 0.2.4", "indexmap 1.9.3", - "strsim", + "strsim 0.10.0", "termcolor", - "textwrap", + "textwrap 0.16.0", ] [[package]] name = "clap" -version = "4.3.0" +version = "4.4.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93aae7a4192245f70fe75dd9157fc7b4a5bf53e88d30bd4396f7d8f9284d5acc" +checksum = "52bdc885e4cacc7f7c9eedc1ef6da641603180c783c41a15c264944deeaab642" dependencies = [ "clap_builder", "clap_derive", - "once_cell", ] [[package]] name = "clap_builder" -version = "4.3.0" +version = "4.4.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f423e341edefb78c9caba2d9c7f7687d0e72e89df3ce3394554754393ac3990" +checksum = "fb7fb5e4e979aec3be7791562fcba452f94ad85e954da024396433e0e25a79e9" dependencies = [ "anstream", "anstyle", - "bitflags 1.3.2", - "clap_lex 0.5.0", - "strsim", + "clap_lex 0.6.0", + "strsim 0.10.0", ] [[package]] name = "clap_derive" -version = "4.3.0" +version = "4.4.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "191d9573962933b4027f932c600cd252ce27a8ad5979418fe78e43c07996f27b" +checksum = "cf9804afaaf59a91e75b022a30fb7229a7901f60c755489cc61c9b423b836442" dependencies = [ "heck", "proc-macro2", "quote", - "syn 2.0.46", + "syn 2.0.48", ] [[package]] @@ -772,93 +979,211 @@ dependencies = [ [[package]] name = "clap_lex" -version = "0.5.0" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2da6da31387c7e4ef160ffab6d5e7f00c42626fe39aea70a7b0f1773f7dd6c1b" +checksum = "702fc72eb24e5a1e48ce58027a675bc24edd52096d5397d4aea7c6dd9eca0bd1" [[package]] -name = "colorchoice" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "acbf1af155f9b9ef647e42cdc158db4b64a1b61f743629225fde6f3e0be2a7c7" +name = "code_producers" +version = "2.1.7" +source = "git+https://github.com/RingsNetwork/circom?rev=ea8c4cd987f035ef4f08e17269d9b68cb5ab9122#ea8c4cd987f035ef4f08e17269d9b68cb5ab9122" +dependencies = [ + "handlebars", + "lz_fnv", + "num-bigint-dig", + "serde_json", +] [[package]] -name = "concurrent-queue" -version = "2.2.0" +name = "codespan" +version = "0.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62ec6771ecfa0762d24683ee5a32ad78487a3d3afdc0fb8cae19d2c5deb50b7c" +checksum = "8ebaf6bb6a863ad6aa3a18729e9710c53d75df03306714d9cc1f7357a00cd789" dependencies = [ - "crossbeam-utils", + "codespan-reporting", ] [[package]] -name = "console_error_panic_hook" -version = "0.1.7" +name = "codespan-reporting" +version = "0.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a06aeb73f470f66dcdbf7223caeebb85984942f22f1adb2a088cf9668146bbbc" +checksum = "6e0762455306b1ed42bc651ef6a2197aabda5e1d4a43c34d5eab5c1a3634e81d" dependencies = [ - "cfg-if 1.0.0", - "wasm-bindgen", + "termcolor", + "unicode-width", ] [[package]] -name = "const-oid" -version = "0.9.2" +name = "color-eyre" +version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "520fbf3c07483f94e3e3ca9d0cfd913d7718ef2483d2cfd91c0d9e91474ab913" +checksum = "5a667583cca8c4f8436db8de46ea8233c42a7d9ae424a82d338f2e4675229204" +dependencies = [ + "backtrace", + "color-spantrace", + "eyre", + "indenter", + "once_cell", + "owo-colors", + "tracing-error", +] [[package]] -name = "core-foundation" -version = "0.9.3" +name = "color-spantrace" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "194a7a9e6de53fa55116934067c844d9d749312f75c6f6d0980e8c252f8c2146" +checksum = "cd6be1b2a7e382e2b98b43b2adcca6bb0e465af0bdd38123873ae61eb17a72c2" dependencies = [ - "core-foundation-sys", - "libc", + "once_cell", + "owo-colors", + "tracing-core", + "tracing-error", ] [[package]] -name = "core-foundation-sys" -version = "0.8.4" +name = "colorchoice" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e496a50fda8aacccc86d7529e2c1e0892dbd0f898a6b5645b5561b89c3210efa" +checksum = "acbf1af155f9b9ef647e42cdc158db4b64a1b61f743629225fde6f3e0be2a7c7" [[package]] -name = "corosensei" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9847f90f32a50b0dcbd68bc23ff242798b13080b97b0569f6ed96a45ce4cf2cd" +name = "compiler" +version = "2.1.7" +source = "git+https://github.com/RingsNetwork/circom?rev=ea8c4cd987f035ef4f08e17269d9b68cb5ab9122#ea8c4cd987f035ef4f08e17269d9b68cb5ab9122" dependencies = [ - "autocfg", - "cfg-if 1.0.0", - "libc", - "scopeguard", - "windows-sys 0.33.0", + "code_producers", + "constant_tracking", + "num-bigint-dig", + "num-traits", + "program_structure", ] [[package]] -name = "cpufeatures" -version = "0.2.7" +name = "concurrent-queue" +version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e4c1eaa2012c47becbbad2ab175484c2a84d1185b566fb2cc5b8707343dfe58" +checksum = "d16048cd947b08fa32c24458a22f5dc5e835264f689f4f5653210c69fd107363" dependencies = [ - "libc", + "crossbeam-utils", ] [[package]] -name = "cranelift-bforest" -version = "0.91.1" +name = "console_error_panic_hook" +version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a2ab4512dfd3a6f4be184403a195f76e81a8a9f9e6c898e19d2dc3ce20e0115" +checksum = "a06aeb73f470f66dcdbf7223caeebb85984942f22f1adb2a088cf9668146bbbc" dependencies = [ - "cranelift-entity", + "cfg-if 1.0.0", + "wasm-bindgen", ] [[package]] -name = "cranelift-codegen" -version = "0.91.1" +name = "const-oid" +version = "0.9.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "98b022ed2a5913a38839dfbafe6cf135342661293b08049843362df4301261dc" +checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" + +[[package]] +name = "constant_time_eq" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f7144d30dcf0fafbce74250a3963025d8d52177934239851c917d29f1df280c2" + +[[package]] +name = "constant_tracking" +version = "2.0.0" +source = "git+https://github.com/RingsNetwork/circom?rev=ea8c4cd987f035ef4f08e17269d9b68cb5ab9122#ea8c4cd987f035ef4f08e17269d9b68cb5ab9122" + +[[package]] +name = "constraint_generation" +version = "2.1.7" +source = "git+https://github.com/RingsNetwork/circom?rev=ea8c4cd987f035ef4f08e17269d9b68cb5ab9122#ea8c4cd987f035ef4f08e17269d9b68cb5ab9122" +dependencies = [ + "ansi_term", + "circom_algebra", + "compiler", + "constraint_list", + "constraint_writers", + "dag", + "num-bigint-dig", + "num-traits", + "program_structure", +] + +[[package]] +name = "constraint_list" +version = "2.1.7" +source = "git+https://github.com/RingsNetwork/circom?rev=ea8c4cd987f035ef4f08e17269d9b68cb5ab9122#ea8c4cd987f035ef4f08e17269d9b68cb5ab9122" +dependencies = [ + "circom_algebra", + "constraint_writers", + "json", + "num_cpus", + "program_structure", + "threadpool", +] + +[[package]] +name = "constraint_writers" +version = "2.1.7" +source = "git+https://github.com/RingsNetwork/circom?rev=ea8c4cd987f035ef4f08e17269d9b68cb5ab9122#ea8c4cd987f035ef4f08e17269d9b68cb5ab9122" +dependencies = [ + "circom_algebra", + "json", +] + +[[package]] +name = "core-foundation" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "core-foundation-sys" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868f" + +[[package]] +name = "corosensei" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "80128832c58ea9cbd041d2a759ec449224487b2c1e400453d99d244eead87a8e" +dependencies = [ + "autocfg 1.1.0", + "cfg-if 1.0.0", + "libc", + "scopeguard", + "windows-sys 0.33.0", +] + +[[package]] +name = "cpufeatures" +version = "0.2.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53fe5e26ff1b7aef8bca9c6080520cfb8d9333c7568e1829cef191a9723e5504" +dependencies = [ + "libc", +] + +[[package]] +name = "cranelift-bforest" +version = "0.91.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a2ab4512dfd3a6f4be184403a195f76e81a8a9f9e6c898e19d2dc3ce20e0115" +dependencies = [ + "cranelift-entity", +] + +[[package]] +name = "cranelift-codegen" +version = "0.91.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "98b022ed2a5913a38839dfbafe6cf135342661293b08049843362df4301261dc" dependencies = [ "arrayvec", "bumpalo", @@ -939,9 +1264,9 @@ dependencies = [ [[package]] name = "crc-catalog" -version = "2.2.0" +version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9cace84e55f07e7301bae1c519df89cdad8cc3cd868413d3fdbdeca9ff3db484" +checksum = "19d374276b40fb8bbdee95aef7c7fa6b5316ec764510eb64b8dd0e2ed0d7e7f5" [[package]] name = "crc32fast" @@ -954,9 +1279,9 @@ dependencies = [ [[package]] name = "crossbeam-channel" -version = "0.5.8" +version = "0.5.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a33c2bf77f2df06183c3aa30d1e96c0695a313d4f9c453cc3762a6db39f99200" +checksum = "82a9b73a36529d9c47029b9fb3a6f0ea3cc916a261195352ba19e770fc1748b2" dependencies = [ "cfg-if 1.0.0", "crossbeam-utils", @@ -964,9 +1289,9 @@ dependencies = [ [[package]] name = "crossbeam-deque" -version = "0.8.3" +version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce6fd6f855243022dcecf8702fef0c297d4338e226845fe067f6341ad9fa0cef" +checksum = "fca89a0e215bab21874660c67903c5f143333cab1da83d041c7ded6053774751" dependencies = [ "cfg-if 1.0.0", "crossbeam-epoch", @@ -975,22 +1300,30 @@ dependencies = [ [[package]] name = "crossbeam-epoch" -version = "0.9.14" +version = "0.9.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46bd5f3f85273295a9d14aedfb86f6aadbff6d8f5295c4a9edb08e819dcf5695" +checksum = "0e3681d554572a651dda4186cd47240627c3d0114d45a95f6ad27f2f22e7548d" +dependencies = [ + "autocfg 1.1.0", + "cfg-if 1.0.0", + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-queue" +version = "0.3.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "adc6598521bb5a83d491e8c1fe51db7296019d2ca3cb93cc6c2a20369a4d78a2" dependencies = [ - "autocfg", "cfg-if 1.0.0", "crossbeam-utils", - "memoffset 0.8.0", - "scopeguard", ] [[package]] name = "crossbeam-utils" -version = "0.8.15" +version = "0.8.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c063cd8cc95f5c377ed0d4b49a4b21f632396ff690e8470c29b3359b346984b" +checksum = "c3a430a770ebd84726f584a90ee7f020d28db52c6d02138900f22341f866d39c" dependencies = [ "cfg-if 1.0.0", ] @@ -1015,12 +1348,13 @@ dependencies = [ [[package]] name = "crypto-bigint" -version = "0.5.3" +version = "0.5.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "740fe28e594155f10cfc383984cbefd529d7396050557148f79cb0f621204124" +checksum = "0dc92fb57ca44df6db8059111ab3af99a63d5d0f8375d9972e319a379c6bab76" dependencies = [ "generic-array", "rand_core 0.6.4", + "serdect", "subtle", "zeroize", ] @@ -1046,16 +1380,6 @@ dependencies = [ "subtle", ] -[[package]] -name = "crypto-mac" -version = "0.11.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1d1a86f49236c215f271d40892d5fc950490551400b02ef360692c29815c714" -dependencies = [ - "generic-array", - "subtle", -] - [[package]] name = "ctr" version = "0.8.0" @@ -1089,18 +1413,43 @@ dependencies = [ [[package]] name = "curve25519-dalek" -version = "4.0.0-rc.2" +version = "4.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03d928d978dbec61a1167414f5ec534f24bea0d7a0d24dd9b6233d3d8223e585" +checksum = "e89b8c6a2e4b1f45971ad09761aafb85514a84744b67a95e32c3cc1352d1f65c" dependencies = [ "cfg-if 1.0.0", + "cpufeatures", + "curve25519-dalek-derive", "fiat-crypto", - "packed_simd_2", "platforms", + "rustc_version", "subtle", "zeroize", ] +[[package]] +name = "curve25519-dalek-derive" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.48", +] + +[[package]] +name = "dag" +version = "2.1.7" +source = "git+https://github.com/RingsNetwork/circom?rev=ea8c4cd987f035ef4f08e17269d9b68cb5ab9122#ea8c4cd987f035ef4f08e17269d9b68cb5ab9122" +dependencies = [ + "circom_algebra", + "constraint_list", + "constraint_writers", + "json", + "program_structure", +] + [[package]] name = "darling" version = "0.14.4" @@ -1113,12 +1462,12 @@ dependencies = [ [[package]] name = "darling" -version = "0.20.1" +version = "0.20.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0558d22a7b463ed0241e993f76f09f30b126687447751a8638587b864e4b3944" +checksum = "0209d94da627ab5605dcccf08bb18afa5009cfbef48d8a8b7d7bdbc79be25c5e" dependencies = [ - "darling_core 0.20.1", - "darling_macro 0.20.1", + "darling_core 0.20.3", + "darling_macro 0.20.3", ] [[package]] @@ -1131,21 +1480,21 @@ dependencies = [ "ident_case", "proc-macro2", "quote", - "strsim", + "strsim 0.10.0", "syn 1.0.109", ] [[package]] name = "darling_core" -version = "0.20.1" +version = "0.20.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab8bfa2e259f8ee1ce5e97824a3c55ec4404a0d772ca7fa96bf19f0752a046eb" +checksum = "177e3443818124b357d8e76f53be906d60937f0d3a90773a664fa63fa253e621" dependencies = [ "fnv", "ident_case", "proc-macro2", "quote", - "syn 2.0.46", + "syn 2.0.48", ] [[package]] @@ -1161,33 +1510,33 @@ dependencies = [ [[package]] name = "darling_macro" -version = "0.20.1" +version = "0.20.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29a358ff9f12ec09c3e61fef9b5a9902623a695a46a917b07f269bff1445611a" +checksum = "836a9bbc7ad63342d6d6e7b815ccab164bc77a2d95d84bc3117a8c0d5c98e2d5" dependencies = [ - "darling_core 0.20.1", + "darling_core 0.20.3", "quote", - "syn 2.0.46", + "syn 2.0.48", ] [[package]] name = "dashmap" -version = "5.5.1" +version = "5.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "edd72493923899c6f10c641bdbdeddc7183d6396641d99c1a0d1597f37f92e28" +checksum = "978747c1d849a7d2ee5e8adc0159961c48fb7e5db2f06af6723b80123bb53856" dependencies = [ "cfg-if 1.0.0", - "hashbrown 0.14.0", + "hashbrown 0.14.3", "lock_api", "once_cell", - "parking_lot_core 0.9.8", + "parking_lot_core 0.9.9", ] [[package]] name = "data-encoding" -version = "2.4.0" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2e66c9d817f1720209181c316d28635c050fa304f9c79e47a520882661b7308" +checksum = "7e962a19be5cfc3f3bf6dd8f61eb50107f356ad6270fbb3ed41476571db78be5" [[package]] name = "der" @@ -1220,7 +1569,7 @@ dependencies = [ "asn1-rs 0.3.1", "displaydoc", "nom", - "num-bigint", + "num-bigint 0.4.4", "num-traits", "rusticata-macros", ] @@ -1234,11 +1583,20 @@ dependencies = [ "asn1-rs 0.5.2", "displaydoc", "nom", - "num-bigint", + "num-bigint 0.4.4", "num-traits", "rusticata-macros", ] +[[package]] +name = "deranged" +version = "0.3.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b42b6fa04a440b495c8b04d0e71b707c585f83cb9cb28cf8cd0d976c315e31b4" +dependencies = [ + "powerfmt", +] + [[package]] name = "derivative" version = "2.2.0" @@ -1281,6 +1639,12 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "diff" +version = "0.1.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56254986775e3233ffa9c4d7d3faaf6d36a2c09d30b20687e9f88bc8bafc16c8" + [[package]] name = "digest" version = "0.9.0" @@ -1302,6 +1666,27 @@ dependencies = [ "subtle", ] +[[package]] +name = "dirs-next" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b98cf8ebf19c3d1b223e151f99a4f9f0690dca41414773390fc824184ac833e1" +dependencies = [ + "cfg-if 1.0.0", + "dirs-sys-next", +] + +[[package]] +name = "dirs-sys-next" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ebda144c4fe02d1f7ea1a7d9641b6fc6b580adcfa024ae48797ecdeb6825b4d" +dependencies = [ + "libc", + "redox_users", + "winapi", +] + [[package]] name = "displaydoc" version = "0.2.4" @@ -1310,7 +1695,7 @@ checksum = "487585f4d0c6655fe74905e2504d8ad6908e4db67f744eb140876906c2f3175d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.46", + "syn 2.0.48", ] [[package]] @@ -1333,31 +1718,34 @@ dependencies = [ [[package]] name = "ecdsa" -version = "0.16.8" +version = "0.16.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4b1e0c257a9e9f25f90ff76d7a68360ed497ee519c8e428d1825ef0000799d4" +checksum = "ee27f32b5c5292967d2d4a9d7f1e0b0aed2c15daded5a60300e4abb9d8020bca" dependencies = [ "der 0.7.8", "digest 0.10.7", - "elliptic-curve 0.13.6", + "elliptic-curve 0.13.8", "rfc6979 0.4.0", - "signature 2.1.0", - "spki 0.7.2", + "signature 2.2.0", + "spki 0.7.3", ] [[package]] name = "ecies" -version = "0.2.3" +version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "374125c18bfe63716aae1b6b4ee0243e6264f1766056b5efdd4f257732aa3543" +checksum = "53f43496fc04523aa716c5dd76133cb6d7c81eb213375684d06a8b1683f8bc1e" dependencies = [ - "aes-gcm 0.10.2", - "getrandom 0.2.9", + "aes-gcm", + "getrandom 0.2.11", "hkdf", "libsecp256k1", - "rand 0.8.5", - "sha2 0.10.6", + "once_cell", + "parking_lot 0.12.1", + "rand_core 0.6.4", + "sha2 0.10.8", "typenum", + "wasm-bindgen", ] [[package]] @@ -1385,9 +1773,9 @@ dependencies = [ [[package]] name = "either" -version = "1.8.1" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fcaabb2fef8c910e7f4c7ce9f67a1283a1715879a7c230ca9d6d1ae31f16d91" +checksum = "a26ae43d7bcc3b814de94796a5e736d4029efb0ee900c12e2d54c993ad1a1e07" [[package]] name = "elliptic-curve" @@ -1413,16 +1801,17 @@ dependencies = [ [[package]] name = "elliptic-curve" -version = "0.13.6" +version = "0.13.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d97ca172ae9dc9f9b779a6e3a65d308f2af74e5b8c921299075bdb4a0370e914" +checksum = "b5e6043086bf7973472e0c7dff2142ea0b680d30e18d9cc40f267efbf222bd47" dependencies = [ "base16ct 0.2.0", - "crypto-bigint 0.5.3", + "crypto-bigint 0.5.5", "digest 0.10.7", "ff 0.13.0", "generic-array", "group 0.13.0", + "hkdf", "pem-rfc7468 0.7.0", "pkcs8 0.10.2", "rand_core 0.6.4", @@ -1431,11 +1820,20 @@ dependencies = [ "zeroize", ] +[[package]] +name = "ena" +version = "0.14.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c533630cf40e9caa44bd91aadc88a75d75a4c3a12b4cfde353cbed41daa1e1f1" +dependencies = [ + "log", +] + [[package]] name = "encoding_rs" -version = "0.8.32" +version = "0.8.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "071a31f4ee85403370b58aca746f01041ede6f0da2730960ad001edc2b71b394" +checksum = "7268b386296a025e474d5140678f75d6de9493ae55a5d709eeb9dd08149945e1" dependencies = [ "cfg-if 1.0.0", ] @@ -1462,9 +1860,9 @@ dependencies = [ [[package]] name = "enumset" -version = "1.1.2" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e875f1719c16de097dee81ed675e2d9bb63096823ed3f0ca827b7dea3028bbbb" +checksum = "226c0da7462c13fb57e5cc9e0dc8f0635e7d27f276a3a7fd30054647f669007d" dependencies = [ "enumset_derive", ] @@ -1475,10 +1873,10 @@ version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e08b6c6ab82d70f08844964ba10c7babb716de2ecaeab9be5717918a5177d3af" dependencies = [ - "darling 0.20.1", + "darling 0.20.3", "proc-macro2", "quote", - "syn 2.0.46", + "syn 2.0.48", ] [[package]] @@ -1489,23 +1887,12 @@ checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" [[package]] name = "errno" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4bcfec3a70f97c962c307b2d2c56e358cf1d00b558d74262b5f929ee8cc7e73a" -dependencies = [ - "errno-dragonfly", - "libc", - "windows-sys 0.48.0", -] - -[[package]] -name = "errno-dragonfly" -version = "0.1.2" +version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa68f1b12764fab894d2755d2518754e71b4fd80ecfb822714a1206c2aab39bf" +checksum = "a258e46cdc063eb8519c00b9fc845fc47bcfca4130e2f08e88665ceda8474245" dependencies = [ - "cc", "libc", + "windows-sys 0.52.0", ] [[package]] @@ -1541,6 +1928,22 @@ version = "2.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0" +[[package]] +name = "exitcode" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "de853764b47027c2e862a995c34978ffa63c1501f2e15f987ba11bd4f9bba193" + +[[package]] +name = "eyre" +version = "0.6.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6267a1fa6f59179ea4afc8e50fd8612a3cc60bc858f786ff877a4a8cb042799" +dependencies = [ + "indenter", + "once_cell", +] + [[package]] name = "fallible-iterator" version = "0.2.0" @@ -1569,15 +1972,34 @@ version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ded41244b729663b1e574f1b4fb731469f69f79c17667b5d776b16cda0479449" dependencies = [ + "bitvec", + "byteorder", + "ff_derive", "rand_core 0.6.4", "subtle", ] +[[package]] +name = "ff_derive" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e9f54704be45ed286151c5e11531316eaef5b8f5af7d597b806fdb8af108d84a" +dependencies = [ + "addchain", + "cfg-if 1.0.0", + "num-bigint 0.3.3", + "num-integer", + "num-traits", + "proc-macro2", + "quote", + "syn 1.0.109", +] + [[package]] name = "fiat-crypto" -version = "0.1.20" +version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e825f6987101665dea6ec934c09ec6d721de7bc1bf92248e1d5810c8cd636b77" +checksum = "27573eac26f4dd11e2b1916c3fe1baa56407c83c71a773a8ba17ec0bca03b6b7" [[package]] name = "fixed-hash" @@ -1599,12 +2021,12 @@ checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80" [[package]] name = "flate2" -version = "1.0.26" +version = "1.0.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b9429470923de8e8cbd4d2dc513535400b4b3fef0319fb5c4e1f520a7bef743" +checksum = "46303f565772937ffe1d394a4fac6f411c6013172fadde9dcdb1e147a086940e" dependencies = [ "crc32fast", - "miniz_oxide 0.7.1", + "miniz_oxide", ] [[package]] @@ -1628,11 +2050,26 @@ version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" +[[package]] +name = "foreign-types" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" +dependencies = [ + "foreign-types-shared", +] + +[[package]] +name = "foreign-types-shared" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" + [[package]] name = "form_urlencoded" -version = "1.2.0" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a62bc1cf6f830c2ec14a513a9fb124d0a213a629668a4186f329db21fe045652" +checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456" dependencies = [ "percent-encoding", ] @@ -1655,9 +2092,9 @@ checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c" [[package]] name = "futures" -version = "0.3.28" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23342abe12aba583913b2e62f22225ff9c950774065e4bfb61a19cd9770fec40" +checksum = "645c6916888f6cb6350d2550b80fb63e734897a8498abe35cfb732b6487804b0" dependencies = [ "futures-channel", "futures-core", @@ -1670,9 +2107,9 @@ dependencies = [ [[package]] name = "futures-channel" -version = "0.3.28" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "955518d47e09b25bbebc7a18df10b81f0c766eaf4c4f1cccef2fca5f2a4fb5f2" +checksum = "eac8f7d7865dcb88bd4373ab671c8cf4508703796caa2b1985a9ca867b3fcb78" dependencies = [ "futures-core", "futures-sink", @@ -1680,15 +2117,15 @@ dependencies = [ [[package]] name = "futures-core" -version = "0.3.28" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4bca583b7e26f571124fe5b7561d49cb2868d79116cfa0eefce955557c6fee8c" +checksum = "dfc6580bb841c5a68e9ef15c77ccc837b40a7504914d52e47b8b0e9bbda25a1d" [[package]] name = "futures-executor" -version = "0.3.28" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ccecee823288125bd88b4d7f565c9e58e41858e47ab72e8ea2d64e93624386e0" +checksum = "a576fc72ae164fca6b9db127eaa9a9dda0d61316034f33a0a0d4eda41f02b01d" dependencies = [ "futures-core", "futures-task", @@ -1697,32 +2134,32 @@ dependencies = [ [[package]] name = "futures-io" -version = "0.3.28" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fff74096e71ed47f8e023204cfd0aa1289cd54ae5430a9523be060cdb849964" +checksum = "a44623e20b9681a318efdd71c299b6b222ed6f231972bfe2f224ebad6311f0c1" [[package]] name = "futures-macro" -version = "0.3.28" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89ca545a94061b6365f2c7355b4b32bd20df3ff95f02da9329b34ccc3bd6ee72" +checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" dependencies = [ "proc-macro2", "quote", - "syn 2.0.46", + "syn 2.0.48", ] [[package]] name = "futures-sink" -version = "0.3.28" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f43be4fe21a13b9781a69afa4985b0f6ee0e1afab2c6f454a8cf30e2b2237b6e" +checksum = "9fb8e00e87438d937621c1c6269e53f536c14d3fbd6a042bb24879e57d474fb5" [[package]] name = "futures-task" -version = "0.3.28" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76d3d132be6c0e6aa1534069c705a74a5997a356c0dc2f86a47765e5617c5b65" +checksum = "38d84fa142264698cdce1a9f9172cf383a0c82de1bddcf3092901442c4097004" [[package]] name = "futures-timer" @@ -1732,9 +2169,9 @@ checksum = "e64b03909df88034c26dc1547e8970b91f98bdb65165d6a4e9110d94263dbb2c" [[package]] name = "futures-util" -version = "0.3.28" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26b01e40b772d54cf6c6d721c1d1abd0647a0106a12ecaa1c186273392a69533" +checksum = "3d6401deb83407ab3da39eba7e33987a73c3df0c82b4bb5813ee871c19c41d48" dependencies = [ "futures-channel", "futures-core", @@ -1781,9 +2218,9 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.2.9" +version = "0.2.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c85e1d9ab2eadba7e5040d4e09cbd6d072b76a557ad64e797c2cb9d4da21d7e4" +checksum = "fe9006bed769170c11f845cf00c7c1e9092aeb3f268e007c3e760ac68008070f" dependencies = [ "cfg-if 1.0.0", "js-sys", @@ -1792,16 +2229,6 @@ dependencies = [ "wasm-bindgen", ] -[[package]] -name = "ghash" -version = "0.4.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1583cc1656d7839fd3732b80cf4f38850336cdb9b8ded1cd399ca62958de3c99" -dependencies = [ - "opaque-debug", - "polyval 0.5.3", -] - [[package]] name = "ghash" version = "0.5.0" @@ -1809,7 +2236,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d930750de5717d2dd0b8c0d42c076c0e884c81a73e6cab859bbd2339c71e3e40" dependencies = [ "opaque-debug", - "polyval 0.6.0", + "polyval", ] [[package]] @@ -1825,9 +2252,15 @@ dependencies = [ [[package]] name = "gimli" -version = "0.27.2" +version = "0.28.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4271d37baee1b8c7e4b708028c57d816cf9d2434acb33a549475f78c181f6253" + +[[package]] +name = "glob" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad0a93d233ebf96623465aad4046a8d3aa4da22d4f4beba5388838c8a434bbb4" +checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b" [[package]] name = "group" @@ -1847,15 +2280,17 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f0f9ef7462f7c099f518d754361858f86d8a07af53ba9af0fe635bbccb151a63" dependencies = [ "ff 0.13.0", + "rand 0.8.5", "rand_core 0.6.4", + "rand_xorshift", "subtle", ] [[package]] name = "h2" -version = "0.3.19" +version = "0.3.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d357c7ae988e7d2182f7d7871d0b963962420b0678b0997ce7de72001aeab782" +checksum = "4d6250322ef6e60f93f9a2162799302cd6f68f79f6e5d85c8c16f14d1d958178" dependencies = [ "bytes", "fnv", @@ -1863,13 +2298,50 @@ dependencies = [ "futures-sink", "futures-util", "http", - "indexmap 1.9.3", + "indexmap 2.1.0", "slab", "tokio", "tokio-util", "tracing", ] +[[package]] +name = "halo2curves" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d0263c2933ee18bf416552719c5621f677f87acca8d50afe4ee74c81bb8ecca" +dependencies = [ + "blake2b_simd", + "ff 0.13.0", + "group 0.13.0", + "lazy_static", + "num-bigint 0.4.4", + "num-traits", + "pairing", + "pasta_curves", + "paste", + "rand 0.8.5", + "rand_core 0.6.4", + "serde", + "serde_arrays", + "static_assertions", + "subtle", +] + +[[package]] +name = "handlebars" +version = "4.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "faa67bab9ff362228eb3d00bd024a4965d8231bbb7921167f0cfa66c6626b225" +dependencies = [ + "log", + "pest", + "pest_derive", + "serde", + "serde_json", + "thiserror", +] + [[package]] name = "hashbrown" version = "0.12.3" @@ -1881,18 +2353,17 @@ dependencies = [ [[package]] name = "hashbrown" -version = "0.14.0" +version = "0.14.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c6201b9ff9fd90a5a3bac2e56a830d0caa509576f0e503818ee82c181b3437a" +checksum = "290f1a1d9242c78d09ce40a5e87e7554ee637af1351968159f4952f028f75604" [[package]] name = "headers" -version = "0.3.8" +version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3e372db8e5c0d213e0cd0b9be18be2aca3d44cf2fe30a9d46a65581cd454584" +checksum = "06683b93020a07e3dbcf5f8c0f6d40080d725bea7936fc01ad345c01b97dc270" dependencies = [ - "base64 0.13.1", - "bitflags 1.3.2", + "base64 0.21.5", "bytes", "headers-core", "http", @@ -1927,30 +2398,24 @@ dependencies = [ [[package]] name = "hermit-abi" -version = "0.2.6" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee512640fe35acbfb4bb779db6f0d80704c2cacfa2e39b601ef3e3f47d1ae4c7" -dependencies = [ - "libc", -] - -[[package]] -name = "hermit-abi" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fed44880c466736ef9a5c5b5facefb5ed0785676d0c02d612db14e54f0d84286" +checksum = "d77f7ec81a6d05a3abb01ab6eb7590f6083d08449fe5a1c8b1e620283546ccb7" [[package]] name = "hex" version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" +dependencies = [ + "serde", +] [[package]] name = "hkdf" -version = "0.12.3" +version = "0.12.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "791a029f6b9fc27657f6f188ec6e5e43f6911f6f878e0dc5501396e09809d437" +checksum = "7b5f8eb2ad728638ea2c7d47a21db23b7b58a72ed6a38256b8a1849f15fbbdf7" dependencies = [ "hmac 0.12.1", ] @@ -1961,17 +2426,7 @@ version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "126888268dcc288495a26bf004b38c5fdbb31682f992c84ceb046a1f0fe38840" dependencies = [ - "crypto-mac 0.8.0", - "digest 0.9.0", -] - -[[package]] -name = "hmac" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a2a2320eb7ec0ebe8da8f744d7812d9fc4cb4d09344ac01898dbcb6a20ae69b" -dependencies = [ - "crypto-mac 0.11.1", + "crypto-mac", "digest 0.9.0", ] @@ -1997,18 +2452,18 @@ dependencies = [ [[package]] name = "home" -version = "0.5.5" +version = "0.5.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5444c27eef6923071f7ebcc33e3444508466a76f7a2b93da00ed6e19f30c1ddb" +checksum = "e3d1354bf6b7235cb4a0576c2619fd4ed18183f689b12b006a0ee7329eeff9a5" dependencies = [ - "windows-sys 0.48.0", + "windows-sys 0.52.0", ] [[package]] name = "http" -version = "0.2.9" +version = "0.2.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd6effc99afb63425aff9b05836f029929e345a6148a14b7ecd5ab67af944482" +checksum = "8947b1a6fad4393052c7ba1f4cd97bed3e953a95c79c92ad9b051a04611d9fbb" dependencies = [ "bytes", "fnv", @@ -2017,9 +2472,9 @@ dependencies = [ [[package]] name = "http-body" -version = "0.4.5" +version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d5f38f16d184e36f2408a55281cd658ecbd3ca05cce6d6510a176eca393e26d1" +checksum = "7ceab25649e9960c0311ea418d17bee82c0dcec1bd053b5f9a66e265a693bed2" dependencies = [ "bytes", "http", @@ -2028,9 +2483,9 @@ dependencies = [ [[package]] name = "http-range-header" -version = "0.3.0" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0bfe8eed0a9285ef776bb792479ea3834e8b94e13d615c2f66d03dd50a435a29" +checksum = "add0ab9360ddbd88cfeb3bd9574a1d85cfdfa14db10b3e21d3700dbc4328758f" [[package]] name = "httparse" @@ -2040,15 +2495,15 @@ checksum = "d897f394bad6a705d5f4104762e116a75639e470d80901eed05a860a95cb1904" [[package]] name = "httpdate" -version = "1.0.2" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4a1e36c821dbe04574f602848a19f742f4fb3c98d40449f11bcad18d6b17421" +checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" [[package]] name = "hyper" -version = "0.14.27" +version = "0.14.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ffb1cfd654a8219eaef89881fdb3bb3b1cdc5fa75ded05d6933b2b382e395468" +checksum = "bf96e135eb83a2a8ddf766e426a841d8ddd7449d5f00d34ea02b41d2f19eef80" dependencies = [ "bytes", "futures-channel", @@ -2061,7 +2516,7 @@ dependencies = [ "httpdate", "itoa", "pin-project-lite", - "socket2 0.4.9", + "socket2 0.5.5", "tokio", "tower-service", "tracing", @@ -2076,36 +2531,50 @@ checksum = "1788965e61b367cd03a62950836d5cd41560c3577d90e40e0819373194d1661c" dependencies = [ "http", "hyper", - "rustls 0.20.8", + "rustls 0.20.9", "tokio", "tokio-rustls 0.23.4", ] [[package]] name = "hyper-rustls" -version = "0.24.0" +version = "0.24.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0646026eb1b3eea4cd9ba47912ea5ce9cc07713d105b1a14698f4e6433d348b7" +checksum = "ec3efd23720e2049821a693cbc7e65ea87c72f1c58ff2f9522ff332b1491e590" dependencies = [ + "futures-util", "http", "hyper", - "rustls 0.21.9", + "rustls 0.21.10", + "tokio", + "tokio-rustls 0.24.1", +] + +[[package]] +name = "hyper-tls" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d6183ddfa99b85da61a140bea0efc93fdf56ceaa041b37d553518030827f9905" +dependencies = [ + "bytes", + "hyper", + "native-tls", "tokio", - "tokio-rustls 0.24.0", + "tokio-native-tls", ] [[package]] name = "iana-time-zone" -version = "0.1.56" +version = "0.1.59" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0722cd7114b7de04316e7ea5456a0bbb20e4adb46fd27a3697adb812cff0f37c" +checksum = "b6a67363e2aa4443928ce15e57ebae94fd8949958fd1223c4cfc0cd473ad7539" dependencies = [ "android_system_properties", "core-foundation-sys", "iana-time-zone-haiku", "js-sys", "wasm-bindgen", - "windows", + "windows-core", ] [[package]] @@ -2125,9 +2594,9 @@ checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" [[package]] name = "idna" -version = "0.4.0" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d20d6b07bfbc108882d88ed8e37d39636dcc260e15e30c45e6ba089610b917c" +checksum = "634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6" dependencies = [ "unicode-bidi", "unicode-normalization", @@ -2171,24 +2640,30 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "indenter" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce23b50ad8242c51a442f3ff322d56b02f08852c77e4c0b4d3fd684abc89c683" + [[package]] name = "indexmap" version = "1.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" dependencies = [ - "autocfg", + "autocfg 1.1.0", "hashbrown 0.12.3", ] [[package]] name = "indexmap" -version = "2.0.1" +version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad227c3af19d4914570ad36d30409928b75967c298feb9ea1969db3a610bb14e" +checksum = "d530e1a18b1cb4c484e6e34556a0d948706958449fca0cab753d649f2bce3d1f" dependencies = [ "equivalent", - "hashbrown 0.14.0", + "hashbrown 0.14.3", ] [[package]] @@ -2197,6 +2672,7 @@ version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a0c10553d664a4d0bcff9f4215d0aac67a639cc68ef660840afe309b807bc9f5" dependencies = [ + "block-padding 0.3.3", "generic-array", ] @@ -2220,69 +2696,66 @@ checksum = "8bb03732005da905c88227371639bf1ad885cc712789c011c31c5fb3ab3ccf02" [[package]] name = "interceptor" -version = "0.8.2" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e8a11ae2da61704edada656798b61c94b35ecac2c58eb955156987d5e6be90b" +checksum = "5c142385498b53584546abbfa50188b2677af8e4f879da1ee5d905cb7de5b97a" dependencies = [ "async-trait", "bytes", "log", "rand 0.8.5", - "rtcp 0.7.2", - "rtp 0.6.8", + "rtcp 0.9.0", + "rtp 0.8.0", "thiserror", "tokio", "waitgroup", - "webrtc-srtp 0.9.1", - "webrtc-util", + "webrtc-srtp 0.10.0", + "webrtc-util 0.7.0", ] [[package]] name = "interceptor" -version = "0.9.0" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c142385498b53584546abbfa50188b2677af8e4f879da1ee5d905cb7de5b97a" +checksum = "5927883184e6a819b22d5e4f5f7bc7ca134fde9b2026fbddd8d95249746ba21e" dependencies = [ "async-trait", "bytes", "log", "rand 0.8.5", - "rtcp 0.9.0", - "rtp 0.8.0", + "rtcp 0.10.0", + "rtp 0.9.0", "thiserror", "tokio", "waitgroup", - "webrtc-srtp 0.10.0", - "webrtc-util", + "webrtc-srtp 0.11.0", + "webrtc-util 0.8.0", ] [[package]] -name = "io-lifetimes" -version = "1.0.11" +name = "ipnet" +version = "2.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eae7b9aee968036d54dce06cebaefd919e4472e753296daccd6d344e3e2df0c2" -dependencies = [ - "hermit-abi 0.3.1", - "libc", - "windows-sys 0.48.0", -] +checksum = "8f518f335dce6725a761382244631d86cf0ccb2863413590b31338feb467f9c3" [[package]] -name = "ipnet" -version = "2.7.2" +name = "is-terminal" +version = "0.4.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12b6ee2129af8d4fb011108c73d99a1b83a85977f23b82460c0ae2e25bb4b57f" +checksum = "0bad00257d07be169d870ab665980b06cdb366d792ad690bf2e76876dc503455" +dependencies = [ + "hermit-abi 0.3.3", + "rustix", + "windows-sys 0.52.0", +] [[package]] -name = "is-terminal" -version = "0.4.7" +name = "itertools" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "adcf93614601c8129ddf72e2d5633df827ba6551541c6d8c59520a371475be1f" +checksum = "284f18f85651fe11e8a991b2adb42cb078325c996ed026d994719efcfca1d54b" dependencies = [ - "hermit-abi 0.3.1", - "io-lifetimes", - "rustix 0.37.19", - "windows-sys 0.48.0", + "either", ] [[package]] @@ -2294,21 +2767,36 @@ dependencies = [ "either", ] +[[package]] +name = "itertools" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1c173a5686ce8bfa551b3563d0c2170bf24ca44da99c7ca4bfdab5418c3fe57" +dependencies = [ + "either", +] + [[package]] name = "itoa" -version = "1.0.6" +version = "1.0.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "453ad9f582a441959e5f0d088b02ce04cfe8d51a8eaf077f12ac6d3e94164ca6" +checksum = "b1a46d1a171d865aa5f83f92695765caa047a9b4cbae2cbf37dbd613a793fd4c" [[package]] name = "js-sys" -version = "0.3.64" +version = "0.3.66" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c5f195fe497f702db0f318b07fdd68edb16955aed830df8363d837542f8f935a" +checksum = "cee9c64da59eae3b50095c18d3e74f8b73c0b86d2792824ff01bbce68ba229ca" dependencies = [ "wasm-bindgen", ] +[[package]] +name = "json" +version = "0.12.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "078e285eafdfb6c4b434e0d31e8cfcb5115b651496faca5749b88fafd4f23bfd" + [[package]] name = "jsonrpc-core" version = "18.0.0" @@ -2324,11 +2812,54 @@ dependencies = [ "serde_json", ] +[[package]] +name = "keccak" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f6d5ed8676d904364de097082f4e7d240b571b67989ced0240f08b7f966f940" +dependencies = [ + "cpufeatures", +] + +[[package]] +name = "lalrpop" +version = "0.19.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0a1cbf952127589f2851ab2046af368fd20645491bb4b376f04b7f94d7a9837b" +dependencies = [ + "ascii-canvas", + "bit-set", + "diff", + "ena", + "is-terminal", + "itertools 0.10.5", + "lalrpop-util", + "petgraph", + "regex", + "regex-syntax 0.6.29", + "string_cache", + "term", + "tiny-keccak", + "unicode-xid", +] + +[[package]] +name = "lalrpop-util" +version = "0.19.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3c48237b9604c5a4702de6b824e02006c3214327564636aef27c1028a8fa0ed" +dependencies = [ + "regex", +] + [[package]] name = "lazy_static" version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" +dependencies = [ + "spin 0.5.2", +] [[package]] name = "leb128" @@ -2338,15 +2869,26 @@ checksum = "884e2677b40cc8c339eaefcb701c32ef1fd2493d71118dc0ca4b6a736c93bd67" [[package]] name = "libc" -version = "0.2.151" +version = "0.2.152" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "302d7ab3130588088d277783b1e2d2e10c9e9e4a16dd9050e6ec93fb3e7048f4" +checksum = "13e3bf6590cbc649f4d1a3eefc9d5d6eb746f5200ffb04e5e142700b8faa56e7" [[package]] name = "libm" -version = "0.1.4" +version = "0.2.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fc7aa29613bd6a620df431842069224d8bc9011086b1db4c0e0cd47fa03ec9a" +checksum = "4ec2a862134d2a7d32d7983ddcdd1c4923530833c9f2ea1a44fc5fa473989058" + +[[package]] +name = "libredox" +version = "0.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85c833ca1e66078851dba29046874e38f08b2c883700aa29a03ddd3b23814ee8" +dependencies = [ + "bitflags 2.4.1", + "libc", + "redox_syscall 0.4.1", +] [[package]] name = "libsecp256k1" @@ -2398,31 +2940,31 @@ dependencies = [ [[package]] name = "linux-raw-sys" -version = "0.3.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef53942eb7bf7ff43a617b3e2c1c4a5ecf5944a7c1bc12d7ee39bbb15e5c1519" - -[[package]] -name = "linux-raw-sys" -version = "0.4.10" +version = "0.4.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da2479e8c062e40bf0066ffa0bc823de0a9368974af99c9f6df941d2c231e03f" +checksum = "c4cd1a83af159aa67994778be9070f0ae1bd732942279cabb14f86f986a21456" [[package]] name = "lock_api" -version = "0.4.10" +version = "0.4.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1cc9717a20b1bb222f333e6a92fd32f7d8a18ddc5a3191a11af45dcbf4dcd16" +checksum = "3c168f8615b12bc01f9c17e2eb0cc07dcae1940121185446edc3744920e8ef45" dependencies = [ - "autocfg", + "autocfg 1.1.0", "scopeguard", ] [[package]] name = "log" -version = "0.4.18" +version = "0.4.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f" + +[[package]] +name = "lz_fnv" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "518ef76f2f87365916b142844c16d8fefd85039bc5699050210a7778ee1cd1de" +checksum = "9bbb1b0dbe51f0976eaa466f4e0bdc11856fe8008aee26f30ccec8de15b28e38" [[package]] name = "mach" @@ -2435,24 +2977,25 @@ dependencies = [ [[package]] name = "matchit" -version = "0.7.0" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b87248edafb776e59e6ee64a79086f65890d3510f2c656c000bf2a7e8a0aea40" +checksum = "0e7465ac9959cc2b1404e8e2367b43684a6d13790fe23056cc8c6c5a6b7bcb94" [[package]] name = "md-5" -version = "0.10.5" +version = "0.10.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6365506850d44bff6e2fbcb5176cf63650e48bd45ef2fe2665ae1570e0f4b9ca" +checksum = "d89e7ee0cfbedfc4da3340218492196241d89eefb6dab27de5df917a6d2e78cf" dependencies = [ + "cfg-if 1.0.0", "digest 0.10.7", ] [[package]] name = "memchr" -version = "2.5.0" +version = "2.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d" +checksum = "523dc4f511e55ab87b694dc30d0f820d60906ef06413f93d4d7a1385599cc149" [[package]] name = "memmap2" @@ -2463,13 +3006,31 @@ dependencies = [ "libc", ] +[[package]] +name = "memmap2" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d28bba84adfe6646737845bc5ebbfa2c08424eb1c37e94a1fd2a82adb56a872" +dependencies = [ + "libc", +] + [[package]] name = "memoffset" version = "0.6.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5aa361d4faea93603064a027415f07bd8e1d5c88c9fbf68bf56a285428fd79ce" dependencies = [ - "autocfg", + "autocfg 1.1.0", +] + +[[package]] +name = "memoffset" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5de893c32cde5f383baa4c04c5d6dbdd735cfd4a794b0debdb2bb1b421da5ff4" +dependencies = [ + "autocfg 1.1.0", ] [[package]] @@ -2478,7 +3039,16 @@ version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d61c719bcfbcf5d62b3a09efa6088de8c54bc0bfcd3ea7ae39fcc186108b8de1" dependencies = [ - "autocfg", + "autocfg 1.1.0", +] + +[[package]] +name = "memoffset" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a634b1c61a95585bd15607c6ab0c4e5b226e695ff2800ba0cdccddf208c406c" +dependencies = [ + "autocfg 1.1.0", ] [[package]] @@ -2493,15 +3063,6 @@ version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" -[[package]] -name = "miniz_oxide" -version = "0.6.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b275950c28b37e794e8c55d88aeb5e139d0ce23fdbbeda68f8d7174abdf9e8fa" -dependencies = [ - "adler", -] - [[package]] name = "miniz_oxide" version = "0.7.1" @@ -2534,6 +3095,49 @@ version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e5ce46fe64a9d73be07dcbe690a38ce1b293be448fd8ce1e6c1b8062c9f72c6a" +[[package]] +name = "native-tls" +version = "0.2.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07226173c32f2926027b63cce4bcd8076c3552846cbe7925f3aaffeac0a3b92e" +dependencies = [ + "lazy_static", + "libc", + "log", + "openssl", + "openssl-probe", + "openssl-sys", + "schannel", + "security-framework", + "security-framework-sys", + "tempfile", +] + +[[package]] +name = "neptune" +version = "13.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06626c9ac04c894e9a23d061ba1309f28506cdc5fe64156d28a15fb57fc8e438" +dependencies = [ + "bellpepper", + "bellpepper-core", + "blake2s_simd", + "blstrs", + "byteorder", + "ff 0.13.0", + "generic-array", + "log", + "pasta_curves", + "serde", + "trait-set", +] + +[[package]] +name = "new_debug_unreachable" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e4a24736216ec316047a1fc4252e27dabb04218aa4a3f37c6e7ddbf1f9782b54" + [[package]] name = "nix" version = "0.24.3" @@ -2546,6 +3150,19 @@ dependencies = [ "memoffset 0.6.5", ] +[[package]] +name = "nix" +version = "0.26.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "598beaf3cc6fdd9a5dfb1630c2800c7acd31df7aaf0f565796fba2b53ca1af1b" +dependencies = [ + "bitflags 1.3.2", + "cfg-if 1.0.0", + "libc", + "memoffset 0.7.1", + "pin-utils", +] + [[package]] name = "nom" version = "7.1.3" @@ -2556,6 +3173,39 @@ dependencies = [ "minimal-lexical", ] +[[package]] +name = "nova-snark" +version = "0.32.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "364946cc19869525612e9cc259fcd9e558228dc073f14d421c6012cd659b84bf" +dependencies = [ + "bellpepper", + "bellpepper-core", + "bincode", + "bitvec", + "byteorder", + "digest 0.10.7", + "ff 0.13.0", + "generic-array", + "getrandom 0.2.11", + "group 0.13.0", + "halo2curves", + "neptune", + "num-bigint 0.4.4", + "num-integer", + "num-traits", + "once_cell", + "pasta-msm", + "pasta_curves", + "rand_chacha 0.3.1", + "rand_core 0.6.4", + "rayon", + "serde", + "sha3", + "subtle", + "thiserror", +] + [[package]] name = "nu-ansi-term" version = "0.46.0" @@ -2568,13 +3218,44 @@ dependencies = [ [[package]] name = "num-bigint" -version = "0.4.3" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f6f7833f2cbf2360a6cfd58cd41a53aa7a90bd4c202f5b1c7dd2ed73c57b2c3" +dependencies = [ + "autocfg 1.1.0", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-bigint" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "608e7659b5c3d7cba262d894801b9ec9d00de989e8a82bd4bef91d08da45cdc0" +dependencies = [ + "autocfg 1.1.0", + "num-integer", + "num-traits", + "rand 0.8.5", + "serde", +] + +[[package]] +name = "num-bigint-dig" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f93ab6289c7b344a8a9f60f88d80aa20032336fe78da341afc91c8a2341fc75f" +checksum = "5d51546d704f52ef14b3c962b5776e53d5b862e5790e40a350d366c209bd7f7a" dependencies = [ - "autocfg", + "autocfg 0.1.8", + "byteorder", + "lazy_static", + "libm", "num-integer", + "num-iter", "num-traits", + "rand 0.7.3", + "serde", + "smallvec", ] [[package]] @@ -2583,34 +3264,45 @@ version = "0.1.45" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9" dependencies = [ - "autocfg", + "autocfg 1.1.0", + "num-traits", +] + +[[package]] +name = "num-iter" +version = "0.1.43" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d03e6c028c5dc5cac6e2dec0efda81fc887605bb3d884578bb6d6bf7514e252" +dependencies = [ + "autocfg 1.1.0", + "num-integer", "num-traits", ] [[package]] name = "num-traits" -version = "0.2.15" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "578ede34cf02f8924ab9447f50c28075b4d3e5b269972345e7e0372b38c6cdcd" +checksum = "39e3200413f237f41ab11ad6d161bc7239c84dcb631773ccd7de3dfe4b5c267c" dependencies = [ - "autocfg", + "autocfg 1.1.0", ] [[package]] name = "num_cpus" -version = "1.15.0" +version = "1.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fac9e2da13b5eb447a6ce3d392f23a29d8694bff781bf03a16cd9ac8697593b" +checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" dependencies = [ - "hermit-abi 0.2.6", + "hermit-abi 0.3.3", "libc", ] [[package]] name = "object" -version = "0.30.3" +version = "0.32.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea86265d3d3dcb6a27fc51bd29a4bf387fae9d2986b823079d4986af253eb439" +checksum = "a6a622008b6e321afc04970976f62ee297fdbaa6f95318ca343e3eebb9648441" dependencies = [ "memchr", ] @@ -2635,9 +3327,9 @@ dependencies = [ [[package]] name = "once_cell" -version = "1.18.0" +version = "1.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d" +checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" [[package]] name = "opaque-debug" @@ -2646,12 +3338,56 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "624a8340c38c1b80fd549087862da4ba43e08858af025b236e509b6649fc13d5" [[package]] -name = "opentelemetry" -version = "0.18.0" +name = "openssl" +version = "0.10.62" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "69d6c3d7288a106c0a363e4b0e8d308058d56902adefb16f4936f417ffef086e" +checksum = "8cde4d2d9200ad5909f8dac647e29482e07c3a35de8a13fce7c9c7747ad9f671" dependencies = [ - "opentelemetry_api", + "bitflags 2.4.1", + "cfg-if 1.0.0", + "foreign-types", + "libc", + "once_cell", + "openssl-macros", + "openssl-sys", +] + +[[package]] +name = "openssl-macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.48", +] + +[[package]] +name = "openssl-probe" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" + +[[package]] +name = "openssl-sys" +version = "0.9.98" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1665caf8ab2dc9aef43d1c0023bd904633a6a05cb30b0ad59bec2ae986e57a7" +dependencies = [ + "cc", + "libc", + "pkg-config", + "vcpkg", +] + +[[package]] +name = "opentelemetry" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69d6c3d7288a106c0a363e4b0e8d308058d56902adefb16f4936f417ffef086e" +dependencies = [ + "opentelemetry_api", "opentelemetry_sdk", ] @@ -2740,6 +3476,12 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" +[[package]] +name = "owo-colors" +version = "3.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1b04fb49957986fdce4d6ee7a65027d55d4b6d2265e5848bbb507b58ccfdb6f" + [[package]] name = "p256" version = "0.11.1" @@ -2748,7 +3490,7 @@ checksum = "51f44edd08f51e2ade572f141051021c5af22677e42b7dd28a88155151c33594" dependencies = [ "ecdsa 0.14.8", "elliptic-curve 0.12.3", - "sha2 0.10.6", + "sha2 0.10.8", ] [[package]] @@ -2757,10 +3499,10 @@ version = "0.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c9863ad85fa8f4460f9c48cb909d38a0d689dba1f6f6988a5e3e0d31071bcd4b" dependencies = [ - "ecdsa 0.16.8", - "elliptic-curve 0.13.6", + "ecdsa 0.16.9", + "elliptic-curve 0.13.8", "primeorder", - "sha2 0.10.6", + "sha2 0.10.8", ] [[package]] @@ -2771,24 +3513,35 @@ checksum = "dfc8c5bf642dde52bb9e87c0ecd8ca5a76faac2eeed98dedb7c717997e1080aa" dependencies = [ "ecdsa 0.14.8", "elliptic-curve 0.12.3", - "sha2 0.10.6", + "sha2 0.10.8", ] [[package]] -name = "packed_simd_2" -version = "0.3.8" +name = "p384" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1914cd452d8fccd6f9db48147b29fd4ae05bea9dc5d9ad578509f72415de282" +checksum = "70786f51bcc69f6a4c0360e063a4cac5419ef7c5cd5b3c99ad70f3be5ba79209" dependencies = [ - "cfg-if 1.0.0", - "libm", + "ecdsa 0.16.9", + "elliptic-curve 0.13.8", + "primeorder", + "sha2 0.10.8", +] + +[[package]] +name = "pairing" +version = "0.23.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81fec4625e73cf41ef4bb6846cafa6d44736525f442ba45e407c4a000a13996f" +dependencies = [ + "group 0.13.0", ] [[package]] name = "parity-scale-codec" -version = "3.6.4" +version = "3.6.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd8e946cc0cc711189c0b0249fb8b599cbeeab9784d83c415719368bb8d4ac64" +checksum = "881331e34fa842a2fb61cc2db9643a8fedc615e47cfcc52597d1af0db9a7e8fe" dependencies = [ "arrayvec", "bitvec", @@ -2800,9 +3553,9 @@ dependencies = [ [[package]] name = "parity-scale-codec-derive" -version = "3.6.4" +version = "3.6.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a296c3079b5fefbc499e1de58dc26c09b1b9a5952d26694ee89f04a43ebbb3e" +checksum = "be30eaf4b0a9fba5336683b38de57bb86d179a35862ba6bfcf57625d006bde5b" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -2828,7 +3581,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f" dependencies = [ "lock_api", - "parking_lot_core 0.9.8", + "parking_lot_core 0.9.9", ] [[package]] @@ -2847,17 +3600,69 @@ dependencies = [ [[package]] name = "parking_lot_core" -version = "0.9.8" +version = "0.9.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93f00c865fe7cabf650081affecd3871070f26767e7b2070a3ffae14c654b447" +checksum = "4c42a9226546d68acdd9c0a280d17ce19bfe27a46bf68784e4066115788d008e" dependencies = [ "cfg-if 1.0.0", "libc", - "redox_syscall 0.3.5", + "redox_syscall 0.4.1", "smallvec", - "windows-targets", + "windows-targets 0.48.5", +] + +[[package]] +name = "parser" +version = "2.1.7" +source = "git+https://github.com/RingsNetwork/circom?rev=ea8c4cd987f035ef4f08e17269d9b68cb5ab9122#ea8c4cd987f035ef4f08e17269d9b68cb5ab9122" +dependencies = [ + "lalrpop", + "lalrpop-util", + "num-bigint-dig", + "num-traits", + "program_structure", + "regex", + "rustc-hex", + "serde", + "serde_derive", +] + +[[package]] +name = "pasta-msm" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e85d75eba3e7e9ee3bd11342b669185e194dadda3557934bc1000d9b87159d3" +dependencies = [ + "cc", + "pasta_curves", + "semolina", + "sppark", + "which", +] + +[[package]] +name = "pasta_curves" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3e57598f73cc7e1b2ac63c79c517b31a0877cd7c402cdcaa311b5208de7a095" +dependencies = [ + "blake2b_simd", + "ff 0.13.0", + "group 0.13.0", + "hex", + "lazy_static", + "rand 0.8.5", + "serde", + "static_assertions", + "subtle", ] +[[package]] +name = "paste" +version = "1.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "de3145af08024dea9fa9914f381a17b8fc6034dfb00f3a84013f7ff43f29ed4c" + [[package]] name = "pem" version = "1.1.1" @@ -2867,6 +3672,16 @@ dependencies = [ "base64 0.13.1", ] +[[package]] +name = "pem" +version = "3.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b8fcc794035347fb64beda2d3b462595dd2753e3f268d89c5aae77e8cf2c310" +dependencies = [ + "base64 0.21.5", + "serde", +] + [[package]] name = "pem-rfc7468" version = "0.6.0" @@ -2887,9 +3702,54 @@ dependencies = [ [[package]] name = "percent-encoding" -version = "2.3.0" +version = "2.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" + +[[package]] +name = "pest" +version = "2.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f200d8d83c44a45b21764d1916299752ca035d15ecd46faca3e9a2a2bf6ad06" +dependencies = [ + "memchr", + "thiserror", + "ucd-trie", +] + +[[package]] +name = "pest_derive" +version = "2.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bcd6ab1236bbdb3a49027e920e693192ebfe8913f6d60e294de57463a493cfde" +dependencies = [ + "pest", + "pest_generator", +] + +[[package]] +name = "pest_generator" +version = "2.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a31940305ffc96863a735bef7c7994a00b325a7138fdbc5bda0f1a0476d3275" +dependencies = [ + "pest", + "pest_meta", + "proc-macro2", + "quote", + "syn 2.0.48", +] + +[[package]] +name = "pest_meta" +version = "2.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b2a4787296e9989611394c33f193f676704af1686e70b8f8033ab5ba9a35a94" +checksum = "a7ff62f5259e53b78d1af898941cdcdccfae7385cf7d793a6e55de5d05bb4b7d" +dependencies = [ + "once_cell", + "pest", + "sha2 0.10.8", +] [[package]] name = "petgraph" @@ -2898,27 +3758,36 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e1d3afd2628e69da2be385eb6f2fd57c8ac7977ceeff6dc166ff1657b0e386a9" dependencies = [ "fixedbitset", - "indexmap 2.0.1", + "indexmap 2.1.0", +] + +[[package]] +name = "phf_shared" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6796ad771acdc0123d2a88dc428b5e38ef24456743ddb1744ed628f9815c096" +dependencies = [ + "siphasher", ] [[package]] name = "pin-project" -version = "1.1.0" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c95a7476719eab1e366eaf73d0260af3021184f18177925b07f54b30089ceead" +checksum = "fda4ed1c6c173e3fc7a83629421152e01d7b1f9b7f65fb301e490e8cfc656422" dependencies = [ "pin-project-internal", ] [[package]] name = "pin-project-internal" -version = "1.1.0" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "39407670928234ebc5e6e580247dd567ad73a3578460c5990f9503df207e8f07" +checksum = "4359fd9c9171ec6e8c62926d6faaf553a8dc3f64e1507e76da7911b4f6a04405" dependencies = [ "proc-macro2", "quote", - "syn 2.0.46", + "syn 2.0.48", ] [[package]] @@ -2950,38 +3819,38 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7" dependencies = [ "der 0.7.8", - "spki 0.7.2", + "spki 0.7.3", ] +[[package]] +name = "pkg-config" +version = "0.3.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69d3587f8a9e599cc7ec2c00e331f71c4e69a5f9a4b8a6efd5b07466b9736f9a" + [[package]] name = "platforms" -version = "3.0.2" +version = "3.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3d7ddaed09e0eb771a79ab0fd64609ba0afb0a8366421957936ad14cbd13630" +checksum = "626dec3cac7cc0e1577a2ec3fc496277ec2baa084bebad95bb6fdbfae235f84c" [[package]] name = "polyval" -version = "0.5.3" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8419d2b623c7c0896ff2d5d96e2cb4ede590fed28fcc34934f4c33c036e620a1" +checksum = "d52cff9d1d4dee5fe6d03729099f4a310a41179e0a10dbf542039873f2e826fb" dependencies = [ "cfg-if 1.0.0", "cpufeatures", "opaque-debug", - "universal-hash 0.4.1", + "universal-hash", ] [[package]] -name = "polyval" -version = "0.6.0" +name = "powerfmt" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ef234e08c11dfcb2e56f79fd70f6f2eb7f025c0ce2333e82f4f0518ecad30c6" -dependencies = [ - "cfg-if 1.0.0", - "cpufeatures", - "opaque-debug", - "universal-hash 0.5.1", -] +checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" [[package]] name = "ppv-lite86" @@ -2989,6 +3858,12 @@ version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" +[[package]] +name = "precomputed-hash" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "925383efa346730478fb4838dbe9137d2a47675ad789c546d150a6e1dd4ab31c" + [[package]] name = "prettyplease" version = "0.1.25" @@ -3001,18 +3876,18 @@ dependencies = [ [[package]] name = "primeorder" -version = "0.13.2" +version = "0.13.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c2fcef82c0ec6eefcc179b978446c399b3cdf73c392c35604e399eee6df1ee3" +checksum = "353e1ca18966c16d9deb1c69278edbc5f194139612772bd9537af60ac231e1e6" dependencies = [ - "elliptic-curve 0.13.6", + "elliptic-curve 0.13.8", ] [[package]] name = "primitive-types" -version = "0.12.1" +version = "0.12.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f3486ccba82358b11a77516035647c34ba167dfa53312630de83b12bd4f3d66" +checksum = "0b34d9fd68ae0b74a41b21c03c2f62847aa0ffea044eee893b4c140b37e244e2" dependencies = [ "fixed-hash", "impl-codec", @@ -3023,11 +3898,11 @@ dependencies = [ [[package]] name = "proc-macro-crate" -version = "1.3.1" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f4c021e1093a56626774e81216a4ce732a735e5bad4868a03f3ed65ca0c3919" +checksum = "97dc5fea232fc28d2f597b37c4876b348a40e33f3b02cc975c8d006d78d94b1a" dependencies = [ - "once_cell", + "toml_datetime", "toml_edit", ] @@ -3057,13 +3932,28 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.74" +version = "1.0.76" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2de98502f212cfcea8d0bb305bd0f49d7ebdd75b64ba0a68f937d888f4e0d6db" +checksum = "95fc56cda0b5c3325f5fbbd7ff9fda9e02bb00bb3dac51252d2f1bfa1cb8cc8c" dependencies = [ "unicode-ident", ] +[[package]] +name = "program_structure" +version = "2.1.7" +source = "git+https://github.com/RingsNetwork/circom?rev=ea8c4cd987f035ef4f08e17269d9b68cb5ab9122#ea8c4cd987f035ef4f08e17269d9b68cb5ab9122" +dependencies = [ + "codespan", + "codespan-reporting", + "num-bigint-dig", + "num-traits", + "regex", + "rustc-hex", + "serde", + "serde_derive", +] + [[package]] name = "prost" version = "0.11.9" @@ -3092,7 +3982,7 @@ checksum = "119533552c9a7ffacc21e099c24a0ac8bb19c2a2a3f363de84cd9b844feab270" dependencies = [ "bytes", "heck", - "itertools", + "itertools 0.10.5", "lazy_static", "log", "multimap", @@ -3123,7 +4013,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e5d2d8d10f3c6ded6da8b05b5fb3b8a5082514344d56c9f871412d29b4e075b4" dependencies = [ "anyhow", - "itertools", + "itertools 0.10.5", "proc-macro2", "quote", "syn 1.0.109", @@ -3136,10 +4026,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "efb6c9a1dd1def8e2124d17e83a20af56f1570d6c2d2bd9e266ccb768df3840e" dependencies = [ "anyhow", - "itertools", + "itertools 0.11.0", "proc-macro2", "quote", - "syn 2.0.46", + "syn 2.0.48", ] [[package]] @@ -3245,7 +4135,7 @@ version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" dependencies = [ - "getrandom 0.2.9", + "getrandom 0.2.11", ] [[package]] @@ -3266,11 +4156,20 @@ dependencies = [ "rand_core 0.6.4", ] +[[package]] +name = "rand_xorshift" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d25bf25ec5ae4a3f1b92f929810509a2f53d7dca2f50b794ff57e3face536c8f" +dependencies = [ + "rand_core 0.6.4", +] + [[package]] name = "rayon" -version = "1.7.0" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d2df5196e37bcc87abebc0053e20787d73847bb33134a69841207dd0a47f03b" +checksum = "9c27db03db7734835b3f53954b534c91069375ce6ccaa2e065441e07d9b6cdb1" dependencies = [ "either", "rayon-core", @@ -3278,39 +4177,37 @@ dependencies = [ [[package]] name = "rayon-core" -version = "1.11.0" +version = "1.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b8f95bd6966f5c87776639160a66bd8ab9895d9d4ab01ddba9fc60661aebe8d" +checksum = "5ce3fb6ad83f861aac485e76e1985cd109d9a3713802152be56c3b1f0e0658ed" dependencies = [ - "crossbeam-channel", "crossbeam-deque", "crossbeam-utils", - "num_cpus", ] [[package]] name = "rcgen" -version = "0.9.3" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6413f3de1edee53342e6138e75b56d32e7bc6e332b3bd62d497b1929d4cfbcdd" +checksum = "ffbe84efe2f38dea12e9bfc1f65377fdf03e53a18cb3b995faedf7934c7e785b" dependencies = [ - "pem", + "pem 1.1.1", "ring 0.16.20", "time", - "x509-parser 0.13.2", + "x509-parser 0.14.0", "yasna", ] [[package]] name = "rcgen" -version = "0.10.0" +version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ffbe84efe2f38dea12e9bfc1f65377fdf03e53a18cb3b995faedf7934c7e785b" +checksum = "52c4f3084aa3bc7dfbba4eff4fab2a54db4324965d8872ab933565e6fbd83bc6" dependencies = [ - "pem", + "pem 3.0.3", "ring 0.16.20", "time", - "x509-parser 0.14.0", + "x509-parser 0.15.1", "yasna", ] @@ -3325,13 +4222,24 @@ dependencies = [ [[package]] name = "redox_syscall" -version = "0.3.5" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "567664f262709473930a4bf9e51bf2ebf3348f2e748ccc50dea20646858f8f29" +checksum = "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa" dependencies = [ "bitflags 1.3.2", ] +[[package]] +name = "redox_users" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a18479200779601e498ada4e8c1e1f50e3ee19deb0259c25825a98b5603b2cb4" +dependencies = [ + "getrandom 0.2.11", + "libredox", + "thiserror", +] + [[package]] name = "regalloc2" version = "0.5.1" @@ -3346,20 +4254,38 @@ dependencies = [ [[package]] name = "regex" -version = "1.8.3" +version = "1.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "380b951a9c5e80ddfd6136919eef32310721aa4aacd4889a8d39124b026ab343" +dependencies = [ + "aho-corasick", + "memchr", + "regex-automata", + "regex-syntax 0.8.2", +] + +[[package]] +name = "regex-automata" +version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81ca098a9821bd52d6b24fd8b10bd081f47d39c22778cafaa75a2857a62c6390" +checksum = "5f804c7828047e88b2d32e2d7fe5a105da8ee3264f01902f796c8e067dc2483f" dependencies = [ "aho-corasick", "memchr", - "regex-syntax", + "regex-syntax 0.8.2", ] [[package]] name = "regex-syntax" -version = "0.7.2" +version = "0.6.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" + +[[package]] +name = "regex-syntax" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "436b050e76ed2903236f032a59761c1eb99e1b0aead2c257922771dab1fc8c78" +checksum = "c08c74e62047bb2de4ff487b251e4a92e24f48745648451635cec7d591162d9f" [[package]] name = "region" @@ -3375,20 +4301,20 @@ dependencies = [ [[package]] name = "rend" -version = "0.4.0" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "581008d2099240d37fb08d77ad713bcaec2c4d89d50b5b21a8bb1996bbab68ab" +checksum = "a2571463863a6bd50c32f94402933f03457a3fbaf697a707c5be741e459f08fd" dependencies = [ "bytecheck", ] [[package]] name = "reqwest" -version = "0.11.22" +version = "0.11.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "046cd98826c46c2ac8ddecae268eb5c2e58628688a5fc7a2643704a73faba95b" +checksum = "37b1ae8d9ac08420c66222fb9096fc5de435c3c48542bc5336c51892cffafb41" dependencies = [ - "base64 0.21.2", + "base64 0.21.5", "bytes", "encoding_rs", "futures-core", @@ -3397,28 +4323,31 @@ dependencies = [ "http", "http-body", "hyper", - "hyper-rustls 0.24.0", + "hyper-rustls 0.24.2", + "hyper-tls", "ipnet", "js-sys", "log", "mime", + "native-tls", "once_cell", "percent-encoding", "pin-project-lite", - "rustls 0.21.9", + "rustls 0.21.10", "rustls-pemfile", "serde", "serde_json", "serde_urlencoded", "system-configuration", "tokio", - "tokio-rustls 0.24.0", + "tokio-native-tls", + "tokio-rustls 0.24.1", "tower-service", "url", "wasm-bindgen", "wasm-bindgen-futures", "web-sys", - "webpki-roots 0.25.2", + "webpki-roots 0.25.3", "winreg 0.50.0", ] @@ -3446,7 +4375,7 @@ dependencies = [ "once_cell", "percent-encoding", "pin-project-lite", - "rustls 0.20.8", + "rustls 0.20.9", "rustls-pemfile", "serde", "serde_json", @@ -3515,12 +4444,12 @@ dependencies = [ [[package]] name = "ring" -version = "0.17.3" +version = "0.17.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9babe80d5c16becf6594aa32ad2be8fe08498e7ae60b77de8df700e67f191d7e" +checksum = "688c63d65483050968b2a8937f7995f443e27041a0f7700aa59b0822aedebb74" dependencies = [ "cc", - "getrandom 0.2.9", + "getrandom 0.2.11", "libc", "spin 0.9.8", "untrusted 0.9.0", @@ -3544,21 +4473,21 @@ dependencies = [ "chrono", "dashmap", "derivative", - "ecdsa 0.16.8", + "ecdsa 0.16.9", "ecies", "ed25519", "ed25519-dalek", - "elliptic-curve 0.13.6", + "elliptic-curve 0.13.8", "ethereum-types", "flate2", "futures", "futures-timer", "hex", - "itertools", + "itertools 0.10.5", "js-sys", "lazy_static", "libsecp256k1", - "num-bigint", + "num-bigint 0.4.4", "p256 0.13.2", "primeorder", "rand 0.8.5", @@ -3568,10 +4497,10 @@ dependencies = [ "rings-derive", "rings-transport", "serde", - "serde-wasm-bindgen 0.6.1", + "serde-wasm-bindgen 0.6.3", "serde_json", "sha1", - "sha2 0.10.6", + "sha2 0.10.8", "sled", "subtle", "thiserror", @@ -3586,7 +4515,7 @@ dependencies = [ "wasm-bindgen-futures", "wasm-bindgen-test", "web-sys", - "webrtc 0.6.0", + "webrtc 0.9.0", ] [[package]] @@ -3595,9 +4524,9 @@ version = "0.5.2" dependencies = [ "proc-macro2", "quote", - "syn 2.0.46", + "syn 2.0.48", "wasm-bindgen-macro-support", - "wasmer", + "wasmer 3.3.0", ] [[package]] @@ -3626,7 +4555,7 @@ dependencies = [ "bytes", "cbindgen", "chrono", - "clap 4.3.0", + "clap 4.4.13", "console_error_panic_hook", "dashmap", "dotenv", @@ -3651,7 +4580,7 @@ dependencies = [ "rings-rpc", "rings-transport", "serde", - "serde-wasm-bindgen 0.6.1", + "serde-wasm-bindgen 0.6.3", "serde_json", "serde_yaml", "strum", @@ -3660,7 +4589,7 @@ dependencies = [ "tokio-util", "tower-http", "tracing", - "tracing-log", + "tracing-log 0.1.4", "tracing-opentelemetry", "tracing-subscriber", "tracing-wasm", @@ -3668,8 +4597,8 @@ dependencies = [ "wasm-bindgen", "wasm-bindgen-futures", "wasm-bindgen-test", - "wasmer", - "wasmer-types", + "wasmer 3.3.0", + "wasmer-types 3.3.0", ] [[package]] @@ -3692,6 +4621,36 @@ dependencies = [ "thiserror", ] +[[package]] +name = "rings-snark" +version = "0.5.2" +dependencies = [ + "bellpepper-core", + "byteorder", + "circom", + "circom-scotia", + "crypto-bigint 0.5.5", + "ff 0.13.0", + "lalrpop", + "log", + "nova-snark", + "pasta_curves", + "reqwest", + "serde", + "serde_json", + "thiserror", + "tokio", + "wasmer 4.2.5", +] + +[[package]] +name = "rings-snark-example" +version = "0.5.2" +dependencies = [ + "rings-snark", + "tokio", +] + [[package]] name = "rings-transport" version = "0.5.2" @@ -3719,12 +4678,13 @@ dependencies = [ [[package]] name = "rkyv" -version = "0.7.42" +version = "0.7.43" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0200c8230b013893c0b2d6213d6ec64ed2b9be2e0e016682b7224ff82cff5c58" +checksum = "527a97cdfef66f65998b5f3b637c26f5a5ec09cc52a3f9932313ac645f4190f5" dependencies = [ "bitvec", "bytecheck", + "bytes", "hashbrown 0.12.3", "indexmap 1.9.3", "ptr_meta", @@ -3732,14 +4692,14 @@ dependencies = [ "rkyv_derive", "seahash", "tinyvec", - "uuid 1.3.3", + "uuid 1.6.1", ] [[package]] name = "rkyv_derive" -version = "0.7.42" +version = "0.7.43" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2e06b915b5c230a17d7a736d1e2e63ee753c256a8614ef3f5147b13a4f5541d" +checksum = "b5c462a1328c8e67e4d6dbad1eb0355dd43e8ab432c6e227a43657f16ade5033" dependencies = [ "proc-macro2", "quote", @@ -3758,51 +4718,50 @@ dependencies = [ [[package]] name = "rtcp" -version = "0.7.2" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1919efd6d4a6a85d13388f9487549bb8e359f17198cc03ffd72f79b553873691" +checksum = "6423493804221c276d27f3cc383cd5cbe1a1f10f210909fd4951b579b01293cd" dependencies = [ "bytes", "thiserror", - "webrtc-util", + "webrtc-util 0.7.0", ] [[package]] name = "rtcp" -version = "0.9.0" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6423493804221c276d27f3cc383cd5cbe1a1f10f210909fd4951b579b01293cd" +checksum = "3677908cadfbecb4cc1da9a56a32524fae4ebdfa7c2ea93886e1b1e846488cb9" dependencies = [ "bytes", "thiserror", - "webrtc-util", + "webrtc-util 0.8.0", ] [[package]] name = "rtp" -version = "0.6.8" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2a095411ff00eed7b12e4c6a118ba984d113e1079582570d56a5ee723f11f80" +checksum = "b728adb99b88d932f2f0622b540bf7ccb196f81e9823b5b0eeb166526c88138c" dependencies = [ - "async-trait", "bytes", "rand 0.8.5", "serde", "thiserror", - "webrtc-util", + "webrtc-util 0.7.0", ] [[package]] name = "rtp" -version = "0.8.0" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b728adb99b88d932f2f0622b540bf7ccb196f81e9823b5b0eeb166526c88138c" +checksum = "e60482acbe8afb31edf6b1413103b7bca7a65004c423b3c3993749a083994fbe" dependencies = [ "bytes", "rand 0.8.5", "serde", "thiserror", - "webrtc-util", + "webrtc-util 0.8.0", ] [[package]] @@ -3818,39 +4777,34 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3e75f6a532d0fd9f7f13144f392b6ad56a32696bfcd9c78f797f16bbb6f072d6" [[package]] -name = "rusticata-macros" -version = "4.1.0" +name = "rustc_version" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "faf0c4a6ece9950b9abdb62b1cfcf2a68b3b67a10ba445b3bb85be2a293d0632" +checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366" dependencies = [ - "nom", + "semver", ] [[package]] -name = "rustix" -version = "0.37.19" +name = "rusticata-macros" +version = "4.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "acf8729d8542766f1b2cf77eb034d52f40d375bb8b615d0b147089946e16613d" +checksum = "faf0c4a6ece9950b9abdb62b1cfcf2a68b3b67a10ba445b3bb85be2a293d0632" dependencies = [ - "bitflags 1.3.2", - "errno", - "io-lifetimes", - "libc", - "linux-raw-sys 0.3.8", - "windows-sys 0.48.0", + "nom", ] [[package]] name = "rustix" -version = "0.38.13" +version = "0.38.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7db8590df6dfcd144d22afd1b83b36c21a18d7cbc1dc4bb5295a8712e9eb662" +checksum = "72e572a5e8ca657d7366229cdde4bd14c4eb5499a9573d4d366fe1b599daa316" dependencies = [ "bitflags 2.4.1", "errno", "libc", - "linux-raw-sys 0.4.10", - "windows-sys 0.48.0", + "linux-raw-sys", + "windows-sys 0.52.0", ] [[package]] @@ -3868,35 +4822,35 @@ dependencies = [ [[package]] name = "rustls" -version = "0.20.8" +version = "0.20.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fff78fc74d175294f4e83b28343315ffcfb114b156f0185e9741cb5570f50e2f" +checksum = "1b80e3dec595989ea8510028f30c408a4630db12c9cbb8de34203b89d6577e99" dependencies = [ "log", "ring 0.16.20", - "sct 0.7.0", - "webpki 0.22.0", + "sct 0.7.1", + "webpki 0.22.4", ] [[package]] name = "rustls" -version = "0.21.9" +version = "0.21.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "629648aced5775d558af50b2b4c7b02983a04b312126d45eeead26e7caa498b9" +checksum = "f9d5a6813c0759e4609cd494e8e725babae6a2ca7b62a5536a13daaec6fcb7ba" dependencies = [ "log", - "ring 0.17.3", + "ring 0.17.7", "rustls-webpki", - "sct 0.7.0", + "sct 0.7.1", ] [[package]] name = "rustls-pemfile" -version = "1.0.2" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d194b56d58803a43635bdc398cd17e383d6f71f9182b9a192c127ca42494a59b" +checksum = "1c74cae0a4cf6ccbbf5f359f08efdf8ee7e1dc532573bf0db71968cb56b1448c" dependencies = [ - "base64 0.21.2", + "base64 0.21.5", ] [[package]] @@ -3905,33 +4859,42 @@ version = "0.101.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8b6275d1ee7a1cd780b64aca7726599a1dbc893b1e64144529e55c3c2f745765" dependencies = [ - "ring 0.17.3", + "ring 0.17.7", "untrusted 0.9.0", ] [[package]] name = "rustversion" -version = "1.0.12" +version = "1.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f3208ce4d8448b3f3e7d168a73f5e0c43a61e32930de3bceeccedb388b6bf06" +checksum = "7ffc183a10b4478d04cbbbfc96d0873219d962dd5accaff2ffbd4ceb7df837f4" [[package]] name = "ryu" -version = "1.0.13" +version = "1.0.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f91339c0467de62360649f8d3e185ca8de4224ff281f66000de5eb2a77a79041" +checksum = "f98d2aa92eebf49b69786be48e4477826b256916e84a57ff2a4f21923b48eb4c" [[package]] -name = "scoped-tls" -version = "1.0.1" +name = "schannel" +version = "0.1.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e1cf6437eb19a8f4a6cc0f7dca544973b0b78843adbfeb3683d1a94a0024a294" - +checksum = "fbc91545643bcf3a0bbb6569265615222618bdf33ce4ffbbd13c4bbd4c093534" +dependencies = [ + "windows-sys 0.52.0", +] + +[[package]] +name = "scoped-tls" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1cf6437eb19a8f4a6cc0f7dca544973b0b78843adbfeb3683d1a94a0024a294" + [[package]] name = "scopeguard" -version = "1.1.0" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" +checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" [[package]] name = "sct" @@ -3945,12 +4908,12 @@ dependencies = [ [[package]] name = "sct" -version = "0.7.0" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d53dcdb7c9f8158937a7981b48accfd39a43af418591a5d008c7b22b5e1b7ca4" +checksum = "da046153aa2352493d6cb7da4b6e5c0c057d8a1d0a9aa8560baffdd945acd414" dependencies = [ - "ring 0.16.20", - "untrusted 0.7.1", + "ring 0.17.7", + "untrusted 0.9.0", ] [[package]] @@ -3965,6 +4928,18 @@ dependencies = [ "url", ] +[[package]] +name = "sdp" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4653054c30ebce63658762eb0d64e27673868a95564474811ae6c220cf767640" +dependencies = [ + "rand 0.8.5", + "substring", + "thiserror", + "url", +] + [[package]] name = "seahash" version = "4.1.0" @@ -3999,11 +4974,56 @@ dependencies = [ "zeroize", ] +[[package]] +name = "security-framework" +version = "2.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05b64fb303737d99b81884b2c63433e9ae28abebe5eb5045dcdd175dc2ecf4de" +dependencies = [ + "bitflags 1.3.2", + "core-foundation", + "core-foundation-sys", + "libc", + "security-framework-sys", +] + +[[package]] +name = "security-framework-sys" +version = "2.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e932934257d3b408ed8f30db49d85ea163bfe74961f017f405b025af298f0c7a" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "self_cell" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "58bf37232d3bb9a2c4e641ca2a11d83b5062066f88df7fed36c28772046d65ba" + +[[package]] +name = "semolina" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b0111fd4fa831becb0606b9a2285ef3bee3c6a70d690209b8ae9514e9befe23" +dependencies = [ + "cc", + "glob", +] + +[[package]] +name = "semver" +version = "1.0.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b97ed7a9823b74f99c7742f5336af7be5ecd3eeafcb1507d1fa93347b1d589b0" + [[package]] name = "serde" -version = "1.0.193" +version = "1.0.195" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25dd9975e68d0cb5aa1120c288333fc98731bd1dd12f561e468ea4728c042b89" +checksum = "63261df402c67811e9ac6def069e4786148c4563f4b50fd4bf30aa370d626b02" dependencies = [ "serde_derive", ] @@ -4021,31 +5041,40 @@ dependencies = [ [[package]] name = "serde-wasm-bindgen" -version = "0.6.1" +version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17ba92964781421b6cef36bf0d7da26d201e96d84e1b10e7ae6ed416e516906d" +checksum = "b9b713f70513ae1f8d92665bbbbda5c295c2cf1da5542881ae5eefe20c9af132" dependencies = [ "js-sys", "serde", "wasm-bindgen", ] +[[package]] +name = "serde_arrays" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38636132857f68ec3d5f3eb121166d2af33cb55174c4d5ff645db6165cbef0fd" +dependencies = [ + "serde", +] + [[package]] name = "serde_derive" -version = "1.0.193" +version = "1.0.195" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43576ca501357b9b071ac53cdc7da8ef0cbd9493d8df094cd821777ea6e894d3" +checksum = "46fe8f8603d81ba86327b23a2e9cdf49e1255fb94a4c5f297f6ee0547178ea2c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.46", + "syn 2.0.48", ] [[package]] name = "serde_json" -version = "1.0.106" +version = "1.0.111" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2cc66a619ed80bf7a0f6b17dd063a84b88f6dea1813737cf469aef1d081142c2" +checksum = "176e46fa42316f18edd598015a5166857fc835ec732f5215eac6b7bdbf0a84f4" dependencies = [ "itoa", "ryu", @@ -4054,10 +5083,11 @@ dependencies = [ [[package]] name = "serde_path_to_error" -version = "0.1.11" +version = "0.1.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7f05c1d5476066defcdfacce1f52fc3cae3af1d3089727100c02ae92e5abbe0" +checksum = "ebd154a240de39fdebcf5775d2675c204d7c13cf39a4c697be6493c8e734337c" dependencies = [ + "itoa", "serde", ] @@ -4075,11 +5105,11 @@ dependencies = [ [[package]] name = "serde_yaml" -version = "0.9.27" +version = "0.9.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3cc7a1570e38322cfe4154732e5110f887ea57e22b76f4bfd32b5bdd3368666c" +checksum = "b1bf28c79a99f70ee1f1d83d10c875d2e70618417fda01ad1785e027579d9d38" dependencies = [ - "indexmap 2.0.1", + "indexmap 2.1.0", "itoa", "ryu", "serde", @@ -4087,23 +5117,20 @@ dependencies = [ ] [[package]] -name = "sha-1" -version = "0.9.8" +name = "serdect" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "99cd6713db3cf16b6c84e06321e049a9b9f699826e16096d23bbcc44d15d51a6" +checksum = "a84f14a19e9a014bb9f4512488d9829a68e04ecabffb0f9904cd1ace94598177" dependencies = [ - "block-buffer 0.9.0", - "cfg-if 1.0.0", - "cpufeatures", - "digest 0.9.0", - "opaque-debug", + "base16ct 0.2.0", + "serde", ] [[package]] name = "sha1" -version = "0.10.5" +version = "0.10.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f04293dc80c3993519f2d7f6f511707ee7094fe0c6d3406feb330cdb3540eba3" +checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba" dependencies = [ "cfg-if 1.0.0", "cpufeatures", @@ -4125,24 +5152,44 @@ dependencies = [ [[package]] name = "sha2" -version = "0.10.6" +version = "0.10.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "82e6b795fe2e3b1e845bafcb27aa35405c4d47cdfc92af5fc8d3002f76cebdc0" +checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8" dependencies = [ "cfg-if 1.0.0", "cpufeatures", "digest 0.10.7", ] +[[package]] +name = "sha3" +version = "0.10.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75872d278a8f37ef87fa0ddbda7802605cb18344497949862c0d4dcb291eba60" +dependencies = [ + "digest 0.10.7", + "keccak", +] + [[package]] name = "sharded-slab" -version = "0.1.4" +version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "900fba806f70c630b0a382d0d825e17a0f19fcd059a2ade1ff237bcddf446b31" +checksum = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6" dependencies = [ "lazy_static", ] +[[package]] +name = "shared-buffer" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6c99835bad52957e7aa241d3975ed17c1e5f8c92026377d117a606f36b84b16" +dependencies = [ + "bytes", + "memmap2 0.6.2", +] + [[package]] name = "signal-hook-registry" version = "1.4.1" @@ -4164,9 +5211,9 @@ dependencies = [ [[package]] name = "signature" -version = "2.1.0" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e1788eed21689f9cf370582dfc467ef36ed9c707f073528ddafa8d83e3b8500" +checksum = "77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de" dependencies = [ "digest 0.10.7", "rand_core 0.6.4", @@ -4178,13 +5225,19 @@ version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f27f6278552951f1f2b8cf9da965d10969b2efdea95a6ec47987ab46edfe263a" +[[package]] +name = "siphasher" +version = "0.3.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38b58827f4464d87d377d175e90bf58eb00fd8716ff0a62f80356b5e61555d0d" + [[package]] name = "slab" -version = "0.4.8" +version = "0.4.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6528351c9bc8ab22353f9d776db39a20288e8d6c37ef8cfe3317cf875eecfc2d" +checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67" dependencies = [ - "autocfg", + "autocfg 1.1.0", ] [[package]] @@ -4211,9 +5264,9 @@ checksum = "826167069c09b99d56f31e9ae5c99049e932a98c9dc2dac47645b08dbbf76ba7" [[package]] name = "smallvec" -version = "1.10.0" +version = "1.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a507befe795404456341dfab10cef66ead4c041f62b8b11bbb92bffe5d0953e0" +checksum = "4dccd0940a2dcdf68d092b8cbab7dc0ad8fa938bf95787e1b916b0e3d0e8e970" [[package]] name = "smol_str" @@ -4226,9 +5279,9 @@ dependencies = [ [[package]] name = "socket2" -version = "0.4.9" +version = "0.4.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64a4a911eed85daf18834cfaa86a79b7d266ff93ff5ba14005426219480ed662" +checksum = "9f7916fc008ca5542385b89a3d3ce689953c143e9304a9bf8beec1de48994c0d" dependencies = [ "libc", "winapi", @@ -4268,14 +5321,24 @@ dependencies = [ [[package]] name = "spki" -version = "0.7.2" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d1e996ef02c474957d681f1b05213dfb0abab947b446a62d37770b23500184a" +checksum = "d91ed6c858b01f942cd56b37a94b3e0a1798290327d1236e4d9cf4eaca44d29d" dependencies = [ "base64ct", "der 0.7.8", ] +[[package]] +name = "sppark" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba7a6d98937866ea8917015cd4a72d56d6e7feee8979dbccf83fc0c870053c46" +dependencies = [ + "cc", + "which", +] + [[package]] name = "stable_deref_trait" version = "1.2.0" @@ -4288,6 +5351,25 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" +[[package]] +name = "string_cache" +version = "0.8.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f91138e76242f575eb1d3b38b4f1362f10d3a43f47d182a5b359af488a02293b" +dependencies = [ + "new_debug_unreachable", + "once_cell", + "parking_lot 0.12.1", + "phf_shared", + "precomputed-hash", +] + +[[package]] +name = "strsim" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ea5119cdb4c55b55d432abb513a0429384878c15dde60cc77b1c99de1a95a6a" + [[package]] name = "strsim" version = "0.10.0" @@ -4316,7 +5398,26 @@ dependencies = [ "thiserror", "tokio", "url", - "webrtc-util", + "webrtc-util 0.7.0", +] + +[[package]] +name = "stun" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7beb1624a3ea34778d58d30e2b8606b4d29fe65e87c4d50b87ed30afd5c3830c" +dependencies = [ + "base64 0.21.5", + "crc", + "lazy_static", + "md-5", + "rand 0.8.5", + "ring 0.16.20", + "subtle", + "thiserror", + "tokio", + "url", + "webrtc-util 0.8.0", ] [[package]] @@ -4325,14 +5426,14 @@ version = "1.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "42ee6433ecef213b2e72f587ef64a2f5943e7cd16fbd82dbe8bc07486c534c86" dependencies = [ - "autocfg", + "autocfg 1.1.0", ] [[package]] name = "subtle" -version = "2.4.1" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6bdef32e8150c2a081110b42772ffe7d7c9032b606bc226c8260fd97e0976601" +checksum = "81cdd64d312baedb58e21336b31bc043b77e01cc99033ce76ef539f78e965ebc" [[package]] name = "syn" @@ -4347,9 +5448,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.46" +version = "2.0.48" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89456b690ff72fddcecf231caedbe615c59480c93358a93dfae7fc29e3ebbf0e" +checksum = "0f3531638e407dfc0814761abb7c00a5b54992b849452a0646b7f65c9f770f3f" dependencies = [ "proc-macro2", "quote", @@ -4403,32 +5504,52 @@ checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" [[package]] name = "target-lexicon" -version = "0.12.7" +version = "0.12.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd1ba337640d60c3e96bc6f0638a939b9c9a7f2c316a1598c279828b3d1dc8c5" +checksum = "69758bda2e78f098e4ccb393021a0963bb3442eac05f135c30f61b7370bbafae" [[package]] name = "tempfile" -version = "3.8.0" +version = "3.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb94d2f3cc536af71caac6b6fcebf65860b347e7ce0cc9ebe8f70d3e521054ef" +checksum = "01ce4141aa927a6d1bd34a041795abd0db1cccba5d5f24b009f694bdf3a1f3fa" dependencies = [ "cfg-if 1.0.0", "fastrand", - "redox_syscall 0.3.5", - "rustix 0.38.13", - "windows-sys 0.48.0", + "redox_syscall 0.4.1", + "rustix", + "windows-sys 0.52.0", +] + +[[package]] +name = "term" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c59df8ac95d96ff9bede18eb7300b0fda5e5d8d90960e76f8e14ae765eedbf1f" +dependencies = [ + "dirs-next", + "rustversion", + "winapi", ] [[package]] name = "termcolor" -version = "1.3.0" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6093bad37da69aab9d123a8091e4be0aa4a03e4d601ec641c327398315f62b64" +checksum = "ff1bc3d3f05aff0403e8ac0d92ced918ec05b666a43f83297ccef5bea8a3d449" dependencies = [ "winapi-util", ] +[[package]] +name = "textwrap" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d326610f408c7a4eb6f51c37c330e496b08506c9457c9d34287ecc38809fb060" +dependencies = [ + "unicode-width", +] + [[package]] name = "textwrap" version = "0.16.0" @@ -4437,22 +5558,22 @@ checksum = "222a222a5bfe1bba4a77b45ec488a741b3cb8872e5e499451fd7d0129c9c7c3d" [[package]] name = "thiserror" -version = "1.0.47" +version = "1.0.56" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97a802ec30afc17eee47b2855fc72e0c4cd62be9b4efe6591edde0ec5bd68d8f" +checksum = "d54378c645627613241d077a3a79db965db602882668f9136ac42af9ecb730ad" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.47" +version = "1.0.56" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6bb623b56e39ab7dcd4b1b98bb6c8f8d907ed255b18de254088016b27a8ee19b" +checksum = "fa0faa943b50f3db30a20aa7e265dbc66076993efed8463e8de414e5d06d3471" dependencies = [ "proc-macro2", "quote", - "syn 2.0.46", + "syn 2.0.48", ] [[package]] @@ -4489,11 +5610,13 @@ dependencies = [ [[package]] name = "time" -version = "0.3.21" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f3403384eaacbca9923fa06940178ac13e4edb725486d70e8e15881d0c836cc" +checksum = "f657ba42c3f86e7680e53c8cd3af8abbe56b5491790b46e22e19c0d57463583e" dependencies = [ + "deranged", "itoa", + "powerfmt", "serde", "time-core", "time-macros", @@ -4501,15 +5624,15 @@ dependencies = [ [[package]] name = "time-core" -version = "0.1.1" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7300fbefb4dadc1af235a9cef3737cea692a9d97e1b9cbcd4ebdae6f8868e6fb" +checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3" [[package]] name = "time-macros" -version = "0.2.9" +version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "372950940a5f07bf38dbe211d7283c9e6d7327df53794992d293e534c733d09b" +checksum = "26197e33420244aeb70c3e8c78376ca46571bc4e701e4791c2cd9f57dcb3a43f" dependencies = [ "time-core", ] @@ -4565,7 +5688,17 @@ checksum = "5b8a1e28f2deaa14e508979454cb3a223b10b938b45af148bc0986de36f1923b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.46", + "syn 2.0.48", +] + +[[package]] +name = "tokio-native-tls" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbae76ab933c85776efabc971569dd6119c580d8f5d448769dec1764bf796ef2" +dependencies = [ + "native-tls", + "tokio", ] [[package]] @@ -4574,18 +5707,18 @@ version = "0.23.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c43ee83903113e03984cb9e5cebe6c04a5116269e900e3ddba8f068a62adda59" dependencies = [ - "rustls 0.20.8", + "rustls 0.20.9", "tokio", - "webpki 0.22.0", + "webpki 0.22.4", ] [[package]] name = "tokio-rustls" -version = "0.24.0" +version = "0.24.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0d409377ff5b1e3ca6437aa86c1eb7d40c134bfec254e44c830defa92669db5" +checksum = "c28327cf380ac148141087fbfb9de9d7bd4e84ab5d2c28fbc911d753de8a7081" dependencies = [ - "rustls 0.21.9", + "rustls 0.21.10", "tokio", ] @@ -4614,9 +5747,9 @@ dependencies = [ [[package]] name = "tokio-util" -version = "0.7.8" +version = "0.7.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "806fe8c2c87eccc8b3267cbae29ed3ab2d0bd37fca70ab622e46aaa9375ddb7d" +checksum = "5419f34732d9eb6ee4c3578b7989078579b7f039cbbb9ca2c4da015749371e15" dependencies = [ "bytes", "futures-core", @@ -4637,17 +5770,17 @@ dependencies = [ [[package]] name = "toml_datetime" -version = "0.6.2" +version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a76a9312f5ba4c2dec6b9161fdf25d87ad8a09256ccea5a556fef03c706a10f" +checksum = "7cda73e2f1397b1262d6dfdcef8aafae14d1de7748d66822d3bfeeb6d03e5e4b" [[package]] name = "toml_edit" -version = "0.19.10" +version = "0.20.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2380d56e8670370eee6566b0bfd4265f65b3f432e8c6d85623f728d4fa31f739" +checksum = "396e4d48bbb2b7554c944bde63101b5ae446cff6ec4a24227428f15eb72ef338" dependencies = [ - "indexmap 1.9.3", + "indexmap 2.1.0", "toml_datetime", "winnow", ] @@ -4700,11 +5833,10 @@ checksum = "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52" [[package]] name = "tracing" -version = "0.1.37" +version = "0.1.40" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ce8c33a8d48bd45d624a6e523445fd21ec13d3653cd51f681abf67418f54eb8" +checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef" dependencies = [ - "cfg-if 1.0.0", "log", "pin-project-lite", "tracing-attributes", @@ -4713,33 +5845,54 @@ dependencies = [ [[package]] name = "tracing-attributes" -version = "0.1.24" +version = "0.1.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f57e3ca2a01450b1a921183a9c9cbfda207fd822cef4ccb00a65402cbba7a74" +checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.46", + "syn 2.0.48", ] [[package]] name = "tracing-core" -version = "0.1.31" +version = "0.1.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0955b8137a1df6f1a2e9a37d8a6656291ff0297c1a97c24e0d8425fe2312f79a" +checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54" dependencies = [ "once_cell", "valuable", ] +[[package]] +name = "tracing-error" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d686ec1c0f384b1277f097b2f279a2ecc11afe8c133c1aabf036a27cb4cd206e" +dependencies = [ + "tracing", + "tracing-subscriber", +] + [[package]] name = "tracing-log" -version = "0.1.3" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78ddad33d2d10b1ed7eb9d1f518a5674713876e97e5bb9b7345a7984fbb4f922" +checksum = "f751112709b4e791d8ce53e32c4ed2d353565a795ce84da2285393f41557bdf2" +dependencies = [ + "log", + "once_cell", + "tracing-core", +] + +[[package]] +name = "tracing-log" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3" dependencies = [ - "lazy_static", "log", + "once_cell", "tracing-core", ] @@ -4753,22 +5906,22 @@ dependencies = [ "opentelemetry", "tracing", "tracing-core", - "tracing-log", + "tracing-log 0.1.4", "tracing-subscriber", ] [[package]] name = "tracing-subscriber" -version = "0.3.17" +version = "0.3.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30a651bc37f915e81f087d86e62a18eec5f79550c7faff886f7090b4ea757c77" +checksum = "ad0f048c97dbd9faa9b7df56362b8ebcaa52adb06b498c050d2f4e32f90a7a8b" dependencies = [ "nu-ansi-term", "sharded-slab", "smallvec", "thread_local", "tracing-core", - "tracing-log", + "tracing-log 0.2.0", ] [[package]] @@ -4782,11 +5935,22 @@ dependencies = [ "wasm-bindgen", ] +[[package]] +name = "trait-set" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b79e2e9c9ab44c6d7c20d5976961b47e8f49ac199154daa514b77cd1ab536625" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + [[package]] name = "try-lock" -version = "0.2.4" +version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3528ecfd12c466c6f163363caf2d02a71161dd5e1cc6ae7b34207ea2d42d81ed" +checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" [[package]] name = "tungstenite" @@ -4820,17 +5984,52 @@ dependencies = [ "md-5", "rand 0.8.5", "ring 0.16.20", - "stun", + "stun 0.4.4", + "thiserror", + "tokio", + "webrtc-util 0.7.0", +] + +[[package]] +name = "turn" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "58f4fcb97da0426e8146fe0e9b78cc13120161087256198701d12d9df77f7701" +dependencies = [ + "async-trait", + "base64 0.21.5", + "futures", + "log", + "md-5", + "rand 0.8.5", + "ring 0.16.20", + "stun 0.5.0", "thiserror", "tokio", - "webrtc-util", + "webrtc-util 0.8.0", +] + +[[package]] +name = "type_analysis" +version = "2.1.7" +source = "git+https://github.com/RingsNetwork/circom?rev=ea8c4cd987f035ef4f08e17269d9b68cb5ab9122#ea8c4cd987f035ef4f08e17269d9b68cb5ab9122" +dependencies = [ + "num-bigint-dig", + "num-traits", + "program_structure", ] [[package]] name = "typenum" -version = "1.16.0" +version = "1.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" + +[[package]] +name = "ucd-trie" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "497961ef93d974e23eb6f433eb5fe1b7930b659f06d12dec6fc44a8f554c0bba" +checksum = "ed646292ffc8188ef8ea4d1e0e0150fb15a5c2e12ad9b8fc191ae7a8a7f3c4b9" [[package]] name = "uint" @@ -4846,15 +6045,15 @@ dependencies = [ [[package]] name = "unicode-bidi" -version = "0.3.13" +version = "0.3.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92888ba5573ff080736b3648696b70cafad7d250551175acbaa4e0385b3e1460" +checksum = "6f2528f27a9eb2b21e69c95319b30bd0efd85d09c379741b0f78ea1d86be2416" [[package]] name = "unicode-ident" -version = "1.0.9" +version = "1.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b15811caf2415fb889178633e7724bad2509101cde276048e013b9def5e51fa0" +checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" [[package]] name = "unicode-normalization" @@ -4867,9 +6066,9 @@ dependencies = [ [[package]] name = "unicode-width" -version = "0.1.10" +version = "0.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0edd1e5b14653f783770bce4a4dabb4a5108a5370a5f5d8cfe8710c361f6c8b" +checksum = "e51733f11c9c4f72aa0c160008246859e340b00807569a0da0e7a1079b27ba85" [[package]] name = "unicode-xid" @@ -4877,16 +6076,6 @@ version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f962df74c8c05a667b5ee8bcf162993134c104e96440b663c8daa176dc772d8c" -[[package]] -name = "universal-hash" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f214e8f697e925001e66ec2c6e37a4ef93f0f78c2eed7814394e10c62025b05" -dependencies = [ - "generic-array", - "subtle", -] - [[package]] name = "universal-hash" version = "0.5.1" @@ -4899,9 +6088,9 @@ dependencies = [ [[package]] name = "unsafe-libyaml" -version = "0.2.8" +version = "0.2.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1865806a559042e51ab5414598446a5871b561d21b6764f2eabb0dd481d880a6" +checksum = "ab4c90930b95a82d00dc9e9ac071b4991924390d46cbd0dfe566148667605e4b" [[package]] name = "untrusted" @@ -4917,9 +6106,9 @@ checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" [[package]] name = "url" -version = "2.4.0" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50bff7831e19200a85b17131d085c25d7811bc4e186efdaf54bbd132994a88cb" +checksum = "31e6302e3bb753d46e83516cae55ae196fc0c309407cf11ab35cc51a4c2a4633" dependencies = [ "form_urlencoded", "idna", @@ -4945,17 +6134,17 @@ version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bc5cf98d8186244414c848017f0e2676b3fcb46807f6668a97dfe67359a3c4b7" dependencies = [ - "getrandom 0.2.9", + "getrandom 0.2.11", "serde", ] [[package]] name = "uuid" -version = "1.3.3" +version = "1.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "345444e32442451b267fc254ae85a209c64be56d2890e601a0c37ff0c3c5ecd2" +checksum = "5e395fcf16a7a3d8127ec99782007af141946b4795001f876d54fb0d55978560" dependencies = [ - "getrandom 0.2.9", + "getrandom 0.2.11", ] [[package]] @@ -4964,6 +6153,18 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" +[[package]] +name = "vcpkg" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" + +[[package]] +name = "vec_map" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1bddf1187be692e79c5ffeab891132dfb0f236ed36a43c7ed39f1165ee20191" + [[package]] name = "version_check" version = "0.9.4" @@ -4981,11 +6182,10 @@ dependencies = [ [[package]] name = "want" -version = "0.3.0" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ce8a968cb1cd110d136ff8b819a556d6fb6d919363c61534f6860c7eb172ba0" +checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e" dependencies = [ - "log", "try-lock", ] @@ -5003,9 +6203,9 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasm-bindgen" -version = "0.2.87" +version = "0.2.89" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7706a72ab36d8cb1f80ffbf0e071533974a60d0a308d01a5d0375bf60499a342" +checksum = "0ed0d4f68a3015cc185aff4db9506a015f4b96f95303897bfa23f846db54064e" dependencies = [ "cfg-if 1.0.0", "serde", @@ -5015,16 +6215,16 @@ dependencies = [ [[package]] name = "wasm-bindgen-backend" -version = "0.2.87" +version = "0.2.89" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ef2b6d3c510e9625e5fe6f509ab07d66a760f0885d858736483c32ed7809abd" +checksum = "1b56f625e64f3a1084ded111c4d5f477df9f8c92df113852fa5a374dbda78826" dependencies = [ "bumpalo", "log", "once_cell", "proc-macro2", "quote", - "syn 2.0.46", + "syn 2.0.48", "wasm-bindgen-shared", ] @@ -5053,9 +6253,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-futures" -version = "0.4.37" +version = "0.4.39" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c02dbc21516f9f1f04f187958890d7e6026df8d16540b7ad9492bc34a67cea03" +checksum = "ac36a15a220124ac510204aec1c3e5db8a22ab06fd6706d881dc6149f8ed9a12" dependencies = [ "cfg-if 1.0.0", "js-sys", @@ -5065,9 +6265,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.87" +version = "0.2.89" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dee495e55982a3bd48105a7b947fd2a9b4a8ae3010041b9e0faab3f9cd028f1d" +checksum = "0162dbf37223cd2afce98f3d0785506dcb8d266223983e4b5b525859e6e182b2" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -5075,28 +6275,28 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.87" +version = "0.2.89" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54681b18a46765f095758388f2d0cf16eb8d4169b639ab575a8f5693af210c7b" +checksum = "f0eb82fcb7930ae6219a7ecfd55b217f5f0893484b7a13022ebb2b2bf20b5283" dependencies = [ "proc-macro2", "quote", - "syn 2.0.46", + "syn 2.0.48", "wasm-bindgen-backend", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.87" +version = "0.2.89" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca6ad05a4870b2bf5fe995117d3728437bd27d7cd5f06f13c17443ef369775a1" +checksum = "7ab9b36309365056cd639da3134bf87fa8f3d86008abf99e612384a6eecd459f" [[package]] name = "wasm-bindgen-test" -version = "0.3.34" +version = "0.3.39" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6db36fc0f9fb209e88fb3642590ae0205bb5a56216dabd963ba15879fe53a30b" +checksum = "2cf9242c0d27999b831eae4767b2a146feb0b27d332d553e605864acd2afd403" dependencies = [ "console_error_panic_hook", "js-sys", @@ -5108,19 +6308,20 @@ dependencies = [ [[package]] name = "wasm-bindgen-test-macro" -version = "0.3.34" +version = "0.3.39" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0734759ae6b3b1717d661fe4f016efcfb9828f5edb4520c18eaee05af3b43be9" +checksum = "794645f5408c9a039fd09f4d113cdfb2e7eba5ff1956b07bcf701cf4b394fe89" dependencies = [ "proc-macro2", "quote", + "syn 2.0.48", ] [[package]] name = "wasm-encoder" -version = "0.29.0" +version = "0.32.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "18c41dbd92eaebf3612a39be316540b8377c871cb9bde6b064af962984912881" +checksum = "1ba64e81215916eaeb48fee292f29401d69235d62d8b8fd92a7b2844ec5ae5f7" dependencies = [ "leb128", ] @@ -5144,17 +6345,45 @@ dependencies = [ "thiserror", "wasm-bindgen", "wasm-bindgen-downcast", - "wasmer-compiler", - "wasmer-compiler-cranelift", - "wasmer-derive", - "wasmer-types", - "wasmer-vm", + "wasmer-compiler 3.3.0", + "wasmer-compiler-cranelift 3.3.0", + "wasmer-derive 3.3.0", + "wasmer-types 3.3.0", + "wasmer-vm 3.3.0", "wasmparser 0.83.0", "wasmparser 0.95.0", "wat", "winapi", ] +[[package]] +name = "wasmer" +version = "4.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5467c7a23f9be04d5691590bea509dbea27e5ba5810d0020bef908456a495f33" +dependencies = [ + "bytes", + "cfg-if 1.0.0", + "derivative", + "indexmap 1.9.3", + "js-sys", + "more-asserts", + "rustc-demangle", + "serde", + "serde-wasm-bindgen 0.4.5", + "shared-buffer", + "target-lexicon", + "thiserror", + "wasm-bindgen", + "wasmer-compiler 4.2.5", + "wasmer-compiler-cranelift 4.2.5", + "wasmer-derive 4.2.5", + "wasmer-types 4.2.5", + "wasmer-vm 4.2.5", + "wat", + "winapi", +] + [[package]] name = "wasmer-compiler" version = "3.3.0" @@ -5167,13 +6396,40 @@ dependencies = [ "enumset", "lazy_static", "leb128", - "memmap2", + "memmap2 0.5.10", "more-asserts", "region", "smallvec", "thiserror", - "wasmer-types", - "wasmer-vm", + "wasmer-types 3.3.0", + "wasmer-vm 3.3.0", + "wasmparser 0.95.0", + "winapi", +] + +[[package]] +name = "wasmer-compiler" +version = "4.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "510ad01a668d774f3a103a7c219bbc0970be93e8f1b27e2fdb48d1f4ccd1deff" +dependencies = [ + "backtrace", + "bytes", + "cfg-if 1.0.0", + "enum-iterator", + "enumset", + "lazy_static", + "leb128", + "memmap2 0.5.10", + "more-asserts", + "region", + "rkyv", + "self_cell", + "shared-buffer", + "smallvec", + "thiserror", + "wasmer-types 4.2.5", + "wasmer-vm 4.2.5", "wasmparser 0.95.0", "winapi", ] @@ -5193,8 +6449,27 @@ dependencies = [ "smallvec", "target-lexicon", "tracing", - "wasmer-compiler", - "wasmer-types", + "wasmer-compiler 3.3.0", + "wasmer-types 3.3.0", +] + +[[package]] +name = "wasmer-compiler-cranelift" +version = "4.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "54bf93078990d83960d798de3c5935bddaba771fc2fefb9ed6bab9c0bbdea5c1" +dependencies = [ + "cranelift-codegen", + "cranelift-entity", + "cranelift-frontend", + "gimli 0.26.2", + "more-asserts", + "rayon", + "smallvec", + "target-lexicon", + "tracing", + "wasmer-compiler 4.2.5", + "wasmer-types 4.2.5", ] [[package]] @@ -5209,6 +6484,18 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "wasmer-derive" +version = "4.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b374fd34d97b1c091d8675f9bc472df52dc6787d139d3762d42c7dc84813a9b" +dependencies = [ + "proc-macro-error", + "proc-macro2", + "quote", + "syn 1.0.109", +] + [[package]] name = "wasmer-types" version = "3.3.0" @@ -5225,6 +6512,22 @@ dependencies = [ "thiserror", ] +[[package]] +name = "wasmer-types" +version = "4.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0caf1c87937b52aba8e9f920a278e1beda282f7439612c0b48f51a58e7a87bab" +dependencies = [ + "bytecheck", + "enum-iterator", + "enumset", + "indexmap 1.9.3", + "more-asserts", + "rkyv", + "target-lexicon", + "thiserror", +] + [[package]] name = "wasmer-vm" version = "3.3.0" @@ -5248,7 +6551,35 @@ dependencies = [ "region", "scopeguard", "thiserror", - "wasmer-types", + "wasmer-types 3.3.0", + "winapi", +] + +[[package]] +name = "wasmer-vm" +version = "4.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "58315c25492bc72a33f47a7d7fb0869a0106fc0164ec051e349a9e1eddba9a01" +dependencies = [ + "backtrace", + "cc", + "cfg-if 1.0.0", + "corosensei", + "crossbeam-queue", + "dashmap", + "derivative", + "enum-iterator", + "fnv", + "indexmap 1.9.3", + "lazy_static", + "libc", + "mach", + "memoffset 0.9.0", + "more-asserts", + "region", + "scopeguard", + "thiserror", + "wasmer-types 4.2.5", "winapi", ] @@ -5270,9 +6601,20 @@ dependencies = [ [[package]] name = "wast" -version = "60.0.0" +version = "39.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e9bbbd53432b267421186feee3e52436531fa69a7cfee9403f5204352df3dd05" +dependencies = [ + "leb128", + "memchr", + "unicode-width", +] + +[[package]] +name = "wast" +version = "64.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd06cc744b536e30387e72a48fdd492105b9c938bb4f415c39c616a7a0a697ad" +checksum = "a259b226fd6910225aa7baeba82f9d9933b6d00f2ce1b49b80fa4214328237cc" dependencies = [ "leb128", "memchr", @@ -5282,18 +6624,18 @@ dependencies = [ [[package]] name = "wat" -version = "1.0.66" +version = "1.0.71" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5abe520f0ab205366e9ac7d3e6b2fc71de44e32a2b58f2ec871b6b575bdcea3b" +checksum = "53253d920ab413fca1c7dc2161d601c79b4fdf631d0ba51dd4343bf9b556c3f6" dependencies = [ - "wast", + "wast 64.0.0", ] [[package]] name = "web-sys" -version = "0.3.64" +version = "0.3.66" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b85cbef8c220a6abc02aefd892dfc0fc23afb1c6a426316ec33253a3877249b" +checksum = "50c24a44ec86bb68fbecd1b3efed7e85ea5621b39b35ef2766b66cd984f8010f" dependencies = [ "js-sys", "wasm-bindgen", @@ -5311,12 +6653,12 @@ dependencies = [ [[package]] name = "webpki" -version = "0.22.0" +version = "0.22.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f095d78192e208183081cc07bc5515ef55216397af48b873e5edcd72637fa1bd" +checksum = "ed63aea5ce73d0ff405984102c42de94fc55a6b75765d621c65262469b3c9b53" dependencies = [ - "ring 0.16.20", - "untrusted 0.7.1", + "ring 0.17.7", + "untrusted 0.9.0", ] [[package]] @@ -5325,127 +6667,128 @@ version = "0.22.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b6c71e40d7d2c34a5106301fb632274ca37242cd0c9d3e64dbece371a40a2d87" dependencies = [ - "webpki 0.22.0", + "webpki 0.22.4", ] [[package]] name = "webpki-roots" -version = "0.25.2" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14247bb57be4f377dfb94c72830b8ce8fc6beac03cf4bf7b9732eadd414123fc" +checksum = "1778a42e8b3b90bff8d0f5032bf22250792889a5cdc752aa0020c84abe3aaf10" [[package]] name = "webrtc" -version = "0.6.0" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d3bc9049bdb2cea52f5fd4f6f728184225bdb867ed0dc2410eab6df5bdd67bb" +checksum = "f60dde9fd592872bc371b3842e4616bc4c6984242e3cd2a7d7cb771db278601b" dependencies = [ "arc-swap", "async-trait", "bytes", + "cfg-if 0.1.10", "hex", - "interceptor 0.8.2", + "interceptor 0.9.0", "lazy_static", "log", "rand 0.8.5", - "rcgen 0.9.3", + "rcgen 0.10.0", "regex", "ring 0.16.20", - "rtcp 0.7.2", - "rtp 0.6.8", + "rtcp 0.9.0", + "rtp 0.8.0", "rustls 0.19.1", - "sdp", + "sdp 0.5.3", "serde", "serde_json", - "sha2 0.10.6", - "stun", + "sha2 0.10.8", + "smol_str", + "stun 0.4.4", "thiserror", "time", "tokio", - "turn", + "turn 0.6.1", "url", "waitgroup", - "webrtc-data 0.6.0", - "webrtc-dtls", - "webrtc-ice", - "webrtc-mdns", - "webrtc-media 0.5.1", - "webrtc-sctp 0.7.0", - "webrtc-srtp 0.9.1", - "webrtc-util", + "webrtc-data 0.7.0", + "webrtc-dtls 0.7.2", + "webrtc-ice 0.9.1", + "webrtc-mdns 0.5.2", + "webrtc-media 0.6.1", + "webrtc-sctp 0.8.0", + "webrtc-srtp 0.10.0", + "webrtc-util 0.7.0", ] [[package]] name = "webrtc" -version = "0.8.0" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f60dde9fd592872bc371b3842e4616bc4c6984242e3cd2a7d7cb771db278601b" +checksum = "d91e7cf018f7185552bf6a5dd839f4ed9827aea33b746763c9a215f84a0d0b34" dependencies = [ "arc-swap", "async-trait", "bytes", - "cfg-if 0.1.10", + "cfg-if 1.0.0", "hex", - "interceptor 0.9.0", + "interceptor 0.10.0", "lazy_static", "log", "rand 0.8.5", - "rcgen 0.10.0", + "rcgen 0.11.3", "regex", "ring 0.16.20", - "rtcp 0.9.0", - "rtp 0.8.0", - "rustls 0.19.1", - "sdp", + "rtcp 0.10.0", + "rtp 0.9.0", + "rustls 0.21.10", + "sdp 0.6.0", "serde", "serde_json", - "sha2 0.10.6", + "sha2 0.10.8", "smol_str", - "stun", + "stun 0.5.0", "thiserror", "time", "tokio", - "turn", + "turn 0.7.0", "url", "waitgroup", - "webrtc-data 0.7.0", - "webrtc-dtls", - "webrtc-ice", - "webrtc-mdns", - "webrtc-media 0.6.1", - "webrtc-sctp 0.8.0", - "webrtc-srtp 0.10.0", - "webrtc-util", + "webrtc-data 0.8.0", + "webrtc-dtls 0.8.0", + "webrtc-ice 0.10.0", + "webrtc-mdns 0.6.0", + "webrtc-media 0.7.0", + "webrtc-sctp 0.9.0", + "webrtc-srtp 0.11.0", + "webrtc-util 0.8.0", ] [[package]] name = "webrtc-data" -version = "0.6.0" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ef36a4d12baa6e842582fe9ec16a57184ba35e1a09308307b67d43ec8883100" +checksum = "5c3c7ba7d11733e448d8d2d054814e97c558f52293f0e0a2eb05840f28b3be12" dependencies = [ "bytes", "derive_builder", "log", "thiserror", "tokio", - "webrtc-sctp 0.7.0", - "webrtc-util", + "webrtc-sctp 0.8.0", + "webrtc-util 0.7.0", ] [[package]] name = "webrtc-data" -version = "0.7.0" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c3c7ba7d11733e448d8d2d054814e97c558f52293f0e0a2eb05840f28b3be12" +checksum = "a45d2461d0e0bf93f181e30eb0b40df32b8bf3efb89c53cebb1990e603e2067d" dependencies = [ "bytes", - "derive_builder", "log", "thiserror", "tokio", - "webrtc-sctp 0.8.0", - "webrtc-util", + "webrtc-sctp 0.9.0", + "webrtc-util 0.8.0", ] [[package]] @@ -5455,12 +6798,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c4a00f4242f2db33307347bd5be53263c52a0331c96c14292118c9a6bb48d267" dependencies = [ "aes 0.6.0", - "aes-gcm 0.10.2", + "aes-gcm", "async-trait", "bincode", "block-modes", "byteorder", - "ccm", + "ccm 0.3.0", "curve25519-dalek 3.2.0", "der-parser 8.2.0", "elliptic-curve 0.12.3", @@ -5468,7 +6811,7 @@ dependencies = [ "hmac 0.12.1", "log", "p256 0.11.1", - "p384", + "p384 0.11.2", "rand 0.8.5", "rand_core 0.6.4", "rcgen 0.10.0", @@ -5477,17 +6820,53 @@ dependencies = [ "sec1 0.3.0", "serde", "sha1", - "sha2 0.10.6", + "sha2 0.10.8", "signature 1.6.4", "subtle", "thiserror", "tokio", "webpki 0.21.4", - "webrtc-util", + "webrtc-util 0.7.0", "x25519-dalek", "x509-parser 0.13.2", ] +[[package]] +name = "webrtc-dtls" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32b140b953f986e97828aa33ec6318186b05d862bee689efbc57af04a243e832" +dependencies = [ + "aes 0.8.3", + "aes-gcm", + "async-trait", + "bincode", + "byteorder", + "cbc", + "ccm 0.5.0", + "der-parser 8.2.0", + "hkdf", + "hmac 0.12.1", + "log", + "p256 0.13.2", + "p384 0.13.0", + "rand 0.8.5", + "rand_core 0.6.4", + "rcgen 0.11.3", + "ring 0.16.20", + "rustls 0.21.10", + "sec1 0.7.3", + "serde", + "sha1", + "sha2 0.10.8", + "subtle", + "thiserror", + "tokio", + "webrtc-util 0.8.0", + "x25519-dalek", + "x509-parser 0.15.1", +] + [[package]] name = "webrtc-ice" version = "0.9.1" @@ -5501,15 +6880,39 @@ dependencies = [ "rand 0.8.5", "serde", "serde_json", - "stun", + "stun 0.4.4", "thiserror", "tokio", - "turn", + "turn 0.6.1", "url", - "uuid 1.3.3", + "uuid 1.6.1", "waitgroup", - "webrtc-mdns", - "webrtc-util", + "webrtc-mdns 0.5.2", + "webrtc-util 0.7.0", +] + +[[package]] +name = "webrtc-ice" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "66eb4b85646f1c52225779db3e1e7e873dede6db68cc9be080b648f1713083a3" +dependencies = [ + "arc-swap", + "async-trait", + "crc", + "log", + "rand 0.8.5", + "serde", + "serde_json", + "stun 0.5.0", + "thiserror", + "tokio", + "turn 0.7.0", + "url", + "uuid 1.6.1", + "waitgroup", + "webrtc-mdns 0.6.0", + "webrtc-util 0.8.0", ] [[package]] @@ -5519,43 +6922,56 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f08dfd7a6e3987e255c4dbe710dde5d94d0f0574f8a21afa95d171376c143106" dependencies = [ "log", - "socket2 0.4.9", + "socket2 0.4.10", + "thiserror", + "tokio", + "webrtc-util 0.7.0", +] + +[[package]] +name = "webrtc-mdns" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62bebbd40e7f8b630a0f1a74783dbfff1edfc0ccaae891c4689891156a8c4d8c" +dependencies = [ + "log", + "socket2 0.5.5", "thiserror", "tokio", - "webrtc-util", + "webrtc-util 0.8.0", ] [[package]] name = "webrtc-media" -version = "0.5.1" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f72e1650a8ae006017d1a5280efb49e2610c19ccc3c0905b03b648aee9554991" +checksum = "cd8e3711a321f6a375973144f48065cf705316ab6709672954aace020c668eb6" dependencies = [ "byteorder", "bytes", "rand 0.8.5", - "rtp 0.6.8", + "rtp 0.8.0", "thiserror", ] [[package]] name = "webrtc-media" -version = "0.6.1" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd8e3711a321f6a375973144f48065cf705316ab6709672954aace020c668eb6" +checksum = "1cfde3c7b9450b67d466bb2f02c6d9ff9514d33535eb9994942afd1f828839d1" dependencies = [ "byteorder", "bytes", "rand 0.8.5", - "rtp 0.8.0", + "rtp 0.9.0", "thiserror", ] [[package]] name = "webrtc-sctp" -version = "0.7.0" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d47adcd9427eb3ede33d5a7f3424038f63c965491beafcc20bc650a2f6679c0" +checksum = "7df742d91cfbd982f6ab2bfd45a7c3ddfce5b2f55913b2f63877404d1b3259db" dependencies = [ "arc-swap", "async-trait", @@ -5565,14 +6981,14 @@ dependencies = [ "rand 0.8.5", "thiserror", "tokio", - "webrtc-util", + "webrtc-util 0.7.0", ] [[package]] name = "webrtc-sctp" -version = "0.8.0" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7df742d91cfbd982f6ab2bfd45a7c3ddfce5b2f55913b2f63877404d1b3259db" +checksum = "1af6116b7f9703560c3ad0b32f67220b171bb1b59633b03563db8404d0e482ea" dependencies = [ "arc-swap", "async-trait", @@ -5582,54 +6998,53 @@ dependencies = [ "rand 0.8.5", "thiserror", "tokio", - "webrtc-util", + "webrtc-util 0.8.0", ] [[package]] name = "webrtc-srtp" -version = "0.9.1" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6183edc4c1c6c0175f8812eefdce84dfa0aea9c3ece71c2bf6ddd3c964de3da5" +checksum = "5683b597b3c6af47ff11e695697f881bc42acfd8feeb0d4eb20a5ae9caaee6ae" dependencies = [ "aead 0.4.3", "aes 0.7.5", - "aes-gcm 0.9.4", - "async-trait", + "aes-gcm", "byteorder", "bytes", "ctr 0.8.0", - "hmac 0.11.0", + "hmac 0.12.1", "log", - "rtcp 0.7.2", - "rtp 0.6.8", - "sha-1", + "rtcp 0.9.0", + "rtp 0.8.0", + "sha1", "subtle", "thiserror", "tokio", - "webrtc-util", + "webrtc-util 0.7.0", ] [[package]] name = "webrtc-srtp" -version = "0.10.0" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5683b597b3c6af47ff11e695697f881bc42acfd8feeb0d4eb20a5ae9caaee6ae" +checksum = "c1db1f36c1c81e4b1e531c0b9678ba0c93809e196ce62122d87259bb71c03b9f" dependencies = [ - "aead 0.4.3", - "aes 0.7.5", - "aes-gcm 0.10.2", + "aead 0.5.2", + "aes 0.8.3", + "aes-gcm", "byteorder", "bytes", - "ctr 0.8.0", + "ctr 0.9.2", "hmac 0.12.1", "log", - "rtcp 0.9.0", - "rtp 0.8.0", + "rtcp 0.10.0", + "rtp 0.9.0", "sha1", "subtle", "thiserror", "tokio", - "webrtc-util", + "webrtc-util 0.8.0", ] [[package]] @@ -5646,7 +7061,28 @@ dependencies = [ "lazy_static", "libc", "log", - "nix", + "nix 0.24.3", + "rand 0.8.5", + "thiserror", + "tokio", + "winapi", +] + +[[package]] +name = "webrtc-util" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1adc96bee68417e1f4d19dd7698124a7f859db55ae2fd3eedbbb7e732f614735" +dependencies = [ + "async-trait", + "bitflags 1.3.2", + "bytes", + "cc", + "ipnet", + "lazy_static", + "libc", + "log", + "nix 0.26.4", "rand 0.8.5", "thiserror", "tokio", @@ -5662,7 +7098,7 @@ dependencies = [ "either", "home", "once_cell", - "rustix 0.38.13", + "rustix", ] [[package]] @@ -5697,12 +7133,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" [[package]] -name = "windows" -version = "0.48.0" +name = "windows-core" +version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e686886bc078bc1b0b600cac0147aadb815089b6e4da64016cbd754b6342700f" +checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9" dependencies = [ - "windows-targets", + "windows-targets 0.52.0", ] [[package]] @@ -5724,29 +7160,59 @@ version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" dependencies = [ - "windows-targets", + "windows-targets 0.48.5", +] + +[[package]] +name = "windows-sys" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" +dependencies = [ + "windows-targets 0.52.0", ] [[package]] name = "windows-targets" -version = "0.48.0" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b1eb6f0cd7c80c79759c929114ef071b87354ce476d9d94271031c0497adfd5" +checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" dependencies = [ - "windows_aarch64_gnullvm", - "windows_aarch64_msvc 0.48.0", - "windows_i686_gnu 0.48.0", - "windows_i686_msvc 0.48.0", - "windows_x86_64_gnu 0.48.0", - "windows_x86_64_gnullvm", - "windows_x86_64_msvc 0.48.0", + "windows_aarch64_gnullvm 0.48.5", + "windows_aarch64_msvc 0.48.5", + "windows_i686_gnu 0.48.5", + "windows_i686_msvc 0.48.5", + "windows_x86_64_gnu 0.48.5", + "windows_x86_64_gnullvm 0.48.5", + "windows_x86_64_msvc 0.48.5", +] + +[[package]] +name = "windows-targets" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a18201040b24831fbb9e4eb208f8892e1f50a37feb53cc7ff887feb8f50e7cd" +dependencies = [ + "windows_aarch64_gnullvm 0.52.0", + "windows_aarch64_msvc 0.52.0", + "windows_i686_gnu 0.52.0", + "windows_i686_msvc 0.52.0", + "windows_x86_64_gnu 0.52.0", + "windows_x86_64_gnullvm 0.52.0", + "windows_x86_64_msvc 0.52.0", ] [[package]] name = "windows_aarch64_gnullvm" -version = "0.48.0" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91ae572e1b79dba883e0d315474df7305d12f569b400fcf90581b06062f7e1bc" +checksum = "cb7764e35d4db8a7921e09562a0304bf2f93e0a51bfccee0bd0bb0b666b015ea" [[package]] name = "windows_aarch64_msvc" @@ -5756,9 +7222,15 @@ checksum = "cd761fd3eb9ab8cc1ed81e56e567f02dd82c4c837e48ac3b2181b9ffc5060807" [[package]] name = "windows_aarch64_msvc" -version = "0.48.0" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2ef27e0d7bdfcfc7b868b317c1d32c641a6fe4629c171b8928c7b08d98d7cf3" +checksum = "bbaa0368d4f1d2aaefc55b6fcfee13f41544ddf36801e793edbbfd7d7df075ef" [[package]] name = "windows_i686_gnu" @@ -5768,9 +7240,15 @@ checksum = "cab0cf703a96bab2dc0c02c0fa748491294bf9b7feb27e1f4f96340f208ada0e" [[package]] name = "windows_i686_gnu" -version = "0.48.0" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" + +[[package]] +name = "windows_i686_gnu" +version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "622a1962a7db830d6fd0a69683c80a18fda201879f0f447f065a3b7467daa241" +checksum = "a28637cb1fa3560a16915793afb20081aba2c92ee8af57b4d5f28e4b3e7df313" [[package]] name = "windows_i686_msvc" @@ -5780,9 +7258,15 @@ checksum = "8cfdbe89cc9ad7ce618ba34abc34bbb6c36d99e96cae2245b7943cd75ee773d0" [[package]] name = "windows_i686_msvc" -version = "0.48.0" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" + +[[package]] +name = "windows_i686_msvc" +version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4542c6e364ce21bf45d69fdd2a8e455fa38d316158cfd43b3ac1c5b1b19f8e00" +checksum = "ffe5e8e31046ce6230cc7215707b816e339ff4d4d67c65dffa206fd0f7aa7b9a" [[package]] name = "windows_x86_64_gnu" @@ -5792,15 +7276,27 @@ checksum = "b4dd9b0c0e9ece7bb22e84d70d01b71c6d6248b81a3c60d11869451b4cb24784" [[package]] name = "windows_x86_64_gnu" -version = "0.48.0" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca2b8a661f7628cbd23440e50b05d705db3686f894fc9580820623656af974b1" +checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d6fa32db2bc4a2f5abeacf2b69f7992cd09dca97498da74a151a3132c26befd" [[package]] name = "windows_x86_64_gnullvm" -version = "0.48.0" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7896dbc1f41e08872e9d5e8f8baa8fdd2677f29468c4e156210174edc7f7b953" +checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a657e1e9d3f514745a572a6846d3c7aa7dbe1658c056ed9c3344c4109a6949e" [[package]] name = "windows_x86_64_msvc" @@ -5810,15 +7306,21 @@ checksum = "ff1e4aa646495048ec7f3ffddc411e1d829c026a2ec62b39da15c1055e406eaa" [[package]] name = "windows_x86_64_msvc" -version = "0.48.0" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a515f5799fe4961cb532f983ce2b23082366b898e52ffbce459c86f67c8378a" +checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dff9641d1cd4be8d1a070daf9e3773c5f67e78b4d9d42263020c057706765c04" [[package]] name = "winnow" -version = "0.4.6" +version = "0.5.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61de7bac303dc551fe038e2b3cef0f571087a47571ea6e79a87692ac99b99699" +checksum = "b7520bbdec7211caa7c4e682eb1fbe07abe20cee6756b6e00f537c82c11816aa" dependencies = [ "memchr", ] @@ -5853,11 +7355,11 @@ dependencies = [ [[package]] name = "x25519-dalek" -version = "2.0.0-rc.2" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fabd6e16dd08033932fc3265ad4510cc2eab24656058a6dcb107ffe274abcc95" +checksum = "fb66477291e7e8d2b0ff1bcb900bf29489a9692816d79874bea351e7a8b6de96" dependencies = [ - "curve25519-dalek 4.0.0-rc.2", + "curve25519-dalek 4.1.1", "rand_core 0.6.4", "serde", "zeroize", @@ -5876,7 +7378,6 @@ dependencies = [ "lazy_static", "nom", "oid-registry 0.4.0", - "ring 0.16.20", "rusticata-macros", "thiserror", "time", @@ -5901,6 +7402,24 @@ dependencies = [ "time", ] +[[package]] +name = "x509-parser" +version = "0.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7069fba5b66b9193bd2c5d3d4ff12b839118f6bcbef5328efafafb5395cf63da" +dependencies = [ + "asn1-rs 0.5.2", + "data-encoding", + "der-parser 8.2.0", + "lazy_static", + "nom", + "oid-registry 0.6.1", + "ring 0.16.20", + "rusticata-macros", + "thiserror", + "time", +] + [[package]] name = "yasna" version = "0.5.2" @@ -5912,9 +7431,9 @@ dependencies = [ [[package]] name = "zeroize" -version = "1.6.0" +version = "1.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a0956f1ba7c7909bfb66c2e9e4124ab6f6482560f6628b5aaeba39207c9aad9" +checksum = "525b4ec142c6b68a2d10f01f7bbf6755599ca3f81ea53b8431b7dd348f5fdb2d" dependencies = [ "zeroize_derive", ] @@ -5927,5 +7446,5 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ "proc-macro2", "quote", - "syn 2.0.46", + "syn 2.0.48", ] diff --git a/Cargo.toml b/Cargo.toml index 5f05545c0..7517b5c8e 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [workspace] resolver = "2" -members = ["crates/*", "examples/native"] +members = ["crates/*", "examples/native", "examples/snark"] [workspace.package] version = "0.5.2" @@ -17,6 +17,7 @@ rings-core = { path = "crates/core", default-features = false } rings-derive = { path = "crates/derive", default-features = false } rings-node = { path = "crates/node" } rings-rpc = { path = "crates/rpc", default-features = false } +rings-snark = { path = "crates/snark", default-features = false } rings-transport = { path = "crates/transport" } serde-wasm-bindgen = "0.6.1" wasm-bindgen = "0.2.87" diff --git a/Makefile b/Makefile index 121d5b3dd..e779a311b 100644 --- a/Makefile +++ b/Makefile @@ -15,3 +15,8 @@ test-core-wasm: test-node-browser: cd crates/node; wasm-pack test --chrome --features browser_chrome_test --no-default-features + +# You may need to install circomlib by `npm install circomlib` first +build-snark-example-bn256: +# This will generate bitcoin_cpp, thus you may need [https://github.com/nlohmann/json] as deps lib + cargo run -p rings-snark -- ./examples/snark/circoms/simple_bn256.circom --r1cs --wasm --prime pallas -o ./examples/snark/circoms diff --git a/crates/core/Cargo.toml b/crates/core/Cargo.toml index 6b897740b..66c9a7508 100644 --- a/crates/core/Cargo.toml +++ b/crates/core/Cargo.toml @@ -90,7 +90,7 @@ uuid = { version = "0.8.2", optional = true } # default and dummy async-channel = { version = "1.6.1", optional = true } sled = { version = "0.34.7", optional = true } -webrtc = { version = "0.6.0", optional = true } +webrtc = { version = "0.9.0", optional = true } # dummy lazy_static = { version = "1.4.0", optional = true } diff --git a/crates/core/src/lib.rs b/crates/core/src/lib.rs index 9741015b8..2ab17e6e8 100644 --- a/crates/core/src/lib.rs +++ b/crates/core/src/lib.rs @@ -58,6 +58,8 @@ //! ```shell //! cargo build -p rings-core --target=wasm32-unknown-unknown --features wasm --no-default-features //! ``` +#![cfg_attr(target_arch = "wasm32", allow(clippy::arc_with_non_send_sync))] + pub mod channels; pub mod dht; pub mod ecc; diff --git a/crates/core/src/storage/memory.rs b/crates/core/src/storage/memory.rs index 9d3382ee0..fd7354696 100644 --- a/crates/core/src/storage/memory.rs +++ b/crates/core/src/storage/memory.rs @@ -51,11 +51,7 @@ where } pub fn items(&self) -> Vec<(K, V)> { - self.table - .clone() - .into_iter() - .map(|(k, v)| (k, v)) - .collect() + self.table.clone().into_iter().collect() } pub fn remove(&self, addr: &K) -> Option<(K, V)> { diff --git a/crates/core/src/tests/wasm/test_fn_macro.rs b/crates/core/src/tests/wasm/test_fn_macro.rs index d1a735d1f..2803703fc 100644 --- a/crates/core/src/tests/wasm/test_fn_macro.rs +++ b/crates/core/src/tests/wasm/test_fn_macro.rs @@ -36,11 +36,7 @@ async fn test_try_into() { let a = "hello".to_string(); let b = " ".to_string(); let c = "world".to_string(); - let p: Vec = vec![ - a.try_into().unwrap(), - b.try_into().unwrap(), - c.try_into().unwrap(), - ]; + let p: Vec = vec![a.into(), b.into(), c.into()]; let array = Array::from_iter(p.into_iter()); assert_eq!(array.to_vec().len(), 3, "{:?}", array.to_vec()); } diff --git a/crates/node/src/error.rs b/crates/node/src/error.rs index a0a124d06..ab9f087f8 100644 --- a/crates/node/src/error.rs +++ b/crates/node/src/error.rs @@ -165,6 +165,13 @@ impl From for Error { } } +#[cfg(feature = "browser")] +impl From for wasm_bindgen::JsValue { + fn from(err: Error) -> Self { + wasm_bindgen::JsValue::from_str(&err.to_string()) + } +} + #[cfg(test)] mod tests { use super::*; @@ -174,10 +181,3 @@ mod tests { assert_eq!(err.code(), 100); } } - -#[cfg(feature = "browser")] -impl From for wasm_bindgen::JsValue { - fn from(err: Error) -> Self { - wasm_bindgen::JsValue::from_str(&err.to_string()) - } -} diff --git a/crates/node/src/lib.rs b/crates/node/src/lib.rs index 7036ca32b..6a0c3d44f 100644 --- a/crates/node/src/lib.rs +++ b/crates/node/src/lib.rs @@ -1,5 +1,5 @@ #![doc = include_str!("../README.md")] - +#![cfg_attr(target_arch = "wasm32", allow(clippy::arc_with_non_send_sync))] pub mod backend; pub mod consts; pub mod error; diff --git a/crates/node/src/processor.rs b/crates/node/src/processor.rs index 635a51aa2..6b4936884 100644 --- a/crates/node/src/processor.rs +++ b/crates/node/src/processor.rs @@ -419,7 +419,7 @@ mod test { processor.swarm.create_offer(peer_did).await.unwrap(); let conn_dids = processor.swarm.get_connection_ids(); assert_eq!(conn_dids.len(), 1); - assert_eq!(conn_dids.get(0).unwrap(), &peer_did); + assert_eq!(conn_dids.first().unwrap(), &peer_did); tokio::fs::remove_dir_all(path).await.unwrap(); } diff --git a/crates/node/src/tests/wasm/browser.rs b/crates/node/src/tests/wasm/browser.rs index dc793a9a2..fa87c7041 100644 --- a/crates/node/src/tests/wasm/browser.rs +++ b/crates/node/src/tests/wasm/browser.rs @@ -98,7 +98,7 @@ async fn test_two_provider_connect_and_list() { let peers = get_peers(&provider1).await; assert!(peers.len() == 1, "peers len should be 1"); - let peer2 = peers.get(0).unwrap(); + let peer2 = peers.first().unwrap(); console_log!("get peer"); let peer2: Peer = js_value::deserialize( diff --git a/crates/snark/.cargo/config.toml b/crates/snark/.cargo/config.toml new file mode 100644 index 000000000..f8504ca79 --- /dev/null +++ b/crates/snark/.cargo/config.toml @@ -0,0 +1,2 @@ +[alias] +tex_doc = "rustdoc --lib -- --html-in-header crates/snark/docs/katex.html" \ No newline at end of file diff --git a/crates/snark/Cargo.toml b/crates/snark/Cargo.toml new file mode 100644 index 000000000..387502728 --- /dev/null +++ b/crates/snark/Cargo.toml @@ -0,0 +1,56 @@ +[package] +name = "rings-snark" +description = "IVC SNARK implementation of Rings Network" +version.workspace = true +edition.workspace = true +license.workspace = true +authors.workspace = true +repository.workspace = true + +[features] +default = [] + +[dependencies] +# https://github.com/microsoft/Nova +nova-snark = "0.32" + +ff = { version = "0.13", features = ["derive"] } + +# ref: https://electriccoin.co/blog/the-pasta-curves-for-halo-2-and-beyond/ +circom-scotia = { git = "https://github.com/RingsNetwork/circom-scotia", rev = "d453cc8cf55e62712762282b2c531b7a02787190", features = ["circom-2"] } +pasta_curves = "0.5" +# We wrapped cicrom as binary +circom = { git = "https://github.com/RingsNetwork/circom", rev = "ea8c4cd987f035ef4f08e17269d9b68cb5ab9122", version = "2.1.7" } +# Required for avoiding error from circom/parser +lalrpop = { version = "0.19.9", features = ["lexer"] } +log = { version = "0.4", features = ["std"] } + +# for load r1cs +byteorder = "1.4.3" +crypto-bigint = { version = "0.5.2", features = ["serde"] } +serde = { version = "1.0.136", features = ["derive"] } +serde_json = "1.0.70" +thiserror = "1" + +bellpepper-core = "0.4.0" +reqwest = { version = "0.11", features = ["json", "rustls-tls"] } + +[dev-dependencies] +# only for unitest +tokio = { version = "1.13.0", features = ["full"] } + +[target.'cfg(not(target_arch = "wasm32"))'.dependencies] +wasmer = "4.0.0" + +[target.'cfg(target_arch = "wasm32")'.dependencies] +wasmer = { version = "4.0.0", features = ["std", "js"], default-features = false } + +[package.metadata.docs.rs] +rustdoc-args = [ + "--html-in-header", + "crates/snark/docs/katex.html", +] + +[[bin]] +name = "circom" +path = "bin/circom.rs" diff --git a/crates/snark/README.md b/crates/snark/README.md new file mode 100644 index 000000000..547d72177 --- /dev/null +++ b/crates/snark/README.md @@ -0,0 +1,14 @@ + + + Rings Network + + +# Rings SNARK +====================== + +[![rings-node](https://github.com/RingsNetwork/rings-node/actions/workflows/auto-release.yml/badge.svg)](https://github.com/RingsNetwork/rings-node/actions/workflows/auto-release.yml) +[![cargo](https://img.shields.io/crates/v/rings-node.svg)](https://crates.io/crates/rings-node) +[![docs](https://docs.rs/rings-node/badge.svg)](https://docs.rs/rings-node/latest/rings_node/) +![GitHub](https://img.shields.io/github/license/RingsNetwork/rings-node) + +This create contains the implementation of Rings SNARK, which is based on Nova diff --git a/crates/snark/bin/circom.rs b/crates/snark/bin/circom.rs new file mode 100644 index 000000000..b090809cf --- /dev/null +++ b/crates/snark/bin/circom.rs @@ -0,0 +1,61 @@ +//! Circom compiler +//! ============= +//! reimport from `` + +use circom::input_user::Input; + +fn main() { + let result = start(); + if result.is_err() { + log::error!("previous errors were found"); + std::process::exit(1); + } else { + log::info!("Everything went okay"); + std::process::exit(0); + } +} + +fn start() -> Result<(), ()> { + use circom::compilation_user::CompilerConfig; + use circom::execution_user::ExecutionConfig; + let user_input = Input::new()?; + let mut program_archive = circom::parser_user::parse_project(&user_input)?; + circom::type_analysis_user::analyse_project(&mut program_archive)?; + + let config = ExecutionConfig { + no_rounds: user_input.no_rounds(), + flag_p: user_input.parallel_simplification_flag(), + flag_s: user_input.reduced_simplification_flag(), + flag_f: user_input.unsimplified_flag(), + flag_old_heuristics: user_input.flag_old_heuristics(), + flag_verbose: user_input.flag_verbose(), + inspect_constraints_flag: user_input.inspect_constraints_flag(), + r1cs_flag: user_input.r1cs_flag(), + json_constraint_flag: user_input.json_constraints_flag(), + json_substitution_flag: user_input.json_substitutions_flag(), + sym_flag: user_input.sym_flag(), + sym: user_input.sym_file().to_string(), + r1cs: user_input.r1cs_file().to_string(), + json_constraints: user_input.json_constraints_file().to_string(), + prime: user_input.prime(), + }; + let circuit = circom::execution_user::execute_project(program_archive, config)?; + let compilation_config = CompilerConfig { + vcp: circuit, + debug_output: user_input.print_ir_flag(), + c_flag: user_input.c_flag(), + wasm_flag: user_input.wasm_flag(), + wat_flag: user_input.wat_flag(), + js_folder: user_input.js_folder().to_string(), + wasm_name: user_input.wasm_name().to_string(), + c_folder: user_input.c_folder().to_string(), + c_run_name: user_input.c_run_name().to_string(), + c_file: user_input.c_file().to_string(), + dat_file: user_input.dat_file().to_string(), + wat_file: user_input.wat_file().to_string(), + wasm_file: user_input.wasm_file().to_string(), + produce_input_log: user_input.main_inputs_flag(), + }; + circom::compilation_user::compile(compilation_config)?; + Result::Ok(()) +} diff --git a/crates/snark/src/circuit.rs b/crates/snark/src/circuit.rs new file mode 100644 index 000000000..78464bde4 --- /dev/null +++ b/crates/snark/src/circuit.rs @@ -0,0 +1,226 @@ +//! Implementation of Circuit +//! ========================== +use std::cell::RefCell; +use std::rc::Rc; +use std::sync::Arc; + +use bellpepper_core::num::AllocatedNum; +use bellpepper_core::ConstraintSystem; +use bellpepper_core::LinearCombination; +use bellpepper_core::SynthesisError; +use circom_scotia::r1cs::R1CS; +use circom_scotia::witness::WitnessCalculator; +use ff::PrimeField; +use nova_snark::traits::circuit::StepCircuit; + +use crate::error::Result; +use crate::r1cs::TyWitness; + +/// Input of witness +pub type TyInput = Vec<(String, Vec)>; + +/// Flat a witness input to values +pub fn flat_input(input: TyInput) -> Vec { + input.into_iter().flat_map(|(_, v)| v).collect() +} + +/// Calculate length of input +pub fn input_len(input: &TyInput) -> usize { + input.iter().flat_map(|(_, v)| v).collect::>().len() +} + +/// Circuit +#[derive(Clone, Debug)] +pub struct Circuit { + r1cs: Arc>, + witness: TyWitness, +} + +impl AsRef> for &Circuit { + fn as_ref(&self) -> &Circuit { + self + } +} + +/// Wasm based circuit generator +pub struct WasmCircuitGenerator { + r1cs: Arc>, + calculator: Rc>, +} + +impl WasmCircuitGenerator { + /// Crate new instance + pub fn new(r1cs: R1CS, calculator: WitnessCalculator) -> Self { + Self { + r1cs: Arc::new(r1cs), + calculator: Rc::new(RefCell::new(calculator)), + } + } + + /// Generate iterator circuit list + /// Which iterate inputs and generate circuit + pub fn gen_circuit(&self, input: TyInput, sanity_check: bool) -> Result> + where F: PrimeField { + let mut calc = self.calculator.borrow_mut(); + let witness: TyWitness = calc.calculate_witness::(input.clone(), sanity_check)?; + let circom = Circuit:: { + r1cs: self.r1cs.clone(), + witness, + }; + Ok(circom) + } + + /// Generate recursive circuit list + /// Which use $output_{i-1}$ as $input_i$ + pub fn gen_recursive_circuit( + &self, + public_input: TyInput, + private_inputs: Vec>, + times: usize, + sanity_check: bool, + ) -> Result>> + where + F: PrimeField, + { + fn reshape( + input: &[(String, Vec)], + output: &[F], + ) -> Vec<(String, Vec)> { + let mut ret = vec![]; + let mut iter = output.iter(); + + for (val, vec) in input.iter() { + let size = vec.len(); + let mut new_vec: Vec = Vec::with_capacity(size); + for _ in 0..size { + if let Some(item) = iter.next() { + new_vec.push(*item); + } else { + panic!( + "Failed on reshape output {:?} as input format {:?}", + output, input + ) + } + } + ret.push((val.clone(), new_vec)); + } + ret + } + + let mut ret = vec![]; + let mut calc = self.calculator.borrow_mut(); + let mut latest_output: Vec<(String, Vec)> = vec![]; + let input_len = input_len(&public_input); + + for i in 0..times { + let witness: TyWitness = if latest_output.is_empty() { + let mut input = public_input.clone(); + if let Some(p) = private_inputs.get(i) { + input.extend(p.clone()); + } + calc.calculate_witness::(input, sanity_check)? + } else { + let mut input = latest_output.clone(); + if let Some(p) = private_inputs.get(i) { + input.extend(p.clone()); + } + calc.calculate_witness::(input, sanity_check)? + }; + let circom = Circuit:: { + r1cs: self.r1cs.clone(), + witness: witness.clone(), + }; + log::trace!("witness: {:?}, r1cs: {:?}", witness, self.r1cs); + latest_output = reshape(&public_input, &circom.get_public_outputs(input_len)); + ret.push(circom); + } + Ok(ret) + } +} + +impl Circuit { + /// Create a new instance + pub fn new(r1cs: Arc>, witness: TyWitness) -> Self { + Self { r1cs, witness } + } + + /// get public outputs from witness + pub fn get_public_outputs(&self, input_size: usize) -> Vec { + // witness: <1> + // NOTE: assumes exactly half of the (public inputs + outputs) are outputs + let output_count = self.r1cs.num_inputs - input_size - 1; + self.witness[1..output_count + 1].to_vec() + } +} + +/// Implement StepCircuit for our Circuit +/// Reference work: Nota-Scotia :: CircomCircuit +/// `` +/// NOTE: assumes exactly half of the (public inputs + outputs) are outputs +impl StepCircuit for Circuit { + fn arity(&self) -> usize { + (self.r1cs.num_inputs - 1) / 2 + } + + /// Simple synthesize + fn synthesize>( + &self, + cs: &mut CS, + z: &[AllocatedNum], + ) -> core::result::Result>, SynthesisError> { + let mut vars: Vec> = vec![]; + let mut z_out: Vec> = vec![]; + let pub_output_count = (self.r1cs.num_inputs - 1) / 2; + + for i in 1..self.r1cs.num_inputs { + // Public inputs do not exist, so we alloc, and later enforce equality from z values + let f: F = self.witness[i]; + let v = AllocatedNum::alloc(cs.namespace(|| format!("public_{}", i)), || Ok(f))?; + + vars.push(v.clone()); + if i <= pub_output_count { + // public output + z_out.push(v); + } + } + for i in 0..self.r1cs.num_aux { + // Private witness trace + let f: F = self.witness[i + self.r1cs.num_inputs]; + let v = AllocatedNum::alloc(cs.namespace(|| format!("aux_{}", i)), || Ok(f))?; + vars.push(v); + } + + let make_lc = |lc_data: Vec<(usize, F)>| { + let res = lc_data.iter().fold( + LinearCombination::::zero(), + |lc: LinearCombination, (index, coeff)| { + lc + if *index > 0_usize { + (*coeff, vars[*index - 1].get_variable()) + } else { + (*coeff, CS::one()) + } + }, + ); + res + }; + for (i, constraint) in self.r1cs.constraints.iter().enumerate() { + cs.enforce( + || format!("constraint {}", i), + |_| make_lc(constraint.0.clone()), + |_| make_lc(constraint.1.clone()), + |_| make_lc(constraint.2.clone()), + ); + } + + for i in (pub_output_count + 1)..self.r1cs.num_inputs { + cs.enforce( + || format!("pub input enforce {}", i), + |lc| lc + z[i - 1 - pub_output_count].get_variable(), + |lc| lc + CS::one(), + |lc| lc + vars[i - 1].get_variable(), + ); + } + + Ok(z_out) + } +} diff --git a/crates/snark/src/error.rs b/crates/snark/src/error.rs new file mode 100644 index 000000000..fba120120 --- /dev/null +++ b/crates/snark/src/error.rs @@ -0,0 +1,15 @@ +//! Error module of snark crate + +/// A wrap `Result` contains custom errors. +pub type Result = std::result::Result>; + +/// Errors collections in rings-snark +#[derive(thiserror::Error, Debug)] +pub enum Error { + /// Request error from reqwest + #[error("Invalid http request: {0}")] + HttpRequestError(#[from] reqwest::Error), + /// Error on load witness at path + #[error("Error on load witness calculator at path {0}")] + WASMFailedToLoad(String), +} diff --git a/crates/snark/src/lib.rs b/crates/snark/src/lib.rs new file mode 100644 index 000000000..a47a32268 --- /dev/null +++ b/crates/snark/src/lib.rs @@ -0,0 +1,13 @@ +//! Rings SNARK +//! =============== +//! This implementation is based on NOVA + +#![warn(missing_docs)] + +pub mod circuit; +pub mod error; +pub mod prelude; +pub mod r1cs; +pub mod snark; +#[cfg(test)] +mod tests; diff --git a/crates/snark/src/prelude.rs b/crates/snark/src/prelude.rs new file mode 100644 index 000000000..2154b0061 --- /dev/null +++ b/crates/snark/src/prelude.rs @@ -0,0 +1,3 @@ +//! reimport libs here +pub use nova_snark as nova; +pub use pasta_curves as curves; diff --git a/crates/snark/src/r1cs.rs b/crates/snark/src/r1cs.rs new file mode 100644 index 000000000..a0ebf09f2 --- /dev/null +++ b/crates/snark/src/r1cs.rs @@ -0,0 +1,122 @@ +//! Utils for r1cs +use std::io::Cursor; + +use circom_scotia::r1cs::R1CS; +use circom_scotia::reader; +use circom_scotia::witness::WitnessCalculator; +use ff::PrimeField; +use wasmer::Module; + +use crate::error::Error; +use crate::error::Result; + +/// Path of a r1cs +#[derive(Debug, Clone, PartialEq, Eq)] +pub enum Path { + /// Local filesystem path + Local(String), + /// A remote resource needs to fetch + Remote(String), +} + +/// format of R1CS, can be bin or json format +pub enum Format { + /// JSON format + Json, + /// BIN Format + Bin, +} + +/// Define witness, which is a vector of prime field. +pub type TyWitness = Vec; + +/// Fetch remote resources to Read +pub(crate) async fn fetch(url: &str) -> Result>> { + let resp = reqwest::get(url).await?; + let bytes = resp.bytes().await?; + Ok(Cursor::new(bytes.to_vec())) +} + +/// Fetch remote r1cs +pub async fn load_r1cs_remote(url: &str, format: Format) -> Result> { + let data = fetch(url).await?; + let ret = match format { + Format::Json => reader::load_r1cs_from_json::>>(data), + Format::Bin => reader::load_r1cs_from_bin::>>(data), + }; + Ok(ret) +} + +/// Load local r1cs +pub fn load_r1cs_local( + path: impl AsRef, + format: Format, +) -> Result> { + let ret = match format { + Format::Json => reader::load_r1cs_from_json_file::(path), + Format::Bin => reader::load_r1cs_from_bin_file::(path), + }; + Ok(ret) +} + +/// Load r1cs, the resource path can be remote local, and both bin and json are supported +pub async fn load_r1cs(path: Path, format: Format) -> Result> { + let ret = match path { + Path::Local(p) => load_r1cs_local::(p, format)?, + Path::Remote(url) => load_r1cs_remote::(&url, format).await?, + }; + Ok(ret) +} + +/// Fetch remote witness +pub async fn load_witness_remote(url: &str, format: Format) -> Result> { + let data = fetch(url).await?; + let ret = match format { + Format::Json => reader::load_witness_from_bin_reader::>>(data)?, + Format::Bin => reader::load_witness_from_json::>>(data), + }; + Ok(ret) +} + +/// Load witness local +pub fn load_witness_local( + path: impl AsRef, + format: Format, +) -> Result> { + let ret = match format { + Format::Json => reader::load_witness_from_bin_file::(path), + Format::Bin => reader::load_witness_from_json_file::(path), + }; + Ok(ret) +} + +/// Load r1cs, the resource path can be remote local, and both bin and json are supported +pub async fn load_witness(path: Path, format: Format) -> Result> { + match path { + Path::Local(p) => load_witness_local::(p, format), + Path::Remote(url) => load_witness_remote::(&url, format).await, + } +} + +/// Load witness calculator from local path +pub fn load_circom_witness_calculator_local( + path: impl AsRef, +) -> Result { + Ok(WitnessCalculator::from_file(path).map_err(|e| Error::WASMFailedToLoad(e.to_string()))?) +} + +/// Load witness calculator from remote path +pub async fn load_circom_witness_calculator_remote(path: &str) -> Result { + let store = WitnessCalculator::new_store(); + let data = fetch(path).await?; + let module = Module::from_binary(&store, data.get_ref().as_slice())?; + Ok(WitnessCalculator::from_module(module, store)?) +} + +/// Load witness calculator from local path or remote url +pub async fn load_circom_witness_calculator(path: Path) -> Result { + match path { + Path::Local(p) => load_circom_witness_calculator_local(p), + Path::Remote(url) => load_circom_witness_calculator_remote(&url).await, + } +} diff --git a/crates/snark/src/snark/impls.rs b/crates/snark/src/snark/impls.rs new file mode 100644 index 000000000..7612ed585 --- /dev/null +++ b/crates/snark/src/snark/impls.rs @@ -0,0 +1,179 @@ +use std::ops::Deref; +use std::ops::DerefMut; + +use super::ProverKey; +use super::PublicParams; +use super::VerifierKey; +use super::SNARK; +use crate::circuit::Circuit; +use crate::prelude::nova; +use crate::prelude::nova::traits::circuit::TrivialCircuit; +use crate::prelude::nova::traits::snark::RelaxedR1CSSNARKTrait; +use crate::prelude::nova::traits::Engine; +use crate::prelude::nova::RecursiveSNARK; + +impl AsRef> for SNARK +where + E1: Engine::Scalar>, + E2: Engine::Scalar>, +{ + fn as_ref(&self) -> &Self { + self + } +} + +impl Deref for SNARK +where + E1: Engine::Scalar>, + E2: Engine::Scalar>, +{ + type Target = + RecursiveSNARK::Scalar>, TrivialCircuit>; + fn deref(&self) -> &Self::Target { + &self.inner + } +} + +impl DerefMut for SNARK +where + E1: Engine::Scalar>, + E2: Engine::Scalar>, +{ + fn deref_mut(&mut self) -> &mut Self::Target { + &mut self.inner + } +} + +impl + From::Scalar>, TrivialCircuit>> + for PublicParams +where + E1: Engine::Scalar>, + E2: Engine::Scalar>, +{ + fn from( + pp: nova::PublicParams::Scalar>, TrivialCircuit>, + ) -> Self { + Self { inner: pp } + } +} + +impl Deref for PublicParams +where + E1: Engine::Scalar>, + E2: Engine::Scalar>, +{ + type Target = + nova::PublicParams::Scalar>, TrivialCircuit>; + fn deref(&self) -> &Self::Target { + &self.inner + } +} + +impl DerefMut for PublicParams +where + E1: Engine::Scalar>, + E2: Engine::Scalar>, +{ + fn deref_mut(&mut self) -> &mut Self::Target { + &mut self.inner + } +} + +impl AsRef> for PublicParams +where + E1: Engine::Scalar>, + E2: Engine::Scalar>, +{ + fn as_ref(&self) -> &Self { + self + } +} + +impl Deref for ProverKey +where + E1: Engine::Scalar>, + E2: Engine::Scalar>, + S1: RelaxedR1CSSNARKTrait, + S2: RelaxedR1CSSNARKTrait, +{ + type Target = nova::ProverKey< + E1, + E2, + Circuit<::Scalar>, + TrivialCircuit<::Scalar>, + S1, + S2, + >; + fn deref(&self) -> &Self::Target { + &self.pk + } +} + +impl DerefMut for ProverKey +where + E1: Engine::Scalar>, + E2: Engine::Scalar>, + S1: RelaxedR1CSSNARKTrait, + S2: RelaxedR1CSSNARKTrait, +{ + fn deref_mut(&mut self) -> &mut Self::Target { + &mut self.pk + } +} + +impl AsRef> for ProverKey +where + E1: Engine::Scalar>, + E2: Engine::Scalar>, + S1: RelaxedR1CSSNARKTrait, + S2: RelaxedR1CSSNARKTrait, +{ + fn as_ref(&self) -> &Self { + self + } +} + +impl Deref for VerifierKey +where + E1: Engine::Scalar>, + E2: Engine::Scalar>, + S1: RelaxedR1CSSNARKTrait, + S2: RelaxedR1CSSNARKTrait, +{ + type Target = nova::VerifierKey< + E1, + E2, + Circuit<::Scalar>, + TrivialCircuit<::Scalar>, + S1, + S2, + >; + fn deref(&self) -> &Self::Target { + &self.vk + } +} + +impl DerefMut for VerifierKey +where + E1: Engine::Scalar>, + E2: Engine::Scalar>, + S1: RelaxedR1CSSNARKTrait, + S2: RelaxedR1CSSNARKTrait, +{ + fn deref_mut(&mut self) -> &mut Self::Target { + &mut self.vk + } +} + +impl AsRef> for VerifierKey +where + E1: Engine::Scalar>, + E2: Engine::Scalar>, + S1: RelaxedR1CSSNARKTrait, + S2: RelaxedR1CSSNARKTrait, +{ + fn as_ref(&self) -> &Self { + self + } +} diff --git a/crates/snark/src/snark/mod.rs b/crates/snark/src/snark/mod.rs new file mode 100644 index 000000000..020ad15d7 --- /dev/null +++ b/crates/snark/src/snark/mod.rs @@ -0,0 +1,238 @@ +//! Implementation of Rings Snark +//! ============== +#![allow(clippy::type_complexity)] +mod impls; +use std::ops::Deref; +use std::ops::DerefMut; + +use ff::Field; +use serde::Deserialize; +use serde::Serialize; + +use crate::circuit::flat_input; +use crate::circuit::Circuit; +use crate::circuit::TyInput; +use crate::error::Result; +use crate::prelude::nova; +use crate::prelude::nova::traits::circuit::TrivialCircuit; +use crate::prelude::nova::traits::snark::RelaxedR1CSSNARKTrait; +use crate::prelude::nova::traits::Engine; +use crate::prelude::nova::CompressedSNARK; +use crate::prelude::nova::RecursiveSNARK; + +/// Rings Snark implementation, a wrapper of nova's recursion snark and compressed snark +#[derive(Serialize, Deserialize)] +pub struct SNARK +where + E1: Engine::Scalar>, + E2: Engine::Scalar>, +{ + /// recursive snark + #[serde(flatten)] + pub inner: RecursiveSNARK::Scalar>, TrivialCircuit>, +} + +/// Wrap of nova's public params +#[derive(Serialize, Deserialize)] +pub struct PublicParams +where + E1: Engine::Scalar>, + E2: Engine::Scalar>, +{ + /// public params + #[serde(flatten)] + pub inner: + nova::PublicParams::Scalar>, TrivialCircuit>, +} + +/// Wrap of nova's prover key +pub struct ProverKey +where + E1: Engine::Scalar>, + E2: Engine::Scalar>, + S1: RelaxedR1CSSNARKTrait, + S2: RelaxedR1CSSNARKTrait, +{ + /// prove key + pub pk: nova::ProverKey< + E1, + E2, + Circuit<::Scalar>, + TrivialCircuit<::Scalar>, + S1, + S2, + >, +} + +/// Wrap of nova's verifier key +pub struct VerifierKey +where + E1: Engine::Scalar>, + E2: Engine::Scalar>, + S1: RelaxedR1CSSNARKTrait, + S2: RelaxedR1CSSNARKTrait, +{ + /// verifier key + pub vk: nova::VerifierKey< + E1, + E2, + Circuit<::Scalar>, + TrivialCircuit<::Scalar>, + S1, + S2, + >, +} + +impl SNARK +where + E1: Engine::Scalar>, + E2: Engine::Scalar>, +{ + /// Create public params + pub fn gen_pp(circom: Circuit) -> PublicParams + where + S1: RelaxedR1CSSNARKTrait, + S2: RelaxedR1CSSNARKTrait, + { + let circuit_primary = circom.clone(); + let circuit_secondary = TrivialCircuit::::default(); + nova::PublicParams::setup( + &circuit_primary, + &circuit_secondary, + S1::ck_floor().deref(), + S2::ck_floor().deref(), + ) + .into() + } + + /// Create public params with circom, and public input + pub fn new( + circom: impl AsRef>, + public_inputs: impl AsRef>, + pp: impl AsRef>, + ) -> Result { + // flat public input here + let public_inputs = flat_input::(public_inputs.as_ref().clone()); + let circuit_secondary = TrivialCircuit::::default(); + // default input for secondary on initialize round is [0] + let secondary_inputs = [<::Scalar as Field>::ZERO]; + let inner = RecursiveSNARK::new( + pp.as_ref(), + circom.as_ref(), + &circuit_secondary, + &public_inputs, + &secondary_inputs, + )?; + Ok(Self { inner }) + } + + /// This folder will create a new snark instance + pub fn fold_clone( + &self, + pp: impl AsRef>, + circom: impl AsRef>, + ) -> Result { + // Create a new instance here + let mut snark = Self { + inner: self.deref().clone(), + }; + snark.foldr(pp, circom)?; + Ok(snark) + } + + /// Fold next circuit + pub fn foldr( + &mut self, + pp: impl AsRef>, + circom: impl AsRef>, + ) -> Result<()> { + let circuit_secondary = TrivialCircuit::::default(); + let snark = self.deref_mut(); + snark.prove_step(pp.as_ref(), circom.as_ref(), &circuit_secondary)?; + Ok(()) + } + + /// Verify the correctness of the `RecursiveSNARK` + /// Gen compress snark + pub fn verify( + &self, + pp: impl AsRef>, + num_steps: usize, + z0_primary: impl AsRef<[E1::Scalar]>, + z0_secondary: impl AsRef<[E2::Scalar]>, + ) -> Result<(Vec, Vec)> { + Ok(self.deref().verify( + pp.as_ref(), + num_steps, + z0_primary.as_ref(), + z0_secondary.as_ref(), + )?) + } + + /// Gen compress snark + pub fn compress_setup( + pp: impl AsRef>, + ) -> Result<(ProverKey, VerifierKey)> + where + S1: RelaxedR1CSSNARKTrait, + S2: RelaxedR1CSSNARKTrait, + { + let (pk, vk) = CompressedSNARK::setup(pp.as_ref())?; + Ok((ProverKey { pk }, VerifierKey { vk })) + } + + /// gen compress_proof + pub fn compress_prove( + &self, + pp: impl AsRef>, + pk: impl AsRef>, + ) -> Result< + CompressedSNARK< + E1, + E2, + Circuit<::Scalar>, + TrivialCircuit, + S1, + S2, + >, + > + where + S1: RelaxedR1CSSNARKTrait, + S2: RelaxedR1CSSNARKTrait, + { + Ok(CompressedSNARK::< + E1, + E2, + Circuit<::Scalar>, + TrivialCircuit, + S1, + S2, + >::prove(pp.as_ref(), pk.as_ref(), self)?) + } + + /// gen compress_proof + pub fn compress_verify( + proof: impl AsRef< + CompressedSNARK< + E1, + E2, + Circuit<::Scalar>, + TrivialCircuit, + S1, + S2, + >, + >, + vk: impl AsRef>, + num_steps: usize, + public_inputs: impl AsRef<[E1::Scalar]>, + ) -> Result<(Vec, Vec)> + where + S1: RelaxedR1CSSNARKTrait, + S2: RelaxedR1CSSNARKTrait, + { + let z1 = vec![E2::Scalar::from(0)]; + Ok(proof + .as_ref() + .verify(vk.as_ref(), num_steps, public_inputs.as_ref(), &z1)?) + } +} diff --git a/crates/snark/src/tests/circoms/sha256/circom_sha256.r1cs b/crates/snark/src/tests/circoms/sha256/circom_sha256.r1cs new file mode 100644 index 000000000..d57df8d7e Binary files /dev/null and b/crates/snark/src/tests/circoms/sha256/circom_sha256.r1cs differ diff --git a/crates/snark/src/tests/circoms/sha256/circom_sha256.wasm b/crates/snark/src/tests/circoms/sha256/circom_sha256.wasm new file mode 100644 index 000000000..21264fb27 Binary files /dev/null and b/crates/snark/src/tests/circoms/sha256/circom_sha256.wasm differ diff --git a/crates/snark/src/tests/circoms/simple_bn256.r1cs b/crates/snark/src/tests/circoms/simple_bn256.r1cs new file mode 100644 index 000000000..726516412 Binary files /dev/null and b/crates/snark/src/tests/circoms/simple_bn256.r1cs differ diff --git a/crates/snark/src/tests/circoms/simple_bn256.wasm b/crates/snark/src/tests/circoms/simple_bn256.wasm new file mode 100644 index 000000000..608bfd12c Binary files /dev/null and b/crates/snark/src/tests/circoms/simple_bn256.wasm differ diff --git a/crates/snark/src/tests/circoms/simple_bn256_priv.r1cs b/crates/snark/src/tests/circoms/simple_bn256_priv.r1cs new file mode 100644 index 000000000..08fb7ad99 Binary files /dev/null and b/crates/snark/src/tests/circoms/simple_bn256_priv.r1cs differ diff --git a/crates/snark/src/tests/circoms/simple_bn256_priv.wasm b/crates/snark/src/tests/circoms/simple_bn256_priv.wasm new file mode 100644 index 000000000..de71872b4 Binary files /dev/null and b/crates/snark/src/tests/circoms/simple_bn256_priv.wasm differ diff --git a/crates/snark/src/tests/mod.rs b/crates/snark/src/tests/mod.rs new file mode 100644 index 000000000..6fb399f07 --- /dev/null +++ b/crates/snark/src/tests/mod.rs @@ -0,0 +1,2 @@ +mod test_snark; +mod test_witness; diff --git a/crates/snark/src/tests/test_snark.rs b/crates/snark/src/tests/test_snark.rs new file mode 100644 index 000000000..41c9f1241 --- /dev/null +++ b/crates/snark/src/tests/test_snark.rs @@ -0,0 +1,159 @@ +use std::rc::Rc; + +use crate::circuit; +use crate::error::Result; +use crate::prelude::nova::provider::ipa_pc::EvaluationEngine; +use crate::prelude::nova::provider::PallasEngine; +use crate::prelude::nova::provider::VestaEngine; +use crate::prelude::nova::spartan::snark::RelaxedR1CSSNARK; +use crate::prelude::nova::traits::Engine; +use crate::r1cs; +use crate::snark; + +#[tokio::test] +pub async fn test_calcu_bn256_recursive_snark() -> Result<()> { + type E1 = VestaEngine; + type E2 = PallasEngine; + type EE1 = EvaluationEngine; + type EE2 = EvaluationEngine; + type S1 = RelaxedR1CSSNARK; // non-preprocessing SNARK + type S2 = RelaxedR1CSSNARK; // non-preprocessing SNARK + type F1 = ::Scalar; + type F2 = ::Scalar; + + let r1cs = r1cs::load_r1cs::( + r1cs::Path::Local("src/tests/circoms/simple_bn256.r1cs".to_string()), + r1cs::Format::Bin, + ) + .await + .unwrap(); + let witness_calculator = r1cs::load_circom_witness_calculator(r1cs::Path::Local( + "src/tests/circoms/simple_bn256.wasm".to_string(), + )) + .await + .unwrap(); + + let circuit_generator = circuit::WasmCircuitGenerator::::new(r1cs, witness_calculator); + + let input_0: Vec<(String, Vec)> = + vec![("step_in".to_string(), vec![F1::from(4u64), F1::from(2u64)])]; + let recursive_circuits = circuit_generator + .gen_recursive_circuit(input_0.clone(), vec![], 3, true) + .unwrap(); + + let public_circuit = recursive_circuits[0].clone(); + assert_eq!(recursive_circuits.len(), 3); + let pp = snark::SNARK::::gen_pp::(public_circuit.clone()); + + let mut rec_snark_iter = snark::SNARK::::new( + &Rc::new(recursive_circuits[0].clone()), + input_0.clone(), + &pp, + ) + .unwrap(); + for c in recursive_circuits { + rec_snark_iter.foldr(&pp, &c).unwrap(); + } + let (z0, _) = rec_snark_iter + .verify(&pp, 3, &vec![F1::from(4u64), F1::from(2u64)], &vec![ + F2::from(0), + ]) + .unwrap(); + println!("success on create recursive snark"); + let (pk, vk) = snark::SNARK::::compress_setup::(&pp).unwrap(); + + let compress_snark = rec_snark_iter.compress_prove::(&pp, &pk).unwrap(); + let compress_snark_ref = Rc::new(compress_snark); + let ret = snark::SNARK::::compress_verify::(compress_snark_ref, vk, 3, &vec![ + F1::from(4u64), + F1::from(2u64), + ]); + assert!(ret.is_ok()); + + // maybe on other machine + let next_start_input = vec![("step_in".to_string(), z0.clone())]; + let recursive_circuits_2 = circuit_generator + .gen_recursive_circuit(next_start_input, vec![], 3, true) + .unwrap(); + + for c in recursive_circuits_2 { + rec_snark_iter.foldr(&pp, &c).unwrap(); + } + + let (_z0, _) = rec_snark_iter + .verify(&pp, 6, &vec![F1::from(4u64), F1::from(2u64)], &vec![ + F2::from(0), + ]) + .unwrap(); + + Ok(()) +} + +#[tokio::test] +pub async fn test_calcu_bn256_recursive_snark_with_private_input() -> Result<()> { + type E1 = VestaEngine; + type E2 = PallasEngine; + type EE1 = EvaluationEngine; + type EE2 = EvaluationEngine; + type S1 = RelaxedR1CSSNARK; // non-preprocessing SNARK + type S2 = RelaxedR1CSSNARK; // non-preprocessing SNARK + type F1 = ::Scalar; + type F2 = ::Scalar; + + let r1cs = r1cs::load_r1cs::( + r1cs::Path::Local("src/tests/circoms/simple_bn256_priv.r1cs".to_string()), + r1cs::Format::Bin, + ) + .await + .unwrap(); + let witness_calculator = r1cs::load_circom_witness_calculator(r1cs::Path::Local( + "src/tests/circoms/simple_bn256_priv.wasm".to_string(), + )) + .await + .unwrap(); + + let circuit_generator = circuit::WasmCircuitGenerator::::new(r1cs, witness_calculator); + + let input_0: Vec<(String, Vec)> = + vec![("step_in".to_string(), vec![F1::from(4u64), F1::from(2u64)])]; + let private_inputs: Vec)>> = vec![ + vec![("adder".to_string(), vec![F1::from(1u64)])], + vec![("adder".to_string(), vec![F1::from(42u64)])], + vec![("adder".to_string(), vec![F1::from(33u64)])], + ]; + assert_eq!(private_inputs.len(), 3); + + let circuit_0 = circuit_generator + .gen_circuit(input_0.clone(), true) + .unwrap(); + + let recursive_circuits = circuit_generator + .gen_recursive_circuit(input_0.clone(), private_inputs.clone(), 3, true) + .unwrap(); + + assert_eq!(recursive_circuits.len(), 3); + // init pp with ouptn inputs + let pp = snark::SNARK::::gen_pp::(circuit_0.clone()); + let mut rec_snark_iter = + snark::SNARK::::new(&recursive_circuits[0].clone(), input_0.clone(), &pp).unwrap(); + + for c in recursive_circuits { + rec_snark_iter.foldr(&pp, &c).unwrap(); + } + rec_snark_iter + .verify(&pp, 3, &vec![F1::from(4u64), F1::from(2u64)], &vec![ + F2::from(0), + ]) + .unwrap(); + println!("success on create recursive snark"); + let (pk, vk) = snark::SNARK::::compress_setup::(&pp).unwrap(); + + let compress_snark = rec_snark_iter.compress_prove::(&pp, &pk).unwrap(); + let compress_snark_ref = Rc::new(compress_snark); + let ret = snark::SNARK::::compress_verify::(compress_snark_ref, &vk, 3, &vec![ + F1::from(4u64), + F1::from(2u64), + ]); + assert!(ret.is_ok()); + Ok(()) +} diff --git a/crates/snark/src/tests/test_witness.rs b/crates/snark/src/tests/test_witness.rs new file mode 100644 index 000000000..177fd40f9 --- /dev/null +++ b/crates/snark/src/tests/test_witness.rs @@ -0,0 +1,68 @@ +use crate::error::Result; +use crate::prelude::nova::provider::VestaEngine; +use crate::prelude::nova::traits::Engine; +use crate::r1cs; + +#[tokio::test] +pub async fn test_calcu_witness_sha256() -> Result<()> { + type F = ::Base; + let r1cs = r1cs::load_r1cs_local::( + "src/tests/circoms/sha256/circom_sha256.r1cs", + r1cs::Format::Bin, + ) + .unwrap(); + assert_eq!(r1cs.num_inputs, 4, "wrong inputs {:?}", r1cs.num_inputs); + let mut witness_calculator = r1cs::load_circom_witness_calculator(r1cs::Path::Local( + "src/tests/circoms/sha256/circom_sha256.wasm".to_string(), + )) + .await + .unwrap(); + let input = vec![("arg_in".to_string(), vec![F::from(4u64), F::from(2u64)])]; + let witness = witness_calculator + .calculate_witness::(input, true) + .unwrap(); + assert_eq![witness[0], F::from(1u64)]; + assert_eq!( + witness[2], + F::from(4u64), + "input is not included, top 10: {:?}", + &witness[..10] + ); + assert_eq!( + witness[3], + F::from(2u64), + "input is not included, top 10: {:?}", + &witness[..10] + ); + Ok(()) +} + +#[tokio::test] +pub async fn test_calcu_witness_bn256() -> Result<()> { + type F = ::Base; + let mut witness_calculator = r1cs::load_circom_witness_calculator(r1cs::Path::Local( + "src/tests/circoms/simple_bn256.wasm".to_string(), + )) + .await + .unwrap(); + let input = vec![("step_in".to_string(), vec![F::from(4u64), F::from(2u64)])]; + let witness = witness_calculator + .calculate_witness::(input, true) + .unwrap(); + assert_eq![witness[0], F::from(1u64)]; + // witness: <1> + // test input + assert_eq!( + witness[3], + F::from(4u64), + "input is not included, {:?}", + &witness + ); + assert_eq!( + witness[4], + F::from(2u64), + "input is not included, {:?}", + &witness + ); + Ok(()) +} diff --git a/examples/snark/Cargo.toml b/examples/snark/Cargo.toml new file mode 100644 index 000000000..51adad35d --- /dev/null +++ b/examples/snark/Cargo.toml @@ -0,0 +1,16 @@ +[package] +name = "rings-snark-example" +version.workspace = true +edition.workspace = true +license.workspace = true +authors.workspace = true +repository.workspace = true + +[dependencies] +rings-snark = { workspace = true } +tokio = { version = "1.13.0", features = ["full"] } + +[[example]] +name = "rings-bn256-example" +path = "bn256.rs" +bench = false diff --git a/examples/snark/bn256.rs b/examples/snark/bn256.rs new file mode 100644 index 000000000..4c82a44e1 --- /dev/null +++ b/examples/snark/bn256.rs @@ -0,0 +1,78 @@ +use std::rc::Rc; + +use rings_snark::circuit; +use rings_snark::prelude::nova::provider::ipa_pc::EvaluationEngine; +use rings_snark::prelude::nova::provider::PallasEngine; +use rings_snark::prelude::nova::provider::VestaEngine; +use rings_snark::prelude::nova::spartan::snark::RelaxedR1CSSNARK; +use rings_snark::prelude::nova::traits::Engine; +use rings_snark::r1cs; +use rings_snark::snark; + +#[tokio::main] +async fn main() { + type E1 = VestaEngine; + type E2 = PallasEngine; + type EE1 = EvaluationEngine; + type EE2 = EvaluationEngine; + type S1 = RelaxedR1CSSNARK; // non-preprocessing SNARK + type S2 = RelaxedR1CSSNARK; // non-preprocessing SNARK + type F1 = ::Scalar; + type F2 = ::Scalar; + + let r1cs = r1cs::load_r1cs::( + r1cs::Path::Local("src/tests/circoms/simple_bn256_priv.r1cs".to_string()), + r1cs::Format::Bin, + ) + .await + .unwrap(); + let witness_calculator = r1cs::load_circom_witness_calculator(r1cs::Path::Local( + "src/tests/circoms/simple_bn256_priv.wasm".to_string(), + )) + .await + .unwrap(); + + let circuit_generator = circuit::WasmCircuitGenerator::::new(r1cs, witness_calculator); + + let input_0: Vec<(String, Vec)> = + vec![("step_in".to_string(), vec![F1::from(4u64), F1::from(2u64)])]; + let private_inputs: Vec)>> = vec![ + vec![("adder".to_string(), vec![F1::from(1u64)])], + vec![("adder".to_string(), vec![F1::from(42u64)])], + vec![("adder".to_string(), vec![F1::from(33u64)])], + ]; + assert_eq!(private_inputs.len(), 3); + + let circuit_0 = circuit_generator + .gen_circuit(input_0.clone(), true) + .unwrap(); + + let recursive_circuits = circuit_generator + .gen_recursive_circuit(input_0.clone(), private_inputs.clone(), 3, true) + .unwrap(); + + assert_eq!(recursive_circuits.len(), 3); + // init pp with ouptn inputs + let pp = snark::SNARK::::gen_pp::(circuit_0.clone()); + let mut rec_snark_iter = + snark::SNARK::::new(&recursive_circuits[0].clone(), input_0.clone(), &pp).unwrap(); + + for c in recursive_circuits { + rec_snark_iter.foldr(&pp, &c).unwrap(); + } + rec_snark_iter + .verify(&pp, 3, &vec![F1::from(4u64), F1::from(2u64)], &vec![ + F2::from(0), + ]) + .unwrap(); + println!("success on create recursive snark"); + let (pk, vk) = snark::SNARK::::compress_setup::(&pp).unwrap(); + + let compress_snark = rec_snark_iter.compress_prove::(&pp, &pk).unwrap(); + let compress_snark_ref = Rc::new(compress_snark); + let ret = snark::SNARK::::compress_verify::(compress_snark_ref, &vk, 3, &vec![ + F1::from(4u64), + F1::from(2u64), + ]); + assert!(ret.is_ok()); +} diff --git a/examples/snark/circoms/simple_bn256.circom b/examples/snark/circoms/simple_bn256.circom new file mode 100644 index 000000000..24330ae4e --- /dev/null +++ b/examples/snark/circoms/simple_bn256.circom @@ -0,0 +1,20 @@ +pragma circom 2.0.3; + +template Example () { + signal input step_in[2]; + + signal output step_out[2]; + + signal input adder; + + step_out[0] <== step_in[0] + adder; + step_out[1] <== step_in[0] + step_in[1]; +} + +component main { public [step_in] } = Example(); + +/* INPUT = { + "step_in": [1, 1], + "step_out": [1, 2], + "adder": 0 +} */ \ No newline at end of file diff --git a/examples/snark/circoms/simple_bn256.r1cs b/examples/snark/circoms/simple_bn256.r1cs new file mode 100644 index 000000000..08fb7ad99 Binary files /dev/null and b/examples/snark/circoms/simple_bn256.r1cs differ diff --git a/examples/snark/circoms/simple_bn256_js/simple_bn256.wasm b/examples/snark/circoms/simple_bn256_js/simple_bn256.wasm new file mode 100644 index 000000000..de71872b4 Binary files /dev/null and b/examples/snark/circoms/simple_bn256_js/simple_bn256.wasm differ diff --git a/examples/snark/src/lib.rs b/examples/snark/src/lib.rs new file mode 100644 index 000000000..8b1378917 --- /dev/null +++ b/examples/snark/src/lib.rs @@ -0,0 +1 @@ + diff --git a/rust-toolchain.toml b/rust-toolchain.toml index e421d6e48..6d3eda37e 100644 --- a/rust-toolchain.toml +++ b/rust-toolchain.toml @@ -1,4 +1,4 @@ [toolchain] -channel = "1.70" +channel = "1.75" components = ["rustfmt", "clippy"] targets = ["wasm32-unknown-unknown"]