## Package net.i2p.data.i2np

Interface Summary
I2NPMessage: Base interface for all I2NP messages
I2NPMessageImpl.Builder: interface for extending the types of messages handled
I2NPMessageReader.I2NPMessageEventListener: Defines the different events the reader produces while reading the stream

Class Summary
BuildRequestRecord: Hold the tunnel request record, managing its encryption and decryption.
BuildResponseRecord: Read and write the reply to a tunnel build message record.
DatabaseLookupMessage: Defines the message a router sends to another router to search for a key in the network database.
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.
DatabaseStoreMessage: Defines the message a router sends to another router to test the network database reachability, as well as the reply message sent back.
DataMessage: Defines a message containing arbitrary bytes of data
DateMessage: Contains the sending router's current time, to sync (and verify sync)
DeliveryInstructions: Contains the delivery instructions
DeliveryStatusMessage: Defines the message sent back in reply to a message when requested, containing the private ack id.
EndPointPrivateKey: Contains the private key which matches the EndPointPublicKey which, in turn, is published on the LeaseSet and used to encrypt messages to the router to which a Destination is currently connected.
EndPointPublicKey: Contains the public key which matches the EndPointPrivateKey.
GarlicClove: Contains one deliverable message encrypted to a router along with instructions and a certificate 'paying for' the delivery.
GarlicMessage: Defines the wrapped garlic message
I2NPMessageHandler: Handle messages from router to router.
I2NPMessageImpl: Defines the base message implementation.
I2NPMessageReader: The I2NPMessageReader reads an InputStream (using `I2NPMessageHandler`) and passes out events to a registered listener, where events are either messages being received, exceptions being thrown, or the connection being closed.
TunnelBuildMessage
TunnelBuildReplyMessage: Transmitted from the new outbound endpoint to the creator through a reply tunnel
TunnelCreateMessage: Defines the message sent to a router to request that it participate in a tunnel using the included configuration settings.
TunnelCreateStatusMessage: Defines the message a router sends to another router in reply to a TunnelCreateMessage
TunnelDataMessage: Defines the message sent between routers as part of the tunnel delivery
TunnelGatewayMessage: Defines the message sent between one tunnel's endpoint and another's gateway.
TunnelSessionKey: Contains the session key used by the tunnel gateway to encrypt the DeliveryInstructions and used by the tunnel end point to decrypt those instructions.
TunnelSigningPrivateKey: Contains the private key which constructs a signature for the TunnelMessage which every participant in a tunnel uses to verify the TunnelVerificationStructure with.
TunnelSigningPublicKey: Contains the public key which every participant in a tunnel uses to verify the TunnelVerificationStructure for TunnelMessages that pass by.
TunnelVerificationStructure

Exception Summary
I2NPMessageException: Represent an error serializing or deserializing an APIMessage