summaryrefslogtreecommitdiffstats
path: root/proxy/src/mechglue/gss_plugin.c
diff options
context:
space:
mode:
authorSimo Sorce <simo@redhat.com>2012-06-15 14:43:07 -0400
committerGünther Deschner <gdeschner@redhat.com>2012-06-26 14:44:44 +0200
commit80d7f68e49c58db3b63b12849cac6429af347f0f (patch)
treef5522903370fcd99131f86ae44b4e3874b75e197 /proxy/src/mechglue/gss_plugin.c
parente3a355d5f2a46f90aa13653c0178442d84e7d1d3 (diff)
downloadgss-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.c41
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