diff options
author | Tom Yu <tlyu@mit.edu> | 2006-06-14 22:27:54 +0000 |
---|---|---|
committer | Tom Yu <tlyu@mit.edu> | 2006-06-14 22:27:54 +0000 |
commit | 4c2bc7a022bff031e101a88363ff7756871e8721 (patch) | |
tree | e2fcdfdbf65e10c6546068e54d832b4a4c237c70 /src/lib/gssapi/mechglue/g_unseal.c | |
parent | c162f7fadad60a02fc35ba14d1b7e52f225460a4 (diff) | |
download | krb5-4c2bc7a022bff031e101a88363ff7756871e8721.zip krb5-4c2bc7a022bff031e101a88363ff7756871e8721.tar.gz krb5-4c2bc7a022bff031e101a88363ff7756871e8721.tar.bz2 |
Merge from branches/mechglue. Initial integration of Sun-donated
mechglue and SPNEGO implementations. Additional changes outside of
src/lib/gssapi:
* src/configure.in: Add lib/gssapi/mechglue and lib/gssapi/spnego
to list of directories to output Makefile in.
* src/lib/rpc/unit-test/rpc_test.0/expire.exp (expired): Update
regexp for mechglue.
* src/tests/dejagnu/krb-standalone/v4gssftp.exp (v4ftp_test):
Update "Miscellaneous failure" regexp for mechglue.
git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@18131 dc483132-0cff-0310-8789-dd5450dbe970
Diffstat (limited to 'src/lib/gssapi/mechglue/g_unseal.c')
-rw-r--r-- | src/lib/gssapi/mechglue/g_unseal.c | 37 |
1 files changed, 25 insertions, 12 deletions
diff --git a/src/lib/gssapi/mechglue/g_unseal.c b/src/lib/gssapi/mechglue/g_unseal.c index 9ca1c15..c70c59b 100644 --- a/src/lib/gssapi/mechglue/g_unseal.c +++ b/src/lib/gssapi/mechglue/g_unseal.c @@ -1,4 +1,4 @@ -/* #ident "@(#)gss_unseal.c 1.10 95/08/07 SMI" */ +/* #pragma ident "@(#)g_unseal.c 1.13 98/01/22 SMI" */ /* * Copyright 1996 by Sun Microsystems, Inc. @@ -44,14 +44,26 @@ int * conf_state; int * qop_state; { +/* EXPORT DELETE START */ OM_uint32 status; gss_union_ctx_id_t ctx; gss_mechanism mech; - gss_initialize(); + if (minor_status == NULL) + return (GSS_S_CALL_INACCESSIBLE_WRITE); + *minor_status = 0; if (context_handle == GSS_C_NO_CONTEXT) - return GSS_S_NO_CONTEXT; + return (GSS_S_CALL_INACCESSIBLE_READ | GSS_S_NO_CONTEXT); + + if (GSS_EMPTY_BUFFER(input_message_buffer)) + return (GSS_S_CALL_INACCESSIBLE_READ); + + if (output_message_buffer == NULL) + return (GSS_S_CALL_INACCESSIBLE_WRITE); + + output_message_buffer->length = 0; + output_message_buffer->value = NULL; /* * select the approprate underlying mechanism routine and @@ -59,7 +71,7 @@ int * qop_state; */ ctx = (gss_union_ctx_id_t) context_handle; - mech = __gss_get_mechanism (ctx->mech_type); + mech = gssint_get_mechanism (ctx->mech_type); if (mech) { if (mech->gss_unseal) @@ -72,12 +84,14 @@ int * qop_state; conf_state, qop_state); else - status = GSS_S_BAD_BINDINGS; + status = GSS_S_UNAVAILABLE; return(status); } - return(GSS_S_NO_CONTEXT); +/* EXPORT DELETE END */ + + return (GSS_S_BAD_MECH); } OM_uint32 KRB5_CALLCONV @@ -89,15 +103,14 @@ gss_unwrap (minor_status, qop_state) OM_uint32 * minor_status; -gss_ctx_id_t context_handle; -gss_buffer_t input_message_buffer; +const gss_ctx_id_t context_handle; +const gss_buffer_t input_message_buffer; gss_buffer_t output_message_buffer; int * conf_state; gss_qop_t * qop_state; { - return (gss_unseal(minor_status, context_handle, - input_message_buffer, - output_message_buffer, - conf_state, (int *) qop_state)); + return (gss_unseal(minor_status, (gss_ctx_id_t)context_handle, + (gss_buffer_t)input_message_buffer, + output_message_buffer, conf_state, (int *) qop_state)); } |