1

Smart Card Frameworkfor.NETを使用してCryptoTechSCR3310経由でドキュメントに署名しようとしています。2番目の記事(SmartcardFmwk)のデモを使用します。APDUCommandを送信しているときに、次のようなエラーが発生します。

  • 検証用(new APDUCommand(0x00、0x20、0、1、null、0))SW1 = 69 SW2 = 83(認証方法がブロックされています) ErrorNr1
  • ファイル選択用(new APDUCommand(0x00、0xA4、0、0、null、0))[SW = 61 SW2 = 2E] [4] ErrorNr2
  • 応答を取得するため(new APDUCommand(0x00、0xC0、0、0、null、0))SW = 68 00 ErrorNr3

コード:

APDUCommand apduVerifyCHV = new APDUCommand(0x00, 0x20, 0, 1, null, 0)
APDUCommand apduSelectFile = new APDUCommand(0x00, 0xA4, 0, 0, null, 0)
APDUResponse apduResp;

CardNative iCard = new CardNative();
iCard.Connect(readers[0], SHARE.Shared, PROTOCOL.T0orT1); //connected
Console.WriteLine("Connects card on reader: " + readers[0]);

// Verify the PIN  (PIN = 12341234)
byte[] pin = new byte[] { 0x31, 0x32, 0x33, 0x34, 0x31, 0x32, 0x33, 0x34 }; 

APDUParam apduParam = new APDUParam();
apduParam.Data = pin;
apduVerifyCHV.Update(apduParam);
apduResp = iCard.Transmit(apduVerifyCHV); //ErrorNr1

// Select the MF (3F00)
apduParam.Data = new byte[] { 0x3F, 0x00 };
apduSelectFile = new APDUCommand(0x00, 0xA4, 0, 0, apduParam.Data, 0);

apduSelectFile.Update(apduParam);
apduResp = iCard.Transmit(apduSelectFile); //ErrorNr2
apduGetResponse.Update(apduParam);
apduResp = iCard.Transmit(apduGetResponse); //ErrorNr3

それらのエラーを取り除くために私は何をすべきですか?カードを別のプログラムでテストしましたが、エラーはありません。

APDUCommandパラメーターが間違っている可能性があります。あなたはどのように思いますか?

4

2 に答える 2

1

このカードが他のプログラムで正しく機能する場合、重要なのはAPDUコマンドに適切なパラメータを設定することです。私はこれを行ったことがありませんが、私の友人は学生カードに関連するいくつかの大学のプロジェクトを持っていました。彼は、既知のAPDUコマンドのリストを含む次のリンクを提供してくれました。わからない、多分それはあなたが正しい組み合わせを見つけるのを助けるでしょう。

APDUテーブル

于 2011-03-23T19:26:12.953 に答える
1
  • 問題のスマートカードリーダーは関係ありません。カードへのゲートウェイデバイスです。エラーはリーダーからではなく、カードからのものです
  • カードのマニュアルが本当に必要です。そうでない場合は、ISO7816-4のコマンドを試すことができます。
  • GET RESPONSEを呼び出すことは、通常、T = 0プロトコルを使用することを意味し、T=0またはT=1のいずれかで接続します。これは、それをサポートする最新のカードのデフォルトでT=1になります。
于 2011-03-25T05:50:11.080 に答える