2

CertCreateSelfSignCertificate関数を使用して自己署名証明書を生成しました。これにより、PCCERT_CONTEXT が生成されます。

PCCERT_CONTEXT 変数に保存されている証明書を公開鍵だけでエクスポートするにはどうすればよいですか? 私はこれを行い、ネットワーク内の他の関係者に送信して、公開鍵を使用してメッセージを暗号化できるようにしたいと考えています。

これは簡単なオプションだと思いましたが、そうではありません。

4

2 に答える 2

3

pfxは必要ありません。

証明書は構造体CERT_CONTEXT内に存在します。メンバーpbCertEncodedが指し、長さがメンバーcbCertEncodedの値であるバッファーの内容を保存するだけです。

さらに、この証明書の公開鍵は、CERT_CONTEXT構造体に直接存在します:pCertInfo->SubjectPublicKeyInfo。たとえば、CryptImportPublicKeyInfoを使用してインポートし、CryptEncrypt呼び出してデータを暗号化できます。

これらの2つのオプションを使用すると、メッセージの暗号化を開始するために必要なものがすべて揃っています。もちろん、暗号化されたデータを復号化できるようにするには、秘密鍵を安全に保管する必要があります。

于 2012-05-31T04:23:47.983 に答える
1

最初に証明書を証明書ストアに入れ、次にPFXExportCertStoreExを使用して0 の dwFlags を渡す (つまり、EXPORT_PRIVATE_KEYS を設定しない) 必要があるようです。

PS CryptAPI、JSSE、OpenSSL など、暗号化ライブラリを扱う場合、決して簡単なことではありません... それは常に悪夢です。

于 2012-05-29T21:42:44.487 に答える