GSS-API のプログラミング

parse_oid()

GSS-API が処理できるように、(指定されていれば) コマンド行で指定されたセキュリティ機構名を OID に変換します。


注意 – 注意 –

このようなサンプルを示していますが、可能な限り、独自の機構を指定するのではなく、GSS-API 実装が提供するデフォルトの機構を使用することを強く推奨します。デフォルトの機構を取得するには、機構 OID 値を GSS_C_NULL_OID に設定します。また、gss_str_to_oid() 関数はすべての GSS-API 実装でサポートされているわけではありません。



例 A–3 parse_oid()


static void parse_oid(char *mechanism, gss_OID *oid)
{
    char        *mechstr = 0, *cp;
    gss_buffer_desc tok;
    OM_uint32 maj_stat, min_stat;
   
    if (isdigit(mechanism[0])) {
        mechstr = malloc(strlen(mechanism)+5);
        if (!mechstr) {
            printf("Couldn't allocate mechanism scratch!\n");
            return;
        }
        sprintf(mechstr, "{ %s }", mechanism);
        for (cp = mechstr; *cp; cp++)
            if (*cp == '.')
                *cp = ' ';
        tok.value = mechstr;
    } else
        tok.value = mechanism;
    tok.length = strlen(tok.value);
    maj_stat = gss_str_to_oid(&min_stat, &tok, oid);
    if (maj_stat != GSS_S_COMPLETE) {
        display_status("str_to_oid", maj_stat, min_stat);
        return;
    }
    if (mechstr)
        free(mechstr);
}