2011-12-07 72 views
2

私はWinCrypt APIをC++で使用しようとしています。CryptoAPI/WinCrypt:PEMファイルの秘密鍵をC++でインポートするには?

私のアプリケーションでは、ファイルを暗号化、復号化、署名、および検証する必要があります。正しい鍵があれば、その方法を知っています。しかし、私の問題は実際には、それらのキーを生成する同じアプリケーションではないことです。

そして:私はPEM形式のファイルで、公開鍵と秘密鍵である必要があり何

いくつかの研究の後

-----BEGIN RSA PUBLIC KEY----- 
[Base64 encoded] 
-----END RSA PUBLIC KEY----- 

が、私は、公開鍵をインポートする方法を発見した:hereをし、 hereを使用し、以下の方法を使用して:

  • のCreateFile & のReadFile
  • X509_PUBLIC_KEY_INFOとDERフォーマットにPEMフォーマットから変換するCRYPT_STRING_BASE64HEADER(ヘッダとフッタを削除し、BASE64のデコード)
  • CryptDecodeObjectExとCryptStringToBinaryを、ファイルの内容を読み取ります
  • CryptImportPublicKeyInfo、キーをインポートする

今、私の問題は秘密鍵と同じことをすることです。 助けが本当に本当に感謝されるでしょう:) ありがとう。

+0

暗号APIはプロプライエタリ暗号化用です。PGP用にこれを使用しているのはちょうどwierdです – marinara

+0

はい、確かです。しかし、実際には私はキーの形式の選択肢がありません:/それ以外の私はCryptoAPIの独自の形式を選択したでしょう。しかし、公開鍵のインポートはPEM形式から可能であるため、秘密鍵でも可能であると考えました。 – nikloskoda

答えて

7

A PEM秘密鍵は、PKCS_RSA_PRIVATE_KEYCryptDecodeObjectExを使用して、CryptImportKeyを呼び出すことにより、CAPIにインポートすることができます。

私は、CAPIを使用してデータに署名するためにPEMでエンコードされたRSA秘密鍵を使用する方法を示すサンプルを作成しました。ここにリンクがあります:http://www.idrix.fr/Root/Samples/capi_pem.cpp

私はこれが役に立ちそうです。

+0

ありがとうございます。あなたは私を窮地から救った。 (私は成功せずにCRYPT_PRIVATE_KEY_INFOを取得しようとしていましたが、私はそれが必要であるとは思わない)。 –

+0

DSAキーで同じことを行う方法はありますか? –