mirror of
git://git.gnupg.org/gnupg.git
synced 2025-07-02 22:46:30 +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:
parent
0db9c83555
commit
2bc1ec2944
4 changed files with 52 additions and 0 deletions
|
@ -499,6 +499,11 @@ agent_release_card_info (struct agent_card_info_s *info)
|
|||
xfree (info->private_do[i]);
|
||||
info->private_do[i] = NULL;
|
||||
}
|
||||
for (i=0; i < DIM(info->supported_keyalgo); i++)
|
||||
{
|
||||
free_strlist (info->supported_keyalgo[i]);
|
||||
info->supported_keyalgo[i] = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
@ -744,6 +749,25 @@ learn_status_cb (void *opaque, const char *line)
|
|||
parm->uif[no] = (data[0] != 0xff);
|
||||
xfree (data);
|
||||
}
|
||||
else if (keywordlen == 13 && !memcmp (keyword, "KEY-ATTR-INFO", 13))
|
||||
{
|
||||
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]". */
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -76,6 +76,7 @@ struct agent_card_info_s
|
|||
unsigned int status_indicator;
|
||||
int kdf_do_enabled; /* Non-zero if card has a KDF object, 0 if not. */
|
||||
int uif[3]; /* True if User Interaction Flag is on. */
|
||||
strlist_t supported_keyalgo[3];
|
||||
};
|
||||
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue