From 6d7422ad1eeabfab50935ef3f878842a09ed374b Mon Sep 17 00:00:00 2001 From: Eric Swanson <64809312+ericswanson-dfinity@users.noreply.github.com> Date: Fri, 25 Aug 2023 18:05:40 -0700 Subject: [PATCH] fix: add icp-api.io to default CSP; default to allow raw access (#3327) * fix: add icp0-api.io to default CSP; default to allow raw access * chore: port updates to cdk 0.10.0, candid 0.9 for release 0.14.4 (#3330) Co-authored-by: Yan Chen <48968912+chenyan-dfinity@users.noreply.github.com> Co-authored-by: Linwei Shang --- .github/workflows/audit.yml | 3 +- CHANGELOG.md | 29 +- Cargo.lock | 1087 +++++++++++++++-- Cargo.toml | 23 +- e2e/assets/inter/Cargo.toml | 11 +- e2e/assets/inter/src/counter_rs/Cargo.toml | 6 +- e2e/assets/inter/src/counter_rs/lib.rs | 12 +- e2e/assets/inter/src/inter2_rs/Cargo.toml | 8 +- e2e/assets/inter/src/inter2_rs/build.rs | 11 + e2e/assets/inter/src/inter2_rs/lib.rs | 17 +- e2e/assets/inter/src/inter_rs/Cargo.toml | 8 +- e2e/assets/inter/src/inter_rs/build.rs | 11 + e2e/assets/inter/src/inter_rs/lib.rs | 13 +- e2e/assets/rust_deps/src/rust_deps/Cargo.toml | 7 +- e2e/assets/rust_deps/src/rust_deps/build.rs | 11 + e2e/assets/rust_deps/src/rust_deps/lib.rs | 9 +- e2e/assets/warning/main.mo | 8 +- e2e/tests-dfx/assetscanister.bash | 34 +- nix/sources.json | 4 +- .../frontend/ic-asset/src/asset/config.rs | 6 +- .../frontend/ic-certified-assets/Cargo.toml | 12 +- .../src/asset_certification/mod.rs | 2 +- .../types/certification.rs | 2 +- .../src/asset_certification/types/http.rs | 11 +- .../src/asset_certification/types/rc_bytes.rs | 6 +- .../frontend/ic-certified-assets/src/lib.rs | 10 +- .../ic-certified-assets/src/state_machine.rs | 14 +- .../frontend/ic-certified-assets/src/tests.rs | 27 +- .../frontend/ic-frontend-canister/Cargo.toml | 1 - .../frontend/ic-frontend-canister/src/lib.rs | 2 +- src/dfx/Cargo.toml | 5 +- .../assets/.ic-assets.json5 | 7 +- .../src/.ic-assets.json5 | 7 +- .../src/commands/remote/generate_binding.rs | 5 +- src/dfx/src/lib/models/canister.rs | 7 +- src/dfx/src/util/mod.rs | 18 +- src/distributed/assetstorage.wasm.gz | Bin 423210 -> 383624 bytes 37 files changed, 1180 insertions(+), 274 deletions(-) create mode 100644 e2e/assets/inter/src/inter2_rs/build.rs create mode 100644 e2e/assets/inter/src/inter_rs/build.rs create mode 100644 e2e/assets/rust_deps/src/rust_deps/build.rs diff --git a/.github/workflows/audit.yml b/.github/workflows/audit.yml index 0bcfb989d3..4ff23ed686 100644 --- a/.github/workflows/audit.yml +++ b/.github/workflows/audit.yml @@ -57,9 +57,10 @@ jobs: rustup default ${{ matrix.rust }} cargo install --force --version ${{ matrix.cargo-audit }} cargo-audit --locked - name: Audit + # ignores RUSTSEC-2020-0071 because it is 'only' in a dev dependency (ic-certified-responses -> ic-types -> chrono -> time) run: | cd sdk - cargo audit --no-fetch --db "${GITHUB_WORKSPACE}"/advisory-db + cargo audit --no-fetch --db "${GITHUB_WORKSPACE}"/advisory-db --ignore RUSTSEC-2020-0071 env: RUST_BACKTRACE: 1 diff --git a/CHANGELOG.md b/CHANGELOG.md index 1c34080595..22d7c3000a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,32 @@ # dfx changelog +# 0.14.4 + +## DFX + +### fix: added https://icp-api.io to the default Content-Security-Policy header + +Existing projects will need to change this value in .ic-assets.json or .ic-assets.json5 to include https://icp-api.io + +All projects will need to redeploy. + +### fix: access to raw assets is now enabled by default + +The default value for `allow_raw_access` is now `true`. This means that by default, the frontend canister will no longer restrict the access of traffic to the `.raw.icp0.io` domain, and will no longer automatically redirect all requests to the certified domain (`.icp0.io`), unless configured explicitly. + +Note that existing projects that specify `"allow_raw_access": false` in .ic-assets.json5 will need to change or remove this value manually in order to allow raw access. + +## Dependencies + +### Updated candid to 0.9.0 + +### Updated cdk-rs to 0.10.0 + +### Frontend canister + +- Module hash: d5c324fea6b0f8eaa9feede10b342b098f7cf64682e168e58fa2ca2bf028b96f +- https://github.com/dfinity/sdk/pull/3327 + # 0.14.3 ## Dependencies @@ -12,8 +39,6 @@ This removes a dependency on OpenSSL in order to avoid spurious errors that refe # 0.14.2 -Note: Canister http functionality is broken. Do not release dfx until this is corrected. See https://dfinity.atlassian.net/browse/SDK-1129 - ## DFX ### feat: deprecate `dfx bootstrap` and `dfx replica` commands diff --git a/Cargo.lock b/Cargo.lock index cf04959421..760ed74e36 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -145,6 +145,21 @@ dependencies = [ "memchr", ] +[[package]] +name = "android-tzdata" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0" + +[[package]] +name = "android_system_properties" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" +dependencies = [ + "libc", +] + [[package]] name = "annotate-snippets" version = "0.9.1" @@ -285,7 +300,7 @@ checksum = "b9ccdd8f2a161be9bd5c023df56f1b2a0bd1d83872ae53b71a84a12c9bf6e842" dependencies = [ "proc-macro2", "quote", - "syn 2.0.11", + "syn 2.0.29", ] [[package]] @@ -328,6 +343,18 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4c7f02d4ea65f2c1853089ffd8d2787bdbc63de2f0d29dedbcf8ccdfa0ccd4cf" +[[package]] +name = "base32" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23ce669cd6c8588f79e15cf450314f9638f967fc5770ff1c7c1deb0925ea7cfa" + +[[package]] +name = "base64" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b41b7ea54a0c9d92199de89e20e58d49f02f8e699814ef3fdf266f6f748d15c7" + [[package]] name = "base64" version = "0.13.1" @@ -352,6 +379,15 @@ version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3a8241f3ebb85c056b509d4327ad0358fbbba6ffb340bf388f26350aeda225b1" +[[package]] +name = "bincode" +version = "1.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcad" +dependencies = [ + "serde", +] + [[package]] name = "binread" version = "2.2.0" @@ -591,6 +627,18 @@ version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c1db59621ec70f09c5e9b597b220c7a2b43611f4710dc03ceb8748637775692c" +[[package]] +name = "cached" +version = "0.41.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec6d20b3d24b6c74e2c5331d2d3d8d1976a9883c7da179aa851afa4c90d62e36" +dependencies = [ + "hashbrown", + "instant", + "once_cell", + "thiserror", +] + [[package]] name = "candid" version = "0.8.4" @@ -598,17 +646,15 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "244005a1917bb7614cd775ca8a5d59efeb5ac74397bb14ba29a19347ebd78591" dependencies = [ "anyhow", - "arbitrary", "binread", "byteorder", "candid_derive 0.5.0", "codespan-reporting", "crc32fast", "data-encoding", - "fake", "hex", - "lalrpop", - "lalrpop-util", + "lalrpop 0.19.8", + "lalrpop-util 0.19.8", "leb128", "logos", "num-bigint 0.4.3", @@ -616,37 +662,43 @@ dependencies = [ "num_enum", "paste", "pretty 0.10.0", - "rand", "serde", "serde_bytes", - "serde_dhall", "sha2 0.10.6", "thiserror", ] [[package]] name = "candid" -version = "0.9.0-beta.2" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4163412115fdb2d41d418b2746405c0fa5716be8064d507ec8bacf88027141e6" +checksum = "14881d34e5ad2b3e77dfbbdf3266d907f85d28faf214b843684f2e64e8acd6c7" dependencies = [ "anyhow", + "arbitrary", "binread", "byteorder", - "candid_derive 0.6.0", + "candid_derive 0.6.1", "codespan-reporting", "crc32fast", "data-encoding", + "fake", "hex", + "lalrpop 0.20.0", + "lalrpop-util 0.20.0", "leb128", + "logos", "num-bigint 0.4.3", "num-traits", "num_enum", "paste", "pretty 0.10.0", + "rand", "serde", "serde_bytes", + "serde_dhall", "sha2 0.10.6", + "stacker", "thiserror", ] @@ -664,9 +716,9 @@ dependencies = [ [[package]] name = "candid_derive" -version = "0.6.0" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34df46ac8b0a44de9b243d9dd21e608838183be20de408c934993ed6a4a8e4c1" +checksum = "041ce1020740a400035899b2909a6f4f275b79c8db502cbd59ace9b2cc88af58" dependencies = [ "lazy_static", "proc-macro2", @@ -695,6 +747,21 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" +[[package]] +name = "chrono" +version = "0.4.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec837a71355b28f6556dbd569b37b3f363091c0bd4b2e735674521b4c5fd9bc5" +dependencies = [ + "android-tzdata", + "iana-time-zone", + "js-sys", + "num-traits", + "time 0.1.45", + "wasm-bindgen", + "winapi", +] + [[package]] name = "cipher" version = "0.3.0" @@ -739,7 +806,7 @@ dependencies = [ "heck 0.4.0", "proc-macro2", "quote", - "syn 2.0.11", + "syn 2.0.29", ] [[package]] @@ -784,6 +851,42 @@ dependencies = [ "winapi", ] +[[package]] +name = "comparable" +version = "0.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eb513ee8037bf08c5270ecefa48da249f4c58e57a71ccfce0a5b0877d2a20eb2" +dependencies = [ + "comparable_derive", + "comparable_helper", + "pretty_assertions", + "serde", +] + +[[package]] +name = "comparable_derive" +version = "0.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a54b9c40054eb8999c5d1d36fdc90e4e5f7ff0d1d9621706f360b3cbc8beb828" +dependencies = [ + "convert_case 0.4.0", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "comparable_helper" +version = "0.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fb5437e327e861081c91270becff184859f706e3e50f5301a9d4dc8eb50752c3" +dependencies = [ + "convert_case 0.6.0", + "proc-macro2", + "quote", + "syn 1.0.109", +] + [[package]] name = "concurrent-queue" version = "1.2.4" @@ -812,6 +915,21 @@ version = "0.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "520fbf3c07483f94e3e3ca9d0cfd913d7718ef2483d2cfd91c0d9e91474ab913" +[[package]] +name = "convert_case" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6245d59a3e82a7fc217c5828a6692dbc6dfb63a0c8c90495621f7b9d79704a0e" + +[[package]] +name = "convert_case" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec182b0ca2f35d8fc196cf3404988fd8b8c739a4d270ff118a398feb0cbec1ca" +dependencies = [ + "unicode-segmentation", +] + [[package]] name = "core-foundation" version = "0.9.3" @@ -982,6 +1100,15 @@ dependencies = [ "windows-sys 0.45.0", ] +[[package]] +name = "cvt" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2ae9bf77fbf2d39ef573205d554d87e86c12f1994e9ea335b0651b9b278bcf1" +dependencies = [ + "cfg-if 1.0.0", +] + [[package]] name = "cxx" version = "1.0.94" @@ -1006,7 +1133,7 @@ dependencies = [ "proc-macro2", "quote", "scratch", - "syn 2.0.11", + "syn 2.0.29", ] [[package]] @@ -1023,7 +1150,42 @@ checksum = "2345488264226bf682893e25de0769f3360aac9957980ec49361b083ddaa5bc5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.11", + "syn 2.0.29", +] + +[[package]] +name = "darling" +version = "0.13.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a01d95850c592940db9b8194bc39f4bc0e89dee5c4265e4b1807c34a9aba453c" +dependencies = [ + "darling_core", + "darling_macro", +] + +[[package]] +name = "darling_core" +version = "0.13.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "859d65a907b6852c9361e3185c862aae7fafd2887876799fa55f5f99dc40d610" +dependencies = [ + "fnv", + "ident_case", + "proc-macro2", + "quote", + "strsim", + "syn 1.0.109", +] + +[[package]] +name = "darling_macro" +version = "0.13.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c972679f83bdf9c42bd905396b6c3588a843a17f0f16dfcfa3e2c5d57441835" +dependencies = [ + "darling_core", + "quote", + "syn 1.0.109", ] [[package]] @@ -1071,6 +1233,16 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "derive_more" +version = "0.99.8-alpha.0" +source = "git+https://github.com/dfinity-lab/derive_more?branch=master#9f1b894e6fde640da4e9ea71a8fc0e4dd98d01da" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + [[package]] name = "dfx" version = "0.14.3" @@ -1085,7 +1257,7 @@ dependencies = [ "base64 0.13.1", "byte-unit", "bytes", - "candid 0.8.4", + "candid 0.9.0", "clap", "console", "crc32fast", @@ -1106,7 +1278,7 @@ dependencies = [ "ic-agent", "ic-asset", "ic-identity-hsm", - "ic-utils", + "ic-utils 0.25.0", "ic-wasm", "indicatif", "itertools 0.10.5", @@ -1146,13 +1318,12 @@ dependencies = [ "tempfile", "term", "thiserror", - "time", + "time 0.3.20", "tokio", "toml 0.7.3", "url", "walkdir", "walrus", - "wasmparser 0.87.0", "which", ] @@ -1164,7 +1335,7 @@ dependencies = [ "argon2", "bip32", "byte-unit", - "candid 0.8.4", + "candid 0.9.0", "dialoguer", "directories-next", "flate2", @@ -1172,7 +1343,7 @@ dependencies = [ "humantime-serde", "ic-agent", "ic-identity-hsm", - "ic-utils", + "ic-utils 0.25.0", "k256 0.11.6", "keyring", "lazy_static", @@ -1449,6 +1620,15 @@ dependencies = [ "termcolor", ] +[[package]] +name = "erased-serde" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "837c0466252947ada828b975e12daf82e18bb5444e4df87be6038d4469e2a3d2" +dependencies = [ + "serde", +] + [[package]] name = "errno" version = "0.3.0" @@ -1479,6 +1659,12 @@ dependencies = [ "rand", ] +[[package]] +name = "fallible-iterator" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4443176a9f2c162692bd3d352d745ef9413eec5782a80d8fd6f8a1ac692a07f7" + [[package]] name = "fastrand" version = "1.8.0" @@ -1488,6 +1674,15 @@ dependencies = [ "instant", ] +[[package]] +name = "features" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "83072b3c84e55f9d0c0ff36a4575d0fd2e543ae4a56e04e7f5a9222188d574e3" +dependencies = [ + "bitflags", +] + [[package]] name = "ff" version = "0.12.1" @@ -1537,6 +1732,15 @@ dependencies = [ "miniz_oxide", ] +[[package]] +name = "float-cmp" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "98de4bbd547a563b716d8dfa9aad1cb19bfab00f4fa09a6a4ed21dbcf44ce9c4" +dependencies = [ + "num-traits", +] + [[package]] name = "fn-error-context" version = "0.2.1" @@ -1545,7 +1749,7 @@ checksum = "2cd66269887534af4b0c3e3337404591daa8dc8b9b2b3db71f9523beb4bafb41" dependencies = [ "proc-macro2", "quote", - "syn 2.0.11", + "syn 2.0.29", ] [[package]] @@ -1711,8 +1915,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c05aeb6a22b8f62540c194aac980f2115af067bfe15a0734d7277a768d396b31" dependencies = [ "cfg-if 1.0.0", + "js-sys", "libc", - "wasi", + "wasi 0.11.0+wasi-snapshot-preview1", + "wasm-bindgen", ] [[package]] @@ -1725,6 +1931,17 @@ dependencies = [ "polyval", ] +[[package]] +name = "gimli" +version = "0.26.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22030e2c5a68ec659fde1e949a745124b48e6fa8b045b7ed5bd1fe4ccc5c4e5d" +dependencies = [ + "fallible-iterator", + "indexmap", + "stable_deref_trait", +] + [[package]] name = "globset" version = "0.4.10" @@ -1997,18 +2214,41 @@ dependencies = [ "tokio-native-tls", ] +[[package]] +name = "iana-time-zone" +version = "0.1.57" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2fad5b825842d2b38bd206f3e81d6957625fd7f0a361e345c30e01a0ae2dd613" +dependencies = [ + "android_system_properties", + "core-foundation-sys", + "iana-time-zone-haiku", + "js-sys", + "wasm-bindgen", + "windows", +] + +[[package]] +name = "iana-time-zone-haiku" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" +dependencies = [ + "cc", +] + [[package]] name = "ic-agent" -version = "0.24.1" -source = "git+https://github.com/dfinity/agent-rs.git?rev=b9c57f8bab23cc9936dca4560293ffe485471c6d#b9c57f8bab23cc9936dca4560293ffe485471c6d" +version = "0.25.0" +source = "git+https://github.com/dfinity/agent-rs.git?rev=6d923cbc918852ef5bfaeb08e63c86580aa80ffe#6d923cbc918852ef5bfaeb08e63c86580aa80ffe" dependencies = [ "backoff", - "candid 0.8.4", + "candid 0.9.0", "futures-util", "hex", "http", "http-body", - "ic-certification 0.24.1", + "ic-certification 0.25.0", "ic-verify-bls-signature", "k256 0.13.1", "leb128", @@ -2026,6 +2266,7 @@ dependencies = [ "sha2 0.10.6", "simple_asn1", "thiserror", + "time 0.3.20", "tokio", "url", ] @@ -2035,7 +2276,7 @@ name = "ic-asset" version = "0.20.0" dependencies = [ "backoff", - "candid 0.8.4", + "candid 0.9.0", "derivative", "dfx-core", "flate2", @@ -2044,7 +2285,7 @@ dependencies = [ "globset", "hex", "ic-agent", - "ic-utils", + "ic-utils 0.25.0", "itertools 0.10.5", "json5", "mime", @@ -2063,12 +2304,54 @@ dependencies = [ ] [[package]] -name = "ic-cdk" +name = "ic-base-types" version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "401ddc246ab0d80e5e0bd2c926c6a0feef7b82ddbed81f1e752784c4aac58928" +source = "git+https://github.com/dfinity/ic.git?rev=a533346f63f4091eb64692891de0d5b2ffd5b22a#a533346f63f4091eb64692891de0d5b2ffd5b22a" +dependencies = [ + "base32", + "byte-unit", + "bytes", + "candid 0.8.4", + "comparable", + "crc32fast", + "ic-crypto-sha", + "ic-protobuf", + "phantom_newtype", + "prost", + "serde", + "strum 0.23.0", + "strum_macros 0.23.1", +] + +[[package]] +name = "ic-btc-types" +version = "0.1.0" +source = "git+https://github.com/dfinity/ic.git?rev=a533346f63f4091eb64692891de0d5b2ffd5b22a#a533346f63f4091eb64692891de0d5b2ffd5b22a" dependencies = [ "candid 0.8.4", + "serde", + "serde_bytes", +] + +[[package]] +name = "ic-btc-types-internal" +version = "0.1.0" +source = "git+https://github.com/dfinity/ic.git?rev=a533346f63f4091eb64692891de0d5b2ffd5b22a#a533346f63f4091eb64692891de0d5b2ffd5b22a" +dependencies = [ + "candid 0.8.4", + "ic-btc-types", + "ic-protobuf", + "serde", + "serde_bytes", +] + +[[package]] +name = "ic-cdk" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08d4c0b932bf454d5d60e61e13c3c944972fcfd74dc82b9ed5c8b0a75979cf50" +dependencies = [ + "candid 0.9.0", "ic-cdk-macros", "ic0", "serde", @@ -2077,11 +2360,11 @@ dependencies = [ [[package]] name = "ic-cdk-macros" -version = "0.6.10" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ebf50458685a0fc6b0e414cdba487610aeb199ac94db52d9fd76270565debee7" +checksum = "b4587624e64b8db56224033ee74e5c246d39be15375d03d3df7c117d49d18487" dependencies = [ - "candid 0.8.4", + "candid 0.9.0", "proc-macro2", "quote", "serde", @@ -2101,8 +2384,8 @@ dependencies = [ [[package]] name = "ic-certification" -version = "0.24.1" -source = "git+https://github.com/dfinity/agent-rs.git?rev=b9c57f8bab23cc9936dca4560293ffe485471c6d#b9c57f8bab23cc9936dca4560293ffe485471c6d" +version = "0.25.0" +source = "git+https://github.com/dfinity/agent-rs.git?rev=6d923cbc918852ef5bfaeb08e63c86580aa80ffe#6d923cbc918852ef5bfaeb08e63c86580aa80ffe" dependencies = [ "hex", "serde", @@ -2115,12 +2398,14 @@ name = "ic-certified-assets" version = "0.2.5" dependencies = [ "base64 0.13.1", - "candid 0.8.4", + "candid 0.9.0", "hex", "ic-cdk", - "ic-cdk-macros", "ic-certified-map", + "ic-crypto-tree-hash", + "ic-representation-independent-hash", "ic-response-verification", + "ic-response-verification-test-utils", "itertools 0.10.5", "num-traits", "serde", @@ -2131,71 +2416,362 @@ dependencies = [ [[package]] name = "ic-certified-map" -version = "0.3.1" +version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ea6b4530bf4e304ba870da9f58f6e10a84c74fe2fdec574ec7a316f031c37fd" +checksum = "6adc65afeffc619a7cd19553c66c79820908c12f42191af90cfb39e2e93c4431" dependencies = [ "serde", "serde_bytes", "sha2 0.10.6", ] +[[package]] +name = "ic-constants" +version = "0.8.0" +source = "git+https://github.com/dfinity/ic.git?rev=a533346f63f4091eb64692891de0d5b2ffd5b22a#a533346f63f4091eb64692891de0d5b2ffd5b22a" + +[[package]] +name = "ic-crypto-getrandom-for-wasm" +version = "0.1.0" +source = "git+https://github.com/dfinity/ic.git?rev=a533346f63f4091eb64692891de0d5b2ffd5b22a#a533346f63f4091eb64692891de0d5b2ffd5b22a" +dependencies = [ + "getrandom", +] + +[[package]] +name = "ic-crypto-internal-bls12-381-type" +version = "0.1.0" +source = "git+https://github.com/dfinity/ic.git?rev=a533346f63f4091eb64692891de0d5b2ffd5b22a#a533346f63f4091eb64692891de0d5b2ffd5b22a" +dependencies = [ + "hex", + "ic-crypto-getrandom-for-wasm", + "ic_bls12_381", + "lazy_static", + "pairing", + "paste", + "rand", + "rand_chacha", + "sha2 0.9.9", + "subtle", + "zeroize", +] + +[[package]] +name = "ic-crypto-internal-seed" +version = "0.1.0" +source = "git+https://github.com/dfinity/ic.git?rev=a533346f63f4091eb64692891de0d5b2ffd5b22a#a533346f63f4091eb64692891de0d5b2ffd5b22a" +dependencies = [ + "hex", + "ic-crypto-sha", + "ic-types", + "rand", + "rand_chacha", + "serde", + "zeroize", +] + +[[package]] +name = "ic-crypto-internal-sha2" +version = "0.8.0" +source = "git+https://github.com/dfinity/ic.git?rev=a533346f63f4091eb64692891de0d5b2ffd5b22a#a533346f63f4091eb64692891de0d5b2ffd5b22a" +dependencies = [ + "openssl", + "sha2 0.9.9", +] + +[[package]] +name = "ic-crypto-internal-threshold-sig-bls12381" +version = "0.8.0" +source = "git+https://github.com/dfinity/ic.git?rev=a533346f63f4091eb64692891de0d5b2ffd5b22a#a533346f63f4091eb64692891de0d5b2ffd5b22a" +dependencies = [ + "arrayvec 0.5.2", + "base64 0.11.0", + "cached", + "hex", + "ic-crypto-internal-bls12-381-type", + "ic-crypto-internal-seed", + "ic-crypto-internal-threshold-sig-bls12381-der", + "ic-crypto-internal-types", + "ic-crypto-sha", + "ic-types", + "lazy_static", + "parking_lot 0.12.1", + "rand", + "rand_chacha", + "serde", + "serde_bytes", + "serde_cbor", + "strum_macros 0.23.1", + "subtle", + "zeroize", +] + +[[package]] +name = "ic-crypto-internal-threshold-sig-bls12381-der" +version = "0.8.0" +source = "git+https://github.com/dfinity/ic.git?rev=a533346f63f4091eb64692891de0d5b2ffd5b22a#a533346f63f4091eb64692891de0d5b2ffd5b22a" +dependencies = [ + "simple_asn1", +] + +[[package]] +name = "ic-crypto-internal-types" +version = "0.8.0" +source = "git+https://github.com/dfinity/ic.git?rev=a533346f63f4091eb64692891de0d5b2ffd5b22a#a533346f63f4091eb64692891de0d5b2ffd5b22a" +dependencies = [ + "arrayvec 0.5.2", + "base64 0.11.0", + "hex", + "ic-protobuf", + "phantom_newtype", + "serde", + "serde_cbor", + "strum 0.23.0", + "strum_macros 0.23.1", + "thiserror", + "zeroize", +] + +[[package]] +name = "ic-crypto-sha" +version = "0.8.0" +source = "git+https://github.com/dfinity/ic.git?rev=a533346f63f4091eb64692891de0d5b2ffd5b22a#a533346f63f4091eb64692891de0d5b2ffd5b22a" +dependencies = [ + "ic-crypto-internal-sha2", +] + +[[package]] +name = "ic-crypto-tree-hash" +version = "0.8.0" +source = "git+https://github.com/dfinity/ic.git?rev=a533346f63f4091eb64692891de0d5b2ffd5b22a#a533346f63f4091eb64692891de0d5b2ffd5b22a" +dependencies = [ + "ic-crypto-internal-types", + "ic-crypto-sha", + "ic-protobuf", + "serde", + "serde_bytes", +] + +[[package]] +name = "ic-crypto-utils-threshold-sig-der" +version = "0.8.0" +source = "git+https://github.com/dfinity/ic.git?rev=a533346f63f4091eb64692891de0d5b2ffd5b22a#a533346f63f4091eb64692891de0d5b2ffd5b22a" +dependencies = [ + "base64 0.11.0", + "ic-crypto-internal-threshold-sig-bls12381-der", + "ic-crypto-internal-types", + "ic-types", +] + +[[package]] +name = "ic-error-types" +version = "0.8.0" +source = "git+https://github.com/dfinity/ic.git?rev=a533346f63f4091eb64692891de0d5b2ffd5b22a#a533346f63f4091eb64692891de0d5b2ffd5b22a" +dependencies = [ + "serde", + "strum 0.23.0", + "strum_macros 0.23.1", +] + [[package]] name = "ic-frontend-canister" version = "0.2.5" dependencies = [ "ic-cdk", - "ic-cdk-macros", "ic-certified-assets", ] [[package]] -name = "ic-identity-hsm" -version = "0.24.1" -source = "git+https://github.com/dfinity/agent-rs.git?rev=b9c57f8bab23cc9936dca4560293ffe485471c6d#b9c57f8bab23cc9936dca4560293ffe485471c6d" +name = "ic-ic00-types" +version = "0.8.0" +source = "git+https://github.com/dfinity/ic.git?rev=a533346f63f4091eb64692891de0d5b2ffd5b22a#a533346f63f4091eb64692891de0d5b2ffd5b22a" +dependencies = [ + "candid 0.8.4", + "float-cmp", + "ic-base-types", + "ic-btc-types", + "ic-btc-types-internal", + "ic-error-types", + "ic-protobuf", + "num-traits", + "serde", + "serde_bytes", + "serde_cbor", + "strum 0.23.0", + "strum_macros 0.23.1", +] + +[[package]] +name = "ic-identity-hsm" +version = "0.25.0" +source = "git+https://github.com/dfinity/agent-rs.git?rev=6d923cbc918852ef5bfaeb08e63c86580aa80ffe#6d923cbc918852ef5bfaeb08e63c86580aa80ffe" +dependencies = [ + "hex", + "ic-agent", + "pkcs11", + "sha2 0.10.6", + "simple_asn1", + "thiserror", +] + +[[package]] +name = "ic-protobuf" +version = "0.8.0" +source = "git+https://github.com/dfinity/ic.git?rev=a533346f63f4091eb64692891de0d5b2ffd5b22a#a533346f63f4091eb64692891de0d5b2ffd5b22a" +dependencies = [ + "bincode", + "candid 0.8.4", + "erased-serde", + "maplit", + "prost", + "serde", + "serde_json", + "slog", +] + +[[package]] +name = "ic-representation-independent-hash" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f5790ff4b3752ce648d83554b3b0df1039a94bea24119d29a0f9874d796075e" +dependencies = [ + "leb128", + "sha2 0.10.6", +] + +[[package]] +name = "ic-response-verification" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "736044d69c526fa8a2a5e54d3debd878bbd4ec10c259fd21d9e6804aef67687b" +dependencies = [ + "base64 0.13.1", + "candid 0.8.4", + "flate2", + "http", + "ic-certification 0.23.2", + "ic-representation-independent-hash", + "leb128", + "log", + "miracl_core_bls12381", + "nom", + "sha2 0.10.6", + "thiserror", +] + +[[package]] +name = "ic-response-verification-test-utils" +version = "0.3.0" +source = "git+https://github.com/dfinity/response-verification.git?rev=d421c1bf01806425cbad4b977bd1499a259f3506#d421c1bf01806425cbad4b977bd1499a259f3506" +dependencies = [ + "base64 0.21.0", + "flate2", + "getrandom", + "hex", + "ic-base-types", + "ic-certified-map", + "ic-crypto-internal-seed", + "ic-crypto-internal-threshold-sig-bls12381", + "ic-crypto-internal-types", + "ic-crypto-tree-hash", + "ic-crypto-utils-threshold-sig-der", + "ic-types", + "leb128", + "rand", + "serde", + "serde_cbor", + "sha256", +] + +[[package]] +name = "ic-sys" +version = "0.8.0" +source = "git+https://github.com/dfinity/ic.git?rev=a533346f63f4091eb64692891de0d5b2ffd5b22a#a533346f63f4091eb64692891de0d5b2ffd5b22a" +dependencies = [ + "hex", + "ic-crypto-sha", + "lazy_static", + "libc", + "nix 0.23.2", + "phantom_newtype", + "wsl", +] + +[[package]] +name = "ic-types" +version = "0.8.0" +source = "git+https://github.com/dfinity/ic.git?rev=a533346f63f4091eb64692891de0d5b2ffd5b22a#a533346f63f4091eb64692891de0d5b2ffd5b22a" dependencies = [ + "base32", + "base64 0.11.0", + "bincode", + "candid 0.8.4", + "chrono", + "derive_more", "hex", - "ic-agent", - "pkcs11", - "sha2 0.10.6", - "simple_asn1", + "http", + "ic-base-types", + "ic-btc-types-internal", + "ic-constants", + "ic-crypto-internal-types", + "ic-crypto-sha", + "ic-crypto-tree-hash", + "ic-error-types", + "ic-ic00-types", + "ic-protobuf", + "ic-utils 0.8.0", + "maplit", + "num-traits", + "once_cell", + "phantom_newtype", + "prost", + "serde", + "serde_bytes", + "serde_cbor", + "serde_json", + "serde_with", + "strum 0.23.0", + "strum_macros 0.23.1", "thiserror", + "thousands", + "url", ] [[package]] -name = "ic-response-verification" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f4e57f65dc2b5567f11e0508b3648518097fe9fcd443389eb0057b91a3c5acd" +name = "ic-utils" +version = "0.8.0" +source = "git+https://github.com/dfinity/ic.git?rev=a533346f63f4091eb64692891de0d5b2ffd5b22a#a533346f63f4091eb64692891de0d5b2ffd5b22a" dependencies = [ - "base64 0.13.1", - "candid 0.8.4", - "flate2", - "http", - "ic-certification 0.23.2", - "leb128", - "log", - "miracl_core_bls12381", - "nom", - "sha2 0.10.6", + "bitflags", + "cvt", + "features", + "hex", + "ic-sys", + "libc", + "nix 0.23.2", + "prost", + "rand", + "scoped_threadpool", + "serde", "thiserror", ] [[package]] name = "ic-utils" -version = "0.24.1" -source = "git+https://github.com/dfinity/agent-rs.git?rev=b9c57f8bab23cc9936dca4560293ffe485471c6d#b9c57f8bab23cc9936dca4560293ffe485471c6d" +version = "0.25.0" +source = "git+https://github.com/dfinity/agent-rs.git?rev=6d923cbc918852ef5bfaeb08e63c86580aa80ffe#6d923cbc918852ef5bfaeb08e63c86580aa80ffe" dependencies = [ "async-trait", - "candid 0.8.4", + "candid 0.9.0", "ic-agent", "once_cell", "semver", "serde", "serde_bytes", - "strum", - "strum_macros", + "strum 0.24.1", + "strum_macros 0.24.3", "thiserror", + "time 0.3.20", ] [[package]] @@ -2212,12 +2788,12 @@ dependencies = [ [[package]] name = "ic-wasm" -version = "0.3.6" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2ae0572556cad5b2f7239d6d89aba67f445c48f69610d9f540351cb8929c604" +checksum = "e360e45c2bf406a867c35ec5daee433f2c3bbbaf013469e6a386a322a9713885" dependencies = [ "anyhow", - "candid 0.9.0-beta.2", + "candid 0.9.0", "clap", "rustc-demangle", "tempfile", @@ -2228,9 +2804,24 @@ dependencies = [ [[package]] name = "ic0" -version = "0.18.10" +version = "0.18.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "576c539151d4769fb4d1a0c25c4108dd18facd04c5695b02cf2d226ab4e43aa5" + +[[package]] +name = "ic_bls12_381" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "187fa0cecf46628330b7a390a1a65fb0637ea00d3a1121aa847ecbebc0f3ff79" +checksum = "42a180f02c79a71fcbc10b194406dbffd6a883c916f96be4f17ae3aeb96348c5" +dependencies = [ + "digest 0.9.0", + "ff 0.12.1", + "group 0.12.1", + "pairing", + "rand_core", + "subtle", + "zeroize", +] [[package]] name = "icx-asset" @@ -2238,13 +2829,13 @@ version = "0.20.0" dependencies = [ "anstyle", "anyhow", - "candid 0.8.4", + "candid 0.9.0", "clap", "delay", "humantime", "ic-agent", "ic-asset", - "ic-utils", + "ic-utils 0.25.0", "libflate", "num-traits", "pem 1.1.1", @@ -2255,7 +2846,7 @@ dependencies = [ "slog-async", "slog-term", "thiserror", - "time", + "time 0.3.20", "tokio", "walkdir", ] @@ -2266,6 +2857,12 @@ version = "2.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "25a2bc672d1148e28034f176e01fffebb08b35768468cc954630da77a1449005" +[[package]] +name = "ident_case" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" + [[package]] name = "idna" version = "0.3.0" @@ -2465,11 +3062,34 @@ dependencies = [ "diff", "ena", "itertools 0.10.5", - "lalrpop-util", + "lalrpop-util 0.19.8", + "petgraph", + "pico-args 0.4.2", + "regex", + "regex-syntax 0.6.29", + "string_cache", + "term", + "tiny-keccak", + "unicode-xid", +] + +[[package]] +name = "lalrpop" +version = "0.20.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da4081d44f4611b66c6dd725e6de3169f9f63905421e8626fcb86b6a898998b8" +dependencies = [ + "ascii-canvas", + "bit-set", + "diff", + "ena", + "is-terminal", + "itertools 0.10.5", + "lalrpop-util 0.20.0", "petgraph", - "pico-args", + "pico-args 0.5.0", "regex", - "regex-syntax", + "regex-syntax 0.7.3", "string_cache", "term", "tiny-keccak", @@ -2485,6 +3105,15 @@ dependencies = [ "regex", ] +[[package]] +name = "lalrpop-util" +version = "0.20.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f35c735096c0293d313e8f2a641627472b83d01b937177fe76e5e2708d31e0d" +dependencies = [ + "regex", +] + [[package]] name = "lazy_static" version = "1.4.0" @@ -2602,10 +3231,16 @@ dependencies = [ "fnv", "proc-macro2", "quote", - "regex-syntax", + "regex-syntax 0.6.29", "syn 1.0.109", ] +[[package]] +name = "maplit" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3e2e65a1a2e43cfcb47a895c4c8b10d1f4a61097f9f254f183aee60cad9c651d" + [[package]] name = "memchr" version = "2.5.0" @@ -2669,7 +3304,7 @@ checksum = "e5d732bc30207a6423068df043e3d02e0735b155ad7ce1a6f76fe2baa5b158de" dependencies = [ "libc", "log", - "wasi", + "wasi 0.11.0+wasi-snapshot-preview1", "windows-sys 0.42.0", ] @@ -2755,6 +3390,19 @@ dependencies = [ "memoffset 0.6.5", ] +[[package]] +name = "nix" +version = "0.23.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f3790c00a0150112de0f4cd161e3d7fc4b2d8a5542ffc35f099a2562aecb35c" +dependencies = [ + "bitflags", + "cc", + "cfg-if 1.0.0", + "libc", + "memoffset 0.6.5", +] + [[package]] name = "nix" version = "0.26.2" @@ -3204,6 +3852,16 @@ dependencies = [ "indexmap", ] +[[package]] +name = "phantom_newtype" +version = "0.8.0" +source = "git+https://github.com/dfinity/ic.git?rev=a533346f63f4091eb64692891de0d5b2ffd5b22a#a533346f63f4091eb64692891de0d5b2ffd5b22a" +dependencies = [ + "candid 0.8.4", + "serde", + "slog", +] + [[package]] name = "phf_shared" version = "0.10.0" @@ -3219,6 +3877,12 @@ version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "db8bcd96cb740d03149cbad5518db9fd87126a10ab519c011893b1754134c468" +[[package]] +name = "pico-args" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5be167a7af36ee22fe3115051bc51f6e6c7054c9348e28deb4f49bd6f705a315" + [[package]] name = "pin-project-lite" version = "0.2.9" @@ -3327,6 +3991,16 @@ dependencies = [ "unicode-segmentation", ] +[[package]] +name = "pretty_assertions" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af7cee1a6c8a5b9208b3cb1061f10c0cb689087b3d8ce85fb9d2dd7a29b6ba66" +dependencies = [ + "diff", + "yansi", +] + [[package]] name = "proc-macro-crate" version = "0.1.5" @@ -3349,9 +4023,9 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.54" +version = "1.0.66" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e472a104799c74b514a57226160104aa483546de37e839ec50e3c2e41dd87534" +checksum = "18fb31db3f9bddb2ea821cde30a9f70117e3f119938b5ee630b7403aa6e2ead9" dependencies = [ "unicode-ident", ] @@ -3371,12 +4045,44 @@ dependencies = [ "rand", "rand_chacha", "rand_xorshift", - "regex-syntax", + "regex-syntax 0.6.29", "rusty-fork", "tempfile", "unarray", ] +[[package]] +name = "prost" +version = "0.11.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b82eaa1d779e9a4bc1c3217db8ffbeabaae1dca241bf70183242128d48681cd" +dependencies = [ + "bytes", + "prost-derive", +] + +[[package]] +name = "prost-derive" +version = "0.11.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5d2d8d10f3c6ded6da8b05b5fb3b8a5082514344d56c9f871412d29b4e075b4" +dependencies = [ + "anyhow", + "itertools 0.10.5", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "psm" +version = "0.1.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5787f7cda34e3033a72192c018bc5883100330f362ef279a8cbccfce8bb4e874" +dependencies = [ + "cc", +] + [[package]] name = "ptr_meta" version = "0.1.4" @@ -3411,9 +4117,9 @@ checksum = "a993555f31e5a609f617c12db6250dedcac1b0a85076912c436e6fc9b2c8e6a3" [[package]] name = "quote" -version = "1.0.26" +version = "1.0.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4424af4bf778aae2051a77b60283332f386554255d722233d09fbfc7e30da2fc" +checksum = "5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae" dependencies = [ "proc-macro2", ] @@ -3516,7 +4222,7 @@ checksum = "8b1f693b24f6ac912f4893ef08244d70b6067480d2f1a46e950c9691e6749d1d" dependencies = [ "aho-corasick", "memchr", - "regex-syntax", + "regex-syntax 0.6.29", ] [[package]] @@ -3525,6 +4231,12 @@ version = "0.6.29" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" +[[package]] +name = "regex-syntax" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2ab07dc67230e4a4718e70fd5c20055a4334b121f1f9db8fe63ef39ce9b8c846" + [[package]] name = "rend" version = "0.4.0" @@ -3804,6 +4516,12 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ea6a9290e3c9cf0f18145ef7ffa62d68ee0bf5fcd651017e586dc7fd5da448c2" +[[package]] +name = "scoped_threadpool" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d51f5df5af43ab3f1360b429fa5e0152ac5ce8c0bd6485cae490332e96846a8" + [[package]] name = "scopeguard" version = "1.1.0" @@ -3914,9 +4632,9 @@ dependencies = [ [[package]] name = "serde" -version = "1.0.164" +version = "1.0.187" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e8c8cf938e98f769bc164923b06dce91cea1751522f46f8466461af04c9027d" +checksum = "30a7fe14252655bd1e578af19f5fa00fe02fd0013b100ca6b49fde31c41bae4c" dependencies = [ "serde_derive", ] @@ -3942,13 +4660,13 @@ dependencies = [ [[package]] name = "serde_derive" -version = "1.0.164" +version = "1.0.187" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9735b638ccc51c28bf6914d90a2e9725b377144fc612c49a611fddd1b631d68" +checksum = "e46b2a6ca578b3f1d4501b12f78ed4692006d79d82a1a7c561c12dbc3d625eb8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.11", + "syn 2.0.29", ] [[package]] @@ -3994,7 +4712,7 @@ checksum = "bcec881020c684085e55a25f7fd888954d56609ef363479dc5a1305eb0d40cab" dependencies = [ "proc-macro2", "quote", - "syn 2.0.11", + "syn 2.0.29", ] [[package]] @@ -4029,6 +4747,28 @@ dependencies = [ "serde", ] +[[package]] +name = "serde_with" +version = "1.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "678b5a069e50bf00ecd22d0cd8ddf7c236f68581b03db652061ed5eb13a312ff" +dependencies = [ + "serde", + "serde_with_macros", +] + +[[package]] +name = "serde_with_macros" +version = "1.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e182d6ec6f05393cc0e5ed1bf81ad6db3a8feedf8ee515ecdd369809bcce8082" +dependencies = [ + "darling", + "proc-macro2", + "quote", + "syn 1.0.109", +] + [[package]] name = "sha1" version = "0.10.5" @@ -4064,6 +4804,19 @@ dependencies = [ "digest 0.10.6", ] +[[package]] +name = "sha256" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7895c8ae88588ccead14ff438b939b0c569cd619116f14b4d13fdff7b8333386" +dependencies = [ + "async-trait", + "bytes", + "hex", + "sha2 0.10.6", + "tokio", +] + [[package]] name = "sha3" version = "0.10.6" @@ -4130,7 +4883,7 @@ dependencies = [ "num-bigint 0.4.3", "num-traits", "thiserror", - "time", + "time 0.3.20", ] [[package]] @@ -4153,6 +4906,9 @@ name = "slog" version = "2.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8347046d4ebd943127157b94d63abb990fcf729dc4e9978927fdf4ac3c998d06" +dependencies = [ + "erased-serde", +] [[package]] name = "slog-async" @@ -4176,7 +4932,7 @@ dependencies = [ "slog", "term", "thread_local", - "time", + "time 0.3.20", ] [[package]] @@ -4227,6 +4983,19 @@ version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" +[[package]] +name = "stacker" +version = "0.1.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c886bd4480155fd3ef527d45e9ac8dd7118a898a46530b7b94c3e21866259fce" +dependencies = [ + "cc", + "cfg-if 1.0.0", + "libc", + "psm", + "winapi", +] + [[package]] name = "static_assertions" version = "1.1.0" @@ -4252,12 +5021,31 @@ version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" +[[package]] +name = "strum" +version = "0.23.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cae14b91c7d11c9a851d3fbc80a963198998c2a64eec840477fa92d8ce9b70bb" + [[package]] name = "strum" version = "0.24.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "063e6045c0e62079840579a7e47a355ae92f60eb74daaf156fb1e84ba164e63f" +[[package]] +name = "strum_macros" +version = "0.23.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5bb0dc7ee9c15cea6199cde9a127fa16a4c5819af85395457ad72d68edc85a38" +dependencies = [ + "heck 0.3.3", + "proc-macro2", + "quote", + "rustversion", + "syn 1.0.109", +] + [[package]] name = "strum_macros" version = "0.24.3" @@ -4300,9 +5088,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.11" +version = "2.0.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21e3787bb71465627110e7d87ed4faaa36c1f61042ee67badb9e2ef173accc40" +checksum = "c324c494eba9d92503e6f1ef2e6df781e78f6a7705a0202d9801b198807d518a" dependencies = [ "proc-macro2", "quote", @@ -4413,9 +5201,15 @@ checksum = "f9456a42c5b0d803c8cd86e73dd7cc9edd429499f37a3550d286d5e86720569f" dependencies = [ "proc-macro2", "quote", - "syn 2.0.11", + "syn 2.0.29", ] +[[package]] +name = "thousands" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3bf63baf9f5039dadc247375c29eb13706706cfde997d0330d05aa63a77d8820" + [[package]] name = "thread_local" version = "1.1.4" @@ -4425,6 +5219,17 @@ dependencies = [ "once_cell", ] +[[package]] +name = "time" +version = "0.1.45" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b797afad3f312d1c66a56d11d0316f916356d11bd158fbc6ca6389ff6bf805a" +dependencies = [ + "libc", + "wasi 0.10.0+wasi-snapshot-preview1", + "winapi", +] + [[package]] name = "time" version = "0.3.20" @@ -4499,9 +5304,9 @@ checksum = "cda74da7e1a664f795bb1f8a87ec406fb89a02522cf6e50620d016add6dbbf5c" [[package]] name = "tokio" -version = "1.27.0" +version = "1.28.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d0de47a4eecbe11f498978a9b29d792f0d2692d1dd003650c24c76510e3bc001" +checksum = "94d7b1cfd2aa4011f2de74c2c4c63665e27a71006b0a192dcd2710272e73dfa2" dependencies = [ "autocfg", "bytes", @@ -4513,18 +5318,18 @@ dependencies = [ "signal-hook-registry", "socket2", "tokio-macros", - "windows-sys 0.45.0", + "windows-sys 0.48.0", ] [[package]] name = "tokio-macros" -version = "2.0.0" +version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61a573bdc87985e9d6ddeed1b3d864e8a302c847e40d647746df2f1de209d1ce" +checksum = "630bdcf245f78637c13ec01ffae6187cca34625e8c63150d424b59e55af2675e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.11", + "syn 2.0.29", ] [[package]] @@ -4734,6 +5539,7 @@ dependencies = [ "form_urlencoded", "idna", "percent-encoding", + "serde", ] [[package]] @@ -4787,16 +5593,18 @@ dependencies = [ [[package]] name = "walrus" -version = "0.19.0" +version = "0.20.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4eb08e48cde54c05f363d984bb54ce374f49e242def9468d2e1b6c2372d291f8" +checksum = "cc27d837c587f863d99515dc8cae7cef1098bd1d99fa29373e3660c12766265e" dependencies = [ "anyhow", + "gimli", "id-arena", "leb128", "log", "walrus-macro", - "wasmparser 0.77.0", + "wasm-encoder", + "wasmparser", ] [[package]] @@ -4821,6 +5629,12 @@ dependencies = [ "try-lock", ] +[[package]] +name = "wasi" +version = "0.10.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a143597ca7c7793eff794def352d41792a93c481eb1042423ff7ff72ba2c31f" + [[package]] name = "wasi" version = "0.11.0+wasi-snapshot-preview1" @@ -4893,16 +5707,25 @@ version = "0.2.83" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1c38c045535d93ec4f0b4defec448e4291638ee608530863b1e2ba115d4fff7f" +[[package]] +name = "wasm-encoder" +version = "0.29.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "18c41dbd92eaebf3612a39be316540b8377c871cb9bde6b064af962984912881" +dependencies = [ + "leb128", +] + [[package]] name = "wasm-opt" -version = "0.112.0" +version = "0.113.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87fef6d0d508f08334e0ab0e6877feb4c0ecb3956bcf2cb950699b22fedf3e9c" +checksum = "65a2799e08026234b07b44da6363703974e75be21430cef00756bbc438c8ff8a" dependencies = [ "anyhow", "libc", - "strum", - "strum_macros", + "strum 0.24.1", + "strum_macros 0.24.3", "tempfile", "thiserror", "wasm-opt-cxx-sys", @@ -4911,9 +5734,9 @@ dependencies = [ [[package]] name = "wasm-opt-cxx-sys" -version = "0.112.0" +version = "0.113.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc816bbc1596c8f2e8127e137a760c798023ef3d378f2ae51f0f1840e2dfa445" +checksum = "c8d26f86d1132245e8bcea8fac7f02b10fb885b6696799969c94d7d3c14db5e1" dependencies = [ "anyhow", "cxx", @@ -4923,9 +5746,9 @@ dependencies = [ [[package]] name = "wasm-opt-sys" -version = "0.112.0" +version = "0.113.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "40199e4f68ef1071b3c6d0bd8026a12b481865d4b9e49c156932ea9a6234dd14" +checksum = "497d069cd3420cdd52154a320b901114a20946878e2de62c670f9d906e472370" dependencies = [ "anyhow", "cc", @@ -4948,18 +5771,9 @@ dependencies = [ [[package]] name = "wasmparser" -version = "0.77.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b35c86d22e720a07d954ebbed772d01180501afe7d03d464f413bb5f8914a8d6" - -[[package]] -name = "wasmparser" -version = "0.87.0" +version = "0.80.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c04e207cd2e8ecb6f9bd28a2cf3119b4c6bfeee6fe3a25cc1daf8041d00a875" -dependencies = [ - "indexmap", -] +checksum = "449167e2832691a1bff24cde28d2804e90e09586a448c8e76984792c44334a6b" [[package]] name = "web-sys" @@ -5041,6 +5855,15 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" +[[package]] +name = "windows" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e686886bc078bc1b0b600cac0147aadb815089b6e4da64016cbd754b6342700f" +dependencies = [ + "windows-targets 0.48.0", +] + [[package]] name = "windows-sys" version = "0.36.1" @@ -5249,6 +6072,12 @@ dependencies = [ "winapi", ] +[[package]] +name = "wsl" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8dab7ac864710bdea6594becbea5b5050333cf34fefb0dc319567eb347950d4" + [[package]] name = "xattr" version = "0.2.3" @@ -5258,6 +6087,12 @@ dependencies = [ "libc", ] +[[package]] +name = "yansi" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09041cd90cf85f7f8b2df60c646f853b7f535ce68f85244eb6731cf89fa498ec" + [[package]] name = "zbus" version = "1.9.3" diff --git a/Cargo.toml b/Cargo.toml index 7bfd6ceec3..235919d094 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -17,13 +17,12 @@ rust-version = "1.65.0" license = "Apache-2.0" [workspace.dependencies] -candid = "0.8.4" -ic-agent = "0.24.1" +candid = "0.9.0" +ic-agent = "0.25.0" ic-asset = { path = "src/canisters/frontend/ic-asset" } -ic-cdk = "0.8.0" -ic-cdk-macros = "0.6.7" -ic-identity-hsm = "0.24.1" -ic-utils = "0.24.1" +ic-cdk = "0.10.0" +ic-identity-hsm = "0.25.0" +ic-utils = "0.25.0" aes-gcm = "0.9.4" anyhow = "1.0.56" @@ -68,19 +67,19 @@ url = "2.1.0" walkdir = "2.3.2" [patch.crates-io.ic-agent] -version = "0.24.1" +version = "0.25.0" git = "https://github.com/dfinity/agent-rs.git" -rev = "b9c57f8bab23cc9936dca4560293ffe485471c6d" +rev = "6d923cbc918852ef5bfaeb08e63c86580aa80ffe" [patch.crates-io.ic-identity-hsm] -version = "0.24.1" +version = "0.25.0" git = "https://github.com/dfinity/agent-rs.git" -rev = "b9c57f8bab23cc9936dca4560293ffe485471c6d" +rev = "6d923cbc918852ef5bfaeb08e63c86580aa80ffe" [patch.crates-io.ic-utils] -version = "0.24.1" +version = "0.25.0" git = "https://github.com/dfinity/agent-rs.git" -rev = "b9c57f8bab23cc9936dca4560293ffe485471c6d" +rev = "6d923cbc918852ef5bfaeb08e63c86580aa80ffe" [profile.release] panic = 'abort' diff --git a/e2e/assets/inter/Cargo.toml b/e2e/assets/inter/Cargo.toml index 12ee451940..8100b0d8bf 100644 --- a/e2e/assets/inter/Cargo.toml +++ b/e2e/assets/inter/Cargo.toml @@ -1,6 +1,7 @@ [workspace] -members = [ - "src/counter_rs", - "src/inter_rs", - "src/inter2_rs", -] +members = ["src/counter_rs", "src/inter_rs", "src/inter2_rs"] + +[workspace.dependencies] +candid = "0.9" +ic-cdk = "0.10" +ic-cdk-bindgen = "0.1" diff --git a/e2e/assets/inter/src/counter_rs/Cargo.toml b/e2e/assets/inter/src/counter_rs/Cargo.toml index 1abb082772..133044c092 100644 --- a/e2e/assets/inter/src/counter_rs/Cargo.toml +++ b/e2e/assets/inter/src/counter_rs/Cargo.toml @@ -11,7 +11,5 @@ path = "lib.rs" crate-type = ["cdylib"] [dependencies] -candid = "0.7.4" -ic-cdk = { version = "0.5" } -ic-cdk-macros = { version = "0.5" } -lazy_static = "1.4.0" +candid.workspace = true +ic-cdk.workspace = true diff --git a/e2e/assets/inter/src/counter_rs/lib.rs b/e2e/assets/inter/src/counter_rs/lib.rs index 57c0c31d39..fd679526a3 100644 --- a/e2e/assets/inter/src/counter_rs/lib.rs +++ b/e2e/assets/inter/src/counter_rs/lib.rs @@ -1,8 +1,6 @@ -use ic_cdk::{ - api::call::ManualReply, - export::{candid, Principal}, -}; -use ic_cdk_macros::*; +use candid::Principal; +use ic_cdk::api::call::ManualReply; +use ic_cdk::{init, query, update}; use std::cell::{Cell, RefCell}; thread_local! { @@ -16,7 +14,7 @@ fn init() { } #[update] -fn inc() -> () { +fn inc() { ic_cdk::println!("{:?}", OWNER.with(|owner| owner.get())); COUNTER.with(|counter| *counter.borrow_mut() += 1u64); } @@ -27,6 +25,6 @@ fn read() -> ManualReply { } #[update] -fn write(input: candid::Nat) -> () { +fn write(input: candid::Nat) { COUNTER.with(|counter| *counter.borrow_mut() = input); } diff --git a/e2e/assets/inter/src/inter2_rs/Cargo.toml b/e2e/assets/inter/src/inter2_rs/Cargo.toml index a8cfe47164..e6c1ae9792 100644 --- a/e2e/assets/inter/src/inter2_rs/Cargo.toml +++ b/e2e/assets/inter/src/inter2_rs/Cargo.toml @@ -11,6 +11,8 @@ path = "lib.rs" crate-type = ["cdylib"] [dependencies] -candid = "0.7.4" -ic-cdk = { version = "*" } -ic-cdk-macros = { version = "*" } +candid.workspace = true +ic-cdk.workspace = true + +[build-dependencies] +ic-cdk-bindgen.workspace = true diff --git a/e2e/assets/inter/src/inter2_rs/build.rs b/e2e/assets/inter/src/inter2_rs/build.rs new file mode 100644 index 0000000000..948b69034e --- /dev/null +++ b/e2e/assets/inter/src/inter2_rs/build.rs @@ -0,0 +1,11 @@ +use ic_cdk_bindgen::{Builder, Config}; +use std::path::PathBuf; + +fn main() { + let manifest_dir = + PathBuf::from(std::env::var("CARGO_MANIFEST_DIR").expect("Cannot find manifest dir")); + let counter = Config::new("inter_mo"); + let mut builder = Builder::new(); + builder.add(counter); + builder.build(Some(manifest_dir.join("declarations"))); +} diff --git a/e2e/assets/inter/src/inter2_rs/lib.rs b/e2e/assets/inter/src/inter2_rs/lib.rs index 8daae069b5..2781e825ac 100644 --- a/e2e/assets/inter/src/inter2_rs/lib.rs +++ b/e2e/assets/inter/src/inter2_rs/lib.rs @@ -1,20 +1,19 @@ -use ic_cdk::export::candid; -use ic_cdk_macros::*; +use ic_cdk::update; -#[import(canister = "inter_mo")] -struct CounterCanister; +mod declarations; +use declarations::inter_mo::inter_mo; #[update] async fn read() -> candid::Nat { - CounterCanister::read().await.0 + inter_mo.read().await.unwrap().0 } #[update] -async fn inc() -> () { - CounterCanister::inc().await +async fn inc() { + inter_mo.inc().await.unwrap() } #[update] -async fn write(input: candid::Nat) -> () { - CounterCanister::write(input).await +async fn write(input: candid::Nat) { + inter_mo.write(input).await.unwrap() } diff --git a/e2e/assets/inter/src/inter_rs/Cargo.toml b/e2e/assets/inter/src/inter_rs/Cargo.toml index 928092f8b6..89e99e8282 100644 --- a/e2e/assets/inter/src/inter_rs/Cargo.toml +++ b/e2e/assets/inter/src/inter_rs/Cargo.toml @@ -11,6 +11,8 @@ path = "lib.rs" crate-type = ["cdylib"] [dependencies] -candid = "0.7.4" -ic-cdk = { version = "*" } -ic-cdk-macros = { version = "*" } +candid.workspace = true +ic-cdk.workspace = true + +[build-dependencies] +ic-cdk-bindgen.workspace = true diff --git a/e2e/assets/inter/src/inter_rs/build.rs b/e2e/assets/inter/src/inter_rs/build.rs new file mode 100644 index 0000000000..9b9493ff07 --- /dev/null +++ b/e2e/assets/inter/src/inter_rs/build.rs @@ -0,0 +1,11 @@ +use ic_cdk_bindgen::{Builder, Config}; +use std::path::PathBuf; + +fn main() { + let manifest_dir = + PathBuf::from(std::env::var("CARGO_MANIFEST_DIR").expect("Cannot find manifest dir")); + let counter = Config::new("counter_mo"); + let mut builder = Builder::new(); + builder.add(counter); + builder.build(Some(manifest_dir.join("declarations"))); +} diff --git a/e2e/assets/inter/src/inter_rs/lib.rs b/e2e/assets/inter/src/inter_rs/lib.rs index fd407bf339..9a2bb519ed 100644 --- a/e2e/assets/inter/src/inter_rs/lib.rs +++ b/e2e/assets/inter/src/inter_rs/lib.rs @@ -1,20 +1,19 @@ -use ic_cdk::export::candid; -use ic_cdk_macros::*; +use ic_cdk::update; -#[import(canister = "counter_mo")] -struct CounterCanister; +mod declarations; +use declarations::counter_mo::counter_mo; #[update] async fn read() -> candid::Nat { - CounterCanister::read().await.0 + counter_mo.read().await.unwrap().0 } #[update] async fn inc() -> () { - CounterCanister::inc().await + counter_mo.inc().await.unwrap() } #[update] async fn write(input: candid::Nat) -> () { - CounterCanister::write(input).await + counter_mo.write(input).await.unwrap() } diff --git a/e2e/assets/rust_deps/src/rust_deps/Cargo.toml b/e2e/assets/rust_deps/src/rust_deps/Cargo.toml index 02b6cae869..bd7efb009d 100644 --- a/e2e/assets/rust_deps/src/rust_deps/Cargo.toml +++ b/e2e/assets/rust_deps/src/rust_deps/Cargo.toml @@ -10,5 +10,8 @@ path = "lib.rs" crate-type = ["cdylib"] [dependencies] -ic-cdk = "0.5" -ic-cdk-macros = "0.5" +candid = "0.9" +ic-cdk = "0.10" + +[build-dependencies] +ic-cdk-bindgen = "0.1" diff --git a/e2e/assets/rust_deps/src/rust_deps/build.rs b/e2e/assets/rust_deps/src/rust_deps/build.rs new file mode 100644 index 0000000000..70ceacb120 --- /dev/null +++ b/e2e/assets/rust_deps/src/rust_deps/build.rs @@ -0,0 +1,11 @@ +use ic_cdk_bindgen::{Builder, Config}; +use std::path::PathBuf; + +fn main() { + let manifest_dir = + PathBuf::from(std::env::var("CARGO_MANIFEST_DIR").expect("Cannot find manifest dir")); + let counter = Config::new("multiply_deps"); + let mut builder = Builder::new(); + builder.add(counter); + builder.build(Some(manifest_dir.join("declarations"))); +} diff --git a/e2e/assets/rust_deps/src/rust_deps/lib.rs b/e2e/assets/rust_deps/src/rust_deps/lib.rs index b5f4d16d21..409cb797ba 100644 --- a/e2e/assets/rust_deps/src/rust_deps/lib.rs +++ b/e2e/assets/rust_deps/src/rust_deps/lib.rs @@ -1,11 +1,10 @@ -use ic_cdk_macros::*; -use ic_cdk::export::candid; +use ic_cdk::update; -#[import(canister = "multiply_deps")] -struct CounterCanister; +mod declarations; +use declarations::multiply_deps::multiply_deps; // Inter-canister call can only be from a update call #[update] async fn read() -> candid::Nat { - CounterCanister::read().await.0 + multiply_deps.read().await.unwrap().0 } diff --git a/e2e/assets/warning/main.mo b/e2e/assets/warning/main.mo index a4054e20c3..0dfcf8308d 100644 --- a/e2e/assets/warning/main.mo +++ b/e2e/assets/warning/main.mo @@ -1,4 +1,6 @@ -func returnsLargeTuple() : (Nat,Nat,Nat,Nat,Nat,Nat,Nat,Nat,Nat,Nat,Nat,Nat,Nat,Nat,Nat,Nat,Nat,Nat,Nat,Nat) = (1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20); -func wantsLargeTuple(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20) = (); -wantsLargeTuple(returnsLargeTuple()); +actor { + func returnsLargeTuple() : (Nat,Nat,Nat,Nat,Nat,Nat,Nat,Nat,Nat,Nat,Nat,Nat,Nat,Nat,Nat,Nat,Nat,Nat,Nat,Nat) = (1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20); + func wantsLargeTuple(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20) = (); + let _ = wantsLargeTuple(returnsLargeTuple()); +} diff --git a/e2e/tests-dfx/assetscanister.bash b/e2e/tests-dfx/assetscanister.bash index e28552267c..0f68a466c9 100644 --- a/e2e/tests-dfx/assetscanister.bash +++ b/e2e/tests-dfx/assetscanister.bash @@ -109,14 +109,14 @@ check_permission_failure() { dfx identity get-principal --identity prepare dfx canister call e2e_project_frontend list_permitted '(record { permission = variant { Commit }; })' assert_command dfx deploy e2e_project_frontend --by-proposal --identity prepare - assert_contains "Proposed commit of batch 2 with evidence 4301263f1fcc0d19ef92cfb6774c4da92bf1a9d2002a293a9d95d97819c02958. Either commit it by proposal, or delete it." + assert_contains "Proposed commit of batch 2 with evidence 164fcc4d933ff9992ab6ab909a4bf350010fa0f4a3e1e247bfc679d3f45254e1. Either commit it by proposal, or delete it." assert_command_fail dfx deploy e2e_project_frontend --by-proposal --identity prepare assert_contains "Batch 2 is already proposed. Delete or execute it to propose another." assert_command dfx deploy e2e_project_frontend --compute-evidence --identity anonymous # shellcheck disable=SC2154 - assert_eq "4301263f1fcc0d19ef92cfb6774c4da92bf1a9d2002a293a9d95d97819c02958" "$stdout" + assert_eq "164fcc4d933ff9992ab6ab909a4bf350010fa0f4a3e1e247bfc679d3f45254e1" "$stdout" ID=$(dfx canister id e2e_project_frontend) PORT=$(get_webserver_port) @@ -136,9 +136,9 @@ check_permission_failure() { assert_command_fail dfx canister call e2e_project_frontend commit_proposed_batch "$wrong_commit_args" --identity commit assert_match "batch computed evidence .* does not match presented evidence" - commit_args='(record { batch_id = 2; evidence = blob "\43\01\26\3f\1f\cc\0d\19\ef\92\cf\b6\77\4c\4d\a9\2b\f1\a9\d2\00\2a\29\3a\9d\95\d9\78\19\c0\29\58" } )' + commit_args='(record { batch_id = 2; evidence = blob "\16\4f\cc\4d\93\3f\f9\99\2a\b6\ab\90\9a\4b\f3\50\01\0f\a0\f4\a3\e1\e2\47\bf\c6\79\d3\f4\52\54\e1" } )' assert_command dfx canister call e2e_project_frontend validate_commit_proposed_batch "$commit_args" --identity commit - assert_contains "commit proposed batch 2 with evidence 4301" + assert_contains "commit proposed batch 2 with evidence 164f" assert_command dfx canister call e2e_project_frontend commit_proposed_batch "$commit_args" --identity commit assert_eq "()" @@ -188,11 +188,11 @@ check_permission_failure() { dfx identity get-principal --identity prepare dfx canister call e2e_project_frontend list_permitted '(record { permission = variant { Commit }; })' assert_command dfx deploy e2e_project_frontend --by-proposal --identity prepare - assert_contains "Proposed commit of batch 2 with evidence 1b45c8b1d0deec88ac032590e0f1cd9ab407f796e827aac880f4ffb035fdc200. Either commit it by proposal, or delete it." + assert_contains "Proposed commit of batch 2 with evidence 9b72eee7f0d7af2a9b41233c341b1caa0c905ef91405f5f513ffb58f68afee5b. Either commit it by proposal, or delete it." assert_command dfx deploy e2e_project_frontend --compute-evidence --identity anonymous # shellcheck disable=SC2154 - assert_eq "1b45c8b1d0deec88ac032590e0f1cd9ab407f796e827aac880f4ffb035fdc200" "$stdout" + assert_eq "9b72eee7f0d7af2a9b41233c341b1caa0c905ef91405f5f513ffb58f68afee5b" "$stdout" ID=$(dfx canister id e2e_project_frontend) PORT=$(get_webserver_port) @@ -200,9 +200,9 @@ check_permission_failure() { assert_command_fail curl --fail -vv http://localhost:"$PORT"/sample-asset.txt?canisterId="$ID" assert_contains "The requested URL returned error: 404" - commit_args='(record { batch_id = 2; evidence = blob "\1b\45\c8\b1\d0\de\ec\88\ac\03\25\90\e0\f1\cd\9a\b4\07\f7\96\e8\27\aa\c8\80\f4\ff\b0\35\fd\c2\00" } )' + commit_args='(record { batch_id = 2; evidence = blob "\9b\72\ee\e7\f0\d7\af\2a\9b\41\23\3c\34\1b\1c\aa\0c\90\5e\f9\14\05\f5\f5\13\ff\b5\8f\68\af\ee\5b" } )' assert_command dfx canister call e2e_project_frontend validate_commit_proposed_batch "$commit_args" --identity commit - assert_contains "commit proposed batch 2 with evidence 1b45c8b1d0deec88ac032590e0f1cd9ab407f796e827aac880f4ffb035fdc200" + assert_contains "commit proposed batch 2 with evidence 9b72eee7f0d7af2a9b41233c341b1caa0c905ef91405f5f513ffb58f68afee5b" assert_command dfx canister call e2e_project_frontend commit_proposed_batch "$commit_args" --identity commit assert_eq "()" @@ -1359,20 +1359,20 @@ CHERRIES" "$stdout" "cache": { "max_age": 2000 }, - "allow_raw_access": false + "allow_raw_access": true }' assert_match 'WARN: 4 unmatched configurations in .*/src/e2e_project_frontend/assets/somedir/.ic-assets.json config file:' assert_contains 'WARN: { "match": "nevermatchme", "headers": {}, "ignore": false, - "allow_raw_access": false + "allow_raw_access": true } WARN: { "match": "nevermatchmetoo", "headers": {}, "ignore": false, - "allow_raw_access": false + "allow_raw_access": true } WARN: { "match": "non-matcher", @@ -1380,7 +1380,7 @@ WARN: { "x-header": "x-value" }, "ignore": false, - "allow_raw_access": false + "allow_raw_access": true }' # splitting this up into two checks, because the order is different on macos vs ubuntu assert_contains 'WARN: { @@ -1389,7 +1389,7 @@ WARN: { "x-header": "x-value" }, "ignore": false, - "allow_raw_access": false + "allow_raw_access": true }' } @@ -1417,7 +1417,7 @@ WARN: { record { headers = opt vec { record { "x-key"; "x-value" } }; is_aliased = opt true; - allow_raw_access = opt false; + allow_raw_access = opt true; max_age = opt (2_000 : nat64); }, )' @@ -1437,7 +1437,7 @@ WARN: { record { headers = opt vec { record { "x-key"; "x-value" } }; is_aliased = opt true; - allow_raw_access = opt false; + allow_raw_access = opt true; max_age = opt (5 : nat64); }, )' @@ -1450,7 +1450,7 @@ WARN: { record { headers = opt vec { record { "new-key"; "new-value" } }; is_aliased = opt true; - allow_raw_access = opt false; + allow_raw_access = opt true; max_age = opt (5 : nat64); }, )' @@ -1546,7 +1546,7 @@ WARN: { record { headers = null; is_aliased = null; - allow_raw_access = opt false; + allow_raw_access = opt true; max_age = null; }, )' diff --git a/nix/sources.json b/nix/sources.json index 5569ec4e13..affd1ee71f 100644 --- a/nix/sources.json +++ b/nix/sources.json @@ -127,7 +127,7 @@ "ic-starter-x86_64-darwin": { "builtin": false, "rev": "0ab9178c6684f122ae713928b3664c33a697e9c4", - "sha256": "0zy6bml4lmca7pyvgb3q5rqmsm5d87c0y9j9i7y7n39qnxhw4lm2", + "sha256": "0pf094v4v09xi94bhirfkz3jbijiax4asnrib4a12yw5qbj0sb87", "type": "file", "url": "https://download.dfinity.systems/ic/0ab9178c6684f122ae713928b3664c33a697e9c4/openssl-static-binaries/x86_64-darwin/ic-starter.gz", "url_template": "https://download.dfinity.systems/ic//openssl-static-binaries/x86_64-darwin/ic-starter.gz" @@ -188,7 +188,7 @@ "builtin": false, "description": "The replica binary. It must be updated together with the canister_sandbox binary.", "rev": "0ab9178c6684f122ae713928b3664c33a697e9c4", - "sha256": "0vskwrbgdxga7pwc3wknmvprhrm1wxfb6q4dn4z6xcccd8jw2lgj", + "sha256": "08zw6imbk6cf6h15jrrdjzd4dzqy3wiqsfg6rrxivanqjp12kavy", "type": "file", "url": "https://download.dfinity.systems/ic/0ab9178c6684f122ae713928b3664c33a697e9c4/openssl-static-binaries/x86_64-darwin/replica.gz", "url_template": "https://download.dfinity.systems/ic//openssl-static-binaries/x86_64-darwin/replica.gz" diff --git a/src/canisters/frontend/ic-asset/src/asset/config.rs b/src/canisters/frontend/ic-asset/src/asset/config.rs index 8068d0928c..14cd34e89a 100644 --- a/src/canisters/frontend/ic-asset/src/asset/config.rs +++ b/src/canisters/frontend/ic-asset/src/asset/config.rs @@ -24,7 +24,7 @@ pub struct AssetConfig { pub(crate) headers: Option, pub(crate) ignore: Option, pub(crate) enable_aliasing: Option, - #[derivative(Default(value = "Some(false)"))] + #[derivative(Default(value = "Some(true)"))] pub(crate) allow_raw_access: Option, } @@ -36,7 +36,7 @@ pub(crate) struct CacheConfig { } fn default_raw_access() -> Option { - Some(false) + Some(true) } /// A single configuration object, from `.ic-assets.json` config file @@ -932,7 +932,7 @@ mod with_tempdir { .get_asset_config(assets_dir.join("index.html").as_path()) .unwrap(), AssetConfig { - allow_raw_access: Some(false), + allow_raw_access: Some(true), ..Default::default() }, ); diff --git a/src/canisters/frontend/ic-certified-assets/Cargo.toml b/src/canisters/frontend/ic-certified-assets/Cargo.toml index 59f8be0453..c52d0c0b42 100644 --- a/src/canisters/frontend/ic-certified-assets/Cargo.toml +++ b/src/canisters/frontend/ic-certified-assets/Cargo.toml @@ -13,15 +13,19 @@ keywords = ["internet-computer", "dfinity"] [dependencies] base64.workspace = true -candid = { workspace = true } +candid.workspace = true hex.workspace = true ic-cdk.workspace = true -ic-cdk-macros.workspace = true -ic-certified-map = "0.3" -ic-response-verification = "0.1.0" +ic-certified-map = "0.3.2" +ic-response-verification = "0.3.0" +ic-representation-independent-hash = "0.3.0" itertools.workspace = true num-traits.workspace = true serde.workspace = true serde_bytes.workspace = true serde_cbor.workspace = true sha2.workspace = true + +[dev-dependencies] +ic-response-verification-test-utils = { git = "https://github.com/dfinity/response-verification.git", rev = "d421c1bf01806425cbad4b977bd1499a259f3506" } +ic-crypto-tree-hash = { git = "https://github.com/dfinity/ic.git", rev = "a533346f63f4091eb64692891de0d5b2ffd5b22a" } diff --git a/src/canisters/frontend/ic-certified-assets/src/asset_certification/mod.rs b/src/canisters/frontend/ic-certified-assets/src/asset_certification/mod.rs index 6eb65ed207..31f31d4317 100644 --- a/src/canisters/frontend/ic-certified-assets/src/asset_certification/mod.rs +++ b/src/canisters/frontend/ic-certified-assets/src/asset_certification/mod.rs @@ -14,7 +14,7 @@ use sha2::Digest; pub mod tree; pub mod types; pub use ic_certified_map::HashTree; -pub use ic_response_verification::hash::Value; +use ic_representation_independent_hash::Value; pub type CertifiedResponses = NestedTree>; diff --git a/src/canisters/frontend/ic-certified-assets/src/asset_certification/types/certification.rs b/src/canisters/frontend/ic-certified-assets/src/asset_certification/types/certification.rs index 5190029ea3..a6f8757129 100644 --- a/src/canisters/frontend/ic-certified-assets/src/asset_certification/types/certification.rs +++ b/src/canisters/frontend/ic-certified-assets/src/asset_certification/types/certification.rs @@ -1,7 +1,7 @@ use std::borrow::Borrow; use candid::{CandidType, Deserialize}; -use ic_response_verification::hash::Value; +use ic_representation_independent_hash::Value; use serde_cbor::ser::IoWrite; use serde_cbor::Serializer; use sha2::Digest; diff --git a/src/canisters/frontend/ic-certified-assets/src/asset_certification/types/http.rs b/src/canisters/frontend/ic-certified-assets/src/asset_certification/types/http.rs index a6478a89c1..7392a2d250 100644 --- a/src/canisters/frontend/ic-certified-assets/src/asset_certification/types/http.rs +++ b/src/canisters/frontend/ic-certified-assets/src/asset_certification/types/http.rs @@ -3,9 +3,9 @@ use crate::{ state_machine::{encoding_certification_order, Asset, AssetEncoding}, }; -use candid::{CandidType, Deserialize, Func, Nat}; +use candid::{define_function, CandidType, Deserialize, Nat}; use ic_certified_map::Hash; -use ic_response_verification::hash::{representation_independent_hash, Value}; +use ic_representation_independent_hash::{representation_independent_hash, Value}; use serde_bytes::ByteBuf; use sha2::Digest; @@ -47,10 +47,11 @@ pub struct StreamingCallbackToken { pub sha256: Option, } +define_function!(pub CallbackFunc : (StreamingCallbackToken) -> (StreamingCallbackHttpResponse) query); #[derive(Clone, Debug, CandidType, Deserialize)] pub enum StreamingStrategy { Callback { - callback: Func, + callback: CallbackFunc, token: StreamingCallbackToken, }, } @@ -163,7 +164,7 @@ impl HttpResponse { key: &str, chunk_index: usize, certificate_header: Option<&HeaderField>, - callback: &Func, + callback: &CallbackFunc, etags: &[Hash], cert_version: u16, ) -> HttpResponse { @@ -210,7 +211,7 @@ impl HttpResponse { key: &str, chunk_index: usize, certificate_header: Option<&HeaderField>, - callback: &Func, + callback: &CallbackFunc, etags: &[Hash], cert_version: u16, ) -> Option { diff --git a/src/canisters/frontend/ic-certified-assets/src/asset_certification/types/rc_bytes.rs b/src/canisters/frontend/ic-certified-assets/src/asset_certification/types/rc_bytes.rs index e9e21561d4..a12d20f61a 100644 --- a/src/canisters/frontend/ic-certified-assets/src/asset_certification/types/rc_bytes.rs +++ b/src/canisters/frontend/ic-certified-assets/src/asset_certification/types/rc_bytes.rs @@ -1,6 +1,6 @@ //! This module contains an implementation of [RcBytes], a reference-counted byte array. -use ic_cdk::export::candid::{ - types::{internal::Type, Serializer}, +use candid::{ + types::{Serializer, Type, TypeInner}, CandidType, Deserialize, }; use serde::de::Deserializer; @@ -14,7 +14,7 @@ pub struct RcBytes(Rc); impl CandidType for RcBytes { fn _ty() -> Type { - Type::Vec(Box::new(Type::Nat8)) + TypeInner::Vec(TypeInner::Nat8.into()).into() } fn idl_serialize(&self, serializer: S) -> Result<(), S::Error> diff --git a/src/canisters/frontend/ic-certified-assets/src/lib.rs b/src/canisters/frontend/ic-certified-assets/src/lib.rs index 9cbac88bf4..34b7293f3a 100644 --- a/src/canisters/frontend/ic-certified-assets/src/lib.rs +++ b/src/canisters/frontend/ic-certified-assets/src/lib.rs @@ -11,7 +11,8 @@ mod tests; pub use crate::state_machine::StableState; use crate::{ asset_certification::types::http::{ - HttpRequest, HttpResponse, StreamingCallbackHttpResponse, StreamingCallbackToken, + CallbackFunc, HttpRequest, HttpResponse, StreamingCallbackHttpResponse, + StreamingCallbackToken, }, state_machine::{AssetDetails, CertifiedTree, EncodedAsset, State}, types::*, @@ -19,7 +20,7 @@ use crate::{ use asset_certification::types::{certification::AssetKey, rc_bytes::RcBytes}; use candid::{candid_method, Principal}; use ic_cdk::api::{call::ManualReply, caller, data_certificate, set_certified_data, time, trap}; -use ic_cdk_macros::{query, update}; +use ic_cdk::{query, update}; use serde_bytes::ByteBuf; use std::cell::RefCell; @@ -316,10 +317,7 @@ fn http_request(req: HttpRequest) -> HttpResponse { s.borrow().http_request( req, &certificate, - candid::Func { - method: "http_request_streaming_callback".to_string(), - principal: ic_cdk::id(), - }, + CallbackFunc::new(ic_cdk::id(), "http_request_streaming_callback".to_string()), ) }) } diff --git a/src/canisters/frontend/ic-certified-assets/src/state_machine.rs b/src/canisters/frontend/ic-certified-assets/src/state_machine.rs index 0f9d9f6c91..8bce06e1ff 100644 --- a/src/canisters/frontend/ic-certified-assets/src/state_machine.rs +++ b/src/canisters/frontend/ic-certified-assets/src/state_machine.rs @@ -13,8 +13,8 @@ use crate::{ }, http::{ build_ic_certificate_expression_from_headers_and_encoding, - build_ic_certificate_expression_header, response_hash, HttpRequest, HttpResponse, - StreamingCallbackHttpResponse, StreamingCallbackToken, FALLBACK_FILE, + build_ic_certificate_expression_header, response_hash, CallbackFunc, HttpRequest, + HttpResponse, StreamingCallbackHttpResponse, StreamingCallbackToken, FALLBACK_FILE, }, rc_bytes::RcBytes, }, @@ -25,9 +25,9 @@ use crate::{ url_decode::url_decode, }; -use candid::{CandidType, Deserialize, Func, Int, Nat, Principal}; +use candid::{CandidType, Deserialize, Int, Nat, Principal}; use ic_certified_map::{AsHashTree, Hash}; -use ic_response_verification::hash::Value; +use ic_representation_independent_hash::Value; use num_traits::ToPrimitive; use serde::Serialize; use serde_bytes::ByteBuf; @@ -245,7 +245,7 @@ pub struct StableState { impl Asset { fn allow_raw_access(&self) -> bool { - self.allow_raw_access.unwrap_or(false) + self.allow_raw_access.unwrap_or(true) } fn update_ic_certificate_expressions(&mut self) { @@ -802,7 +802,7 @@ impl State { path: &str, requested_encodings: Vec, chunk_index: usize, - callback: Func, + callback: CallbackFunc, etags: Vec, req: HttpRequest, ) -> HttpResponse { @@ -864,7 +864,7 @@ impl State { &self, req: HttpRequest, certificate: &[u8], - callback: Func, + callback: CallbackFunc, ) -> HttpResponse { let mut encodings = vec![]; // waiting for https://dfinity.atlassian.net/browse/BOUN-446 diff --git a/src/canisters/frontend/ic-certified-assets/src/tests.rs b/src/canisters/frontend/ic-certified-assets/src/tests.rs index 10d4a5a734..9f6db27758 100644 --- a/src/canisters/frontend/ic-certified-assets/src/tests.rs +++ b/src/canisters/frontend/ic-certified-assets/src/tests.rs @@ -1,6 +1,8 @@ use std::collections::HashMap; -use crate::asset_certification::types::http::{HttpRequest, HttpResponse, StreamingStrategy}; +use crate::asset_certification::types::http::{ + CallbackFunc, HttpRequest, HttpResponse, StreamingStrategy, +}; use crate::state_machine::{StableState, State, BATCH_EXPIRY_NANOS}; use crate::types::{ AssetProperties, BatchId, BatchOperation, CommitBatchArguments, CommitProposedBatchArguments, @@ -15,11 +17,8 @@ fn some_principal() -> Principal { Principal::from_text("ryjl3-tyaaa-aaaaa-aaaba-cai").unwrap() } -fn unused_callback() -> candid::Func { - candid::Func { - method: "unused".to_string(), - principal: some_principal(), - } +fn unused_callback() -> CallbackFunc { + CallbackFunc::new(some_principal(), "unused".to_string()) } struct AssetBuilder { @@ -887,10 +886,7 @@ fn uses_streaming_for_multichunk_assets() { .with_encoding("identity", vec![INDEX_BODY_CHUNK_1, INDEX_BODY_CHUNK_2])], ); - let streaming_callback = candid::Func { - method: "stream".to_string(), - principal: some_principal(), - }; + let streaming_callback = CallbackFunc::new(some_principal(), "stream".to_string()); let response = state.http_request( RequestBuilder::get("/index.html") .with_header("Accept-Encoding", "gzip,identity") @@ -1521,7 +1517,9 @@ mod allow_raw_access { "https://a-b-c.ic0.app/page" ); - state.create_test_asset(AssetBuilder::new("/page2.html", "text/html")); + state.create_test_asset( + AssetBuilder::new("/page2.html", "text/html").with_allow_raw_access(Some(false)), + ); let response = state.fake_http_request("a-b-c.raw.icp0.io", "/page2"); dbg!(&response); assert_eq!(response.status_code, 308); @@ -1530,7 +1528,9 @@ mod allow_raw_access { "https://a-b-c.icp0.io/page2" ); - state.create_test_asset(AssetBuilder::new("/index.html", "text/html")); + state.create_test_asset( + AssetBuilder::new("/index.html", "text/html").with_allow_raw_access(Some(false)), + ); let response = state.fake_http_request("a-b-c.raw.icp0.io", "/"); dbg!(&response); assert_eq!(response.status_code, 308); @@ -1588,9 +1588,8 @@ mod allow_raw_access { #[cfg(test)] mod certificate_expression { - use ic_response_verification::hash::Value; - use crate::asset_certification::types::http::build_ic_certificate_expression_from_headers_and_encoding; + use ic_representation_independent_hash::Value; use super::*; diff --git a/src/canisters/frontend/ic-frontend-canister/Cargo.toml b/src/canisters/frontend/ic-frontend-canister/Cargo.toml index 2858af5728..5947ab793d 100644 --- a/src/canisters/frontend/ic-frontend-canister/Cargo.toml +++ b/src/canisters/frontend/ic-frontend-canister/Cargo.toml @@ -16,4 +16,3 @@ crate-type = ["cdylib"] [dependencies] ic-certified-assets = { path = "../ic-certified-assets" } ic-cdk.workspace = true -ic-cdk-macros.workspace = true diff --git a/src/canisters/frontend/ic-frontend-canister/src/lib.rs b/src/canisters/frontend/ic-frontend-canister/src/lib.rs index 00abc170c4..ac0cd9d0c7 100644 --- a/src/canisters/frontend/ic-frontend-canister/src/lib.rs +++ b/src/canisters/frontend/ic-frontend-canister/src/lib.rs @@ -1,4 +1,4 @@ -use ic_cdk_macros::{init, post_upgrade, pre_upgrade}; +use ic_cdk::{init, post_upgrade, pre_upgrade}; #[init] fn init() { diff --git a/src/dfx/Cargo.toml b/src/dfx/Cargo.toml index e358baee7c..e4a35a4f9d 100644 --- a/src/dfx/Cargo.toml +++ b/src/dfx/Cargo.toml @@ -58,7 +58,7 @@ ic-agent = { workspace = true, features = ["reqwest"] } ic-asset.workspace = true ic-identity-hsm = { workspace = true } ic-utils = { workspace = true } -ic-wasm = "0.3.6" +ic-wasm = "0.4.0" indicatif = "0.16.0" itertools.workspace = true keyring.workspace = true @@ -107,8 +107,7 @@ time = { workspace = true, features = [ tokio = { workspace = true, features = ["fs"] } url.workspace = true walkdir.workspace = true -walrus = "0.19.0" -wasmparser = "0.87.0" +walrus = "0.20.1" which = "4.2.5" [target.'cfg(windows)'.dependencies] diff --git a/src/dfx/assets/new_project_node_files/src/__project_name___frontend/assets/.ic-assets.json5 b/src/dfx/assets/new_project_node_files/src/__project_name___frontend/assets/.ic-assets.json5 index 8dc76d1ee6..ccdea94aa1 100644 --- a/src/dfx/assets/new_project_node_files/src/__project_name___frontend/assets/.ic-assets.json5 +++ b/src/dfx/assets/new_project_node_files/src/__project_name___frontend/assets/.ic-assets.json5 @@ -24,7 +24,7 @@ // See: https://github.com/WebAssembly/content-security-policy/blob/main/proposals/CSP.md. // - We added img-src data: because data: images are used often. // - frame-ancestors: none mitigates clickjacking attacks. See https://owasp.org/www-community/attacks/Clickjacking. - "Content-Security-Policy": "default-src 'self';script-src 'self' 'unsafe-eval';connect-src 'self' https://icp0.io https://*.icp0.io;img-src 'self' data:;style-src * 'unsafe-inline';style-src-elem * 'unsafe-inline';font-src *;object-src 'none';base-uri 'self';frame-ancestors 'none';form-action 'self';upgrade-insecure-requests;", + "Content-Security-Policy": "default-src 'self';script-src 'self' 'unsafe-eval';connect-src 'self' https://icp0.io https://*.icp0.io https://icp-api.io;img-src 'self' data:;style-src * 'unsafe-inline';style-src-elem * 'unsafe-inline';font-src *;object-src 'none';base-uri 'self';frame-ancestors 'none';form-action 'self';upgrade-insecure-requests;", // Security: The permissions policy disables all features for security reasons. If your site needs such permissions, activate them. // To configure permissions go here https://www.permissionspolicy.com/ @@ -50,7 +50,8 @@ // See: https://owasp.org/www-community/attacks/xss/ "X-XSS-Protection": "1; mode=block" }, - // redirect all requests from .raw.icp0.io to .icp0.io (this redirection is the default) - "allow_raw_access": false + // Set the allow_raw_access field to false to redirect all requests from .raw.icp0.io to .icp0.io + // The default behavior is to allow raw access. + // "allow_raw_access": true }, ] diff --git a/src/dfx/assets/new_project_node_files/src/__project_name___frontend/src/.ic-assets.json5 b/src/dfx/assets/new_project_node_files/src/__project_name___frontend/src/.ic-assets.json5 index 8dc76d1ee6..ccdea94aa1 100644 --- a/src/dfx/assets/new_project_node_files/src/__project_name___frontend/src/.ic-assets.json5 +++ b/src/dfx/assets/new_project_node_files/src/__project_name___frontend/src/.ic-assets.json5 @@ -24,7 +24,7 @@ // See: https://github.com/WebAssembly/content-security-policy/blob/main/proposals/CSP.md. // - We added img-src data: because data: images are used often. // - frame-ancestors: none mitigates clickjacking attacks. See https://owasp.org/www-community/attacks/Clickjacking. - "Content-Security-Policy": "default-src 'self';script-src 'self' 'unsafe-eval';connect-src 'self' https://icp0.io https://*.icp0.io;img-src 'self' data:;style-src * 'unsafe-inline';style-src-elem * 'unsafe-inline';font-src *;object-src 'none';base-uri 'self';frame-ancestors 'none';form-action 'self';upgrade-insecure-requests;", + "Content-Security-Policy": "default-src 'self';script-src 'self' 'unsafe-eval';connect-src 'self' https://icp0.io https://*.icp0.io https://icp-api.io;img-src 'self' data:;style-src * 'unsafe-inline';style-src-elem * 'unsafe-inline';font-src *;object-src 'none';base-uri 'self';frame-ancestors 'none';form-action 'self';upgrade-insecure-requests;", // Security: The permissions policy disables all features for security reasons. If your site needs such permissions, activate them. // To configure permissions go here https://www.permissionspolicy.com/ @@ -50,7 +50,8 @@ // See: https://owasp.org/www-community/attacks/xss/ "X-XSS-Protection": "1; mode=block" }, - // redirect all requests from .raw.icp0.io to .icp0.io (this redirection is the default) - "allow_raw_access": false + // Set the allow_raw_access field to false to redirect all requests from .raw.icp0.io to .icp0.io + // The default behavior is to allow raw access. + // "allow_raw_access": true }, ] diff --git a/src/dfx/src/commands/remote/generate_binding.rs b/src/dfx/src/commands/remote/generate_binding.rs index 35722f9023..badf37ddf4 100644 --- a/src/dfx/src/commands/remote/generate_binding.rs +++ b/src/dfx/src/commands/remote/generate_binding.rs @@ -76,7 +76,10 @@ pub fn exec(env: &dyn Environment, opts: GenerateBindingOpts) -> DfxResult { let bindings = if extension == "mo" { Some(candid::bindings::motoko::compile(&type_env, &did_types)) } else if extension == "rs" { - Some(candid::bindings::rust::compile(&type_env, &did_types)) + let config = candid::bindings::rust::Config::new(); + Some(candid::bindings::rust::compile( + &config, &type_env, &did_types, + )) } else if extension == "js" { Some(candid::bindings::javascript::compile(&type_env, &did_types)) } else if extension == "ts" { diff --git a/src/dfx/src/lib/models/canister.rs b/src/dfx/src/lib/models/canister.rs index 3d36367920..47ed47457c 100644 --- a/src/dfx/src/lib/models/canister.rs +++ b/src/dfx/src/lib/models/canister.rs @@ -129,7 +129,7 @@ impl Canister { // optimize or shrink if let Some(level) = info.get_optimize() { trace!(logger, "Optimizing WASM at level {}", level); - ic_wasm::shrink::shrink_with_wasm_opt(&mut m, &level.to_string()) + ic_wasm::shrink::shrink_with_wasm_opt(&mut m, &level.to_string(), false) .context("Failed to optimize the WASM module.")?; modified = true; } else if info.get_shrink() == Some(true) @@ -314,11 +314,12 @@ impl Canister { fn separate_candid(path: &Path) -> DfxResult<(String, String)> { let (env, actor) = check_candid_file(path)?; - if let Some(candid::types::internal::Type::Class(args, ty)) = actor { + let actor = actor.ok_or_else(|| anyhow!("provided candid file contains no main service"))?; + if let candid::types::internal::TypeInner::Class(args, ty) = actor.as_ref() { use candid::bindings::candid::pp_ty; use candid::pretty::{concat, enclose}; - let actor = Some(*ty); + let actor = Some(ty.clone()); let service_did = candid::bindings::candid::compile(&env, &actor); let doc = concat(args.iter().map(pp_ty), ","); let init_args = enclose("(", doc, ")").pretty(80).to_string(); diff --git a/src/dfx/src/util/mod.rs b/src/dfx/src/util/mod.rs index b1eb415373..45e3a5e510 100644 --- a/src/dfx/src/util/mod.rs +++ b/src/dfx/src/util/mod.rs @@ -6,9 +6,9 @@ use anyhow::{bail, Context}; use backoff::backoff::Backoff; use backoff::ExponentialBackoff; use bytes::Bytes; -use candid::parser::typing::{pretty_check_file, TypeEnv}; -use candid::types::{Function, Type}; -use candid::{parser::value::IDLValue, IDLArgs}; +use candid::parser::typing::pretty_check_file; +use candid::types::{value::IDLValue, Function, Type, TypeEnv, TypeInner}; +use candid::IDLArgs; use fn_error_context::context; use hyper_rustls::ConfigBuilderExt; #[cfg(unix)] @@ -131,8 +131,8 @@ pub fn get_candid_type( pub fn get_candid_init_type(idl_path: &std::path::Path) -> Option<(TypeEnv, Function)> { let (env, ty) = check_candid_file(idl_path).ok()?; let actor = ty?; - let args = match actor { - Type::Class(args, _) => args, + let args = match actor.as_ref() { + TypeInner::Class(args, _) => args.clone(), _ => vec![], }; let res = Function { @@ -195,7 +195,11 @@ pub fn blob_from_arguments( } else if func.args.is_empty() { use candid::Encode; Encode!() - } else if func.args.iter().all(|t| matches!(t, Type::Opt(_))) { + } else if func + .args + .iter() + .all(|t| matches!(t.as_ref(), TypeInner::Opt(_))) + { // If the user provided no arguments, and if all the expected arguments are // optional, then use null values. let nulls = vec![IDLValue::Null; func.args.len()]; @@ -241,7 +245,7 @@ pub fn fuzzy_parse_argument( let args = arg_str.parse::().or_else(|_| { if types.len() == 1 && !is_candid_format { let is_quote = first_char.map_or(false, |c| c == '"'); - if candid::types::Type::Text == types[0] && !is_quote { + if &TypeInner::Text == types[0].as_ref() && !is_quote { Ok(IDLValue::Text(arg_str.to_string())) } else { candid::pretty_parse::("Candid argument", arg_str) diff --git a/src/distributed/assetstorage.wasm.gz b/src/distributed/assetstorage.wasm.gz index cb0241dd69e1f3bbb23fd26c8553ebfca3e3f887..5301b5ecebce9c089734fba8cd929b3fb9b4220e 100755 GIT binary patch literal 383624 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

Q68xI$s}L*f+^88n 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