aboutsummaryrefslogtreecommitdiff
path: root/src/cz/crcs/ectester/applet/ECKeyTester.java
diff options
context:
space:
mode:
authorJ08nY2017-04-15 01:27:24 +0200
committerJ08nY2017-04-15 01:32:41 +0200
commit914931cfea79c7947b180069b0e67cc208971869 (patch)
tree0654e07bc134ad9bfbf7661bee076aa4c0890436 /src/cz/crcs/ectester/applet/ECKeyTester.java
parent45d1bb40cbc4c71e5b94e78f3a541e8f9cd8d62f (diff)
downloadECTester-914931cfea79c7947b180069b0e67cc208971869.tar.gz
ECTester-914931cfea79c7947b180069b0e67cc208971869.tar.zst
ECTester-914931cfea79c7947b180069b0e67cc208971869.zip
Diffstat (limited to 'src/cz/crcs/ectester/applet/ECKeyTester.java')
-rw-r--r--src/cz/crcs/ectester/applet/ECKeyTester.java29
1 files changed, 29 insertions, 0 deletions
diff --git a/src/cz/crcs/ectester/applet/ECKeyTester.java b/src/cz/crcs/ectester/applet/ECKeyTester.java
index e22094b..64f3024 100644
--- a/src/cz/crcs/ectester/applet/ECKeyTester.java
+++ b/src/cz/crcs/ectester/applet/ECKeyTester.java
@@ -3,6 +3,7 @@ package cz.crcs.ectester.applet;
import javacard.framework.CardRuntimeException;
import javacard.framework.ISO7816;
+import javacard.framework.Util;
import javacard.security.ECPrivateKey;
import javacard.security.ECPublicKey;
import javacard.security.KeyAgreement;
@@ -105,6 +106,34 @@ public class ECKeyTester {
}
/**
+ *
+ * @param privateKey
+ * @param publicKey
+ * @param pubkeyBuffer
+ * @param pubkeyOffset
+ * @param outputBuffer
+ * @param outputOffset
+ * @param corruption
+ * @return
+ */
+ public short testKA(ECPrivateKey privateKey, ECPublicKey publicKey, byte[] pubkeyBuffer, short pubkeyOffset, byte[] outputBuffer, short outputOffset, byte corruption) {
+ short ecdhLength = testECDH(privateKey, publicKey, pubkeyBuffer, pubkeyOffset, outputBuffer, outputOffset, corruption);
+ if (sw != ISO7816.SW_NO_ERROR) {
+ return ecdhLength;
+ }
+ short ecdhcLength = testECDHC(privateKey, publicKey, pubkeyBuffer, pubkeyOffset, outputBuffer, (short) (outputOffset + ecdhLength), corruption);
+ short length = (short) (ecdhLength + ecdhcLength);
+ if (sw != ISO7816.SW_NO_ERROR) {
+ return length;
+ }
+ if (Util.arrayCompare(outputBuffer, outputOffset, outputBuffer, (short)(outputOffset + ecdhLength), ecdhLength) != 0) {
+ sw = ECTesterApplet.SW_DH_DHC_MISMATCH;
+ }
+ return length;
+
+ }
+
+ /**
* Uses {@code signKey} to sign data from {@code inputBuffer} at {@code inputOffset} with {@code inputOffset}.
* Then checks for correct signature length.
* Then tries verifying the data with {@code verifyKey}.