diff options
author | Werner Koch <[email protected]> | 2001-12-13 13:11:40 +0000 |
---|---|---|
committer | Werner Koch <[email protected]> | 2001-12-13 13:11:40 +0000 |
commit | dda2440aea283260e390ebda3c1c0493b5673c1e (patch) | |
tree | 579bb9755a0b103cc00fa49ccaa5c9c857a355c6 | |
parent | * keybox-search.c (blob_cmp_name): Kludge to allow searching for (diff) | |
download | gnupg-dda2440aea283260e390ebda3c1c0493b5673c1e.tar.gz gnupg-dda2440aea283260e390ebda3c1c0493b5673c1e.zip |
* keylist.c (list_cert_colon): Print alternative names of subject
and a few other values.
-rw-r--r-- | sm/ChangeLog | 7 | ||||
-rw-r--r-- | sm/certchain.c | 4 | ||||
-rw-r--r-- | sm/certdump.c | 4 | ||||
-rw-r--r-- | sm/certlist.c | 2 | ||||
-rw-r--r-- | sm/certpath.c | 4 | ||||
-rw-r--r-- | sm/keylist.c | 73 |
6 files changed, 65 insertions, 29 deletions
diff --git a/sm/ChangeLog b/sm/ChangeLog index 140fc2eba..20d8558eb 100644 --- a/sm/ChangeLog +++ b/sm/ChangeLog @@ -1,3 +1,8 @@ +2001-12-13 Werner Koch <[email protected]> + + * keylist.c (list_cert_colon): Print alternative names of subject + and a few other values. + 2001-12-12 Werner Koch <[email protected]> * gpgsm.c (main): New options --assume-{armor,base64,binary}. @@ -38,5 +43,3 @@ This file is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY, to the extent permitted by law; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - - diff --git a/sm/certchain.c b/sm/certchain.c index 9b98ce894..31ddcd8fa 100644 --- a/sm/certchain.c +++ b/sm/certchain.c @@ -58,8 +58,8 @@ gpgsm_validate_path (KsbaCert cert) { xfree (issuer); xfree (subject); - issuer = ksba_cert_get_issuer (subject_cert); - subject = ksba_cert_get_subject (subject_cert); + issuer = ksba_cert_get_issuer (subject_cert, 0); + subject = ksba_cert_get_subject (subject_cert, 0); if (!issuer) { diff --git a/sm/certdump.c b/sm/certdump.c index 698937d8a..10af4beae 100644 --- a/sm/certdump.c +++ b/sm/certdump.c @@ -103,13 +103,13 @@ gpgsm_dump_cert (const char *text, KsbaCert cert) print_time (t); log_printf ("\n"); - dn = ksba_cert_get_issuer (cert); + dn = ksba_cert_get_issuer (cert, 0); log_debug (" issuer: "); print_dn (dn); ksba_free (dn); log_printf ("\n"); - dn = ksba_cert_get_subject (cert); + dn = ksba_cert_get_subject (cert, 0); log_debug (" subject: "); print_dn (dn); ksba_free (dn); diff --git a/sm/certlist.c b/sm/certlist.c index 5c3c2a87a..097f42d14 100644 --- a/sm/certlist.c +++ b/sm/certlist.c @@ -71,7 +71,7 @@ gpgsm_add_to_certlist (const char *name, CERTLIST *listaddr) keydb_release (kh); ksba_cert_release (cert); - return rc; + return rc == -1? GNUPG_No_Public_Key: rc; } void diff --git a/sm/certpath.c b/sm/certpath.c index 9b98ce894..31ddcd8fa 100644 --- a/sm/certpath.c +++ b/sm/certpath.c @@ -58,8 +58,8 @@ gpgsm_validate_path (KsbaCert cert) { xfree (issuer); xfree (subject); - issuer = ksba_cert_get_issuer (subject_cert); - subject = ksba_cert_get_subject (subject_cert); + issuer = ksba_cert_get_issuer (subject_cert, 0); + subject = ksba_cert_get_subject (subject_cert, 0); if (!issuer) { diff --git a/sm/keylist.c b/sm/keylist.c index 98ae8eb67..e200c228e 100644 --- a/sm/keylist.c +++ b/sm/keylist.c @@ -66,13 +66,24 @@ print_capabilities (KsbaCert cert, FILE *fp) } +static void +print_time (time_t t, FILE *fp) +{ + if (!t) + ; + else if ( t == (time_t)(-1) ) + putc ('?', fp); + else + fprintf (fp, "%lu", (unsigned long)t); +} + /* List one certificate in colon mode */ static void list_cert_colon (KsbaCert cert, FILE *fp) { - int trustletter = 0; - char *p; + int idx, trustletter = 0; + unsigned char *p; fputs ("crt:", fp); trustletter = 0; @@ -90,34 +101,56 @@ list_cert_colon (KsbaCert cert, FILE *fp) putc (trustletter, fp); } - fprintf (fp, ":%u:%d::%s:%s:::", + fprintf (fp, ":%u:%d::", /*keylen_of_cert (cert)*/1024, - /* pubkey_algo_of_cert (cert)*/'R', - /*colon_datestr_from_cert (cert)*/ "2001-11-11", - /*colon_strtime_expire (cert)*/ "2001-11-12" ); - + /* pubkey_algo_of_cert (cert)*/'R'); + + /* we assume --fixed-list-mode for gpgsm */ + print_time ( ksba_cert_get_validity (cert, 0), fp); + putc (':', fp); + print_time ( ksba_cert_get_validity (cert, 1), fp); putc (':', fp); - /* fixme: should we print the issuer name here? */ + putc (':', fp); + if ((p = ksba_cert_get_serial (cert))) + { + int i, len = (p[0] << 24) | (p[1] << 16) | (p[2] << 8) | p[3]; + for (i=0; i < len; i++) + fprintf (fp,"%02X", p[4+i]); + xfree (p); + } + putc (':', fp); + putc (':', fp); + if ((p = ksba_cert_get_issuer (cert,0))) + { + fputs (p, fp); /* FIXME: Escape colons and linefeeds */ + xfree (p); + } putc (':', fp); print_capabilities (cert, fp); putc ('\n', fp); + p = gpgsm_get_fingerprint_hexstring (cert, GCRY_MD_SHA1); fprintf (fp, "fpr:::::::::%s:\n", p); xfree (p); - p = gpgsm_get_keygrip_hexstring (cert); - fprintf (fp, "grp:::::::::%s:\n", p?p:""); - xfree (p); if (opt.with_key_data) - print_key_data (cert, fp); + { + if ( (p = gpgsm_get_keygrip_hexstring (cert))) + { + fprintf (fp, "grp:::::::::%s:\n", p); + xfree (p); + } + print_key_data (cert, fp); + } - fprintf (fp, "uid:%c::::::::", trustletter); - p = ksba_cert_get_subject (cert); - if (p) - fputs (p, fp); /* FIXME: Escape colons and linefeeds */ - xfree (p); - putc (':', fp); - putc (':', fp); - putc ('\n', fp); + for (idx=0; (p = ksba_cert_get_subject (cert,idx)); idx++) + { + fprintf (fp, "uid:%c::::::::", trustletter); + fputs (p, fp); /* FIXME: Escape colons and linefeeds */ + xfree (p); + putc (':', fp); + putc (':', fp); + putc ('\n', fp); + } } |