C#PInvoke CryptImportKey因“指定的类型无效”而失败

时间:2015-03-23 06:25:57

标签: c# certificate smartcard advapi32 gemalto

我试图使用CryptImportKey函数将PFX导入到Gemalto .NET IDPrime智能购物车中,但我得到了一个"无效类型指定" (2148073482)错误。我怀疑RSACryptoServiceProvider.ExportCspBlob(true)调用以错误的格式返回密钥。我使用了来自http://www.idrix.fr/Root/Samples/PfxImporter.cs的示例代码。注意:我已经设置了AllowPrivateExchangeKeyImport&对于Microsoft Base智能卡加密提供程序,AllowPrivateSignatureKeyImport为0x1,但仍然没有更改。我正在运行Windows Server 2012,但不要认为这是问题所在。

有人可以告诉我这个代码示例有什么问题吗?

1 个答案:

答案 0 :(得分:1)

您的问题肯定是由于您的应用程序在64位Windows上运行32位并且未更改位于 Wow6432Node 下的Microsoft Base CSP 32位注册表项这一事实引起的

要解决您的问题,请更改AllowPrivateExchangeKeyImport& AllowPrivateSignatureKeyImport也位于“HKLM \ SOFTWARE \ Wow6432Node \ Microsoft \ Cryptography \ Defaults \ Provider \ Microsoft Base Smart Card Crypto Provider”下。

我已更新PfxImporter.cs标题中的评论以包含此评论。