aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJ08nY2017-11-26 19:39:57 +0100
committerJ08nY2017-11-26 19:39:57 +0100
commitc7cffa5d408b0df4276bc27cc9206825ad81ddfa (patch)
tree97741b263b278fbd6e9fc6e337b3b7709ac7d3ee
parent2279aef8b7c00ba2bb71fdedae77ae4a47b00fc6 (diff)
downloadECTester-c7cffa5d408b0df4276bc27cc9206825ad81ddfa.tar.gz
ECTester-c7cffa5d408b0df4276bc27cc9206825ad81ddfa.tar.zst
ECTester-c7cffa5d408b0df4276bc27cc9206825ad81ddfa.zip
-rw-r--r--src/cz/crcs/ectester/standalone/ECTesterStandalone.java48
1 files changed, 40 insertions, 8 deletions
diff --git a/src/cz/crcs/ectester/standalone/ECTesterStandalone.java b/src/cz/crcs/ectester/standalone/ECTesterStandalone.java
index 741d81e..049626e 100644
--- a/src/cz/crcs/ectester/standalone/ECTesterStandalone.java
+++ b/src/cz/crcs/ectester/standalone/ECTesterStandalone.java
@@ -21,7 +21,7 @@ import java.security.KeyPair;
import java.security.KeyPairGenerator;
import java.security.NoSuchAlgorithmException;
import java.security.interfaces.ECPrivateKey;
-import java.security.interfaces.ECPublicKey;
+import java.security.spec.ECParameterSpec;
import java.util.*;
import java.util.stream.Collectors;
@@ -117,6 +117,8 @@ public class ECTesterStandalone {
actions.put("generate", generate);
Options exportOpts = new Options();
+ exportOpts.addOption(Option.builder("t").longOpt("type").hasArg().argName("type").optionalArg(false).desc("Set KeyPair object [type].").build());
+ exportOpts.addOption(Option.builder("b").longOpt("bits").hasArg().argName("n").optionalArg(false).desc("What size of curve to use.").build());
ParserOptions export = new ParserOptions(new DefaultParser(), exportOpts);
actions.put("export", export);
@@ -196,7 +198,7 @@ public class ECTesterStandalone {
} else {
KeyPairGenerator kpg = ident.getInstance(jlib.getProvider());
if (cli.hasOption("generate.bits")) {
- int bits = Integer.parseInt(cli.getOptionValue("generate.bits", "256"));
+ int bits = Integer.parseInt(cli.getOptionValue("generate.bits"));
kpg.initialize(bits);
} else if (cli.hasOption("generate.named-curve")) {
String curveName = cli.getOptionValue("generate.named-curve");
@@ -206,15 +208,12 @@ public class ECTesterStandalone {
return;
}
kpg.initialize(curve.toSpec());
- } else {
- kpg.initialize(256);
}
int amount = Integer.parseInt(cli.getOptionValue("generate.amount", "1"));
for (int i = 0; i < amount; ++i) {
KeyPair kp = kpg.genKeyPair();
ECPrivateKey privateKey = (ECPrivateKey) kp.getPrivate();
- ECPublicKey publicKey = (ECPublicKey) kp.getPublic();
System.out.println(privateKey);
}
}
@@ -231,8 +230,31 @@ public class ECTesterStandalone {
/**
*
*/
- private void export() {
-
+ private void export() throws NoSuchAlgorithmException {
+ if (cfg.selected instanceof JavaECLibrary) {
+ JavaECLibrary jlib = (JavaECLibrary) cfg.selected;
+ KeyPairGeneratorIdent ident = null;
+ String algo = cli.getOptionValue("export.type", "EC");
+ for (KeyPairGeneratorIdent kpIdent : jlib.getKPGs()) {
+ if (kpIdent.contains(algo)) {
+ ident = kpIdent;
+ break;
+ }
+ }
+ if (ident == null) {
+ throw new NoSuchAlgorithmException(algo);
+ } else {
+ KeyPairGenerator kpg = ident.getInstance(jlib.getProvider());
+ if (cli.hasOption("export.bits")) {
+ int bits = Integer.parseInt(cli.getOptionValue("export.bits"));
+ kpg.initialize(bits);
+ }
+ KeyPair kp = kpg.genKeyPair();
+ ECPrivateKey privateKey = (ECPrivateKey) kp.getPrivate();
+ ECParameterSpec params = privateKey.getParams();
+ System.out.println(params);
+ }
+ }
}
public static void main(String[] args) {
@@ -260,7 +282,17 @@ public class ECTesterStandalone {
}
if (cli.hasOption("generate.bits") && cli.hasOption("generate.named-curve")) {
- System.err.println("");
+ System.err.println("You can only specify bitsize or a named curve, nor both.");
+ return false;
+ }
+ } else if (cli.isNext("export")) {
+ if (!cli.hasArg(-1)) {
+ System.err.println("Missing library name argument.");
+ return false;
+ }
+
+ if (cli.hasOption("export.bits") && cli.hasOption("export.named-curve")) {
+ System.err.println("You can only specify bitsize or a named curve, nor both.");
return false;
}
}