aboutsummaryrefslogtreecommitdiff
path: root/src/applets/SimpleECCApplet.java
diff options
context:
space:
mode:
authorJ08nY2016-11-02 00:21:42 +0100
committerJ08nY2016-11-21 14:09:47 +0100
commit6a68401612f5e61f966def58ed60eaff52b6f7f6 (patch)
tree5f87cc3ceff0aba994ffb58dde7c3dd25ebb5620 /src/applets/SimpleECCApplet.java
parentb4d72715e7d770b4925fef70a192665744a6273d (diff)
downloadECTester-6a68401612f5e61f966def58ed60eaff52b6f7f6.tar.gz
ECTester-6a68401612f5e61f966def58ed60eaff52b6f7f6.tar.zst
ECTester-6a68401612f5e61f966def58ed60eaff52b6f7f6.zip
Diffstat (limited to 'src/applets/SimpleECCApplet.java')
-rw-r--r--src/applets/SimpleECCApplet.java23
1 files changed, 14 insertions, 9 deletions
diff --git a/src/applets/SimpleECCApplet.java b/src/applets/SimpleECCApplet.java
index 79abd0e..683e61d 100644
--- a/src/applets/SimpleECCApplet.java
+++ b/src/applets/SimpleECCApplet.java
@@ -7,24 +7,24 @@ package applets;
import javacard.framework.*;
import javacard.security.*;
-import javax.print.attribute.standard.MediaSize;
public class SimpleECCApplet extends javacard.framework.Applet {
+
// MAIN INSTRUCTION CLASS
- final static byte CLA_SIMPLEECCAPPLET = (byte) 0xB0;
+ final static byte CLA_SIMPLEECCAPPLET = (byte) 0xB0;
// INSTRUCTIONS
- final static byte INS_GENERATEKEY = (byte) 0x5a;
- final static byte INS_ALLOCATEKEYPAIRS = (byte) 0x5b;
+ final static byte INS_GENERATEKEY = (byte) 0x5a;
+ final static byte INS_ALLOCATEKEYPAIRS = (byte) 0x5b;
- final static byte INS_ALLOCATEKEYPAIR = (byte) 0x5c;
- final static byte INS_DERIVEECDHSECRET = (byte) 0x5d;
+ final static byte INS_ALLOCATEKEYPAIR = (byte) 0x5c;
+ final static byte INS_DERIVEECDHSECRET = (byte) 0x5d;
- final static byte INS_TESTECSUPPORTALL_FP = (byte) 0x5e;
- final static byte INS_TESTECSUPPORTALL_F2M = (byte) 0x5f;
+ final static byte INS_TESTECSUPPORTALL_FP = (byte) 0x5e;
+ final static byte INS_TESTECSUPPORTALL_F2M = (byte) 0x5f;
final static byte INS_TESTEC_GENERATEINVALID_FP = (byte) 0x70;
final static byte INS_TESTECSUPPORT_GIVENALG = (byte) 0x71;
- final static byte INS_TESTEC_LASTUSEDPARAMS = (byte) 0x40;
+ final static byte INS_TESTEC_LASTUSEDPARAMS = (byte) 0x40;
final static short ARRAY_LENGTH = (short) 0xff;
@@ -61,6 +61,8 @@ public class SimpleECCApplet extends javacard.framework.Applet {
public final static short SW_SKIPPED = (short) 0x0ee1;
public final static short SW_KEYPAIR_GENERATED_INVALID = (short) 0x0ee2;
public final static short SW_INVALID_CORRUPTION_TYPE = (short) 0x0ee3;
+ public final static short SW_SIG_LENGTH_MISMATCH = (short) 0xee4;
+ public final static short SW_SIG_VERIFY_FAIL = (short) 0xee5;
/*
public static final byte[] EC192_FP_PUBLICW = new byte[]{
(byte) 0x04, (byte) 0xC9, (byte) 0xC0, (byte) 0xED, (byte) 0xFB, (byte) 0x27,
@@ -454,6 +456,7 @@ public class SimpleECCApplet extends javacard.framework.Applet {
ecPrivKey = ecKeyGenerator.getPrivateKey();
ecPubKey = ecKeyGenerator.getPublicKey();
+ m_lenB = ecPubKey.getB(m_ramArray2, (short) 0); //store valid B
short startOffset = bufferOffset;
short i;
@@ -511,6 +514,7 @@ public class SimpleECCApplet extends javacard.framework.Applet {
ecPubKey = ecKeyGenerator.getPublicKey();
sw = ecKeyTester.testECDH_validPoint(ecPrivKey, ecPubKey, m_ramArray, (short) 0, m_ramArray2, (short) 0);
+ m_lenB = ecPubKey.getB(m_ramArray2, (short) 0); //store B
Util.setShort(buffer, bufferOffset, sw);
bufferOffset += 2;
break; //stop execution, return B
@@ -553,6 +557,7 @@ public class SimpleECCApplet extends javacard.framework.Applet {
return (short) (bufferOffset - baseOffset);
}
+ //TODO: generalize invalid B setting to all curve params
void TestECSupportInvalidCurve_lastUsedParams(APDU apdu) {
byte[] apdubuf = apdu.getBuffer();
apdu.setIncomingAndReceive();