kaichao
6c7b3a4252
feat: chat cli demo app ( #87 )
...
* chore: remove ffi from double ratchet
* chore: format
* feat: chat cli demo app via file transport
* chore: fix the compile issues
* chore: fix long intro copy to clipboard
* chore: move chat cli to bin folder
* chore: use tmp data folder
* chore: update doc
* chore: use encrypted db with default db pass
* chore: fmt and clippy
* chore: fix clippy and refactor
* chore: utils for helper funcs
* chore: rename sessions to chats
2026-04-17 14:43:04 +08:00
kaichao
94935c28fe
refactor: remove FFI interfaces from double ratchets ( #84 )
...
* chore: remove ffi from double ratchet
* chore: update doc
* chore: format
2026-04-16 23:26:19 +08:00
dependabot[bot]
c0e07c765e
Build(deps): bump rand from 0.8.5 to 0.9.3 ( #86 )
...
Bumps [rand](https://github.com/rust-random/rand ) from 0.8.5 to 0.9.3.
- [Release notes](https://github.com/rust-random/rand/releases )
- [Changelog](https://github.com/rust-random/rand/blob/0.9.3/CHANGELOG.md )
- [Commits](https://github.com/rust-random/rand/compare/0.8.5...0.9.3 )
---
updated-dependencies:
- dependency-name: rand
dependency-version: 0.9.3
dependency-type: direct:production
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-04-16 07:50:16 -07:00
osmaczko
d68c0cb275
feat: implement Client crate and C FFI bindings ( #73 )
...
Implement a `client` crate that wraps the `libchat` context behind a
simple `ChatClient<D>` API. The delivery strategy is pluggable via a
`DeliveryService` trait, with two implementations provided:
- `InProcessDelivery` — shared `MessageBus` for single-process tests
- `CDelivery` — C function-pointer callback for the FFI layer
Add a `client-ffi` crate that exposes the client as a C API via
`safer-ffi`. A `generate-headers` binary produces the companion C
header.
Include two runnable examples:
- `examples/in-process` — Alice/Bob exchange using in-process delivery
- `examples/c-ffi` — same exchange written entirely in C; smoketested
under valgrind (to catch memory leaks) in CI
iterates: #71
2026-04-08 23:15:48 +02:00
kaichao
c44c52b127
feat: storage implementation and trait abstraction ( #79 )
...
* 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
2026-04-03 08:25:26 +08:00
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
kaichao
daeecbd679
Persist identity ( #67 )
...
* 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
* refactor: inline identity record name clone
2026-03-25 08:45:22 +08:00
Jazz Turner-Baggs
960bb195a1
Update crate name ( #59 )
2026-02-22 08:24:10 +02:00
osmaczko
57fe656728
feat: update introduction bundle encoding ( #43 )
...
closes : #27
2026-02-11 19:51:22 +01:00
dependabot[bot]
45b54bf983
Build(deps): bump bytes from 1.11.0 to 1.11.1 ( #41 )
...
Bumps [bytes](https://github.com/tokio-rs/bytes ) from 1.11.0 to 1.11.1.
- [Release notes](https://github.com/tokio-rs/bytes/releases )
- [Changelog](https://github.com/tokio-rs/bytes/blob/master/CHANGELOG.md )
- [Commits](https://github.com/tokio-rs/bytes/compare/v1.11.0...v1.11.1 )
---
updated-dependencies:
- dependency-name: bytes
dependency-version: 1.11.1
dependency-type: indirect
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-02-06 18:44:47 -08:00
Jazz Turner-Baggs
d5c16f51de
Integrate DR into PrivateV1 ( #32 )
...
* Add crate
* Initialize session
* Add encrypt / decrypt
2026-02-03 15:17:45 -08:00
kaichao
74695877fa
Split storage crate to abstract database layer ( #30 )
...
* feat: shared storage crate
* chore: remove backup codes
* chore: remove feature gates
* chore: clean out of order demo
* chore: refactor create session
* chore: shorten error name
* chore: clean errors
* chore: remove table exist check
* chore: remove unused traits
* chore: remove unused functions.
* chore: use tempfile for examples
2026-02-03 09:39:02 +08:00
kaichao
10940321ff
Encode ratchet sate for serialization ( #20 )
...
* feat: costom encode for double ratchet
* chore: correct capacity
* chore: refactor reference
* chore: reader for parse bytes
* chore: extract reader
* chore: example with persist state.
* chore: update example
* chore: implement serde compatibility.
* chore: as_bytes
* chore: zerorize the secrec material
* chore: use as_types to return reference for static key.
* chore: extract example from basic demo
2026-01-29 09:19:52 +08:00
Jazz Turner-Baggs
15bb395475
Rust API - conversation creation ( #24 )
...
* Adds final changes for rust side API
* Add Safer_ffi impl
* Simplify api
* Add const handle offset
2026-01-28 09:59:07 -08:00
kaichao
8e2b5211b4
Managed data storage for Ratchet state ( #21 )
...
* feat: managed persist storage with sqlite
* chore: sync skipped keys
* chore: refactor
* chore: refactor
* chore: clean code
* chore: export skipped keys from state.
* chore: renaming data to record
* chore: remove types from stroage mod file
2026-01-28 14:54:16 +08:00
Jazz Turner-Baggs
fe23c39321
PrivateV1 Convo Initialization via Inbox ( #13 )
...
* Load orginal protofiles
* Change package name
* Add prost generation
* Remove placeholders
* Add generated files + imports
* replace with chat-proto
* Add XK0
* auto formatting
* Initial implementation of PrivateV1 initialization
* Add ConvoFactory trait
* Hook up indentity placeholder
* Remove RemoteInbox until it’s needed
* Simplify Identity ownership
* Clean up x3handshake
* Move inbox encryption
* Simplify inbox encryption
* Cleanup warnings
* Add todos
* Update chat-proto crate
* Publickey Handling
* Reorg Inbox handshake
* Update Inbox convoId
* Remove file structure headers
* Update ConvoID
* Add Domain Separator trait
* Remove Convo trait functions
* Rename Context
* Add SecretKey
* Add workspace dependency
* update KE name
* Update comments for clarity
* Remove Xk0 references
* Bump chat_proto version and relock
2026-01-21 15:39:09 -08:00
kaichao
58392841cd
Double ratchet FFI usage in Nim ( #14 )
...
* feat: ffi
* feat: ffi interface and header generation
* feat: nim ffi example
* chore: doc
* fix: encrypt state clean
* chore: zeroize when drop
2026-01-21 17:24:20 +08:00
kaichao
fc76453f4c
Implement double ratchet ( #9 )
2026-01-15 08:47:02 +08:00