2015-03-23 13 views
0

Я пытаюсь использовать функцию CryptImportKey для импорта PFX в смарт-карту Gemalto .NET IDPrime, но я получаю ошибку «Недопустимый тип» (2148073482) , Я подозреваю, что вызов RSACryptoServiceProvider.ExportCspBlob (true) возвращает ключи в неправильном формате. Я использую образец кода от http://www.idrix.fr/Root/Samples/PfxImporter.cs. ПРИМЕЧАНИЕ. Я уже установил AllowPrivateExchangeKeyImport & AllowPrivateSignatureKeyImport в 0x1 для поставщика Crypto-провайдера базы данных Microsoft Base, но все равно никаких изменений. Я запускаю Windows Server 2012, но не думаю, что это проблема.C# PInvoke CryptImportKey Не работает с «Недопустимый тип указан»

Может кто-нибудь, пожалуйста, скажите мне, что не так с этим образцом кода?

ответ

1

Ваша проблема, безусловно, связана с тем, что ваше приложение работает на 32-разрядной версии в 64-разрядной Windows, и вы не изменили 32-разрядный раздел реестра Microsoft Base CSP, расположенный под Wow6432Node.

Чтобы решить проблему, измените AllowPrivateExchangeKeyImport & AllowPrivateSignatureKeyImport также в разделе "HKLM \ SOFTWARE \ Wow6432Node \ Microsoft \ Cryptography \ Defaults \ Provider \ Microsoft Base Smart Card Crypto Provider".

У меня есть обновленный комментарий в заголовке PfxImporter.cs, чтобы включить это замечание.