2015-07-02 31 views
1

我要重新開發新的桌面應用程序,從EMV智能卡和我從以前的(工作)應用日誌讀取信息選擇。由AID命令不工作

假設,存在與AID應用程式= 44 44 44 44 44 44 44 44(DDDDDDDD)在EMV智能卡。

我送APDU命令:00 A4 04 00 08 44 44 44 44 44 44 44 44 00,並獲得超時異常(超時= 60秒)。

我試圖發送APDU命令:00 04 A4 00 08 44 44 44 44 44 44 44 44,並獲得響應代碼= 61 37.

我試圖選擇文件1PAY.SYS.DDF01,立刻得到了響應= 6a82(這是對的)。

回答

0

我將庫從RXTXserial更改爲JSSC,它解決了我的問題。現在我得到沒有GET RESPONSE請求的迴應。感謝你們。

2

錯誤代碼61XX意味着調用獲得響應命令勒= XX後,您會收到您的數據:

例子:

--> 00 A4 04 00 08 44 44 44 44 44 44 44 44 
<-- 61 37 
--> 00 C0 00 00 37 
<-- some data of length 0x37 and status code 90 00. 

相關問題: About Get Response command in javacard

文件由Oracle:

可能有幾個APDU連接打開同時使用 不同的邏輯通道與同一張卡。但是,由於APDU 協議是同步的,所以它們的響應APDU不會跨越邏輯信道交織。在收到 命令APDU和向該命令發送響應APDU之間,只有一個邏輯通道處於活動狀態。對於T = 0協議,對於情況4和 情況2的命令APDU,卡可以用'61 XX'或'6C XX'進行響應。 這些特殊情況必須由下列方式在 落實情況處理:

'61 XX':實現必須GET RESPONSE發送到卡發送的任何其他命令之前獲得響應數據。 '6C XX':在發送任何其他命令 之前,將Le等於從卡接收的XX設置爲Le後,必須重新發送命令。

在這兩種以上所討論的情況下,實現必須確保 該發送命令APDU,接收狀態字'61之間XX」 或‘6C XX’,併發送GET RESPONSE或勒重新發送命令APDU 分別設置爲XX,在卡的任何邏輯信道上都不得有任何其他APDU 交換。如果狀態字 '61 XX」從卡接收多次連續的 實現必須將其返回到J2ME應用程序之前所積累的一切從 卡接收響應數據。 J2ME應用程序 必須不知道上面提到的交換,並且應該只有 才能得到上述操作的結果。

+0

或者非常簡潔:這是T = 0協議,您必須明確獲取卡片響應,並指定長度。 – guidot

+0

@guidot你能提供更多的細節嗎? – SparX

+0

@vojta我試過你的例子,但是在00 C0 00 00 37. – SparX