首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于MasterCard的CDA认证

基于MasterCard的CDA认证
EN

Stack Overflow用户
提问于 2016-03-11 11:02:32
回答 5查看 5.9K关注 0票数 2

我正在使用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。这是不是意味着我做错了什么?

如有任何建议,将不胜感激。

EN

回答 5

Stack Overflow用户

发布于 2016-03-13 14:53:17

第一次生成AC命令中,您发送了字节P1 = "40“,试图使用TC密码完成事务。但是这张卡决定强迫你使用ARQC密码上网。在卡片应答标记0x9F27中,指向标记0x9F26中的密码类型和ARQC密码值。

代码语言:javascript
复制
- 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规范中定义的事务流进行操作。

票数 2
EN

Stack Overflow用户

发布于 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 }。

希望这能澄清

票数 1
EN

Stack Overflow用户

发布于 2016-03-28 15:02:34

MasterCard在用户阶段不支持“外部身份验证”命令。这就是为什么卡响应6D00 (‘指令代码不支持或无效’)。您应该对颁发者身份验证数据执行第二次生成AC。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35938550

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档