【发布时间】:2011-03-23 11:51:24
【问题描述】:
我正在尝试使用 A Smart Card Framework for .NET 通过 CryptoTech SCR3310 签署一份文件。 我使用第二篇文章(SmartcardFmwk)中的演示。 在发送 APDUCommand 时,我会收到如下错误:
- 用于验证(新 APDUCommand(0x00, 0x20, 0, 1, null, 0)) SW1= 69 SW2=83 (Authentication method blocked) ErrorNr1
- 用于选择文件(新 APDUCommand(0x00, 0xA4, 0, 0, null, 0)) [SW=61 SW2=2E][4] ErrorNr2
- 用于获得响应(新 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参数有误。你觉得怎么样?
【问题讨论】:
-
编译器没有说更多关于错误的信息吗?
标签: c# frameworks smartcard apdu smartcard-reader