aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/cz/crcs/ectester/applet/ECKeyGenerator.java9
-rw-r--r--src/cz/crcs/ectester/reader/ECTesterReader.java4
-rw-r--r--src/cz/crcs/ectester/reader/command/Command.java9
3 files changed, 15 insertions, 7 deletions
diff --git a/src/cz/crcs/ectester/applet/ECKeyGenerator.java b/src/cz/crcs/ectester/applet/ECKeyGenerator.java
index 7c52e8f..4326752 100644
--- a/src/cz/crcs/ectester/applet/ECKeyGenerator.java
+++ b/src/cz/crcs/ectester/applet/ECKeyGenerator.java
@@ -204,11 +204,10 @@ public class ECKeyGenerator {
short i1 = Util.getShort(data, (short) (offset + 2));
short i2 = Util.getShort(data, (short) (offset + 4));
short i3 = Util.getShort(data, (short) (offset + 6));
-// if ((key & EC_Consts.KEY_PUBLIC) != 0) ecPublicKey.setFieldF2M(i1, i2, i3);
-// if ((key & EC_Consts.KEY_PRIVATE) != 0) ecPrivateKey.setFieldF2M(i1, i2, i3);
- // TODO: fix this, ^^ fails on jcardsim, but is up to spec
- if ((key & EC_Consts.KEY_PUBLIC) != 0) ecPublicKey.setFieldF2M(i3, i2, i1);
- if ((key & EC_Consts.KEY_PRIVATE) != 0) ecPrivateKey.setFieldF2M(i3, i2, i1);
+ if ((key & EC_Consts.KEY_PUBLIC) != 0) ecPublicKey.setFieldF2M(i1, i2, i3);
+ if ((key & EC_Consts.KEY_PRIVATE) != 0) ecPrivateKey.setFieldF2M(i1, i2, i3);
+ // if ((key & EC_Consts.KEY_PUBLIC) != 0) ecPublicKey.setFieldF2M(i3, i2, i1);
+ // if ((key & EC_Consts.KEY_PRIVATE) != 0) ecPrivateKey.setFieldF2M(i3, i2, i1);
} else {
sw = ISO7816.SW_UNKNOWN;
}
diff --git a/src/cz/crcs/ectester/reader/ECTesterReader.java b/src/cz/crcs/ectester/reader/ECTesterReader.java
index 1359dc2..2a74ea7 100644
--- a/src/cz/crcs/ectester/reader/ECTesterReader.java
+++ b/src/cz/crcs/ectester/reader/ECTesterReader.java
@@ -424,10 +424,10 @@ public class ECTesterReader {
*/
private void generate() throws CardException, IOException {
byte keyClass = cfg.primeField ? KeyPair.ALG_EC_FP : KeyPair.ALG_EC_F2M;
+ Command curve = Command.prepareCurve(cardManager, EC_Store.getInstance(), cfg, ECTesterApplet.KEYPAIR_LOCAL, cfg.bits, keyClass);
Response allocate = new Command.Allocate(cardManager, ECTesterApplet.KEYPAIR_LOCAL, cfg.bits, keyClass).send();
respWriter.outputResponse(allocate);
- Command curve = Command.prepareCurve(cardManager, EC_Store.getInstance(), cfg, ECTesterApplet.KEYPAIR_LOCAL, cfg.bits, keyClass);
OutputStreamWriter keysFile = FileUtil.openFiles(cfg.outputs);
keysFile.write("index;time;pubW;privS\n");
@@ -552,10 +552,10 @@ public class ECTesterReader {
*/
private void ecdh() throws IOException, CardException {
byte keyClass = cfg.primeField ? KeyPair.ALG_EC_FP : KeyPair.ALG_EC_F2M;
+ Command curve = Command.prepareCurve(cardManager, EC_Store.getInstance(), cfg, ECTesterApplet.KEYPAIR_BOTH, cfg.bits, keyClass);
List<Response> prepare = new LinkedList<>();
prepare.add(new Command.AllocateKeyAgreement(cardManager, cfg.ECKAType).send()); // Prepare KeyAgreement or required type
prepare.add(new Command.Allocate(cardManager, ECTesterApplet.KEYPAIR_BOTH, cfg.bits, keyClass).send());
- Command curve = Command.prepareCurve(cardManager, EC_Store.getInstance(), cfg, ECTesterApplet.KEYPAIR_BOTH, cfg.bits, keyClass);
if (curve != null)
prepare.add(curve.send());
diff --git a/src/cz/crcs/ectester/reader/command/Command.java b/src/cz/crcs/ectester/reader/command/Command.java
index d2e08ee..7a3f3b0 100644
--- a/src/cz/crcs/ectester/reader/command/Command.java
+++ b/src/cz/crcs/ectester/reader/command/Command.java
@@ -133,6 +133,9 @@ public abstract class Command implements Cloneable {
} else {
keypair = dataStore.getObject(EC_Keypair.class, cfg.namedKey);
}
+ if (keypair == null) {
+ throw new IOException("KeyPair not found.");
+ }
data = keypair.flatten();
if (data == null) {
@@ -155,6 +158,9 @@ public abstract class Command implements Cloneable {
pub = dataStore.getObject(EC_Keypair.class, cfg.namedPublicKey);
}
}
+ if (pub == null) {
+ throw new IOException("Public key not found.");
+ }
byte[] pubkey = pub.flatten(EC_Consts.PARAMETER_W);
if (pubkey == null) {
@@ -177,6 +183,9 @@ public abstract class Command implements Cloneable {
priv = dataStore.getObject(EC_Keypair.class, cfg.namedPrivateKey);
}
}
+ if (priv == null) {
+ throw new IOException("Private key not found.");
+ }
byte[] privkey = priv.flatten(EC_Consts.PARAMETER_S);
if (privkey == null) {