## Uses of Interface
net.i2p.data.DataStructure

- Packages that use DataStructure
  Package | Description
  --- | ---
  net.i2p.client | Interfaces and factories for the base I2P SDK used to develop applications that communicate through I2P.
  net.i2p.crypto | Core cryptographic primitives and algorithms used throughout I2P.
  net.i2p.data | These classes define the common data structures used by the various I2P protocols.
  net.i2p.data.i2cp | 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).
  net.i2p.data.i2np | This package defines the low-level messages sent between routers, called Invisible Internet Network Protocol (I2NP).
  net.i2p.data.router | Router-specific data structures and identity management classes for I2P.
  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.networkdb.kademlia | Kademlia DHT implementation and floodfill router functionality for I2P.
  org.klomp.snark.dht | Distributed Hash Table (DHT) implementation for BitTorrent.

- - ### Uses of DataStructure in net.i2p.client

    Classes in net.i2p.client that implement DataStructure
    Modifier and Type | Class and Description
    --- | ---
    `class` | `SendMessageOptions` Advanced options attached to a single outgoing I2CP message.

  - ### Uses of DataStructure in net.i2p.crypto

    Classes in net.i2p.crypto that implement DataStructure
    Modifier and Type | Class and Description
    --- | ---
    `class` | `Hash384` SHA-384 secure hash algorithm implementation.
    `class` | `Hash512` SHA-512 secure hash algorithm implementation.
    `(package private) class` | `RSASigningPrivateCrtKey` A SigningPrivateKey that retains the Chinese Remainder Theorem parameters, so it can be converted back to a Java CRT key.
    `class` | `SHA1Hash` I2P data structure for SHA-1 hash values.

  - ### Uses of DataStructure in net.i2p.data

    Classes in net.i2p.data that implement DataStructure
    Modifier and Type | Class and Description
    --- | ---
    `class` | `Certificate` Extensible certificate system for I2P structures providing metadata and capabilities.
    `class` | `DatabaseEntry` Base class for data structures stored in the I2P network database (NetDb).
    `class` | `DataStructureImpl` Base implementation of all data structures
    `class` | `DateAndFlags` A six-byte Date and 2 bytes of flags, since a Date won't encroach on the top two bytes until the year 10889.
    `class` | `Destination` Defines an endpoint in the I2P network that can receive messages.
    `class` | `EncryptedLeaseSet` Implementation of EncryptedLeaseSet as specified in Proposal 123: New NetDb Entries.
    `class` | `Hash` SHA-256 hash implementation for I2P data identification and integrity.
    `class` | `KeyCertificate` Specialized certificate for defining cryptographic key types used in I2P identities.
    `class` | `KeysAndCert` Container for cryptographic keys and certificate as used by I2P identities.
    `class` | `Lease` Authorization grant proving a router/tunnel may receive messages for a destination.
    `class` | `Lease2` Implementation of Lease2 as specified in Proposal 123: New NetDb Entries.
    `class` | `LeaseSet` Defines the set of leases that a destination currently has available for routing messages.
    `class` | `LeaseSet2` Implementation of LeaseSet2 as specified in Proposal 123: New NetDb Entries.
    `class` | `MetaLease` Implementation of MetaLease as specified in Proposal 123: New NetDb Entries.
    `class` | `MetaLeaseSet` Implementation of MetaLeaseSet as specified in Proposal 123: New NetDb Entries.
    `class` | `Payload` Message payload container for I2P communications with encryption support.
    `class` | `PrivateKey` Cryptographic private key for asymmetric encryption in I2P.
    `class` | `PublicKey` Cryptographic public key for asymmetric encryption in I2P.
    `class` | `SessionKey` Cryptographic session key for symmetric encryption in I2P.
    `class` | `Signature` Cryptographic signature implementation for I2P data structures and identity verification.
    `class` | `SigningPrivateKey` Cryptographic private key for digital signature generation in I2P.
    `class` | `SigningPublicKey` Cryptographic public key for digital signature verification in I2P.
    `class` | `SimpleDataStructure` Base class for I2P data structures containing a single fixed-length byte array.
    `class` | `VerifiedDestination` Extend Destination with methods to verify its Certificate.

  - ### Uses of DataStructure in net.i2p.data.i2cp

    Classes in net.i2p.data.i2cp that implement DataStructure
    Modifier and Type | Class and Description
    --- | ---
    `class` | `AbuseReason` Defines the structure for why abuse was reported either by the client to the router or by the router to the client
    `class` | `AbuseSeverity` Provides a severity level (larger numbers are more severe) in association with a client reporting abusive behavior to the router or the router reporting it to the client
    `class` | `SessionConfig` Defines the information a client must provide to create a session

  - ### Uses of DataStructure in net.i2p.data.i2np

    Classes in net.i2p.data.i2np that implement DataStructure
    Modifier and Type | Class and Description
    --- | ---
    `class` | `DeliveryInstructions` Contains the delivery instructions for garlic cloves.
    `class` | `EncryptedBuildRecord` ElGamal-encrypted request or response.
    `class` | `GarlicClove` Contains one deliverable message encrypted to a router along with instructions and a certificate 'paying for' the delivery.
    `class` | `ShortEncryptedBuildRecord` Small records.

  - ### Uses of DataStructure in net.i2p.data.router

    Classes in net.i2p.data.router that implement DataStructure
    Modifier and Type | Class and Description
    --- | ---
    `class` | `RouterAddress` Defines a method of communicating with a router For efficiency, the options methods and structures here are unsynchronized.
    `class` | `RouterIdentity` Defines the unique identifier of a router, including any certificate or public key.
    `class` | `RouterInfo` Defines the data that a router either publishes to the global routing table or provides to trusted peers.

    Methods in net.i2p.data.router with type parameters of type DataStructure
    Modifier and Type | Method and Description
    --- | ---
    `static <T extends DataStructure> List<T>` | SortHelper.`sortStructures(Collection<T> dataStructures)` Sort based on the Hash of the DataStructure.

    Method parameters in net.i2p.data.router with type arguments of type DataStructure
    Modifier and Type | Method and Description
    --- | ---
    `(package private) static void` | SortHelper.`sortStructureList(List<? extends DataStructure> dataStructures)` See above.

  - ### Uses of DataStructure in net.i2p.router.crypto.ratchet

    Classes in net.i2p.router.crypto.ratchet that implement DataStructure
    Modifier and Type | Class and Description
    --- | ---
    `(package private) class` | `NextSessionKey` X25519 public key with identifier for next session key exchange in ratchet protocol
    `(package private) class` | `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().

  - ### Uses of DataStructure in net.i2p.router.networkdb.kademlia

    Classes in net.i2p.router.networkdb.kademlia that implement DataStructure
    Modifier and Type | Class and Description
    --- | ---
    `(package private) class` | `LocalHash` Pull the caching used only by KBucketImpl out of Hash and put it here.

  - ### Uses of DataStructure in org.klomp.snark.dht

    Classes in org.klomp.snark.dht that implement DataStructure
    Modifier and Type | Class and Description
    --- | ---
    `(package private) class` | `InfoHash` Represents a BitTorrent info hash used for DHT operations.
    `class` | `NID` Node Identifier (NID) for Kademlia DHT operations.
    `(package private) class` | `NodeInfo` Comprehensive node information container for DHT operations.
    `(package private) class` | `Peer` Represents a single peer participating in a specific torrent within the DHT tracker.
    `(package private) class` | `TokenKey` Indexing key for DHT tokens based on node ID and info hash combination.