JavaScript is required to for searching.
ナビゲーションリンクをスキップ
印刷ビューの終了
Oracle Solaris 10 セキュリティー開発者ガイド     Oracle Solaris 10 1/13 Information Library (日本語)
search filter icon
search icon

ドキュメントの情報

はじめに

1.  Oracle Solaris の開発者向けセキュリティー機能 (概要)

2.  特権付きアプリケーションの開発

3.  PAM アプリケーションおよび PAM サービスの記述

4.  GSS-API を使用するアプリケーションの記述

5.  GSS-API クライアント例

6.  GSS-API サーバー例

7.  SASL を使用するアプリケーションの記述

8.  Oracle Solaris 暗号化フレームワークの紹介

9.  ユーザーレベルの暗号化アプリケーションとプロバイダの記述

10.  スマートカードフレームワークの使用

A.  C ベース の GSS-API プログラム例

B.  GSS-API リファレンス

GSS-API 関数

旧バージョンの GSS-API 関数

OID を処理する関数

名前が変更された関数

GSS-API ステータスコード

GSS-API メジャーステータスコードの値

ステータスコードの表示

ステータスコードのマクロ

GSS-API データ型と値

基本 GSS-API データ型

OM_uint32

gss_buffer_desc

gss_OID_desc

gss_OID_set_desc

gss_channel_bindings_struct

名前型

チャネルバインディングのアドレス型

GSS-API の実装に固有な機能

Oracle Solaris に固有の関数

人が読める名前についての構文

匿名の形式

選択されたデータ型の実装

コンテキストの削除と格納されたデータの解放

チャネルバインディング情報の保護

コンテキストのエクスポートとプロセス間トークン

サポートされる資格の型

資格の有効期間

コンテキストの有効期間

ラップサイズの制限と QOP 値

minor_status パラメータの使用

Kerberos v5 ステータスコード

Kerberos v5 でステータスコード 1 として戻されるメッセージ

Kerberos v5 でステータスコード 2 として戻されるメッセージ

Kerberos v5 でステータスコード 3 として戻されるメッセージ

Kerberos v5 でステータスコード 4 として戻されるメッセージ

Kerberos v5 でステータスコード 5 として戻されるメッセージ

Kerberos v5 でステータスコード 6 として戻されるメッセージ

Kerberos v5 でステータスコード 7 として戻されるメッセージ

C.  OID の指定

D.  SASL ソースコード例

E.  SASL リファレンス

F.  暗号化プロバイダのパッケージ化と署名

用語集

索引

GSS-API ステータスコード

メジャーステータスコードは、次の図に示すように、OM_uint32 にエンコードされます。

図 B-1 メジャーステータスの符号化

image:メジャーステータスコードが、どのように OM_uint32 に符号化されるかを示しています。

GSS-API ルーチンが上位 16 ビットに 0 以外の値が入った GSS ステータスコードを戻す場合、その呼び出しが失敗したことを示します。呼び出しエラーフィールドが 0 以外の場合、アプリケーションのルーチンの呼び出しにエラーがあったことを示します。表 B-1 に、「呼び出しエラー」のリストを示します。ルーチンエラーフィールドが 0 以外の場合、ルーチン固有のエラーのためにルーチンが失敗したことを示します。表 B-2 に、「ルーチン固有のエラー」のリストを示します。上位 16 ビットが失敗または成功のどちらを示すかにかかわらず、ステータスコードの補足情報フィールドのビットを設定できます。表 B-3 に、個々のビットの意味を示します。

GSS-API メジャーステータスコードの値

次の表に、GSS-API が戻す呼び出しエラーのリストを示します。これらのエラーは、特定の言語バインディング (この場合は C) に固有です。

表 B-1 GSS-API の呼び出しエラー

エラー
フィールドの値
意味
GSS_S_CALL_INACCESSIBLE_READ
1
要求された入力パラメータを読み取れません
GSS_S_CALL_INACCESSIBLE_WRITE
2
要求された出力パラメータに書き込めません
GSS_S_CALL_BAD_STRUCTURE
3
パラメータの形式が間違っています

次の表に、GSS-API ルーチンエラー (GSS-API 関数が戻す一般的なエラー) のリストを示します。

表 B-2 GSS-API ルーチンエラー

