aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJ08nY2017-11-14 03:04:10 +0100
committerJ08nY2017-11-14 03:04:10 +0100
commit82a0399051d3bc059deb6923512092b31971d352 (patch)
treea90c5f951e517a1a5989e1e5d788afd96cdde9ba
parent80e14c7d3f9eeec34f0236bfb8c595033142756a (diff)
downloadECTester-82a0399051d3bc059deb6923512092b31971d352.tar.gz
ECTester-82a0399051d3bc059deb6923512092b31971d352.tar.zst
ECTester-82a0399051d3bc059deb6923512092b31971d352.zip
-rw-r--r--src/cz/crcs/ectester/common/CLITools.java56
-rw-r--r--src/cz/crcs/ectester/reader/ECTesterReader.java41
-rw-r--r--src/cz/crcs/ectester/standalone/ECTesterStandalone.java38
-rw-r--r--src/cz/crcs/ectester/standalone/test/KeyGenerationTestable.java6
4 files changed, 80 insertions, 61 deletions
diff --git a/src/cz/crcs/ectester/common/CLITools.java b/src/cz/crcs/ectester/common/CLITools.java
new file mode 100644
index 0000000..57cea64
--- /dev/null
+++ b/src/cz/crcs/ectester/common/CLITools.java
@@ -0,0 +1,56 @@
+package cz.crcs.ectester.common;
+
+import cz.crcs.ectester.common.ec.EC_Category;
+import cz.crcs.ectester.common.ec.EC_Data;
+import cz.crcs.ectester.data.EC_Store;
+import org.apache.commons.cli.HelpFormatter;
+import org.apache.commons.cli.Options;
+
+import java.util.Map;
+
+/**
+ * @author Jan Jancar johny@neuromancer.sk
+ */
+public class CLITools {
+
+ /**
+ * Print help.
+ */
+ public static void help(String prog, String header, Options options, String footer, boolean usage) {
+ HelpFormatter help = new HelpFormatter();
+ help.setOptionComparator(null);
+ help.printHelp(prog, header, options, footer, usage);
+ }
+
+ /**
+ * Print version info.
+ */
+ public static void version(String description, String license) {
+ System.out.println(description);
+ System.out.println(license);
+ }
+
+ /**
+ * List categories and named curves.
+ */
+ public static void listNamed(EC_Store dataStore, String named) {
+ Map<String, EC_Category> categories = dataStore.getCategories();
+ if (named == null) {
+ // print all categories, briefly
+ for (EC_Category cat : categories.values()) {
+ System.out.println(cat);
+ }
+ } else if (categories.containsKey(named)) {
+ // print given category
+ System.out.println(categories.get(named));
+ } else {
+ // print given object
+ EC_Data object = dataStore.getObject(EC_Data.class, named);
+ if (object != null) {
+ System.out.println(object);
+ } else {
+ System.err.println("Named object " + named + " not found!");
+ }
+ }
+ }
+}
diff --git a/src/cz/crcs/ectester/reader/ECTesterReader.java b/src/cz/crcs/ectester/reader/ECTesterReader.java
index 0bbe8f7..c51430d 100644
--- a/src/cz/crcs/ectester/reader/ECTesterReader.java
+++ b/src/cz/crcs/ectester/reader/ECTesterReader.java
@@ -23,6 +23,7 @@ package cz.crcs.ectester.reader;
import cz.crcs.ectester.applet.ECTesterApplet;
import cz.crcs.ectester.applet.EC_Consts;
+import cz.crcs.ectester.common.CLITools;
import cz.crcs.ectester.common.Util;
import cz.crcs.ectester.common.ec.EC_Category;
import cz.crcs.ectester.common.ec.EC_Data;
@@ -79,11 +80,10 @@ public class ECTesterReader {
//if help, print and quit
if (cli.hasOption("help")) {
- help();
+ CLITools.help("ECTesterReader.jar", CLI_HEADER, opts, CLI_FOOTER, true);
return;
} else if (cli.hasOption("version")) {
- System.out.println(DESCRIPTION);
- System.out.println(LICENSE);
+ CLITools.version(DESCRIPTION, LICENSE);
return;
}
cfg = new Config();
@@ -96,7 +96,7 @@ public class ECTesterReader {
dataStore = new EC_Store();
//if list, print and quit
if (cli.hasOption("list-named")) {
- list();
+ CLITools.listNamed(dataStore, cli.getOptionValue("list-named"));
return;
}
@@ -312,39 +312,6 @@ public class ECTesterReader {
}
/**
- * Prints help.
- */
- private void help() {
- HelpFormatter help = new HelpFormatter();
- help.setOptionComparator(null);
- help.printHelp("ECTesterReader.jar", CLI_HEADER, opts, CLI_FOOTER, true);
- }
-
- /**
- * List categories and named curves.
- */
- private void list() {
- Map<String, EC_Category> categories = dataStore.getCategories();
- if (cfg.listNamed == null) {
- // print all categories, briefly
- for (EC_Category cat : categories.values()) {
- System.out.println(cat);
- }
- } else if (categories.containsKey(cfg.listNamed)) {
- // print given category
- System.out.println(categories.get(cfg.listNamed));
- } else {
- // print given object
- EC_Data object = dataStore.getObject(EC_Data.class, cfg.listNamed);
- if (object != null) {
- System.out.println(object);
- } else {
- System.err.println("Named object " + cfg.listNamed + " not found!");
- }
- }
- }
-
- /**
* Exports default card/simulation EC domain parameters to output file.
*
* @throws CardException if APDU transmission fails
diff --git a/src/cz/crcs/ectester/standalone/ECTesterStandalone.java b/src/cz/crcs/ectester/standalone/ECTesterStandalone.java
index 016d095..e8998ff 100644
--- a/src/cz/crcs/ectester/standalone/ECTesterStandalone.java
+++ b/src/cz/crcs/ectester/standalone/ECTesterStandalone.java
@@ -1,6 +1,7 @@
package cz.crcs.ectester.standalone;
import cz.crcs.ectester.applet.EC_Consts;
+import cz.crcs.ectester.common.CLITools;
import cz.crcs.ectester.common.ec.EC_Curve;
import cz.crcs.ectester.data.EC_Store;
import cz.crcs.ectester.standalone.consts.KeyPairGeneratorIdent;
@@ -40,15 +41,21 @@ public class ECTesterStandalone {
CommandLine cli = parseArgs(args);
if (cli.hasOption("help")) {
- help();
+ CLITools.help("ECTesterStandalone.jar", CLI_HEADER, opts, CLI_FOOTER, true);
return;
} else if (cli.hasOption("version")) {
- version();
+ CLITools.version(DESCRIPTION, LICENSE);
return;
}
cfg = new Config();
dataStore = new EC_Store();
+
+ if (cli.hasOption("list-named")) {
+ CLITools.listNamed(dataStore, cli.getOptionValue("list-named"));
+ return;
+ }
+
for (ECLibrary lib : libs) {
if (lib instanceof JavaECLibrary) {
JavaECLibrary jlib = (JavaECLibrary) lib;
@@ -72,7 +79,7 @@ public class ECTesterStandalone {
if (cli.hasOption("generate")) {
generate();
- } else if (cli.hasOption("libs")) {
+ } else if (cli.hasOption("list-libs")) {
listLibraries();
}
@@ -86,8 +93,14 @@ public class ECTesterStandalone {
actions.setRequired(true);
actions.addOption(Option.builder("V").longOpt("version").desc("Print version info.").build());
actions.addOption(Option.builder("h").longOpt("help").desc("Print help.").build());
+ actions.addOption(Option.builder("e").longOpt("export").desc("Export the defaut curve parameters of the card(if any).").build());
actions.addOption(Option.builder("g").longOpt("generate").desc("Generate [amount] of EC keys.").hasArg().argName("amount").optionalArg(true).build());
- actions.addOption(Option.builder("ls").longOpt("libs").desc("List supported libraries.").build());
+ actions.addOption(Option.builder("t").longOpt("test").desc("Test ECC support. [test_suite]:\n- default:\n- invalid:\n- wrong:\n- composite:\n- test-vectors:").hasArg().argName("test_suite").optionalArg(true).build());
+ actions.addOption(Option.builder("dh").longOpt("ecdh").desc("Do ECDH, [count] times.").hasArg().argName("count").optionalArg(true).build());
+ actions.addOption(Option.builder("dhc").longOpt("ecdhc").desc("Do ECDHC, [count] times.").hasArg().argName("count").optionalArg(true).build());
+ actions.addOption(Option.builder("dsa").longOpt("ecdsa").desc("Sign data with ECDSA, [count] times.").hasArg().argName("count").optionalArg(true).build());
+ actions.addOption(Option.builder("ln").longOpt("list-named").desc("Print the list of supported named curves and keys.").hasArg().argName("what").optionalArg(true).build());
+ actions.addOption(Option.builder("ls").longOpt("list-libs").desc("List supported libraries.").build());
opts.addOptionGroup(actions);
CommandLineParser parser = new DefaultParser();
@@ -95,23 +108,6 @@ public class ECTesterStandalone {
}
/**
- * Prints help.
- */
- private void help() {
- HelpFormatter help = new HelpFormatter();
- help.setOptionComparator(null);
- help.printHelp("ECTesterStandalone.jar", CLI_HEADER, opts, CLI_FOOTER, true);
- }
-
- /**
- * Prints version info.
- */
- private void version() {
- System.out.println(DESCRIPTION);
- System.out.println(LICENSE);
- }
-
- /**
*
*/
private void generate() {
diff --git a/src/cz/crcs/ectester/standalone/test/KeyGenerationTestable.java b/src/cz/crcs/ectester/standalone/test/KeyGenerationTestable.java
index 10d02cb..8ad425b 100644
--- a/src/cz/crcs/ectester/standalone/test/KeyGenerationTestable.java
+++ b/src/cz/crcs/ectester/standalone/test/KeyGenerationTestable.java
@@ -6,14 +6,14 @@ import cz.crcs.ectester.common.test.Testable;
import java.security.InvalidAlgorithmParameterException;
import java.security.KeyPair;
import java.security.KeyPairGenerator;
-import java.security.spec.AlgorithmParameterSpec;
+import java.security.spec.ECParameterSpec;
public class KeyGenerationTestable implements Testable {
private KeyPair kp;
private KeyPairGenerator kpg;
private int keysize;
- private AlgorithmParameterSpec spec;
+ private ECParameterSpec spec;
private boolean hasRun;
private boolean error = false;
private boolean ok;
@@ -23,7 +23,7 @@ public class KeyGenerationTestable implements Testable {
this.keysize = keysize;
}
- public KeyGenerationTestable(KeyPairGenerator kpg, AlgorithmParameterSpec spec) {
+ public KeyGenerationTestable(KeyPairGenerator kpg, ECParameterSpec spec) {
this.kpg = kpg;
this.spec = spec;
}