diff --git a/src/openpgp/cmd_mse.c b/src/openpgp/cmd_mse.c index 6db31bb..cd8a407 100644 --- a/src/openpgp/cmd_mse.c +++ b/src/openpgp/cmd_mse.c @@ -26,16 +26,6 @@ int cmd_mse(void) { return SW_WRONG_DATA(); } if (P2(apdu) == 0xA4) { - if (apdu.data[2] == 0x2) { - algo_dec = EF_ALGO_PRIV2; - pk_dec = EF_PK_DEC; - } - else if (apdu.data[2] == 0x3) { - algo_dec = EF_ALGO_PRIV3; - pk_dec = EF_PK_AUT; - } - } - else if (P2(apdu) == 0xB8) { if (apdu.data[2] == 0x2) { algo_aut = EF_ALGO_PRIV2; pk_aut = EF_PK_DEC; @@ -45,5 +35,15 @@ int cmd_mse(void) { pk_aut = EF_PK_AUT; } } + else if (P2(apdu) == 0xB8) { + if (apdu.data[2] == 0x2) { + algo_dec = EF_ALGO_PRIV2; + pk_dec = EF_PK_DEC; + } + else if (apdu.data[2] == 0x3) { + algo_dec = EF_ALGO_PRIV3; + pk_dec = EF_PK_AUT; + } + } return SW_OK(); } diff --git a/tests/040_pcsc_extra/test_pcsc_extra.py b/tests/040_pcsc_extra/test_pcsc_extra.py index 5de8c2c..1767f4c 100644 --- a/tests/040_pcsc_extra/test_pcsc_extra.py +++ b/tests/040_pcsc_extra/test_pcsc_extra.py @@ -463,7 +463,7 @@ def test_openpgp_mse_decipher_slot_swap(card): eph = ec.generate_private_key(ec.SECP256R1()) peer = eph.public_key().public_bytes(serialization.Encoding.X962, serialization.PublicFormat.UncompressedPoint) z_dec = card.cmd_pso(0x80, 0x86, decipher_apdu_data(peer)) - expect(card, INS_MSE, 0x41, 0xA4, b"\x83\x01\x03") + expect(card, INS_MSE, 0x41, 0xB8, b"\x83\x01\x03") z_aut = card.cmd_pso(0x80, 0x86, decipher_apdu_data(peer)) assert z_dec == dec_priv.exchange(ec.ECDH(), eph.public_key()) assert z_aut == aut_priv.exchange(ec.ECDH(), eph.public_key())