aboutsummaryrefslogtreecommitdiff
path: root/src/cz/crcs/ectester/reader/test/CardTestSuite.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/cz/crcs/ectester/reader/test/CardTestSuite.java')
-rw-r--r--src/cz/crcs/ectester/reader/test/CardTestSuite.java30
1 files changed, 25 insertions, 5 deletions
diff --git a/src/cz/crcs/ectester/reader/test/CardTestSuite.java b/src/cz/crcs/ectester/reader/test/CardTestSuite.java
index ed3dc3b..87f6271 100644
--- a/src/cz/crcs/ectester/reader/test/CardTestSuite.java
+++ b/src/cz/crcs/ectester/reader/test/CardTestSuite.java
@@ -5,6 +5,7 @@ import cz.crcs.ectester.applet.EC_Consts;
import cz.crcs.ectester.common.ec.EC_Curve;
import cz.crcs.ectester.common.ec.EC_Params;
import cz.crcs.ectester.common.output.TestWriter;
+import cz.crcs.ectester.common.test.CompoundTest;
import cz.crcs.ectester.common.test.Result;
import cz.crcs.ectester.common.test.Test;
import cz.crcs.ectester.common.test.TestSuite;
@@ -46,13 +47,32 @@ public abstract class CardTestSuite extends TestSuite {
}
}
- public Test genOrPreset(EC_Curve curve, Result.ExpectedValue expected) {
+ public Test genOrPreset(EC_Curve curve, Result.ExpectedValue expected, byte keyPair) {
if (Arrays.asList(options).contains("preset") && cfg.testOptions.contains("preset")) {
- byte[] presetPriv = ECUtil.semiRandomKey(curve);
- EC_Params privParms = new EC_Params(EC_Consts.PARAMETER_S, new byte[][]{presetPriv});
- return CommandTest.expect(new Command.Set(this.card, ECTesterApplet.KEYPAIR_LOCAL, EC_Consts.CURVE_external, privParms.getParams(), privParms.flatten()), expected);
+ Test setLocal = null;
+ if ((keyPair & ECTesterApplet.KEYPAIR_LOCAL) != 0) {
+ EC_Params priv = ECUtil.fixedRandomKey(curve);
+ setLocal = CommandTest.expect(new Command.Set(this.card, ECTesterApplet.KEYPAIR_LOCAL, EC_Consts.CURVE_external, priv.getParams(), priv.flatten()), expected);
+ }
+ Test setRemote = null;
+ if ((keyPair & ECTesterApplet.KEYPAIR_REMOTE) != 0) {
+ EC_Params pub = ECUtil.fixedRandomPoint(curve);
+ if (pub == null) {
+ setRemote = CommandTest.expect(new Command.Generate(this.card, ECTesterApplet.KEYPAIR_REMOTE), expected);
+ } else {
+ setRemote = CommandTest.expect(new Command.Set(this.card, ECTesterApplet.KEYPAIR_REMOTE, EC_Consts.CURVE_external, pub.getParams(), pub.flatten()), expected);
+ }
+ }
+
+ if (keyPair == ECTesterApplet.KEYPAIR_LOCAL) {
+ return setLocal;
+ } else if (keyPair == ECTesterApplet.KEYPAIR_REMOTE) {
+ return setRemote;
+ } else {
+ return CompoundTest.all(expected, "Set semi-random parameters.", setLocal, setRemote);
+ }
} else {
- return CommandTest.expect(new Command.Generate(this.card, ECTesterApplet.KEYPAIR_LOCAL), expected);
+ return CommandTest.expect(new Command.Generate(this.card, keyPair), expected);
}
}
}