Oracle Solaris セキュリティーサービス開発ガイド

メッセージへの署名とメッセージの返送

この時点で、sign_server() 関数はメッセージに署名する必要があります。メッセージへの署名には、メッセージのメッセージ整合性コード (MIC) のクライアントへの返送が伴います。メッセージを返送することで、メッセージの送信とラップ解除が正常に完了したことをクライアントに証明できます。MIC を取得するために、sign_server() は関数 gss_get_mic() を使用します。

maj_stat = gss_get_mic(&min_stat, context, GSS_C_QOP_DEFAULT,
                            &msg_buf, &xmit_buf);

gss_get_mic() は、msg_buf 内のメッセージに基づいて MIC を生成し、その結果を xmit_buf に格納します。次に、サーバーは send_token() で MIC をクライアントに返送します。クライアントは、gss_verify_mic() でその MIC を検証します。「GSS-API クライアントにおける署名ブロックの読み取りと検証」を参照してください。

最後に、sign_server() はいくつかのクリーンアップを実行します。sign_server() は、gss_release_buffer() で GSS-API バッファーの msg_bufxmit_buf を解放します。続いて、sign_server() は、gss_delete_sec_context() でコンテキストを破棄します。