Skip to content

Latest commit

 

History

History
59 lines (37 loc) · 2.82 KB

File metadata and controls

59 lines (37 loc) · 2.82 KB

VetKey Password Manager

Motoko backend
Rust backend

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

  • Secure Password Storage: Uses VetKey to encrypt passwords before storing them in Encrypted Maps.
  • Vault-Based Organization: Users can create multiple vaults, each containing multiple passwords.
  • Access Control: Vaults can be shared with other users via their Internet Identity Principal.

Setup

Prerequisites

(Optionally) Choose a Different Master Key

This example uses test_key_1 by default. To use a different available master key, change the "init_arg": "(\"test_key_1\")" line in dfx.json to the desired key before running dfx deploy in the next step.

Deploy the Canisters Locally

If you want to deploy this project locally with a Motoko backend, then run:

dfx start --background && dfx deploy

from the motoko folder.

To use the Rust backend instead of Motoko, run the same command in the rust folder.

Running the Project

Backend

The backend consists of an Encrypted Maps-enabled canister that securely stores passwords. It is automatically deployed with dfx deploy.

Frontend

The frontend is a Svelte application providing a user-friendly interface for managing vaults and passwords.

To run the frontend in development mode with hot reloading:

npm run dev

Limitations

This example dapp does not implement key rotation, which is strongly recommended in a production environment. Key rotation involves periodically changing encryption keys and re-encrypting data to enhance security. In a production dapp, key rotation would be useful to limit the impact of potential key compromise if a malicious party gains access to a key, or to limit access when users are added or removed from note sharing.

Additional Resources