GSS-API が処理できるように、(指定されていれば) コマンド行で指定されたセキュリティ機構名を OID に変換します。
このようなサンプルを示していますが、可能な限り、独自の機構を指定するのではなく、GSS-API 実装が提供するデフォルトの機構を使用することを強く推奨します。デフォルトの機構を取得するには、機構 OID の値を GSS_C_NULL_OID に設定します。また、 gss_str_to_oid() 関数は、すべての GSS-API 実装でサポートされているわけではありません。
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);
}
|