privasys-v0.5.1-go1.26.5 — RA-TLS challenge-response + session channel binding
Go 1.26.5 plus the Privasys RA-TLS extensions in crypto/tls, as two commits on top of upstream release-branch.go1.26 (see the fork README for the full API and usage):
RA-TLS challenge extension 0xFFBB
- ClientHello leg:
Config.RATLSChallenge(client) sends a challenge nonce; the server reads it viaClientHelloInfo.RATLSChallengein its certificate callbacks. - CertificateRequest leg:
Config.RATLSChallenge(server) sends the nonce to the client;GetClientCertificatereceives it viaCertificateRequestInfo.RATLSChallenge.
Session channel binding (CVE-2026-33697 class relay defence)
- A 32-byte channel binder is derived from the TLS 1.3 key schedule:
HKDF-Expand-Label(client_handshake_traffic_secret, "privasys-ratls-binder-v1", transcript-through-ServerHello, 32)— identical on both peers, byte-compatible with the Privasys rustls fork, no negotiation. - Server leg:
Config.RATLSBindCertificatere-mints the server leaf at the Certificate-emit seam so its quote'sreport_datacommits to this exact session. Servers that serve certificates throughGetCertificate(certmagic/Caddy) instead get a secondGetCertificatecall withClientHelloInfo.RATLSChannelBinderset, only for clients that sent0xFFBB. - Mutual (client-cert) leg:
CertificateRequestInfo.RATLSChannelBindergives the client the binder so its client cert's quote commits to the session; a relayed identity fails closed against a binding-aware verifier. ConnectionState.RATLSChannelBinderexposes the binder on both sides.
Tests
TestRATLS* in crypto/tls: binder equality across the handshake, GetCertificate re-invocation, both challenge legs reaching their callbacks byte-for-byte, bind-hook cert re-mint on the wire, TLS 1.2 fail-closed, and extension marshal round-trips. Full crypto/tls suite green.
Toolchain
go-ratls-privasys-v0.5.1-go1.26.5-linux-amd64.tar.gz is a prebuilt linux-amd64 toolchain. Build with GOROOT=<extracted>/go-ratls go build -tags ratls.
Supersedes earlier privasys-v0.x tags (rebased history).