SSPIインターフェイスを使用してTLSハンドシェイクプロセスを実装する必要があります。
私のアプリはクライアント側を実装しています。ここから見たように、一般的なフローは次のとおりです。
- InitializeSecurityContext-最初の呼び出しは、SecBufferDesc構造体へのポインターを返します。
- 出力バッファーを使用してsend(= WinSock API)関数を呼び出します。
- recv関数を呼び出す
- バッファーを使用して、InitializeSecurityContextを再度呼び出します。
これらのバッファに関するMSDNの説明:
「最初の呼び出し後のこの関数の呼び出しでは、2つのバッファーが必要です。最初のバッファーのタイプはSECBUFFER_TOKENで、サーバーから受信したトークンが含まれます。2番目のバッファーのタイプはSECBUFFER_EMPTYです。pvBufferメンバーとcbBufferメンバーの両方をゼロに設定してください。」
私の質問:
- もう少し説明が必要です:バッファの意味は何ですか?2番目のバッファには何が含まれていますか?それらは何のため?
- MSDNには、InitializeSecurityContext関数のTargetDataRep入力パラメーターがSchannelに使用されると書かれていますが、私が見た多くのサンプルでは、SECURITY_NATIVE_DREPに設定されています。SECURITY_NATIVE_DREPフラグとは何ですか?なぜMSDNはそれをゼロに設定すると言うのですか?
私は本当にどんな助けにも感謝します。
ありがとう!。