要克服的EMV TLV长度限制限制

时间:2015-08-20 08:22:33

标签: embedded contactless-smartcard emv tlv verifone

我们有代码来查询来自各种EMV TLV的值。 但是,在PED序列号的情况下,标签的规格" 9F1E"在  http://www.emvlab.org/emvtags/ 有: -

  

名称说明源格式模板标签长度P / C接口   设备(IFD)序列号分配的唯一和永久序列号   到制造商终端的IFD 8 9F1E 8原语

但是上面给出了8的限制,而我们的VeriFone PED有9个长的SN。

所以示例代码依赖于标签" 9F1E"无法检索全长。

int GetPPSerialNumber()
{
    int rc = -1;

    rc = GetTLV("9F1E", &resultCharArray);

    return rc;
}

在上面,编写GetTLV()来获取标记arg并将值填充到char数组。

有没有开发人员找到一个很好的方法来检索完整的9?

1 个答案:

答案 0 :(得分:3)

你是正确的 - 这里有一个不匹配。 TLV的好处在于,您并不需要一个规范来告诉您该值的长度。你的GetTLV()本身就强加了这个限制;显而易见的解决办法就是放松一下。

我们实际上甚至没有查看TLV解析级别上记录的长度。每个标签都映射到BL中的一个关联实体(有时多于一个,这要归功于他们自己的非接触路由的方案),我们可以选择我们想要对那些实施长度限制的实体。