带有存储在智能卡上的公钥和私钥的签名文件

问题描述:

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

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

此外,我通过发送APDU命令在我的智能卡上发现了一个CSP(“加密服务提供程序”)。它有用吗?

我应该指定我使用Compact Framework(3.5)在C#上开发。如果你有一个想法,我很高兴听到这一点。

非常感谢您的帮助!

问候

如果您有智能卡读取器和/或智能卡PKCS11驱动程序的DLL,这将是一个理想的选择。这将使您轻松使用签署数据的方式。

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

在附注中,您确定需要获得PKCS#7签名(P7M扩展暗示了这一点)吗? XML文件通常使用XMLDSig或XAdES(XMLDSig的扩展)进行签名。或者它可能是您需要分离的PKCS#7签名。您需要检查要求。

+0

谢谢你的帮助!不幸的是,我没有smardcard的PKCS11驱动程序DLL。而不是PKCS11 DLL,我可以使用Crypto API DLL来执行相同的工作吗? – Amatukami 2014-09-08 14:20:51

+0

@Amatukami如果证书可以通过CryptoAPI访问,那么你可以使用该接口(因为CryptoAPI是windows系统接口,所以没有DLL)。我们的SecureBlackbox本身支持CryptoAPI,.NET框架也支持。 – 2014-09-08 14:24:21