EMV - 带有 PDOL 的 GPO

Val*_*ese 4 apdu emv

我在 C 平台上工作,我想读取卡片的 AFL。如果之前的命令,选择 AID,不给我 PDOL 标签,没关系:我可以毫无问题地阅读 AFL。但是我需要编写一个可以生成 GET PROCESSING OPTION 的方法,而不管 PDOL 是什么。

所以问题是:

  1. 尽管有 PDOL,我如何编写一种通用的方法?
    我必须映射每个可能的 TAG 吗?
  2. 如何使用正确的数据格式化 GPO 命令?看下面的例子:

SELECT AID Response PDOL:9F 1A 02 所以我必须输入终端国家代码,在我的情况下是意大利:380 所以 GPO 调用是:

80 A0 00 00 04 83 02 03 80 00
Run Code Online (Sandbox Code Playgroud)

但我得到的回应是6D 00:指令代码不受支持或无效

我哪里错了?

我正在 Ingenico Pos(销售点)上编程。

小智 5

很高兴知道您非常了解 PDOL 的概念。据我了解您的问题,如果不存在 PDOL,您可以轻松构建 GPO 命令。我认为您对编写通用函数来构造 GPO APDU 命令有疑问。

首先我想告诉你,如果 SELECT 响应中存在 PDOL 信息,那么你应该在 GPO 命令 APDU 中发送 PDOL 数据,否则卡应用程序可能会抛出一些错误。

因此,当您在 SELECT 命令中接收到 PDOL 时,您可以设置一个指示器。如果 PDOL 不存在,您可以简单地发送 80 A8 00 00 02 83 00 00,如果您的指标表明需要 PDOL,则只需解析 PDOL 和 SELECT 响应,如果您知道(如您在您的问题)将在 GPO 命令 APDU 中发送。

如果您不知道什么值,那么您可以简单地在值字段中填充十六进制零。

以您的示例为例:80 A8 00 00 04 83 02 03 80 00。这是正确的命令(我已更正了 INS 字节)。或者您也可以发送 80 A8 00 00 04 83 02 00 00 00 (PDOL 值被零替换)

我认为这个解释可以帮助您获得这两个问题的答案。尝试一下,如果需要进一步说明,请告诉我们。