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