Commit Graph
3786 Commits
Author SHA1 Message Date
Adrien Beraud ccb0b4340e transport: make private network grants permanent 2026-11-01 22:18:02 -05:00
Adrien Beraud fa78704062 transport: test permanent grants and authority transitions 2026-11-01 22:12:28 -05:00
Adrien Beraud 625625a186 tests: isolate projection scheduling from transport handshakes 2026-10-29 23:35:22 -04:00
Adrien Beraud f0d039b4a0 tests: keep persisted transport paths as filesystem paths 2026-10-29 23:28:48 -04:00
Adrien Beraud d464214d73 tests: use portable paths for persisted transport keys 2026-10-29 23:28:48 -04:00
Adrien Beraud b69c66feed network: retain session authorization and budget credential checks 2026-10-29 23:28:48 -04:00
Adrien Beraud 3d9ee6a51a tests: verify cached private authorization expires and renews 2026-10-29 23:28:48 -04:00
Adrien Beraud f71697c81b tests: cover private client authorization and cached credential limits 2026-10-29 23:28:48 -04:00
Adrien Beraud b071022283 tests: fix transport test portability on GCC and Windows 2026-10-29 23:28:48 -04:00
Adrien Beraud 487bc2fce2 meson: add optional Rust bindings build 2026-10-29 23:28:48 -04:00
Adrien Beraud 758f280651 network: validate sessions before cache admission and isolate fragments 2026-10-29 23:28:48 -04:00
Adrien Beraud 20464e6f16 tests: cover rejected sessions and cross-sender fragments 2026-10-29 23:28:48 -04:00
Adrien Beraud d211de73e0 transport: erase temporary session keys and HMAC state 2026-10-29 23:28:48 -04:00
Adrien Beraud bde661a2d4 tests: verify session key destruction erases secrets 2026-10-29 23:28:48 -04:00
Adrien Beraud 49ef8ee84d docs: describe separate rate limits 2026-10-29 23:28:48 -04:00
Adrien Beraud 390528a1af tools: disable public-key rate limit with other limits 2026-10-29 23:28:48 -04:00
Adrien Beraud 97c9d58a5c network: separate rate limits for sessions, unauthenticated requests and public-key work 2026-10-29 23:28:48 -04:00
Adrien Beraud e5903d5c94 tests: check separate request, session and public-key rate limits 2026-10-29 23:28:48 -04:00
Adrien Beraud 65bbbead34 docs: describe control-only transport establishment 2026-10-29 23:28:48 -04:00
Adrien Beraud ffaf1e2ca3 dht: establish cold searches through target-aware routing probes 2026-10-29 23:28:48 -04:00
Adrien Beraud af7d5c2770 network: finish recovery only after accepted replies 2026-10-29 23:28:48 -04:00
Adrien Beraud c14858a82a tests: exercise private routing and unreachable search peers 2026-10-29 23:28:48 -04:00
Adrien Beraud 1010a4c90f tests: cover establishment failure and legacy fallback 2026-10-29 23:28:48 -04:00
Adrien Beraud ea6bacf0a1 network: establish sessions without spending withheld request attempts 2026-10-29 23:28:48 -04:00
Adrien Beraud 36f67747d7 tests: preserve routing progress during cold session establishment 2026-10-29 23:28:48 -04:00
Adrien Beraud b093dc0907 tests: cover cold establishment and delayed recovery replies 2026-10-29 23:28:48 -04:00
Adrien Beraud a06695734d network: require a session for keyed value requests 2026-10-29 23:28:48 -04:00
Adrien Beraud 35aa47029e tests: reject unvalidated transport value requests 2026-10-29 23:28:48 -04:00
Adrien Beraud 4af12a4c2c docs: describe per-peer session recovery 2026-10-29 23:28:48 -04:00
Adrien Beraud 3f77b6b820 network: recover lost sessions per peer 2026-10-29 23:28:48 -04:00
Adrien Beraud 858867dc56 tests: check that session recovery withholds every request to the peer 2026-10-29 23:28:48 -04:00
Adrien Beraud fcb0632a41 docs: describe session recovery without payloads in Initial envelopes 2026-10-29 23:28:48 -04:00
Adrien Beraud 3ba61e7e4e network: recover lost sessions with a ping before resending requests 2026-10-29 23:28:48 -04:00
Adrien Beraud 4ef2c21ce0 docs: describe fragment sizes per envelope 2026-10-29 23:28:48 -04:00
Adrien Beraud d98c66b2c0 network: size value fragments by the envelope in use 2026-10-29 23:28:48 -04:00
Adrien Beraud dc09983b6b tests: require session recovery before resending payloads, and envelope-sized fragments 2026-10-29 23:28:48 -04:00
Adrien Beraud da00246fe8 docs: describe the fragment size calculation 2026-10-29 23:28:48 -04:00
Adrien Beraud e092e4d89f network: size value fragments from the minimum MTU
Fragments carried 1280 bytes of value data, plus the msgpack framing and,
for encrypted peers, the envelope overhead: packets exceeded the 1280-byte
IPv6 minimum MTU. Derive both fragment sizes from the 1232-byte UDP payload
that fits in it, less an upper bound of the fragment framing.
2026-10-29 23:28:48 -04:00
Adrien Beraud ed8131a3c6 tests: require value fragments to fit the IPv6 minimum MTU 2026-10-29 23:28:48 -04:00
Adrien Beraud f29c77cadf docs: state the scope of each transport limitation 2026-10-29 23:28:48 -04:00
Adrien Beraud d90988cb6a transport: save key files through temporary replacements 2026-10-29 23:28:48 -04:00
Adrien Beraud 3cf24c89d4 tests: require atomic transport-key state persistence 2026-10-29 23:28:48 -04:00
Adrien Beraud 5e7bcd1189 node: use compact fixed-width transport badges 2026-10-29 23:28:48 -04:00
Adrien Beraud 8ac6baee22 tests: require fixed-width node transport badges 2026-10-29 23:28:48 -04:00
Adrien Beraud f9bb4bcb40 node: show transport authentication state in logs 2026-10-29 23:28:48 -04:00
Adrien Beraud 35f486e035 tests: cover node transport state formatting 2026-10-29 23:28:48 -04:00
Adrien Beraud 0d5e4c761a network: enforce transport trust and address validation boundaries 2026-10-29 23:28:48 -04:00
Adrien Beraud efc372dc3f tests: cover transport trust and address validation boundaries 2026-10-29 23:28:48 -04:00
Adrien Beraud ddfbca3106 docs: describe fragment binding to the envelope state 2026-10-29 23:28:48 -04:00
Adrien Beraud 353c3d4e11 network: bind fragmented message parts to their envelope state
Value data fragments carry no node ID and were merged into a partial
message by source address and transaction ID alone, first come first
served. Transaction IDs increment from a random start and show in any
plaintext packet of a pair, such as the first-contact ping. An attacker
spoofing the sender's address could thus pre-seed forged plaintext
fragments, or a plaintext header, for an encrypted reply: the real parts
were then dropped as overlapping, forging unsigned values or losing the
message.

Parts of a message must now all be plaintext, or all come in envelopes
from the same sender key as its first part. An encrypted part replaces
plaintext state, which anyone can forge from a spoofed address; plaintext
or foreign-key parts never join an encrypted message.
2026-10-29 23:28:48 -04:00