GSS-API のプログラミング

GSS-API データ型と値

この節では、さまざまなタイプの GSS-API データ型と値を説明します。gss_cred_id_tgss_name_t などのいくつかのデータ型はユーザーに不透明であり、その構造を知っても利点はないため、ここでは説明しません。この節では、次のことについて説明します。

基本 GSS-API データ型

次に、GSS-API で使用されるデータ型をいくつか示します。

OM_uint32

OM_uint32 はプラットフォームに依存しない 32 ビットの符号なし整数です。

gss_buffer_desc

次に、gss_buffer_descgss_buffer_t ポインタの定義を示します。


typedef struct gss_buffer_desc_struct {
        size_t length;
        void *value;
} gss_buffer_desc, *gss_buffer_t;

gss_OID_desc

次に、gss_OID_descgss_OID ポインタの定義を示します。


typedef struct gss_OID_desc_struct {
        OM_uint32 length;
        void*elements;
} gss_OID_desc, *gss_OID;

gss_OID_set_desc

次に、gss_OID_set_descgss_OID_set ポインタの定義を示します。


typedef struct gss_OID_set_desc_struct  {
        size_t  count;
        gss_OID elements;
} gss_OID_set_desc, *gss_OID_set;

gss_channel_bindings_struct

次に、gss_channel_bindings_struct 構造体と gss_channel_bindings_t ポインタの定義を示します。


typedef struct gss_channel_bindings_struct {
        OM_uint32 initiator_addrtype;
        gss_buffer_desc initiator_address;
        OM_uint32 acceptor_addrtype;
        gss_buffer_desc acceptor_address;
        gss_buffer_desc application_data;
} *gss_channel_bindings_t;

名前型

名前型とは、関連する名前の形式のことです。名前と名前型についての詳細は、名前OIDを参照してください。GSS-API は次の名前型をサポートしています。これらはすべて gss_OID 型です。

表 B–5 名前型

名前型 

意味 

GSS_C_NO_NAME 

GSS_C_NO_NAME (推奨されるシンボリック名) は、名前の転送で使用されるパラメータの特定の値に名前が渡されないことを意味する。

GSS_C_NO_OID 

実際のオブジェクト識別子ではなく、NULL の入力値に相当する。指定した場合、関連する名前が機構に固有なデフォルトの印刷可能な構文に基づいて解釈されることを示す。 

GSS_C_NT_ANONYMOUS 

匿名を指定する方法として提供される。この名前型と比較することによって、その名前が匿名のプリンシパルを参照するかどうかを機構に依存しない方法で決定できる。 

GSS_C_NT_EXPORT_NAME 

gss_export_name() 関数でエクスポートされた名前。

GSS_C_NT_HOSTBASED_SERVICE 

ホストコンピュータと関連するサービスを表す。この名前型は 2 つの要素「サービス (service)」と「ホスト名 (hostname)」からなり、service@hostname の形式を取る。 

GSS_C_NT_MACHINE_UID_NAME 

ローカルシステム上のユーザーの、数値によるユーザー識別子を示す。解釈の方法は OS に固有である。gss_import_name() 関数はこの UID を username に解釈処理し、ユーザー名形式として扱う。

GSS_C_NT_STRING_STRING_UID_NAME 

ローカルシステム上のユーザーの数値によるユーザー識別子を表す数字文字列を示す。解釈の方法は OS に固有である。この名前型はマシン UID 形式に似ているが、バッファにはユーザー ID を表す文字が入っている。 

GSS_C_NT_USER_NAME 

ローカルシステム上の指定されたユーザー。解釈の方法は OS に固有である。これは username の形式を取る。

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

表 B–6 に、gss_channel_bindings_struct 構造体の initiator_addrtypeacceptor_addrtype のフィールドで使用できる値を示します。この 2 つのフィールドは名前を受け取ることができる形式を示します (たとえば ARPAnet IMP アドレス形式や AppleTalk アドレス形式など)。チャネルバインディングについては、チャネルバインディングを参照してください。

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

フィールド 

値 (10 進数) 

アドレス型 

GSS_C_AF_UNSPEC 

未定のアドレス型 

GSS_C_AF_LOCAL 

ホスト - ローカル 

GSS_C_AF_INET 

インターネットアドレス型 (IP など) 

GSS_C_AF_IMPLINK 

ARPAnet IMP  

GSS_C_AF_PUP 

pup プロトコル (BSP など) 

GSS_C_AF_CHAOS 

MIT CHAOS プロトコル 

GSS_C_AF_NS 

XEROX NS 

GSS_C_AF_NBS 

nbs 

GSS_C_AF_ECMA 

ECMA 

GSS_C_AF_DATAKIT 

データキットプロトコル 

GSS_C_AF_CCITT 

10 

CCITT 

GSS_C_AF_SNA 

11 

IBM SNA 

GSS_C_AF_DECnet 

12 

DECnet 

GSS_C_AF_DLI 

13 

ダイレクトデータリンクインタフェース 

GSS_C_AF_LAT 

14 

LAT 

GSS_C_AF_HYLINK 

15 

NSC ハイパーチャネル 

GSS_C_AF_APPLETALK 

16 

AppleTalk 

GSS_C_AF_BSC 

17 

BISYNC 

GSS_C_AF_DSS 

18 

分散システムサービス 

GSS_C_AF_OSI 

19 

OSI TP4 

GSS_C_AF_X25 

21 

X.25 

GSS_C_AF_NULLADDR 

255 

アドレスは指定されていない。