mirror of
https://github.com/logos-messaging/libchat.git
synced 2026-05-11 20:49:30 +00:00
* feat: storage for conversations * fix: db types conversion * feat: run migrations from sql files * feat: persist identity * fix: revert double ratchet storage refactor * fix: clean * refactor: use result wrapper for ffi * refactor: uniform storage error into chat error * fix: zeroize identity record * fix: zeroize for secret keys in db operations * fix: transactional sql migration * fix: remove destroy_string * feat: db storage for inbox ephermeral keys * chore: remove in memory hashmap for ephemeral keys * feat: persist conversation store * feat: wire with the double ratchet storage * feat: remove conversation store * chore: fix conversation type not used * feat: mock chat store implementation * chore: sqlite module * feat: sqlite crate * chore: sqlite rename * chore: more refactor * extract ratchet store trait * chore: clear error conversion * chore: remove customized db conn * chore: fix clippy * chore: refactor to use generics and enum * chore: further clean for review comments
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