forked from I2P_Developers/i2p.i2p
DeliveryInstructions:
- Comment out unused encryption fields to save space - New static immutable LOCAL instruction to reduce object churn
This commit is contained in:
@@ -33,8 +33,8 @@ import net.i2p.data.TunnelId;
|
||||
*/
|
||||
public class DeliveryInstructions extends DataStructureImpl {
|
||||
//private final static Log _log = new Log(DeliveryInstructions.class);
|
||||
private boolean _encrypted;
|
||||
private SessionKey _encryptionKey;
|
||||
//private boolean _encrypted;
|
||||
//private SessionKey _encryptionKey;
|
||||
private int _deliveryMode;
|
||||
public final static int DELIVERY_MODE_LOCAL = 0;
|
||||
public final static int DELIVERY_MODE_DESTINATION = 1;
|
||||
@@ -56,6 +56,13 @@ public class DeliveryInstructions extends DataStructureImpl {
|
||||
private final static long FLAG_MODE = 96;
|
||||
private final static long FLAG_DELAY = 16;
|
||||
|
||||
/**
|
||||
* Immutable local instructions, no options
|
||||
*
|
||||
* @since 0.9.9
|
||||
*/
|
||||
public static final DeliveryInstructions LOCAL = new LocalInstructions();
|
||||
|
||||
public DeliveryInstructions() {
|
||||
_deliveryMode = -1;
|
||||
}
|
||||
@@ -64,25 +71,25 @@ public class DeliveryInstructions extends DataStructureImpl {
|
||||
* For cloves only (not tunnels), default false, unused
|
||||
* @deprecated unused
|
||||
*/
|
||||
public boolean getEncrypted() { return _encrypted; }
|
||||
public boolean getEncrypted() { return /* _encrypted */ false; }
|
||||
|
||||
/**
|
||||
* For cloves only (not tunnels), default false, unused
|
||||
* @deprecated unused
|
||||
*/
|
||||
public void setEncrypted(boolean encrypted) { _encrypted = encrypted; }
|
||||
public void setEncrypted(boolean encrypted) { /* _encrypted = encrypted; */ }
|
||||
|
||||
/**
|
||||
* For cloves only (not tunnels), default null, unused
|
||||
* @deprecated unused
|
||||
*/
|
||||
public SessionKey getEncryptionKey() { return _encryptionKey; }
|
||||
public SessionKey getEncryptionKey() { return /* _encryptionKey */ null; }
|
||||
|
||||
/**
|
||||
* For cloves only (not tunnels), default null, unused
|
||||
* @deprecated unused
|
||||
*/
|
||||
public void setEncryptionKey(SessionKey key) { _encryptionKey = key; }
|
||||
public void setEncryptionKey(SessionKey key) { /* _encryptionKey = key; */ }
|
||||
|
||||
/** default -1 */
|
||||
public int getDeliveryMode() { return _deliveryMode; }
|
||||
@@ -121,7 +128,7 @@ public class DeliveryInstructions extends DataStructureImpl {
|
||||
public void setDelayRequested(boolean req) { _delayRequested = req; }
|
||||
|
||||
/**
|
||||
* default 0, unusedx
|
||||
* default 0, unused
|
||||
* @deprecated unused
|
||||
*/
|
||||
public long getDelaySeconds() { return _delaySeconds; }
|
||||
@@ -252,20 +259,20 @@ public class DeliveryInstructions extends DataStructureImpl {
|
||||
* @deprecated unused
|
||||
*/
|
||||
/****
|
||||
private boolean flagEncrypted(long flags) {
|
||||
private static boolean flagEncrypted(long flags) {
|
||||
return (0 != (flags & FLAG_ENCRYPTED));
|
||||
}
|
||||
****/
|
||||
|
||||
/** high bits */
|
||||
private int flagMode(long flags) {
|
||||
private static int flagMode(long flags) {
|
||||
long v = flags & FLAG_MODE;
|
||||
v >>>= 5;
|
||||
return (int)v;
|
||||
}
|
||||
|
||||
/** unused */
|
||||
private boolean flagDelay(long flags) {
|
||||
private static boolean flagDelay(long flags) {
|
||||
return (0 != (flags & FLAG_DELAY));
|
||||
}
|
||||
|
||||
@@ -492,4 +499,90 @@ public class DeliveryInstructions extends DataStructureImpl {
|
||||
|
||||
return buf.toString();
|
||||
}
|
||||
|
||||
/**
|
||||
* An immutable local delivery instructions with no options
|
||||
* for efficiency.
|
||||
*
|
||||
* @since 0.9.9
|
||||
*/
|
||||
private static final class LocalInstructions extends DeliveryInstructions {
|
||||
//private static final byte flag = DELIVERY_MODE_LOCAL << 5; // 0
|
||||
|
||||
@Override
|
||||
public void setEncrypted(boolean encrypted) {
|
||||
throw new RuntimeException("immutable");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setEncryptionKey(SessionKey key) {
|
||||
throw new RuntimeException("immutable");
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getDeliveryMode() { return DELIVERY_MODE_LOCAL; }
|
||||
|
||||
@Override
|
||||
public void setDeliveryMode(int mode) {
|
||||
throw new RuntimeException("immutable");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setDestination(Hash dest) {
|
||||
throw new RuntimeException("immutable");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setRouter(Hash router) {
|
||||
throw new RuntimeException("immutable");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setTunnelId(TunnelId id) {
|
||||
throw new RuntimeException("immutable");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setDelayRequested(boolean req) {
|
||||
throw new RuntimeException("immutable");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setDelaySeconds(long seconds) {
|
||||
throw new RuntimeException("immutable");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void readBytes(InputStream in) throws DataFormatException, IOException {
|
||||
throw new RuntimeException("immutable");
|
||||
}
|
||||
|
||||
@Override
|
||||
public int readBytes(byte data[], int offset) throws DataFormatException {
|
||||
throw new RuntimeException("immutable");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void writeBytes(OutputStream out) throws DataFormatException, IOException {
|
||||
out.write((byte) 0);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int writeBytes(byte target[], int offset) {
|
||||
target[offset] = 0;
|
||||
return 1;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getSize() {
|
||||
return 1;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "[DeliveryInstructions: " +
|
||||
"\n\tDelivery mode: " +
|
||||
"local]";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -18,7 +18,7 @@ public class RouterVersion {
|
||||
/** deprecated */
|
||||
public final static String ID = "Monotone";
|
||||
public final static String VERSION = CoreVersion.VERSION;
|
||||
public final static long BUILD = 22;
|
||||
public final static long BUILD = 23;
|
||||
|
||||
/** for example "-test" */
|
||||
public final static String EXTRA = "";
|
||||
|
@@ -122,18 +122,8 @@ class OutboundClientMessageJobHelper {
|
||||
// and get the leaseset stored before handling the data
|
||||
config.addClove(dataClove);
|
||||
|
||||
DeliveryInstructions instructions = new DeliveryInstructions();
|
||||
instructions.setDeliveryMode(DeliveryInstructions.DELIVERY_MODE_LOCAL);
|
||||
// defaults
|
||||
//instructions.setDelayRequested(false);
|
||||
//instructions.setDelaySeconds(0);
|
||||
//instructions.setEncrypted(false);
|
||||
//instructions.setEncryptionKey(null);
|
||||
//instructions.setRouter(null);
|
||||
//instructions.setTunnelId(null);
|
||||
|
||||
config.setCertificate(Certificate.NULL_CERT);
|
||||
config.setDeliveryInstructions(instructions);
|
||||
config.setDeliveryInstructions(DeliveryInstructions.LOCAL);
|
||||
config.setId(ctx.random().nextLong(I2NPMessage.MAX_ID_VALUE));
|
||||
config.setExpiration(expiration); // +2*Router.CLOCK_FUDGE_FACTOR);
|
||||
config.setRecipientPublicKey(recipientPK);
|
||||
@@ -233,16 +223,8 @@ class OutboundClientMessageJobHelper {
|
||||
*/
|
||||
static PayloadGarlicConfig buildLeaseSetClove(RouterContext ctx, long expiration, LeaseSet replyLeaseSet) {
|
||||
PayloadGarlicConfig clove = new PayloadGarlicConfig();
|
||||
|
||||
DeliveryInstructions instructions = new DeliveryInstructions();
|
||||
instructions.setDeliveryMode(DeliveryInstructions.DELIVERY_MODE_LOCAL);
|
||||
// defaults
|
||||
//instructions.setDelayRequested(false);
|
||||
//instructions.setDelaySeconds(0);
|
||||
//instructions.setEncrypted(false);
|
||||
|
||||
clove.setCertificate(Certificate.NULL_CERT);
|
||||
clove.setDeliveryInstructions(instructions);
|
||||
clove.setDeliveryInstructions(DeliveryInstructions.LOCAL);
|
||||
clove.setExpiration(expiration);
|
||||
clove.setId(ctx.random().nextLong(I2NPMessage.MAX_ID_VALUE));
|
||||
DatabaseStoreMessage msg = new DatabaseStoreMessage(ctx);
|
||||
|
@@ -43,15 +43,12 @@ public class MessageWrapper {
|
||||
* @return null on encrypt failure
|
||||
*/
|
||||
static WrappedMessage wrap(RouterContext ctx, I2NPMessage m, Hash from, RouterInfo to) {
|
||||
DeliveryInstructions instructions = new DeliveryInstructions();
|
||||
instructions.setDeliveryMode(DeliveryInstructions.DELIVERY_MODE_LOCAL);
|
||||
|
||||
PayloadGarlicConfig payload = new PayloadGarlicConfig();
|
||||
payload.setCertificate(Certificate.NULL_CERT);
|
||||
payload.setId(ctx.random().nextLong(I2NPMessage.MAX_ID_VALUE));
|
||||
payload.setPayload(m);
|
||||
payload.setRecipient(to);
|
||||
payload.setDeliveryInstructions(instructions);
|
||||
payload.setDeliveryInstructions(DeliveryInstructions.LOCAL);
|
||||
payload.setExpiration(m.getMessageExpiration());
|
||||
|
||||
SessionKeyManager skm;
|
||||
@@ -127,15 +124,12 @@ public class MessageWrapper {
|
||||
* @since 0.9.5
|
||||
*/
|
||||
static GarlicMessage wrap(RouterContext ctx, I2NPMessage m, RouterInfo to) {
|
||||
DeliveryInstructions instructions = new DeliveryInstructions();
|
||||
instructions.setDeliveryMode(DeliveryInstructions.DELIVERY_MODE_LOCAL);
|
||||
|
||||
PayloadGarlicConfig payload = new PayloadGarlicConfig();
|
||||
payload.setCertificate(Certificate.NULL_CERT);
|
||||
payload.setId(ctx.random().nextLong(I2NPMessage.MAX_ID_VALUE));
|
||||
payload.setPayload(m);
|
||||
payload.setRecipient(to);
|
||||
payload.setDeliveryInstructions(instructions);
|
||||
payload.setDeliveryInstructions(DeliveryInstructions.LOCAL);
|
||||
payload.setExpiration(m.getMessageExpiration());
|
||||
|
||||
SessionKey sentKey = ctx.keyGenerator().generateSessionKey();
|
||||
@@ -215,14 +209,11 @@ public class MessageWrapper {
|
||||
* @since 0.9.7
|
||||
*/
|
||||
public static GarlicMessage wrap(RouterContext ctx, I2NPMessage m, SessionKey encryptKey, SessionTag encryptTag) {
|
||||
DeliveryInstructions instructions = new DeliveryInstructions();
|
||||
instructions.setDeliveryMode(DeliveryInstructions.DELIVERY_MODE_LOCAL);
|
||||
|
||||
PayloadGarlicConfig payload = new PayloadGarlicConfig();
|
||||
payload.setCertificate(Certificate.NULL_CERT);
|
||||
payload.setId(ctx.random().nextLong(I2NPMessage.MAX_ID_VALUE));
|
||||
payload.setPayload(m);
|
||||
payload.setDeliveryInstructions(instructions);
|
||||
payload.setDeliveryInstructions(DeliveryInstructions.LOCAL);
|
||||
payload.setExpiration(m.getMessageExpiration());
|
||||
|
||||
GarlicMessage msg = GarlicMessageBuilder.buildMessage(ctx, payload, null, null,
|
||||
|
@@ -115,15 +115,12 @@ class TestJob extends JobImpl {
|
||||
// can't tell its a test. to simplify this, we encrypt it with a random key and tag,
|
||||
// remembering that key+tag so that we can decrypt it later. this means we can do the
|
||||
// garlic encryption without any ElGamal (yay)
|
||||
DeliveryInstructions instructions = new DeliveryInstructions();
|
||||
instructions.setDeliveryMode(DeliveryInstructions.DELIVERY_MODE_LOCAL);
|
||||
|
||||
PayloadGarlicConfig payload = new PayloadGarlicConfig();
|
||||
payload.setCertificate(Certificate.NULL_CERT);
|
||||
payload.setId(getContext().random().nextLong(I2NPMessage.MAX_ID_VALUE));
|
||||
payload.setPayload(m);
|
||||
payload.setRecipient(getContext().router().getRouterInfo());
|
||||
payload.setDeliveryInstructions(instructions);
|
||||
payload.setDeliveryInstructions(DeliveryInstructions.LOCAL);
|
||||
payload.setExpiration(m.getMessageExpiration());
|
||||
|
||||
SessionKey encryptKey = getContext().keyGenerator().generateSessionKey();
|
||||
|
Reference in New Issue
Block a user