Packages that use net.i2p.util
Package
Description
M-Lab NDT speed test plugin code imported from Vuze, used by the router console speed test.
Swing compatibility stubs for the imported Vuze M-Lab NDT client.
Web100 Network Diagnostic Tool applet behind the router console speed test.
Fortuna pseudo-random number generator from GNU Crypto, modified for I2P.
The SusiDNS webapp, which is the user interface for the addressbook application and the local naming service (hosts database) implemented in net.i2p.client.naming.
Utility classes for the SusiMail webmail client.
The SusiMail webapp (mail.war): webmail interface with POP3 and SMTP clients over I2P and local caching.
MIME and character encoding support for SusiMail.
POP3 client (RFC 1939) for SusiMail, including APOP authentication.
SMTP client for SusiMail, including STARTTLS and authentication.
Core I2P package providing fundamental interfaces, version information, and entry points to essential I2P services, centered on I2PAppContext.
Address book application for fetching and maintaining I2P host databases from subscription sources.
SSL/TLS socket factory and hostname verification extracted from Apache HttpClient 4.4.1, with minimal modifications to remove other Apache dependencies.
System tray applet that launches a browser to the router console when the router is ready.
Internal implementation of the I2P client SDK - the client side of the Invisible Internet Client Protocol (I2CP), separating implementation from the interfaces in net.i2p.client.
Naming service for resolving human-readable names (such as ident.i2p) into I2P destinations, providing a standard interface without JNDI complexity.
API, interfaces, and factory for a TCP-like (reliable, authenticated, in order) set of sockets for communicating over IP-like (unreliable, unauthenticated, unordered) I2P messages.
Implementation of a TCP-like (reliable, authenticated, in order) set of sockets for communicating over the IP-like (unreliable, unauthenticated, unordered) I2P messages.
Core cryptographic primitives used throughout I2P: symmetric ciphers (AES, ChaCha20), hashes (SHA-1, SHA-256, SHA-384, SHA-512), HMAC and HKDF key derivation, the ElGamal and DSA/EdDSA/RedDSA engines, key and certificate utilities, and the entropy harvester.
Common data structures used by the I2P protocols: Destination, LeaseSet, PublicKey, Signature, Certificate and their friends.
The Invisible Internet Client Protocol (I2CP) allows applications simplified access to I2P network without requiring them to deal with the issues involved with the Invisible Internet Network Protocol (I2NP).
Low-level messages sent between routers - the Invisible Internet Network Protocol (I2NP).
Router-specific data structures: RouterInfo and RouterIdentity with their transport addresses and capabilities, router key generation, and the optionally password-protected router private key file.
Desktop GUI for monitoring and controlling the router from the system tray: status display, start/stop/restart controls and console access.
I2P Control service: a JSON-RPC 2.0 interface for controlling and monitoring the router from external applications, served over TLS on the configured port.
Authentication and authorization for the I2P Control service: token management and keystore handling.
Request handling for the I2P Control JSON-RPC 2.0 service.
I2P Control handlers for reading and writing router configuration parameters.
I2P Control JSON-RPC 2.0 method handlers: API version, router parameters, statistics and log access.
Implementation of preconfigured tunnels for clients and servers, including special-purpose tunnels for IRC, SOCKS, HTTP and streaming.
Definition-based incoming connection filter for server tunnels, with fine-grained access control by destination.
IRC tunnel support: DCC and CTCP handling for IRC clients using a client tunnel.
Minimal embedded HTTP server used by the I2PTunnel local admin interface.
SOCKS 4, 4a and 5 server implementations exposing I2P client tunnels to SOCKS clients.
StreamR adaptive-rate streaming tunnel: streams audio and video over a single I2P tunnel, adapting the encoder rate to the measured tunnel bandwidth.
Datagram plumbing for UDP tunnels: sinks and sources that bridge a local UDP socket and an I2P stream, framing each datagram onto the stream and back.
Base classes for UDP client and server tunnels, mapping a local UDP port to an I2P tunnel through the sinks and sources in net.i2p.i2ptunnel.udp.
Shared helpers for the tunnel implementations, including HTTP header processing.
The I2PTunnel configuration web interface (i2ptunnel.war): servlets and helpers for creating and editing tunnels.
Jetty integration: starts the embedded Jetty server for all I2P webapps.
Generic Kademlia distributed hash table implementation supporting multiple hash algorithms (SHA1, SHA256 and others).
The I2P router application handles I2P network communication.
Router-side implementation of the Invisible Internet Client Protocol (I2CP): client sessions over plain or TLS sockets, message delivery, and lease and tunnel management on behalf of clients.
Router-specific cryptography: ElGamal+AES garlic encryption (ElGamalAESEngine), session key and tag caching for repeated peer communication (TransientSessionKeyManager), router-family shared keys (FamilyKeyCrypto), and the ratchet and pqc subpackages.
Post-quantum hybrid key encapsulation built on the bundled Bouncy Castle ML-KEM primitives.
The Double Ratchet with X25519 key agreement and ECIES hybrid encryption, used by the NTCP2 and SSU transports for session encryption.
Simplified fake implementations of router interfaces (comm system and friends) for testing and embedded builds.
Garlic message creation, parsing and handling, and the outbound message jobs: one-shot sends, source routing and delivery status handling.
The router's default naming service, BlockfileNamingService, backed by the Metanotion BlockFile database (net.metanotion) in hostsdb.dat.
Network database message handling shared by all facades: database lookup jobs and local RouterInfo publication.
The Kademlia distributed hash table (DHT) network database: lookup, store and explore jobs, the data store, the floodfill variants, and lookup throttling.
Reseeding: fetching router info lists from reseed servers, web indexes or local files, validating them (signed SU3 update files and unsigned ZIP archives) and processing them to bootstrap into the network.
Parser for the I2P news format, which follows Atom with additional metadata for the update notification feature.
Peer profiles and capacity calculation, peer test jobs, peer selection for tunnel building, and the database and tunnel history used for peer selection.
The I2P startup package loads configuration when I2P is started.
Offline analysis tools for detecting Sybil attacks and malicious peer coordination by correlating peer relationships.
Periodic maintenance jobs: stats coalescing, cryptographic algorithm checks, liveliness marking, out-of-memory handling, thread dumps, the watchdog, graceful shutdown and soft restart, update installation, republishing and config reloading.
Router time synchronization: peer-based clock sync (RouterTimestamper) and an NTP client with time zone support.
Transport framework: the transport lifecycle and pool management, connection handling and bandwidth throttling for the transports (NTCP2 over TCP, SSU over UDP) that carry I2P messages between routers, plus NAT traversal via UPnP and GeoIP country lookups.
Transport-layer key agreement: the X25519 key factory used by the NTCP2 and SSU2 session handshakes for peer authentication and session encryption.
NTCP2, the TCP transport: framed, ratchet-encrypted and mutually authenticated connections between routers.
SSU2, the UDP transport: datagram sessions with Holepunch peer discovery, plus the older SSU compatibility code.
Tunnel messages and the tunnel layer: the TunnelManagerFacade, tunnel build request and reply processing, and the inbound and outbound tunnel structures.
Tunnel pool management: pool lifecycle, peer selection, build scheduling and failure handling for client and exploratory tunnels.
Router-side update checking and installation: fetching update notifications, downloading and verifying updates, and staging them for the restart.
Router utility classes: CoDel active queue management, time-decaying collections, a diagnostics ring buffer, CIDR matching, and password management.
The router console user interface, implemented in routerconsole.jar, with these classes supporting the webapp in routerconsole.war.
Helpers and handlers for the router console user interface, packaged in routerconsole.war and accessible only from JSP files.
Router console servlets packaged in routerconsole.war, for pages that require servlet features rather than JSP helpers.
The SAM bridge: a simple text protocol server letting applications in any language use I2P streaming and datagram sessions without implementing the Invisible Internet Client Protocol (I2CP).
Demo and test client classes.
Servlet filters for I2P webapps: XSS protection and X-Forwarded header handling.
Statistics collection framework used throughout the router for adaptive operation, monitoring and debugging.
General utility classes shared across the core libraries and the router.
Block-level file and allocation management for the Metanotion BlockFile database.
Skip-list implementation used for BlockFile indexes.
General utility classes and helper functions.
I2P version of the Snark BitTorrent client, enhanced for I2P: peers are I2P destinations, torrents can be served anonymously as hidden services, and metadata carries I2P-specific comment fields.
BitTorrent distributed hash table (DHT) implementation following the Mainline protocol, for trackerless peer discovery.
The I2PSnark web interface (i2psnark.war): servlets and helpers for torrent management, file browsing and configuration.