2014-08-29 76 views
2

我開發了一個應用程序,使用存儲在智能卡上的公鑰和私鑰對文件XML進行簽名(IAS-ECC)。我知道我的智能卡有兩個證書(一個用於認證,一個用於簽名)和私鑰。考慮到這一點,我拼命搜索文檔和示例來正確簽署我的文件(大小在4到10千之間)。總而言之,我想獲得一個P7M文件。帶有存儲在智能卡上的公鑰和私鑰的簽名文件

所以,我的問題是:如何做到這一點?我是否使用OpenSSL或PKCS11等庫?目前,我只嘗試使用APDU命令,但沒有結果。我想知道所有的步驟來做到這一點。

此外,我通過發送APDU命令在我的智能卡上發現了一個CSP(「加密服務提供程序」)。它有用嗎?

我應該指定我使用Compact Framework(3.5)在C#上開發。如果你有一個想法,我很高興聽到這一點。

非常感謝您的幫助!

問候

回答

1

如果您有智能卡讀取器和/或智能卡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