diff options
| author | J08nY | 2017-03-16 01:00:55 +0100 |
|---|---|---|
| committer | J08nY | 2017-03-16 01:00:55 +0100 |
| commit | 80b008850c961911ca9763947ebb6066f5288fff (patch) | |
| tree | d586320713f8704a504ab84381e9fae53cf215f7 /src/cz/crcs/ectester/applet/ECTesterApplet.java | |
| parent | 6a059501354b6b247bb8187b3f7973255176b4c0 (diff) | |
| download | ECTester-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.java | 28 |
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; |
