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