解析CVM列表:在SFI中获取CVM列表后何时显示针垫,需要任何命令

时间:2018-12-03 11:10:47

标签: android java-native-interface smartcard-reader emv

我正在使用JNI在android中运行以下命令。

select command: 00A4040006454D5600000100(based on relavant AId)

GPO: 80A80000(modifying based on pdol)

read record : 00B2010C(Based on number of AFLs, SFI available)

此后,我想显示针垫(如果卡支持针)。 我正在关注CVM列表

4203 Encrypted PIN online, If terminal supports CVM, next 
1E03 Signature, If terminal supports CVM, FAIL 
1F03 No CVM

如何在android / java中理解这些标签。为此有任何APDU命令吗?如何处理/执行cvm规则?

所有建议将不胜感激。

1 个答案:

答案 0 :(得分:2)

据我了解,您有某种形式的本地EMV内核,可以从Android应用程序中调用。作为第一个建议,您应该查看该功能是否尚未公开。 CVM列表只是您使用Read Record命令读取的对象(标识符为0x8E)之一。关于什么的定义,请参见www.emvco.com上的EMV规格书3(请参阅第10.5章和附件C3)。 由于EMV中的持卡人验证是按顺序执行的(通过列表检查条件适用于您的交易),因此很难说是否会使用PIN码(无论卡是否支持该密码-坦白地说,它都是由授权的)发行人的付款方案以支持大多数卡产品的PIN方法)。某些条件可能取决于先前方法的执行状态(在CVM规则字节1上设置b7时)。 关于命令,您可能希望脱机PIN需要发送Get Data命令来请求0x9F17,这是脱机PIN尝试计数器。当然,脱机PIN将需要发送验证命令,以显示要由ICC验证的PIN。