# Uses of Package
net.i2p.router.crypto.ratchet

- Packages that use net.i2p.router.crypto.ratchet
  Package | Description
  --- | ---
  net.i2p.data.i2np | This package defines the low-level messages sent between routers, called Invisible Internet Network Protocol (I2NP).
  net.i2p.router | The I2P router application handles I2P network communication.
  net.i2p.router.crypto.ratchet | Implementation of ECIES-X25519-AEAD-Ratchet cryptographic protocol (I2P proposal 144), providing forward secrecy and enhanced security for I2P transport communications.
  net.i2p.router.message | Garlic message creation, parsing, and source routing for I2P communications.
  net.i2p.router.networkdb.kademlia | Kademlia DHT implementation and floodfill router functionality for I2P.

- Classes in net.i2p.router.crypto.ratchet used by net.i2p.data.i2np
  Class and Description
  RatchetSessionTag 8-byte session tag for ratchet protocol messages with efficient long-based storage representation for memory optimization Does not extend SessionTag or DataStructure to save space

- Classes in net.i2p.router.crypto.ratchet used by net.i2p.router
  Class and Description
  ECIESAEADEngine ECIES+AEAD encryption engine providing New Session, New Session Reply, and Existing Session message handling No, this does not extend ElGamalAESEngine or AEADEngine or CryptixAEADEngine.

- Classes in net.i2p.router.crypto.ratchet used by net.i2p.router.crypto.ratchet
  Class and Description
  Elg2KeyPair X25519 key pair with pre-calculated Elligator2-encoded public key
  MuxedPQSKM Post-quantum hybrid session key manager combining ECIES and ML-KEM operations
  MuxedSKM Multiplexed session key manager combining ECIES and post-quantum key management
  NextSessionKey X25519 public key with identifier for next session key exchange in ratchet protocol
  RatchetEntry Container for outbound ratchet encryption data including tag, key, nonce, and optional next session keys for message preparation The object returned from SKM.consumeNextAvailableTag() to the engine encrypt.
  RatchetPayload.Block Base class for blocks to be transmitted.
  RatchetPayload.PayloadCallback For all callbacks, recommend throwing exceptions only from the handshake.
  RatchetSessionTag 8-byte session tag for ratchet protocol messages with efficient long-based storage representation for memory optimization Does not extend SessionTag or DataStructure to save space
  RatchetSKM Session key manager for ratchet encryption.
  RatchetTagSet Manages session tags and keys for a single ratchet direction with automatic key generation, supporting both inbound lookahead and on-demand outbound operations For outbound, uses very little memory.
  ReplyCallback Callback interface for ratchet acknowledgment notifications with expiration support
  SessionKeyAndNonce Session key with nonce and optional handshake state for ratchet message encryption and decryption operations, supporting nonces up to 65535 This is what is returned from RatchetTagSet.consume().
  SessionTagListener Interface for managing session tag lifecycle in ratchet tag sets
  SparseArray Memory-efficient sparse array implementation for integer-to-object mappings using binary search lookup, optimized for collections with up to hundreds of items
  SplitKeys Container for Noise protocol split keys that prevents duplicate HKDF calculations by sharing derived keys between engine and session key manager components

- Classes in net.i2p.router.crypto.ratchet used by net.i2p.router.message
  Class and Description
  RatchetSessionTag 8-byte session tag for ratchet protocol messages with efficient long-based storage representation for memory optimization Does not extend SessionTag or DataStructure to save space
  ReplyCallback Callback interface for ratchet acknowledgment notifications with expiration support

- Classes in net.i2p.router.crypto.ratchet used by net.i2p.router.networkdb.kademlia
  Class and Description
  RatchetSessionTag 8-byte session tag for ratchet protocol messages with efficient long-based storage representation for memory optimization Does not extend SessionTag or DataStructure to save space