我正在使用MasterCard信用卡,我有一个问题,我需要采取哪些具体步骤来执行CDA身份验证。
如果我正确地理解了这个过程,我应该首先发送GENERATE AC命令,然后是一个EXTERNAL AUTHENTICATE
我的GENERATE AC命令如下所示:
80 AE 40 00 42 00 00 00 01 91 00 00 00 01 01 01 03 04 12 01 01 02 03 04 06 07 08 08 00 01 02 12 04 00 00 00
我从卡片上得到的回复如下:
77 29 9F 27 01 80 9F 36 02 00 5C 9F 26 08 AE 7D 66 E4 50 15 D5 A4 (应用密码) 9楼10 12 02 10 A0 00 2A 08 00 01 00 00 00 FF 9000
在接下来的步骤中,我将使用命令触发“外部身份验证”:
0082 0000AE 7D 66 E4 50 15 D5 A4 02 10 A0 002A 08 00
之后得到的响应是一个2字节数组[109, 0],即6D。这是不是意味着我做错了什么?
如有任何建议,将不胜感激。
发布于 2016-03-13 14:53:17
在第一次生成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计算所需的键)。此外,如前所述,您忘记将长度为的Lc字节放在APDU命令中。
这可能是当在线ARQC密码验证是不可能的情况(离线功能终端,链接中断,等等)。在这种情况下,您的终端应该执行第二次生成AC,再次请求使用TC密码的复杂事务,并使用特定于脱机事务完成的授权响应代码 (Tag 0x8A)。
还请记住,有4种CDA模式,可以由EMV终端内核和您的应用程序支持。
请按照EMVCo站点中表示的EMV规范中定义的事务流进行操作。
发布于 2016-03-25 15:20:01
您正在要求卡首先生成一个TC。卡进行风险管理,并将您送回ARQC。ARQC必须经过发行人的验证,所以你把所有必要的数据发送给发行人。如果终端能够将数据发送到主机{颁发器验证ARQC并生成ARPC标签91 ( ARC用于生成标记8A)。ARPC被送回终端。终端现在要做外部认证( 91len81len ),这要么给你9000或6300万一它是9000,你要求卡产生一个TC在第二代交流。
}否则,如果终端无法联机,而TAC和IAC默认值允许脱机,则{您要求该卡在第二代AC }中生成一个TC },如果终端无法联机,而TAC和IAC默认值不允许脱机,则{您要求该卡在第二代AC }事务中生成一个AAC }。
希望这能澄清
发布于 2016-03-28 15:02:34
MasterCard在用户阶段不支持“外部身份验证”命令。这就是为什么卡响应6D00 (‘指令代码不支持或无效’)。您应该对颁发者身份验证数据执行第二次生成AC。
https://stackoverflow.com/questions/35938550
复制相似问题