From 1454a9adde5a0628599976438db46d0cb6af1a32 Mon Sep 17 00:00:00 2001 From: Oleksandr Tkachenko Date: Mon, 30 Jun 2025 10:33:25 +0200 Subject: [PATCH 01/10] bump --- Cargo.lock | 20 +++++------ .../mops.toml | 2 +- .../Cargo.toml | 2 +- examples/basic_ibe/frontend/package-lock.json | 8 ++--- examples/basic_ibe/frontend/package.json | 2 +- examples/basic_ibe/motoko/mops.toml | 2 +- examples/basic_ibe/rust/Cargo.lock | 33 +++++++++++++++---- examples/basic_ibe/rust/backend/Cargo.toml | 2 +- examples/basic_timelock_ibe/Cargo.lock | 33 +++++++++++++++---- .../basic_timelock_ibe/backend/Cargo.toml | 2 +- .../frontend/package-lock.json | 8 ++--- .../basic_timelock_ibe/frontend/package.json | 2 +- .../frontend/package-lock.json | 14 ++++---- .../frontend/package.json | 2 +- .../frontend/package-lock.json | 8 ++--- .../password_manager/frontend/package.json | 2 +- .../frontend/package-lock.json | 8 ++--- .../frontend/package.json | 2 +- 18 files changed, 95 insertions(+), 57 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 7297902a..08018163 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1257,21 +1257,23 @@ dependencies = [ [[package]] name = "ic-vetkeys" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e74c7e7811983cde1bbe44b78a6c68fc9aa009e4bb88890e7e854e2e7f8d0b2c" +version = "0.3.0" dependencies = [ "anyhow", + "assert_matches", "candid", "futures", "hex", "hkdf", + "ic-agent", "ic-cdk", "ic-cdk-macros", "ic-stable-structures", + "ic-vetkeys-test-utils", "ic_bls12_381", "lazy_static", "pairing", + "pocket-ic", "rand 0.8.5", "rand_chacha 0.3.1", "serde", @@ -1280,8 +1282,8 @@ dependencies = [ "serde_with", "sha2 0.10.9", "sha3", - "strum 0.26.3", - "strum_macros 0.26.4", + "strum 0.27.1", + "strum_macros 0.27.1", "subtle", "zeroize", ] @@ -1289,22 +1291,20 @@ dependencies = [ [[package]] name = "ic-vetkeys" version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d0fe4e1f361dea9b93841e428c00c6934eb5256ee9d35890db2fced4ac1a3c9" dependencies = [ "anyhow", - "assert_matches", "candid", "futures", "hex", "hkdf", - "ic-agent", "ic-cdk", "ic-cdk-macros", "ic-stable-structures", - "ic-vetkeys-test-utils", "ic_bls12_381", "lazy_static", "pairing", - "pocket-ic", "rand 0.8.5", "rand_chacha 0.3.1", "serde", @@ -1343,7 +1343,7 @@ dependencies = [ "ic-cdk-macros", "ic-dummy-getrandom-for-wasm", "ic-stable-structures", - "ic-vetkeys 0.2.0", + "ic-vetkeys 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", "pocket-ic", "rand 0.8.5", "rand_chacha 0.3.1", diff --git a/backend/mo/canisters/ic_vetkeys_encrypted_maps_canister/mops.toml b/backend/mo/canisters/ic_vetkeys_encrypted_maps_canister/mops.toml index f0e190c8..3b3c832d 100644 --- a/backend/mo/canisters/ic_vetkeys_encrypted_maps_canister/mops.toml +++ b/backend/mo/canisters/ic_vetkeys_encrypted_maps_canister/mops.toml @@ -10,4 +10,4 @@ license = "Apache-2.0" [dependencies] base = "0.14.6" -ic-vetkeys = "0.2.0" +ic-vetkeys = "0.3.0" diff --git a/backend/rs/canisters/ic_vetkeys_encrypted_maps_canister/Cargo.toml b/backend/rs/canisters/ic_vetkeys_encrypted_maps_canister/Cargo.toml index e6ede887..258d858e 100644 --- a/backend/rs/canisters/ic_vetkeys_encrypted_maps_canister/Cargo.toml +++ b/backend/rs/canisters/ic_vetkeys_encrypted_maps_canister/Cargo.toml @@ -18,7 +18,7 @@ ic-cdk = "0.18.3" ic-cdk-macros = "0.18.3" ic-dummy-getrandom-for-wasm = "0.1.0" ic-stable-structures = "0.6.8" -ic-vetkeys = "0.2.0" +ic-vetkeys = "0.3.0" serde = "1.0.217" [dev-dependencies] diff --git a/examples/basic_ibe/frontend/package-lock.json b/examples/basic_ibe/frontend/package-lock.json index d41c219d..0e905a99 100644 --- a/examples/basic_ibe/frontend/package-lock.json +++ b/examples/basic_ibe/frontend/package-lock.json @@ -10,7 +10,7 @@ "dependencies": { "@dfinity/auth-client": "^2.4.1", "@dfinity/principal": "^2.4.1", - "@dfinity/vetkeys": "^0.2.0" + "@dfinity/vetkeys": "^0.3.0" }, "devDependencies": { "@eslint/js": "^9.24.0", @@ -92,9 +92,9 @@ } }, "node_modules/@dfinity/vetkeys": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/@dfinity/vetkeys/-/vetkeys-0.2.0.tgz", - "integrity": "sha512-H+3ND3/lNArCoPboDBq5Dh3Bzk/bdARzRH9L1RUIGn8z9KV16MZPxtYzmpIpTXIxE9E6M0BxzuRKRMZHUvFikw==", + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@dfinity/vetkeys/-/vetkeys-0.3.0.tgz", + "integrity": "sha512-28Phonh5BkMNL2Fkw5wwLR2NH5/+0q5Dapbwyz0RdddJYQALB5YlnQh7mTmmaY2zMkHsK25D5lyd90g/FcrMpQ==", "license": "Apache-2.0", "dependencies": { "@dfinity/agent": "^2.3.0", diff --git a/examples/basic_ibe/frontend/package.json b/examples/basic_ibe/frontend/package.json index c35f6418..022cf5bb 100644 --- a/examples/basic_ibe/frontend/package.json +++ b/examples/basic_ibe/frontend/package.json @@ -25,6 +25,6 @@ "dependencies": { "@dfinity/auth-client": "^2.4.1", "@dfinity/principal": "^2.4.1", - "@dfinity/vetkeys": "^0.2.0" + "@dfinity/vetkeys": "^0.3.0" } } diff --git a/examples/basic_ibe/motoko/mops.toml b/examples/basic_ibe/motoko/mops.toml index 5eee5860..b255bc46 100644 --- a/examples/basic_ibe/motoko/mops.toml +++ b/examples/basic_ibe/motoko/mops.toml @@ -1,3 +1,3 @@ [dependencies] base = "0.14.9" -ic-vetkeys = "0.2.0" +ic-vetkeys = "0.3.0" diff --git a/examples/basic_ibe/rust/Cargo.lock b/examples/basic_ibe/rust/Cargo.lock index 72ee985e..21133d13 100644 --- a/examples/basic_ibe/rust/Cargo.lock +++ b/examples/basic_ibe/rust/Cargo.lock @@ -527,8 +527,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bbeeb3d91aa179d6496d7293becdacedfc413c825cac79fd54ea1906f003ee55" dependencies = [ "serde", - "strum", - "strum_macros", + "strum 0.26.3", + "strum_macros 0.26.4", ] [[package]] @@ -569,9 +569,9 @@ dependencies = [ [[package]] name = "ic-vetkeys" -version = "0.2.0" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e74c7e7811983cde1bbe44b78a6c68fc9aa009e4bb88890e7e854e2e7f8d0b2c" +checksum = "6d0fe4e1f361dea9b93841e428c00c6934eb5256ee9d35890db2fced4ac1a3c9" dependencies = [ "anyhow", "candid", @@ -592,8 +592,8 @@ dependencies = [ "serde_with", "sha2", "sha3", - "strum", - "strum_macros", + "strum 0.27.1", + "strum_macros 0.27.1", "subtle", "zeroize", ] @@ -1059,9 +1059,15 @@ version = "0.26.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8fec0f0aef304996cf250b31b5a10dee7980c85da9d759361292b8bca5a18f06" dependencies = [ - "strum_macros", + "strum_macros 0.26.4", ] +[[package]] +name = "strum" +version = "0.27.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f64def088c51c9510a8579e3c5d67c65349dcf755e5479ad3d010aa6454e2c32" + [[package]] name = "strum_macros" version = "0.26.4" @@ -1075,6 +1081,19 @@ dependencies = [ "syn 2.0.104", ] +[[package]] +name = "strum_macros" +version = "0.27.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c77a8c5abcaf0f9ce05d62342b7d298c346515365c36b673df4ebe3ced01fde8" +dependencies = [ + "heck", + "proc-macro2", + "quote", + "rustversion", + "syn 2.0.104", +] + [[package]] name = "subtle" version = "2.6.1" diff --git a/examples/basic_ibe/rust/backend/Cargo.toml b/examples/basic_ibe/rust/backend/Cargo.toml index 51159516..22b08959 100644 --- a/examples/basic_ibe/rust/backend/Cargo.toml +++ b/examples/basic_ibe/rust/backend/Cargo.toml @@ -18,7 +18,7 @@ ic-cdk = "0.18.3" ic-cdk-macros = "0.18.3" ic-dummy-getrandom-for-wasm = "0.1.0" ic-stable-structures = "0.6.8" -ic-vetkeys = "0.2.0" +ic-vetkeys = "0.3.0" serde = "1.0.217" serde_bytes = "0.11.15" serde_cbor = "0.11.2" diff --git a/examples/basic_timelock_ibe/Cargo.lock b/examples/basic_timelock_ibe/Cargo.lock index 8a07e9fe..952c7808 100644 --- a/examples/basic_timelock_ibe/Cargo.lock +++ b/examples/basic_timelock_ibe/Cargo.lock @@ -542,8 +542,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bbeeb3d91aa179d6496d7293becdacedfc413c825cac79fd54ea1906f003ee55" dependencies = [ "serde", - "strum", - "strum_macros", + "strum 0.26.3", + "strum_macros 0.26.4", ] [[package]] @@ -586,9 +586,9 @@ dependencies = [ [[package]] name = "ic-vetkeys" -version = "0.2.0" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e74c7e7811983cde1bbe44b78a6c68fc9aa009e4bb88890e7e854e2e7f8d0b2c" +checksum = "6d0fe4e1f361dea9b93841e428c00c6934eb5256ee9d35890db2fced4ac1a3c9" dependencies = [ "anyhow", "candid", @@ -609,8 +609,8 @@ dependencies = [ "serde_with", "sha2", "sha3", - "strum", - "strum_macros", + "strum 0.27.1", + "strum_macros 0.27.1", "subtle", "zeroize", ] @@ -1076,9 +1076,15 @@ version = "0.26.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8fec0f0aef304996cf250b31b5a10dee7980c85da9d759361292b8bca5a18f06" dependencies = [ - "strum_macros", + "strum_macros 0.26.4", ] +[[package]] +name = "strum" +version = "0.27.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f64def088c51c9510a8579e3c5d67c65349dcf755e5479ad3d010aa6454e2c32" + [[package]] name = "strum_macros" version = "0.26.4" @@ -1092,6 +1098,19 @@ dependencies = [ "syn 2.0.104", ] +[[package]] +name = "strum_macros" +version = "0.27.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c77a8c5abcaf0f9ce05d62342b7d298c346515365c36b673df4ebe3ced01fde8" +dependencies = [ + "heck", + "proc-macro2", + "quote", + "rustversion", + "syn 2.0.104", +] + [[package]] name = "subtle" version = "2.6.1" diff --git a/examples/basic_timelock_ibe/backend/Cargo.toml b/examples/basic_timelock_ibe/backend/Cargo.toml index 0499ee83..514dcdcc 100644 --- a/examples/basic_timelock_ibe/backend/Cargo.toml +++ b/examples/basic_timelock_ibe/backend/Cargo.toml @@ -20,7 +20,7 @@ ic-cdk-macros = "0.18.3" ic-cdk-timers = "0.12.0" ic-dummy-getrandom-for-wasm = "0.1.0" ic-stable-structures = "0.6.8" -ic-vetkeys = "0.2.0" +ic-vetkeys = "0.3.0" serde = "1.0.217" serde_bytes = "0.11.15" serde_cbor = "0.11.2" diff --git a/examples/basic_timelock_ibe/frontend/package-lock.json b/examples/basic_timelock_ibe/frontend/package-lock.json index d85353f0..765606aa 100644 --- a/examples/basic_timelock_ibe/frontend/package-lock.json +++ b/examples/basic_timelock_ibe/frontend/package-lock.json @@ -11,7 +11,7 @@ "@dfinity/agent": "^2.4.1", "@dfinity/auth-client": "^2.4.1", "@dfinity/principal": "^2.4.1", - "@dfinity/vetkeys": "^0.2.0" + "@dfinity/vetkeys": "^0.3.0" }, "devDependencies": { "@eslint/js": "^9.24.0", @@ -94,9 +94,9 @@ } }, "node_modules/@dfinity/vetkeys": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/@dfinity/vetkeys/-/vetkeys-0.2.0.tgz", - "integrity": "sha512-H+3ND3/lNArCoPboDBq5Dh3Bzk/bdARzRH9L1RUIGn8z9KV16MZPxtYzmpIpTXIxE9E6M0BxzuRKRMZHUvFikw==", + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@dfinity/vetkeys/-/vetkeys-0.3.0.tgz", + "integrity": "sha512-28Phonh5BkMNL2Fkw5wwLR2NH5/+0q5Dapbwyz0RdddJYQALB5YlnQh7mTmmaY2zMkHsK25D5lyd90g/FcrMpQ==", "license": "Apache-2.0", "dependencies": { "@dfinity/agent": "^2.3.0", diff --git a/examples/basic_timelock_ibe/frontend/package.json b/examples/basic_timelock_ibe/frontend/package.json index e6b548fc..c48e331f 100644 --- a/examples/basic_timelock_ibe/frontend/package.json +++ b/examples/basic_timelock_ibe/frontend/package.json @@ -27,6 +27,6 @@ "@dfinity/agent": "^2.4.1", "@dfinity/auth-client": "^2.4.1", "@dfinity/principal": "^2.4.1", - "@dfinity/vetkeys": "^0.2.0" + "@dfinity/vetkeys": "^0.3.0" } } diff --git a/examples/encrypted_notes_dapp_vetkd/frontend/package-lock.json b/examples/encrypted_notes_dapp_vetkd/frontend/package-lock.json index 5fd6dff3..64fd44fc 100644 --- a/examples/encrypted_notes_dapp_vetkd/frontend/package-lock.json +++ b/examples/encrypted_notes_dapp_vetkd/frontend/package-lock.json @@ -13,7 +13,7 @@ "@dfinity/candid": "^2.1.3", "@dfinity/identity": "^2.1.3", "@dfinity/principal": "^2.1.3", - "@dfinity/vetkeys": "^0.1.0", + "@dfinity/vetkeys": "^0.3.0", "sirv-cli": "^1.0.0", "svelte-icons": "^2.1.0", "svelte-router-spa": "^6.0.3", @@ -1779,9 +1779,9 @@ } }, "node_modules/@dfinity/vetkeys": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/@dfinity/vetkeys/-/vetkeys-0.1.0.tgz", - "integrity": "sha512-pAAn8AXRUw/fhW72rky5XDxHOdSgeo3gJIaHZdFF2hYFnHwiDqM2WfFI92Y7OYF9sBKg7SMZu4imNF/QQuRRZQ==", + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@dfinity/vetkeys/-/vetkeys-0.3.0.tgz", + "integrity": "sha512-28Phonh5BkMNL2Fkw5wwLR2NH5/+0q5Dapbwyz0RdddJYQALB5YlnQh7mTmmaY2zMkHsK25D5lyd90g/FcrMpQ==", "license": "Apache-2.0", "dependencies": { "@dfinity/agent": "^2.3.0", @@ -11402,9 +11402,9 @@ } }, "@dfinity/vetkeys": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/@dfinity/vetkeys/-/vetkeys-0.1.0.tgz", - "integrity": "sha512-pAAn8AXRUw/fhW72rky5XDxHOdSgeo3gJIaHZdFF2hYFnHwiDqM2WfFI92Y7OYF9sBKg7SMZu4imNF/QQuRRZQ==", + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@dfinity/vetkeys/-/vetkeys-0.3.0.tgz", + "integrity": "sha512-28Phonh5BkMNL2Fkw5wwLR2NH5/+0q5Dapbwyz0RdddJYQALB5YlnQh7mTmmaY2zMkHsK25D5lyd90g/FcrMpQ==", "requires": { "@dfinity/agent": "^2.3.0", "@dfinity/candid": "^2.3.0", diff --git a/examples/encrypted_notes_dapp_vetkd/frontend/package.json b/examples/encrypted_notes_dapp_vetkd/frontend/package.json index b073297e..b2d0dce2 100644 --- a/examples/encrypted_notes_dapp_vetkd/frontend/package.json +++ b/examples/encrypted_notes_dapp_vetkd/frontend/package.json @@ -56,7 +56,7 @@ "@dfinity/candid": "^2.1.3", "@dfinity/identity": "^2.1.3", "@dfinity/principal": "^2.1.3", - "@dfinity/vetkeys": "^0.1.0", + "@dfinity/vetkeys": "^0.3.0", "sirv-cli": "^1.0.0", "svelte-icons": "^2.1.0", "svelte-router-spa": "^6.0.3", diff --git a/examples/password_manager/frontend/package-lock.json b/examples/password_manager/frontend/package-lock.json index 53ec4fb2..6523a980 100644 --- a/examples/password_manager/frontend/package-lock.json +++ b/examples/password_manager/frontend/package-lock.json @@ -13,7 +13,7 @@ "@dfinity/candid": "^2.3.0", "@dfinity/identity": "^2.3.0", "@dfinity/principal": "^2.3.0", - "@dfinity/vetkeys": "^0.2.0", + "@dfinity/vetkeys": "^0.3.0", "@popperjs/core": "^2.11.8", "@sveltejs/vite-plugin-svelte": "^3.0.2", "@tailwindcss/postcss": "^4.0.6", @@ -132,9 +132,9 @@ } }, "node_modules/@dfinity/vetkeys": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/@dfinity/vetkeys/-/vetkeys-0.2.0.tgz", - "integrity": "sha512-H+3ND3/lNArCoPboDBq5Dh3Bzk/bdARzRH9L1RUIGn8z9KV16MZPxtYzmpIpTXIxE9E6M0BxzuRKRMZHUvFikw==", + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@dfinity/vetkeys/-/vetkeys-0.3.0.tgz", + "integrity": "sha512-28Phonh5BkMNL2Fkw5wwLR2NH5/+0q5Dapbwyz0RdddJYQALB5YlnQh7mTmmaY2zMkHsK25D5lyd90g/FcrMpQ==", "license": "Apache-2.0", "dependencies": { "@dfinity/agent": "^2.3.0", diff --git a/examples/password_manager/frontend/package.json b/examples/password_manager/frontend/package.json index 234c3a7e..8385a39c 100644 --- a/examples/password_manager/frontend/package.json +++ b/examples/password_manager/frontend/package.json @@ -31,7 +31,7 @@ "@dfinity/candid": "^2.3.0", "@dfinity/identity": "^2.3.0", "@dfinity/principal": "^2.3.0", - "@dfinity/vetkeys": "^0.2.0", + "@dfinity/vetkeys": "^0.3.0", "@popperjs/core": "^2.11.8", "@sveltejs/vite-plugin-svelte": "^3.0.2", "@tailwindcss/postcss": "^4.0.6", diff --git a/examples/password_manager_with_metadata/frontend/package-lock.json b/examples/password_manager_with_metadata/frontend/package-lock.json index 5038bab5..dd426497 100644 --- a/examples/password_manager_with_metadata/frontend/package-lock.json +++ b/examples/password_manager_with_metadata/frontend/package-lock.json @@ -14,7 +14,7 @@ "@dfinity/candid": "^2.3.0", "@dfinity/identity": "^2.3.0", "@dfinity/principal": "^2.3.0", - "@dfinity/vetkeys": "^0.2.0", + "@dfinity/vetkeys": "^0.3.0", "@sveltejs/vite-plugin-svelte": "^3.0.2", "daisyui": "^4.12.23", "save": "^2.9.0", @@ -140,9 +140,9 @@ } }, "node_modules/@dfinity/vetkeys": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/@dfinity/vetkeys/-/vetkeys-0.2.0.tgz", - "integrity": "sha512-H+3ND3/lNArCoPboDBq5Dh3Bzk/bdARzRH9L1RUIGn8z9KV16MZPxtYzmpIpTXIxE9E6M0BxzuRKRMZHUvFikw==", + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@dfinity/vetkeys/-/vetkeys-0.3.0.tgz", + "integrity": "sha512-28Phonh5BkMNL2Fkw5wwLR2NH5/+0q5Dapbwyz0RdddJYQALB5YlnQh7mTmmaY2zMkHsK25D5lyd90g/FcrMpQ==", "license": "Apache-2.0", "dependencies": { "@dfinity/agent": "^2.3.0", diff --git a/examples/password_manager_with_metadata/frontend/package.json b/examples/password_manager_with_metadata/frontend/package.json index 372ce943..42bcd6d3 100644 --- a/examples/password_manager_with_metadata/frontend/package.json +++ b/examples/password_manager_with_metadata/frontend/package.json @@ -42,7 +42,7 @@ "@dfinity/candid": "^2.3.0", "@dfinity/identity": "^2.3.0", "@dfinity/principal": "^2.3.0", - "@dfinity/vetkeys": "^0.2.0", + "@dfinity/vetkeys": "^0.3.0", "@sveltejs/vite-plugin-svelte": "^3.0.2", "daisyui": "^4.12.23", "save": "^2.9.0", From 6a6e8ba1d53987d48961e8505144231469e91909 Mon Sep 17 00:00:00 2001 From: Oleksandr Tkachenko Date: Mon, 30 Jun 2025 10:40:28 +0200 Subject: [PATCH 02/10] rm 'under development' notices from the examples --- examples/basic_bls_signing/README.md | 3 --- examples/basic_ibe/README.md | 3 --- examples/basic_timelock_ibe/README.md | 3 --- examples/password_manager/README.md | 3 --- examples/password_manager_with_metadata/README.md | 3 --- 5 files changed, 15 deletions(-) diff --git a/examples/basic_bls_signing/README.md b/examples/basic_bls_signing/README.md index e756289d..6f7ece15 100644 --- a/examples/basic_bls_signing/README.md +++ b/examples/basic_bls_signing/README.md @@ -1,8 +1,5 @@ # Basic BLS Signing -> [!IMPORTANT] -> These support libraries are under active development and are subject to change. Access to the repositories have been opened to allow for early feedback. Please check back regularly for updates. - The **Basic BLS signing** example demonstrates how to use **[vetKeys](https://internetcomputer.org/docs/building-apps/network-features/vetkeys/introduction)** to implement secure BLS signing on the **Internet Computer (IC)**, where every authenticated user can ask the canister (IC smart contract) to produce signatures, where the **Internet Identity Principal** identifies the signer. This canister ensures that users can only produce signature for their own principal and not for someone else's principal. Furthermore, the vetKeys in this dapp can only be produced upon a user request, as specified in the canister code, meaning that the canister cannot produce signatures for arbitrary users or messages. For confirming that the canister can only produce signatures in the intended way, users need to inspect the code installed in the canister. For this, it is crucial that canisters using VetKeys have their code public. diff --git a/examples/basic_ibe/README.md b/examples/basic_ibe/README.md index 2279c3ac..2bb79126 100644 --- a/examples/basic_ibe/README.md +++ b/examples/basic_ibe/README.md @@ -1,8 +1,5 @@ # Basic Identity Based Encryption -> [!IMPORTANT] -> These support libraries are under active development and are subject to change. Access to the repositories have been opened to allow for early feedback. Please check back regularly for updates. - The **Basic IBE** example demonstrates how to use **[VetKeys](https://internetcomputer.org/docs/building-apps/network-features/vetkeys/introduction)** to implement secure messaging between users by means of Identity Based Encryption (IBE) on the **Internet Computer (IC)**. This application allows users to send encrypted messages to other users using their **Internet Identity Principal** as the encryption key identifier. This canister (IC smart contract) ensures that only the authorized user can access their private decryption key, meaning that even if someone else knows your principal, they cannot decrypt messages intended for you because neither other users nor this canister can access your private key. Note that generally it is possible for a canister to request a decryption key to decrypt secrets as part of its code. diff --git a/examples/basic_timelock_ibe/README.md b/examples/basic_timelock_ibe/README.md index 911ef81e..32003c57 100644 --- a/examples/basic_timelock_ibe/README.md +++ b/examples/basic_timelock_ibe/README.md @@ -1,8 +1,5 @@ # Basic Timelock Identity Based Encryption -> [!IMPORTANT] -> These support libraries are under active development and are subject to change. Access to the repositories have been opened to allow for early feedback. Please check back regularly for updates. - The **Basic Timelock IBE** example demonstrates how to use **[VetKeys](https://internetcomputer.org/docs/building-apps/network-features/vetkeys/introduction)** to implement a secret-bid auction using Identity Based Encryption (IBE) on the **Internet Computer (IC)**. This application allows users authenticated with their **Internet Identity Principal** to create auction lots with a description and deadline, and other users to place a secret bid for the lot. The bids in this example are just dummy integer values, contrary to real-world use cases where users would place bids holding some value. This canister (IC smart contract) ensures that: diff --git a/examples/password_manager/README.md b/examples/password_manager/README.md index 9a6630df..0f23ece5 100644 --- a/examples/password_manager/README.md +++ b/examples/password_manager/README.md @@ -1,8 +1,5 @@ # VetKey Password Manager -> [!IMPORTANT] -> These support libraries are under active development and are subject to change. Access to the repositories have been opened to allow for early feedback. Please check back regularly for updates. - The **VetKey Password Manager** is an example application demonstrating how to use **VetKeys** and **Encrypted Maps** to build a secure, decentralized password manager on the **Internet Computer (IC)**. This application allows users to create password vaults, store encrypted passwords, and share vaults with other users via their **Internet Identity Principal**. ## Features diff --git a/examples/password_manager_with_metadata/README.md b/examples/password_manager_with_metadata/README.md index 7eea3857..9f4324fc 100644 --- a/examples/password_manager_with_metadata/README.md +++ b/examples/password_manager_with_metadata/README.md @@ -1,8 +1,5 @@ # VetKey Password Manager with Metadata -> [!IMPORTANT] -> These support libraries are under active development and are subject to change. Access to the repositories have been opened to allow for early feedback. Please check back regularly for updates. - The **VetKey Password Manager** is an example application demonstrating how to use **VetKeys** and **Encrypted Maps** to build a secure, decentralized password manager on the **Internet Computer (IC)**. This application allows users to create password vaults, store encrypted passwords, and share vaults with other users via their **Internet Identity Principal**. This version of the application extends the basic password manager by supporting unencrypted metadata, such as URLs and tags, alongside encrypted passwords. The goal is to demonstrate how to make atomic updates to the Encrypted Maps canister, storing both encrypted and unencrypted data in a single update call. From 513190109522439ebc4f1cf8b34fa6ea93b9f7b2 Mon Sep 17 00:00:00 2001 From: Oleksandr Tkachenko Date: Mon, 30 Jun 2025 10:50:25 +0200 Subject: [PATCH 03/10] check how a table with buttons looks on gh --- examples/basic_ibe/README.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/examples/basic_ibe/README.md b/examples/basic_ibe/README.md index 2bb79126..29fcdadb 100644 --- a/examples/basic_ibe/README.md +++ b/examples/basic_ibe/README.md @@ -1,5 +1,10 @@ # Basic Identity Based Encryption +| | | +| --- | --- | +| Motoko backend | [![](https://icp.ninja/assets/open.svg)](http://icp.ninja/editor?g=https://github.com/dfinity/vetkeys/tree/main/examples/basic_ibe/motoko)| +| Rust backend | [![](https://icp.ninja/assets/open.svg)](http://icp.ninja/editor?g=https://github.com/dfinity/vetkeys/tree/main/examples/basic_ibe/rust) | + The **Basic IBE** example demonstrates how to use **[VetKeys](https://internetcomputer.org/docs/building-apps/network-features/vetkeys/introduction)** to implement secure messaging between users by means of Identity Based Encryption (IBE) on the **Internet Computer (IC)**. This application allows users to send encrypted messages to other users using their **Internet Identity Principal** as the encryption key identifier. This canister (IC smart contract) ensures that only the authorized user can access their private decryption key, meaning that even if someone else knows your principal, they cannot decrypt messages intended for you because neither other users nor this canister can access your private key. Note that generally it is possible for a canister to request a decryption key to decrypt secrets as part of its code. From 3ef44d87b1a0fcf350241f2f47843c467d590de1 Mon Sep 17 00:00:00 2001 From: Oleksandr Tkachenko Date: Mon, 30 Jun 2025 10:51:49 +0200 Subject: [PATCH 04/10] ... --- examples/basic_ibe/README.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/examples/basic_ibe/README.md b/examples/basic_ibe/README.md index 29fcdadb..a8b879c9 100644 --- a/examples/basic_ibe/README.md +++ b/examples/basic_ibe/README.md @@ -1,8 +1,7 @@ # Basic Identity Based Encryption -| | | -| --- | --- | | Motoko backend | [![](https://icp.ninja/assets/open.svg)](http://icp.ninja/editor?g=https://github.com/dfinity/vetkeys/tree/main/examples/basic_ibe/motoko)| +| --- | --- | | Rust backend | [![](https://icp.ninja/assets/open.svg)](http://icp.ninja/editor?g=https://github.com/dfinity/vetkeys/tree/main/examples/basic_ibe/rust) | The **Basic IBE** example demonstrates how to use **[VetKeys](https://internetcomputer.org/docs/building-apps/network-features/vetkeys/introduction)** to implement secure messaging between users by means of Identity Based Encryption (IBE) on the **Internet Computer (IC)**. This application allows users to send encrypted messages to other users using their **Internet Identity Principal** as the encryption key identifier. This canister (IC smart contract) ensures that only the authorized user can access their private decryption key, meaning that even if someone else knows your principal, they cannot decrypt messages intended for you because neither other users nor this canister can access your private key. From 2dae5591eaed1effe3262a036d07faaf6d53f3a6 Mon Sep 17 00:00:00 2001 From: Oleksandr Tkachenko Date: Mon, 30 Jun 2025 10:55:09 +0200 Subject: [PATCH 05/10] add more ninja buttons --- examples/basic_bls_signing/README.md | 2 ++ examples/basic_timelock_ibe/README.md | 2 ++ examples/encrypted_notes_dapp_vetkd/README.md | 4 ++++ examples/password_manager/README.md | 4 ++++ examples/password_manager_with_metadata/README.md | 4 ++++ 5 files changed, 16 insertions(+) diff --git a/examples/basic_bls_signing/README.md b/examples/basic_bls_signing/README.md index 6f7ece15..707c5b3c 100644 --- a/examples/basic_bls_signing/README.md +++ b/examples/basic_bls_signing/README.md @@ -1,5 +1,7 @@ # Basic BLS Signing +[![](https://icp.ninja/assets/open.svg)](http://icp.ninja/editor?g=https://github.com/dfinity/vetkeys/tree/main/examples/basic_bls_signing/motoko) + The **Basic BLS signing** example demonstrates how to use **[vetKeys](https://internetcomputer.org/docs/building-apps/network-features/vetkeys/introduction)** to implement secure BLS signing on the **Internet Computer (IC)**, where every authenticated user can ask the canister (IC smart contract) to produce signatures, where the **Internet Identity Principal** identifies the signer. This canister ensures that users can only produce signature for their own principal and not for someone else's principal. Furthermore, the vetKeys in this dapp can only be produced upon a user request, as specified in the canister code, meaning that the canister cannot produce signatures for arbitrary users or messages. For confirming that the canister can only produce signatures in the intended way, users need to inspect the code installed in the canister. For this, it is crucial that canisters using VetKeys have their code public. diff --git a/examples/basic_timelock_ibe/README.md b/examples/basic_timelock_ibe/README.md index 32003c57..9dd9dce4 100644 --- a/examples/basic_timelock_ibe/README.md +++ b/examples/basic_timelock_ibe/README.md @@ -1,5 +1,7 @@ # Basic Timelock Identity Based Encryption +[![](https://icp.ninja/assets/open.svg)](http://icp.ninja/editor?g=https://github.com/dfinity/vetkeys/tree/main/examples/basic_timelock_ibe) + The **Basic Timelock IBE** example demonstrates how to use **[VetKeys](https://internetcomputer.org/docs/building-apps/network-features/vetkeys/introduction)** to implement a secret-bid auction using Identity Based Encryption (IBE) on the **Internet Computer (IC)**. This application allows users authenticated with their **Internet Identity Principal** to create auction lots with a description and deadline, and other users to place a secret bid for the lot. The bids in this example are just dummy integer values, contrary to real-world use cases where users would place bids holding some value. This canister (IC smart contract) ensures that: diff --git a/examples/encrypted_notes_dapp_vetkd/README.md b/examples/encrypted_notes_dapp_vetkd/README.md index b734c00f..70453022 100644 --- a/examples/encrypted_notes_dapp_vetkd/README.md +++ b/examples/encrypted_notes_dapp_vetkd/README.md @@ -1,5 +1,9 @@ # Encrypted notes: vetKD +| Motoko backend | [![](https://icp.ninja/assets/open.svg)](http://icp.ninja/editor?g=https://github.com/dfinity/vetkeys/tree/main/examples/encrypted_notes_dapp_vetkd/motoko)| +| --- | --- | +| Rust backend | [![](https://icp.ninja/assets/open.svg)](http://icp.ninja/editor?g=https://github.com/dfinity/vetkeys/tree/main/examples/encrypted_notes_dapp_vetkd/rust) | + This is a copy of the [`encrypted-notes-dapp` example](https://github.com/dfinity/examples/tree/master/motoko/encrypted-notes-dapp), adapted to use [vetKeys](https://internetcomputer.org/docs/building-apps/network-features/vetkeys/introduction) and add sharing of notes between users. In particular, instead of creating a principal-specific AES key and syncing it across devices (using device-specific RSA keys), the notes are encrypted with an AES key that is derived (directly in the browser) from a note-ID-specific vetKey obtained from the backend canister (in encrypted form, using an ephemeral transport key), which itself obtains it from the vetKD system API. This way, there is no need for any device management in the dapp, plus sharing of notes becomes possible. diff --git a/examples/password_manager/README.md b/examples/password_manager/README.md index 0f23ece5..fbdbe09e 100644 --- a/examples/password_manager/README.md +++ b/examples/password_manager/README.md @@ -1,5 +1,9 @@ # VetKey Password Manager +| Motoko backend | [![](https://icp.ninja/assets/open.svg)](http://icp.ninja/editor?g=https://github.com/dfinity/vetkeys/tree/main/examples/password_manager/motoko)| +| --- | --- | +| Rust backend | [![](https://icp.ninja/assets/open.svg)](http://icp.ninja/editor?g=https://github.com/dfinity/vetkeys/tree/main/examples/password_manager/rust) | + The **VetKey Password Manager** is an example application demonstrating how to use **VetKeys** and **Encrypted Maps** to build a secure, decentralized password manager on the **Internet Computer (IC)**. This application allows users to create password vaults, store encrypted passwords, and share vaults with other users via their **Internet Identity Principal**. ## Features diff --git a/examples/password_manager_with_metadata/README.md b/examples/password_manager_with_metadata/README.md index 9f4324fc..f35b258d 100644 --- a/examples/password_manager_with_metadata/README.md +++ b/examples/password_manager_with_metadata/README.md @@ -1,5 +1,9 @@ # VetKey Password Manager with Metadata +| Motoko backend | [![](https://icp.ninja/assets/open.svg)](http://icp.ninja/editor?g=https://github.com/dfinity/vetkeys/tree/main/examples/password_manager_with_metadata/motoko)| +| --- | --- | +| Rust backend | [![](https://icp.ninja/assets/open.svg)](http://icp.ninja/editor?g=https://github.com/dfinity/vetkeys/tree/main/examples/password_manager_with_metadata/rust) | + The **VetKey Password Manager** is an example application demonstrating how to use **VetKeys** and **Encrypted Maps** to build a secure, decentralized password manager on the **Internet Computer (IC)**. This application allows users to create password vaults, store encrypted passwords, and share vaults with other users via their **Internet Identity Principal**. This version of the application extends the basic password manager by supporting unencrypted metadata, such as URLs and tags, alongside encrypted passwords. The goal is to demonstrate how to make atomic updates to the Encrypted Maps canister, storing both encrypted and unencrypted data in a single update call. From 4914a39224bd95e08c2c1d0c68414af65d8d7264 Mon Sep 17 00:00:00 2001 From: Oleksandr Tkachenko Date: Mon, 30 Jun 2025 13:27:13 +0200 Subject: [PATCH 06/10] Revert "add more ninja buttons" This reverts commit 2dae5591eaed1effe3262a036d07faaf6d53f3a6. --- examples/basic_bls_signing/README.md | 2 -- examples/basic_timelock_ibe/README.md | 2 -- examples/encrypted_notes_dapp_vetkd/README.md | 4 ---- examples/password_manager/README.md | 4 ---- examples/password_manager_with_metadata/README.md | 4 ---- 5 files changed, 16 deletions(-) diff --git a/examples/basic_bls_signing/README.md b/examples/basic_bls_signing/README.md index 707c5b3c..6f7ece15 100644 --- a/examples/basic_bls_signing/README.md +++ b/examples/basic_bls_signing/README.md @@ -1,7 +1,5 @@ # Basic BLS Signing -[![](https://icp.ninja/assets/open.svg)](http://icp.ninja/editor?g=https://github.com/dfinity/vetkeys/tree/main/examples/basic_bls_signing/motoko) - The **Basic BLS signing** example demonstrates how to use **[vetKeys](https://internetcomputer.org/docs/building-apps/network-features/vetkeys/introduction)** to implement secure BLS signing on the **Internet Computer (IC)**, where every authenticated user can ask the canister (IC smart contract) to produce signatures, where the **Internet Identity Principal** identifies the signer. This canister ensures that users can only produce signature for their own principal and not for someone else's principal. Furthermore, the vetKeys in this dapp can only be produced upon a user request, as specified in the canister code, meaning that the canister cannot produce signatures for arbitrary users or messages. For confirming that the canister can only produce signatures in the intended way, users need to inspect the code installed in the canister. For this, it is crucial that canisters using VetKeys have their code public. diff --git a/examples/basic_timelock_ibe/README.md b/examples/basic_timelock_ibe/README.md index 9dd9dce4..32003c57 100644 --- a/examples/basic_timelock_ibe/README.md +++ b/examples/basic_timelock_ibe/README.md @@ -1,7 +1,5 @@ # Basic Timelock Identity Based Encryption -[![](https://icp.ninja/assets/open.svg)](http://icp.ninja/editor?g=https://github.com/dfinity/vetkeys/tree/main/examples/basic_timelock_ibe) - The **Basic Timelock IBE** example demonstrates how to use **[VetKeys](https://internetcomputer.org/docs/building-apps/network-features/vetkeys/introduction)** to implement a secret-bid auction using Identity Based Encryption (IBE) on the **Internet Computer (IC)**. This application allows users authenticated with their **Internet Identity Principal** to create auction lots with a description and deadline, and other users to place a secret bid for the lot. The bids in this example are just dummy integer values, contrary to real-world use cases where users would place bids holding some value. This canister (IC smart contract) ensures that: diff --git a/examples/encrypted_notes_dapp_vetkd/README.md b/examples/encrypted_notes_dapp_vetkd/README.md index 70453022..b734c00f 100644 --- a/examples/encrypted_notes_dapp_vetkd/README.md +++ b/examples/encrypted_notes_dapp_vetkd/README.md @@ -1,9 +1,5 @@ # Encrypted notes: vetKD -| Motoko backend | [![](https://icp.ninja/assets/open.svg)](http://icp.ninja/editor?g=https://github.com/dfinity/vetkeys/tree/main/examples/encrypted_notes_dapp_vetkd/motoko)| -| --- | --- | -| Rust backend | [![](https://icp.ninja/assets/open.svg)](http://icp.ninja/editor?g=https://github.com/dfinity/vetkeys/tree/main/examples/encrypted_notes_dapp_vetkd/rust) | - This is a copy of the [`encrypted-notes-dapp` example](https://github.com/dfinity/examples/tree/master/motoko/encrypted-notes-dapp), adapted to use [vetKeys](https://internetcomputer.org/docs/building-apps/network-features/vetkeys/introduction) and add sharing of notes between users. In particular, instead of creating a principal-specific AES key and syncing it across devices (using device-specific RSA keys), the notes are encrypted with an AES key that is derived (directly in the browser) from a note-ID-specific vetKey obtained from the backend canister (in encrypted form, using an ephemeral transport key), which itself obtains it from the vetKD system API. This way, there is no need for any device management in the dapp, plus sharing of notes becomes possible. diff --git a/examples/password_manager/README.md b/examples/password_manager/README.md index fbdbe09e..0f23ece5 100644 --- a/examples/password_manager/README.md +++ b/examples/password_manager/README.md @@ -1,9 +1,5 @@ # VetKey Password Manager -| Motoko backend | [![](https://icp.ninja/assets/open.svg)](http://icp.ninja/editor?g=https://github.com/dfinity/vetkeys/tree/main/examples/password_manager/motoko)| -| --- | --- | -| Rust backend | [![](https://icp.ninja/assets/open.svg)](http://icp.ninja/editor?g=https://github.com/dfinity/vetkeys/tree/main/examples/password_manager/rust) | - The **VetKey Password Manager** is an example application demonstrating how to use **VetKeys** and **Encrypted Maps** to build a secure, decentralized password manager on the **Internet Computer (IC)**. This application allows users to create password vaults, store encrypted passwords, and share vaults with other users via their **Internet Identity Principal**. ## Features diff --git a/examples/password_manager_with_metadata/README.md b/examples/password_manager_with_metadata/README.md index f35b258d..9f4324fc 100644 --- a/examples/password_manager_with_metadata/README.md +++ b/examples/password_manager_with_metadata/README.md @@ -1,9 +1,5 @@ # VetKey Password Manager with Metadata -| Motoko backend | [![](https://icp.ninja/assets/open.svg)](http://icp.ninja/editor?g=https://github.com/dfinity/vetkeys/tree/main/examples/password_manager_with_metadata/motoko)| -| --- | --- | -| Rust backend | [![](https://icp.ninja/assets/open.svg)](http://icp.ninja/editor?g=https://github.com/dfinity/vetkeys/tree/main/examples/password_manager_with_metadata/rust) | - The **VetKey Password Manager** is an example application demonstrating how to use **VetKeys** and **Encrypted Maps** to build a secure, decentralized password manager on the **Internet Computer (IC)**. This application allows users to create password vaults, store encrypted passwords, and share vaults with other users via their **Internet Identity Principal**. This version of the application extends the basic password manager by supporting unencrypted metadata, such as URLs and tags, alongside encrypted passwords. The goal is to demonstrate how to make atomic updates to the Encrypted Maps canister, storing both encrypted and unencrypted data in a single update call. From 6190cc242a14ab14a97544dc7420ca0c912ea23c Mon Sep 17 00:00:00 2001 From: Oleksandr Tkachenko Date: Mon, 30 Jun 2025 13:27:21 +0200 Subject: [PATCH 07/10] Revert "..." This reverts commit 3ef44d87b1a0fcf350241f2f47843c467d590de1. --- examples/basic_ibe/README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/examples/basic_ibe/README.md b/examples/basic_ibe/README.md index a8b879c9..29fcdadb 100644 --- a/examples/basic_ibe/README.md +++ b/examples/basic_ibe/README.md @@ -1,7 +1,8 @@ # Basic Identity Based Encryption -| Motoko backend | [![](https://icp.ninja/assets/open.svg)](http://icp.ninja/editor?g=https://github.com/dfinity/vetkeys/tree/main/examples/basic_ibe/motoko)| +| | | | --- | --- | +| Motoko backend | [![](https://icp.ninja/assets/open.svg)](http://icp.ninja/editor?g=https://github.com/dfinity/vetkeys/tree/main/examples/basic_ibe/motoko)| | Rust backend | [![](https://icp.ninja/assets/open.svg)](http://icp.ninja/editor?g=https://github.com/dfinity/vetkeys/tree/main/examples/basic_ibe/rust) | The **Basic IBE** example demonstrates how to use **[VetKeys](https://internetcomputer.org/docs/building-apps/network-features/vetkeys/introduction)** to implement secure messaging between users by means of Identity Based Encryption (IBE) on the **Internet Computer (IC)**. This application allows users to send encrypted messages to other users using their **Internet Identity Principal** as the encryption key identifier. This canister (IC smart contract) ensures that only the authorized user can access their private decryption key, meaning that even if someone else knows your principal, they cannot decrypt messages intended for you because neither other users nor this canister can access your private key. From 45511d3d201ee2ab1afa312fb4f07c74f9fbd135 Mon Sep 17 00:00:00 2001 From: Oleksandr Tkachenko Date: Mon, 30 Jun 2025 13:42:16 +0200 Subject: [PATCH 08/10] Revert "check how a table with buttons looks on gh" This reverts commit 513190109522439ebc4f1cf8b34fa6ea93b9f7b2. --- examples/basic_ibe/README.md | 5 ----- 1 file changed, 5 deletions(-) diff --git a/examples/basic_ibe/README.md b/examples/basic_ibe/README.md index 29fcdadb..2bb79126 100644 --- a/examples/basic_ibe/README.md +++ b/examples/basic_ibe/README.md @@ -1,10 +1,5 @@ # Basic Identity Based Encryption -| | | -| --- | --- | -| Motoko backend | [![](https://icp.ninja/assets/open.svg)](http://icp.ninja/editor?g=https://github.com/dfinity/vetkeys/tree/main/examples/basic_ibe/motoko)| -| Rust backend | [![](https://icp.ninja/assets/open.svg)](http://icp.ninja/editor?g=https://github.com/dfinity/vetkeys/tree/main/examples/basic_ibe/rust) | - The **Basic IBE** example demonstrates how to use **[VetKeys](https://internetcomputer.org/docs/building-apps/network-features/vetkeys/introduction)** to implement secure messaging between users by means of Identity Based Encryption (IBE) on the **Internet Computer (IC)**. This application allows users to send encrypted messages to other users using their **Internet Identity Principal** as the encryption key identifier. This canister (IC smart contract) ensures that only the authorized user can access their private decryption key, meaning that even if someone else knows your principal, they cannot decrypt messages intended for you because neither other users nor this canister can access your private key. Note that generally it is possible for a canister to request a decryption key to decrypt secrets as part of its code. From 1245b4f055e193cb5835bd345443261790d23ef3 Mon Sep 17 00:00:00 2001 From: Oleksandr Tkachenko Date: Mon, 30 Jun 2025 13:43:05 +0200 Subject: [PATCH 09/10] Revert "rm 'under development' notices from the examples" This reverts commit 6a6e8ba1d53987d48961e8505144231469e91909. --- examples/basic_bls_signing/README.md | 3 +++ examples/basic_ibe/README.md | 3 +++ examples/basic_timelock_ibe/README.md | 3 +++ examples/password_manager/README.md | 3 +++ examples/password_manager_with_metadata/README.md | 3 +++ 5 files changed, 15 insertions(+) diff --git a/examples/basic_bls_signing/README.md b/examples/basic_bls_signing/README.md index 6f7ece15..e756289d 100644 --- a/examples/basic_bls_signing/README.md +++ b/examples/basic_bls_signing/README.md @@ -1,5 +1,8 @@ # Basic BLS Signing +> [!IMPORTANT] +> These support libraries are under active development and are subject to change. Access to the repositories have been opened to allow for early feedback. Please check back regularly for updates. + The **Basic BLS signing** example demonstrates how to use **[vetKeys](https://internetcomputer.org/docs/building-apps/network-features/vetkeys/introduction)** to implement secure BLS signing on the **Internet Computer (IC)**, where every authenticated user can ask the canister (IC smart contract) to produce signatures, where the **Internet Identity Principal** identifies the signer. This canister ensures that users can only produce signature for their own principal and not for someone else's principal. Furthermore, the vetKeys in this dapp can only be produced upon a user request, as specified in the canister code, meaning that the canister cannot produce signatures for arbitrary users or messages. For confirming that the canister can only produce signatures in the intended way, users need to inspect the code installed in the canister. For this, it is crucial that canisters using VetKeys have their code public. diff --git a/examples/basic_ibe/README.md b/examples/basic_ibe/README.md index 2bb79126..2279c3ac 100644 --- a/examples/basic_ibe/README.md +++ b/examples/basic_ibe/README.md @@ -1,5 +1,8 @@ # Basic Identity Based Encryption +> [!IMPORTANT] +> These support libraries are under active development and are subject to change. Access to the repositories have been opened to allow for early feedback. Please check back regularly for updates. + The **Basic IBE** example demonstrates how to use **[VetKeys](https://internetcomputer.org/docs/building-apps/network-features/vetkeys/introduction)** to implement secure messaging between users by means of Identity Based Encryption (IBE) on the **Internet Computer (IC)**. This application allows users to send encrypted messages to other users using their **Internet Identity Principal** as the encryption key identifier. This canister (IC smart contract) ensures that only the authorized user can access their private decryption key, meaning that even if someone else knows your principal, they cannot decrypt messages intended for you because neither other users nor this canister can access your private key. Note that generally it is possible for a canister to request a decryption key to decrypt secrets as part of its code. diff --git a/examples/basic_timelock_ibe/README.md b/examples/basic_timelock_ibe/README.md index 32003c57..911ef81e 100644 --- a/examples/basic_timelock_ibe/README.md +++ b/examples/basic_timelock_ibe/README.md @@ -1,5 +1,8 @@ # Basic Timelock Identity Based Encryption +> [!IMPORTANT] +> These support libraries are under active development and are subject to change. Access to the repositories have been opened to allow for early feedback. Please check back regularly for updates. + The **Basic Timelock IBE** example demonstrates how to use **[VetKeys](https://internetcomputer.org/docs/building-apps/network-features/vetkeys/introduction)** to implement a secret-bid auction using Identity Based Encryption (IBE) on the **Internet Computer (IC)**. This application allows users authenticated with their **Internet Identity Principal** to create auction lots with a description and deadline, and other users to place a secret bid for the lot. The bids in this example are just dummy integer values, contrary to real-world use cases where users would place bids holding some value. This canister (IC smart contract) ensures that: diff --git a/examples/password_manager/README.md b/examples/password_manager/README.md index 0f23ece5..9a6630df 100644 --- a/examples/password_manager/README.md +++ b/examples/password_manager/README.md @@ -1,5 +1,8 @@ # VetKey Password Manager +> [!IMPORTANT] +> These support libraries are under active development and are subject to change. Access to the repositories have been opened to allow for early feedback. Please check back regularly for updates. + The **VetKey Password Manager** is an example application demonstrating how to use **VetKeys** and **Encrypted Maps** to build a secure, decentralized password manager on the **Internet Computer (IC)**. This application allows users to create password vaults, store encrypted passwords, and share vaults with other users via their **Internet Identity Principal**. ## Features diff --git a/examples/password_manager_with_metadata/README.md b/examples/password_manager_with_metadata/README.md index 9f4324fc..7eea3857 100644 --- a/examples/password_manager_with_metadata/README.md +++ b/examples/password_manager_with_metadata/README.md @@ -1,5 +1,8 @@ # VetKey Password Manager with Metadata +> [!IMPORTANT] +> These support libraries are under active development and are subject to change. Access to the repositories have been opened to allow for early feedback. Please check back regularly for updates. + The **VetKey Password Manager** is an example application demonstrating how to use **VetKeys** and **Encrypted Maps** to build a secure, decentralized password manager on the **Internet Computer (IC)**. This application allows users to create password vaults, store encrypted passwords, and share vaults with other users via their **Internet Identity Principal**. This version of the application extends the basic password manager by supporting unencrypted metadata, such as URLs and tags, alongside encrypted passwords. The goal is to demonstrate how to make atomic updates to the Encrypted Maps canister, storing both encrypted and unencrypted data in a single update call. From d3cd83e7fea2596532b885f48d361ef0cc5e1b27 Mon Sep 17 00:00:00 2001 From: Oleksandr Tkachenko Date: Mon, 30 Jun 2025 13:50:02 +0200 Subject: [PATCH 10/10] fixes --- examples/basic_ibe/frontend/src/main.ts | 4 ++- examples/password_manager/rust/Cargo.lock | 37 +++++++++++++++++------ 2 files changed, 31 insertions(+), 10 deletions(-) diff --git a/examples/basic_ibe/frontend/src/main.ts b/examples/basic_ibe/frontend/src/main.ts index 6f756327..c1791434 100644 --- a/examples/basic_ibe/frontend/src/main.ts +++ b/examples/basic_ibe/frontend/src/main.ts @@ -77,7 +77,9 @@ async function getMyIbePrivateKey(): Promise { transportSecretKey.publicKeyBytes(), ), ); - ibePrivateKey = new EncryptedVetKey(encryptedKey).decryptAndVerify( + ibePrivateKey = EncryptedVetKey.deserialize( + encryptedKey, + ).decryptAndVerify( transportSecretKey, await getIbePublicKey(), new Uint8Array(myPrincipal.toUint8Array()), diff --git a/examples/password_manager/rust/Cargo.lock b/examples/password_manager/rust/Cargo.lock index 502f56f2..6528ea04 100644 --- a/examples/password_manager/rust/Cargo.lock +++ b/examples/password_manager/rust/Cargo.lock @@ -897,8 +897,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bbeeb3d91aa179d6496d7293becdacedfc413c825cac79fd54ea1906f003ee55" dependencies = [ "serde", - "strum", - "strum_macros", + "strum 0.26.3", + "strum_macros 0.26.4", ] [[package]] @@ -941,9 +941,9 @@ dependencies = [ [[package]] name = "ic-vetkeys" -version = "0.2.0" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e74c7e7811983cde1bbe44b78a6c68fc9aa009e4bb88890e7e854e2e7f8d0b2c" +checksum = "6d0fe4e1f361dea9b93841e428c00c6934eb5256ee9d35890db2fced4ac1a3c9" dependencies = [ "anyhow", "candid", @@ -964,8 +964,8 @@ dependencies = [ "serde_with", "sha2", "sha3", - "strum", - "strum_macros", + "strum 0.27.1", + "strum_macros 0.27.1", "subtle", "zeroize", ] @@ -1520,8 +1520,8 @@ dependencies = [ "serde_json", "sha2", "slog", - "strum", - "strum_macros", + "strum 0.26.3", + "strum_macros 0.26.4", "tempfile", "thiserror 2.0.12", "tokio", @@ -2253,9 +2253,15 @@ version = "0.26.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8fec0f0aef304996cf250b31b5a10dee7980c85da9d759361292b8bca5a18f06" dependencies = [ - "strum_macros", + "strum_macros 0.26.4", ] +[[package]] +name = "strum" +version = "0.27.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f64def088c51c9510a8579e3c5d67c65349dcf755e5479ad3d010aa6454e2c32" + [[package]] name = "strum_macros" version = "0.26.4" @@ -2269,6 +2275,19 @@ dependencies = [ "syn 2.0.104", ] +[[package]] +name = "strum_macros" +version = "0.27.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c77a8c5abcaf0f9ce05d62342b7d298c346515365c36b673df4ebe3ced01fde8" +dependencies = [ + "heck", + "proc-macro2", + "quote", + "rustversion", + "syn 2.0.104", +] + [[package]] name = "subtle" version = "2.6.1"