package net.i2p.router.web; import java.util.Date; import net.i2p.data.DataHelper; import net.i2p.data.router.RouterAddress; import net.i2p.data.router.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---BEGIN I2P SIGNATURE---\n"); buf.append(sig.toBase64()); buf.append("\n---END I2P SIGNATURE---"); return buf.toString(); } }