qrtc quantum realtime communication GitHub

Features in depth

How each area of the engine works, the choices behind it, and what it does not do yet.

JSEP and negotiation

Errors map to DOMException names through Error::dom_name: InvalidStateError, OperationError, NotSupportedError, SyntaxError and InvalidModificationError.

ICE, STUN and TURN

DTLS and SRTP

str0m runs DTLS and SRTP on RustCrypto. The DTLS certificate is a self-signed ECDSA P-256 certificate built with RustCrypto, so no C library is involved. Its fingerprint travels in the SDP, and the peer checks it.

With a post-quantum feature, a connection negotiates DTLS 1.3 with a hybrid ML-KEM group when the peer supports it. Post-quantum key agreement covers the groups, the policies and the DTLS changes.

Data channels

Audio

Audio is processed in the engine, because echo cancellation needs the signal being played out as its far-end reference.

Video

Stats

stats() returns RTCStatsReport-shaped JSON entries: peer-connection (data channels opened), transport (DTLS state and tlsGroup), candidate-pair (state, nomination, round-trip time, bytes), and local-candidate and remote-candidate. RTP stream stats come from the consumer, which sees the frames.

Not yet