0

winscard を使用して C++ コードを作成しています。Scardtransmit でデータのみを送信するか、データのみを受信するコマンドを送信しても問題ないことに気付きました。データを送信したり、正しい応答を取得したりできます。ただし、コマンドがデータを送信し、応答を期待する場合、常に 61xx が返されます。エラー コード 61xx は、Le が正しくない xx バイトの応答があることを意味し、返された値 xx を含むすべての可能な Le をチェックしましたが、何も変わりません。たとえば、Apdu の形式を CLA INS P1 P2 Lc Data Le とすると、61XX が返され、CLA INS P1 P2 Lc Data XX が送信され、再び 61XX が返されます。

Javaなどのツールを使ってカードをチェックしたところ、カードに何もないことを確認しました。

私の知る限り、Lc と Le には 1 バイトの P3 が割り当てられています。DATADATA コマンドから (SW1SW2 以外で) 応答を取得する方法はありますか?

4

1 に答える 1

4

コマンド データを含むコマンドを送信し、そのコマンドが結果データも予期していて、通信が T=0 プロトコルを使用して行われる場合、2 つの APDU を送信する必要があります。1 つはコマンド自体用で、もう 1 つは結果を取得するためです。

61XXエラーではありません。これは、 ( )XXを使用して取得できる応答のバイトがあることを示す (成功した) ステータス ワードです。GET RESPONSEINS=0xC0

コマンドのリファレンスはこちらです。

于 2013-07-31T11:53:03.343 に答える