C#中的PKCS#11库

时间:2011-10-21 09:02:54

标签: c# dll pkcs#11

我需要为某些智能卡编写PKCS11库。我是C#开发人员,我不想使用其他语言。我使用平台调用来与卡片API进行通信(它不是PKCS11)。

如何在C#中编写带有PKCS11接口的库,不仅可以用于.Net。我必须使用哪些技术,我必须知道什么(我之前从未做过这些事情)? 我希望,我会在这个主题中有足够的关键词开始。我必须在哪个方向挖掘?

谢谢。

5 个答案:

答案 0 :(得分:2)

搜索“how to create an unmanaged DLL in C#”。然而,我应该说,在C#中创建PKCS#11驱动程序DLL的想法远非理想,原因很多,您会在使用上述搜索链接找到的文章中找到这些原因。

答案 1 :(得分:1)

我不明白为什么要这样做,但PKCS#11不是Windows的东西,CSP是,虽然有些应用程序像Mozilla一样使用PKCS#11,但我真的建议你是否想要做PKCS# 11,用C或C ++做它只是为了让代码可以移植到其他平台,这可能需要调整(#if #else)当然但主要的逻辑代码将保持不变,真正的PKCS#11是linux / unix / bsd / macosx的事情..也是C#不能生成stdlib,我假设它生成一个COM / COM +对象,它与PKCS#11的C库完全不同。

答案 2 :(得分:1)

您可以使用此库:pkcs11.net

  

用.Net编写的Pkcs11包装器,用C#编写。支持的方法:TokeInfo / SlotInfo,打开/关闭会话,登录/注销,查找对象,摘要,签名/验证,加密/解密

答案 3 :(得分:0)

您可以使用NCryptoki,这是PKCS#11非托管dll的C#接口。 请参阅:http://www.ncryptoki.com

PKCS#11不仅可用于PKI功能(密钥和证书),还可用于存储和读取智能卡中的数据。这就是Windows上也需要PKCS#11的原因。

答案 4 :(得分:-1)

我没有广泛使用安全性,但许多人可能会建议Bouncy Castle for .NET来处理安全问题。