kdbx-rs

Crates.iokdbx-rs
lib.rskdbx-rs
version0.5.2
sourcesrc
created_at2020-05-23 16:18:25.906886
updated_at2024-10-08 19:25:56.08473
descriptionKeepass 2 (KDBX) password database parsing and creation
homepage
repositoryhttps://gitlab.com/tonyfinn/kdbx-rs
max_upload_size
id244919
size283,078
Tony Finn (tonyfinn)

documentation

README

KDBX-rs

Documentation | Repository | crates.io

Library for reading and writing KDBX libraries from Rust.

Example code

Obtaining an entry from the password database:

use kdbx_rs::{self, CompositeKey, Error};
fn main() -> Result<(), Error> {
    let file_path = "./res/test_input/kdbx4-argon2d.kdbx";
    let kdbx = kdbx_rs::open(file_path)?;
    let key = CompositeKey::from_password("kdbxrs");
    let unlocked = kdbx.unlock(&key)?;

    let password = unlocked.find_entry(|e| e.url() == Some("https://example.com"))
        .unwrap()
        .password();

    println!(password);
    Ok(())
}

Generating a new password database:

let mut database = Database::default();
database.set_name("My First Database");
database.set_description("Created with kdbx-rs");

let mut entry = Entry::default();
entry.set_password("password1");
entry.set_url("https://example.com");
entry.set_username("User123");

database.add_entry(Entry);

Saving a database to a file

let mut database = Database::default();
let kdbx = Kdbx::from_database(database);
kdbx.set_key(CompositeKey::from_password("foo123"))?;

let mut file = File::create("/tmp/kdbx-rs-example.kdbx")?;
kdbx.write(&mut file)?;

Comparison of Rust Keepass Libraries (as of May 2020)

kdbx-rs keepass-rs kdbx4 rust-kpdb rust-keepass
License GPLv3+ MIT MIT MIT/Apache ISC
Formats
.kdbx 4 Yes Read only Read only No No
.kdbx 3 Read only Read only No Yes No
.kdb No No No No Yes
Algorithms
KDFs
AES Yes Yes Yes Yes Yes
Argon 2 Yes Yes Yes No Yes
Database Ciphers
AES Yes Yes Yes Yes Yes
TwoFish Yes Yes No Yes No
Chacha20 Yes Yes Yes No No
Value Ciphers
Chacha20 Yes Yes Yes No No
Salsa20 Yes Yes Yes Yes No
Features
Memory protection No Yes No No Yes
Keyfile auth Yes Yes Yes Yes Yes
Windows auth No No No No No
KeepassXC OTPs No No No No No
Custom fields Yes Yes Yes No No
Entry History Yes No Yes Yes No

License

This crate is licensed under GPLv3.0 or later, see LICENSE.txt for details.

Commit count: 77

cargo fmt