(list_cert_colon): Print the fingerprint as the
authorWerner Koch <wk@gnupg.org>
Tue, 24 Feb 2004 14:15:43 +0000 (14:15 +0000)
committerWerner Koch <wk@gnupg.org>
Tue, 24 Feb 2004 14:15:43 +0000 (14:15 +0000)
cert-id for root certificates.

sm/ChangeLog
sm/keylist.c

index e543bbc..30c3d53 100644 (file)
@@ -1,3 +1,8 @@
+2004-02-24  Werner Koch  <wk@gnupg.org>
+
+       * keylist.c (list_cert_colon): Print the fingerprint as the
+       cert-id for root certificates.
+
 2004-02-21  Werner Koch  <wk@gnupg.org>
 
        * keylist.c (list_internal_keys): Return error codes.
index 3ebbe3b..6d48068 100644 (file)
@@ -249,21 +249,27 @@ list_cert_colon (ctrl_t ctrl, ksba_cert_t cert, unsigned int validity,
 
   /* FPR record */
   fprintf (fp, "fpr:::::::::%s:::", fpr);
-  xfree (fpr); fpr = NULL;
   /* print chaining ID (field 13)*/
   {
     ksba_cert_t next;
+    int rc;
     
-    if (!gpgsm_walk_cert_chain (cert, &next))
+    rc = gpgsm_walk_cert_chain (cert, &next);
+    if (!rc) /* We known the issuer's certificate. */
       {
         p = gpgsm_get_fingerprint_hexstring (next, GCRY_MD_SHA1);
         fputs (p, fp);
         xfree (p);
         ksba_cert_release (next);
       }
+    else if (rc == -1)  /* We reached the root certificate. */
+      {
+        fputs (fpr, fp);
+      }
   }
   putc (':', fp);
   putc ('\n', fp);
+  xfree (fpr); fpr = NULL;
 
 
   if (opt.with_key_data)