public class SessionKeyManager extends Object
| Constructor and Description |
|---|
SessionKeyManager()
A dummy SessionKeyManager for testing or for passing to
ElGamalAESEngine.decrypt()
|
SessionKeyManager(I2PAppContext context)
A dummy SessionKeyManager for testing or for passing to
ElGamalAESEngine.decrypt()
|
| Modifier and Type | Method and Description |
|---|---|
SessionTag |
consumeNextAvailableTag(PublicKey target,
SessionKey key)
Retrieve the next available session tag for identifying the use of the given
key when communicating with the target.
|
SessionKey |
consumeTag(SessionTag tag)
Determine if we have received a session key associated with the given session tag,
and if so, discard it (but keep track for frequent dups) and return the decryption
key it was received with (via tagsReceived(...)).
|
SessionKey |
createSession(PublicKey target)
Generate a new session key and associate it with the specified target.
|
void |
createSession(PublicKey target,
SessionKey key)
Associate a new session key with the specified target.
|
void |
failTags(PublicKey target)
Mark all of the tags delivered to the target up to this point as invalid, since the peer
has failed to respond when they should have.
|
void |
failTags(PublicKey target,
SessionKey key,
TagSetHandle ts) |
int |
getAvailableTags(PublicKey target,
SessionKey key)
Determine (approximately) how many available session tags for the current target
have been confirmed and are available
|
long |
getAvailableTimeLeft(PublicKey target,
SessionKey key)
Determine how long the available tags will be available for before expiring, in
milliseconds
|
SessionKey |
getCurrentKey(PublicKey target)
Retrieve the session key currently associated with encryption to the target,
or null if a new session key should be generated.
|
SessionKey |
getCurrentOrNewKey(PublicKey target)
Retrieve the session key currently associated with encryption to the target.
|
int |
getLowThreshold()
Get the low threshold for tag sending.
|
int |
getTagsToSend()
Get the number of tags to send.
|
void |
renderStatusHTML(Writer out) |
boolean |
shouldSendTags(PublicKey target,
SessionKey key)
Determine if tags should be sent to the target.
|
boolean |
shouldSendTags(PublicKey target,
SessionKey key,
int lowThreshold)
Determine if tags should be sent to the target with the specified threshold.
|
void |
shutdown()
Called when the system is closing down, instructing the session key manager to take
whatever precautions are necessary (saving state, etc)
|
void |
tagsAcked(PublicKey target,
SessionKey key,
TagSetHandle ts) |
TagSetHandle |
tagsDelivered(PublicKey target,
SessionKey key,
Set<SessionTag> sessionTags)
Take note of the fact that the given sessionTags associated with the key for
encryption to the target have definitely been received at the target (aka call this
method after receiving an ack to a message delivering them)
|
void |
tagsReceived(SessionKey key,
Set<SessionTag> sessionTags)
Accept the given tags and associate them with the given key for decryption,
with the default expiration.
|
void |
tagsReceived(SessionKey key,
Set<SessionTag> sessionTags,
long expire)
Accept the given tags and associate them with the given key for decryption,
with specified expiration.
|
public SessionKeyManager()
public SessionKeyManager(I2PAppContext context)
context - unusedpublic SessionTag consumeNextAvailableTag(PublicKey target, SessionKey key)
public SessionKey consumeTag(SessionTag tag)
public SessionKey createSession(PublicKey target)
public void createSession(PublicKey target, SessionKey key)
public void failTags(PublicKey target)
public void failTags(PublicKey target, SessionKey key, TagSetHandle ts)
public int getAvailableTags(PublicKey target, SessionKey key)
public long getAvailableTimeLeft(PublicKey target, SessionKey key)
public SessionKey getCurrentKey(PublicKey target)
public SessionKey getCurrentOrNewKey(PublicKey target)
public int getLowThreshold()
public int getTagsToSend()
public void renderStatusHTML(Writer out) throws IOException
IOExceptionpublic boolean shouldSendTags(PublicKey target, SessionKey key)
target - the target public keykey - the session keypublic boolean shouldSendTags(PublicKey target, SessionKey key, int lowThreshold)
target - the target public keykey - the session keylowThreshold - the low thresholdpublic void shutdown()
public void tagsAcked(PublicKey target, SessionKey key, TagSetHandle ts)
public TagSetHandle tagsDelivered(PublicKey target, SessionKey key, Set<SessionTag> sessionTags)
public void tagsReceived(SessionKey key, Set<SessionTag> sessionTags)
public void tagsReceived(SessionKey key, Set<SessionTag> sessionTags, long expire)
sessionTags - modifiable; NOT copiedexpire - time from now