将pfx / p12文件导入智能卡c#

时间:2014-05-23 08:27:01

标签: c# certificate smartcard cryptoapi

有没有办法以编程方式将.p12/pfx文件导入智能卡?我知道它适用于certutil

certutil -user -p "pw" -csp "csp" -importpfx path

我正在使用“Microsoft Base Smart Card Crypto Provider”

通过certutil它正在工作,因此我确信它也应该使用c#(可能是CRYPTOAPI)...我只是不想使用那种(开始cmd添加“导入字符串”):

System.Diagnostics.Process process = new System.Diagnostics.Process();
System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo();
startInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;  
startInfo.FileName = "cmd.exe";            
startInfo.Arguments = strCmdText;           
process.StartInfo = startInfo;            
process.Start();

导入pfx!

但我不知道这可以在c#中以编程方式工作。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

您可以使用C#将PFX / P12文件导入智能卡,方法是结合使用提供PFX / P12文件解析的类X509Certificate2和P / Invoking CryptoAPI函数来执行实际导入。

我已在C#控制台程序中实现了这一功能,该程序可复制certutil导入功能。您可以从http://www.idrix.fr/Root/Samples/PfxImporter.cs获取其源代码。

如果有兴趣的话,我也用C ++实现了这一点。以下是来源:http://www.idrix.fr/Root/Samples/PfxImporter.cpp

最后一点:如智能卡微型驱动程序规范中所述,必须修改两个注册表项以允许使用MS Base CSP进行导入操作:

  1. HKLM \ SOFTWARE \ Microsoft \ Cryptography \ Defaults \ Provider \ Microsoft Base智能卡加密提供程序\ AllowPrivateExchangeKeyImport = DWORD:0x01
  2. HKLM \ SOFTWARE \ Microsoft \ Cryptography \ Defaults \ Provider \ Microsoft Base智能卡加密提供程序\ AllowPrivateSignatureKeyImport = DWORD:0x01