summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJ08nY2018-07-23 01:13:36 +0200
committerJ08nY2018-07-23 01:13:36 +0200
commit2f97eed2f68e163e3cccb3c5a04ed60cdcfa17dd (patch)
tree38a9cf358dfddcaabdc00ccbbee3600891ddeab7
parentc04d4fdc26f7483beb4e56e838f9ba0c2e81560b (diff)
downloadECTester-2f97eed2f68e163e3cccb3c5a04ed60cdcfa17dd.tar.gz
ECTester-2f97eed2f68e163e3cccb3c5a04ed60cdcfa17dd.tar.zst
ECTester-2f97eed2f68e163e3cccb3c5a04ed60cdcfa17dd.zip
-rw-r--r--src/cz/crcs/ectester/common/ec/EC_Params.java11
-rw-r--r--src/cz/crcs/ectester/reader/ECTesterReader.java18
2 files changed, 17 insertions, 12 deletions
diff --git a/src/cz/crcs/ectester/common/ec/EC_Params.java b/src/cz/crcs/ectester/common/ec/EC_Params.java
index ef3019d..b08fdfd 100644
--- a/src/cz/crcs/ectester/common/ec/EC_Params.java
+++ b/src/cz/crcs/ectester/common/ec/EC_Params.java
@@ -9,10 +9,11 @@ import java.util.List;
/**
* A list of EC parameters, can contain a subset of the Fp/F2M, A, B, G, R, K, W, S parameters.
- *
+ * <p>
* The set of parameters is uniquely identified by a short bit string.
* The parameters can be exported to a byte array via <code>flatten()</code> or to a comma delimited
* string via <code>expand()</code>.
+ *
* @author Jan Jancar johny@neuromancer.sk
*/
public class EC_Params extends EC_Data {
@@ -61,15 +62,15 @@ public class EC_Params extends EC_Data {
if (masked == EC_Consts.PARAMETER_F2M) {
result = new byte[4][];
result[0] = data[i].clone();
- result[1] = data[i+1].clone();
- result[2] = data[i+2].clone();
- result[3] = data[i+3].clone();
+ result[1] = data[i + 1].clone();
+ result[2] = data[i + 2].clone();
+ result[3] = data[i + 3].clone();
break;
}
if (masked == EC_Consts.PARAMETER_G || masked == EC_Consts.PARAMETER_W) {
result = new byte[2][];
result[0] = data[i].clone();
- result[1] = data[i+1].clone();
+ result[1] = data[i + 1].clone();
break;
}
result = new byte[1][];
diff --git a/src/cz/crcs/ectester/reader/ECTesterReader.java b/src/cz/crcs/ectester/reader/ECTesterReader.java
index e8863dc..4a7d779 100644
--- a/src/cz/crcs/ectester/reader/ECTesterReader.java
+++ b/src/cz/crcs/ectester/reader/ECTesterReader.java
@@ -369,10 +369,10 @@ public class ECTesterReader {
// Cofactor generally isn't set on the default curve parameters on cards,
// since its not necessary for ECDH, only ECDHC which not many cards implement
// TODO: check if its assumend to be == 1?
- short domainAll = cfg.primeField ? EC_Consts.PARAMETERS_DOMAIN_FP : EC_Consts.PARAMETERS_DOMAIN_F2M;
- short domain = (short) (domainAll ^ EC_Consts.PARAMETER_K);
- Response.Export export = new Command.Export(cardManager, ECTesterApplet.KEYPAIR_LOCAL, EC_Consts.KEY_PUBLIC, domainAll).send();
+ short domain = cfg.primeField ? EC_Consts.PARAMETERS_DOMAIN_FP : EC_Consts.PARAMETERS_DOMAIN_F2M;
+ Response.Export export = new Command.Export(cardManager, ECTesterApplet.KEYPAIR_LOCAL, EC_Consts.KEY_PUBLIC, domain).send();
if (!export.successful()) {
+ domain = (short) (domain ^ EC_Consts.PARAMETER_K);
export = new Command.Export(cardManager, ECTesterApplet.KEYPAIR_LOCAL, EC_Consts.KEY_PUBLIC, domain).send();
}
sent.add(export);
@@ -385,10 +385,14 @@ public class ECTesterReader {
respWriter.outputResponse(cleanup);
}
- EC_Params exported = new EC_Params(domain, export.getParams());
-
- OutputStream out = FileUtil.openStream(cfg.outputs);
- exported.writeCSV(out);
+ PrintStream out = new PrintStream(FileUtil.openStream(cfg.outputs));
+ byte[][] params = export.getParams();
+ for (int i = 0; i < params.length; ++i) {
+ out.print(ByteUtil.bytesToHex(params[i], false));
+ if (i != params.length - 1) {
+ out.print(",");
+ }
+ }
out.close();
}