2011-03-23 89 views
1

我正在嘗試使用A Smart Card Framework for .NET通過CryptoTech SCR3310簽署文檔。 我使用第二篇文章(SmartcardFmwk)的演示。 雖然發送APDUCommand我會得到這樣的錯誤:連接到智能卡

  • 爲verifing(新APDUCommand(0×00, 爲0x20,0,1,NULL,0))SW1= 69 SW2=83 (Authentication method blocked) ErrorNr1
  • 選擇文件(新 APDUCommand(0×00 ,0xA4,0,0,NULL, 0))[SW = 61 SW2 = 2E] [4] ErrorNr2
  • 用於獲取響應(新 APDUCommand(0×00,將0xC0,0,0,NULL, 0)) SW = 68 00 ErrorNr3

CODE:

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參數錯了。你怎麼想?

+0

編譯器不會說更多關於錯誤的東西嗎? – 2011-03-23 13:00:01

回答

1

如果此卡可以與其他程序正常工作,那麼關鍵是要爲APDU命令設置適當的參數。我從來沒有這樣做過,但我的朋友有一些與學生卡有關的大學項目。他向我提供了以下鏈接以及已知的APDU命令列表。不知道,也許它會幫助你找到正確的組合。

APDU table

1
  • 在問題的智能卡閱讀器是不相關的,這是一個突出部分網關設備。你的錯誤不是來自閱讀器,但是從
  • 你真的需要有一個手冊,您的卡,或者你可以從ISO 7816-4
  • 嘗試命令調用get反應將通常是指使用T = 0協議,對於支持它的現代卡,您可以連接T = 0或T = 1,默認爲T = 1。