gss: add gss_mg_name_to_oid internal API

Add a new function for future internal use, gss_mg_name_to_oid(), which takes
either a dot-separated OID or a "short" mechanism name (such as
"sanon-x25519"), and returns a mechanism OID.
This commit is contained in:
Luke Howard
2021-08-08 10:34:28 +10:00
parent 65651c8106
commit 5966c00701
4 changed files with 23 additions and 0 deletions

View File

@@ -701,6 +701,9 @@ gss_cred_id_t
_gss_mg_find_mech_cred(gss_const_cred_id_t cred_handle,
gss_const_OID mech_type);
GSSAPI_LIB_FUNCTION gss_const_OID
GSSAPI_CALLCONV gss_mg_name_to_oid(const char *);
#include <krb5.h>
/*

View File

@@ -69,6 +69,7 @@ EXPORTS
gss_krb5_set_allowable_enctypes
gss_localname
gss_mg_collect_error
gss_mg_name_to_oid
gss_mo_get
gss_mo_set
gss_mo_list

View File

@@ -490,3 +490,21 @@ _gss_mg_support_mechanism(gss_const_OID mech)
}
return NULL;
}
GSSAPI_LIB_FUNCTION gss_const_OID GSSAPI_CALLCONV
gss_mg_name_to_oid(const char *name)
{
struct _gss_mech_switch *m;
gss_OID oid = GSS_C_NO_OID;
if (isdigit(name[0]) && _gss_string_to_oid(name, &oid) == 0)
return oid;
_gss_load_mech();
HEIM_TAILQ_FOREACH(m, &_gss_mechs, gm_link) {
if (m->gm_mech.gm_name &&
strcmp(m->gm_mech.gm_name, name) == 0)
return m->gm_mech_oid;
}
return NULL;
}

View File

@@ -69,6 +69,7 @@ HEIMDAL_GSS_2.0 {
gss_krb5_set_allowable_enctypes;
gss_localname;
gss_mg_collect_error;
gss_mg_name_to_oid;
gss_oid_equal;
gss_oid_to_str;
gss_pname_to_uid;