Format: 1.8
Date: Wed, 22 Jul 2026 08:25:00 +0200
Source: libnetplus
Binary: libnetplus-dev libnetplus1 libnetplus1-dbgsym netplus-certgen netplus-certgen-dbgsym
Architecture: source amd64
Version: 20260722+27
Distribution: unstable
Urgency: high
Maintainer: Jan Koester <jan.koester@tuxist.de>
Changed-By: Jan Koester <jan.koester@tuxist.de>
Description:
 libnetplus-dev - C++ socket and event library - development files
 libnetplus1 - C++ socket and event library
 netplus-certgen - Self-signed TLS certificate generator
Changes:
 libnetplus (20260722+27) unstable; urgency=high
 .
   * quic: fix Initial keys being derived from the wrong DCID after a
     Retry, both server- and client-side — the actual cause of every real
     QUIC client (curl/ngtcp2, confirmed against a live capture) hanging
     to ERR_HANDSHAKE_TIMEOUT against this server's always-on-Retry mode,
     despite our own client/server pair passing every existing test
     (self-consistently sharing the same wrong assumption end to end).
     RFC 9001 §5.2 derives the Initial secret from whatever DCID is
     *currently* on the wire, which changes to the server's Retry SCID
     after a Retry — not, as previously assumed here, from the
     connection's original self-chosen DCID (which never changes across
     a Retry). accept() now calls deriveInitialKeys(dcid, ...) — this
     packet's own DCID — instead of the ODCID recovered from the retry
     token; processRetryPacket() now re-derives keys from the new
     _remote_cid before resending the Initial, instead of deliberately
     keeping the pre-Retry keys. The recovered original DCID
     (true_original_dcid / _original_dcid) is still tracked and still
     used for exactly what RFC 9000 §7.3 actually needs it for: the
     original_destination_connection_id transport parameter, which lets
     the client detect an off-path attacker's forged Retry — it was never
     part of key derivation, just misdocumented as such at both call
     sites.
   * quic: de-dupe Retry sends per client DCID (5s window). A client's
     first-flight CRYPTO data can span more than one UDP datagram (e.g. a
     large post-quantum-hybrid ClientHello); each such datagram shares
     the same token-less DCID with no registry entry yet to recognize it
     as already-answered, so each independently minted its own Retry with
     its own random SCID/token for what the client considers one attempt.
     Not the root cause above, but a real bug in its own right and
     cleaned up alongside it.
   * quic: restore QUIC_DBG tracing (a previous debugging session left it
     disabled via a bare `do {} while(0)`); gated behind the QUIC_TRACE
     env var as before. This is what made the root cause above provable:
     without it, decrypt failures on real traffic were entirely silent.
Checksums-Sha1:
 2b3f5c56a9532f87943368dba0f924790a7254eb 778 libnetplus_20260722+27.dsc
 857e45c35b3c12560afbbb1fe323a8064c1eec0d 283660 libnetplus_20260722+27.tar.xz
 2f454562591f9fbad5b8a1700a0578ebb9592430 413972 libnetplus-dev_20260722+27_amd64.deb
 c07cbe0f89cb3ba81cb190b43a091f91e6d003f7 5080652 libnetplus1-dbgsym_20260722+27_amd64.deb
 1eed6e48f345acf67b210c476d4983c3bdb48d71 361664 libnetplus1_20260722+27_amd64.deb
 d8d0adfe7a100911e4d6787099d704293837fb9f 8531 libnetplus_20260722+27_amd64.buildinfo
 a9db1df1e328eb95f84fb7e8be9106169c9d420e 662976 netplus-certgen-dbgsym_20260722+27_amd64.deb
 1a5995675d6d7045d975671fe4a1b5c1a7165852 67552 netplus-certgen_20260722+27_amd64.deb
Checksums-Sha256:
 f6dfb7b0623c21fbe568a87ba6666c14e744ccb70a4f455e548970924abb229c 778 libnetplus_20260722+27.dsc
 a2ef118caab328ac6af50d626017872e124fdc535b34a5ad03deff01a36c9e53 283660 libnetplus_20260722+27.tar.xz
 a963caf6fac8d2df99bce8b0dcff3081f3f825cc14e28061f53be2b0408a248f 413972 libnetplus-dev_20260722+27_amd64.deb
 d94d62df131fa02bf08a6fc45b75b01af3c16edb0a987d7c1792f1cc829f909e 5080652 libnetplus1-dbgsym_20260722+27_amd64.deb
 34220f33e22f326bd246b0ac04c0b7ddff4faeda43a4d9cca98aae02ce65d0d3 361664 libnetplus1_20260722+27_amd64.deb
 775be409169a686423574c05155c6b3867239d820f22197a70071d4bf2b8656e 8531 libnetplus_20260722+27_amd64.buildinfo
 12d04beb641ada73c1f695c6253600d6e712c020bc8bda513c7e648be29bb25d 662976 netplus-certgen-dbgsym_20260722+27_amd64.deb
 d0b5f552ebe7eea69dfe697cb21f550e74e6454a3af8c13106f6a629a2c355fa 67552 netplus-certgen_20260722+27_amd64.deb
Files:
 acf79785e21824c88cfdfdfcae7f5f9f 778 libs optional libnetplus_20260722+27.dsc
 bf374938c39c8901e0a80a329c811478 283660 libs optional libnetplus_20260722+27.tar.xz
 647ce06f1c4a500a916fd2f5608fd6b7 413972 libdevel optional libnetplus-dev_20260722+27_amd64.deb
 a7e20eb0ab1b55b672623effef502260 5080652 debug optional libnetplus1-dbgsym_20260722+27_amd64.deb
 ca5b82c805f9994e68b1ff42f71ac2dc 361664 libs optional libnetplus1_20260722+27_amd64.deb
 ccbbfef14b0be421bfb0bf714cbedcbf 8531 libs optional libnetplus_20260722+27_amd64.buildinfo
 ee4fd82d4de249c0eb7523c81031a74b 662976 debug optional netplus-certgen-dbgsym_20260722+27_amd64.deb
 a05cdf8dc13d367ceaaef31ef72019c7 67552 utils optional netplus-certgen_20260722+27_amd64.deb
