summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSimo Sorce <simo@redhat.com>2013-07-21 01:55:22 -0400
committerSimo Sorce <simo@redhat.com>2013-07-28 13:17:51 -0400
commite3ae1ee773a1cb33cd0ca06eeef0296bbf4a9b7b (patch)
tree80e9e1545888157545c5e954f7b1ad9b01e5d614
parent34822448c673e483e1ec43331e13beaf75320f86 (diff)
downloadgss-ntlmssp-e3ae1ee773a1cb33cd0ca06eeef0296bbf4a9b7b.tar.gz
gss-ntlmssp-e3ae1ee773a1cb33cd0ca06eeef0296bbf4a9b7b.tar.xz
gss-ntlmssp-e3ae1ee773a1cb33cd0ca06eeef0296bbf4a9b7b.zip
Add gss_context_time() implementation
-rw-r--r--src/gss_ntlmssp.h4
-rw-r--r--src/gss_sec_ctx.c24
-rw-r--r--src/gss_spi.c8
3 files changed, 35 insertions, 1 deletions
diff --git a/src/gss_ntlmssp.h b/src/gss_ntlmssp.h
index 03daf45..681db98 100644
--- a/src/gss_ntlmssp.h
+++ b/src/gss_ntlmssp.h
@@ -201,4 +201,8 @@ uint32_t gssntlm_delete_sec_context(uint32_t *minor_status,
gss_buffer_t output_token);
+uint32_t gssntlm_context_time(uint32_t *minor_status,
+ gss_ctx_id_t context_handle,
+ uint32_t *time_rec);
+
#endif /* _GSS_NTLMSSP_H_ */
diff --git a/src/gss_sec_ctx.c b/src/gss_sec_ctx.c
index e62e997..fe60ea6 100644
--- a/src/gss_sec_ctx.c
+++ b/src/gss_sec_ctx.c
@@ -552,7 +552,7 @@ uint32_t gssntlm_delete_sec_context(uint32_t *minor_status,
*minor_status = 0;
if (!context_handle) return GSS_S_CALL_INACCESSIBLE_READ;
- if (*context_handle == NULL) return GSS_S_COMPLETE;
+ if (*context_handle == NULL) return GSS_S_NO_CONTEXT;
ctx = (struct gssntlm_ctx *)*context_handle;
@@ -576,3 +576,25 @@ uint32_t gssntlm_delete_sec_context(uint32_t *minor_status,
}
return GSS_S_COMPLETE;
}
+
+uint32_t gssntlm_context_time(uint32_t *minor_status,
+ gss_ctx_id_t context_handle,
+ uint32_t *time_rec)
+{
+ struct gssntlm_ctx *ctx;
+ time_t now;
+ uint32_t retmaj;
+
+ *minor_status = 0;
+
+ if (context_handle == GSS_C_NO_CONTEXT) {
+ return GSS_S_CALL_INACCESSIBLE_READ;
+ }
+
+ ctx = (struct gssntlm_ctx *)context_handle;
+ retmaj = gssntlm_context_is_valid(ctx, &now);
+ if (retmaj) return retmaj;
+
+ *time_rec = ctx->expiration_time - now;
+ return GSS_S_COMPLETE;
+}
diff --git a/src/gss_spi.c b/src/gss_spi.c
index 2f37b60..21d8d53 100644
--- a/src/gss_spi.c
+++ b/src/gss_spi.c
@@ -133,3 +133,11 @@ OM_uint32 gss_release_name(OM_uint32 *minor_status,
return gssntlm_release_name(minor_status,
input_name);
}
+
+OM_uint32 gss_context_time(OM_uint32 *minor_status,
+ gss_ctx_id_t context_handle,
+ OM_uint32 *time_rec)
+{
+ return gssntlm_context_time(minor_status, context_handle, time_rec);
+}
+