]> git.decadent.org.uk Git - nfs-utils.git/blobdiff - utils/gssd/context_heimdal.c
gssd/svcgssd: add support to retrieve actual context expiration
[nfs-utils.git] / utils / gssd / context_heimdal.c
index 5520cbcc61d15850b16f9d249ed28de139f2a41c..fc241e3a2192bb9d31a4590cb2ab745f95207c67 100644 (file)
@@ -72,14 +72,14 @@ int write_heimdal_enc_key(char **p, char *end, gss_ctx_id_t ctx)
 
        if ((ret = krb5_init_context(&context))) {
                printerr(0, "ERROR: initializing krb5_context: %s\n",
-                       error_message(ret));
+                       gssd_k5_err_msg(NULL, ret));
                goto out_err;
        }
 
        if ((ret = krb5_auth_con_getlocalsubkey(context,
                                                ctx->auth_context, &key))){
                printerr(0, "ERROR: getting auth_context key: %s\n",
-                       error_message(ret));
+                       gssd_k5_err_msg(context, ret));
                goto out_err_free_context;
        }
 
@@ -97,7 +97,7 @@ int write_heimdal_enc_key(char **p, char *end, gss_ctx_id_t ctx)
                                calloc(1, enc_key.keyvalue.length)) == NULL) {
 
                printerr(0, "ERROR: allocating memory for enc key: %s\n",
-                       error_message(ENOMEM));
+                       gssd_k5_err_msg(context, ENOMEM));
                goto out_err_free_key;
        }
        skd = (char *) key->keyvalue.data;
@@ -130,14 +130,14 @@ int write_heimdal_seq_key(char **p, char *end, gss_ctx_id_t ctx)
 
        if ((ret = krb5_init_context(&context))) {
                printerr(0, "ERROR: initializing krb5_context: %s\n",
-                       error_message(ret));
+                       gssd_k5_err_msg(NULL, ret));
                goto out_err;
        }
 
        if ((ret = krb5_auth_con_getlocalsubkey(context,
                                                ctx->auth_context, &key))){
                printerr(0, "ERROR: getting auth_context key: %s\n",
-                       error_message(ret));
+                       gssd_k5_err_msg(context, ret));
                goto out_err_free_context;
        }
 
@@ -198,7 +198,7 @@ int write_heimdal_seq_key(char **p, char *end, gss_ctx_id_t ctx)
  */
 
 int
-serialize_krb5_ctx(gss_ctx_id_t ctx, gss_buffer_desc *buf)
+serialize_krb5_ctx(gss_ctx_id_t ctx, gss_buffer_desc *buf, int32_t *endtime)
 {
 
        char *p, *end;
@@ -239,6 +239,9 @@ serialize_krb5_ctx(gss_ctx_id_t ctx, gss_buffer_desc *buf)
        /* endtime */
        if (WRITE_BYTES(&p, end, ctx->lifetime)) goto out_err;
 
+       if (endtime)
+               *endtime = ctx->lifetime;
+
        /* seq_send */
        if (WRITE_BYTES(&p, end, ctx->auth_context->local_seqnumber))
                goto out_err;