aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--sm/ChangeLog5
-rw-r--r--sm/keylist.c10
2 files changed, 13 insertions, 2 deletions
diff --git a/sm/ChangeLog b/sm/ChangeLog
index e543bbcba..30c3d53df 100644
--- a/sm/ChangeLog
+++ b/sm/ChangeLog
@@ -1,3 +1,8 @@
+2004-02-24 Werner Koch <[email protected]>
+
+ * keylist.c (list_cert_colon): Print the fingerprint as the
+ cert-id for root certificates.
+
2004-02-21 Werner Koch <[email protected]>
* keylist.c (list_internal_keys): Return error codes.
diff --git a/sm/keylist.c b/sm/keylist.c
index 3ebbe3ba3..6d48068b0 100644
--- a/sm/keylist.c
+++ b/sm/keylist.c
@@ -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)