TestApplet: add test for EC without W

This commit is contained in:
Arnaud Fontaine 2018-12-06 11:02:16 +01:00
parent b5567df674
commit a9e52ab31b
2 changed files with 24 additions and 3 deletions

View File

@ -141,14 +141,14 @@ public final class TestApplet extends Applet {
}
private final void processTestEc(final byte p1, final byte p2) {
boolean generate;
boolean generate, provide_w;
short size;
ECPrivateKey priv;
ECPublicKey pub;
byte[] field, a, b, g, r, s, w;
short k;
switch(p1) {
switch(p1 & (byte)0x01) {
case (byte)0x00:
generate = false;
break;
@ -162,6 +162,20 @@ public final class TestApplet extends Applet {
return;
}
switch(p1 & (byte)0x10) {
case (byte)0x00:
provide_w = true;
break;
case (byte)0x10:
provide_w = false;
break;
default:
ISOException.throwIt(ISO7816.SW_WRONG_P1P2);
return;
}
switch(p2) {
case (byte)0x00:
size = 256;
@ -237,8 +251,10 @@ public final class TestApplet extends Applet {
kp.genKeyPair();
} else {
priv.setS(s, (short)0, (short)s.length);
if(provide_w) {
pub.setW(w, (short)0, (short)w.length);
}
}
if(!pub.isInitialized()) {
ISOException.throwIt(Data.SW_PUB_KEY_NOT_INITIALIZED);

View File

@ -40,6 +40,9 @@ TEST_RSA_CRT_2048_GENERATE = [0x00, 0x02,
TEST_EC_P256_STATIC = [0x00, 0x03,
0x00, 0x00];
TEST_EC_P256_STATIC_NO_W = [0x00, 0x03,
0x10, 0x00];
TEST_EC_P256_GENERATE = [0x00, 0x03,
0x01, 0x00];
@ -123,6 +126,8 @@ def test_ec(con):
select_applet(con, False)
send_apdu(con, "Test NIST P-256 static", TEST_EC_P256_STATIC)
select_applet(con, False)
send_apdu(con, "Test NIST P-256 static (without W)", TEST_EC_P256_STATIC_NO_W)
select_applet(con, False)
send_apdu(con, "Test NIST P-256 generate", TEST_EC_P256_GENERATE)
select_applet(con, False)
send_apdu(con, "Test NIST P-521 static", TEST_EC_P521_STATIC)