diff --git a/apps/addressbook/java/src/net/i2p/addressbook/HostTxtParser.java b/apps/addressbook/java/src/net/i2p/addressbook/HostTxtParser.java index c907b3b8f6dd7e09832ab0a72dc5ac0fc9187747..37c000ad6a7811d0d7335853fc9c9b26a0119958 100644 --- a/apps/addressbook/java/src/net/i2p/addressbook/HostTxtParser.java +++ b/apps/addressbook/java/src/net/i2p/addressbook/HostTxtParser.java @@ -13,6 +13,7 @@ import java.util.HashMap; import java.util.List; import java.util.Locale; import java.util.Map; +import java.util.Properties; import net.i2p.client.naming.HostTxtEntry; import net.i2p.data.DataHelper; @@ -234,7 +235,41 @@ class HostTxtParser { } } + /** + * Usage: HostTxtParser validate example.i2p=b64dest[#!key1=val1#key2=val2] + */ public static void main(String[] args) throws Exception { + if (args.length != 2 || !args[0].equals("validate")) { + System.err.println("Usage: HostTxtParser validate example.i2p=b64dest[#!key1=val1#key2=val2]"); + System.exit(1); + } + HostTxtEntry e = parse(args[1].trim(), false); + if (e == null) { + System.err.println("Bad format"); + System.exit(1); + } + if (!e.hasValidSig()) { + System.err.println("Bad signature"); + System.exit(1); + } + Properties p = e.getProps(); + if (p != null) { + if (p.containsKey(HostTxtEntry.PROP_ACTION) || + p.containsKey(HostTxtEntry.PROP_OLDDEST) || + p.containsKey(HostTxtEntry.PROP_OLDNAME) || + p.containsKey(HostTxtEntry.PROP_OLDSIG)) { + if (!e.hasValidSig()) { + System.err.println("Bad inner signature"); + System.exit(1); + } + } + } + System.err.println("Good signature for " + e.getName()); + System.exit(0); + } + +/**** + public static void test(String[] args) throws Exception { File f = new File("tmp-hosts.txt"); Map<String, HostTxtEntry> map = parse(f); for (HostTxtEntry e : map.values()) { @@ -246,5 +281,5 @@ class HostTxtParser { '\n'); } } - +****/ } diff --git a/core/java/src/net/i2p/client/naming/HostTxtEntry.java b/core/java/src/net/i2p/client/naming/HostTxtEntry.java index 8d6f967e01f955d5409a925eabf85032e2c15055..543365949e7b867ccc8197d355c7db121fff19c4 100644 --- a/core/java/src/net/i2p/client/naming/HostTxtEntry.java +++ b/core/java/src/net/i2p/client/naming/HostTxtEntry.java @@ -436,6 +436,7 @@ public class HostTxtEntry { /** * Usage: HostTxtEntry [-i] [-x] [hostname.i2p] [key=val]... */ +/**** public static void main(String[] args) throws Exception { boolean inner = false; boolean remove = false; @@ -531,4 +532,5 @@ public class HostTxtEntry { //out.write("Test passed\n"); //out.flush(); } +****/ }