vetkeys

Installation
SKILL.md

vetKeys (Verifiable Encrypted Threshold Keys)

vetKeys bring on-chain privacy to the IC via the vetKD protocol: a canister requests a key derived by the subnet's threshold key-derivation infrastructure, receives it encrypted under a client-supplied transport key, and only the client decrypts it locally. No subnet node ever sees the raw key, and in this standard client-delivery pattern neither does the canister — it relays the still-encrypted key to the client. (Some flows deliberately have the canister obtain key material itself: threshold BLS signing and in-canister timelock decryption — see those sections.) Derivation is deterministic: the same (canister, context, input) always yields the same key.

Build on the maintained libraries — do not hand-roll the cryptography or the Candid interface:

Layer Rust Motoko Frontend
Package ic-vetkeys 0.9 (crates.io) ic-vetkeys 0.6 (mops) @icp-sdk/vetkeys 0.5 (npm)
Management API ic-cdk-management-canister, ic_vetkeys::management_canister mo:ic-vetkeys/ManagementCanister
Low-level primitives crate root (ic_vetkeys::…) — (not available, see below) package root (@icp-sdk/vetkeys)

@dfinity/vetkeys is legacy (frozen at 0.4.0). The package was renamed to @icp-sdk/vetkeys at 0.5.0. Frontend agent/identity types come from @icp-sdk/core (@icp-sdk/core/agent, @icp-sdk/core/principal), not @dfinity/agent/@dfinity/principal.

Also required: Rust ic-cdk = "0.20" + ic-cdk-management-canister = "0.1" (and ic-dummy-getrandom-for-wasm for IBE); Motoko ic-vetkeys 0.6 needs moc ≥ 1.13.0 / core ≥ 2.6.1; frontend also @icp-sdk/core ^5.4.

Which skill / which feature

Installs
9
GitHub Stars
29
First Seen
7 days ago
vetkeys — dfinity/icskills