{"id":30703152,"url":"https://github.com/dfinity/vetkeys","last_synced_at":"2025-09-02T16:56:24.059Z","repository":{"id":283326956,"uuid":"920746165","full_name":"dfinity/vetkeys","owner":"dfinity","description":"Libraries and examples for integrating verifiable encrypted threshold keys (vetKeys) into Internet Computer applications","archived":false,"fork":false,"pushed_at":"2025-08-25T11:46:51.000Z","size":29657,"stargazers_count":14,"open_issues_count":5,"forks_count":4,"subscribers_count":16,"default_branch":"main","last_synced_at":"2025-08-25T13:28:47.231Z","etag":null,"topics":["blockchain","bls","distributed-key-management-service","encrypted-onchain-storage","encryption","ibe","icp","identity-based-encryption","internet-computer","random-beacon","randomness","threshold-cryptography","threshold-decryption","timelock-encryption","verifiable-random-function","vetkeys","vrf"],"latest_commit_sha":null,"homepage":"https://internetcomputer.org/docs/building-apps/network-features/vetkeys/introduction","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dfinity.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-01-22T17:46:34.000Z","updated_at":"2025-08-25T11:46:53.000Z","dependencies_parsed_at":"2025-04-04T16:27:46.225Z","dependency_job_id":"11e96160-265b-40ec-ab54-aab7fc8b187b","html_url":"https://github.com/dfinity/vetkeys","commit_stats":null,"previous_names":["dfinity/vetkd-devkit","dfinity/vetkeys"],"tags_count":9,"template":false,"template_full_name":null,"purl":"pkg:github/dfinity/vetkeys","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dfinity%2Fvetkeys","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dfinity%2Fvetkeys/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dfinity%2Fvetkeys/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dfinity%2Fvetkeys/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dfinity","download_url":"https://codeload.github.com/dfinity/vetkeys/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dfinity%2Fvetkeys/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":273317765,"owners_count":25084037,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-02T02:00:09.530Z","response_time":77,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["blockchain","bls","distributed-key-management-service","encrypted-onchain-storage","encryption","ibe","icp","identity-based-encryption","internet-computer","random-beacon","randomness","threshold-cryptography","threshold-decryption","timelock-encryption","verifiable-random-function","vetkeys","vrf"],"created_at":"2025-09-02T16:56:21.130Z","updated_at":"2025-09-02T16:56:24.041Z","avatar_url":"https://github.com/dfinity.png","language":"Rust","readme":"# vetKeys\n\nThis repository contains a set of tools designed to help canister developers as well as frontend developers integrate **vetKeys** into their Internet Computer (ICP) applications.\n\n**vetKeys** – Verifiable Encrypted Threshold Keys – on the Internet Computer addresses the fundamental challenge of storing secrets on-chain by allowing cryptographic key derivation without exposing private keys to anyone but the user. By leveraging **threshold cryptography**, vetKeys make it possible to generate, transport, and use encrypted keys securely, unlocking **privacy-preserving smart contracts** and **externally verifiable randomness**.\n\nIn slightly more detail, vetKeys enables use cases such as:\n\n- **Decentralized key management**, secure threshold key derivation without relying on a traditional PKI - only the user knows the key.\n- **Threshold BLS Signatures**, enabling secure, decentralized signing of messages.\n- **Identity Based Encryption (IBE)**, enabling secure communication between users without exchanging public keys.\n- **Verifiable Random Beacons**, providing a secure source of verifiable randomness for decentralized applications.\n- **Smart contract defined vetKeys**, defining the constraints for obtaining derived keys/BLS signatures/verifiable randomness.\n\nThe management canister API for vetKeys exposes two endpoints, one for retrieving a public key and another one for deriving encrypted keys.\n\n```\nvetkd_public_key : (vetkd_public_key_args) -\u003e (vetkd_public_key_result);\nvetkd_derive_key : (vetkd_derive_key_args) -\u003e (vetkd_derive_key_result);\n```\n\nFor more documentation on vetKeys and the management canister API, see the [vetKeys documentation](https://internetcomputer.org/docs/building-apps/network-features/vetkeys/introduction).\n\nPlease share your feedback on the [developer forum](https://forum.dfinity.org/t/threshold-key-derivation-privacy-on-the-ic/16560/179).\n\n## Key Features\n\n### **1. vetKeys Backend Library** ([Motoko](https://mops.one/ic-vetkeys), [Rust](https://crates.io/crates/ic-vetkeys)) - Supports canister developers\n\nTools to help canister developers integrate vetKeys into their Internet Computer (ICP) applications.\n\n- **KeyManager** ([Motoko](https://mops.one/ic-vetkeys/docs/key_manager/KeyManager), [Rust](https://docs.rs/ic-vetkeys/latest/ic_vetkeys/key_manager/struct.KeyManager.html)) – a library for deriving and managing encrypted cryptographic keys.\n- **EncryptedMaps** ([Motoko](https://mops.one/ic-vetkeys/docs/encrypted_maps/EncryptedMaps), [Rust](https://docs.rs/ic-vetkeys/latest/ic_vetkeys/encrypted_maps/struct.EncryptedMaps.html)) – a library for encrypting using vetkeys, and securely storing and sharing encrypted key-value pairs.\n- **Utils** ([Rust](https://docs.rs/ic-vetkeys/latest/)) – Utility functions for working with vetKeys.\n\n### **2. [vetKeys Frontend Library](./frontend/ic_vetkeys)** - Supports frontend developers\n\nTools for frontend developers to interact with VetKD enabled canisters.\n\n- **[KeyManager](https://dfinity.github.io/vetkeys/classes/_dfinity_vetkeys_key_manager.KeyManager.html)** – Facilitates interaction with a KeyManager-enabled canister.\n- **[EncryptedMaps](https://dfinity.github.io/vetkeys/classes/_dfinity_vetkeys_encrypted_maps.EncryptedMaps.html)** – Facilitates interaction with a EncryptedMaps-enabled canister.\n- **[Utils](https://dfinity.github.io/vetkeys/modules/_dfinity_vetkeys.html)** – Utility functions for working with vetKeys.\n\n### **3. vetKeys Example Applications** - Deployable to the IC with the click of a button\n\n- **[Basic BLS Signing](examples/basic_bls_signing)** - Demonstrates secure threshold BLS signature generation where users can only sign messages for their own identity.\n- **[Basic IBE](examples/basic_ibe)** - Shows how to implement secure messaging using Identity Based Encryption with Internet Identity Principals as encryption keys.\n- **[Basic Timelock IBE](examples/basic_timelock_ibe)** - Implements a secret-bid auction system where bids remain encrypted until a specified deadline.\n- **[Password Manager](examples/password_manager)** - A secure, decentralized password manager using Encrypted Maps for vault-based password storage and sharing.\n- **[Password Manager with Metadata](examples/password_manager_with_metadata)** - Extends the basic password manager to support unencrypted metadata alongside encrypted passwords.\n- **[Encrypted Notes](examples/encrypted_notes_dapp_vetkd)** - A secure note-taking application that uses vetKeys for encryption and enables sharing notes between users without device management.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdfinity%2Fvetkeys","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdfinity%2Fvetkeys","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdfinity%2Fvetkeys/lists"}