1
0
Fork 0
mirror of git://git.gnupg.org/gnupg.git synced 2025-07-03 22:56:33 +02:00

gpg,tools: Add handling of supported algorithms by a card.

* g10/call-agent.h (struct agent_card_info_s): Add supported_keyalgo.
* g10/call-agent.c (learn_status_cb): Parse KEY-ATTR-INFO.
(agent_release_card_info): Release supported_keyalgo.
* tools/gpg-card.h (struct card_info_s): Add supported_keyalgo.
* tools/card-call-scd.c (learn_status_cb): Parse KEY-ATTR-INFO.
(release_card_info): Release supported_keyalgo.

Signed-off-by: NIIBE Yutaka <gniibe@fsij.org>
This commit is contained in:
NIIBE Yutaka 2020-09-08 15:34:42 +09:00
parent 0db9c83555
commit 2bc1ec2944
4 changed files with 52 additions and 0 deletions

View file

@ -161,6 +161,11 @@ release_card_info (card_info_t info)
info->kinfo = kinfo;
}
info->chvusage[0] = info->chvusage[1] = 0;
for (i=0; i < DIM(info->supported_keyalgo); i++)
{
free_strlist (info->supported_keyalgo[i]);
info->supported_keyalgo[i] = NULL;
}
}
@ -1042,6 +1047,26 @@ learn_status_cb (void *opaque, const char *line)
xfree (parm->dispserialno);
parm->dispserialno = unescape_status_string (line);
}
else if (!memcmp (keyword, "KEY-ATTR-INFO", keywordlen))
{
if (!strncmp (line, "OPENPGP.", 8))
{
int no;
line += 8;
no = atoi (line);
if (no >= 1 && no <= 3)
{
no--;
line++;
while (spacep (line))
line++;
append_to_strlist (&parm->supported_keyalgo[no],
xstrdup (line));
}
}
/* Skip when it's not "OPENPGP.[123]". */
}
break;
default: