What problem does it solve? Public blockchains cannot natively hold or work with secret data, making on-chain privacy, encrypted storage, and private messaging impossible without complex off-chain key management. This Skill guides you through implementing vetKeys (verifiable encrypted threshold key derivation) so a canister can derive encryption keys from the subnet's threshold infrastructure without any node or canister ever seeing the raw key. ## Core Features & Use Cases - Threshold Key Derivation: Call the management canister's vetkd_public_key and vetkd_derive_key system APIs from Rust or Motoko, with correct cycle payments and context/input separation. - Identity-Based Encryption (IBE): Encrypt messages to a principal offline using derived public keys; the recipient decrypts later with their vetKey, no prior key exchange needed. - High-Level Libraries: Use ic-vetkeys (Rust) and @dfinity/vetkeys (TypeScript) KeyManager and EncryptedMaps for access-controlled keys and encrypted key-value storage. - Use Case: Build an encrypted messaging dapp where users encrypt messages to each other's principals on-chain, and only the intended recipient can derive the key and decrypt locally in their browser. ## Quick Start Add vetKeys-based encryption to my ICP canister so users can encrypt and decrypt data with keys derived from their principal.