i2ptunnel: Set default sig type to ECDSA P256 for client tunnel

types Standard, IRC, and Socks IRC, if non-shared.
This commit is contained in:
zzz
2014-10-13 16:46:58 +00:00
parent cd51fbc2a6
commit d2c6a80d24
7 changed files with 65 additions and 27 deletions

View File

@ -71,6 +71,7 @@ public class TunnelController implements Logging {
private static final String OPT_BUNDLE_REPLY = PFX_OPTION + "shouldBundleReplyInfo"; private static final String OPT_BUNDLE_REPLY = PFX_OPTION + "shouldBundleReplyInfo";
private static final String OPT_TAGS_SEND = PFX_OPTION + "crypto.tagsToSend"; private static final String OPT_TAGS_SEND = PFX_OPTION + "crypto.tagsToSend";
private static final String OPT_LOW_TAGS = PFX_OPTION + "crypto.lowTagThreshold"; private static final String OPT_LOW_TAGS = PFX_OPTION + "crypto.lowTagThreshold";
private static final String OPT_SIG_TYPE = PFX_OPTION + I2PClient.PROP_SIGTYPE;
/** all of these @since 0.9.14 */ /** all of these @since 0.9.14 */
public static final String TYPE_CONNECT = "connectclient"; public static final String TYPE_CONNECT = "connectclient";
@ -145,13 +146,13 @@ public class TunnelController implements Logging {
try { try {
fos = new SecureFileOutputStream(keyFile); fos = new SecureFileOutputStream(keyFile);
SigType stype = I2PClient.DEFAULT_SIGTYPE; SigType stype = I2PClient.DEFAULT_SIGTYPE;
String st = _config.getProperty(PFX_OPTION + I2PClient.PROP_SIGTYPE); String st = _config.getProperty(OPT_SIG_TYPE);
if (st != null) { if (st != null) {
SigType type = SigType.parseSigType(st); SigType type = SigType.parseSigType(st);
if (type != null) if (type != null)
stype = type; stype = type;
else else
log("Unsupported sig type " + st); log("Unsupported sig type " + st + ", reverting to " + stype);
} }
Destination dest = client.createDestination(fos, stype); Destination dest = client.createDestination(fos, stype);
String destStr = dest.toBase64(); String destStr = dest.toBase64();
@ -584,6 +585,13 @@ public class TunnelController implements Logging {
if (!_config.containsKey(OPT_LOW_TAGS)) if (!_config.containsKey(OPT_LOW_TAGS))
_config.setProperty(OPT_LOW_TAGS, "14"); _config.setProperty(OPT_LOW_TAGS, "14");
} }
// same default logic as in EditBean.getSigType()
if ((type.equals(TYPE_IRC_CLIENT) || type.equals(TYPE_STD_CLIENT) || type.equals(TYPE_SOCKS_IRC))
&& !Boolean.valueOf(getSharedClient())) {
if (!_config.containsKey(OPT_SIG_TYPE) &&
SigType.ECDSA_SHA256_P256.isAvailable())
_config.setProperty(OPT_SIG_TYPE, "ECDSA_SHA256_P256");
}
} }
// tell i2ptunnel, who will tell the TunnelTask, who will tell the SocketManager // tell i2ptunnel, who will tell the TunnelTask, who will tell the SocketManager

View File

@ -181,14 +181,35 @@ public class EditBean extends IndexBean {
return getBooleanProperty(tunnel, "i2cp.encryptLeaseSet"); return getBooleanProperty(tunnel, "i2cp.encryptLeaseSet");
} }
/** @since 0.9.12 */ /**
public int getSigType(int tunnel) { * @param newTunnelType used if tunnel < 0
String stype = getProperty(tunnel, I2PClient.PROP_SIGTYPE, "0"); * @since 0.9.12
if (stype.equals("0")) */
return 0; public int getSigType(int tunnel, String newTunnelType) {
SigType type = SigType.parseSigType(stype); SigType type;
if (type == null) String ttype;
return 0; boolean isShared;
if (tunnel >= 0) {
String stype = getProperty(tunnel, I2PClient.PROP_SIGTYPE, null);
type = stype != null ? SigType.parseSigType(stype) : null;
ttype = getTunnelType(tunnel);
isShared = isSharedClient(tunnel);
} else {
type = null;
ttype = newTunnelType;
isShared = false;
}
if (type == null) {
// same default logic as in TunnelController.setConfig()
if ((TunnelController.TYPE_IRC_CLIENT.equals(ttype) ||
TunnelController.TYPE_SOCKS_IRC.equals(ttype) ||
TunnelController.TYPE_STD_CLIENT.equals(ttype)) &&
!isShared &&
SigType.ECDSA_SHA256_P256.isAvailable())
type = SigType.ECDSA_SHA256_P256;
else
type = SigType.DSA_SHA1;
}
return type.getCode(); return type.getCode();
} }

