Package | Description |
---|---|
net.i2p.client |
Interfaces and factories for
the base I2P SDK used to develop applications that communicate
through I2P.
|
net.i2p.client.impl |
Implements the base I2P SDK for developing applications that communicate
through I2P.
|
net.i2p.client.streaming.impl |
Implementation of a TCP-like (reliable, authenticated, in order) set of sockets for
communicating over the IP-like (unreliable, unauthenticated, unordered) I2P
messages.
|
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.i2np |
This package defines the low-level messages sent between routers,
called the Invisible Internet Network Protocol (I2NP).
|
net.i2p.router |
The I2P router application handles the I2P network communication.
|
net.i2p.router.crypto |
Classes formerly in net.i2p.crypto but moved here as they are only used by the router.
|
net.i2p.router.message |
Creates and parses garlic messages.
|
net.i2p.router.networkdb.kademlia |
The network database, including implementation of floodfills.
|
net.i2p.router.transport.crypto |
DH key generation.
|
net.i2p.router.transport.ntcp |
The NTCP transport allows passing I2P messages on top of TCP.
|
net.i2p.router.transport.udp |
The UDP transport (also known as 'SSU transport') allows passing I2P messages on top of UDP.
|
net.i2p.router.tunnel |
All the work of managing locally created and participating tunnels,
creating and handling tunnel messages, and their encryption.
|
Modifier and Type | Method and Description |
---|---|
boolean |
I2PSession.sendMessage(Destination dest,
byte[] payload,
int offset,
int size,
SessionKey keyUsed,
Set<SessionTag> tagsSent)
End-to-End Crypto is disabled, tags and keys are ignored.
|
boolean |
I2PSession.sendMessage(Destination dest,
byte[] payload,
int offset,
int size,
SessionKey keyUsed,
Set<SessionTag> tagsSent,
int proto,
int fromPort,
int toPort)
See I2PSessionMuxedImpl for proto/port details.
|
boolean |
I2PSession.sendMessage(Destination dest,
byte[] payload,
int offset,
int size,
SessionKey keyUsed,
Set<SessionTag> tagsSent,
long expire)
End-to-End Crypto is disabled, tags and keys are ignored.
|
boolean |
I2PSession.sendMessage(Destination dest,
byte[] payload,
int offset,
int size,
SessionKey keyUsed,
Set<SessionTag> tagsSent,
long expire,
int proto,
int fromPort,
int toPort)
See I2PSessionMuxedImpl for proto/port details.
|
boolean |
I2PSession.sendMessage(Destination dest,
byte[] payload,
int offset,
int size,
SessionKey keyUsed,
Set<SessionTag> tagsSent,
long expire,
int proto,
int fromPort,
int toPort,
int flags)
See I2PSessionMuxedImpl for proto/port details.
|
boolean |
I2PSession.sendMessage(Destination dest,
byte[] payload,
SessionKey keyUsed,
Set<SessionTag> tagsSent)
End-to-End Crypto is disabled, tags and keys are ignored!
Like sendMessage above, except the key used and the tags sent are exposed to the
application.
|
Modifier and Type | Method and Description |
---|---|
protected boolean |
I2PSessionImpl2.sendBestEffort(Destination dest,
byte[] payload,
SessionKey keyUsed,
Set<SessionTag> tagsSent,
long expires) |
boolean |
I2PSessionImpl2.sendMessage(Destination dest,
byte[] payload,
int offset,
int size,
SessionKey keyUsed,
Set<SessionTag> tagsSent) |
boolean |
I2PSessionImpl2.sendMessage(Destination dest,
byte[] payload,
int offset,
int size,
SessionKey keyUsed,
Set<SessionTag> tagsSent,
int proto,
int fromport,
int toport) |
boolean |
I2PSessionMuxedImpl.sendMessage(Destination dest,
byte[] payload,
int offset,
int size,
SessionKey keyUsed,
Set<SessionTag> tagsSent,
int proto,
int fromport,
int toport) |
boolean |
I2PSessionImpl2.sendMessage(Destination dest,
byte[] payload,
int offset,
int size,
SessionKey keyUsed,
Set<SessionTag> tagsSent,
long expires)
Unused? see MuxedImpl override
|
boolean |
I2PSessionMuxedImpl.sendMessage(Destination dest,
byte[] payload,
int offset,
int size,
SessionKey keyUsed,
Set<SessionTag> tagsSent,
long expires) |
boolean |
I2PSessionImpl2.sendMessage(Destination dest,
byte[] payload,
int offset,
int size,
SessionKey keyUsed,
Set<SessionTag> tagsSent,
long expire,
int proto,
int fromport,
int toport) |
boolean |
I2PSessionMuxedImpl.sendMessage(Destination dest,
byte[] payload,
int offset,
int size,
SessionKey keyUsed,
Set<SessionTag> tagsSent,
long expires,
int proto,
int fromPort,
int toPort) |
boolean |
I2PSessionImpl2.sendMessage(Destination dest,
byte[] payload,
int offset,
int size,
SessionKey keyUsed,
Set<SessionTag> tagsSent,
long expire,
int proto,
int fromport,
int toport,
int flags) |
boolean |
I2PSessionMuxedImpl.sendMessage(Destination dest,
byte[] payload,
int offset,
int size,
SessionKey keyUsed,
Set<SessionTag> tagsSent,
long expires,
int proto,
int fromPort,
int toPort,
int flags) |
boolean |
I2PSessionImpl2.sendMessage(Destination dest,
byte[] payload,
SessionKey keyUsed,
Set<SessionTag> tagsSent) |
void |
I2CPMessageProducer.sendMessage(I2PSessionImpl session,
Destination dest,
long nonce,
byte[] payload,
SessionTag tag,
SessionKey key,
Set<SessionTag> tags,
SessionKey newKey,
long expires)
Package up and send the payload to the router for delivery
|
Modifier and Type | Method and Description |
---|---|
SessionKey |
PacketLocal.getKeyUsed()
Deprecated.
should always return null
|
Modifier and Type | Method and Description |
---|---|
void |
PacketLocal.setKeyUsed(SessionKey key)
Deprecated.
I2PSession throws out the tags
|
Modifier and Type | Method and Description |
---|---|
SessionKey |
SessionKeyManager.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 |
SessionKeyManager.createSession(PublicKey target)
Generate a new session key and associate it with the specified target.
|
SessionKey |
KeyGenerator.generateSessionKey()
Generate a private 256 bit session key
|
SessionKey |
KeyGenerator.generateSessionKey(byte[] salt,
byte[] passphrase)
PBE the passphrase with the salt.
|
SessionKey |
SessionKeyManager.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 |
SessionKeyManager.getCurrentOrNewKey(PublicKey target)
Retrieve the session key currently associated with encryption to the target.
|
Modifier and Type | Method and Description |
---|---|
Hash |
HMACGenerator.calculate(SessionKey key,
byte[] data)
Deprecated.
unused (not even by Syndie)
|
Hash |
HMAC256Generator.calculate(SessionKey key,
byte[] data)
Deprecated.
unused (not even by Syndie)
|
void |
HMACGenerator.calculate(SessionKey key,
byte[] data,
int offset,
int length,
byte[] target,
int targetOffset)
Calculate the HMAC of the data with the given key
|
void |
HMAC256Generator.calculate(SessionKey key,
byte[] data,
int offset,
int length,
byte[] target,
int targetOffset)
Calculate the HMAC of the data with the given key.
|
SessionTag |
SessionKeyManager.consumeNextAvailableTag(PublicKey target,
SessionKey key)
Retrieve the next available session tag for identifying the use of the given
key when communicating with the target.
|
void |
SessionKeyManager.createSession(PublicKey target,
SessionKey key)
Associate a new session key with the specified target.
|
void |
CryptixAESEngine.decrypt(byte[] payload,
int payloadIndex,
byte[] out,
int outIndex,
SessionKey sessionKey,
byte[] iv,
int length) |
void |
AESEngine.decrypt(byte[] payload,
int payloadIndex,
byte[] out,
int outIndex,
SessionKey sessionKey,
byte[] iv,
int length)
Decrypt the data with the session key
|
void |
CryptixAESEngine.decrypt(byte[] payload,
int payloadIndex,
byte[] out,
int outIndex,
SessionKey sessionKey,
byte[] iv,
int ivOffset,
int length) |
void |
AESEngine.decrypt(byte[] payload,
int payloadIndex,
byte[] out,
int outIndex,
SessionKey sessionKey,
byte[] iv,
int ivOffset,
int length)
Decrypt the data with the session key.
|
(package private) byte[] |
ElGamalAESEngine.decryptAESBlock(byte[] encrypted,
int offset,
int encryptedLen,
SessionKey key,
byte[] iv,
byte[] sentTag,
Set<SessionTag> foundTags,
SessionKey foundKey)
private byte[] decryptAESBlock(byte encrypted[], SessionKey key, byte iv[],
byte sentTag[], Set foundTags, SessionKey foundKey) throws DataFormatException {
return decryptAESBlock(encrypted, 0, encrypted.length, key, iv, sentTag, foundTags, foundKey);
}
|
void |
CryptixAESEngine.decryptBlock(byte[] payload,
int inIndex,
SessionKey sessionKey,
byte[] rv,
int outIndex)
decrypt exactly 16 bytes of data with the session key provided
|
void |
AESEngine.decryptBlock(byte[] payload,
int inIndex,
SessionKey sessionKey,
byte[] rv,
int outIndex)
This just copies payload to rv, see extension for the real thing.
|
void |
CryptixAESEngine.encrypt(byte[] payload,
int payloadIndex,
byte[] out,
int outIndex,
SessionKey sessionKey,
byte[] iv,
int length) |
void |
AESEngine.encrypt(byte[] payload,
int payloadIndex,
byte[] out,
int outIndex,
SessionKey sessionKey,
byte[] iv,
int length)
Encrypt the payload with the session key
|
void |
CryptixAESEngine.encrypt(byte[] payload,
int payloadIndex,
byte[] out,
int outIndex,
SessionKey sessionKey,
byte[] iv,
int ivOffset,
int length) |
void |
AESEngine.encrypt(byte[] payload,
int payloadIndex,
byte[] out,
int outIndex,
SessionKey sessionKey,
byte[] iv,
int ivOffset,
int length)
Encrypt the payload with the session key.
|
byte[] |
ElGamalAESEngine.encrypt(byte[] data,
PublicKey target,
SessionKey key,
long paddedSize)
Deprecated.
unused
|
byte[] |
ElGamalAESEngine.encrypt(byte[] data,
PublicKey target,
SessionKey key,
Set<SessionTag> tagsForDelivery,
long paddedSize)
Deprecated.
unused
|
byte[] |
ElGamalAESEngine.encrypt(byte[] data,
PublicKey target,
SessionKey key,
Set<SessionTag> tagsForDelivery,
SessionTag currentTag,
long paddedSize)
Encrypt the data to the target using the given key and deliver the specified tags
No new session key
This is the one called from GarlicMessageBuilder and is the primary entry point.
|
byte[] |
ElGamalAESEngine.encrypt(byte[] data,
PublicKey target,
SessionKey key,
Set<SessionTag> tagsForDelivery,
SessionTag currentTag,
SessionKey newKey,
long paddedSize)
Encrypt the unencrypted data to the target.
|
(package private) byte[] |
ElGamalAESEngine.encryptAESBlock(byte[] data,
SessionKey key,
byte[] iv,
Set<SessionTag> tagsForDelivery,
SessionKey newKey,
long paddedSize)
For both scenarios, this method encrypts the AES area using the given key, iv
and making sure the resulting data is at least as long as the paddedSize and
also mod 16 bytes.
|
void |
CryptixAESEngine.encryptBlock(byte[] payload,
int inIndex,
SessionKey sessionKey,
byte[] out,
int outIndex)
encrypt exactly 16 bytes using the session key
|
void |
AESEngine.encryptBlock(byte[] payload,
int inIndex,
SessionKey sessionKey,
byte[] out,
int outIndex)
This just copies payload to out, see extension for the real thing.
|
void |
SessionKeyManager.failTags(PublicKey target,
SessionKey key,
TagSetHandle ts) |
int |
SessionKeyManager.getAvailableTags(PublicKey target,
SessionKey key)
Determine (approximately) how many available session tags for the current target
have been confirmed and are available
|
long |
SessionKeyManager.getAvailableTimeLeft(PublicKey target,
SessionKey key)
Determine how long the available tags will be available for before expiring, in
milliseconds
|
byte[] |
AESEngine.safeDecrypt(byte[] payload,
SessionKey sessionKey,
byte[] iv)
Deprecated.
unused
|
byte[] |
AESEngine.safeEncrypt(byte[] payload,
SessionKey sessionKey,
byte[] iv,
int paddedSize)
Deprecated.
unused
|
boolean |
SessionKeyManager.shouldSendTags(PublicKey target,
SessionKey key) |
boolean |
SessionKeyManager.shouldSendTags(PublicKey target,
SessionKey key,
int lowThreshold) |
void |
SessionKeyManager.tagsAcked(PublicKey target,
SessionKey key,
TagSetHandle ts) |
TagSetHandle |
SessionKeyManager.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 |
SessionKeyManager.tagsReceived(SessionKey key,
Set<SessionTag> sessionTags)
Accept the given tags and associate them with the given key for decryption,
with the default expiration.
|
void |
SessionKeyManager.tagsReceived(SessionKey key,
Set<SessionTag> sessionTags,
long expire)
Accept the given tags and associate them with the given key for decryption,
with specified expiration.
|
boolean |
HMACGenerator.verify(SessionKey key,
byte[] curData,
int curOffset,
int curLength,
byte[] origMAC,
int origMACOffset,
int origMACLength)
Verify the MAC inline, reducing some unnecessary memory churn.
|
boolean |
HMAC256Generator.verify(SessionKey key,
byte[] curData,
int curOffset,
int curLength,
byte[] origMAC,
int origMACOffset,
int origMACLength)
Verify the MAC inline, reducing some unnecessary memory churn.
|
Modifier and Type | Field and Description |
---|---|
static SessionKey |
SessionKey.INVALID_KEY
A key with all zeroes in the data
|
Modifier and Type | Method and Description |
---|---|
void |
LeaseSet.encrypt(SessionKey key)
Encrypt the gateway and tunnel ID of each lease, leaving the expire dates unchanged.
|
Modifier and Type | Method and Description |
---|---|
SessionKey |
DeliveryInstructions.getEncryptionKey()
Deprecated.
unused
|
SessionKey |
DatabaseLookupMessage.getReplyKey()
The included session key or null if unset
|
SessionKey |
BuildRequestRecord.readIVKey()
Tunnel IV encryption key that the current hop should use
|
SessionKey |
BuildRequestRecord.readLayerKey()
Tunnel layer encryption key that the current hop should use
|
SessionKey |
BuildRequestRecord.readReplyKey()
Session key that should be used to encrypt the reply
|
Modifier and Type | Method and Description |
---|---|
static EncryptedBuildRecord |
BuildResponseRecord.create(I2PAppContext ctx,
int status,
SessionKey replyKey,
byte[] replyIV,
long responseMessageId)
Create a new encrypted response
|
void |
DeliveryInstructions.setEncryptionKey(SessionKey key)
Deprecated.
unused
|
void |
DatabaseLookupMessage.setReplySession(SessionKey encryptKey,
SessionTag encryptTag)
Only worthwhile if sending reply via tunnel
|
Constructor and Description |
---|
BuildRequestRecord(I2PAppContext ctx,
long receiveTunnelId,
Hash peer,
long nextTunnelId,
Hash nextHop,
long nextMsgId,
SessionKey layerKey,
SessionKey ivKey,
SessionKey replyKey,
byte[] iv,
boolean isInGateway,
boolean isOutEndpoint)
Populate this instance with data.
|
Modifier and Type | Method and Description |
---|---|
SessionKey |
PersistentKeyRing.put(Hash h,
SessionKey sk) |
SessionKey |
PersistentKeyRing.remove(Hash h) |
Modifier and Type | Method and Description |
---|---|
SessionKey |
PersistentKeyRing.put(Hash h,
SessionKey sk) |
Modifier and Type | Method and Description |
---|---|
SessionKey |
TransientSessionKeyManager.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 |
TransientSessionKeyManager.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 |
TransientSessionKeyManager.getCurrentOrNewKey(PublicKey target)
Retrieve the session key currently associated with encryption to the target.
|
Modifier and Type | Method and Description |
---|---|
SessionTag |
TransientSessionKeyManager.consumeNextAvailableTag(PublicKey target,
SessionKey key)
Retrieve the next available session tag for identifying the use of the given
key when communicating with the target.
|
void |
TransientSessionKeyManager.createSession(PublicKey target,
SessionKey key)
Associate a new session key with the specified target.
|
void |
TransientSessionKeyManager.failTags(PublicKey target,
SessionKey key,
TagSetHandle ts)
Mark these tags as invalid, since the peer
has failed to ack them in time.
|
int |
TransientSessionKeyManager.getAvailableTags(PublicKey target,
SessionKey key)
Determine (approximately) how many available session tags for the current target
have been confirmed and are available
|
long |
TransientSessionKeyManager.getAvailableTimeLeft(PublicKey target,
SessionKey key)
Determine how long the available tags will be available for before expiring, in
milliseconds
|
boolean |
TransientSessionKeyManager.shouldSendTags(PublicKey target,
SessionKey key,
int lowThreshold) |
void |
TransientSessionKeyManager.tagsAcked(PublicKey target,
SessionKey key,
TagSetHandle ts)
Mark these tags as acked, start to use them (if we haven't already)
If the set was previously failed, it will be added back in.
|
TagSetHandle |
TransientSessionKeyManager.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 been sent.
|
void |
TransientSessionKeyManager.tagsReceived(SessionKey key,
Set<SessionTag> sessionTags)
Accept the given tags and associate them with the given key for decryption
|
void |
TransientSessionKeyManager.tagsReceived(SessionKey key,
Set<SessionTag> sessionTags,
long expire)
Accept the given tags and associate them with the given key for decryption
|
Modifier and Type | Method and Description |
---|---|
static GarlicMessage |
GarlicMessageBuilder.buildMessage(RouterContext ctx,
GarlicConfig config,
SessionKey wrappedKey,
Set<SessionTag> wrappedTags,
int numTagsToDeliver,
int lowTagsThreshold,
SessionKeyManager skm)
called by netdb and above
|
static GarlicMessage |
GarlicMessageBuilder.buildMessage(RouterContext ctx,
GarlicConfig config,
SessionKey wrappedKey,
Set<SessionTag> wrappedTags,
int numTagsToDeliver,
SessionKeyManager skm)
called by OCMJH
|
static GarlicMessage |
GarlicMessageBuilder.buildMessage(RouterContext ctx,
GarlicConfig config,
SessionKey wrappedKey,
Set<SessionTag> wrappedTags,
PublicKey target,
SessionKey encryptKey,
SessionTag encryptTag)
used by TestJob and directly above
and for encrypting DatabaseLookupMessages
|
static GarlicMessage |
GarlicMessageBuilder.buildMessage(RouterContext ctx,
GarlicConfig config,
SessionKey wrappedKey,
Set<SessionTag> wrappedTags,
SessionKeyManager skm)
Now unused, since we have to generate a reply token first in OCMOSJ but we don't know if tags are required yet.
|
(package private) static GarlicMessage |
OutboundClientMessageJobHelper.createGarlicMessage(RouterContext ctx,
long replyToken,
long expiration,
PublicKey recipientPK,
PayloadGarlicConfig dataClove,
Hash from,
Destination dest,
TunnelInfo replyTunnel,
int tagsToSendOverride,
int lowTagsOverride,
SessionKey wrappedKey,
Set<SessionTag> wrappedTags,
boolean requireAck,
LeaseSet bundledReplyLeaseSet)
Allow the app to specify the data clove directly, which enables OutboundClientMessage to resend the
same payload (including expiration and unique id) in different garlics (down different tunnels)
This is called from OCMOSJ
|
Modifier and Type | Field and Description |
---|---|
SessionKey |
MessageWrapper.OneTimeSession.key |
Modifier and Type | Method and Description |
---|---|
static GarlicMessage |
MessageWrapper.wrap(RouterContext ctx,
I2NPMessage m,
SessionKey encryptKey,
SessionTag encryptTag)
Garlic wrap a message from nobody, destined for an unknown router,
to hide the contents from the IBGW.
|
Constructor and Description |
---|
MessageWrapper.OneTimeSession(SessionKey key,
SessionTag tag) |
MessageWrapper.WrappedMessage(GarlicMessage msg,
SessionKeyManager skm,
PublicKey sentTo,
SessionKey sentKey,
TagSetHandle tsh) |
Modifier and Type | Method and Description |
---|---|
SessionKey |
DHSessionKeyBuilder.getSessionKey()
Retrieve the session key, calculating it if necessary (and if possible).
|
Modifier and Type | Method and Description |
---|---|
void |
NTCPConnection.finishInboundEstablishment(SessionKey key,
long clockSkew,
byte[] prevWriteEnd,
byte[] prevReadEnd)
We are Bob.
|
void |
NTCPConnection.finishOutboundEstablishment(SessionKey key,
long clockSkew,
byte[] prevWriteEnd,
byte[] prevReadEnd)
We are Alice.
|
Modifier and Type | Method and Description |
---|---|
SessionKey |
PeerTestState.getAliceIntroKey() |
SessionKey |
PeerTestState.getBobCipherKey() |
SessionKey |
PeerTestState.getBobMACKey() |
SessionKey |
PeerTestState.getCharlieIntroKey() |
SessionKey |
InboundEstablishState.getCipherKey() |
SessionKey |
OutboundEstablishState.getCipherKey() |
SessionKey |
PeerState.getCurrentCipherKey()
The AES key used to encrypt/decrypt packets, set only after the
connection is established.
|
SessionKey |
PeerState.getCurrentMACKey()
The AES key used to verify packets, set only after the connection is
established.
|
(package private) SessionKey |
UDPTransport.getIntroKey()
Introduction key that people should use to contact us
|
SessionKey |
OutboundEstablishState.getIntroKey()
Bob's introduction key, as published in the netdb
|
SessionKey |
InboundEstablishState.getMACKey() |
SessionKey |
OutboundEstablishState.getMACKey() |
SessionKey |
PeerState.getNextCipherKey()
The pending AES key for encrypting/decrypting packets if we are
rekeying the connection, or null if we are not in the process
of rekeying.
|
SessionKey |
PeerState.getNextMACKey()
The pending AES key for verifying packets if we are rekeying the
connection, or null if we are not in the process of rekeying.
|
Modifier and Type | Method and Description |
---|---|
UDPPacket |
PacketBuilder.buildPeerTestFromAlice(InetAddress toIP,
int toPort,
SessionKey toIntroKey,
long nonce,
SessionKey aliceIntroKey)
Build a packet as if we are Alice and we either want Bob to begin a
peer test or Charlie to finish a peer test.
|
UDPPacket |
PacketBuilder.buildPeerTestFromAlice(InetAddress toIP,
int toPort,
SessionKey toCipherKey,
SessionKey toMACKey,
long nonce,
SessionKey aliceIntroKey)
Build a packet as if we are Alice and we either want Bob to begin a
peer test or Charlie to finish a peer test.
|
UDPPacket |
PacketBuilder.buildPeerTestToAlice(InetAddress aliceIP,
int alicePort,
SessionKey aliceIntroKey,
SessionKey charlieIntroKey,
long nonce)
Build a packet as if we are either Bob or Charlie and we are helping test Alice.
|
UDPPacket |
PacketBuilder.buildPeerTestToBob(InetAddress bobIP,
int bobPort,
InetAddress aliceIP,
int alicePort,
SessionKey aliceIntroKey,
long nonce,
SessionKey bobCipherKey,
SessionKey bobMACKey)
Build a packet as if we are Charlie sending Bob a packet verifying that we will help test Alice.
|
UDPPacket |
PacketBuilder.buildPeerTestToCharlie(InetAddress aliceIP,
int alicePort,
SessionKey aliceIntroKey,
long nonce,
InetAddress charlieIP,
int charliePort,
SessionKey charlieCipherKey,
SessionKey charlieMACKey)
Build a packet as if we are Bob sending Charlie a packet to help test Alice.
|
List<UDPPacket> |
PacketBuilder.buildRelayRequest(UDPTransport transport,
OutboundEstablishState state,
SessionKey ourIntroKey)
build intro packets for each of the published introducers
|
(package private) UDPPacket |
PacketBuilder.buildRelayResponse(RemoteHostId alice,
PeerState charlie,
long nonce,
SessionKey cipherKey,
SessionKey macKey) |
UDPPacket |
PacketBuilder.buildSessionCreatedPacket(InboundEstablishState state,
int externalPort,
SessionKey ourIntroKey)
Build a new SessionCreated packet for the given peer, encrypting it
as necessary.
|
void |
UDPPacket.decrypt(SessionKey cipherKey)
Decrypt this valid packet, overwriting the _data buffer's payload
with the decrypted data (leaving the MAC and IV unaltered)
|
void |
PeerTestManager.runTest(InetAddress bobIP,
int bobPort,
SessionKey bobCipherKey,
SessionKey bobMACKey)
The next few methods are for when we are Alice
|
void |
PeerTestState.setAliceIntroKey(SessionKey key) |
void |
PeerTestState.setBobCipherKey(SessionKey key) |
void |
PeerTestState.setBobMACKey(SessionKey key) |
void |
PeerTestState.setCharlieIntroKey(SessionKey key) |
void |
PeerState.setCurrentCipherKey(SessionKey key)
The AES key used to encrypt/decrypt packets, set only after the
connection is established.
|
void |
PeerState.setCurrentMACKey(SessionKey key)
The AES key used to verify packets, set only after the connection is
established.
|
void |
PeerState.setNextCipherKey(SessionKey key)
Deprecated.
unused
|
void |
PeerState.setNextMACKey(SessionKey key)
Deprecated.
unused
|
boolean |
UDPPacket.validate(SessionKey macKey)
Validate the packet against the MAC specified, returning true if the
MAC matches, false otherwise.
|
Constructor and Description |
---|
OutboundEstablishState(RouterContext ctx,
RemoteHostId claimedAddress,
RemoteHostId remoteHostId,
RouterIdentity remotePeer,
boolean allowExtendedOptions,
boolean needIntroduction,
SessionKey introKey,
UDPAddress addr,
DHSessionKeyBuilder.Factory dh) |
Modifier and Type | Method and Description |
---|---|
SessionKey |
HopConfig.getIVKey()
what key should we use to encrypt the preIV before passing it on?
|
SessionKey |
HopConfig.getLayerKey()
what key should we use to encrypt the layer before passing it on?
|
SessionKey |
HopConfig.getReplyKey()
key to encrypt the reply sent for the new tunnel creation crypto
|
Modifier and Type | Method and Description |
---|---|
void |
HopConfig.setIVKey(SessionKey key) |
void |
HopConfig.setLayerKey(SessionKey key) |
void |
HopConfig.setReplyKey(SessionKey key) |