您想验证发送 APDU 的 PIN,对。查找文档 IDPrime .NET 智能卡 - 集成指南(APDU 编码和 Hivecodes)。根据此文档,方法 verifyPIN 的 APDU(参见表 16 - V5 的 Hivecodes)应如下所示(角色 USER = 0x01 和 PIN=1234 的示例):
80C200001BD800056F00C04B4E7FBD506B00044D53434D010000000431323334
解释:
APDU = APDU 报头 + APDU 有效负载
APDU 标头等于80C20000 1B其中:
- 80C20000 - 始终相同
- 1B(十六进制)- 27(十进制)是 1 字节的有效载荷长度。
APDU 有效负载等于D8 0005 6F 00C04B4E 7FBD 506B 0004 4D53434D 01 00000004 31323334其中:
- D8 - 没什么可改变的
- 0005 - 服务端口号(2 个字节)
- 6F - 没什么可改变的
- 00C04B4E - 服务命名空间 Hivecode(4 字节)
- 7FBD - 服务类型 Hivecode(2 个字节)
- 506B - 方法 Hivecode,它是 VeryfiyPin 方法的 506B(参见 doc)
- 0004 - 服务名称长度 (0004)
- 4D53434D - UTF8 编码的服务名称(服务名称 - MSCM (4D53434D))
- 01 - 用户角色 (USER = 0x01, ADMIN = 0x02, EVERYONE = 0x03)
- 00000004 - 数据大小(在这种情况下,PIN 长度等于 4)
- 31323334 - PIN 的十六进制值 = 1234
如果 PIN 正确,您应该得到 9000 作为响应。
PIN = 12345 的另一个示例:
80C200001CD800056F00C04B4E7FBD506B00044D53434D01000000053132333435