aboutsummaryrefslogtreecommitdiffstats
path: root/g10/call-agent.c
diff options
context:
space:
mode:
authorWerner Koch <[email protected]>2019-04-01 17:58:33 +0000
committerWerner Koch <[email protected]>2019-04-01 17:58:33 +0000
commit9ed1aa56c4bbf44e00b731d6807ada9e95c91bd7 (patch)
tree1235d5149d806a2fafb1bdff2cc891468bd61ff6 /g10/call-agent.c
parentgpg: Prepare card code to allow other than OpenPGP cards. (diff)
downloadgnupg-9ed1aa56c4bbf44e00b731d6807ada9e95c91bd7.tar.gz
gnupg-9ed1aa56c4bbf44e00b731d6807ada9e95c91bd7.zip
sm: Show the usage flags when generating a key from a card.
* g10/call-agent.c (scd_keypairinfo_status_cb): Also store the usage flags. * sm/call-agent.c (scd_keypairinfo_status_cb): Ditto. * sm/certreqgen-ui.c (gpgsm_gencertreq_tty): Print the usage flags. Signed-off-by: Werner Koch <[email protected]>
Diffstat (limited to 'g10/call-agent.c')
-rw-r--r--g10/call-agent.c20
1 files changed, 18 insertions, 2 deletions
diff --git a/g10/call-agent.c b/g10/call-agent.c
index b02d6c68f..83ca921a7 100644
--- a/g10/call-agent.c
+++ b/g10/call-agent.c
@@ -798,7 +798,22 @@ scd_keypairinfo_status_cb (void *opaque, const char *line)
p++;
while (*p && !spacep (p))
p++;
- *p = 0;
+ if (*p)
+ {
+ *p++ = 0;
+ while (spacep (p))
+ p++;
+ while (*p && !spacep (p))
+ {
+ switch (*p++)
+ {
+ case 'c': sl->flags |= GCRY_PK_USAGE_CERT; break;
+ case 's': sl->flags |= GCRY_PK_USAGE_SIGN; break;
+ case 'e': sl->flags |= GCRY_PK_USAGE_ENCR; break;
+ case 'a': sl->flags |= GCRY_PK_USAGE_AUTH; break;
+ }
+ }
+ }
}
}
@@ -808,7 +823,8 @@ scd_keypairinfo_status_cb (void *opaque, const char *line)
/* Read the keypairinfo lines of the current card directly from
* scdaemon. The list is returned as a string made up of the keygrip,
- * a space and the keyref. */
+ * a space and the keyref. The flags of the string carry the usage
+ * bits. */
gpg_error_t
agent_scd_keypairinfo (ctrl_t ctrl, strlist_t *r_list)
{