## Uses of Class
net.i2p.data.SimpleDataStructure

- Packages that use SimpleDataStructure
  Package | Description
  --- | ---
  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.i2np | This package defines the low-level messages sent between routers, called Invisible Internet Network Protocol (I2NP).
  net.i2p.kademlia | Generic Kademlia distributed hash table implementation supporting multiple hash algorithms (SHA1, SHA256, etc.).
  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 SimpleDataStructure in net.i2p.crypto

    Subclasses of SimpleDataStructure in net.i2p.crypto
    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.

    Methods in net.i2p.crypto that return SimpleDataStructure
    Modifier and Type | Method and Description
    --- | ---
    `SimpleDataStructure[]` | KeyGenerator.`generatePKIKeys()` ElGamal only.
    `SimpleDataStructure[]` | KeyGenerator.`generateSigningKeys()` DSA-SHA1 only.
    `SimpleDataStructure[]` | KeyGenerator.`generateSigningKeys(SigType type)` Generic signature type, supports DSA, RSA, ECDSA, EdDSA
    `SimpleDataStructure` | SigType.`getHashInstance()` Gets a Hash instance for this signature type.

    Methods in net.i2p.crypto with parameters of type SimpleDataStructure
    Modifier and Type | Method and Description
    --- | ---
    `Signature` | DSAEngine.`sign(SimpleDataStructure hash, PrivateKey privKey, SigType type)` Generic signature type.
    `Signature` | DSAEngine.`sign(SimpleDataStructure hash, SigningPrivateKey signingKey)` Generic signature type.
    `boolean` | DSAEngine.`verifySignature(Signature signature, SimpleDataStructure hash, PublicKey pubKey)` Generic signature type.
    `boolean` | DSAEngine.`verifySignature(Signature signature, SimpleDataStructure hash, SigningPublicKey verifyingKey)` Generic signature type.

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

    Classes in net.i2p.data with type parameters of type SimpleDataStructure
    Modifier and Type | Class and Description
    --- | ---
    `class` | `SDSCache<V extends SimpleDataStructure>` A least recently used cache with a max size, for SimpleDataStructures.

    Subclasses of SimpleDataStructure in net.i2p.data
    Modifier and Type | Class and Description
    --- | ---
    `class` | `Hash` SHA-256 hash implementation for I2P data identification and integrity.
    `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.

    Method parameters in net.i2p.data with type arguments of type SimpleDataStructure
    Modifier and Type | Method and Description
    --- | ---
    `void` | EncryptedLeaseSet.`encrypt(int authType, List<? extends SimpleDataStructure> clientKeys)` Throws IllegalStateException if not initialized.
    `void` | EncryptedLeaseSet.`sign(SigningPrivateKey key, int authType, List<? extends SimpleDataStructure> clientKeys)` Sign the structure using the supplied signing key.

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

    Subclasses of SimpleDataStructure in net.i2p.data.i2np
    Modifier and Type | Class and Description
    --- | ---
    `class` | `EncryptedBuildRecord` ElGamal-encrypted request or response.
    `class` | `ShortEncryptedBuildRecord` Small records.

  - ### Uses of SimpleDataStructure in net.i2p.kademlia

    Classes in net.i2p.kademlia with type parameters of type SimpleDataStructure
    Modifier and Type | Interface and Description
    --- | ---
    `interface` | `KBucket<T extends SimpleDataStructure>` Group, without inherent ordering, a set of keys a certain distance away from a local key, using XOR as the distance metric Refactored from net.i2p.router.networkdb.kademlia
    `(package private) class` | `KBucketImpl<T extends SimpleDataStructure>` A concurrent implementation using ConcurrentHashSet.
    `class` | `KBucketSet<T extends SimpleDataStructure>` In-memory storage of buckets sorted by XOR metric from base (us) passed in via constructor.
    `interface` | `KBucketTrimmer<K extends SimpleDataStructure>` Called when a kbucket can no longer be split and is too big
    `class` | `RandomIfOldTrimmer<T extends SimpleDataStructure>` Removes a random element, but only if the bucket hasn't changed in 5 minutes.
    `class` | `RandomTrimmer<T extends SimpleDataStructure>` Removes a random element.
    `class` | `RejectTrimmer<T extends SimpleDataStructure>` Removes nothing and always rejects the add.
    `interface` | `SelectionCollector<T extends SimpleDataStructure>` Visit kbuckets, gathering matches
    `class` | `XORComparator<T extends SimpleDataStructure>` Help sort Hashes in relation to a base key using the XOR metric

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

    Subclasses of SimpleDataStructure in net.i2p.router.crypto.ratchet
    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 SimpleDataStructure in net.i2p.router.networkdb.kademlia

    Subclasses of SimpleDataStructure in net.i2p.router.networkdb.kademlia
    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 SimpleDataStructure in org.klomp.snark.dht

    Subclasses of SimpleDataStructure in org.klomp.snark.dht
    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.