|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
java.lang.Objectnet.i2p.router.transport.ntcp.EstablishState
class EstablishState
Handle the 4-phase establishment, which is as follows:
Alice contacts Bob
=========================================================
Message 1 (Session Request):
X+(H(X) xor Bob.identHash)----------------------------->
Message 2 (Session Created):
<----------------------------------------Y+E(H(X+Y)+tsB, sk, Y[239:255])
Message 3 (Session Confirm A):
E(sz+Alice.identity+tsA+padding+S(X+Y+Bob.identHash+tsA+tsB), sk, hX_xor_Bob.identHash[16:31])--->
Message 4 (Session Confirm B):
<----------------------E(S(X+Y+Alice.identHash+tsA+tsB)+padding, sk, prev)
Key:
X, Y: 256 byte DH keys
H(): 32 byte SHA256 Hash
E(data, session key, IV): AES256 Encrypt
S(): 40 byte DSA Signature
tsA, tsB: timestamps (4 bytes, seconds since epoch)
sk: 32 byte Session key
sz: 2 byte size of Alice identity to follow
Alternately, when Bob receives a connection, it could be a
check connection (perhaps prompted by Bob asking for someone
to verify his listener). check connections are formatted per
isCheckInfo()
NOTE: Check info is unused.
| Constructor Summary | |
|---|---|
EstablishState(RouterContext ctx,
NTCPTransport transport,
NTCPConnection con)
|
|
| Method Summary | |
|---|---|
boolean |
confirmWritten()
we have written all of the data required to confirm the connection establishment |
String |
getError()
|
Exception |
getException()
|
byte[] |
getExtraBytes()
if complete, this will contain any bytes received as part of the handshake that were after the actual handshake. |
boolean |
getFailedBySkew()
|
boolean |
isComplete()
|
boolean |
isCorrupt()
did the handshake fail for some reason? |
void |
prepareOutbound()
We are Alice. |
void |
receive(ByteBuffer src)
parse the contents of the buffer as part of the handshake. |
String |
toString()
|
| Methods inherited from class java.lang.Object |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
| Constructor Detail |
|---|
public EstablishState(RouterContext ctx,
NTCPTransport transport,
NTCPConnection con)
| Method Detail |
|---|
public void receive(ByteBuffer src)
public boolean confirmWritten()
public boolean getFailedBySkew()
public boolean isCorrupt()
public boolean isComplete()
public void prepareOutbound()
public byte[] getExtraBytes()
public String getError()
public Exception getException()
public String toString()
toString in class Object
|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||