- Notifications
You must be signed in to change notification settings - Fork5
Rust library for reading and writing KeePass 2 and KeePassX databases
License
Apache-2.0, MIT licenses found
Licenses found
sru-systems/rust-kpdb
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
A Rust library for reading and writingKeePass 2 andKeePassX databases.
To userust-kpdb
, add the following to your Cargo.toml:
[dependencies]rust-kpdb ="0.5"
And the following to your crate root:
externcrate kpdb;
Create a new database adding two groups and two entries:
use kpdb::{CompositeKey,Database,Entry,Group};// Create a new database.let key =CompositeKey::from_password("password");letmut db =Database::new(&key);// Create a new group named Email.letmut email_group =Group::new("Email");let email_group_uuid = email_group.uuid;// Create an entry for ProtonMail and add it to the Email group.letmut protonmail =Entry::new();let protonmail_uuid = protonmail.uuid;protonmail.set_title("ProtonMail");protonmail.set_username("mailuser");protonmail.set_password("mailpass");protonmail.set_url("https://mail.protonmail.com");email_group.add_entry(protonmail);// Create a new group named VPN.letmut vpn_group =Group::new("VPN");// Create an entry for ProtonVPN and add it to the VPN group.letmut protonvpn =Entry::new();protonvpn.set_title("ProtonVPN");protonvpn.set_username("vpnuser");protonvpn.set_password("vpnpass");protonvpn.set_url("https://prontvpn.com");vpn_group.add_entry(protonvpn);// Add the Email and VPN groups to the Root group.db.root_group.add_group(email_group);db.root_group.add_group(vpn_group);// Find groups matching "email".let groups = db.find_groups("email");assert_eq!(groups.len(),1);// Find entries matching "proton".let entries = db.find_entries("proton");assert_eq!(entries.len(),2);// Retrieve a group by its UUID.let group = db.get_group(email_group_uuid).unwrap();assert_eq!(group.name,"Email");// Retrieve an entry by its UUID.let entry = db.get_entry(protonmail_uuid).unwrap();assert_eq!(entry.title(),Some("ProtonMail"));assert_eq!(entry.username(),Some("mailuser"));assert_eq!(entry.password(),Some("mailpass"));assert_eq!(entry.url(),Some("https://mail.protonmail.com"));assert_eq!(entry.notes(),None);
Open the existing KeePass database passwords.kdbx using the password"password", print it and save it to new.kdbx:
use kpdb::{CompositeKey,Database};use std::fs::File;letmut file =File::open("passwords.kdbx").unwrap();let key =CompositeKey::from_password("password");let db =Database::open(&mut file,&key).unwrap();println!("{:?}", db);letmut file =File::create("new.kdbx").unwrap();db.save(&mut file).unwrap();
Open the existing KeePass database passwords.kdbx using both the password"password" and the key file passwords.key, print it and save it to new.kdbx:
use kpdb::{CompositeKey,Database,KeyFile};use std::fs::File;letmut file =File::open("passwords.key").unwrap();let key_file =KeyFile::open(&mut file).unwrap();let key =CompositeKey::from_both("password", key_file);letmut file =File::open("passwords.kdbx").unwrap();let db =Database::open(&mut file,&key).unwrap();println!("{:?}", db);letmut file =File::create("new.kdbx").unwrap();db.save(&mut file).unwrap();
The following features are currently not implemented:
- KeePass 1 databases.
Rust-kpdb is dual licensed under theMIT andApache 2.0 licenses, the same licenses as the Rust compiler.
Contributions are welcome. By submitting a pull request you are agreeing tomake you work available under the license terms of the Rust-kpdb project.
About
Rust library for reading and writing KeePass 2 and KeePassX databases
Topics
Resources
License
Apache-2.0, MIT licenses found
Licenses found
Uh oh!
There was an error while loading.Please reload this page.
Stars
Watchers
Forks
Packages0
Uh oh!
There was an error while loading.Please reload this page.
Contributors3
Uh oh!
There was an error while loading.Please reload this page.