Examples
Every probe in examples/
is runnable from the repo root with a single zig build step. The full
catalogue, intent, and commands are in
the examples guide.
UDP loopback (pure Zig)
Section titled “UDP loopback (pure Zig)”Verifies the pure-Zig TLS 1.3 handshake and the stream path in one process over loopback UDP:
zig build run-tls13-udp-loopbackStart here when hacking on the handshake or packet protection — no second process, no certificates to manage.
Separate-process Zig interop
Section titled “Separate-process Zig interop”Builds independent client and server binaries and runs them against each other over loopback UDP:
zig build run-tls13-process-interopCatches assumptions that an in-process loopback hides (serialization, timers, real socket behavior).
Echo server + Go/Rust clients
Section titled “Echo server + Go/Rust clients”The wire-level proof: independently implemented clients, certificate verification enabled, talking to the quicz echo server.
Build the project, then start the local Zig echo server:
zig-out/bin/quicz-tls13-process-echo-server 127.0.0.1 4443 2 concurrent-retryRun either independently implemented client with the local test CA:
(cd examples/interop/go_echo_client && \ go run . -addr 127.0.0.1:4443 -ca ../testdata/quicz-echo-ca.pem -server-name localhost)
(cd examples/interop/rust_echo_client && \ cargo run -- 127.0.0.1:4443 ../testdata/quicz-echo-ca.pem localhost)Both clients report success only after separate FIN-terminated hello and
world echoes on streams 0 and 4. The included PEM is a local test trust
anchor, not a deployment credential.
External stacks (quic-go, quinn)
Section titled “External stacks (quic-go, quinn)”quicz also passes certificate-verified interop as a client against external servers, plus the QUIC-Interop-Runner self-test (handshake, transfer, retry):
# interop runner self-testzig build run-interop-client-standalone
# against an external quic-go or quinn serverzig build run-interop-external -- SERVER_IP PORT /path/to/cert.pem localhostInterop server definitions live under
examples/interop/:
go_echo_client, quic_go_server, quiche_server, rust_echo_client,
s2n_quic_server.