net.i2p.router.tunnel
Class HopProcessor
java.lang.Object
net.i2p.router.tunnel.HopProcessor
- Direct Known Subclasses:
- InboundGatewayProcessor
public class HopProcessor
- extends java.lang.Object
Take a received tunnel message, verify that it isn't a
duplicate, and translate it into what the next hop will
want. The hop processor works the same on all peers -
inbound and outbound participants, outbound endpoints,
and inbound gateways (with a small modification per
InbuondGatewayProcessor).
Method Summary |
protected static IVValidator |
createValidator()
|
boolean |
process(byte[] orig,
int offset,
int length,
Hash prev)
Process the data for the current hop, overwriting the original data with
what should be sent to the next peer. |
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
_context
protected I2PAppContext _context
_config
protected HopConfig _config
USE_ENCRYPTION
static final boolean USE_ENCRYPTION
- helpful flag for debugging
- See Also:
- Constant Field Values
USE_DOUBLE_IV_ENCRYPTION
static final boolean USE_DOUBLE_IV_ENCRYPTION
- as of i2p 0.6, the tunnel crypto will change by encrypting the IV both before
and after using it at each hop so as to prevent a certain type of replay/confirmation
attack.
- See Also:
- Constant Field Values
IV_LENGTH
static final int IV_LENGTH
- See Also:
- Constant Field Values
HopProcessor
public HopProcessor(I2PAppContext ctx,
HopConfig config)
HopProcessor
public HopProcessor(I2PAppContext ctx,
HopConfig config,
IVValidator validator)
createValidator
protected static IVValidator createValidator()
process
public boolean process(byte[] orig,
int offset,
int length,
Hash prev)
- Process the data for the current hop, overwriting the original data with
what should be sent to the next peer. This also validates the previous
peer and the IV, making sure its not a repeat and not a loop.
- Parameters:
orig
- IV+data of the messageoffset
- index into orig where the IV beginslength
- how long after the offset does the message go for?prev
- previous hop in the tunnel, or null if we are the gateway
- Returns:
- true if the message was updated and valid, false if it was not.