There seems to be a problem in the definition of some commands in
the "MUSCLE Cryptographic Card Edge" that cause problems for T=0.

Clause 8.3.2 of the ISO/IEC 7816-3:1997 says

   - INS is an instruction code in the instruction class.
   The instruction code is valid only if the bits b8 to b5
   are not equal to either '6' or '9'.

The MUSCLE Cryptographic Card Edge does however have two commands
with INS code within these invalid ranges:
* MSCLogoutAll (INS 0x60)
* MSCGetChallenge (INS 0x62)

I find it hard to believe that these commands work with most
smartcard readers... [*]

   /Krister



[*] The reason is that the T=0 protocol is rather primitive/ad-hoc.
The smartcard reader sends the five-byte header (CLA, INS, P1, P2, P3)
to the card, and waits for a "procedure byte" from the card.

This procedure byte may be
* 0x60, which means roughly "please wait",
* INS (possible XOR:ed with 0x01, 0xff or 0xfe) which means
  roughly "continue with the data",
* 0x6? (but not 0x60) or 0x9? which is to be the SW1 byte in
  the response.

So I believe that most card readers will, correctly, interpret the
procedure byte as "please wait" when the card sends back the INS for
the MSCLogoutAll command...  (Well, some of those readers may be
fooled to work if the card return INS ^ 0xff as the procedure
byte, but I do know of readers that refuse to send these invalid
INS to the card to begin with.)

_______________________________________________
Muscle mailing list
[EMAIL PROTECTED]
http://lists.musclecard.com/mailman/listinfo/muscle

Reply via email to