エラー
フィールドの値
意味
GSS_S_BAD_MECH
1
要求されたメカニズムがサポートされていません。
GSS_S_BAD_NAME
2
提供された名前が無効です。
GSS_S_BAD_NAMETYPE
3
提供された名前型がサポートされていません。
GSS_S_BAD_BINDINGS
4
提供されたチャネルバインディングが間違っています。
GSS_S_BAD_STATUS
5
提供されたステータスコードが無効です。
GSS_S_BAD_MIC, GSS_S_BAD_SIG
6
トークンが持っている MIC が無効です。
GSS_S_NO_CRED
7
資格を使用またはアクセスできません。あるいは、資格が提供されていません。
GSS_S_NO_CONTEXT
8
コンテキストがまったく確立されていません。
GSS_S_DEFECTIVE_TOKEN
9
トークンが無効です。
GSS_S_DEFECTIVE_CREDENTIAL
10
資格が無効です。
GSS_S_CREDENTIALS_EXPIRED
11
参照された資格の有効期間が終了しています。
GSS_S_CONTEXT_EXPIRED
12
コンテキストの有効期間が終了しています。
GSS_S_FAILURE
13
その他のエラー。実際のメカニズムによって、特定の GSS-API ステータスコードが定義されていないエラーが検出されました。この場合、メカニズムに固有のステータスコード (マイナーステータスコード) にエラーの詳細が示されます。
GSS_S_BAD_QOP
14
要求された保護品質を提供できません。
GSS_S_UNAUTHORIZED
15
当該操作はローカルのセキュリティーポリシーによって禁止されています。
GSS_S_UNAVAILABLE
16
当該操作またはオプションは使用できません。
GSS_S_DUPLICATE_ELEMENT
17
要求された資格要素はすでに存在しています。
GSS_S_NAME_NOT_MN
18
提供された名前がメカニズム名 (MN) ではありません。

GSS_S_COMPLETE という名前は、値が 0 で、API エラーまたは補足情報ビットのどちらも存在しないことを示します。

次の表に、GSS-API 関数が戻す補足情報の値のリストを示します。

表 B-3 GSS-API 補足情報コード

コード
ビット番号
意味
GSS_S_CONTINUE_NEEDED
0 (LSB)
gss_init_sec_context() または gss_accept_sec_context() だけが戻します。関数を完了させるには、もう一度ルーチンを呼び出す必要があることを示します。
GSS_S_DUPLICATE_TOKEN
1
トークンは以前のトークンの複製です。
GSS_S_OLD_TOKEN
2
トークンの有効期間が終了しています。
GSS_S_UNSEQ_TOKEN
3
後方にあるトークンをすでに処理しています。
GSS_S_GAP_TOKEN
4
期待していたメッセージ毎トークンを受信していません。

ステータスコードの詳細は、「GSS-API ステータスコード」を参照してください。

ステータスコードの表示

gss_display_status() 関数は、GSS-API ステータスコードをテキスト形式に変換します。この形式を使用すると、コードをユーザーに表示したり、テキストログに格納したりできます。関数の中には複数の状態を戻すものもありますが、gss_display_status() 関数は 一度に 1 つのステータスコードしか表示できません。このため、gss_display_status() をループの一部として呼び出す必要があります。gss_display_status() が 0 以外のステータスコードを示すときは、関数は別のステータスコードを取得できます。

例 B-1 gss_display_status() によるステータスコードの表示

OM_uint32 message_context;
OM_uint32 status_code;
OM_uint32 maj_status;
OM_uint32 min_status;
gss_buffer_desc status_string;

...

message_context = 0;

do {

     maj_status = gss_display_status(
               &min_status,
               status_code,
               GSS_C_GSS_CODE,
               GSS_C_NO_OID,
               &message_context,
               &status_string);

     fprintf(stderr, "%.*s\n", \
               (int)status_string.length, \
               (char *)status_string.value);

     gss_release_buffer(&min_status, &status_string,);

} while (message_context != 0);

ステータスコードのマクロ

マクロ GSS_CALLING_ERROR()GSS_ROUTINE_ERROR ()、および GSS_SUPPLEMENTARY_INFO() は GSS ステータスコードを受け取ります。これらのマクロは、関係のあるフィールド以外の情報をすべて削除します。たとえば、GSS_ROUTINE_ERROR() をステータスコードに適用すると、呼び出しエラーフィールドと補足情報フィールドは削除されます。この操作では、ルーチンエラーフィールドのみが残ります。このようなマクロが提供する値は、適切な型の GSS_S_xxx シンボルと直接比較できます。また、マクロ GSS_ERROR() は、ステータスコードが呼び出しエラーまたはルーチンエラーを示す場合は 0 以外の値を戻し、そうでない場合は 0 を戻します。GSS-API で定義されるすべてのマクロは引数を 1 つだけしか受け取りません。