Adds the third federation layer above consensus + threshold-auth: the collaborating set forms an MLS group (RFC 9420, via openmls) and derives a shared group key with NO central server, so collaboration traffic is end-to-end encrypted among members — the ownerless property. tests/mls_keying.rs demonstrates it with three members: Alice founds the group and adds Bob (both export the same group secret), then adds Carol (a new epoch; Carol derives the same shared secret). It also asserts a member an epoch behind derives a DIFFERENT secret — the forward-secret, epoch-bound property MLS gives. openmls is a dev-dependency, so the library's runtime deps stay light. So consensus (LockstepCluster, BFT), protected-op authorization (FROST t-of-n), and group keying (MLS) are all implemented and tested. The one remaining federation layer is the network transport (CommunicationOS/MoQT) — the wire between members. cargo test --workspace green; conformance pack still passes with no skips. Co-Authored-By: Claude Opus 4.8 <[email protected]>
23 lines
850 B
TOML
23 lines
850 B
TOML
[package]
|
|
name = "joule-code-collab"
|
|
version.workspace = true
|
|
edition.workspace = true
|
|
license.workspace = true
|
|
repository.workspace = true
|
|
rust-version.workspace = true
|
|
description = "Joule Code — federated collaboration interface + single-node reference cluster (SPEC §7, spec/collab.md). Research: the API and the ordered/deduped/signature-checked log shape; full BFT/MLS/FROST/CommunicationOS federation is future work."
|
|
|
|
[dependencies]
|
|
joule-code-schema.workspace = true
|
|
joule-code-cargo.workspace = true
|
|
thiserror.workspace = true
|
|
frost-ed25519 = "2"
|
|
|
|
[dev-dependencies]
|
|
ed25519-dalek.workspace = true
|
|
rand = "0.8"
|
|
# MLS group keying (RFC 9420) for the collaborating set — demonstrated in
|
|
# tests/mls_keying.rs. Dev-dep so the library's runtime deps stay light.
|
|
openmls = "0.6"
|
|
openmls_rust_crypto = "0.3"
|
|
openmls_basic_credential = "0.3"
|