mirror of
git://git.gnupg.org/gnupg.git
synced 2025-07-02 22:46:30 +02:00
scd: Add new command: KEYINFO.
* scd/app-common.h (struct app_ctx_s): Add with_keygrip function. * scd/app-openpgp.c (do_with_keygrip): New. * scd/app.c (app_do_with_keygrip): New. * scd/command.c (cmd_keyinfo): New. (send_keyinfo): New. -- KEYGRIP_ACTION_LOOKUP is not yet used. It will be used for directly asking PK* action to determine an APP. Signed-off-by: NIIBE Yutaka <gniibe@fsij.org>
This commit is contained in:
parent
d5443b918d
commit
874bc970ba
5 changed files with 159 additions and 1 deletions
|
@ -4945,6 +4945,59 @@ do_check_pin (app_t app, const char *keyidstr,
|
|||
return verify_chv2 (app, pincb, pincb_arg);
|
||||
}
|
||||
|
||||
static int
|
||||
do_with_keygrip (app_t app, ctrl_t ctrl, int action, const char *keygrip_str)
|
||||
{
|
||||
int i;
|
||||
|
||||
if (action == KEYGRIP_ACTION_LOOKUP)
|
||||
{
|
||||
if (keygrip_str == NULL)
|
||||
return 1;
|
||||
|
||||
for (i = 0; i < 3; i++)
|
||||
if (app->app_local->pk[i].read_done
|
||||
&& !strcmp (keygrip_str, app->app_local->pk[i].keygrip_str))
|
||||
return 0; /* Found */
|
||||
|
||||
return 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
char idbuf[50];
|
||||
char buf[65];
|
||||
int data = (action == KEYGRIP_ACTION_SEND_DATA);
|
||||
|
||||
if (DIM (buf) < 2 * app->serialnolen + 1)
|
||||
return 0;
|
||||
|
||||
bin2hex (app->serialno, app->serialnolen, buf);
|
||||
|
||||
if (keygrip_str == NULL)
|
||||
{
|
||||
for (i = 0; i < 3; i++)
|
||||
if (app->app_local->pk[i].read_done)
|
||||
{
|
||||
sprintf (idbuf, "OPENPGP.%d", i+1);
|
||||
send_keyinfo (ctrl, data,
|
||||
app->app_local->pk[i].keygrip_str,buf, idbuf);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
for (i = 0; i < 3; i++)
|
||||
if (app->app_local->pk[i].read_done
|
||||
&& !strcmp (keygrip_str, app->app_local->pk[i].keygrip_str))
|
||||
{
|
||||
sprintf (idbuf, "OPENPGP.%d", i+1);
|
||||
send_keyinfo (ctrl, data, keygrip_str, buf, idbuf);
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
/* Show information about card capabilities. */
|
||||
static void
|
||||
|
@ -5327,6 +5380,7 @@ app_select_openpgp (app_t app)
|
|||
app->fnc.decipher = do_decipher;
|
||||
app->fnc.change_pin = do_change_pin;
|
||||
app->fnc.check_pin = do_check_pin;
|
||||
app->fnc.with_keygrip = do_with_keygrip;
|
||||
}
|
||||
|
||||
leave:
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue