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 リファレンス

C.  OID の指定

OID 値が含まれるファイル

/etc/gss/mech ファイル

/etc/gss/qop ファイル

gss_str_to_oid() 関数

メカニズム OID の構築

createMechOid() 関数

デフォルト以外のメカニズムの指定

D.  SASL ソースコード例

E.  SASL リファレンス

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

用語集

索引

メカニズム OID の構築

gss_str_to_oid() は常に使用できるわけではないため、メカニズムを調べて選択する方法がほかにもいくつかあります。1 つは、メカニズム OID を手動で構築し、そのメカニズムを使用できるメカニズムの集合と比較する方法です。もう 1 つは、使用できるメカニズムの集合を取得して、その中から 1 つを選択する方法です。

次に、gss_OID 型の形式を示します。

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

この構造体の elements フィールドは、gss_OID の通常の BER TLV エンコーディングの値の部分の ASN.1 BER エンコーディングが格納されているオクテット文字列の最初のバイトを指します。length フィールドには、この値のバイト数が格納されています。たとえば、DASS X.509 認証メカニズムに対応する gss_OID 値の場合、length フィールドは 7 で、elements フィールドは 8 進数で「53,14,2,207,163,7,5」となる値を指します。  

メカニズム OID を構築する 1 つの方法は、gss_OID を宣言し、次にその要素を手動で初期化して、そのメカニズムを表すようにします。前述のとおり、elements 値はハードコード化することも、表から取得することも、ユーザーが入力することもできます。この方法は、gss_str_to_oid() を使用するよりも手がかかりますが、同じ効果が得られます。

次に、手動で構築した gss_OID を、使用できるメカニズムの集合と比較します。使用できるメカニズムの集合は、gss_indicate_mechs() または gss_inquire_mechs_for_name() の関数から戻されたものです。手動で構築したメカニズム OID が、使用できるメカニズムの集合の中に存在するかどうかを調べるには、gss_test_oid_set_member() 関数を使用します。gss_test_oid_set_member() がエラーを戻さなかった場合、手動で構築した OID は GSS-API トランザクション用のメカニズムとして使用できます。

OID を手動で構築する代わりに、gss_indicate_mechs() または gss_inquire_mechs_for_name() を使用すると、使用できるメカニズムの gss_OID_set を取得できます。次に、gss_OID_set の形式を示します。

typedef struct gss_OID_set_desc_struct {
     OM_uint32 length;
     void           *elements;
} gss_OID_set_desc, *gss_OID_set;

elements はメカニズムを表す gss_OID です。アプリケーションは、各メカニズムを解析し、それぞれの数値表現を表示できます。ユーザーはこの表示を使用してメカニズムを選択できます。次に、アプリケーションは 選択したメカニズムが gss_OID_set の適切なメンバーになるように設定します。また、希望するメカニズムと使用できるメカニズムのリストを比較することもできます。

createMechOid() 関数

この関数は、完全を期すためにここに表示されています。通常は、GSS_C_NULL_OID によって指定されるデフォルトのメカニズムを使用するようにしてください。

例 C-3 createMechOid() 関数

gss_OID createMechOid(const char *mechStr)
{
        gss_buffer_desc mechDesc;
        gss_OID mechOid;
        OM_uint32 minor;

        if (mechStr == NULL)
                return (GSS_C_NULL_OID);

        mechDesc.length = strlen(mechStr);
        mechDesc.value = (void *) mechStr;

        if (gss_str_to_oid(&minor, &mechDesc, &mechOid) !
            = GSS_S_COMPLETE) {
                fprintf(stderr, "Invalid mechanism oid specified <%s>",
                                mechStr);
                return (GSS_C_NULL_OID);
        }

        return (mechOid);
}