Skip to content

Sudo-Ivan/Reticulum-Go

Repository files navigation

Reticulum-Go

Note

This is WIP and not ready as of FEB 2025, Code might be a little messy in some areas.

Reticulum Network implementation in Go.

Aiming for full spec compatibility with the Python version 0.8.8+.

Go 1.24.0

Packages:

  • golang.org/x/crypto

Testing

make install
make build
make run

To-Do List

Core Components (In Progress)

  • 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

Interface Implementation (In Progress)

  • 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 System (Testing required)

  • Destination creation
  • Destination types (IN/OUT)
  • Destination aspects
  • Announce implementation
  • Ratchet support
  • Request handlers

Link System (Testing required)

  • Link establishment
  • Link teardown
  • Basic packet transfer
  • Encryption/Decryption
  • Identity verification
  • Request/Response handling
  • Session key management
  • Link state tracking

Resource System (Testing required)

  • Resource creation
  • Resource transfer
  • Compression
  • Progress tracking
  • Segmentation
  • Cleanup routines

Compatibility

  • RNS Utilities.
  • Reticulum config.

Testing & Validation (Priority)

  • 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)

Documentation

  • API documentation
  • Usage examples

Cleanup

  • 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

Other

  • Rate limiting
  • QoS implementation?

Ivans Future Addon Packages

  • 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)

About

Reticulum Network Stack in Go

Topics

Resources

License

Security policy

Stars

Watchers

Forks

Packages

No packages published