mirror of
git://git.gnupg.org/gnupg.git
synced 2024-12-22 10:19:57 +01:00
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 <wk@gnupg.org>
This commit is contained in:
parent
e47524c34a
commit
9ed1aa56c4
@ -798,7 +798,22 @@ scd_keypairinfo_status_cb (void *opaque, const char *line)
|
|||||||
p++;
|
p++;
|
||||||
while (*p && !spacep (p))
|
while (*p && !spacep (p))
|
||||||
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
|
/* Read the keypairinfo lines of the current card directly from
|
||||||
* scdaemon. The list is returned as a string made up of the keygrip,
|
* 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
|
gpg_error_t
|
||||||
agent_scd_keypairinfo (ctrl_t ctrl, strlist_t *r_list)
|
agent_scd_keypairinfo (ctrl_t ctrl, strlist_t *r_list)
|
||||||
{
|
{
|
||||||
|
@ -785,9 +785,9 @@ scd_keypairinfo_status_cb (void *opaque, const char *line)
|
|||||||
{
|
{
|
||||||
sl = append_to_strlist (listaddr, line);
|
sl = append_to_strlist (listaddr, line);
|
||||||
p = sl->d;
|
p = sl->d;
|
||||||
/* Make sure that we only have two tokes so that future
|
/* Make sure that we only have two tokens so that future
|
||||||
extensions of the format won't change the format expected by
|
* extensions of the format won't change the format expected by
|
||||||
the caller. */
|
* the caller. */
|
||||||
while (*p && !spacep (p))
|
while (*p && !spacep (p))
|
||||||
p++;
|
p++;
|
||||||
if (*p)
|
if (*p)
|
||||||
@ -796,7 +796,22 @@ scd_keypairinfo_status_cb (void *opaque, const char *line)
|
|||||||
p++;
|
p++;
|
||||||
while (*p && !spacep (p))
|
while (*p && !spacep (p))
|
||||||
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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -806,7 +821,7 @@ scd_keypairinfo_status_cb (void *opaque, const char *line)
|
|||||||
|
|
||||||
/* Call the agent to read the keypairinfo lines of the current card.
|
/* Call the agent to read the keypairinfo lines of the current card.
|
||||||
The list is returned as a string made up of the keygrip, a space
|
The list is returned as a string made up of the keygrip, a space
|
||||||
and the keyid. */
|
and the keyid. The flags of the string carry the usage bits. */
|
||||||
int
|
int
|
||||||
gpgsm_agent_scd_keypairinfo (ctrl_t ctrl, strlist_t *r_list)
|
gpgsm_agent_scd_keypairinfo (ctrl_t ctrl, strlist_t *r_list)
|
||||||
{
|
{
|
||||||
|
@ -249,6 +249,7 @@ gpgsm_gencertreq_tty (ctrl_t ctrl, estream_t output_stream)
|
|||||||
gcry_sexp_t s_pkey;
|
gcry_sexp_t s_pkey;
|
||||||
char *algostr = NULL;
|
char *algostr = NULL;
|
||||||
const char *keyref;
|
const char *keyref;
|
||||||
|
int any = 0;
|
||||||
|
|
||||||
keyref = strchr (sl->d, ' ');
|
keyref = strchr (sl->d, ' ');
|
||||||
if (keyref)
|
if (keyref)
|
||||||
@ -262,7 +263,28 @@ gpgsm_gencertreq_tty (ctrl_t ctrl, estream_t output_stream)
|
|||||||
}
|
}
|
||||||
xfree (pkey);
|
xfree (pkey);
|
||||||
}
|
}
|
||||||
tty_printf (" (%d) %s %s\n", count, sl->d, algostr);
|
tty_printf (" (%d) %s %s", count, sl->d, algostr);
|
||||||
|
if ((sl->flags & GCRY_PK_USAGE_CERT))
|
||||||
|
{
|
||||||
|
tty_printf ("%scert", any?",":" (");
|
||||||
|
any = 1;
|
||||||
|
}
|
||||||
|
if ((sl->flags & GCRY_PK_USAGE_SIGN))
|
||||||
|
{
|
||||||
|
tty_printf ("%ssign", any?",":" (");
|
||||||
|
any = 1;
|
||||||
|
}
|
||||||
|
if ((sl->flags & GCRY_PK_USAGE_AUTH))
|
||||||
|
{
|
||||||
|
tty_printf ("%sauth", any?",":" (");
|
||||||
|
any = 1;
|
||||||
|
}
|
||||||
|
if ((sl->flags & GCRY_PK_USAGE_ENCR))
|
||||||
|
{
|
||||||
|
tty_printf ("%sencr", any?",":" (");
|
||||||
|
any = 1;
|
||||||
|
}
|
||||||
|
tty_printf ("%s\n", any?")":"");
|
||||||
xfree (algostr);
|
xfree (algostr);
|
||||||
}
|
}
|
||||||
xfree (answer);
|
xfree (answer);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user