diff options
author | Simo Sorce <simo@redhat.com> | 2012-06-15 14:43:07 -0400 |
---|---|---|
committer | Günther Deschner <gdeschner@redhat.com> | 2012-06-26 14:44:44 +0200 |
commit | 80d7f68e49c58db3b63b12849cac6429af347f0f (patch) | |
tree | f5522903370fcd99131f86ae44b4e3874b75e197 /proxy/src/mechglue/gss_plugin.c | |
parent | e3a355d5f2a46f90aa13653c0178442d84e7d1d3 (diff) | |
download | gss-proxy-80d7f68e49c58db3b63b12849cac6429af347f0f.tar.gz gss-proxy-80d7f68e49c58db3b63b12849cac6429af347f0f.tar.xz gss-proxy-80d7f68e49c58db3b63b12849cac6429af347f0f.zip |
WIP: Add name handlers
Diffstat (limited to 'proxy/src/mechglue/gss_plugin.c')
-rw-r--r-- | proxy/src/mechglue/gss_plugin.c | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/proxy/src/mechglue/gss_plugin.c b/proxy/src/mechglue/gss_plugin.c index fd976a5..c73cadd 100644 --- a/proxy/src/mechglue/gss_plugin.c +++ b/proxy/src/mechglue/gss_plugin.c @@ -250,6 +250,47 @@ uint32_t gpm_unmap_error(uint32_t err) return err; } +uint32_t gpm_name_to_local(uint32_t *minor, gssx_name *name, + gss_OID mech_type, gss_name_t *mech_name) +{ + uint32_t maj, min; + gss_buffer_desc display_name_buffer = GSS_C_EMPTY_BUFFER; + gss_OID display_name_type = GSS_C_NO_OID; + gss_name_t tmpname = NULL; + + maj = gpm_display_name(minor, name, + &display_name_buffer, + &display_name_type); + if (maj) { + return maj; + } + + maj = gss_import_name(minor, + &display_name_buffer, + display_name_type, + &tmpname); + + (void)gss_release_buffer(&min, &display_name_buffer); + (void)gss_release_oid(&min, &display_name_type); + + if (maj) { + return maj; + } + + if (mech_type != GSS_C_NO_OID) { + /* name for specific mech requested */ + maj = gss_canonicalize_name(minor, + tmpname, + gpm_special_mech(mech_type), + mech_name); + (void)gss_release_name(&min, &tmpname); + } else { + *mech_name = tmpname; + } + + return maj; +} + /* gssi_acquire_cred gssi_release_cred |