ナビゲーションリンクをスキップ | |
印刷ビューの終了 | |
Oracle Solaris セキュリティーサービス開発ガイド Oracle Solaris 10 8/11 Information Library (日本語) |
1. Oracle Solaris の開発者向けセキュリティー機能 (概要)
3. PAM アプリケーションおよび PAM サービスの記述
クライアント側におけるその他の GSS-API コンテキスト操作
8. Oracle Solaris 暗号化フレームワークの紹介
gss-client プログラムはこの段階で、送信したメッセージの有効性を検証できます。サーバーは、送信メッセージに対する MIC を戻します。そのメッセージは recv_token() を使って取得できます。
そして、gss_verify_mic() 関数を使ってメッセージの「署名」つまり MIC を検証します。gss_verify_mic() は、受け取った MIC を元のラップされていないメッセージと比較します。受け取った MIC は、out_buf に格納されたサーバーのトークンから取得します。ラップされていないメッセージの MIC は、in_buf 内に格納されています。2 つの MIC が一致した場合、メッセージの有効性は検証されたことになります。その後、クライアントは受け取ったトークンのバッファー (out_buf) を解放します。
次のソースコードは、署名ブロックの読み取りと検証を行う方法を示しています。
注 - このソースコード例は、ダウンロードセンターからダウンロードすることも可能です。https://cds.sun.com/is-bin/INTERSHOP.enfinity/WFS/CDS-CDS_SMI-Site/en_US/-/USD/ViewProductDetail-Start?ProductRef=Security_code-Dev1.1-G-F@CDS-CDS_SMI を参照してください。
例 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");