aboutsummaryrefslogtreecommitdiff
path: root/src/cz/crcs/ectester/applet/EC_Consts.java
diff options
context:
space:
mode:
authorJ08nY2017-03-24 17:11:44 +0100
committerJ08nY2017-03-24 17:11:44 +0100
commita50b554fbc577df6873705738b379fa15980d2b7 (patch)
tree68f5fcaa4eec1ceabcc40d5a1fc63eecb052a419 /src/cz/crcs/ectester/applet/EC_Consts.java
parentdd0947b2dd33baa882279a50876806cc1f0471c4 (diff)
downloadECTester-a50b554fbc577df6873705738b379fa15980d2b7.tar.gz
ECTester-a50b554fbc577df6873705738b379fa15980d2b7.tar.zst
ECTester-a50b554fbc577df6873705738b379fa15980d2b7.zip
Implemented ECDHC testing.
- also some work on ECDH/ECDHC compatibility testing - new option -dhc / --ecdhc [count] the same as ecdh option, except it does ECDHC algo
Diffstat (limited to 'src/cz/crcs/ectester/applet/EC_Consts.java')
-rw-r--r--src/cz/crcs/ectester/applet/EC_Consts.java21
1 files changed, 15 insertions, 6 deletions
diff --git a/src/cz/crcs/ectester/applet/EC_Consts.java b/src/cz/crcs/ectester/applet/EC_Consts.java
index 64f8dca..cac5d79 100644
--- a/src/cz/crcs/ectester/applet/EC_Consts.java
+++ b/src/cz/crcs/ectester/applet/EC_Consts.java
@@ -26,7 +26,7 @@ public class EC_Consts {
private static byte[] EC_F2M_F2M = null; //[short i1, short i2, short i3], f = x^m + x^i1 + x^i2 + x^i3 + 1
-
+ // EC domain parameter identifiers (bit flags)
public static final short PARAMETER_FP = 0x0001;
public static final short PARAMETER_F2M = 0x0002;
@@ -53,10 +53,18 @@ public class EC_Consts {
public static final short PARAMETERS_KEYPAIR = 0x0180;
public static final short PARAMETERS_ALL = 0x01ff;
+
+ // EC key identifiers
public static final byte KEY_PUBLIC = 0x01;
public static final byte KEY_PRIVATE = 0x02;
public static final byte KEY_BOTH = KEY_PUBLIC | KEY_PRIVATE;
+
+ // Key Agreement test identifiers
+ public static final byte KA_ECDH = 0x01;
+ public static final byte KA_ECDHC = 0x02;
+ public static final byte KA_BOTH = KA_ECDH | KA_ECDHC;
+
public static RandomData randomData = null;
@@ -1298,21 +1306,22 @@ public class EC_Consts {
size += xLength;
short offset = outputOffset;
+ outputBuffer[offset] = 0;
switch (form) {
case X962_UNCOMPRESSED:
- outputBuffer[offset] = 0x04;
+ outputBuffer[offset] = 4;
break;
+ case X962_HYBRID:
+ outputBuffer[offset] = 4;
case X962_COMPRESSED:
byte yLSB = yBuffer[(short) (yOffset + yLength)];
byte yBit = (byte) (yLSB & 0x01);
if (yBit == 1) {
- outputBuffer[offset] = 3;
+ outputBuffer[offset] += 3;
} else {
- outputBuffer[offset] = 2;
+ outputBuffer[offset] += 2;
}
- case X962_HYBRID:
- outputBuffer[offset] += 4;
break;
default:
ISOException.throwIt(ISO7816.SW_FUNC_NOT_SUPPORTED);