所以我对智能卡很陌生,我试图计算一些随机字节的签名。卡上的操作系统是cardos v4.3。我能够使用PKCS#15格式和ISO 7816标准。
我计算签名的工作流程如下:
智能卡正在重新设置中。
我是不是缺少了一个命令,或者一个我需要满足的先决条件,或者其他的东西?在使用openssl进行计算的哈希签名时,一般的工作流是什么?
我知道对于PSO_CDS来说,必须有一个当前的安全环境,其中必须指定一个有效的PSO_PrivateKey,但是我不知道如何将它合并到命令流中。
我计划创建一个c++函数,它将得到一个散列,用智能卡计算签名,然后返回签名。
发布于 2020-07-21 08:28:56
所以,我能够计算出一个签名。因为PSO_CDS不适合我,所以我就这样做了:
选择Application/DF.
Application.中的
发布于 2020-07-14 07:33:22
问题是,卡不知道,该用哪一把钥匙。这是因为正确观察到目前缺乏有意义的安全环境。由于(简称: PSO)没有指定要使用的密钥的标准化方法,因此必须通过向安全环境提供该信息(例如通过(见下文))来更早地设置它。
提供密钥引用的最简单方法是,在与您的键相同的DF中创建ID 1的持久安全环境,因为这是在DF的SELECT (FILE)期间自动加载(或还原)的,否则您必须手动或在SET模式(此会话为易失性的模式)中发送(简称MSE)。(无论使用哪种安全环境,它都必须在数字签名模板中包含对私钥的引用。)无论您是在选择DF之后直接执行MSE恢复,还是在PIN验证之前,还是在两者之间的任何时刻,都是您的选择,但在发送PSO命令时,它必须是活动的。
40个字节似乎不是一个典型的散列值的长度,所以要注意正确地设置算法以包括散列。
https://stackoverflow.com/questions/62875718
复制相似问题