mirror of
https://github.com/jmcorgan/fips.git
synced 2026-08-09 16:24:45 +00:00
Module reorganization: - Split identity.rs (930 lines) into identity/ directory module: mod.rs, node_addr.rs, address.rs, peer.rs, local.rs, auth.rs, encoding.rs, tests.rs — following established bloom/, tree/, noise/ pattern - Group TUN, DNS, and ICMPv6 into upper/ module as the IPv6 adaptation layer: move tun.rs, icmp.rs, node/dns.rs into upper/ Identity test coverage (28 new tests, 52 total): - Encoding error paths: invalid npub/nsec length, bad hex input - NodeAddr: Debug, Display, as_slice, AsRef, Hash - FipsAddress: from_slice, From trait, Debug, Display, Eq+Hash - PeerIdentity: from_pubkey_full, pubkey_full parity paths, Debug - Identity: keypair, pubkey_full, Debug - AuthChallenge: from_bytes Design doc corrections (fips-software-architecture.md): - Identity struct: npub+nsec fields → keypair: Keypair with accessors - Node struct: TunInterface → TunState, Transport → TransportHandle, Peer → PeerSlot - Peer section: monolithic Peer → two-phase PeerSlot (PeerConnection + ActivePeer) with HandshakeState/ConnectivityState - ActivePeer: npub → identity: PeerIdentity, ancestry Vec → Option, declaration/inbound_filter wrapped in Option - BloomState: add 4 missing fields, fix update_debounce type - DiscoveredPeer: field name and type corrections
FIPS Design Documents
Protocol design specifications and analysis for the Federated Interoperable Peering System.
Suggested Reading Order
Start with the high-level architecture, then work through session flow, routing concepts, and finally the wire-level protocol details.
1. Introduction and Overview
| Document | Description |
|---|---|
| fips-intro.md | Protocol introduction: goals, concepts, architecture |
2. Protocol Flow (How Traffic Works)
| Document | Description |
|---|---|
| fips-session-protocol.md | End-to-end session flow, Noise IK encryption, terminology |
3. Routing (How Packets Find Their Way)
| Document | Description |
|---|---|
| fips-routing.md | Routing concepts: bloom filters, discovery, greedy routing |
| spanning-tree-dynamics.md | Tree protocol behavior: convergence, partitions, recovery |
| fips-gossip-protocol.md | Wire formats: TreeAnnounce, FilterAnnounce, Lookup messages |
4. Link Layer (How Peer Connections Work)
| Document | Description |
|---|---|
| fips-wire-protocol.md | Transport layer: Noise IK, session indices, roaming, security |
| fips-transports.md | Transport-specific: UDP, Ethernet, Tor, radio characteristics |
Implementation
| Document | Description |
|---|---|
| fips-software-architecture.md | Software architecture: entities, state machines, configuration |
| fips-tun-driver.md | TUN interface driver: reader/writer threads, ICMPv6, packet flow |
| fips-state-machines.md | Phase-based state machine pattern: peer lifecycle, transitions |
Document Cross-References
fips-intro.md
│
┌────────────┴────────────┐
▼ ▼
fips-session-protocol.md fips-software-architecture.md
│ │
┌─────────┴─────────┐ ▼
▼ ▼ fips-transports.md
fips-routing.md fips-wire-protocol.md
│ │
▼ ▼
spanning-tree-dynamics.md ←→ fips-gossip-protocol.md