libchat/core/double-ratchets
Jazz Turner-Baggs 9a94f9a6d6
Flatten Repos (#70)
* move to “crates” style folder

* Update workspace

* clear crate names

* Rename crate folders based on feedback

* Use workspace dependencies instead of paths

* Move updated files from core
2026-03-24 18:21:00 -07:00
..
2026-03-24 18:21:00 -07:00
2026-03-24 18:21:00 -07:00
2026-03-24 18:21:00 -07:00
2026-03-24 18:21:00 -07:00
2026-03-24 18:21:00 -07:00

Double Ratchet

This library provides an implementation of the Double Ratchet algorithm.

Usage

let shared_secret = [42u8; 32];
let bob_dh = DhKeyPair::generate();

let mut alice = RatchetState::init_sender(shared_secret, bob_dh.public);
let mut bob = RatchetState::init_receiver(shared_secret, bob_dh);

let (ciphertext, header) = alice.encrypt_message(b"Hello Bob!");
let plaintext = bob.decrypt_message(&ciphertext, header);

Run examples,

cargo run --example double_ratchet_basic

cargo run --example storage_demo --features storage
cargo run --example storage_demo --features sqlcipher

Run Nim FFI example,

# In the root folder (libchat)
cargo build --release
# In ffi-nim-example folder
nimble run