Я пытаюсь использовать WinCrypt API в C ++.
Мое приложение должно шифровать, расшифровывать, подписывать и проверять файлы, и я знаю, как это сделать, когда у меня есть правильные ключи. Но моя проблема на самом деле в том, что это НЕ то же самое приложение, которое генерирует эти ключи.
У меня есть открытый и закрытый ключи в файлах в формате PEM:
-----BEGIN RSA PRIVATE KEY-----
[Base64 encoded]
-----END RSA PRIVATE KEY-----
А:
-----BEGIN RSA PUBLIC KEY-----
[Base64 encoded]
-----END RSA PUBLIC KEY-----
После некоторых исследований я обнаружил, как импортировать открытый ключ: здесь и здесь , используя следующие методы:
- CreateFile & ReadFile для чтения содержимого файла
- CryptStringToBinary , с CRYPT_STRING_BASE64HEADER для преобразования из формата PEM в формат DER (удалить верхний и нижний колонтитулы и декодировать из base64)
- CryptDecodeObjectEx с X509_PUBLIC_KEY_INFO
- CryptImportPublicKeyInfo , чтобы импортировать ключ
Но теперь моя проблема - сделать то же самое с закрытым ключом .
Любая помощь будет очень ценится :)
Спасибо.