diff options
-rw-r--r-- | src/gss_ntlmssp.h | 7 | ||||
-rw-r--r-- | src/gss_signseal.c | 31 | ||||
-rw-r--r-- | src/gss_spi.c | 15 |
3 files changed, 53 insertions, 0 deletions
diff --git a/src/gss_ntlmssp.h b/src/gss_ntlmssp.h index 803b7bf..27ac6dc 100644 --- a/src/gss_ntlmssp.h +++ b/src/gss_ntlmssp.h @@ -298,6 +298,13 @@ uint32_t gssntlm_unwrap(uint32_t *minor_status, int *conf_state, gss_qop_t *qop_state); +uint32_t gssntlm_wrap_size_limit(uint32_t *minor_status, + gss_ctx_id_t context_handle, + int conf_req_flag, + gss_qop_t qop_req, + uint32_t req_output_size, + uint32_t *max_input_size); + uint32_t gssntlm_inquire_context(uint32_t *minor_status, gss_ctx_id_t context_handle, gss_name_t *src_name, diff --git a/src/gss_signseal.c b/src/gss_signseal.c index 8f4f316..274317d 100644 --- a/src/gss_signseal.c +++ b/src/gss_signseal.c @@ -294,3 +294,34 @@ uint32_t gssntlm_unwrap(uint32_t *minor_status, } return GSS_S_COMPLETE; } + +uint32_t gssntlm_wrap_size_limit(uint32_t *minor_status, + gss_ctx_id_t context_handle, + int conf_req_flag, + gss_qop_t qop_req, + uint32_t req_output_size, + uint32_t *max_input_size) +{ + struct gssntlm_ctx *ctx; + uint32_t retmaj; + + *minor_status = 0; + + ctx = (struct gssntlm_ctx *)context_handle; + retmaj = gssntlm_context_is_valid(ctx, NULL); + if (retmaj != GSS_S_COMPLETE) { + return retmaj; + } + + if (qop_req != GSS_C_QOP_DEFAULT) { + return GSS_S_BAD_QOP; + } + + if (req_output_size < 16) { + *max_input_size = 0; + } else { + *max_input_size = req_output_size - 16; + } + + return GSS_S_COMPLETE; +} diff --git a/src/gss_spi.c b/src/gss_spi.c index 220b32c..ccb0bea 100644 --- a/src/gss_spi.c +++ b/src/gss_spi.c @@ -254,6 +254,21 @@ OM_uint32 gss_unwrap(OM_uint32 *minor_status, qop_state); } +OM_uint32 gss_wrap_size_limit(OM_uint32 *minor_status, + gss_ctx_id_t context_handle, + int conf_req_flag, + gss_qop_t qop_req, + OM_uint32 req_output_size, + OM_uint32 *max_input_size) +{ + return gssntlm_wrap_size_limit(minor_status, + context_handle, + conf_req_flag, + qop_req, + req_output_size, + max_input_size); +} + OM_uint32 gss_inquire_context(OM_uint32 *minor_status, gss_ctx_id_t context_handle, gss_name_t *src_name, |