EMV VERIFY命令返回69 85

时间:2014-01-09 11:38:23

标签: smartcard emv

我正在尝试使用智能卡读卡器与卡通信,我正在使用Jaccal从我的Java SE应用程序执行此操作。我遇到的问题是,即使我非常确定我的VERIFY命令是正确的(脱机PIN)我仍然得到状态字= 69 85(使用条件不满意)。所以我的命令看起来像这样。

验证命令:

  

00 20 00 80 08 24 94 94 FF FF FF FF FF

PIN码是9494,因为这是一张我不介意透露密码的测试卡。

此致 维克

2 个答案:

答案 0 :(得分:2)

状态字= 69 85在EMV 4.3 book 3, section '6.3.5 Coding of the Status Bytes'

中被定义为“不允许命令”(如您所述,“使用条件不满足”)

在您的应用程序和卡之间提供整个EMV对话框有助于排除故障,但以下是一些可能发生此问题的常见情况:

  

“在读取应用程序数据之后和完成终端操作分析之前,可以随时执行此功能。”

  • 您的卡不支持离线销验证。

要验证您是否遵守VERIFY命令执行顺序,以下是典型执行顺序的示例:

  1. SELECT FILE
  2. 获取处理选项
  3. READ RECORD(根据需要多次)
  4. 获取数据
  5. VERIFY
  6. 生成应用程序CRYPTOGRAM
  7. 要检查您的卡是否支持脱机PIN码验证:

    1. 检查为响应GET PROCESSING OPTIONS命令而返回的应用程序交换配置文件字段(AIP,标记82)。如果支持持卡人验证,则应将字节1,位5设置为1,如section '10.5 Cardholder Verification'中所述。 AIP值的示例:1C 00
    2. 在持卡人验证方法(CVM)列表(标签8E)中,确保您拥有有效的CVM规则,其中字节1,位1 = 1(表示“由ICC执行的明文PIN验证”,附件'C3 Cardholder Verification Rule Format')。 CVM列表以2个量字段开始,每个字段为4个字节,然后是可变数量的2个字节的CVM规则。最后一条规则强制离线的CVM列表示例:00 00 00 00 00 00 00 00 02 01 01 00。

答案 1 :(得分:0)

使用verify命令的正确顺序如下

  • 选择付款申请

    00A4040007A000000003101000
    (or 00A4040007A000000004101000, or whatever application you want to use)
    
  • 获取处理选项

    80A8000002830000
    (possibly with adapted data objects according to PDOL)
    
  • (可选)检查当前的PIN尝试计数器

    80CA9F1700
    
  • 验证PIN码(如果卡支持使用纯文本PIN验证)

    002000800824xxxxFFFFFFFFFF
    (where xxxx is a 4 digit PIN)
    

如发现,只接受一个PIN VERIFY命令。