diff options
Diffstat (limited to 'src/gss_sec_ctx.c')
-rw-r--r-- | src/gss_sec_ctx.c | 24 |
1 files changed, 23 insertions, 1 deletions
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; +} |