Package net.i2p.router.transport.ntcp
Class EstablishBase
java.lang.Object
net.i2p.router.transport.ntcp.EstablishBase
- All Implemented Interfaces:
EstablishState
- Direct Known Subclasses:
InboundEstablishState
Inbound NTCP 2 only.
OutboundNTCP2State does not extend this.
- Since:
- 0.9.35 pulled out of EstablishState
-
Nested Class Summary
-
Field Summary
Modifier and TypeFieldDescriptionprotected final NTCPConnection
protected final RouterContext
protected final byte[]
decryption bufferprotected byte[]
protected final byte[]
protected final byte[]
protected final Log
protected long
OUR clock minus HIS clock, in seconds Inbound: tsB - tsA - rtt/2 Outbound: tsA - tsB - rtt/2protected byte[]
previously received encrypted block (or the IV)protected int
bytes received so farprotected EstablishBase.State
protected final Object
protected final NTCPTransport
protected long
Alice's timestamp in seconds, this is in message #3, *after* _tsB Only saved for outbound.protected long
Bob's timestamp in seconds, this is in message #2, *before* _tsAprotected final byte[]
protected final byte[]
protected static final int
static final net.i2p.router.transport.ntcp.EstablishBase.FailedEstablishState
protected static final int
protected static final int
protected static final int
protected static final int
protected static final Set<EstablishBase.State>
static final net.i2p.router.transport.ntcp.EstablishBase.VerifiedEstablishState
protected static final int
-
Constructor Summary
ModifierConstructorDescriptionprotected
EstablishBase
(RouterContext ctx, NTCPTransport transport, NTCPConnection con) -
Method Summary
Modifier and TypeMethodDescriptionprotected static final String
Mark a string for extraction by xgettext and translation.protected void
changeState
(EstablishBase.State state) void
Release resources on timeout.protected void
Caller must synch.protected void
Caller must synch.protected void
Caller must synch.abstract int
Get the NTCP versionboolean
If synchronized on this, fails with deadlocks from all over via CSFI.isEstablished().boolean
did the handshake fail for some reason?protected String
prefix()
void
Does nothing.void
receive
(ByteBuffer src) Parse the contents of the buffer as part of the handshake.protected void
releaseBufs
(boolean isVerified) Only call once.toString()
protected static void
xor32
(byte[] a, byte[] b) XOR a into b.
-
Field Details
-
VERIFIED
public static final net.i2p.router.transport.ntcp.EstablishBase.VerifiedEstablishState VERIFIED -
FAILED
public static final net.i2p.router.transport.ntcp.EstablishBase.FailedEstablishState FAILED -
_context
-
_log
-
_X
protected final byte[] _X -
_hX_xor_bobIdentHash
protected final byte[] _hX_xor_bobIdentHash -
_Y
protected final byte[] _Y -
_e_hXY_tsB
protected final byte[] _e_hXY_tsB -
_tsB
protected transient long _tsBBob's timestamp in seconds, this is in message #2, *before* _tsA -
_tsA
protected transient long _tsAAlice's timestamp in seconds, this is in message #3, *after* _tsB Only saved for outbound. For inbound, see verifyInbound(). -
_peerSkew
protected transient long _peerSkewOUR clock minus HIS clock, in seconds Inbound: tsB - tsA - rtt/2 Outbound: tsA - tsB - rtt/2 -
_e_bobSig
protected transient byte[] _e_bobSig -
_prevEncrypted
protected byte[] _prevEncryptedpreviously received encrypted block (or the IV) -
_curDecrypted
protected final byte[] _curDecrypteddecryption buffer -
_received
protected int _receivedbytes received so far -
_transport
-
_con
-
MIN_RI_SIZE
protected static final int MIN_RI_SIZE- See Also:
-
MAX_RI_SIZE
protected static final int MAX_RI_SIZE- See Also:
-
AES_SIZE
protected static final int AES_SIZE- See Also:
-
XY_SIZE
protected static final int XY_SIZE- See Also:
-
HXY_SIZE
protected static final int HXY_SIZE- See Also:
-
HXY_TSB_PAD_SIZE
protected static final int HXY_TSB_PAD_SIZE- See Also:
-
_stateLock
-
_state
-
STATES_DONE
-
-
Constructor Details
-
EstablishBase
-
-
Method Details
-
changeState
- Since:
- 0.9.16
-
receive
Parse the contents of the buffer as part of the handshake. All data must be copied out of the buffer as Reader.processRead() will return it to the pool. If there are additional data in the buffer after the handshake is complete, the EstablishState is responsible for passing it to NTCPConnection.- Specified by:
receive
in interfaceEstablishState
-
prepareOutbound
public void prepareOutbound()Does nothing. Outbound (Alice) must override. We are establishing an outbound connection, so prepare ourselves by queueing up the write of the first part of the handshake- Specified by:
prepareOutbound
in interfaceEstablishState
-
isCorrupt
public boolean isCorrupt()did the handshake fail for some reason?- Specified by:
isCorrupt
in interfaceEstablishState
-
isComplete
public boolean isComplete()If synchronized on this, fails with deadlocks from all over via CSFI.isEstablished(). Also CSFI.getFramedAveragePeerClockSkew().- Specified by:
isComplete
in interfaceEstablishState
- Returns:
- is the handshake complete and valid?
-
getVersion
public abstract int getVersion()Get the NTCP version- Specified by:
getVersion
in interfaceEstablishState
- Returns:
- 1, 2, or 0 if unknown
- Since:
- 0.9.35
-
close
Release resources on timeout.- Specified by:
close
in interfaceEstablishState
- Parameters:
e
- may be null- Since:
- 0.9.16
-
fail
Caller must synch. -
fail
Caller must synch. -
fail
Caller must synch. -
releaseBufs
protected void releaseBufs(boolean isVerified) Only call once. Caller must synch.- Since:
- 0.9.16
-
xor32
protected static void xor32(byte[] a, byte[] b) XOR a into b. Modifies b. a is unmodified.- Parameters:
a
- 32 bytesb
- 32 bytes- Since:
- 0.9.12
-
prefix
-
toString
-
_x
Mark a string for extraction by xgettext and translation. Use this only in static initializers. It does not translate!- Returns:
- s
-