From 0c2a8e92445c5fd9c358acd057f7d61cb5bcf232 Mon Sep 17 00:00:00 2001
From: zzz <zzz@mail.i2p>
Date: Tue, 17 Sep 2019 11:05:48 +0000
Subject: [PATCH] Util: Add sigtype/enctype help to PKF remove dead code from
 SU3File help

---
 core/java/src/net/i2p/crypto/SU3File.java     |  2 --
 .../java/src/net/i2p/data/PrivateKeyFile.java | 30 +++++++++++++++++--
 2 files changed, 28 insertions(+), 4 deletions(-)

diff --git a/core/java/src/net/i2p/crypto/SU3File.java b/core/java/src/net/i2p/crypto/SU3File.java
index 21f0cd7bc4..ce84e25fcc 100644
--- a/core/java/src/net/i2p/crypto/SU3File.java
+++ b/core/java/src/net/i2p/crypto/SU3File.java
@@ -688,8 +688,6 @@ public class SU3File {
             buf.append("      ").append(t).append("\t(code: ").append(t.getCode()).append(')');
             if (t.getCode() == DEFAULT_SIG_CODE)
                 buf.append(" DEFAULT");
-            if (!t.isAvailable())
-                buf.append(" UNAVAILABLE");
             buf.append('\n');
         }
         buf.append("Available content types (-c):\n");
diff --git a/core/java/src/net/i2p/data/PrivateKeyFile.java b/core/java/src/net/i2p/data/PrivateKeyFile.java
index 9e3d63ed87..6be92a9d6e 100644
--- a/core/java/src/net/i2p/data/PrivateKeyFile.java
+++ b/core/java/src/net/i2p/data/PrivateKeyFile.java
@@ -12,6 +12,7 @@ import java.io.OutputStreamWriter;
 import java.security.GeneralSecurityException;
 import java.security.NoSuchAlgorithmException; 
 import java.util.Date;
+import java.util.EnumSet;
 import java.util.Locale;
 import java.util.Map;
 import java.util.Properties;
@@ -32,6 +33,7 @@ import net.i2p.crypto.DSAEngine;
 import net.i2p.crypto.EncType;
 import net.i2p.crypto.KeyGenerator;
 import net.i2p.crypto.KeyPair;
+import net.i2p.crypto.SigAlgo;
 import net.i2p.crypto.SigType;
 import net.i2p.util.OrderedProperties;
 import net.i2p.util.RandomSource;
@@ -332,13 +334,13 @@ public class PrivateKeyFile {
 
     private static void usage() {
         System.err.println("Usage: PrivateKeyFile filename (generates if nonexistent, then prints)\n" +
-                           "   \ncertificate options:\n" +
+                           "\ncertificate options:\n" +
                            "      -h                   (generates if nonexistent, adds hashcash cert)\n" +
                            "      -n                   (changes to null cert)\n" +
                            "      -s signwithdestfile  (generates if nonexistent, adds cert signed by 2nd dest)\n" +
                            "      -u                   (changes to unknown cert)\n" +
                            "      -x                   (changes to hidden cert)\n" +
-                           "   \nother options:\n" +
+                           "\nother options:\n" +
                            "      -a example.i2p       (generate addressbook authentication string)\n" +
                            "      -c sigtype           (specify sig type of destination)\n" +
                            "      -d days              (specify expiration in days of offline sig, default 365)\n" +
@@ -348,6 +350,30 @@ public class PrivateKeyFile {
                            "      -r sigtype           (specify sig type of transient key, default Ed25519)\n" +
                            "      -t sigtype           (changes to KeyCertificate of the given sig type)\n" +
                            "");
+        StringBuilder buf = new StringBuilder(256);
+        buf.append("Available signature types:\n");
+        for (SigType t : EnumSet.allOf(SigType.class)) {
+            if (!t.isAvailable())
+                continue;
+            if (t.getBaseAlgorithm().equals(SigAlgo.RSA))
+                continue;
+            if (t.getCode() == 8)
+                continue;
+            buf.append("      ").append(t).append("\t(code: ").append(t.getCode()).append(')');
+            if (t.getCode() == 0)
+                buf.append(" DEFAULT");
+            buf.append('\n');
+        }
+        buf.append("\nAvailable encryption types:\n");
+        for (EncType t : EnumSet.allOf(EncType.class)) {
+            if (!t.isAvailable())
+                continue;
+            buf.append("      ").append(t).append("\t(code: ").append(t.getCode()).append(')');
+            if (t.getCode() == 0)
+                buf.append(" DEFAULT");
+            buf.append('\n');
+        }
+        System.out.println(buf.toString());
     }
     
     public PrivateKeyFile(String file) {
-- 
GitLab