Просто интересно, может ли кто-нибудь, кто работал с API регистрации сертификатов Microsoft, предложить какую-то помощь в этом.Я пытаюсь использовать метод IX509PrivateKey :: Export, который описан здесь: https://msdn.microsoft.com/en-us/library/windows/desktop/aa379006%28v=vs.85%29.aspx?f=255&MSPPError=-2147217396.
Мой код C # для вызова этого метода выглядит следующим образом:
privateKey.Export("BCRYPT_PRIVATE_KEY_BLOB", EncodingType.XCN_CRYPT_STRING_ANY);
К сожалению этовозвращает ошибку: «Параметр неверен.0x80090027 ”
Ошибка не очень полезна, так как я не уверен, какой параметр вызывает проблему, поскольку они оба используют значения, указанные в документации API.Обратите внимание, что до того, как этот код был вызван, закрытый ключ был инициализирован, создан и может быть успешно использован для генерации CSR через этот API.
Я подумал, что это может быть связано с проблемой перевода строки C # в тип BSTR, который можно использовать с неуправляемым кодом, поэтому я попробовал несколько методов для проверки этой теории, но не оченьудачи.У меня такое ощущение, что сама ошибка может быть сгенерирована функцией CNG NCryptExportKey, которая описана здесь: https://msdn.microsoft.com/en-us/library/windows/desktop/aa376263%28v=vs.85%29.aspx?f=255&MSPPError=-2147217396. Я хотел бы попытаться избежать беспорядочных / небезопасных решений, таких как P / Invoke, если это возможно.
Был бы рад услышать любые идеи от кого-либо.Дайте мне знать, если я могу предоставить дополнительную информацию.