aboutsummaryrefslogtreecommitdiff
path: root/src/cz/crcs/ectester/applet/ECTesterApplet.java
diff options
context:
space:
mode:
authorJ08nY2017-03-16 01:00:55 +0100
committerJ08nY2017-03-16 01:00:55 +0100
commit80b008850c961911ca9763947ebb6066f5288fff (patch)
treed586320713f8704a504ab84381e9fae53cf215f7 /src/cz/crcs/ectester/applet/ECTesterApplet.java
parent6a059501354b6b247bb8187b3f7973255176b4c0 (diff)
downloadECTester-80b008850c961911ca9763947ebb6066f5288fff.tar.gz
ECTester-80b008850c961911ca9763947ebb6066f5288fff.tar.zst
ECTester-80b008850c961911ca9763947ebb6066f5288fff.zip
Cleanup, add ECDH corruption tests.
Reader: - added ECDH corruption tests - fixed EC_Data keys.xml search path - added more output to --list-named / -ln Both: - changed up ECDH command to support arbitrary temporary pubkey corruption
Diffstat (limited to 'src/cz/crcs/ectester/applet/ECTesterApplet.java')
-rw-r--r--src/cz/crcs/ectester/applet/ECTesterApplet.java28
1 files changed, 11 insertions, 17 deletions
diff --git a/src/cz/crcs/ectester/applet/ECTesterApplet.java b/src/cz/crcs/ectester/applet/ECTesterApplet.java
index 6623647..cdb0fbd 100644
--- a/src/cz/crcs/ectester/applet/ECTesterApplet.java
+++ b/src/cz/crcs/ectester/applet/ECTesterApplet.java
@@ -324,7 +324,7 @@ public class ECTesterApplet extends Applet {
* @param apdu P1 = byte pubkey (KEYPAIR_*)
* P2 = byte privkey (KEYPAIR_*)
* DATA = byte export (EXPORT_TRUE || EXPORT_FALSE)
- * byte invalid (00 = valid, !00 = invalid)
+ * byte corruption (00 = valid, !00 = invalid)
*/
private void insECDH(APDU apdu) {
apdu.setIncomingAndReceive();
@@ -333,9 +333,9 @@ public class ECTesterApplet extends Applet {
byte pubkey = apdubuf[ISO7816.OFFSET_P1];
byte privkey = apdubuf[ISO7816.OFFSET_P2];
byte export = apdubuf[ISO7816.OFFSET_CDATA];
- byte invalid = apdubuf[(short) (ISO7816.OFFSET_CDATA + 1)];
+ byte corruption = apdubuf[(short) (ISO7816.OFFSET_CDATA + 1)];
- short len = ecdh(pubkey, privkey, export, invalid, apdubuf, (short) 0);
+ short len = ecdh(pubkey, privkey, export, corruption, apdubuf, (short) 0);
apdu.setOutgoingAndSend((short) 0, len);
}
@@ -436,7 +436,6 @@ public class ECTesterApplet extends Applet {
}
/**
- *
* @param keyPair KeyPair to corrupt
* @param key key to corrupt (EC_Consts.KEY_* | ...)
* @param params parameters to corrupt (EC_Consts.PARAMETER_* | ...)
@@ -494,26 +493,21 @@ public class ECTesterApplet extends Applet {
}
/**
- * @param pubkey keyPair to use for public key, (KEYPAIR_LOCAL || KEYPAIR_REMOTE)
- * @param privkey keyPair to use for private key, (KEYPAIR_LOCAL || KEYPAIR_REMOTE)
- * @param export whether to export ECDH secret
- * @param invalid whether to invalidate the pubkey before ECDH
- * @param buffer buffer to write sw to, and export ECDH secret {@code if(export == EXPORT_TRUE)}
- * @param offset output offset in buffer
+ * @param pubkey keyPair to use for public key, (KEYPAIR_LOCAL || KEYPAIR_REMOTE)
+ * @param privkey keyPair to use for private key, (KEYPAIR_LOCAL || KEYPAIR_REMOTE)
+ * @param export whether to export ECDH secret
+ * @param corruption whether to invalidate the pubkey before ECDH
+ * @param buffer buffer to write sw to, and export ECDH secret {@code if(export == EXPORT_TRUE)}
+ * @param offset output offset in buffer
* @return length of data written to the buffer
*/
- private short ecdh(byte pubkey, byte privkey, byte export, byte invalid, byte[] buffer, short offset) {
+ private short ecdh(byte pubkey, byte privkey, byte export, byte corruption, byte[] buffer, short offset) {
short length = 0;
KeyPair pub = ((pubkey & KEYPAIR_LOCAL) != 0) ? localKeypair : remoteKeypair;
KeyPair priv = ((privkey & KEYPAIR_LOCAL) != 0) ? localKeypair : remoteKeypair;
- short secretLength;
- if (invalid != 0) {
- secretLength = keyTester.testECDH_invalidPoint((ECPrivateKey) priv.getPrivate(), (ECPublicKey) pub.getPublic(), ramArray, (short) 0, ramArray2, (short) 0);
- } else {
- secretLength = keyTester.testECDH_validPoint((ECPrivateKey) priv.getPrivate(), (ECPublicKey) pub.getPublic(), ramArray, (short) 0, ramArray2, (short) 0);
- }
+ short secretLength = keyTester.testECDH((ECPrivateKey) priv.getPrivate(), (ECPublicKey) pub.getPublic(), ramArray, (short) 0, ramArray2, (short) 0, corruption);
Util.setShort(buffer, offset, keyTester.getSW());
length += 2;