ナビゲーションリンクをスキップ | |
印刷ビューの終了 | |
Oracle Solaris 11 セキュリティーサービス開発ガイド Oracle Solaris 11 Information Library (日本語) |
1. Oracle Solaris の開発者向けセキュリティー機能 (概要)
3. PAM アプリケーションおよび PAM サービスの記述
クライアント側におけるその他の GSS-API コンテキスト操作
8. Oracle Solaris 暗号化フレームワークの紹介
9. ユーザーレベルの暗号化アプリケーションとプロバイダの記述
gss-client プログラムはこの段階で、送信したメッセージの有効性を検証できます。 サーバーは、送信メッセージに対する MIC を戻します。 そのメッセージは recv_token() を使って取得できます。
そして、gss_verify_mic() 関数を使ってメッセージの「署名」つまり MIC を検証します。gss_verify_mic() は、受け取った MIC を元のラップされていないメッセージと比較します。 受け取った MIC は、out_buf に格納されたサーバーのトークンから取得します。 ラップされていないメッセージの MIC は、in_buf 内に格納されています。 2 つの MIC が一致した場合、メッセージの有効性は検証されたことになります。 その後、クライアントは受け取ったトークンのバッファー (out_buf) を解放します。
次のソースコードは、署名ブロックの読み取りと検証を行う方法を示しています。
注 - このソースコード例は、Oracle ダウンロードセンターからダウンロードすることも可能です。 http://www.oracle.com/technetwork/indexes/downloads/sdlc-decommission-333274.html を参照してください。
例 5-7 gss-client 例 – 署名ブロックの読み取りと検証
/* Read signature block into out_buf */ if (recv_token(s, &out_buf) < 0) { (void) close(s); (void) gss_delete_sec_context(&min_stat, &context, GSS_C_NO_BUFFER); return -1; } /* Verify signature block */ maj_stat = gss_(&min_stat, context, &in_buf, &out_buf, &qop_state); if (maj_stat != GSS_S_COMPLETE) { display_status("verifying signature", maj_stat, min_stat); (void) close(s); (void) gss_delete_sec_context(&min_stat, &context, GSS_C_NO_BUFFER); return -1; } (void) gss_release_buffer(&min_stat, &out_buf); if (use_file) free(in_buf.value); printf("Signature verified.\n");