EMV交易中的SDA/DDA/CDA——CDA部分
CDA在接触和非接当中的规则略有不同,本篇以接触的Gen 1stAC中的CDA验证来说明
1.CDA的计算
1.1.CDA 的GPO部分处理
与DDA一致(参看EMV交易中的SDA/DDA/CDA——DDA部分)
1.2.CDA 的读应用记录的处理
大体与CDA 一致(参看EMV交易中的SDA/DDA/CDA——DDA部分)
只有个别几个需要单独处理的tag值
8c——CDOL1
8d——CDOL2
1.3.CDA 校验流程
a.根据CDOL1来拼组Gen 1st数据,并且在Gen 1stAC 的第二字节(ins字节)需要|0x10,表示申请CDA)
note:如果存在随机数,一定要单独记录下来, 因为CDA解密后的校验需要用到
b.从Gen 1st中分离出tlvs,并单独提取9F4B
c.还原ISSUR公钥(参看EMV交易中的SDA/DDA/CDA——DDA部分)
d.还原ICC公钥(参看EMV交易中的SDA/DDA/CDA——DDA部分)
e.对9F4B数据进行ICC公钥解密
然后按照以下规则进行校验
1)先得到解密数据
2)对解密数据进行hash校验
重点是要用到 a步骤记录的随机数,否则校验会失败
3)对其中的 ICC Dynamic Data 做二次校验
其中数据是按照以下方式组织的
校验的流程如下:
其中需要特别注意,TLV数据均需要重新组织,否则在 Gen 1st返回数据里面
可能会包含 无用数据 0x00,这种情况下,直接套用 Gen 1st返回数据,会导致hash失败