aboutsummaryrefslogtreecommitdiff
path: root/src/simpleapdu/SimpleAPDU.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/simpleapdu/SimpleAPDU.java')
-rw-r--r--src/simpleapdu/SimpleAPDU.java73
1 files changed, 62 insertions, 11 deletions
diff --git a/src/simpleapdu/SimpleAPDU.java b/src/simpleapdu/SimpleAPDU.java
index 78d5bd8..0ea9ca3 100644
--- a/src/simpleapdu/SimpleAPDU.java
+++ b/src/simpleapdu/SimpleAPDU.java
@@ -21,6 +21,10 @@ public class SimpleAPDU {
private static final byte TESTECSUPPORTALL_FP[] = {(byte) 0xB0, (byte) 0x5E, (byte) 0x00, (byte) 0x00, (byte) 0x00};
private static final byte TESTECSUPPORTALL_F2M[] = {(byte) 0xB0, (byte) 0x5F, (byte) 0x00, (byte) 0x00, (byte) 0x00};
+ private static final byte TESTECSUPPORT_GIVENALG[] = {(byte) 0xB0, (byte) 0x71, (byte) 0x00, (byte) 0x00, (byte) 0x03, (byte) 0x00, (byte) 0x00, (byte) 0x00};
+ private static final short TESTECSUPPORT_ALG_OFFSET = 5;
+ private static final short TESTECSUPPORT_KEYLENGTH_OFFSET = 6;
+
private static final byte TESTECSUPPORTALL_LASTUSEDPARAMS[] = {(byte) 0xB0, (byte) 0x40, (byte) 0x00, (byte) 0x00, (byte) 0x00};
private static final byte TESTECSUPPORTALL_FP_KEYGEN_INVALIDCURVEB[] = {(byte) 0xB0, (byte) 0x70, (byte) 0x00, (byte) 0x00, (byte) 0x05, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00};
@@ -45,34 +49,81 @@ public class SimpleAPDU {
apduArray[INVALIDCURVEB_REWINDONSUCCESS_OFFSET] = bRewind ? (byte) 1 : (byte) 0;
}
+ static CardMngr ReconnnectToCard() throws Exception {
+ cardManager.DisconnectFromCard();
+ if (cardManager.ConnectToCard()) {
+ // Select our application on card
+ cardManager.sendAPDU(SELECT_ECTESTERAPPLET);
+ }
+ return cardManager;
+ }
+
+ static void testSupportECGivenAlg(byte[] apdu, CardMngr cardManager) throws Exception {
+ ReconnnectToCard();
+ ResponseAPDU resp = cardManager.sendAPDU(apdu);
+ PrintECSupport(resp);
+ }
+ static void testSupportECAll(CardMngr cardManager) throws Exception {
+ byte[] testAPDU = Arrays.clone(TESTECSUPPORT_GIVENALG);
+
+ testAPDU[TESTECSUPPORT_ALG_OFFSET] = KeyPair.ALG_EC_FP;
+ setShort(testAPDU, TESTECSUPPORT_KEYLENGTH_OFFSET, (short) 128);
+ testSupportECGivenAlg(testAPDU, cardManager);
+ setShort(testAPDU, TESTECSUPPORT_KEYLENGTH_OFFSET, (short) 160);
+ testSupportECGivenAlg(testAPDU, cardManager);
+ setShort(testAPDU, TESTECSUPPORT_KEYLENGTH_OFFSET, (short) 192);
+ testSupportECGivenAlg(testAPDU, cardManager);
+ setShort(testAPDU, TESTECSUPPORT_KEYLENGTH_OFFSET, (short) 224);
+ testSupportECGivenAlg(testAPDU, cardManager);
+ setShort(testAPDU, TESTECSUPPORT_KEYLENGTH_OFFSET, (short) 256);
+ testSupportECGivenAlg(testAPDU, cardManager);
+ setShort(testAPDU, TESTECSUPPORT_KEYLENGTH_OFFSET, (short) 384);
+ testSupportECGivenAlg(testAPDU, cardManager);
+ setShort(testAPDU, TESTECSUPPORT_KEYLENGTH_OFFSET, (short) 521);
+ testSupportECGivenAlg(testAPDU, cardManager);
+
+ testAPDU[TESTECSUPPORT_ALG_OFFSET] = KeyPair.ALG_EC_F2M;
+ setShort(testAPDU, TESTECSUPPORT_KEYLENGTH_OFFSET, (short) 113);
+ testSupportECGivenAlg(testAPDU, cardManager);
+ setShort(testAPDU, TESTECSUPPORT_KEYLENGTH_OFFSET, (short) 131);
+ testSupportECGivenAlg(testAPDU, cardManager);
+ setShort(testAPDU, TESTECSUPPORT_KEYLENGTH_OFFSET, (short) 163);
+ testSupportECGivenAlg(testAPDU, cardManager);
+ setShort(testAPDU, TESTECSUPPORT_KEYLENGTH_OFFSET, (short) 193);
+ testSupportECGivenAlg(testAPDU, cardManager);
+
+ }
public static void main(String[] args) {
try {
//
// REAL CARDS
//
if (cardManager.ConnectToCard()) {
- // Select our application on card
- cardManager.sendAPDU(SELECT_ECTESTERAPPLET);
- // Test setting invalid parameter B of curev
+ testSupportECAll(cardManager);
+
+ // Test setting invalid parameter B of curve
byte[] testAPDU = Arrays.clone(TESTECSUPPORTALL_FP_KEYGEN_INVALIDCURVEB);
//testFPkeyGen_setCorruptionType(testAPDU, SimpleECCApplet.CORRUPT_B_LASTBYTEINCREMENT);
testFPkeyGen_setCorruptionType(testAPDU, SimpleECCApplet.CORRUPT_B_ONEBYTERANDOM);
//testFPkeyGen_setCorruptionType(testAPDU, SimpleECCApplet.CORRUPT_B_FULLRANDOM);
testFPkeyGen_setNumRepeats(testAPDU, (short) 10);
testFPkeyGen_rewindOnSuccess(testAPDU, true);
+ ReconnnectToCard();
ResponseAPDU resp_fp_keygen = cardManager.sendAPDU(testAPDU);
ResponseAPDU resp_keygen_params = cardManager.sendAPDU(TESTECSUPPORTALL_LASTUSEDPARAMS);
PrintECKeyGenInvalidCurveB(resp_fp_keygen);
PrintECKeyGenInvalidCurveB_lastUserParams(resp_keygen_params);
-
- // Test support for different types of curves
- ResponseAPDU resp_fp = cardManager.sendAPDU(TESTECSUPPORTALL_FP);
- ResponseAPDU resp_f2m = cardManager.sendAPDU(TESTECSUPPORTALL_F2M);
- PrintECSupport(resp_fp);
- PrintECSupport(resp_f2m);
-
+ /*
+ // Test support for different types of curves
+ ReconnnectToCard();
+ ResponseAPDU resp_fp = cardManager.sendAPDU(TESTECSUPPORTALL_FP);
+ ReconnnectToCard();
+ ResponseAPDU resp_f2m = cardManager.sendAPDU(TESTECSUPPORTALL_F2M);
+ PrintECSupport(resp_fp);
+ PrintECSupport(resp_f2m);
+ */
cardManager.DisconnectFromCard();
} else {
@@ -209,7 +260,7 @@ public class SimpleAPDU {
short numRepeats = getShort(buffer, bufferOffset);
bufferOffset += 2;
- System.out.println(String.format("Executed repeats before unexpected error: %d times", numRepeats));
+ System.out.println(String.format("%-53s%d times", "Executed repeats before unexpected error: ", numRepeats));
bufferOffset = VerifyPrintResult("KeyPair object allocation:", SimpleECCApplet.ECTEST_ALLOCATE_KEYPAIR, buffer, bufferOffset, ExpResult.SHOULD_SUCCEDD);