|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
public interface I2PSession
Define the standard means of sending and receiving messages on the
I2P network by using the I2CP (the client protocol). This is done over a
bidirectional TCP socket and never sends any private keys - all end to end
encryption is done transparently within the client's I2PSession
itself. Periodically the router will ask the client to authorize a new set of
tunnels to be allocated to the client, which the client can accept by sending a
LeaseSet
signed by the Destination
.
In addition, the router may on occation provide the client with an updated
clock offset so that the client can stay in sync with the network (even if
the host computer's clock is off).
Method Summary | |
---|---|
void |
connect()
Actually connect the session and start receiving/sending messages |
void |
destroySession()
Tear down the session and release any resources. |
PrivateKey |
getDecryptionKey()
Retrieve the decryption PrivateKey associated with the Destination |
Destination |
getMyDestination()
Retrieve the Destination this session serves as the endpoint for. |
SigningPrivateKey |
getPrivateKey()
Retrieve the signing SigningPrivateKey associated with the Destination |
boolean |
isClosed()
Have we closed the session? |
byte[] |
receiveMessage(int msgId)
Receive a message that the router has notified the client about, returning the payload. |
void |
reportAbuse(int msgId,
int severity)
Instruct the router that the message received was abusive (including how abusive on a 1-100 scale) in the hopes the router can do something to minimize receiving abusive messages like that in the future. |
boolean |
sendMessage(Destination dest,
byte[] payload)
Send a new message to the given destination, containing the specified payload, returning true if the router feels confident that the message was delivered. |
boolean |
sendMessage(Destination dest,
byte[] payload,
int offset,
int size)
|
boolean |
sendMessage(Destination dest,
byte[] payload,
int offset,
int size,
SessionKey keyUsed,
java.util.Set tagsSent)
|
boolean |
sendMessage(Destination dest,
byte[] payload,
SessionKey keyUsed,
java.util.Set tagsSent)
Like sendMessage above, except the key used and the tags sent are exposed to the application. |
void |
setSessionListener(I2PSessionListener lsnr)
Instruct the I2PSession where it should send event notifications |
Method Detail |
---|
boolean sendMessage(Destination dest, byte[] payload) throws I2PSessionException
dest
- location to send the messagepayload
- body of the message to be sent (unencrypted)
I2PSessionException
boolean sendMessage(Destination dest, byte[] payload, int offset, int size) throws I2PSessionException
I2PSessionException
boolean sendMessage(Destination dest, byte[] payload, SessionKey keyUsed, java.util.Set tagsSent) throws I2PSessionException
SessionKeyManager.getInstance().tagsDelivered(dest.getPublicKey(), keyUsed, tagsSent);If an application is using guaranteed delivery mode, this is not useful, but for applications using best effort delivery mode, if they can know with certainty that a message was delivered and can update the SessionKeyManager appropriately, a significant performance boost will occur (subsequent message encryption and decryption will be done via AES and a SessionTag, rather than ElGamal+AES, which is 1000x slower).
dest
- location to send the messagepayload
- body of the message to be sent (unencrypted)keyUsed
- session key delivered to the destination for association with the tags sent. This is essentially
an output parameter - keyUsed.getData() is ignored during this call, but after the call completes,
it will be filled with the bytes of the session key delivered. Typically the key delivered is the
same one as the key encrypted with, but not always. If this is null then the key data will not be
exposed.tagsSent
- set of tags delivered to the peer and associated with the keyUsed. This is also an output parameter -
the contents of the set is ignored during the call, but afterwards it contains a set of SessionTag
objects that were sent along side the given keyUsed.
I2PSessionException
boolean sendMessage(Destination dest, byte[] payload, int offset, int size, SessionKey keyUsed, java.util.Set tagsSent) throws I2PSessionException
I2PSessionException
byte[] receiveMessage(int msgId) throws I2PSessionException
msgId
- message to fetch
I2PSessionException
void reportAbuse(int msgId, int severity) throws I2PSessionException
msgId
- message that was abusive (or -1 for not message related)severity
- how abusive
I2PSessionException
void setSessionListener(I2PSessionListener lsnr)
lsnr
- listener to retrieve eventsvoid destroySession() throws I2PSessionException
I2PSessionException
void connect() throws I2PSessionException
I2PSessionException
boolean isClosed()
Destination getMyDestination()
PrivateKey getDecryptionKey()
SigningPrivateKey getPrivateKey()
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |