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

将pfx/p12文件导入智能卡c#,c#,certificate,smartcard,cryptoapi,C#,Certificate,Smartcard,Cryptoapi,是否有方法以编程方式将.p12/pfx文件导入智能卡?我知道它通过certutil工作: certutil -user -p "pw" -csp "csp" -importpfx path 我正在使用“Microsoft Base智能卡加密提供商” 通过certutil,它正在工作,因此我确信它也应该使用c#(可能是CRYPTOAPI)…我只是不想使用(开始使用cmd添加“导入字符串”): 要导入pfx 但我不知道这如何在c#中以编程方式工作。任何帮助都将不胜感激。您可以使用C#将PFX/P1

是否有方法以编程方式将
.p12/pfx
文件导入智能卡?我知道它通过
certutil
工作:

certutil -user -p "pw" -csp "csp" -importpfx path
我正在使用“Microsoft Base智能卡加密提供商”

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

要导入pfx


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

您可以使用C#将PFX/P12文件导入智能卡,方法是结合使用X509Certificate2类,该类提供对PFX/P12文件的解析,并调用p/CryptoAPI函数以执行实际导入

我已经在一个复制certutil导入功能的C#控制台程序中实现了这一点。您可以从中获取其源代码

我也在C++中实现了,如果有人感兴趣的话。以下是来源:

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

  • HKLM\SOFTWARE\Microsoft\Cryptography\Defaults\Provider\Microsoft基本智能卡加密提供程序\AllowPrivateExchangeKeyImport=DWORD:0x01
  • HKLM\SOFTWARE\Microsoft\Cryptography\Defaults\Provider\Microsoft基本智能卡加密提供程序\AllowPrivateSignatureKeyImport=DWORD:0x01

  • 取决于智能卡和中间层,以及您可能找到的任何API。您是否使用了“Microsoft基本智能卡加密提供商”或任何其他CSP?
    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();