为什么 DELETE Key APDU 命令 returns 6A80 状态字?

why DELETE Key APDU command returns 6A80 Status words?

我要从我的卡的 ISD 中删除一个现有密钥。为此,我在成功的相互身份验证后向 ISD 发送了一个带有相应 KeyID 和 KeyVersion 的 DELETE Key APDU 命令,如下所示:

-->  00 A4 04 00 08 A0 00 00 01 51 00 00 00
<--  6F 5B 84 08 A0 00 00 01 51 00 00 00 A5 4F 73 49 06 07 2A 86 48 86 FC 6B 01 60 0B 06 09 2A 86 48 86 FC 6B 02 02 02 63 09 06 07 2A 86 48 86 FC 6B 03 64 0B 06 09 2A 86 48 86 FC 6B 04 02 55 65 0B 06 09 2A 86 48 86 FC 6B 02 01 03 66 0C 06 0A 2B 06 01 04 01 2A 02 6E 01 03 9F 65 01 FF 90 00

-->  80 50 00 00 08 79 71 01 3C 63 9D 72 A3
<--  00 00 90 30 09 0A 90 72 3D A3 01 02 00 00 60 AD 80 68 C2 A1 79 AE B9 E4 4A 4D B7 99 90 00

-->  84 82 00 00 10 AB E9 10 5B 60 7C DE C6 9C DC 15 E0 DA 9B 81 44
<--  90 00

-->  80 E4 00 00 06 D0 01 01 D2 01 71
<--  6A 80

正如您在上面看到的,我收到了 6A80 状态字,这意味着 错误数据 。我已经用不同的卡尝试了相同的命令和数据,它成功地 returned 90 00 状态字。

所以

  1. 这张卡有什么问题,我该如何删除这个密钥?
  2. 有没有办法列出卡上所有存在的密钥?据我所知,带有 Tag 66(密钥信息模板)的 GET DATA APDU 命令没有 return 所有可用密钥的列表。
  1. 有些卡根本不支持。作为替代方案,您可以将密钥旋转为随机值。

  2. 密钥模板的标签是 00E0。您可以将其与 GET DATA 一起使用。例如。 GPShell 提供命令 get_key_information_templates -keyTemplate index。使用 0 作为索引。此输出 returns 一个更具可读性的列表。