如何通过 PKCS#11 API 从 eToken 获取私钥?

Posted

技术标签:

【中文标题】如何通过 PKCS#11 API 从 eToken 获取私钥?【英文标题】:How can I get the private key from the eToken by PKCS#11 API? 【发布时间】:2017-02-15 08:42:04 【问题描述】:

目前,我开发了两个桌面应用程序,一个是C++,另一个是C#。证书已存储在eToken 并标记为不可导出

我想通过PKCS#11库从eToken获取私钥并将私钥转换或复制到内存流或字节数组结构中,然后将密钥对象传递给第三方密码学API(BC/OpenSSL)用于数据加密/解密。

我如何从标记为不可导出的 eToken 中查看或获取私钥?

【问题讨论】:

看来你应该做不到。 我认为这是不可导出的重点。它的加密安全,不可导出 - 这也意味着不可查看。 【参考方案1】:

您无法从令牌中提取标记为不可导出的私钥,这就是使用该密钥的原因。如果您需要执行某些操作,您必须将数据发送到令牌,然后检索结果。 至少您可以使用 X509Store 类 (C#) 读取 USB 内的证书

【讨论】:

以上是关于如何通过 PKCS#11 API 从 eToken 获取私钥?的主要内容,如果未能解决你的问题,请参考以下文章

如何通过模板获取PKCS11 PublicKey

MacOSX 上的智能卡 PKCS#11 支持

如何从 AES 加密字符串中添加/删除 PKCS7 填充?

是否可以通过 PKCS#11 开发 baseCSP 卡微型驱动程序?

从现有 PKCS#12 密钥库创建 Oracle Wallet

使用Thales nShield HSM的PKCS11interop c#wrapper库导出/导入RSA密钥对?