OpenSSL の c ライブラリを使用して、楕円曲線 Diffie-Hellman (ECDH) キー ペアを生成しています。最初のコード サンプルはこちらです。次の行で、公開鍵の実際の交換について詳しく説明します。
peerkey = get_peerkey(pkey);
pkey変数と戻り値はどちらも型ですEVP *。pkey以前に生成された公開鍵、秘密鍵、およびパラメーターが含まれ、戻り値にはピアの公開鍵のみが含まれます。したがって、これにより 3 つの疑問が生じます。
- ピアに送信するため
get_peerkey()に実際に公開鍵だけを抽出するにはどうすればよいでしょうか?pkey - コードは秘密鍵とパラメータを抽出して
pKey、鍵交換後に後で使用できるように保存するにはどうすればよいでしょうか? - ピアの生の公開鍵から
get_peerkey()新しい構造をどのように生成しますか?EVP_PKEY
EVP_PKEY_print_public()OpenSSL 関数、EVP_PKEY_print_private()、およびを見てきましたEVP_PKEY_print_params()が、これらは人間が読める出力を生成するためのものです。EVP_PKEYそして、人間が読める公開鍵を構造体に戻すための同等のものは見つかりませんでした。