Hello there,

for interoperability with Heimdal and MIT Kerberos
it seems to be instrumental to provide functional
timestamping of keys and in keytab translations.

The patch below implements a new field 'Timestamp'
within the ASCII rendered key representation.
The field uses Kerberos time and is optional
in the sense that its absence indicates epoch
time zero.

Using this patch with libshishi-HEAD, keytab2shishi
is able to translate to and fro Heimdal keytab and
Shishi keytab, including time stamps.

Can I get a blessing to implement this? Is there some
protocol matter of which I am ignorant, but which must
be taken into account? The code changes needed for getting
shisa to set time stamps at key generation time, are not
yet in final form, so I will get back to them next.

Best regards,
  Mats E A


diff --git a/lib/diskio.c b/lib/diskio.c
index 49e6734..3d31d46 100644
--- a/lib/diskio.c
+++ b/lib/diskio.c
@@ -960,6 +960,14 @@ shishi_key_parse (Shishi * handle, FILE * fh, Shishi_key 
** key)
            {
              shishi_key_principal_set (lkey, line + strlen ("Principal: "));
            }
+         else if (strncmp (line, "Timestamp: ", strlen ("Timestamp: ")) == 0)
+           {
+             time_t timestamp;
+
+             timestamp = shishi_generalize_ctime (handle,
+                               line + strlen ("Timestamp: "));
+             shishi_key_timestamp_set (lkey, timestamp);
+           }
        }
     }
 
@@ -985,6 +993,7 @@ shishi_key_parse (Shishi * handle, FILE * fh, Shishi_key ** 
key)
  * Principal: host/latte.josefsson.org
  * Realm: JOSEFSSON.ORG
  * Key-Version-Number: 1
+ * Timestamp: 20130420150337Z
  *
  * P1QdeW/oSiag/bTyVEBAY2msiGSTmgLXlopuCKoppDs=
  * -----END SHISHI KEY-----
@@ -1013,6 +1022,9 @@ shishi_key_print (Shishi * handle, FILE * fh, const 
Shishi_key * key)
     fprintf (fh, "Realm: %s\n", shishi_key_realm (key));
   if (shishi_key_version (key) != UINT32_MAX)
     fprintf (fh, "Key-Version-Number: %d\n", shishi_key_version (key));
+  if (shishi_key_timestamp (key))
+    fprintf (fh, "Timestamp: %s\n",
+            shishi_generalize_time (handle, shishi_key_timestamp (key)));
   fprintf (fh, "\n");
 
   for (i = 0; i < strlen (b64key); i++)

_______________________________________________
Help-shishi mailing list
Help-shishi@gnu.org
https://lists.gnu.org/mailman/listinfo/help-shishi

Reply via email to