Reticulum Network implementation in Go.
Aiming for full spec compatibility with the Python version 0.8.8+.
Go 1.23.4
Packages:
golang.org/x/crypto
make install
make build
make run
1/2/25 Notes:
Working on fixing announce packet creation/recieving. Right now there is bidirectional communication with the TCP interface and recieving packets. Several more things need to be cleaned up and added like config generation, storing ratches etc..
-
Basic Configuration System
- Basic config structure
- Default settings
- Config file loading/saving
- Path management
-
Constants Definition (Testing required)
- Packet constants
- MTU constants
- Header types
- Additional protocol constants
-
Identity Management (Testing required)
- Identity creation
- Key pair generation
- Identity storage/recall
- Public key handling
- Signature verification
- Hash functions
-
Cryptographic Primitives (Testing required)
- Ed25519
- Curve25519
- AES-CBC
- SHA-256
- HKDF
- Secure random number generation
- HMAC
-
Packet Handling (In Progress)
- Packet creation
- Packet validation
- Basic proof system
- Packet encryption/decryption
- Signature verification
- Announce packet structure
- Testing of packet encrypt/decrypt/sign/proof
- Cross-client packet compatibility
-
Transport Layer (In Progress)
- Path management
- Basic packet routing
- Announce handling
- Link management
- Resource cleanup
- Network layer integration
- Basic announce implementation
- Testing announce from go client to python client
- Testing path finding and caching
- Announce propagation optimization
-
Channel System (Testing Required)
- Channel creation and management
- Message handling
- Channel encryption
- Channel authentication
- Channel callbacks
- Integration with Buffer system
- Testing with real network conditions
- Cross-client compatibility testing
-
Buffer System (Testing Required)
- Raw channel reader/writer
- Buffered stream implementation
- Compression support
- Testing with Channel system
- Cross-client compatibility testing
-
Resolver System (Testing Required)
- Name resolution
- Cache management
- Announce handling
- Path resolution
- Integration with Transport layer
- Testing with live network
- Cross-client compatibility testing
-
UDP Interface
-
TCP Interface
-
Auto Interface
-
Local Interface (In Progress)
-
I2P Interface
-
Pipe Interface
-
RNode Interface
-
RNode Multiinterface
-
Serial Interface
-
AX25KISS Interface
-
Interface Discovery
-
Interface Modes
- Full mode
- Gateway mode
- Access point mode
- Roaming mode
- Boundary mode
-
Hot reloading interfaces
- Destination creation
- Destination types (IN/OUT)
- Destination aspects
- Announce implementation
- Ratchet support
- Request handlers
- Link establishment
- Link teardown
- Basic packet transfer
- Encryption/Decryption
- Identity verification
- Request/Response handling
- Session key management
- Link state tracking
- Resource creation
- Resource transfer
- Compression
- Progress tracking
- Segmentation
- Cleanup routines
- RNS Utilities.
- Reticulum config.
- Unit tests for all components
- Identity tests
- Packet tests
- Transport tests
- Interface tests
- Announce tests
- Channel tests
- Buffer tests
- Resolver tests
- Link tests
- Resource tests
- Integration tests
- Go client to Go client
- Go client to Python client
- Interface compatibility
- Path finding and resolution
- Channel system end-to-end
- Buffer system performance
- Cross-client compatibility tests
- Performance benchmarks
- Security auditing (When Reticulum is 1.0 / stable)
- API documentation
- Usage examples
- Separate Cryptography from identity.go to their own files
- Move constants to their own files
- Remove default community interfaces in default config creation after testing
- Optimize announce packet creation and caching
- Improve debug logging system
- Rate limiting
- QoS implementation?
- Post-quantum cryptographic primitives (separate package)
- Hardware security module (HSM) support (separate package)
- Encrypted storage for identities (separate package)
- Defense against AI-guided Traffic Analysis (separate package)