#kdbx #password #keepass #parser

bin+lib kdbx-rs

Keepass 2 (KDBX) password database parsing and creation

10 unstable releases (4 breaking)

0.5.1 Sep 14, 2023
0.5.0 Sep 14, 2023
0.4.0 Jan 24, 2023
0.3.0 Nov 5, 2022
0.1.2 May 23, 2020

#620 in Parser implementations

Download history 15/week @ 2024-01-12 4/week @ 2024-02-16 29/week @ 2024-02-23 18/week @ 2024-03-01 33/week @ 2024-03-08 19/week @ 2024-03-15 10/week @ 2024-03-22 68/week @ 2024-03-29

132 downloads per month
Used in valis-core

GPL-3.0+

165KB
4K SLoC

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.

Dependencies

~5.5MB
~104K SLoC