Rename the entire workspace:
- Crate packages: quicnprotochat-{core,proto,server,client,gui,p2p,mobile} -> quicproquo-*
- Binary names: quicnprotochat -> qpq, quicnprotochat-server -> qpq-server,
quicnprotochat-gui -> qpq-gui
- Default files: *-state.bin -> qpq-state.bin, *-server.toml -> qpq-server.toml,
*.db -> qpq.db
- Environment variable prefix: QUICNPROTOCHAT_* -> QPQ_*
- App identifier: chat.quicnproto.gui -> chat.quicproquo.gui
- Proto package: quicnprotochat.bench -> quicproquo.bench
- All documentation, Docker, CI, and script references updated
HKDF domain-separation strings and P2P ALPN remain unchanged for
backward compatibility with existing encrypted state and wire protocol.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
55 lines
1.6 KiB
Cap'n Proto
55 lines
1.6 KiB
Cap'n Proto
# federation.capnp — Server-to-server federation RPC interface.
|
|
#
|
|
# Enables multiple quicproquo servers to relay messages across instances
|
|
# via mutual TLS over QUIC. Each method carries a FederationAuth struct whose
|
|
# `origin` field is validated against the mTLS certificate's SAN.
|
|
#
|
|
# ID generated with: capnp id
|
|
@0xb7e3f4a1c9d82056;
|
|
|
|
interface FederationService {
|
|
# Relay an enqueued payload to a recipient on this server.
|
|
relayEnqueue @0 (
|
|
recipientKey :Data,
|
|
payload :Data,
|
|
channelId :Data,
|
|
version :UInt16,
|
|
auth :FederationAuth
|
|
) -> (seq :UInt64);
|
|
|
|
# Relay a batch enqueue to multiple recipients on this server.
|
|
relayBatchEnqueue @1 (
|
|
recipientKeys :List(Data),
|
|
payload :Data,
|
|
channelId :Data,
|
|
version :UInt16,
|
|
auth :FederationAuth
|
|
) -> (seqs :List(UInt64));
|
|
|
|
# Fetch a KeyPackage for an identity hosted on this server.
|
|
proxyFetchKeyPackage @2 (
|
|
identityKey :Data,
|
|
auth :FederationAuth
|
|
) -> (package :Data);
|
|
|
|
# Fetch a hybrid public key for an identity hosted on this server.
|
|
proxyFetchHybridKey @3 (
|
|
identityKey :Data,
|
|
auth :FederationAuth
|
|
) -> (hybridPublicKey :Data);
|
|
|
|
# Resolve a username to identity key on this server.
|
|
proxyResolveUser @4 (
|
|
username :Text,
|
|
auth :FederationAuth
|
|
) -> (identityKey :Data);
|
|
|
|
# Health / readiness probe for the federation link.
|
|
federationHealth @5 () -> (status :Text, serverDomain :Text);
|
|
}
|
|
|
|
struct FederationAuth {
|
|
# Origin domain of the requesting server. Validated against mTLS cert SAN.
|
|
origin @0 :Text;
|
|
}
|