2016-03-11 349 views
0

我正在使用萬事達信用卡,並且我有一個關於執行CDA身份驗證所需採取的確切步驟的問題。MasterCard上的CDA身份驗證

如果我正確理解程序,我應該先發送GENERATE AC命令,然後再發送EXTERNAL AUTHENTICATE

GENERATE AC命令如下:

80 AE 40 00 42 00 00 00 00 01 00 00 00 00 00 00 00 01 91 00 00 00 00 00 01 91 01 01 01 00 01 02 03 04 12 01 02 01 02 03 04 05 06 07 08 00 01 02 12 04 33 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

而響應(RESPONSE)我從卡上得到的樣子如下:

9F 27 01 80

9F 36 02 00 5C

9F 26 08 AE 7D 66 E4 50 15 D5 A4(應用密文)

9F 10 12 02 10 A0 00 00 2A 08 00 01 02 00 00 00 00 00 00 00 FF

在下一步驟中,我觸發「EXTERNAL AUTHENTICA TE」與命令:

00 82 00 00 AE 7D 66 E4 50 15 D5 A4 02 10 A0 00 00 2A 08 00

後,我得到的響應是一個2字節陣列[109, 0] ,即6D。這是否意味着我做錯了什麼?

任何意見,將不勝感激。

回答

0

6D00裝置「指令代碼不被支持或無效」

77 29 9F 27 01 80當密碼信息的日期是80,則表示該第4位上。正確嗎?這意味着它不是一個ARQC,但它是'需要建議'。可能是這個原因?

而不是發佈原始十六進制轉儲,它會更好,如果你可以通過組件拆分消息。

+0

您是否錯過了外部認證中的Lc? – adarsh

+0

即使在EXTERNAL AUTHENTICATE中添加Lc,響應也是一樣的。 – magic

+0

流程如下 – adarsh

0

第一次生成AC命令你發送字節P1 =「40」試圖完成交易與TC密碼。但卡決定強迫你上網ARQC密碼。在卡回覆標籤0x9F27指向標籤0x9F26中的密碼類型和ARQC密碼值。

- TLVs: # EMV, Tag + Length + Value (TLV) series 
- x77: # EMV, Template, Response Message Format 2 
    tag: "77" 
    len: "29" # // 41 
    - val: # Template, Response Message Format 2. 
    - x9F27: # EMV, Cryptogram Information Data (CID) 
     tag: "9F27" 
     len: "01" # // 1 
     val: "80" # Cryptogram Information Data (CID). 
     # 10______ - bits 8-7, ARQC 
     # _____000 - bits 3-1 (Reason/Advice/Referral Code), No information given 
    - x9F36: # EMV, Application Transaction Counter (ATC) 
     tag: "9F36" 
     len: "02" # // 2 
     val: "005C" # Application Transaction Counter (ATC). // 92 
    - x9F26: # EMV, Cryptogram, Application 
     tag: "9F26" 
     len: "08" # // 8 
     val: "AE7D66E45015D5A4" # Cryptogram, Application. 
    - x9F10: # EMV, Issuer Application Data (IAD) 
     tag: "9F10" 
     len: "12" # // 18 
     val: "0210A000002A0800010200000000000000FF" # Issuer Application Data (IAD). 

您試圖執行外部鑑別沒有使用正確的髮卡行認證數據(標籤0x91)。在現實世界中,您的終端應該從授權主機上聯機。在測試環境中,你可以自己計算這個標記值(如果你知道算法和一些卡數據,計算所需的鍵值爲ARPC)。另外,正如之前注意到的那樣,您忘記了在APDU命令中輸入長度爲Lc的字節。

在線ARQC密碼驗證是不可能的(離線功能的終端,鏈接斷開等)可能是一種情況。在這種情況下,您的終端應執行第二次生成AC以TC密碼重新完成交易,並使用授權響應代碼(標記0x8A)專用於脫機事務完成。

還請記住,有4個CDA模式這可以由EMV終端內核和您的應用程序支持。

請按照在EMVCo site處表示的EMV規範中定義的交易流程進行操作。

+0

好吧,所以我發了First Generate AC,卡片回覆了ARQC。所以我需要發送第二個生成AC?不是EXTERNAL AUTHENTICATE?在這種情況下什麼是授權響應代碼(標籤0x8A)? – magic

0

的EMV標準3部分涵蓋這樣的: http://emvco.com/specifications.aspx?id=223

如果ICC與ARQC響應,終端嘗試去上網,發送的授權請求消息給發行人。在授權請求消息中包括用於在線卡認證的ARQC。

所以,你有卡可配置爲「在線」僅交易,或測試交易金額是在卡上設置的最低限額。

查看卡片返回的CVM列表(我認爲tag 8E在2 1條記錄中)。 http://www.openscdp.org/scripts/tutorial/emv/cardholderverification.html

這應該告訴你底板的限制和卡片使用的CVM模式。

另外 - 嘗試幾個不同的測試卡 - 我發現測試我的代碼時嘗試多個不同的卡很方便。

0

您要求卡先生成一個TC。 卡做風險管理,並返回ARQC。 ARQC必須由發行人進行驗證,因此您向ARQC發送所有必要數據給髮卡行。 如果終端能夠將數據發送給主機,發行方驗證ARQC並生成ARPC-標籤91(ARC用於代 - 標籤8A)。 ARPC被送回終端。 終端現在要做外部驗證(91 [len] [data] 81 [len] [date]) 這應該給你9000或6300 如果它是9000,你要求卡片產生一個TC第二代AC
} 否則如果終端不能夠上網,TAC和IAC默認允許離線, { 你問該卡產生的第二代AC } 別的一個TC如果終端不能夠上線並且TAC和IAC默認值不允許離線, 您要求卡在第二代AC中生成AAC } 交易結束。

希望這澄清

0

萬事達卡不支持「外部認證」用戶相位指令。這就是爲什麼卡片響應6D00('指令代碼不支持或無效')。您應該使用髮卡行身份驗證數據執行第二次生成AC。