aboutsummaryrefslogtreecommitdiff
path: root/reader/src
diff options
context:
space:
mode:
Diffstat (limited to 'reader/src')
-rw-r--r--reader/src/main/java/cz/crcs/ectester/reader/CardMngr.java7
-rw-r--r--reader/src/main/java/cz/crcs/ectester/reader/ECTesterReader.java39
-rw-r--r--reader/src/main/java/cz/crcs/ectester/reader/command/Command.java5
-rw-r--r--reader/src/main/java/cz/crcs/ectester/reader/response/Response.java6
-rw-r--r--reader/src/main/java/cz/crcs/ectester/reader/test/CardCompressionSuite.java9
-rw-r--r--reader/src/main/java/cz/crcs/ectester/reader/test/CardDefaultSuite.java9
-rw-r--r--reader/src/main/java/cz/crcs/ectester/reader/test/CardEdgeCasesSuite.java13
-rw-r--r--reader/src/main/java/cz/crcs/ectester/reader/test/CardTestVectorSuite.java5
-rw-r--r--reader/src/main/java/cz/crcs/ectester/reader/test/CardWrongSuite.java21
9 files changed, 56 insertions, 58 deletions
diff --git a/reader/src/main/java/cz/crcs/ectester/reader/CardMngr.java b/reader/src/main/java/cz/crcs/ectester/reader/CardMngr.java
index 0a01d9e..d8fa296 100644
--- a/reader/src/main/java/cz/crcs/ectester/reader/CardMngr.java
+++ b/reader/src/main/java/cz/crcs/ectester/reader/CardMngr.java
@@ -2,6 +2,7 @@ package cz.crcs.ectester.reader;
import com.licel.jcardsim.io.JavaxSmartCardInterface;
import cz.crcs.ectester.common.util.ByteUtil;
+import cz.crcs.ectester.common.util.CardUtil;
import javacard.framework.AID;
import javacard.framework.Applet;
import javacard.framework.ISO7816;
@@ -206,10 +207,10 @@ public class CardMngr {
// Try CPLC via GP
ResponseAPDU resp = send(FETCH_GP_CPLC_APDU);
// If GP CLA fails, try with ISO
- if (resp.getSW() == (ISO7816.SW_CLA_NOT_SUPPORTED & 0xffff)) {
+ if (resp.getSW() == (CardUtil.ISO7816.SW_CLA_NOT_SUPPORTED & 0xffff)) {
resp = send(FETCH_ISO_CPLC_APDU);
}
- if (resp.getSW() == (ISO7816.SW_NO_ERROR & 0xffff)) {
+ if (resp.getSW() == (CardUtil.ISO7816.SW_NO_ERROR & 0xffff)) {
return resp.getData();
}
return null;
@@ -369,7 +370,7 @@ public class CardMngr {
} else {
resp = channel.transmit(cmd);
}
- if ((short) resp.getSW() != ISO7816.SW_NO_ERROR) {
+ if ((short) resp.getSW() != CardUtil.ISO7816.SW_NO_ERROR) {
throw new CardException("Chunking failed!");
}
}
diff --git a/reader/src/main/java/cz/crcs/ectester/reader/ECTesterReader.java b/reader/src/main/java/cz/crcs/ectester/reader/ECTesterReader.java
index 33111d0..9ba9890 100644
--- a/reader/src/main/java/cz/crcs/ectester/reader/ECTesterReader.java
+++ b/reader/src/main/java/cz/crcs/ectester/reader/ECTesterReader.java
@@ -37,8 +37,6 @@ import cz.crcs.ectester.reader.output.FileTestWriter;
import cz.crcs.ectester.reader.output.ResponseWriter;
import cz.crcs.ectester.reader.response.Response;
import cz.crcs.ectester.reader.test.*;
-import javacard.framework.ISO7816;
-import javacard.security.KeyPair;
import org.apache.commons.cli.*;
import org.bouncycastle.jce.provider.BouncyCastleProvider;
@@ -78,8 +76,9 @@ public class ECTesterReader {
private static final byte[] SELECT_PREFIX = {(byte) 0x00, (byte) 0xa4, (byte) 0x04, (byte) 0x00, (byte) 0x0c};
private static final byte[] AID_PREFIX = {(byte) 0x45, (byte) 0x43, (byte) 0x54, (byte) 0x65, (byte) 0x73, (byte) 0x74, (byte) 0x65, (byte) 0x72};
private static final byte[] AID_CURRENT_VERSION = {(byte) 0x30, (byte) 0x33, (byte) 0x33}; // VERSION v0.3.3
- private static final byte[] AID_SUFFIX_221 = {(byte) 0x62};
- private static final byte[] AID_SUFFIX_222 = {(byte) 0x78};
+ private static final byte[] AID_SUFFIX_221 = {(byte) 0x20, (byte) 0x32, (byte) 0x32, (byte) 0x31};
+ private static final byte[] AID_SUFFIX_222 = {(byte) 0x20, (byte) 0x32, (byte) 0x32, (byte) 0x32};
+ private static final byte[] AID_SUFFIX_305 = {(byte) 0x20, (byte) 0x33, (byte) 0x30, (byte) 0x35};
private static final byte[] INSTALL_DATA = new byte[10];
private static final int TRY_VERSIONS = 10;
@@ -149,13 +148,23 @@ public class ECTesterReader {
byte[] versionByte = AID_CURRENT_VERSION.clone();
boolean selected = false;
for (int i = 0; i < TRY_VERSIONS; ++i) {
- byte[] select222 = ByteUtil.concatenate(SELECT_PREFIX, AID_PREFIX, versionByte, AID_SUFFIX_222);
- ResponseAPDU selectResp = cardManager.send(select222);
- if ((short) selectResp.getSW() != ISO7816.SW_NO_ERROR) {
- byte[] select221 = ByteUtil.concatenate(SELECT_PREFIX, AID_PREFIX, versionByte, AID_SUFFIX_221);
- selectResp = cardManager.send(select221);
- if ((short) selectResp.getSW() == ISO7816.SW_NO_ERROR) {
- cardManager.setChunking(true);
+ // Try 301 CAP version
+ byte[] select301 = ByteUtil.concatenate(SELECT_PREFIX, AID_PREFIX, versionByte, AID_SUFFIX_305);
+ ResponseAPDU selectResp = cardManager.send(select301);
+ if ((short) selectResp.getSW() != CardUtil.ISO7816.SW_NO_ERROR) {
+ // Try 222 CAP version
+ byte[] select222 = ByteUtil.concatenate(SELECT_PREFIX, AID_PREFIX, versionByte, AID_SUFFIX_222);
+ selectResp = cardManager.send(select222);
+ if ((short) selectResp.getSW() != CardUtil.ISO7816.SW_NO_ERROR) {
+ // Try 221 CAP version
+ byte[] select221 = ByteUtil.concatenate(SELECT_PREFIX, AID_PREFIX, versionByte, AID_SUFFIX_221);
+ selectResp = cardManager.send(select221);
+ if ((short) selectResp.getSW() == CardUtil.ISO7816.SW_NO_ERROR) {
+ cardManager.setChunking(true);
+ selected = true;
+ break;
+ }
+ } else {
selected = true;
break;
}
@@ -387,7 +396,7 @@ public class ECTesterReader {
* @throws IOException if an IO error occurs when writing to key file.
*/
private void export() throws CardException, IOException {
- byte keyClass = cfg.primeField ? KeyPair.ALG_EC_FP : KeyPair.ALG_EC_F2M;
+ byte keyClass = cfg.primeField ? EC_Consts.ALG_EC_FP : EC_Consts.ALG_EC_F2M;
List<Response> sent = new LinkedList<>();
sent.add(new Command.Allocate(cardManager, CardConsts.KEYPAIR_LOCAL, cfg.keyBuilder, cfg.bits, keyClass).send());
@@ -437,7 +446,7 @@ public class ECTesterReader {
* @throws IOException if an IO error occurs when writing to key file.
*/
private void generate() throws CardException, IOException {
- byte keyClass = cfg.primeField ? KeyPair.ALG_EC_FP : KeyPair.ALG_EC_F2M;
+ byte keyClass = cfg.primeField ? EC_Consts.ALG_EC_FP : EC_Consts.ALG_EC_F2M;
Command curve = Command.prepareCurve(cardManager, cfg, CardConsts.KEYPAIR_LOCAL, cfg.bits, keyClass);
Response allocate = new Command.Allocate(cardManager, CardConsts.KEYPAIR_LOCAL, cfg.keyBuilder, cfg.bits, keyClass).send();
@@ -569,7 +578,7 @@ public class ECTesterReader {
* @throws IOException if an IO error occurs when writing to key file.
*/
private void ecdh() throws IOException, CardException {
- byte keyClass = cfg.primeField ? KeyPair.ALG_EC_FP : KeyPair.ALG_EC_F2M;
+ byte keyClass = cfg.primeField ? EC_Consts.ALG_EC_FP : EC_Consts.ALG_EC_F2M;
Command curve = Command.prepareCurve(cardManager, cfg, CardConsts.KEYPAIR_BOTH, cfg.bits, keyClass);
List<Response> prepare = new LinkedList<>();
prepare.add(new Command.AllocateKeyAgreement(cardManager, cfg.ECKAType).send()); // Prepare KeyAgreement or required type
@@ -696,7 +705,7 @@ public class ECTesterReader {
generate = new Command.Generate(cardManager, CardConsts.KEYPAIR_LOCAL);
}
- byte keyClass = cfg.primeField ? KeyPair.ALG_EC_FP : KeyPair.ALG_EC_F2M;
+ byte keyClass = cfg.primeField ? EC_Consts.ALG_EC_FP : EC_Consts.ALG_EC_F2M;
List<Response> prepare = new LinkedList<>();
prepare.add(new Command.AllocateSignature(cardManager, cfg.ECDSAType).send());
prepare.add(new Command.Allocate(cardManager, CardConsts.KEYPAIR_LOCAL, cfg.keyBuilder, cfg.bits, keyClass).send());
diff --git a/reader/src/main/java/cz/crcs/ectester/reader/command/Command.java b/reader/src/main/java/cz/crcs/ectester/reader/command/Command.java
index 051d377..892a481 100644
--- a/reader/src/main/java/cz/crcs/ectester/reader/command/Command.java
+++ b/reader/src/main/java/cz/crcs/ectester/reader/command/Command.java
@@ -12,7 +12,6 @@ import cz.crcs.ectester.reader.CardMngr;
import cz.crcs.ectester.reader.ECTesterReader;
import cz.crcs.ectester.reader.output.ResponseWriter;
import cz.crcs.ectester.reader.response.Response;
-import javacard.security.KeyPair;
import javax.smartcardio.CardException;
import javax.smartcardio.CommandAPDU;
@@ -98,7 +97,7 @@ public abstract class Command implements Cloneable {
public static Command prepareCurve(CardMngr cardManager, ECTesterReader.Config cfg, byte keyPair, short keyLength, byte keyClass) throws IOException {
if (cfg.customCurve) {
// Set custom curve (one of the SECG curves embedded applet-side)
- short domainParams = keyClass == KeyPair.ALG_EC_FP ? EC_Consts.PARAMETERS_DOMAIN_FP : EC_Consts.PARAMETERS_DOMAIN_F2M;
+ short domainParams = keyClass == EC_Consts.ALG_EC_FP ? EC_Consts.PARAMETERS_DOMAIN_FP : EC_Consts.PARAMETERS_DOMAIN_F2M;
return new Command.Set(cardManager, keyPair, EC_Consts.getCurve(keyLength, keyClass), domainParams, null);
}
@@ -294,7 +293,7 @@ public abstract class Command implements Cloneable {
@Override
public String getDescription() {
- String field = keyClass == KeyPair.ALG_EC_FP ? "ALG_EC_FP" : "ALG_EC_F2M";
+ String field = keyClass == EC_Consts.ALG_EC_FP ? "ALG_EC_FP" : "ALG_EC_F2M";
String key;
if (keyPair == CardConsts.KEYPAIR_BOTH) {
key = "both keypairs";
diff --git a/reader/src/main/java/cz/crcs/ectester/reader/response/Response.java b/reader/src/main/java/cz/crcs/ectester/reader/response/Response.java
index 8db255e..e253d30 100644
--- a/reader/src/main/java/cz/crcs/ectester/reader/response/Response.java
+++ b/reader/src/main/java/cz/crcs/ectester/reader/response/Response.java
@@ -3,7 +3,7 @@ package cz.crcs.ectester.reader.response;
import cz.crcs.ectester.common.ec.EC_Consts;
import cz.crcs.ectester.common.util.ByteUtil;
import cz.crcs.ectester.common.util.CardConsts;
-import javacard.framework.ISO7816;
+import cz.crcs.ectester.common.util.CardUtil;
import javax.smartcardio.ResponseAPDU;
@@ -39,7 +39,7 @@ public abstract class Response {
short sw = ByteUtil.getShort(data, offset);
offset += 2;
sws[i] = sw;
- if (sw != ISO7816.SW_NO_ERROR) {
+ if (sw != CardUtil.ISO7816.SW_NO_ERROR) {
success = false;
}
} else {
@@ -48,7 +48,7 @@ public abstract class Response {
}
}
- if ((short) resp.getSW() != ISO7816.SW_NO_ERROR) {
+ if ((short) resp.getSW() != CardUtil.ISO7816.SW_NO_ERROR) {
success = false;
error = true;
}
diff --git a/reader/src/main/java/cz/crcs/ectester/reader/test/CardCompressionSuite.java b/reader/src/main/java/cz/crcs/ectester/reader/test/CardCompressionSuite.java
index ab1f46a..8390cd3 100644
--- a/reader/src/main/java/cz/crcs/ectester/reader/test/CardCompressionSuite.java
+++ b/reader/src/main/java/cz/crcs/ectester/reader/test/CardCompressionSuite.java
@@ -16,7 +16,6 @@ import cz.crcs.ectester.reader.CardMngr;
import cz.crcs.ectester.reader.ECTesterReader;
import cz.crcs.ectester.reader.command.Command;
import cz.crcs.ectester.reader.response.Response;
-import javacard.security.KeyPair;
import java.security.spec.ECPoint;
import java.util.LinkedList;
@@ -45,7 +44,7 @@ public class CardCompressionSuite extends CardTestSuite {
// - test local privkey, remote pubkey (hybrid with wrong y)
// - test local privkey, remote pubkey (point at infinity)
if (cfg.primeField) {
- runCompression(KeyPair.ALG_EC_FP);
+ runCompression(EC_Consts.ALG_EC_FP);
}
// for F2m
// - allocate, set custom curve, generate keypairs, -> export generated.
@@ -55,7 +54,7 @@ public class CardCompressionSuite extends CardTestSuite {
// - test local privkey, remote pubkey (hybrid with wrong y)
// - test local privkey, remote pubkey (point at infinity)
if (cfg.binaryField) {
- runCompression(KeyPair.ALG_EC_F2M);
+ runCompression(EC_Consts.ALG_EC_F2M);
}
// Now, do ECDH over SECG curves and give the implementation a compressed key that is not a quadratic residue in
@@ -64,8 +63,8 @@ public class CardCompressionSuite extends CardTestSuite {
}
private void runCompression(byte field) throws Exception {
- short[] keySizes = field == KeyPair.ALG_EC_FP ? EC_Consts.FP_SIZES : EC_Consts.F2M_SIZES;
- short domain = field == KeyPair.ALG_EC_FP ? EC_Consts.PARAMETERS_DOMAIN_FP : EC_Consts.PARAMETERS_DOMAIN_F2M;
+ short[] keySizes = field == EC_Consts.ALG_EC_FP ? EC_Consts.FP_SIZES : EC_Consts.F2M_SIZES;
+ short domain = field == EC_Consts.ALG_EC_FP ? EC_Consts.PARAMETERS_DOMAIN_FP : EC_Consts.PARAMETERS_DOMAIN_F2M;
for (short keyLength : keySizes) {
String spec = keyLength + "b " + CardUtil.getKeyTypeString(field);
diff --git a/reader/src/main/java/cz/crcs/ectester/reader/test/CardDefaultSuite.java b/reader/src/main/java/cz/crcs/ectester/reader/test/CardDefaultSuite.java
index df46767..ebb1d3f 100644
--- a/reader/src/main/java/cz/crcs/ectester/reader/test/CardDefaultSuite.java
+++ b/reader/src/main/java/cz/crcs/ectester/reader/test/CardDefaultSuite.java
@@ -10,7 +10,6 @@ import cz.crcs.ectester.common.util.CardUtil;
import cz.crcs.ectester.reader.CardMngr;
import cz.crcs.ectester.reader.ECTesterReader;
import cz.crcs.ectester.reader.command.Command;
-import javacard.security.KeyPair;
import java.util.LinkedList;
import java.util.List;
@@ -34,16 +33,16 @@ public class CardDefaultSuite extends CardTestSuite {
@Override
protected void runTests() throws Exception {
if (cfg.primeField) {
- runDefault(KeyPair.ALG_EC_FP);
+ runDefault(EC_Consts.ALG_EC_FP);
}
if (cfg.binaryField) {
- runDefault(KeyPair.ALG_EC_F2M);
+ runDefault(EC_Consts.ALG_EC_F2M);
}
}
private void runDefault(byte field) throws Exception {
- short[] keySizes = field == KeyPair.ALG_EC_FP ? EC_Consts.FP_SIZES : EC_Consts.F2M_SIZES;
- short domain = field == KeyPair.ALG_EC_FP ? EC_Consts.PARAMETERS_DOMAIN_FP : EC_Consts.PARAMETERS_DOMAIN_F2M;
+ short[] keySizes = field == EC_Consts.ALG_EC_FP ? EC_Consts.FP_SIZES : EC_Consts.F2M_SIZES;
+ short domain = field == EC_Consts.ALG_EC_FP ? EC_Consts.PARAMETERS_DOMAIN_FP : EC_Consts.PARAMETERS_DOMAIN_F2M;
for (short keyLength : keySizes) {
List<Test> supportTests = new LinkedList<>();
diff --git a/reader/src/main/java/cz/crcs/ectester/reader/test/CardEdgeCasesSuite.java b/reader/src/main/java/cz/crcs/ectester/reader/test/CardEdgeCasesSuite.java
index 98a59bc..0a82da3 100644
--- a/reader/src/main/java/cz/crcs/ectester/reader/test/CardEdgeCasesSuite.java
+++ b/reader/src/main/java/cz/crcs/ectester/reader/test/CardEdgeCasesSuite.java
@@ -8,14 +8,13 @@ import cz.crcs.ectester.common.test.Test;
import cz.crcs.ectester.common.test.TestCallback;
import cz.crcs.ectester.common.util.ByteUtil;
import cz.crcs.ectester.common.util.CardConsts;
+import cz.crcs.ectester.common.util.CardUtil;
import cz.crcs.ectester.common.util.ECUtil;
import cz.crcs.ectester.data.EC_Store;
import cz.crcs.ectester.reader.CardMngr;
import cz.crcs.ectester.reader.ECTesterReader;
import cz.crcs.ectester.reader.command.Command;
import cz.crcs.ectester.reader.response.Response;
-import javacard.security.CryptoException;
-import javacard.security.KeyPair;
import java.math.BigDecimal;
import java.math.BigInteger;
@@ -77,7 +76,7 @@ public class CardEdgeCasesSuite extends CardTestSuite {
@Override
public Result apply(CommandTestable testable) {
Response.ECDH dh = (Response.ECDH) testable.getResponse();
- if (dh.getSW(0) == CryptoException.NO_SUCH_ALGORITHM) {
+ if (dh.getSW(0) == CardUtil.CryptoException.NO_SUCH_ALGORITHM) {
return new Result(Result.Value.SUCCESS, "ECDH algorithm unsupported.");
}
if (!dh.successful())
@@ -116,7 +115,7 @@ public class CardEdgeCasesSuite extends CardTestSuite {
EC_Curve curve = EC_Store.getInstance().getObject(EC_Curve.class, openssl_bug.getCurve());
EC_Key.Private skey = EC_Store.getInstance().getObject(EC_Key.Private.class, openssl_bug.getOtherKey());
EC_Key.Public pkey = EC_Store.getInstance().getObject(EC_Key.Public.class, openssl_bug.getOneKey());
- Test key = CommandTest.expect(new Command.Allocate(this.card, CardConsts.KEYPAIR_BOTH, curve.getBits(), KeyPair.ALG_EC_FP), Result.ExpectedValue.SUCCESS);
+ Test key = CommandTest.expect(new Command.Allocate(this.card, CardConsts.KEYPAIR_BOTH, curve.getBits(), EC_Consts.ALG_EC_FP), Result.ExpectedValue.SUCCESS);
Test set = CommandTest.expect(new Command.Set(this.card, CardConsts.KEYPAIR_BOTH, EC_Consts.CURVE_external, curve.getParams(), curve.flatten()), Result.ExpectedValue.SUCCESS);
Test setPrivate = CommandTest.expect(new Command.Set(this.card, CardConsts.KEYPAIR_LOCAL, EC_Consts.CURVE_external, EC_Consts.PARAMETER_S, skey.flatten(EC_Consts.PARAMETER_S)), Result.ExpectedValue.SUCCESS);
Test setPublic = CommandTest.expect(new Command.Set(this.card, CardConsts.KEYPAIR_REMOTE, EC_Consts.CURVE_external, EC_Consts.PARAMETER_W, pkey.flatten(EC_Consts.PARAMETER_W)), Result.ExpectedValue.SUCCESS);
@@ -139,12 +138,12 @@ public class CardEdgeCasesSuite extends CardTestSuite {
}
Map<String, EC_Curve> curveMap = EC_Store.getInstance().getObjects(EC_Curve.class, "secg");
- List<EC_Curve> curves = curveMap.entrySet().stream().filter((e) -> e.getKey().endsWith("r1") && e.getValue().getField() == KeyPair.ALG_EC_FP).map(Map.Entry::getValue).collect(Collectors.toList());
+ List<EC_Curve> curves = curveMap.entrySet().stream().filter((e) -> e.getKey().endsWith("r1") && e.getValue().getField() == EC_Consts.ALG_EC_FP).map(Map.Entry::getValue).collect(Collectors.toList());
curves.add(EC_Store.getInstance().getObject(EC_Curve.class, "cofactor/cofactor128p2"));
curves.add(EC_Store.getInstance().getObject(EC_Curve.class, "cofactor/cofactor160p4"));
Random rand = new Random();
for (EC_Curve curve : curves) {
- Test key = runTest(CommandTest.expect(new Command.Allocate(this.card, CardConsts.KEYPAIR_BOTH, curve.getBits(), KeyPair.ALG_EC_FP), Result.ExpectedValue.SUCCESS));
+ Test key = runTest(CommandTest.expect(new Command.Allocate(this.card, CardConsts.KEYPAIR_BOTH, curve.getBits(), EC_Consts.ALG_EC_FP), Result.ExpectedValue.SUCCESS));
if (!key.ok()) {
doTest(CompoundTest.all(Result.ExpectedValue.FAILURE, "No support for " + curve.getBits() + "b " + curve.getId() + ".", key));
continue;
@@ -269,7 +268,7 @@ public class CardEdgeCasesSuite extends CardTestSuite {
Arrays.sort(ps);
Arrays.sort(zeros);
- Test key = runTest(CommandTest.expect(new Command.Allocate(this.card, CardConsts.KEYPAIR_BOTH, secp160r1.getBits(), KeyPair.ALG_EC_FP), Result.ExpectedValue.SUCCESS));
+ Test key = runTest(CommandTest.expect(new Command.Allocate(this.card, CardConsts.KEYPAIR_BOTH, secp160r1.getBits(), EC_Consts.ALG_EC_FP), Result.ExpectedValue.SUCCESS));
if (!key.ok()) {
doTest(CompoundTest.all(Result.ExpectedValue.FAILURE, "No support for " + secp160r1.getBits() + "b secp160r1.", key));
return;
diff --git a/reader/src/main/java/cz/crcs/ectester/reader/test/CardTestVectorSuite.java b/reader/src/main/java/cz/crcs/ectester/reader/test/CardTestVectorSuite.java
index 056be17..07b38d0 100644
--- a/reader/src/main/java/cz/crcs/ectester/reader/test/CardTestVectorSuite.java
+++ b/reader/src/main/java/cz/crcs/ectester/reader/test/CardTestVectorSuite.java
@@ -15,7 +15,6 @@ import cz.crcs.ectester.reader.CardMngr;
import cz.crcs.ectester.reader.ECTesterReader;
import cz.crcs.ectester.reader.command.Command;
import cz.crcs.ectester.reader.response.Response;
-import javacard.security.KeyPair;
import javax.crypto.KeyAgreement;
import java.io.IOException;
@@ -109,8 +108,8 @@ public class CardTestVectorSuite extends CardTestSuite {
}
List<EC_Curve> testCurves = new ArrayList<>();
- testCurves.addAll(EC_Store.getInstance().getObjects(EC_Curve.class, "secg").values().stream().filter((curve) -> curve.getField() == KeyPair.ALG_EC_FP).collect(Collectors.toList()));
- testCurves.addAll(EC_Store.getInstance().getObjects(EC_Curve.class, "brainpool").values().stream().filter((curve) -> curve.getField() == KeyPair.ALG_EC_FP).collect(Collectors.toList()));
+ testCurves.addAll(EC_Store.getInstance().getObjects(EC_Curve.class, "secg").values().stream().filter((curve) -> curve.getField() == EC_Consts.ALG_EC_FP).collect(Collectors.toList()));
+ testCurves.addAll(EC_Store.getInstance().getObjects(EC_Curve.class, "brainpool").values().stream().filter((curve) -> curve.getField() == EC_Consts.ALG_EC_FP).collect(Collectors.toList()));
for (EC_Curve curve : testCurves) {
List<Test> testVector = new LinkedList<>();
Test allocate = runTest(CommandTest.expect(new Command.Allocate(this.card, CardConsts.KEYPAIR_BOTH, curve.getBits(), curve.getField()), ExpectedValue.SUCCESS));
diff --git a/reader/src/main/java/cz/crcs/ectester/reader/test/CardWrongSuite.java b/reader/src/main/java/cz/crcs/ectester/reader/test/CardWrongSuite.java
index c69396b..0b030b8 100644
--- a/reader/src/main/java/cz/crcs/ectester/reader/test/CardWrongSuite.java
+++ b/reader/src/main/java/cz/crcs/ectester/reader/test/CardWrongSuite.java
@@ -15,7 +15,6 @@ import cz.crcs.ectester.data.EC_Store;
import cz.crcs.ectester.reader.CardMngr;
import cz.crcs.ectester.reader.ECTesterReader;
import cz.crcs.ectester.reader.command.Command;
-import javacard.security.KeyPair;
import java.math.BigInteger;
import java.util.LinkedList;
@@ -82,8 +81,8 @@ public class CardWrongSuite extends CardTestSuite {
*/
Random r = new Random();
for (short keyLength : EC_Consts.FP_SIZES) {
- byte curve = EC_Consts.getCurve(keyLength, KeyPair.ALG_EC_FP);
- Test key = runTest(CommandTest.expect(new Command.Allocate(this.card, CardConsts.KEYPAIR_BOTH, keyLength, KeyPair.ALG_EC_FP), ExpectedValue.SUCCESS));
+ byte curve = EC_Consts.getCurve(keyLength, EC_Consts.ALG_EC_FP);
+ Test key = runTest(CommandTest.expect(new Command.Allocate(this.card, CardConsts.KEYPAIR_BOTH, keyLength, EC_Consts.ALG_EC_FP), ExpectedValue.SUCCESS));
if (!key.ok()) {
doTest(CompoundTest.all(ExpectedValue.FAILURE, "No support for " + keyLength + "b ALG_EC_FP.", key));
continue;
@@ -117,13 +116,7 @@ public class CardWrongSuite extends CardTestSuite {
Test zeroG = ecdhTest(new Command.Transform(this.card, CardConsts.KEYPAIR_BOTH, EC_Consts.KEY_BOTH, EC_Consts.PARAMETER_G, EC_Consts.TRANSFORMATION_INFINITY), "Set G = inifnity.", "ECDH with G = infinity.");
Test wrongG = CompoundTest.all(ExpectedValue.SUCCESS, "Tests with corrupted G parameter.", randomG, fullRandomG, zeroG);
- byte[] originalR = new byte[((keyLength + 7) / 8) + 1];
- short origRlen = EC_Consts.getCurveParameter(curve, EC_Consts.PARAMETER_R, originalR, (short) 0);
- if (origRlen != originalR.length) {
- byte[] copyR = new byte[origRlen];
- System.arraycopy(originalR, 0, copyR, 0, origRlen);
- originalR = copyR;
- }
+ byte[] originalR = EC_Consts.getCurveParameter(curve, EC_Consts.PARAMETER_R);
BigInteger originalBigR = new BigInteger(1, originalR);
Test zeroR = ecdhTest(new Command.Transform(this.card, CardConsts.KEYPAIR_BOTH, EC_Consts.CURVE_external, EC_Consts.PARAMETER_R, EC_Consts.TRANSFORMATION_ZERO), "Set R = 0.", "ECDH with R = 0.");
@@ -159,7 +152,7 @@ public class CardWrongSuite extends CardTestSuite {
Test wrongK = CompoundTest.all(ExpectedValue.SUCCESS, "Tests with corrupted K parameter.", bigK, zeroK);
- doTest(CompoundTest.all(ExpectedValue.SUCCESS, "Tests of " + keyLength + "b " + CardUtil.getKeyTypeString(KeyPair.ALG_EC_FP), setup, wrongPrime, resetSetup, wrongG, resetSetup.clone(), wrongR, resetSetup.clone(), wrongK, resetSetup.clone()));
+ doTest(CompoundTest.all(ExpectedValue.SUCCESS, "Tests of " + keyLength + "b " + CardUtil.getKeyTypeString(EC_Consts.ALG_EC_FP), setup, wrongPrime, resetSetup, wrongG, resetSetup.clone(), wrongR, resetSetup.clone(), wrongK, resetSetup.clone()));
}
/*
@@ -168,8 +161,8 @@ public class CardWrongSuite extends CardTestSuite {
* - e1 = e2 = e3 = 0
*/
for (short keyLength : EC_Consts.F2M_SIZES) {
- byte curve = EC_Consts.getCurve(keyLength, KeyPair.ALG_EC_F2M);
- Test key = runTest(CommandTest.expect(new Command.Allocate(this.card, CardConsts.KEYPAIR_BOTH, keyLength, KeyPair.ALG_EC_F2M), ExpectedValue.SUCCESS));
+ byte curve = EC_Consts.getCurve(keyLength, EC_Consts.ALG_EC_F2M);
+ Test key = runTest(CommandTest.expect(new Command.Allocate(this.card, CardConsts.KEYPAIR_BOTH, keyLength, EC_Consts.ALG_EC_F2M), ExpectedValue.SUCCESS));
if (!key.ok()) {
doTest(CompoundTest.all(ExpectedValue.FAILURE, "No support for " + keyLength + "b ALG_EC_F2M.", key));
continue;
@@ -191,7 +184,7 @@ public class CardWrongSuite extends CardTestSuite {
Test coeffLarger = ecdhTest(new Command.Set(this.card, CardConsts.KEYPAIR_BOTH, EC_Consts.CURVE_external, coeffParams.getParams(), coeffParams.flatten()), "Set e1=" + e1 + ", e2=" + e2 + ", e3=" + e3, "ECDH with wrong field poly, powers larger than " + keyLength);
Test wrong = CompoundTest.all(ExpectedValue.SUCCESS, "Tests with corrupted field polynomial parameter.", coeff0, coeffLarger);
- doTest(CompoundTest.all(ExpectedValue.SUCCESS, "Tests of " + keyLength + "b " + CardUtil.getKeyTypeString(KeyPair.ALG_EC_F2M), setup, wrong));
+ doTest(CompoundTest.all(ExpectedValue.SUCCESS, "Tests of " + keyLength + "b " + CardUtil.getKeyTypeString(EC_Consts.ALG_EC_F2M), setup, wrong));
}
/*