View File

@ -44,8 +44,8 @@ input.default { width: 1px; height: 1px; visibility: hidden; }
<div id="tunnelEditPanel" class="panel"> <div id="tunnelEditPanel" class="panel">
<div class="header"> <div class="header">
<% <%
String tunnelTypeName = ""; String tunnelTypeName;
String tunnelType = ""; String tunnelType;
if (curTunnel >= 0) { if (curTunnel >= 0) {
tunnelTypeName = editBean.getTunnelType(curTunnel); tunnelTypeName = editBean.getTunnelType(curTunnel);
tunnelType = editBean.getInternalType(curTunnel); tunnelType = editBean.getInternalType(curTunnel);
@ -491,7 +491,9 @@ input.default { width: 1px; height: 1px; visibility: hidden; }
</div> </div>
<% } // if httpclient %> <% } // if httpclient %>
<% if (true /* editBean.isAdvanced() */ ) { %> <% if (true /* editBean.isAdvanced() */ ) {
int currentSigType = editBean.getSigType(curTunnel, tunnelType);
%>
<div id="tunnelOptionsField" class="rowItem"> <div id="tunnelOptionsField" class="rowItem">
<label> <label>
<%=intl._("Signature type")%> <%=intl._("Signature type")%>
@ -501,30 +503,30 @@ input.default { width: 1px; height: 1px; visibility: hidden; }
<div id="hostField" class="rowItem"> <div id="hostField" class="rowItem">
<div id="portField" class="rowItem"> <div id="portField" class="rowItem">
<label>DSA-SHA1</label> <label>DSA-SHA1</label>
<input value="0" type="radio" id="startOnLoad" name="sigType" title="Default"<%=(editBean.getSigType(curTunnel)==0 ? " checked=\"checked\"" : "")%> class="tickbox" /> <input value="0" type="radio" id="startOnLoad" name="sigType" title="Default"<%=(currentSigType==0 ? " checked=\"checked\"" : "")%> class="tickbox" />
</div> </div>
<% if (editBean.isSigTypeAvailable(1)) { %> <% if (editBean.isSigTypeAvailable(1)) { %>
<div id="portField" class="rowItem"> <div id="portField" class="rowItem">
<label>ECDSA-P256</label> <label>ECDSA-P256</label>
<input value="1" type="radio" id="startOnLoad" name="sigType" title="Advanced users only"<%=(editBean.getSigType(curTunnel)==1 ? " checked=\"checked\"" : "")%> class="tickbox" /> <input value="1" type="radio" id="startOnLoad" name="sigType" title="Advanced users only"<%=(currentSigType==1 ? " checked=\"checked\"" : "")%> class="tickbox" />
</div> </div>
<% } <% }
if (editBean.isSigTypeAvailable(2)) { %> if (editBean.isSigTypeAvailable(2)) { %>
<div id="portField" class="rowItem"> <div id="portField" class="rowItem">
<label>ECDSA-P384</label> <label>ECDSA-P384</label>
<input value="2" type="radio" id="startOnLoad" name="sigType" title="Advanced users only"<%=(editBean.getSigType(curTunnel)==2 ? " checked=\"checked\"" : "")%> class="tickbox" /> <input value="2" type="radio" id="startOnLoad" name="sigType" title="Advanced users only"<%=(currentSigType==2 ? " checked=\"checked\"" : "")%> class="tickbox" />
</div> </div>
<% } <% }
if (editBean.isSigTypeAvailable(3)) { %> if (editBean.isSigTypeAvailable(3)) { %>
<div id="portField" class="rowItem"> <div id="portField" class="rowItem">
<label>ECDSA-P521</label> <label>ECDSA-P521</label>
<input value="3" type="radio" id="startOnLoad" name="sigType" title="Advanced users only"<%=(editBean.getSigType(curTunnel)==3 ? " checked=\"checked\"" : "")%> class="tickbox" /> <input value="3" type="radio" id="startOnLoad" name="sigType" title="Advanced users only"<%=(currentSigType==3 ? " checked=\"checked\"" : "")%> class="tickbox" />
</div> </div>
<% } <% }
if (editBean.isSigTypeAvailable(7)) { %> if (editBean.isSigTypeAvailable(7)) { %>
<div id="portField" class="rowItem"> <div id="portField" class="rowItem">
<label>Ed25519-SHA-512</label> <label>Ed25519-SHA-512</label>
<input value="7" type="radio" id="startOnLoad" name="sigType" title="Advanced users only"<%=(editBean.getSigType(curTunnel)==7 ? " checked=\"checked\"" : "")%> class="tickbox" /> <input value="7" type="radio" id="startOnLoad" name="sigType" title="Advanced users only"<%=(currentSigType==7 ? " checked=\"checked\"" : "")%> class="tickbox" />
</div> </div>
<% } // isAvailable %> <% } // isAvailable %>
</div> </div>

View File

@ -44,8 +44,8 @@ input.default { width: 1px; height: 1px; visibility: hidden; }
<div id="tunnelEditPanel" class="panel"> <div id="tunnelEditPanel" class="panel">
<div class="header"> <div class="header">
<% <%
String tunnelTypeName = ""; String tunnelTypeName;
String tunnelType = ""; String tunnelType;
if (curTunnel >= 0) { if (curTunnel >= 0) {
tunnelTypeName = editBean.getTunnelType(curTunnel); tunnelTypeName = editBean.getTunnelType(curTunnel);
tunnelType = editBean.getInternalType(curTunnel); tunnelType = editBean.getInternalType(curTunnel);
@ -570,7 +570,9 @@ input.default { width: 1px; height: 1px; visibility: hidden; }
</div> </div>
<% **********************/ %> <% **********************/ %>
<% if (true /* editBean.isAdvanced() */ ) { %> <% if (true /* editBean.isAdvanced() */ ) {
int currentSigType = editBean.getSigType(curTunnel, tunnelType);
%>
<div id="tunnelOptionsField" class="rowItem"> <div id="tunnelOptionsField" class="rowItem">
<label> <label>
<%=intl._("Signature type")%> <%=intl._("Signature type")%>
@ -580,30 +582,30 @@ input.default { width: 1px; height: 1px; visibility: hidden; }
<div id="hostField" class="rowItem"> <div id="hostField" class="rowItem">
<div id="portField" class="rowItem"> <div id="portField" class="rowItem">
<label>DSA-SHA1</label> <label>DSA-SHA1</label>
<input value="0" type="radio" id="startOnLoad" name="sigType" title="Default"<%=(editBean.getSigType(curTunnel)==0 ? " checked=\"checked\"" : "")%> class="tickbox" /> <input value="0" type="radio" id="startOnLoad" name="sigType" title="Default"<%=(currentSigType==0 ? " checked=\"checked\"" : "")%> class="tickbox" />
</div> </div>
<% if (editBean.isSigTypeAvailable(1)) { %> <% if (editBean.isSigTypeAvailable(1)) { %>
<div id="portField" class="rowItem"> <div id="portField" class="rowItem">
<label>ECDSA-P256</label> <label>ECDSA-P256</label>
<input value="1" type="radio" id="startOnLoad" name="sigType" title="Advanced users only"<%=(editBean.getSigType(curTunnel)==1 ? " checked=\"checked\"" : "")%> class="tickbox" /> <input value="1" type="radio" id="startOnLoad" name="sigType" title="Advanced users only"<%=(currentSigType==1 ? " checked=\"checked\"" : "")%> class="tickbox" />
</div> </div>
<% } <% }
if (editBean.isSigTypeAvailable(2)) { %> if (editBean.isSigTypeAvailable(2)) { %>
<div id="portField" class="rowItem"> <div id="portField" class="rowItem">
<label>ECDSA-P384</label> <label>ECDSA-P384</label>
<input value="2" type="radio" id="startOnLoad" name="sigType" title="Advanced users only"<%=(editBean.getSigType(curTunnel)==2 ? " checked=\"checked\"" : "")%> class="tickbox" /> <input value="2" type="radio" id="startOnLoad" name="sigType" title="Advanced users only"<%=(currentSigType==2 ? " checked=\"checked\"" : "")%> class="tickbox" />
</div> </div>
<% } <% }
if (editBean.isSigTypeAvailable(3)) { %> if (editBean.isSigTypeAvailable(3)) { %>
<div id="portField" class="rowItem"> <div id="portField" class="rowItem">
<label>ECDSA-P521</label> <label>ECDSA-P521</label>
<input value="3" type="radio" id="startOnLoad" name="sigType" title="Advanced users only"<%=(editBean.getSigType(curTunnel)==3 ? " checked=\"checked\"" : "")%> class="tickbox" /> <input value="3" type="radio" id="startOnLoad" name="sigType" title="Advanced users only"<%=(currentSigType==3 ? " checked=\"checked\"" : "")%> class="tickbox" />
</div> </div>
<% } <% }
if (editBean.isSigTypeAvailable(7)) { %> if (editBean.isSigTypeAvailable(7)) { %>
<div id="portField" class="rowItem"> <div id="portField" class="rowItem">
<label>Ed25519-SHA-512</label> <label>Ed25519-SHA-512</label>
<input value="7" type="radio" id="startOnLoad" name="sigType" title="Advanced users only"<%=(editBean.getSigType(curTunnel)==7 ? " checked=\"checked\"" : "")%> class="tickbox" /> <input value="7" type="radio" id="startOnLoad" name="sigType" title="Advanced users only"<%=(currentSigType==7 ? " checked=\"checked\"" : "")%> class="tickbox" />
</div> </div>
<% } // isAvailable %> <% } // isAvailable %>
</div> </div>

View File

@ -1,3 +1,7 @@
2014-10-13 zzz
* i2ptunnel: Set default sig type to ECDSA-P256 for client types
Standard, IRC, and Socks IRC, if non-shared.
2014-10-10 zzz 2014-10-10 zzz
* Banlist: Remove unused banlist tracking in the profile * Banlist: Remove unused banlist tracking in the profile
causing deadlock (ticket #1394) causing deadlock (ticket #1394)

View File

@ -44,6 +44,7 @@ tunnel.1.option.outbound.nickname=Irc2P
tunnel.1.option.i2cp.closeIdleTime=1200000 tunnel.1.option.i2cp.closeIdleTime=1200000
tunnel.1.option.i2cp.closeOnIdle=true tunnel.1.option.i2cp.closeOnIdle=true
tunnel.1.option.i2cp.delayOpen=true tunnel.1.option.i2cp.delayOpen=true
tunnel.1.option.i2cp.destination.sigType=ECDSA_SHA256_P256
tunnel.1.option.i2cp.newDestOnResume=false tunnel.1.option.i2cp.newDestOnResume=false
tunnel.1.option.i2cp.reduceIdleTime=600000 tunnel.1.option.i2cp.reduceIdleTime=600000
tunnel.1.option.i2cp.reduceOnIdle=true tunnel.1.option.i2cp.reduceOnIdle=true

View File

@ -18,7 +18,7 @@ public class RouterVersion {
/** deprecated */ /** deprecated */
public final static String ID = "Monotone"; public final static String ID = "Monotone";
public final static String VERSION = CoreVersion.VERSION; public final static String VERSION = CoreVersion.VERSION;
public final static long BUILD = 8; public final static long BUILD = 9;
/** for example "-test" */ /** for example "-test" */
public final static String EXTRA = ""; public final static String EXTRA = "";