Files
quicproquo/docs/sdk/rust.md
Christian Nennemann cbb76af6b1 docs(sdk): add comprehensive SDK documentation and wire format reference
Covers all official SDKs (Rust, Go, Python, TypeScript, C FFI),
the v2 wire format with method ID tables, authentication flow,
and a build-your-own-SDK guide with implementation checklist.
2026-03-04 20:55:24 +01:00

1.6 KiB

Rust SDK

The Rust client is the reference implementation, located in crates/quicproquo-client/.

Installation

Add to your Cargo.toml:

[dependencies]
quicproquo-client = { path = "crates/quicproquo-client" }

Connection

The Rust client connects directly over QUIC with Cap'n Proto RPC:

use quicproquo_client::{cmd_health, cmd_login, cmd_send, connect_node};

// Health check
cmd_health("127.0.0.1:5001", &ca_cert_path, "localhost").await?;

// Login via OPAQUE
cmd_login(
    "127.0.0.1:5001", &ca_cert_path, "localhost",
    "alice", "password123",
    None,                    // identity_key_hex
    Some(&state_path),       // state persistence
    None,                    // state_password
).await?;

Key Features

  • Full MLS (RFC 9420) group encryption
  • Hybrid post-quantum KEM (X25519 + ML-KEM-768)
  • OPAQUE authentication with zeroizing credential storage
  • SQLCipher local state with Argon2id key derivation
  • Sealed sender metadata protection
  • v2 QUIC + Protobuf transport (via quicproquo-sdk crate)

v2 SDK Crate

The quicproquo-sdk crate provides the higher-level v2 API:

use quicproquo_sdk::QpqClient;

let client = QpqClient::connect("127.0.0.1:5001", &tls_config).await?;
let health = client.health().await?;

Crate Structure

Crate Purpose
quicproquo-core Crypto primitives, MLS, hybrid KEM
quicproquo-proto Protobuf + Cap'n Proto generated types
quicproquo-rpc QUIC RPC framework (framing, dispatch)
quicproquo-sdk High-level client SDK
quicproquo-client CLI/TUI client application
quicproquo-ffi C FFI bindings