@@ -21,6 +21,10 @@ public class SimpleAPDU {
21
21
22
22
private static final byte TESTECSUPPORTALL_FP [] = {(byte ) 0xB0 , (byte ) 0x5E , (byte ) 0x00 , (byte ) 0x00 , (byte ) 0x00 };
23
23
private static final byte TESTECSUPPORTALL_F2M [] = {(byte ) 0xB0 , (byte ) 0x5F , (byte ) 0x00 , (byte ) 0x00 , (byte ) 0x00 };
24
+ private static final byte TESTECSUPPORT_GIVENALG [] = {(byte ) 0xB0 , (byte ) 0x71 , (byte ) 0x00 , (byte ) 0x00 , (byte ) 0x03 , (byte ) 0x00 , (byte ) 0x00 , (byte ) 0x00 };
25
+ private static final short TESTECSUPPORT_ALG_OFFSET = 5 ;
26
+ private static final short TESTECSUPPORT_KEYLENGTH_OFFSET = 6 ;
27
+
24
28
private static final byte TESTECSUPPORTALL_LASTUSEDPARAMS [] = {(byte ) 0xB0 , (byte ) 0x40 , (byte ) 0x00 , (byte ) 0x00 , (byte ) 0x00 };
25
29
26
30
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 @@ static void testFPkeyGen_rewindOnSuccess(byte[] apduArray, boolean bRewind) {
45
49
apduArray [INVALIDCURVEB_REWINDONSUCCESS_OFFSET ] = bRewind ? (byte ) 1 : (byte ) 0 ;
46
50
}
47
51
52
+ static CardMngr ReconnnectToCard () throws Exception {
53
+ cardManager .DisconnectFromCard ();
54
+ if (cardManager .ConnectToCard ()) {
55
+ // Select our application on card
56
+ cardManager .sendAPDU (SELECT_ECTESTERAPPLET );
57
+ }
58
+ return cardManager ;
59
+ }
60
+
61
+ static void testSupportECGivenAlg (byte [] apdu , CardMngr cardManager ) throws Exception {
62
+ ReconnnectToCard ();
63
+ ResponseAPDU resp = cardManager .sendAPDU (apdu );
64
+ PrintECSupport (resp );
65
+ }
66
+ static void testSupportECAll (CardMngr cardManager ) throws Exception {
67
+ byte [] testAPDU = Arrays .clone (TESTECSUPPORT_GIVENALG );
68
+
69
+ testAPDU [TESTECSUPPORT_ALG_OFFSET ] = KeyPair .ALG_EC_FP ;
70
+ setShort (testAPDU , TESTECSUPPORT_KEYLENGTH_OFFSET , (short ) 128 );
71
+ testSupportECGivenAlg (testAPDU , cardManager );
72
+ setShort (testAPDU , TESTECSUPPORT_KEYLENGTH_OFFSET , (short ) 160 );
73
+ testSupportECGivenAlg (testAPDU , cardManager );
74
+ setShort (testAPDU , TESTECSUPPORT_KEYLENGTH_OFFSET , (short ) 192 );
75
+ testSupportECGivenAlg (testAPDU , cardManager );
76
+ setShort (testAPDU , TESTECSUPPORT_KEYLENGTH_OFFSET , (short ) 224 );
77
+ testSupportECGivenAlg (testAPDU , cardManager );
78
+ setShort (testAPDU , TESTECSUPPORT_KEYLENGTH_OFFSET , (short ) 256 );
79
+ testSupportECGivenAlg (testAPDU , cardManager );
80
+ setShort (testAPDU , TESTECSUPPORT_KEYLENGTH_OFFSET , (short ) 384 );
81
+ testSupportECGivenAlg (testAPDU , cardManager );
82
+ setShort (testAPDU , TESTECSUPPORT_KEYLENGTH_OFFSET , (short ) 521 );
83
+ testSupportECGivenAlg (testAPDU , cardManager );
84
+
85
+ testAPDU [TESTECSUPPORT_ALG_OFFSET ] = KeyPair .ALG_EC_F2M ;
86
+ setShort (testAPDU , TESTECSUPPORT_KEYLENGTH_OFFSET , (short ) 113 );
87
+ testSupportECGivenAlg (testAPDU , cardManager );
88
+ setShort (testAPDU , TESTECSUPPORT_KEYLENGTH_OFFSET , (short ) 131 );
89
+ testSupportECGivenAlg (testAPDU , cardManager );
90
+ setShort (testAPDU , TESTECSUPPORT_KEYLENGTH_OFFSET , (short ) 163 );
91
+ testSupportECGivenAlg (testAPDU , cardManager );
92
+ setShort (testAPDU , TESTECSUPPORT_KEYLENGTH_OFFSET , (short ) 193 );
93
+ testSupportECGivenAlg (testAPDU , cardManager );
94
+
95
+ }
48
96
public static void main (String [] args ) {
49
97
try {
50
98
//
51
99
// REAL CARDS
52
100
//
53
101
if (cardManager .ConnectToCard ()) {
54
- // Select our application on card
55
- cardManager .sendAPDU (SELECT_ECTESTERAPPLET );
56
102
57
- // Test setting invalid parameter B of curev
103
+ testSupportECAll (cardManager );
104
+
105
+ // Test setting invalid parameter B of curve
58
106
byte [] testAPDU = Arrays .clone (TESTECSUPPORTALL_FP_KEYGEN_INVALIDCURVEB );
59
107
//testFPkeyGen_setCorruptionType(testAPDU, SimpleECCApplet.CORRUPT_B_LASTBYTEINCREMENT);
60
108
testFPkeyGen_setCorruptionType (testAPDU , SimpleECCApplet .CORRUPT_B_ONEBYTERANDOM );
61
109
//testFPkeyGen_setCorruptionType(testAPDU, SimpleECCApplet.CORRUPT_B_FULLRANDOM);
62
110
testFPkeyGen_setNumRepeats (testAPDU , (short ) 10 );
63
111
testFPkeyGen_rewindOnSuccess (testAPDU , true );
112
+ ReconnnectToCard ();
64
113
ResponseAPDU resp_fp_keygen = cardManager .sendAPDU (testAPDU );
65
114
ResponseAPDU resp_keygen_params = cardManager .sendAPDU (TESTECSUPPORTALL_LASTUSEDPARAMS );
66
115
PrintECKeyGenInvalidCurveB (resp_fp_keygen );
67
116
PrintECKeyGenInvalidCurveB_lastUserParams (resp_keygen_params );
68
-
69
- // Test support for different types of curves
70
- ResponseAPDU resp_fp = cardManager .sendAPDU (TESTECSUPPORTALL_FP );
71
- ResponseAPDU resp_f2m = cardManager .sendAPDU (TESTECSUPPORTALL_F2M );
72
- PrintECSupport (resp_fp );
73
- PrintECSupport (resp_f2m );
74
-
75
117
118
+ /*
119
+ // Test support for different types of curves
120
+ ReconnnectToCard();
121
+ ResponseAPDU resp_fp = cardManager.sendAPDU(TESTECSUPPORTALL_FP);
122
+ ReconnnectToCard();
123
+ ResponseAPDU resp_f2m = cardManager.sendAPDU(TESTECSUPPORTALL_F2M);
124
+ PrintECSupport(resp_fp);
125
+ PrintECSupport(resp_f2m);
126
+ */
76
127
77
128
cardManager .DisconnectFromCard ();
78
129
} else {
@@ -209,7 +260,7 @@ static void PrintECKeyGenInvalidCurveB(ResponseAPDU resp) {
209
260
210
261
short numRepeats = getShort (buffer , bufferOffset );
211
262
bufferOffset += 2 ;
212
- System .out .println (String .format ("Executed repeats before unexpected error: %d times " , numRepeats ));
263
+ System .out .println (String .format ("%-53s%d times" , " Executed repeats before unexpected error: " , numRepeats ));
213
264
214
265
215
266
bufferOffset = VerifyPrintResult ("KeyPair object allocation:" , SimpleECCApplet .ECTEST_ALLOCATE_KEYPAIR , buffer , bufferOffset , ExpResult .SHOULD_SUCCEDD );
0 commit comments