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
abstract class EstablishBase extends Object implements EstablishState
Inbound NTCP 2 only. OutboundNTCP2State does not extend this.- Since:
- 0.9.35 pulled out of EstablishState
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description protected static classEstablishBase.State
-
Field Summary
Fields Modifier and Type Field Description protected NTCPConnection_conprotected RouterContext_contextprotected byte[]_curDecrypteddecryption bufferprotected byte[]_e_bobSigprotected byte[]_e_hXY_tsBprotected byte[]_hX_xor_bobIdentHashprotected Log_logprotected long_peerSkewOUR clock minus HIS clock, in seconds Inbound: tsB - tsA - rtt/2 Outbound: tsA - tsB - rtt/2protected byte[]_prevEncryptedpreviously received encrypted block (or the IV)protected int_receivedbytes received so farprotected EstablishBase.State_stateprotected Object_stateLockprotected NTCPTransport_transportprotected long_tsAAlice's timestamp in seconds, this is in message #3, *after* _tsB Only saved for outbound.protected long_tsBBob's timestamp in seconds, this is in message #2, *before* _tsAprotected byte[]_Xprotected byte[]_Yprotected static intAES_SIZEstatic net.i2p.router.transport.ntcp.EstablishBase.FailedEstablishStateFAILEDprotected static intHXY_SIZEprotected static intHXY_TSB_PAD_SIZEprotected static intMAX_RI_SIZEprotected static intMIN_RI_SIZEprotected static Set<EstablishBase.State>STATES_DONEstatic net.i2p.router.transport.ntcp.EstablishBase.VerifiedEstablishStateVERIFIEDprotected static intXY_SIZE
-
Constructor Summary
Constructors Modifier Constructor Description protectedEstablishBase(RouterContext ctx, NTCPTransport transport, NTCPConnection con)
-
Method Summary
All Methods Static Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description protected static String_x(String s)Mark a string for extraction by xgettext and translation.protected voidchangeState(EstablishBase.State state)voidclose(String reason, Exception e)Release resources on timeout.protected voidfail(String reason)Caller must synch.protected voidfail(String reason, Exception e)Caller must synch.protected voidfail(String reason, Exception e, boolean bySkew)Caller must synch.abstract intgetVersion()Get the NTCP versionbooleanisComplete()If synchronized on this, fails with deadlocks from all over via CSFI.isEstablished().booleanisCorrupt()did the handshake fail for some reason?protected Stringprefix()voidprepareOutbound()Does nothing.voidreceive(ByteBuffer src)Parse the contents of the buffer as part of the handshake.protected voidreleaseBufs(boolean isVerified)Only call once.StringtoString()protected static voidxor32(byte[] a, byte[] b)XOR a into b.
-
-
-
Field Detail
-
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
protected final RouterContext _context
-
_log
protected final Log _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 _tsB
Bob's timestamp in seconds, this is in message #2, *before* _tsA
-
_tsA
protected transient long _tsA
Alice's timestamp in seconds, this is in message #3, *after* _tsB Only saved for outbound. For inbound, see verifyInbound().
-
_peerSkew
protected transient long _peerSkew
OUR 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[] _prevEncrypted
previously received encrypted block (or the IV)
-
_curDecrypted
protected final byte[] _curDecrypted
decryption buffer
-
_received
protected int _received
bytes received so far
-
_transport
protected final NTCPTransport _transport
-
_con
protected final NTCPConnection _con
-
MIN_RI_SIZE
protected static final int MIN_RI_SIZE
- See Also:
- Constant Field Values
-
MAX_RI_SIZE
protected static final int MAX_RI_SIZE
- See Also:
- Constant Field Values
-
AES_SIZE
protected static final int AES_SIZE
- See Also:
- Constant Field Values
-
XY_SIZE
protected static final int XY_SIZE
- See Also:
- Constant Field Values
-
HXY_SIZE
protected static final int HXY_SIZE
- See Also:
- Constant Field Values
-
HXY_TSB_PAD_SIZE
protected static final int HXY_TSB_PAD_SIZE
- See Also:
- Constant Field Values
-
_stateLock
protected final Object _stateLock
-
_state
protected volatile EstablishBase.State _state
-
STATES_DONE
protected static final Set<EstablishBase.State> STATES_DONE
-
-
Constructor Detail
-
EstablishBase
protected EstablishBase(RouterContext ctx, NTCPTransport transport, NTCPConnection con)
-
-
Method Detail
-
changeState
protected void changeState(EstablishBase.State state)
- Since:
- 0.9.16
-
receive
public void receive(ByteBuffer src)
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:
receivein 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:
prepareOutboundin interfaceEstablishState
-
isCorrupt
public boolean isCorrupt()
did the handshake fail for some reason?- Specified by:
isCorruptin interfaceEstablishState
-
isComplete
public boolean isComplete()
If synchronized on this, fails with deadlocks from all over via CSFI.isEstablished(). Also CSFI.getFramedAveragePeerClockSkew().- Specified by:
isCompletein interfaceEstablishState- Returns:
- is the handshake complete and valid?
-
getVersion
public abstract int getVersion()
Get the NTCP version- Specified by:
getVersionin interfaceEstablishState- Returns:
- 1, 2, or 0 if unknown
- Since:
- 0.9.35
-
close
public void close(String reason, Exception e)
Release resources on timeout.- Specified by:
closein interfaceEstablishState- Parameters:
e- may be null- Since:
- 0.9.16
-
fail
protected void fail(String reason)
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
protected String prefix()
-
-