diff options
author | Werner Koch <[email protected]> | 2019-02-07 19:28:43 +0000 |
---|---|---|
committer | Werner Koch <[email protected]> | 2019-02-07 19:28:43 +0000 |
commit | b79bc877f2ad4d08e7de377cf4bf616b981b3c5f (patch) | |
tree | 752fc6b3df0b6e1d1b8dc8ff5abe11589a942dd4 /tools/card-call-scd.c | |
parent | card: Fix a NULL-ptr deref in key listings. (diff) | |
download | gnupg-b79bc877f2ad4d08e7de377cf4bf616b981b3c5f.tar.gz gnupg-b79bc877f2ad4d08e7de377cf4bf616b981b3c5f.zip |
card: Print the used algorithm of all keys.
* tools/card-call-scd.c (scd_readkey): New.
* tools/card-tool-misc.c (pubkey_algo_string): New.
* tools/gpg-card-tool.c (list_one_kinfo): Print the algo.
--
It is convenient to see the actual algorithm of keys even if no
certificate has yet been created.
Signed-off-by: Werner Koch <[email protected]>
Diffstat (limited to 'tools/card-call-scd.c')
-rw-r--r-- | tools/card-call-scd.c | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/tools/card-call-scd.c b/tools/card-call-scd.c index 7add56daf..0d6dabf1b 100644 --- a/tools/card-call-scd.c +++ b/tools/card-call-scd.c @@ -1299,6 +1299,45 @@ scd_readcert (const char *certidstr, void **r_buf, size_t *r_buflen) +/* Send a READKEY command to the SCdaemon. On success a new + * s-expression is stored at R_RESULT. */ +gpg_error_t +scd_readkey (const char *keyrefstr, gcry_sexp_t *r_result) +{ + gpg_error_t err; + char line[ASSUAN_LINELENGTH]; + membuf_t data; + unsigned char *buf; + size_t len, buflen; + + *r_result = NULL; + err = start_agent (0); + if (err) + return err; + + init_membuf (&data, 1024); + snprintf (line, DIM(line), "SCD READKEY %s", keyrefstr); + err = assuan_transact (agent_ctx, line, + put_membuf_cb, &data, + NULL, NULL, + NULL, NULL); + if (err) + { + xfree (get_membuf (&data, &len)); + return err; + } + buf = get_membuf (&data, &buflen); + if (!buf) + return gpg_error_from_syserror (); + + err = gcry_sexp_new (r_result, buf, buflen, 0); + xfree (buf); + + return err; +} + + + /* Callback function for card_cardlist. */ static gpg_error_t card_cardlist_cb (void *opaque, const char *line) |