summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--proxy/src/client/gpm_accept_sec_context.c6
-rw-r--r--proxy/src/client/gpm_init_sec_context.c6
-rw-r--r--proxy/src/client/gpm_release_handle.c6
-rw-r--r--proxy/src/client/gssapi_gpm.h6
-rw-r--r--proxy/src/mechglue/gss_plugin.h5
-rw-r--r--proxy/tests/cli_srv_comm.c14
6 files changed, 24 insertions, 19 deletions
diff --git a/proxy/src/client/gpm_accept_sec_context.c b/proxy/src/client/gpm_accept_sec_context.c
index a4b08d4..1f6a3d3 100644
--- a/proxy/src/client/gpm_accept_sec_context.c
+++ b/proxy/src/client/gpm_accept_sec_context.c
@@ -27,7 +27,7 @@
#include "src/gp_conv.h"
OM_uint32 gpm_accept_sec_context(OM_uint32 *minor_status,
- gss_ctx_id_t *context_handle,
+ gssx_ctx **context_handle,
gssx_cred *acceptor_cred_handle,
gss_buffer_t input_token_buffer,
gss_channel_bindings_t input_chan_bindings,
@@ -54,7 +54,7 @@ OM_uint32 gpm_accept_sec_context(OM_uint32 *minor_status,
/* prepare proxy request */
if (*context_handle) {
- arg->context_handle = (gssx_ctx *)*context_handle;
+ arg->context_handle = *context_handle;
}
if (acceptor_cred_handle) {
@@ -121,7 +121,7 @@ OM_uint32 gpm_accept_sec_context(OM_uint32 *minor_status,
xdr_free((xdrproc_t)xdr_gssx_ctx, (char *)*context_handle);
free(*context_handle);
}
- *context_handle = (gss_ctx_id_t)ctx;
+ *context_handle = ctx;
if (mech_type) {
*mech_type = mech;
}
diff --git a/proxy/src/client/gpm_init_sec_context.c b/proxy/src/client/gpm_init_sec_context.c
index 581dbc5..ab6ed80 100644
--- a/proxy/src/client/gpm_init_sec_context.c
+++ b/proxy/src/client/gpm_init_sec_context.c
@@ -28,7 +28,7 @@
OM_uint32 gpm_init_sec_context(OM_uint32 *minor_status,
gssx_cred *cred_handle,
- gss_ctx_id_t *context_handle,
+ gssx_ctx **context_handle,
gss_name_t target_name,
gss_OID mech_type,
OM_uint32 req_flags,
@@ -60,7 +60,7 @@ OM_uint32 gpm_init_sec_context(OM_uint32 *minor_status,
}
if (*context_handle) {
- arg->context_handle = (gssx_ctx *)*context_handle;
+ arg->context_handle = *context_handle;
}
if (target_name != GSS_C_NO_NAME) {
@@ -142,7 +142,7 @@ done:
xdr_free((xdrproc_t)xdr_gssx_ctx, (char *)*context_handle);
free(*context_handle);
}
- *context_handle = (gss_ctx_id_t)ctx;
+ *context_handle = ctx;
if (actual_mech_type) {
*actual_mech_type = mech;
}
diff --git a/proxy/src/client/gpm_release_handle.c b/proxy/src/client/gpm_release_handle.c
index f1eee00..1e7524e 100644
--- a/proxy/src/client/gpm_release_handle.c
+++ b/proxy/src/client/gpm_release_handle.c
@@ -78,7 +78,7 @@ done:
}
OM_uint32 gpm_delete_sec_context(OM_uint32 *minor_status,
- gss_ctx_id_t *context_handle,
+ gssx_ctx **context_handle,
gss_buffer_t output_token)
{
union gp_rpc_arg uarg;
@@ -88,11 +88,11 @@ OM_uint32 gpm_delete_sec_context(OM_uint32 *minor_status,
gssx_ctx *r;
int ret;
- if (context_handle == NULL || *context_handle == GSS_C_NO_CONTEXT) {
+ if (context_handle == NULL || *context_handle == NULL) {
return 0;
}
- r = (gssx_ctx *)(*context_handle);
+ r = (*context_handle);
if (!r->needs_release) {
ret = GSS_S_COMPLETE;
diff --git a/proxy/src/client/gssapi_gpm.h b/proxy/src/client/gssapi_gpm.h
index 99314e5..2766354 100644
--- a/proxy/src/client/gssapi_gpm.h
+++ b/proxy/src/client/gssapi_gpm.h
@@ -56,7 +56,7 @@ OM_uint32 gpm_display_status(OM_uint32 *minor_status,
gss_buffer_t status_string);
OM_uint32 gpm_accept_sec_context(OM_uint32 *minor_status,
- gss_ctx_id_t *context_handle,
+ gssx_ctx **context_handle,
gssx_cred *acceptor_cred_handle,
gss_buffer_t input_token_buffer,
gss_channel_bindings_t input_chan_bindings,
@@ -71,7 +71,7 @@ OM_uint32 gpm_release_cred(OM_uint32 *minor_status,
gssx_cred **cred_handle);
OM_uint32 gpm_delete_sec_context(OM_uint32 *minor_status,
- gss_ctx_id_t *context_handle,
+ gssx_ctx **context_handle,
gss_buffer_t output_token);
OM_uint32 gpm_acquire_cred(OM_uint32 *minor_status,
@@ -165,7 +165,7 @@ OM_uint32 gpm_compare_name(OM_uint32 *minor_status,
OM_uint32 gpm_init_sec_context(OM_uint32 *minor_status,
gssx_cred *cred_handle,
- gss_ctx_id_t *context_handle,
+ gssx_ctx **context_handle,
gss_name_t target_name,
gss_OID mech_type,
OM_uint32 req_flags,
diff --git a/proxy/src/mechglue/gss_plugin.h b/proxy/src/mechglue/gss_plugin.h
index 6404402..6184828 100644
--- a/proxy/src/mechglue/gss_plugin.h
+++ b/proxy/src/mechglue/gss_plugin.h
@@ -33,6 +33,11 @@ struct gpp_cred_handle {
gss_cred_id_t local;
};
+struct gpp_context_handle {
+ gssx_ctx *remote;
+ gss_ctx_id_t local;
+};
+
extern const gss_OID_desc gssproxy_mech_interposer;
enum gpp_behavior {
diff --git a/proxy/tests/cli_srv_comm.c b/proxy/tests/cli_srv_comm.c
index cac4e73..57a5b1a 100644
--- a/proxy/tests/cli_srv_comm.c
+++ b/proxy/tests/cli_srv_comm.c
@@ -205,7 +205,7 @@ void *client_thread(void *pvt)
gss_buffer_desc in_token = GSS_C_EMPTY_BUFFER;
gss_buffer_desc out_token = GSS_C_EMPTY_BUFFER;
gss_name_t name = GSS_C_NO_NAME;
- gss_ctx_id_t ctx = GSS_C_NO_CONTEXT;
+ struct gssx_ctx *ctx = NULL;
struct gssx_cred *cred_handle = NULL;
int ret = 0;
gss_buffer_desc msg_buf = GSS_C_EMPTY_BUFFER;
@@ -275,7 +275,7 @@ void *client_thread(void *pvt)
msg_buf.value = (void *)buffer;
msg_buf.length = sizeof(CLI_MSG);
- ret_maj = gpm_get_mic(&ret_min, (gssx_ctx *)ctx,
+ ret_maj = gpm_get_mic(&ret_min, ctx,
GSS_C_QOP_DEFAULT,
&msg_buf, &out_token);
if (ret_maj) {
@@ -304,7 +304,7 @@ void *client_thread(void *pvt)
in_token.length = strlen(in_token.value) + 1;
ret_maj = gpm_wrap(&ret_min,
- (gssx_ctx *)ctx,
+ ctx,
1, /* conf_req_flag */
GSS_C_QOP_DEFAULT, /* qop_req */
&in_token,
@@ -325,7 +325,7 @@ void *client_thread(void *pvt)
}
ret_maj = gpm_wrap_size_limit(&ret_min,
- (gssx_ctx *)ctx,
+ ctx,
1, /* conf_req */
GSS_C_QOP_DEFAULT, /* qop_req */
4096, /* size_req */
@@ -354,7 +354,7 @@ void *server_thread(void *pvt)
gss_buffer_desc in_token = GSS_C_EMPTY_BUFFER;
uint32_t ret_maj;
uint32_t ret_min;
- gss_ctx_id_t context_handle = GSS_C_NO_CONTEXT;
+ struct gssx_ctx *context_handle = NULL;
struct gssx_cred *cred_handle = NULL;
gss_name_t src_name;
gss_buffer_desc out_token = GSS_C_EMPTY_BUFFER;
@@ -540,7 +540,7 @@ void *server_thread(void *pvt)
msg_token.value = &buffer[in_token.length];
msg_token.length = buflen;
- ret_maj = gpm_verify_mic(&ret_min, (gssx_ctx *)context_handle,
+ ret_maj = gpm_verify_mic(&ret_min, context_handle,
&in_token, &msg_token, NULL);
if (ret_maj) {
fprintf(stderr, "gpm_verify_mic failed: %d\n", ret_maj);
@@ -560,7 +560,7 @@ void *server_thread(void *pvt)
input_message_buffer.length = buflen;
ret_maj = gpm_unwrap(&ret_min,
- (gssx_ctx *)context_handle,
+ context_handle,
&input_message_buffer,
&output_message_buffer,
&conf_state,