diff options
| author | J08nY | 2017-05-01 16:01:11 +0200 |
|---|---|---|
| committer | J08nY | 2017-05-01 16:01:11 +0200 |
| commit | ded7d49b3f23c140d1e10fe018e0dc42f19d526e (patch) | |
| tree | a0c6fc4560c63cf0cc5098c20a316ef30ab09b21 | |
| parent | 6238d40a1fa44bfbaa251620eb83c3aa803d626e (diff) | |
| download | ECTester-ded7d49b3f23c140d1e10fe018e0dc42f19d526e.tar.gz ECTester-ded7d49b3f23c140d1e10fe018e0dc42f19d526e.tar.zst ECTester-ded7d49b3f23c140d1e10fe018e0dc42f19d526e.zip | |
| -rw-r--r-- | src/cz/crcs/ectester/applet/ECKeyTester.java | 85 | ||||
| -rw-r--r-- | src/cz/crcs/ectester/applet/ECTesterApplet.java | 40 | ||||
| -rw-r--r-- | src/cz/crcs/ectester/applet/EC_Consts.java | 160 | ||||
| -rw-r--r-- | src/cz/crcs/ectester/reader/Command.java | 15 | ||||
| -rw-r--r-- | src/cz/crcs/ectester/reader/Response.java | 4 | ||||
| -rw-r--r-- | src/cz/crcs/ectester/reader/TestSuite.java | 1 | ||||
| -rw-r--r-- | src/cz/crcs/ectester/reader/Util.java | 12 |
7 files changed, 165 insertions, 152 deletions
diff --git a/src/cz/crcs/ectester/applet/ECKeyTester.java b/src/cz/crcs/ectester/applet/ECKeyTester.java index aac4656..1d113ae 100644 --- a/src/cz/crcs/ectester/applet/ECKeyTester.java +++ b/src/cz/crcs/ectester/applet/ECKeyTester.java @@ -50,7 +50,7 @@ public class ECKeyTester { return sw; } - private short testKA(KeyAgreement ka, KeyPair privatePair, KeyPair publicPair, byte[] pubkeyBuffer, short pubkeyOffset, byte[] outputBuffer, short outputOffset, byte corruption) { + private short testKA(KeyAgreement ka, KeyPair privatePair, KeyPair publicPair, byte[] pubkeyBuffer, short pubkeyOffset, byte[] outputBuffer, short outputOffset, short corruption) { short length = 0; try { sw = ECUtil.kaCheck(ka); @@ -72,16 +72,16 @@ public class ECKeyTester { * Uses {@code pubkeyBuffer} at {@code pubkeyOffset} for computations. * Output should equal with ECDHC output. * - * @param privatePair - * @param publicPair - * @param pubkeyBuffer - * @param pubkeyOffset - * @param outputBuffer - * @param outputOffset - * @param corruption + * @param privatePair KeyPair from which the private key is used + * @param publicPair KeyPair from which the public key is used + * @param pubkeyBuffer buffer to be used for the public key + * @param pubkeyOffset offset into pubkeyBuffer that can be used for the public key + * @param outputBuffer buffer to be used for the secret output + * @param outputOffset offset into the outputBuffer + * @param corruption (EC_Consts.CORRUPTION_* | ...) * @return derived secret length **/ - public short testECDH(KeyPair privatePair, KeyPair publicPair, byte[] pubkeyBuffer, short pubkeyOffset, byte[] outputBuffer, short outputOffset, byte corruption) { + public short testECDH(KeyPair privatePair, KeyPair publicPair, byte[] pubkeyBuffer, short pubkeyOffset, byte[] outputBuffer, short outputOffset, short corruption) { return testKA(ecdhKeyAgreement, privatePair, publicPair, pubkeyBuffer, pubkeyOffset, outputBuffer, outputOffset, corruption); } @@ -90,31 +90,30 @@ public class ECKeyTester { * Uses {@code pubkeyBuffer} at {@code pubkeyOffset} for computations. * Output should equal to ECDH output. * - * @param privatePair - * @param publicPair - * @param pubkeyBuffer - * @param pubkeyOffset - * @param outputBuffer - * @param outputOffset - * @param corruption + * @param privatePair KeyPair from which the private key is used + * @param publicPair KeyPair from which the public key is used + * @param pubkeyBuffer buffer to be used for the public key + * @param pubkeyOffset offset into pubkeyBuffer that can be used for the public key + * @param outputBuffer buffer to be used for the secret output + * @param outputOffset offset into the outputBuffer + * @param corruption (EC_Consts.CORRUPTION_* | ...) * @return derived secret length */ - public short testECDHC(KeyPair privatePair, KeyPair publicPair, byte[] pubkeyBuffer, short pubkeyOffset, byte[] outputBuffer, short outputOffset, byte corruption) { + public short testECDHC(KeyPair privatePair, KeyPair publicPair, byte[] pubkeyBuffer, short pubkeyOffset, byte[] outputBuffer, short outputOffset, short corruption) { return testKA(ecdhcKeyAgreement, privatePair, publicPair, pubkeyBuffer, pubkeyOffset, outputBuffer, outputOffset, corruption); } /** - * - * @param privatePair - * @param publicPair - * @param pubkeyBuffer - * @param pubkeyOffset - * @param outputBuffer - * @param outputOffset - * @param corruption + * @param privatePair KeyPair from which the private key is used + * @param publicPair KeyPair from which the public key is used + * @param pubkeyBuffer buffer to be used for the public key + * @param pubkeyOffset offset into pubkeyBuffer that can be used for the public key + * @param outputBuffer buffer to be used for the secret output + * @param outputOffset offset into the outputBuffer + * @param corruption (EC_Consts.CORRUPTION_* | ...) * @return */ - public short testBOTH(KeyPair privatePair, KeyPair publicPair, byte[] pubkeyBuffer, short pubkeyOffset, byte[] outputBuffer, short outputOffset, byte corruption) { + public short testBOTH(KeyPair privatePair, KeyPair publicPair, byte[] pubkeyBuffer, short pubkeyOffset, byte[] outputBuffer, short outputOffset, short corruption) { short ecdhLength = testECDH(privatePair, publicPair, pubkeyBuffer, pubkeyOffset, outputBuffer, outputOffset, corruption); if (sw != ISO7816.SW_NO_ERROR) { return ecdhLength; @@ -124,7 +123,7 @@ public class ECKeyTester { if (sw != ISO7816.SW_NO_ERROR) { return length; } - if (Util.arrayCompare(outputBuffer, outputOffset, outputBuffer, (short)(outputOffset + ecdhLength), ecdhLength) != 0) { + if (Util.arrayCompare(outputBuffer, outputOffset, outputBuffer, (short) (outputOffset + ecdhLength), ecdhLength) != 0) { sw = ECTesterApplet.SW_DH_DHC_MISMATCH; } return length; @@ -132,34 +131,34 @@ public class ECKeyTester { } /** - * - * @param privatePair - * @param publicPair - * @param pubkeyBuffer - * @param pubkeyOffset - * @param outputBuffer - * @param outputOffset - * @param corruption + * @param privatePair KeyPair from which the private key is used + * @param publicPair KeyPair from which the public key is used + * @param pubkeyBuffer buffer to be used for the public key + * @param pubkeyOffset offset into pubkeyBuffer that can be used for the public key + * @param outputBuffer buffer to be used for the secret output + * @param outputOffset offset into the outputBuffer + * @param corruption (EC_Consts.CORRUPTION_* | ...) * @return */ - public short testANY(KeyPair privatePair, KeyPair publicPair, byte[] pubkeyBuffer, short pubkeyOffset, byte[]outputBuffer, short outputOffset, byte corruption) { + public short testANY(KeyPair privatePair, KeyPair publicPair, byte[] pubkeyBuffer, short pubkeyOffset, byte[] outputBuffer, short outputOffset, short corruption) { short ecdhLength = testECDH(privatePair, publicPair, pubkeyBuffer, pubkeyOffset, outputBuffer, outputOffset, corruption); if (sw == ISO7816.SW_NO_ERROR) return ecdhLength; return testECDHC(privatePair, publicPair, pubkeyBuffer, pubkeyOffset, outputBuffer, outputOffset, corruption); } + /** * 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}. * - * @param signKey - * @param verifyKey - * @param inputBuffer - * @param inputOffset - * @param inputLength - * @param sigBuffer - * @param sigOffset + * @param signKey key to use for signing + * @param verifyKey key to use for verifying the signature + * @param inputBuffer buffer to sign data from + * @param inputOffset offset into inputBuffer to sign data from + * @param inputLength length of data to sign + * @param sigBuffer buffer to output signature to + * @param sigOffset offset into sigBuffer to output to * @return signature length */ public short testECDSA(ECPrivateKey signKey, ECPublicKey verifyKey, byte[] inputBuffer, short inputOffset, short inputLength, byte[] sigBuffer, short sigOffset) { diff --git a/src/cz/crcs/ectester/applet/ECTesterApplet.java b/src/cz/crcs/ectester/applet/ECTesterApplet.java index 88d1b8c..4e586ec 100644 --- a/src/cz/crcs/ectester/applet/ECTesterApplet.java +++ b/src/cz/crcs/ectester/applet/ECTesterApplet.java @@ -340,7 +340,7 @@ public class ECTesterApplet extends Applet { * @param apdu P1 = byte pubkey (KEYPAIR_*) * P2 = byte privkey (KEYPAIR_*) * DATA = byte export (EXPORT_TRUE || EXPORT_FALSE) - * byte corruption (00 = valid, !00 = invalid) + * short corruption (EC_Consts.CORRUPTION_* | ...) * byte type (EC_Consts.KA_* | ...) */ private void insECDH(APDU apdu) { @@ -350,8 +350,8 @@ public class ECTesterApplet extends Applet { byte pubkey = apdubuf[ISO7816.OFFSET_P1]; byte privkey = apdubuf[ISO7816.OFFSET_P2]; byte export = apdubuf[ISO7816.OFFSET_CDATA]; - byte corruption = apdubuf[(short) (ISO7816.OFFSET_CDATA + 1)]; - byte type = apdubuf[(short) (ISO7816.OFFSET_CDATA + 2)]; + short corruption = Util.getShort(apdubuf, (short) (ISO7816.OFFSET_CDATA + 1)); + byte type = apdubuf[(short) (ISO7816.OFFSET_CDATA + 3)]; short len = ecdh(pubkey, privkey, export, corruption, type, apdubuf, (short) 0); @@ -386,8 +386,9 @@ public class ECTesterApplet extends Applet { } /** + * Performs card memory cleanup via JCSystem.requestObjectDeletion() * - * @param apdu + * @param apdu no data */ private void insCleanup(APDU apdu) { apdu.setIncomingAndReceive(); @@ -399,8 +400,10 @@ public class ECTesterApplet extends Applet { } /** + * Returns data about card support for various EC related tasks collected on applet + * install. * - * @param apdu + * @param apdu no data */ private void insSupport(APDU apdu) { apdu.setIncomingAndReceive(); @@ -541,12 +544,12 @@ public class ECTesterApplet extends Applet { * @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 type + * @param type KeyAgreement type to test (EC_Consts.KA_* || ...) * @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 corruption, byte type, byte[] buffer, short offset) { + private short ecdh(byte pubkey, byte privkey, byte export, short corruption, byte type, byte[] buffer, short offset) { short length = 0; KeyPair pub = ((pubkey & KEYPAIR_LOCAL) != 0) ? localKeypair : remoteKeypair; @@ -564,7 +567,7 @@ public class ECTesterApplet extends Applet { secretLength = keyTester.testBOTH(priv, pub, ramArray, (short) 0, ramArray2, (short) 0, corruption); break; case EC_Consts.KA_ANY: - secretLength = keyTester.testANY(priv, pub, ramArray, (short) 0, ramArray2, (short)0, corruption); + secretLength = keyTester.testANY(priv, pub, ramArray, (short) 0, ramArray2, (short) 0, corruption); break; default: ISOException.throwIt(ISO7816.SW_FUNC_NOT_SUPPORTED); @@ -619,9 +622,9 @@ public class ECTesterApplet extends Applet { } /** - * @param buffer - * @param offset - * @return + * @param buffer buffer to write sw to + * @param offset output offset in buffer + * @return length of data written to the buffer */ private short cleanup(byte[] buffer, short offset) { short sw = ISO7816.SW_NO_ERROR; @@ -637,10 +640,9 @@ public class ECTesterApplet extends Applet { } /** - * - * @param buffer - * @param offset - * @return + * @param buffer buffer to write sw to + * @param offset output offset in buffer + * @return length of data written to the buffer */ private short support(byte[] buffer, short offset) { @@ -650,14 +652,14 @@ public class ECTesterApplet extends Applet { Util.setShort(buffer, offset, ISO7816.SW_INS_NOT_SUPPORTED); } if (keyTester.hasECDHC()) { - Util.setShort(buffer, (short) (offset+2), ecdhcSW); + Util.setShort(buffer, (short) (offset + 2), ecdhcSW); } else { - Util.setShort(buffer, (short) (offset+2), ISO7816.SW_INS_NOT_SUPPORTED); + Util.setShort(buffer, (short) (offset + 2), ISO7816.SW_INS_NOT_SUPPORTED); } if (keyTester.hasECDSA()) { - Util.setShort(buffer, (short) (offset+4), ecdsaSW); + Util.setShort(buffer, (short) (offset + 4), ecdsaSW); } else { - Util.setShort(buffer, (short) (offset+4), ISO7816.SW_INS_NOT_SUPPORTED); + Util.setShort(buffer, (short) (offset + 4), ISO7816.SW_INS_NOT_SUPPORTED); } return 6; diff --git a/src/cz/crcs/ectester/applet/EC_Consts.java b/src/cz/crcs/ectester/applet/EC_Consts.java index 1334541..f749af5 100644 --- a/src/cz/crcs/ectester/applet/EC_Consts.java +++ b/src/cz/crcs/ectester/applet/EC_Consts.java @@ -950,18 +950,16 @@ public class EC_Consts { // getCorruptCurveParameter PARAMETER_CORRUPTION TYPES - public static final byte CORRUPTION_NONE = (byte) 0x00; - public static final byte CORRUPTION_FIXED = (byte) 0x01; - public static final byte CORRUPTION_FULLRANDOM = (byte) 0x02; - public static final byte CORRUPTION_ONEBYTERANDOM = (byte) 0x03; - public static final byte CORRUPTION_ZERO = (byte) 0x04; - public static final byte CORRUPTION_ONE = (byte) 0x05; - public static final byte CORRUPTION_MAX = (byte) 0x06; - public static final byte CORRUPTION_INCREMENT = (byte) 0x07; - public static final byte CORRUPTION_INFINITY = (byte) 0x08; - public static final byte CORRUPTION_PREFIX_COMPRESSED = (byte) 0x09; - public static final byte CORRUPTION_PREFIX_HYBRID = (byte) 0x0a; - public static final byte CORRUPTION_PREFIX_UNCOMPRESSED = (byte) 0x0b; + public static final short CORRUPTION_NONE = (short) 0x00; + public static final short CORRUPTION_FIXED = (short) 0x01; + public static final short CORRUPTION_FULLRANDOM = (short) 0x02; + public static final short CORRUPTION_ONEBYTERANDOM = (short) 0x04; + public static final short CORRUPTION_ZERO = (short) 0x08; + public static final short CORRUPTION_ONE = (short) 0x10; + public static final short CORRUPTION_MAX = (short) 0x20; + public static final short CORRUPTION_INCREMENT = (short) 0x40; + public static final short CORRUPTION_INFINITY = (short) 0x80; + public static final short CORRUPTION_COMPRESS = (short) 0x0100; // toX962 FORM types public static final byte X962_UNCOMPRESSED = (byte) 0x00; @@ -1242,71 +1240,89 @@ public class EC_Consts { return length; } - public static short corruptParameter(byte corruption, byte[] buffer, short offset, short length) { - switch (corruption) { - case CORRUPTION_NONE: - break; - case CORRUPTION_FIXED: - if (length >= 1) { - buffer[offset] = (byte) 0xcc; - buffer[(short) (offset + length - 1)] = (byte) 0xcc; - } - break; - case CORRUPTION_FULLRANDOM: - randomData.generateData(buffer, offset, length); - break; - case CORRUPTION_ONEBYTERANDOM: - short first = Util.getShort(buffer, (short) 0); // save first two bytes + public static short corruptParameter(short corruption, byte[] buffer, short offset, short length) { + if (corruption == CORRUPTION_NONE) { + return length; + } - randomData.generateData(buffer, (short) 0, (short) 2); // generate position - short rngPos = Util.getShort(buffer, (short) 0); // save generated position + short corruptionMask = CORRUPTION_FIXED; + while (corruptionMask <= CORRUPTION_COMPRESS) { + short corruptionPart = (short) (corruptionMask & corruption); + switch (corruptionPart) { + case 0: + break; + case CORRUPTION_FIXED: + if (length >= 1) { + buffer[offset] = (byte) 0xcc; + buffer[(short) (offset + length - 1)] = (byte) 0xcc; + } + break; + case CORRUPTION_FULLRANDOM: + randomData.generateData(buffer, offset, length); + break; + case CORRUPTION_ONEBYTERANDOM: + short first = Util.getShort(buffer, (short) 0); // save first two bytes - Util.setShort(buffer, (short) 0, first); // restore first two bytes + randomData.generateData(buffer, (short) 0, (short) 2); // generate position + short rngPos = Util.getShort(buffer, (short) 0); // save generated position - if (rngPos < 0) { // make positive - rngPos = (short) -rngPos; - } - rngPos %= length; // make < param length + Util.setShort(buffer, (short) 0, first); // restore first two bytes - byte original = buffer[rngPos]; - do { - randomData.generateData(buffer, rngPos, (short) 1); - } while (original == buffer[rngPos]); - break; - case CORRUPTION_ZERO: - Util.arrayFillNonAtomic(buffer, offset, length, (byte) 0); - break; - case CORRUPTION_ONE: - Util.arrayFillNonAtomic(buffer, offset, length, (byte) 0); - buffer[(short) (offset + length)] = (byte) 1; - break; - case CORRUPTION_MAX: - Util.arrayFillNonAtomic(buffer, offset, length, (byte) 1); - break; - case CORRUPTION_INCREMENT: - short index = (short) (offset + length - 1); - byte value; - do { - value = buffer[index]; - buffer[index--] = ++value; - } while (value == (byte) 0 && index >= offset); - break; - case CORRUPTION_INFINITY: - Util.arrayFillNonAtomic(buffer, offset, length, (byte) 0); - return 1; - case CORRUPTION_PREFIX_COMPRESSED: - buffer[offset] = 2; - break; - case CORRUPTION_PREFIX_HYBRID: - buffer[offset] = 6; - break; - case CORRUPTION_PREFIX_UNCOMPRESSED: - buffer[offset] = 4; - break; - default: - ISOException.throwIt(ISO7816.SW_FUNC_NOT_SUPPORTED); - } + if (rngPos < 0) { // make positive + rngPos = (short) -rngPos; + } + rngPos %= length; // make < param length + + byte original = buffer[rngPos]; + do { + randomData.generateData(buffer, rngPos, (short) 1); + } while (original == buffer[rngPos]); + break; + case CORRUPTION_ZERO: + Util.arrayFillNonAtomic(buffer, offset, length, (byte) 0); + break; + case CORRUPTION_ONE: + Util.arrayFillNonAtomic(buffer, offset, length, (byte) 0); + buffer[(short) (offset + length)] = (byte) 1; + break; + case CORRUPTION_MAX: + Util.arrayFillNonAtomic(buffer, offset, length, (byte) 1); + break; + case CORRUPTION_INCREMENT: + short index = (short) (offset + length - 1); + byte value; + do { + value = buffer[index]; + buffer[index--] = ++value; + } while (value == (byte) 0 && index >= offset); + break; + case CORRUPTION_INFINITY: + Util.arrayFillNonAtomic(buffer, offset, length, (byte) 0); + length = 1; + break; + case CORRUPTION_COMPRESS: + if (length % 2 != 1) { + // an uncompressed point should have odd length (since 1 byte type, + 2 * coords) + ISOException.throwIt(ISO7816.SW_FUNC_NOT_SUPPORTED); + } + short half = (short) ((length - 1) / 2); + byte yLSB = buffer[(short) (offset + length)]; + byte yBit = (byte) (yLSB & 0x01); + if (yBit == 1) { + buffer[offset] = 3; + } else { + buffer[offset] = 2; + } + + length = (short) (half + 1); + break; + //TODO: test hybrid form with not corresponding yBit (in first byte value) and y_value in the second half of the param + default: + ISOException.throwIt(ISO7816.SW_FUNC_NOT_SUPPORTED); + } + corruptionMask = (short) (corruptionMask << 1); + } return length; } diff --git a/src/cz/crcs/ectester/reader/Command.java b/src/cz/crcs/ectester/reader/Command.java index b65159a..1063767 100644 --- a/src/cz/crcs/ectester/reader/Command.java +++ b/src/cz/crcs/ectester/reader/Command.java @@ -21,10 +21,10 @@ import java.util.List; * @author Jan Jancar johny@neuromancer.sk */ public abstract class Command { - protected CommandAPDU cmd; - protected CardMngr cardManager; + CommandAPDU cmd; + CardMngr cardManager; - protected Command(CardMngr cardManager) { + Command(CardMngr cardManager) { this.cardManager = cardManager; } @@ -392,7 +392,7 @@ public abstract class Command { private byte pubkey; private byte privkey; private byte export; - private byte corruption; + private short corruption; private byte type; /** @@ -402,10 +402,10 @@ public abstract class Command { * @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 (EC_Consts.CORRUPTION_* || ...) + * @param corruption whether to invalidate the pubkey before ECDH (EC_Consts.CORRUPTION_* | ...) * @param type ECDH algorithm type (EC_Consts.KA_* | ...) */ - protected ECDH(CardMngr cardManager, byte pubkey, byte privkey, byte export, byte corruption, byte type) { + protected ECDH(CardMngr cardManager, byte pubkey, byte privkey, byte export, short corruption, byte type) { super(cardManager); this.pubkey = pubkey; this.privkey = privkey; @@ -413,7 +413,8 @@ public abstract class Command { this.corruption = corruption; this.type = type; - byte[] data = new byte[]{export, corruption, type}; + byte[] data = new byte[]{export, 0,0, type}; + Util.setShort(data, 1, corruption); this.cmd = new CommandAPDU(ECTesterApplet.CLA_ECTESTERAPPLET, ECTesterApplet.INS_ECDH, pubkey, privkey, data); } diff --git a/src/cz/crcs/ectester/reader/Response.java b/src/cz/crcs/ectester/reader/Response.java index 89dce9c..50e5022 100644 --- a/src/cz/crcs/ectester/reader/Response.java +++ b/src/cz/crcs/ectester/reader/Response.java @@ -454,10 +454,10 @@ public abstract class Response { private byte pubkey; private byte privkey; private byte export; - private byte corruption; + private short corruption; private byte type; - protected ECDH(ResponseAPDU response, long time, byte pubkey, byte privkey, byte export, byte corruption, byte type) { + protected ECDH(ResponseAPDU response, long time, byte pubkey, byte privkey, byte export, short corruption, byte type) { super(response, time); this.pubkey = pubkey; this.privkey = privkey; diff --git a/src/cz/crcs/ectester/reader/TestSuite.java b/src/cz/crcs/ectester/reader/TestSuite.java index 047b7f6..c7c3b21 100644 --- a/src/cz/crcs/ectester/reader/TestSuite.java +++ b/src/cz/crcs/ectester/reader/TestSuite.java @@ -59,6 +59,7 @@ public abstract class TestSuite { List<Command> commands = new LinkedList<>(); commands.add(new Command.Generate(cardManager, ECTesterApplet.KEYPAIR_BOTH)); commands.add(new Command.ECDH(cardManager, ECTesterApplet.KEYPAIR_LOCAL, ECTesterApplet.KEYPAIR_REMOTE, ECTesterApplet.EXPORT_FALSE, EC_Consts.CORRUPTION_NONE, EC_Consts.KA_ECDH)); + commands.add(new Command.ECDH(cardManager, ECTesterApplet.KEYPAIR_LOCAL, ECTesterApplet.KEYPAIR_REMOTE, ECTesterApplet.EXPORT_FALSE, EC_Consts.CORRUPTION_COMPRESS, EC_Consts.KA_ECDH)); commands.add(new Command.ECDH(cardManager, ECTesterApplet.KEYPAIR_LOCAL, ECTesterApplet.KEYPAIR_REMOTE, ECTesterApplet.EXPORT_FALSE, EC_Consts.CORRUPTION_ONE, EC_Consts.KA_ECDH)); commands.add(new Command.ECDH(cardManager, ECTesterApplet.KEYPAIR_LOCAL, ECTesterApplet.KEYPAIR_REMOTE, ECTesterApplet.EXPORT_FALSE, EC_Consts.CORRUPTION_ZERO, EC_Consts.KA_ECDH)); commands.add(new Command.ECDH(cardManager, ECTesterApplet.KEYPAIR_LOCAL, ECTesterApplet.KEYPAIR_REMOTE, ECTesterApplet.EXPORT_FALSE, EC_Consts.CORRUPTION_MAX, EC_Consts.KA_ECDH)); diff --git a/src/cz/crcs/ectester/reader/Util.java b/src/cz/crcs/ectester/reader/Util.java index 21d4992..986433f 100644 --- a/src/cz/crcs/ectester/reader/Util.java +++ b/src/cz/crcs/ectester/reader/Util.java @@ -203,7 +203,7 @@ public class Util { str = "FILE_NOT_FOUND"; break; case ISO7816.SW_FUNC_NOT_SUPPORTED: - str = "FILE_NOT_SUPPORTED"; + str = "FUNC_NOT_SUPPORTED"; break; case ISO7816.SW_INCORRECT_P1P2: str = "INCORRECT_P1P2"; @@ -279,7 +279,7 @@ public class Util { } } - public static String getCorruption(byte corruptionType) { + public static String getCorruption(short corruptionType) { String corrupt; switch (corruptionType) { case EC_Consts.CORRUPTION_NONE: @@ -306,15 +306,9 @@ public class Util { case EC_Consts.CORRUPTION_INFINITY: corrupt = "INFINITY"; break; - case EC_Consts.CORRUPTION_PREFIX_COMPRESSED: + case EC_Consts.CORRUPTION_COMPRESS: corrupt = "COMPRESSED"; break; - case EC_Consts.CORRUPTION_PREFIX_HYBRID: - corrupt = "HYBRID"; - break; - case EC_Consts.CORRUPTION_PREFIX_UNCOMPRESSED: - corrupt = "UNCOMPRESSED"; - break; case EC_Consts.CORRUPTION_MAX: corrupt = "MAX"; break; |
