From 84391b31962070c524d08ff3991efb222cddeb8f Mon Sep 17 00:00:00 2001 From: Ben Kibbey Date: Thu, 1 Sep 2016 19:46:24 -0400 Subject: [PATCH] pwmc: Add algorithm to .listkeys output. --- src/pwmc.c | 52 +++++++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 43 insertions(+), 9 deletions(-) diff --git a/src/pwmc.c b/src/pwmc.c index 5004dec2..37201869 100644 --- a/src/pwmc.c +++ b/src/pwmc.c @@ -141,6 +141,9 @@ struct keyid_s { time_t created; int secret; int revoked; + int algo; + unsigned bits; + char *curve; struct slist_s *userids; struct slist_s *subkeys; }; @@ -1305,6 +1308,7 @@ free_listkeys (struct slist_s *keys) pwmd_free (sub->keyid); pwmd_free (sub->fpr); pwmd_free (sub->card); + pwmd_free (sub->curve); pwmd_free (sub); } @@ -1315,6 +1319,31 @@ free_listkeys (struct slist_s *keys) slist_free (keys); } +static char * +openpgp_algorithm (struct keyid_s *key) +{ + switch (key->algo) + { + case 1: + case 2: + case 3: + return "RSA"; + case 16: + case 20: + return "ELG"; + case 17: + return "DSA"; + case 301: + case 302: + case 18: + return "ECC"; + default: + break; + } + + return N_("Unknown"); +} + static void display_listkeys (struct slist_s *keys) { @@ -1363,24 +1392,26 @@ display_listkeys (struct slist_s *keys) caps = "C"; fprintf(stdout, N_( - " Subkey %u: %s [%s%s%s] [Created: %s] %s%s%s\n" - " Fingerprint: %s\n" + " Subkey %u: %s [%s]%s%s %s-%u%s%s\n" + " Created: %s %s%s\n" + " Fingerprint: %s\n" "%s%s%s"), s+1, sub->keyid, caps, - sub->secret || sub->card ? "P" : "", - sub->revoked ? "R" : "", + sub->secret || sub->card ? "[P]" : "", + sub->revoked ? "[R]" : "", + openpgp_algorithm (sub), + sub->bits, + sub->curve ? "-" : "", + sub->curve ? sub->curve : "", created, - sub->expired ? N_("[Expired: ") : expires[0] ? N_("[Expires: ") : "", + sub->expired ? N_("Expired: ") : expires[0] ? N_("Expires: ") : "", sub->expired || expires[0] ? expires : "", - sub->expired || expires[0] ? "]" : "", sub->fpr, - sub->card ? N_(" Card: ") : "", + sub->card ? N_(" Card: ") : "", sub->card ? sub->card : "", sub->card ? "\n" : ""); - if (s+1 < st) - fprintf (stdout, "\n"); } if (i+1 < t) @@ -1475,12 +1506,15 @@ listkeys_command (const char *pattern) case 6: sub->can_certify = b; break; case 7: sub->secret = b; break; case 8: sub->can_auth = b; break; + case 11: sub->algo = atoi (fields[f]); break; + case 12: sub->bits = atoi (fields[f]); break; case 13: sub->keyid = pwmd_strdup (fields[f]); break; case 14: sub->fpr = pwmd_strdup (fields[f]); break; case 16: sub->created = strtoul (fields[f], NULL, 10); break; case 17: sub->expires = strtoul (fields[f], NULL, 10); break; case 18: sub->card = fields[f] && strlen(fields[f]) > 1 ? pwmd_strdup (fields[f]) : NULL; break; + case 19: sub->curve = strlen (fields[f]) > 1 ? pwmd_strdup (openpgp_unescape(fields[f])) : NULL; break; default: break; } -- 2.11.4.GIT