当前位置: 首页 > 知识库问答 >
问题:

如何在C中使用单个APDU发送和获取数据?

充运浩
2023-03-14

我正在用winscard编写一个C代码。我注意到,如果我使用Scardtransmit发送命令,其中只发送数据或只接收数据,则没有问题。我可以发送数据或得到正确的回复。然而,当命令同时发送数据并期望响应时,我总是得到61xx。我知道错误代码61xx表示有一个xx字节的响应,其中Le不正确,并检查了所有可能的Le,包括返回值xx,但没有任何变化。例如,让Apdu的形式为CLA INS P1 P2 Lc Data Le,我得到61XX,然后我发送CLA INS P1 P2 Lc Data XX,再次得到61XX。

我用java和其他工具检查了这张卡,确认卡上没有任何东西。

据我所知,有一个单字节P3分配给Lc和Le。有没有办法从DATADATA命令中获得响应(除了SW1SW2)?

共有1个答案

黄仲渊
2023-03-14

当您发送一个包含命令数据的命令,并且该命令也需要结果数据,并且使用T=0协议进行通信时,则需要发送两个APDU。一个用于命令本身,另一个用于检索结果。

61XX不是错误。它是一个(成功的)状态词,表示您有XX字节的响应,您可以使用GET responseINS=0xC0)检索这些字节。

以下是该命令的参考。

 类似资料:
  • 谁能给出一个简单的代码吗?我可以简单地进行HTTP调用吗?

  • 问题内容: 我已经编写了一个applet,并将其安装在智能卡中。但是我不知道如何在智能卡上读写数据? 从智能卡读取数据是否正确? 请告诉我如何使用javacard将数据写入智能卡。 问题答案: 我找到了解决方案。实际上我正在使用eclipse,因为其中安装了编辑器java卡插件。当我在智能卡上运行程序时,每次都会在以前的applet上安装最新的applet。要查看结果,我们可以使用pyapdu工具

  • 这个问题是对此的后续/澄清: MOV x86指令是否实现了C 11memory_order_release原子存储? 这表明MOV汇编指令足以在x86上执行acquire release语义。我们不需要锁、Geofence或xchg等。然而,我很难理解这是如何工作的。 英特尔文件第3A卷第8章规定: https://software.intel.com/sites/default/files/ma

  • 问题内容: 我需要从表单获取数据。 我使用JavaScript创建表单: 那么我需要从输入字段中获取数据。 这是我的视图函数: 但我得到一个错误: 帮我从表格中获取数据。 问题答案: 从Flask的请求对象获取表单数据: 你还可以设置默认值以避免400错误,如下所示:

  • 问题内容: 我正在尝试使用j查询$ .ajax方法向我的php脚本发送多个数据,但是当我连接多个数据时我只能传递单个数据我的php脚本tat中出现未定义的索引错误,意味着发出了ajax请求,但没有数据发送,我需要知道如何格式化多个数据以依次将其发送到名称为vale对的处理脚本中,这是我写的 问题答案: 您可以创建一个键/值对的对象,jQuery将为您完成其余工作: 这样,数据将被自动正确编码。如果

  • 我使用ACR122U-A9读取智能卡,通过以下APDU,我可以获取UID和ATS: 使用NXP TagInfo应用程序(android),我可以看到一个包含我所需数据的十六进制表。使用什么APDU命令可以检索这些数据? 六边形表如下所示: [0000]中是我想要检索的数据。