mirror of
https://github.com/jmcorgan/fips.git
synced 2026-10-06 11:38:24 +00:00
Carries the comment sweep, the key-material clearing, and the two constant-reconciliation commits up from master. Two of the five items on that line are deliberately excluded, and most of the resolution work was keeping them out. Excluded, and why: - The frame-length validation does not come. This branch needs its own design for msg2 and msg3 rather than an extra arm, and that work is sequenced separately. It arrived silently in four files that merged without a conflict, so it was removed from each: the reject variant, the stats counter, the wire helper and its tests, and the receive-path call site with the dispatch visibility widening its tests wanted. Landing only the counters would have left a metric that reports zero forever with nothing able to increment it. - The post-handshake identity confirmation does not come, and cannot. The older lines run a pattern that learns the initiator's static key at message 1; this branch does not learn it until message 3, so there is no identity to confirm at that point and no insertion point for the check. Its type, its classifier and its confirmation block all conflicted and were resolved to this branch's side, but two further pieces auto-merged with no conflict and had to be removed by hand: the module visibility widening, and the classifier call site. - The transport framing constants are not re-sourced here. This branch has rewritten that whole block: message 1 is a different size, message 2 and message 3 are minimums rather than exact values, and the version gate is a different version. Taking the incoming side would have sourced a minimum from an exact value. Carried, with adaptation where the patterns differ: - Key-material clearing applies to this branch's own handshake, which is XX at both layers rather than IK and XK. The incoming code could not be taken as written, since it carries whole method bodies for patterns this branch does not use. The erasing guard, the parameter erase in both constructors, and the clearing of each Diffie-Hellman output and secret-key copy were applied to this branch's own sites instead. - The security and session-layer documents keep this branch's pattern names and gain the correction about the handshake AEAD, which passes an empty associated-data field here too. - The drain-window test needed this branch's optional-identity constructor, since an anonymous dial is a first-class case here.
Reference
Information-oriented technical descriptions for lookup on demand. Reference content describes what is: wire formats, configuration keys, command-line flags, control-socket commands, default values, file paths, exit codes. It is consulted, not read end-to-end.
Reference is austere by design: minimal narrative, no opinions, no guidance on when to use a feature. The "why" lives in design/; the "how do I accomplish X" lives in how-to/.
Available Reference
| Document | Scope |
|---|---|
| wire-formats.md | All FMP and FSP message byte layouts, encapsulation walkthrough |
| configuration.md | Full YAML configuration reference for the daemon and gateway |
| security.md | nftables baseline, peer ACL, cryptographic primitives, rekey defaults, threat-resistance matrix |
| nostr-events.md | Kind 37195 advert, Kind 21059 traversal signaling, Kind 10050 inbox relays |
| transports.md | Per-transport statistics counter inventory |
| control-socket.md | Line-delimited JSON control protocol for the daemon and gateway |
| cli-fips.md | fips daemon CLI: options, exit codes, environment, files |
| cli-fipsctl.md | fipsctl control-client: subcommands, options, exit codes |
| cli-fipstop.md | fipstop live-status TUI: tabs, keybindings |
| cli-fips-gateway.md | fips-gateway service CLI: options, exit codes, files |