Solaris 开发者安全性指南

指定非缺省机制

parse_oid() 可用于将命令行中的安全机制名称转换为兼容的 OID。


示例 C–4 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);

}