Certificate APDU:“;“不满足使用条件”;(69 85)计算签名时

Certificate APDU:“;“不满足使用条件”;(69 85)计算签名时,certificate,smartcard,private-key,apdu,Certificate,Smartcard,Private Key,Apdu,有了智能卡Gemalto(IAS ECC),我想通过使用存储在智能卡上的私钥来计算签名。为此,我使用APDU命令: // Verify PIN 00 20 00 01 04 31 32 33 34 -> 90 00 // Create a context for security operation 00 22 41 B6 06 84 01 84 80 01 12 -> 90 00 // Set the hash of the document 00 2A 90 A0 14 HA

有了智能卡Gemalto(IAS ECC),我想通过使用存储在智能卡上的私钥来计算签名。为此,我使用APDU命令:

// Verify PIN
00 20 00 01 04 31 32 33 34
-> 90 00

// Create a context for security operation
00 22 41 B6 06 84 01 84 80 01 12
-> 90 00

// Set the hash of the document
00 2A 90 A0 14 HASH OF DOCUMENT
-> 69 85

// Calculating the signature
00 2A 9E 9A 80
-> 69 85
我的问题如下:las两个命令返回错误代码“69 85”,意思是“不满足使用条件”

我已经尝试过几种解决方案,但我总是得到同样的错误。如何解决?这个代码是什么意思

经过一些测试,我发现了一些有趣的东西。当我将cla“00”替换为“10”时,智能卡返回不同的响应:

// Create a context for security operation
00 22 41 B6 06 84 01 84 80 01 12

// Verify PIN
00 20 00 01 04 31 32 33 34

// Calculating the signature (I replace "00" by "10")
10 2A 9E 9A 23 30 21 30 09 06 05 2B 0E 03 02 1A 05 00 04 14 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 12 13 14 15
我不知道这是否是一个好的解决方案,因为智能卡返回“9000”。但是,它会返回我签名的内容

谢谢你的帮助


向您致以最诚挚的问候

我们将为您提供SW 6985

// Set the hash of the document
00 2A 90 A0 14 HASH OF DOCUMENT
-> 69 85
因为您尚未在当前安全环境中设置正确的上下文

让我在下面解释一下

首先,您执行了成功的验证PIN命令

// Verify PIN
00 20 00 01 04 31 32 33 34
-> 90 00
然后执行MSE SET命令,在该命令中设置安全上下文。为此,您必须了解SE的工作原理(请参阅IAS ECC v1.01的第3.5节)

个性化时,Personaliser代理在卡内创建SDO(安全数据对象)。SE(安全环境)中以CRT(控制参考模板)的形式提到了对该SDO的引用

一般来说,MSE SET命令将始终返回SW 900,即使SDO参考错误。因为它只在模板错误时返回SW 6A80,而不是在引用错误时返回SW 6A80。(SDO引用在标记84中传递)

然后执行PSO散列命令

// Set the hash of the document
00 2A 90 A0 14 HASH OF DOCUMENT
-> 69 85
如果卡返回SW 6985(不满足使用条件),则表明用于计算散列的算法和SDO参考可能错误。这可能是因为在MSE SET命令期间发送的SDO参考不可用

检测来自MSE集的错误可能很棘手,因为它返回SW 9000。 对于这些类型的情况,您必须仔细检查个性化文件,并且需要匹配与SDO参考和支持的算法相关的MSE SET命令

设置默认上下文(例如,加密算法或
安全操作)转换到当前SE中,以便很少交换MSE set命令。

测试CLA字节中的随机内容不会有任何效果。您可能只是指示了命令链接,而卡正在发出信号,希望接收其余的数据(之后您很可能会返回相同的错误)。您找到了解决方案吗?
// Set the hash of the document
00 2A 90 A0 14 HASH OF DOCUMENT
-> 69 85