summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSimo Sorce <simo@redhat.com>2014-08-05 11:26:42 -0400
committerSimo Sorce <simo@redhat.com>2014-08-06 15:44:52 -0400
commit171ff6b71a4cf626c484d65f8bca618366aa91da (patch)
tree84a40bf918c9a14b7331f883af4b96021058504b
parent0f71365ed33652990696da66dc147a38ca03f599 (diff)
downloadgss-ntlmssp-171ff6b71a4cf626c484d65f8bca618366aa91da.tar.gz
gss-ntlmssp-171ff6b71a4cf626c484d65f8bca618366aa91da.tar.xz
gss-ntlmssp-171ff6b71a4cf626c484d65f8bca618366aa91da.zip
Implement gss_wrap_size_limit()
-rw-r--r--src/gss_ntlmssp.h7
-rw-r--r--src/gss_signseal.c31
-rw-r--r--src/gss_spi.c15
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,