mirror of
git://git.gnupg.org/gnupg.git
synced 2025-03-28 22:49:59 +01:00
agent,scd: Scan and load all public keys for availability.
* agent/divert-scd.c (ask_for_card): Scan by SERIALNO command. * scd/app-openpgp.c (do_with_keygrip): Make sure to load pubkey. Signed-off-by: NIIBE Yutaka <gniibe@fsij.org>
This commit is contained in:
parent
1091f22511
commit
dc35b25195
@ -48,15 +48,22 @@ ask_for_card (ctrl_t ctrl, const unsigned char *shadow_info,
|
|||||||
|
|
||||||
*r_kid = NULL;
|
*r_kid = NULL;
|
||||||
|
|
||||||
bin2hex (grip, 20, hexgrip);
|
/* Scan device(s), and check if key for GRIP is available. */
|
||||||
err = agent_card_keyinfo (ctrl, hexgrip, &keyinfo);
|
err = agent_card_serialno (ctrl, &serialno, NULL);
|
||||||
if (!err)
|
if (!err)
|
||||||
{
|
{
|
||||||
agent_card_free_keyinfo (keyinfo);
|
xfree (serialno);
|
||||||
if ((*r_kid = xtrystrdup (hexgrip)))
|
bin2hex (grip, 20, hexgrip);
|
||||||
return 0;
|
err = agent_card_keyinfo (ctrl, hexgrip, &keyinfo);
|
||||||
else
|
if (!err)
|
||||||
return gpg_error_from_syserror ();
|
{
|
||||||
|
/* Key for GRIP found, use it directly. */
|
||||||
|
agent_card_free_keyinfo (keyinfo);
|
||||||
|
if ((*r_kid = xtrystrdup (hexgrip)))
|
||||||
|
return 0;
|
||||||
|
else
|
||||||
|
return gpg_error_from_syserror ();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
err = parse_shadow_info (shadow_info, &want_sn, &want_kid, NULL);
|
err = parse_shadow_info (shadow_info, &want_sn, &want_kid, NULL);
|
||||||
|
@ -4950,6 +4950,10 @@ do_with_keygrip (app_t app, ctrl_t ctrl, int action, const char *keygrip_str)
|
|||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
|
/* Make sure we have load the public keys. */
|
||||||
|
for (i = 0; i < 3; i++)
|
||||||
|
get_public_key (app, i);
|
||||||
|
|
||||||
if (action == KEYGRIP_ACTION_LOOKUP)
|
if (action == KEYGRIP_ACTION_LOOKUP)
|
||||||
{
|
{
|
||||||
if (keygrip_str == NULL)
|
if (keygrip_str == NULL)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user