Я хочу получить закрытый ключ из магазина Windows и преобразовать его в PEM, чтобы использовать его в OpenSSL.
Я искал способ сделать это в течение нескольких часов!
Но теперь я снова застрял.
Я думаю, что это безопасность от неясности, сделанная Microsoft, чтобы убедиться, что мы никогда не сможем получить закрытые ключи.
Первые два в порядке. Но вам нужно использовать CryptExportPKCS8. Он экспортирует закрытый ключ в буфер в формате PKCS # 8 DER. Из PKCS # 8 вы можете получить его в структуру Open50L X509 (используя функции d2i и буфер памяти в качестве входных данных в структурах BIO).
Однако если закрытый ключ помечен как неэкспортируемый, эта функция завершится ошибкой.
Единственное, что вы можете сделать, это подписать данные с помощью такого закрытого ключа.
Я оставляю ответ таким, какой он есть (ведь без dbasic я бы застрял :-)), но я должен добавить еще:
Окончание поддержки CryptExportPKCS8 () закончилось XP / 2003, поэтому мы должны использовать PFXExportCertStoreEx (), однако эта функция экспортирует хранилище WHOLE. Таким образом, чтобы экспортировать только один сертификат, вам нужно использовать хранилище памяти.
Посмотрите этот пример о том, как это сделать:
http://msdn.microsoft.com/en-us/library/windows/desktop/aa382037(v=vs.85).aspx
Вставьте нужный сертификат в хранилище памяти, а затем используйте PFXExportCertStoreEx () для экспорта того, что вам нужно.