diff --git a/apps/routerconsole/java/src/net/i2p/router/web/ProofHelper.java b/apps/routerconsole/java/src/net/i2p/router/web/ProofHelper.java new file mode 100644 index 000000000..df412d840 --- /dev/null +++ b/apps/routerconsole/java/src/net/i2p/router/web/ProofHelper.java @@ -0,0 +1,37 @@ +package net.i2p.router.web; + +import java.util.Date; + +import net.i2p.data.DataHelper; +import net.i2p.data.RouterAddress; +import net.i2p.data.RouterInfo; +import net.i2p.data.Signature; + +/** + * Sign a statement about this router. + * @since 0.9.8 + */ +public class ProofHelper extends HelperBase { + + public String getProof() { + StringBuilder buf = new StringBuilder(512); + RouterInfo us = _context.router().getRouterInfo(); + buf.append("Hash: ").append(us.getIdentity().calculateHash().toBase64()).append('\n'); + //buf.append("Ident: ").append(us.getIdentity().toBase64()).append('\n'); + for (RouterAddress addr : us.getAddresses()) { + buf.append(addr.getTransportStyle()).append(": ").append(addr.getHost()).append('\n'); + } + buf.append("Caps: ").append(us.getCapabilities()).append('\n'); + buf.append("Date: ").append(new Date()); // no trailing newline + String msg = buf.toString(); + byte[] data = DataHelper.getUTF8(msg); + Signature sig = _context.dsa().sign(data, _context.keyManager().getSigningPrivateKey()); + buf.setLength(0); + buf.append("--- BEGIN I2P SIGNED MESSAGE ---\n"); + buf.append(msg); + buf.append("\n--- END I2P SIGNED MESSAGE ---\n"); + buf.append(sig.toBase64()); + buf.append("\n--- END I2P SIGNATURE ---"); + return buf.toString(); + } +} diff --git a/apps/routerconsole/jsp/proof.jsp b/apps/routerconsole/jsp/proof.jsp new file mode 100644 index 000000000..950071201 --- /dev/null +++ b/apps/routerconsole/jsp/proof.jsp @@ -0,0 +1,16 @@ +<%@page contentType="text/html"%> +<%@page pageEncoding="UTF-8"%> + + + +<%@include file="css.jsi" %> +<%=intl.title("Proof")%> + +<%@include file="summaryajax.jsi" %> + +<%@include file="summary.jsi" %>

Proof of Ownership

+
+ +" /> + +
diff --git a/history.txt b/history.txt index a148e6cac..c969f186f 100644 --- a/history.txt +++ b/history.txt @@ -1,9 +1,12 @@ +2013-09-23 zzz + * Console: Add /proof page which can copied to prove you run a router + 2013-09-20 kytv - - Chinese, French, German, Russian, and Swedish translation updates from - Transifex + * Chinese, French, German, Russian, and Swedish translation updates from + Transifex 2013-09-17 zzz - - Revert expl. default back to 2 hops, wait for next release + * Revert expl. default back to 2 hops, wait for next release 2013-09-07 zzz * Crypto: Don't use "short exponent" on faster platforms. diff --git a/router/java/src/net/i2p/router/RouterVersion.java b/router/java/src/net/i2p/router/RouterVersion.java index 285b64c36..0cd02d33d 100644 --- a/router/java/src/net/i2p/router/RouterVersion.java +++ b/router/java/src/net/i2p/router/RouterVersion.java @@ -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 = 28; + public final static long BUILD = 29; /** for example "-test" */ public final static String EXTRA = "-rc";