diff options
author | Simo Sorce <simo@redhat.com> | 2012-07-31 23:51:41 -0400 |
---|---|---|
committer | Simo Sorce <simo@redhat.com> | 2012-09-14 16:26:36 -0400 |
commit | f3d21a3835bdc6027e7385a0463d8a8c731ba9f6 (patch) | |
tree | 0998298636e6ef50dce4b380ec82e6bbaeb156c1 | |
parent | b0453e9b6a82b5a86ad40ae2829a323479156821 (diff) | |
download | gss-proxy-f3d21a3835bdc6027e7385a0463d8a8c731ba9f6.tar.gz gss-proxy-f3d21a3835bdc6027e7385a0463d8a8c731ba9f6.tar.xz gss-proxy-f3d21a3835bdc6027e7385a0463d8a8c731ba9f6.zip |
Add function to convert remote context to local
-rw-r--r-- | proxy/src/mechglue/gss_plugin.c | 16 | ||||
-rw-r--r-- | proxy/src/mechglue/gss_plugin.h | 2 |
2 files changed, 18 insertions, 0 deletions
diff --git a/proxy/src/mechglue/gss_plugin.c b/proxy/src/mechglue/gss_plugin.c index 4bfaa2c..724a008 100644 --- a/proxy/src/mechglue/gss_plugin.c +++ b/proxy/src/mechglue/gss_plugin.c @@ -366,6 +366,22 @@ uint32_t gpp_unmap_error(uint32_t err) return err; } +uint32_t gpp_remote_to_local_ctx(uint32_t *minor, gssx_ctx **remote_ctx, + gss_ctx_id_t *local_ctx) +{ + gss_buffer_desc buf; + uint32_t maj; + + gp_conv_gssx_to_buffer(&(*remote_ctx)->exported_context_token, &buf); + + maj = gss_import_sec_context(minor, &buf, local_ctx); + + xdr_free((xdrproc_t)xdr_gssx_ctx, (char *)(*remote_ctx)); + *remote_ctx = NULL; + + return maj; +} + /* gssi_acquire_cred gssi_release_cred diff --git a/proxy/src/mechglue/gss_plugin.h b/proxy/src/mechglue/gss_plugin.h index f57fa4c..9be4f3a 100644 --- a/proxy/src/mechglue/gss_plugin.h +++ b/proxy/src/mechglue/gss_plugin.h @@ -45,5 +45,7 @@ const gss_OID gpp_special_mech(const gss_OID mech_type); gss_OID_set gpp_special_available_mechs(const gss_OID_set mechs); uint32_t gpp_map_error(uint32_t err); uint32_t gpp_unmap_error(uint32_t err); +uint32_t gpp_remote_to_local_ctx(uint32_t *minor, gssx_ctx **remote_ctx, + gss_ctx_id_t *local_ctx); #endif /* _GSS_PLUGIN_H_ */ |