This document summarizes, in an objective manner, what has already been implemented and validated in the repository.
- Unit tests covering the main packages (
go test ./...passing) - Executable examples in
examples/ - CI in GitHub Actions with formatting, testing, vulnerability checking, and lint
- Cryptographic identity based on Ed25519
PeerID = SHA-256(PublicKey)- Handshake that links session to identity via signed
HELLOexchange
- Transport over QUIC/TLS 1.3 (via
quic-go) - Session authenticated by
HELLO(control in dedicated stream)
- X25519 (ECDH) + HKDF-SHA256 for key derivation
- ChaCha20-Poly1305 as AEAD
- Symmetric ratchet per message (continuous forward secrecy)
- Reference SecureChannel (initiator/responder) with out-of-order support
- Chunking with hash per chunk
- Integrity via Merkle tree (root as commitment)
- LZ4 compression
- Batching to reduce syscall overhead
- Pool of parallel streams to saturate bandwidth
- Reed-Solomon erasure coding (optional) for loss resilience
- Ticket store with issuance/validation and encrypted ticket encoding (basis for resumption)
- High-level API (peer):
i6p/peer.go - Identity:
i6p/identity/ - Protocol:
i6p/protocol/ - Session/Handshake:
i6p/session/ - Crypto + ratchet:
i6p/crypto/andi6p/crypto/ratchet/ - Transfer/bulk:
i6p/transfer/andi6p/transfer/erasure/ - Examples:
examples/
- Formalize and freeze a minimal public API (interfaces), decoupling the application from QUIC details.
- Formal documentation of the handshake, messages, states, and API: see
docs/SPEC.md.