diff options
| author | Simo Sorce <simo@redhat.com> | 2012-07-30 14:49:49 -0400 |
|---|---|---|
| committer | Simo Sorce <simo@redhat.com> | 2012-09-13 16:18:12 -0400 |
| commit | c674dee2e3edb608f82a1435f8cba8048bcd714d (patch) | |
| tree | 8ca4a2a78bfd0ab7b0e93fe6edc3478d3ca4cb42 /src/lib | |
| parent | 546a90acca80e258d31bb61b5cd946265c518056 (diff) | |
| download | krb5-c674dee2e3edb608f82a1435f8cba8048bcd714d.tar.gz krb5-c674dee2e3edb608f82a1435f8cba8048bcd714d.tar.xz krb5-c674dee2e3edb608f82a1435f8cba8048bcd714d.zip | |
Add function to return the Public OID
Special care needs to be taken to avoid returning special interposer plugin
OIDs to user applications.
The public OID is the OID that should be returned to users of the GSSAPI.
This is not the same as the internal OID which could be a special interposer
plugin OID.
Diffstat (limited to 'src/lib')
| -rw-r--r-- | src/lib/gssapi/mechglue/g_initialize.c | 22 | ||||
| -rw-r--r-- | src/lib/gssapi/mechglue/mglueP.h | 1 |
2 files changed, 23 insertions, 0 deletions
diff --git a/src/lib/gssapi/mechglue/g_initialize.c b/src/lib/gssapi/mechglue/g_initialize.c index a6ba73867f..c721692014 100644 --- a/src/lib/gssapi/mechglue/g_initialize.c +++ b/src/lib/gssapi/mechglue/g_initialize.c @@ -1130,6 +1130,28 @@ done: return status; } +gss_OID gssint_get_public_oid(gss_const_OID internal_oid) +{ + gss_mech_info aMech; + gss_OID public_oid = GSS_C_NO_OID; + + if (gssint_mechglue_initialize_library() != 0) + return GSS_C_NO_OID; + + if (k5_mutex_lock(&g_mechListLock) != 0) + return GSS_C_NO_OID; + + if ((aMech = searchMechList(internal_oid)) != NULL) { + if (aMech->is_interposer) + public_oid = aMech->int_mech_type; + else + public_oid = aMech->mech_type; + } + + (void)k5_mutex_unlock(&g_mechListLock); + return public_oid; +} + /* * Register a mechanism. Called with g_mechListLock held. */ diff --git a/src/lib/gssapi/mechglue/mglueP.h b/src/lib/gssapi/mechglue/mglueP.h index 964db45df2..b501c1b321 100644 --- a/src/lib/gssapi/mechglue/mglueP.h +++ b/src/lib/gssapi/mechglue/mglueP.h @@ -683,6 +683,7 @@ void gssint_mechglue_fini(void); OM_uint32 gssint_select_mech_type(OM_uint32 *minor, gss_const_OID in_oid, gss_OID *selected_oid); +gss_OID gssint_get_public_oid(gss_const_OID internal_oid); gss_mechanism gssint_get_mechanism (gss_const_OID); OM_uint32 gssint_get_mech_type (gss_OID, gss_buffer_t); char *gssint_get_kmodName(const gss_OID); |
