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

Packages that use DataStructure
net.i2p.crypto: These classes provide a number of low-level cryptographic routines.
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 the I2P network without requiring them to deal with the issues involved with the Invisible Internet Network Protocol (I2NP).
net.i2p.data.i2np: The Invisible Internet Network Protocol (I2NP) is only a part of how an application can send messages over the network.
net.i2p.internal: Interface and classes for a router and client within the same JVM to directly pass I2CP messages using Queues instead of serialized messages over socket streams.
net.i2p.router: The I2P router application handles the I2P network communication.
net.i2p.router.networkdb.kademlia

Uses of DataStructure in net.i2p.crypto

Classes in net.i2p.crypto that implement DataStructure
`class` `SHA1Hash` Because DSAEngine was abusing Hash for 20-byte hashes

Uses of DataStructure in net.i2p.data

Classes in net.i2p.data that implement DataStructure
`class` `Address` ???????? deprecated unused except by naming/FilesystemAddressDB, which is unused.
`class` `Certificate` Defines a certificate that can be attached to various I2P structures, such as RouterIdentity and Destination, allowing routers and clients to help manage denial of service attacks and the network utilization.
`class` `DatabaseEntry` Base implementation of common methods for the two data structures that are stored in the netDb, i.e.
`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 end point in the I2P network.
`class` `Hash` Defines the hash as defined by the I2P data structure spec.
`class` `KeysAndCert` KeysAndCert has a public key, a signing key, and a certificate.
`class` `Lease` Defines the proof that a particular router / tunnel is allowed to receive messages for a particular Destination during some period of time.
`class` `LeaseSet` Defines the set of leases a destination currently has.
`class` `Payload` Defines the actual payload of a message being delivered, including the standard encryption wrapping, as defined by the I2P data structure spec.
`class` `PrivateKey` Defines the PrivateKey as defined by the I2P data structure spec.
`class` `PublicKey` Defines the PublicKey as defined by the I2P data structure spec.
`class` `RouterAddress` Defines a method of communicating with a router
`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.
`class` `SessionKey` Defines the SessionKey as defined by the I2P data structure spec.
`class` `SessionTag` 32 bytes, usually of random data.
`class` `Signature` Defines the signature as defined by the I2P data structure spec.
`class` `SigningPrivateKey` Defines the SigningPrivateKey as defined by the I2P data structure spec.
`class` `SigningPublicKey` Defines the SigningPublicKey as defined by the I2P data structure spec.
`class` `SimpleDataStructure` A SimpleDataStructure contains only a single fixed-length byte array.
`class` `TunnelId` Defines the tunnel ID that messages are passed through on a set of routers.
`class` `VerifiedDestination` Extend Destination with methods to verify its Certificate.

Methods in net.i2p.data that return types with arguments of type DataStructure
`static List<? extends DataStructure>` `DataHelper.sortStructures(Collection<? extends DataStructure> dataStructures)` Sort based on the Hash of the DataStructure.

Method parameters in net.i2p.data with type arguments of type DataStructure
`static List<? extends DataStructure>` `DataHelper.sortStructures(Collection<? extends DataStructure> dataStructures)` Sort based on the Hash of the DataStructure.

Uses of DataStructure in net.i2p.data.i2cp

Subinterfaces of DataStructure in net.i2p.data.i2cp
`interface` `I2CPMessage` Defines the base functionality of API messages

Classes in net.i2p.data.i2cp that implement DataStructure
`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` `BandwidthLimitsMessage` Tell the other side the limits
`class` `CreateLeaseSetMessage` Defines the message a client sends to a router when authorizing the LeaseSet
`class` `CreateSessionMessage` Defines the message a client sends to a router when establishing a new session.
`class` `DestLookupMessage` Request the router look up the dest for a hash
`class` `DestReplyMessage` Response to DestLookupMessage.
`class` `DestroySessionMessage` Defines the message a client sends to a router when destroying existing session.
`class` `DisconnectMessage` Defines the message a client sends to a router when destroying existing session.
`class` `GetBandwidthLimitsMessage` Request the router tells us the current bw limits
`class` `GetDateMessage` Request the other side to send us what they think the current time is/ Only supported from client to router.
`class` `I2CPMessageImpl` Defines the base message implementation.
`class` `MessageId` Defines the message ID of a message delivered between a router and a client in a particular session.
`class` `MessagePayloadMessage` Defines the payload message a router sends to the client
`class` `MessageStatusMessage` Defines the message a client sends to a router when destroying existing session.
`class` `ReceiveMessageBeginMessage` Defines the message a client sends to a router when asking the router to start sending a message to it.
`class` `ReceiveMessageEndMessage` Defines the message a client sends to a router when asking the router to start sending a message to it.
`class` `ReconfigureSessionMessage` Defines the message a client sends to a router when updating the config on an existing session.
`class` `ReportAbuseMessage` Defines the message a client sends to a router when asking the router what its address visibility is
`class` `RequestLeaseSetMessage` Defines the message a client sends to a router when destroying existing session.
`class` `SendMessageExpiresMessage` Same as SendMessageMessage, but with an expiration to be passed to the router As of 0.8.4, retrofitted to use DateAndFlags.
`class` `SendMessageMessage` Defines the message a client sends to a router to ask it to deliver a new message
`class` `SessionConfig` Defines the information a client must provide to create a session
`class` `SessionId` Defines the token passed between the router and client to associate messages with a particular session.
`class` `SessionStatusMessage` Defines the message a client sends to a router when destroying existing session.
`class` `SetDateMessage` Tell the other side what time it is.

Uses of DataStructure in net.i2p.data.i2np

Subinterfaces of DataStructure in net.i2p.data.i2np
`interface` `I2NPMessage` Base interface for all I2NP messages

Classes in net.i2p.data.i2np that implement DataStructure
`class` `DatabaseLookupMessage` Defines the message a router sends to another router to search for a key in the network database.
`class` `DatabaseSearchReplyMessage` Defines the message a router sends to another router in response to a search (DatabaseFindNearest or DatabaseLookup) when it doesn't have the value, specifying what routers it would search.
`class` `DatabaseStoreMessage` Defines the message a router sends to another router to test the network database reachability, as well as the reply message sent back.
`class` `DataMessage` Defines a message containing arbitrary bytes of data
`class` `DeliveryInstructions` Contains the delivery instructions
`class` `DeliveryStatusMessage` Defines the message sent back in reply to a message when requested, containing the private ack id.
`class` `GarlicClove` Contains one deliverable message encrypted to a router along with instructions and a certificate 'paying for' the delivery.
`class` `GarlicMessage` Defines the wrapped garlic message
`class` `I2NPMessageImpl` Defines the base message implementation.
`class` `TunnelBuildMessage`
`class` `TunnelBuildReplyMessage` Transmitted from the new outbound endpoint to the creator through a reply tunnel
`class` `TunnelDataMessage` Defines the message sent between routers as part of the tunnel delivery
`class` `TunnelGatewayMessage` Defines the message sent between one tunnel's endpoint and another's gateway.
`class` `UnknownI2NPMessage` This is the same as DataMessage but with a variable message type.
`class` `VariableTunnelBuildMessage`
`class` `VariableTunnelBuildReplyMessage` Transmitted from the new outbound endpoint to the creator through a reply tunnel

Uses of DataStructure in net.i2p.internal

Classes in net.i2p.internal that implement DataStructure
`class` `PoisonI2CPMessage` For marking end-of-queues in a standard manner.

Uses of DataStructure in net.i2p.router

Classes in net.i2p.router that implement DataStructure
`class` `LeaseSetKeys` Wrap up the keys given to the router when a destination connects to it

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

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