forked from I2P_Developers/i2p.i2p
* i2ptunnel:
- Add hostname DSA signature field, to be used for addkey forms. Experimental, may be commented out later.
This commit is contained in:
@@ -13,6 +13,11 @@ import java.util.List;
|
|||||||
import java.util.Properties;
|
import java.util.Properties;
|
||||||
import java.util.StringTokenizer;
|
import java.util.StringTokenizer;
|
||||||
|
|
||||||
|
import net.i2p.data.Base64;
|
||||||
|
import net.i2p.data.Destination;
|
||||||
|
import net.i2p.data.PrivateKeyFile;
|
||||||
|
import net.i2p.data.Signature;
|
||||||
|
import net.i2p.data.SigningPrivateKey;
|
||||||
import net.i2p.i2ptunnel.TunnelController;
|
import net.i2p.i2ptunnel.TunnelController;
|
||||||
import net.i2p.i2ptunnel.TunnelControllerGroup;
|
import net.i2p.i2ptunnel.TunnelControllerGroup;
|
||||||
|
|
||||||
@@ -68,6 +73,31 @@ public class EditBean extends IndexBean {
|
|||||||
return "i2ptunnel" + tunnel + "-privKeys.dat";
|
return "i2ptunnel" + tunnel + "-privKeys.dat";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String getNameSignature(int tunnel) {
|
||||||
|
String spoof = getSpoofedHost(tunnel);
|
||||||
|
if (spoof.length() <= 0)
|
||||||
|
return "";
|
||||||
|
TunnelController tun = getController(tunnel);
|
||||||
|
if (tun == null)
|
||||||
|
return "";
|
||||||
|
String keyFile = tun.getPrivKeyFile();
|
||||||
|
if (keyFile != null && keyFile.trim().length() > 0) {
|
||||||
|
PrivateKeyFile pkf = new PrivateKeyFile(keyFile);
|
||||||
|
try {
|
||||||
|
Destination d = pkf.getDestination();
|
||||||
|
if (d == null)
|
||||||
|
return "";
|
||||||
|
SigningPrivateKey privKey = pkf.getSigningPrivKey();
|
||||||
|
if (privKey == null)
|
||||||
|
return "";
|
||||||
|
//System.err.println("Signing " + spoof + " with " + Base64.encode(privKey.getData()));
|
||||||
|
Signature sig = _context.dsa().sign(spoof.getBytes("UTF-8"), privKey);
|
||||||
|
return Base64.encode(sig.getData());
|
||||||
|
} catch (Exception e) {}
|
||||||
|
}
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
public boolean startAutomatically(int tunnel) {
|
public boolean startAutomatically(int tunnel) {
|
||||||
TunnelController tun = getController(tunnel);
|
TunnelController tun = getController(tunnel);
|
||||||
if (tun != null)
|
if (tun != null)
|
||||||
|
@@ -196,7 +196,16 @@
|
|||||||
<a href="/susidns/addressbook.jsp?book=private&hostname=<%=editBean.getTunnelName(curTunnel)%>&destination=<%=editBean.getDestinationBase64(curTunnel)%>#add"><%=intl._("Add to local addressbook")%></a>
|
<a href="/susidns/addressbook.jsp?book=private&hostname=<%=editBean.getTunnelName(curTunnel)%>&destination=<%=editBean.getDestinationBase64(curTunnel)%>#add"><%=intl._("Add to local addressbook")%></a>
|
||||||
<% } %>
|
<% } %>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<% if (("httpserver".equals(tunnelType)) || ("httpbidirserver".equals(tunnelType))) {
|
||||||
|
%><div id="sigField" class="rowItem">
|
||||||
|
<label for="signature">
|
||||||
|
<%=intl._("Hostname Signature")%>
|
||||||
|
</label>
|
||||||
|
<input type="text" size="30" readonly="readonly" title="Use to prove that the website name is for this destination" value="<%=editBean.getNameSignature(curTunnel)%>" wrap="off" class="freetext" />
|
||||||
|
</div>
|
||||||
|
<% } %>
|
||||||
|
|
||||||
<div class="footer">
|
<div class="footer">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
Reference in New Issue
Block a user