【问题标题】:Sign file with public and private keys stored on smart card使用存储在智能卡上的公钥和私钥签署文件
【发布时间】:2014-08-29 12:22:30
【问题描述】:

我开发了一个应用程序来使用存储在智能卡 (IAS-ECC) 上的公钥和私钥对文件 XML 进行签名。我知道我的智能卡有两个证书(一个用于身份验证,一个用于签名)和私钥。考虑到这一点,我拼命搜索文档和示例以正确签署我的文件(大小在 4 到 10 ko 之间变化)。总而言之,我想要一个P7M文件。

所以,我的问题是:如何做到这一点?我是否使用 OpenSSL 或 PKCS11 等库?目前,我只尝试使用 APDU 命令,但没有结果。我想知道执行此操作的所有步骤。

此外,我通过发送 APDU 命令在我的智能卡上发现了一个 CSP(“Cryptographic Service Provider”)。有用吗?

我应该指定我使用 Compact Framework (3.5) 在 C# 上进行开发。如果您有想法,我很高兴听到。

提前感谢您的帮助!

最好的问候

【问题讨论】:

标签: c# cryptography smartcard apdu


【解决方案1】:

如果您有智能卡读卡器和/或智能卡的 PKCS11 驱动程序 DLL,那将是一个理想的选择。这将为您提供易于使用的方式来签署数据。

我不确定 OpenSSL 是否能够访问智能卡(至少无需修改源代码),但我不是 OpenSSL 专家。我所知道的是我们的 SecureBlackbox 可以完成这项工作(如果您可以使用 PKCS11)。

附带说明,您确定需要获得 PKCS#7 签名(P7M 扩展意味着这一点)吗? XML 文件通常使用 XMLDSig 或 XAdES(XMLDSig 的扩展)进行签名。或者,您可能需要一个分离的 PKCS#7 签名。您需要检查要求。

【讨论】:

  • 感谢您的帮助!不幸的是,我没有智能卡的 PKCS11 驱动程序 DLL。我可以使用 Crypto API DLL 代替 PKCS11 dll 来完成相同的工作吗?
  • @Amatukami 如果可以通过 CryptoAPI 访问证书,那么您可以使用该接口(那里没有 DLL,因为 CryptoAPI 是 Windows 系统接口)。我们的 SecureBlackbox 原生支持 CryptoAPI,.NET 框架也是如此。
猜你喜欢
  • 2018-09-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-04
  • 2014-10-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多