mirror of
git://git.gnupg.org/gnupg.git
synced 2025-07-02 22:46:30 +02:00
g10,scd: Improve UIF support.
* g10/call-agent.c (learn_status_cb): Parse "bt" flag. * g10/call-agent.h: New member field "bt". * g10/card-util.c (uif): Limit its access only when it is supported. * scd/app-openpgp.c (do_setattr): Allow access to UIF objects only when there is a button. Signed-off-by: NIIBE Yutaka <gniibe@fsij.org>
This commit is contained in:
parent
54eb375ff1
commit
0240345728
4 changed files with 30 additions and 3 deletions
|
@ -609,6 +609,8 @@ learn_status_cb (void *opaque, const char *line)
|
|||
parm->extcap.ki = abool;
|
||||
else if (!strcmp (p, "aac"))
|
||||
parm->extcap.aac = abool;
|
||||
else if (!strcmp (p, "bt"))
|
||||
parm->extcap.bt = abool;
|
||||
else if (!strcmp (p, "kdf"))
|
||||
parm->extcap.kdf = abool;
|
||||
else if (!strcmp (p, "si"))
|
||||
|
|
|
@ -69,6 +69,7 @@ struct agent_card_info_s
|
|||
unsigned int ki:1; /* Key import available. */
|
||||
unsigned int aac:1; /* Algorithm attributes are changeable. */
|
||||
unsigned int kdf:1; /* KDF object to support PIN hashing available. */
|
||||
unsigned int bt:1; /* Button for confirmation available. */
|
||||
} extcap;
|
||||
unsigned int status_indicator;
|
||||
};
|
||||
|
|
|
@ -2114,10 +2114,31 @@ kdf_setup (const char *args)
|
|||
static void
|
||||
uif (int arg_number, const char *arg_rest)
|
||||
{
|
||||
struct agent_card_info_s info;
|
||||
int feature_available;
|
||||
gpg_error_t err;
|
||||
char name[100];
|
||||
unsigned char data[2];
|
||||
|
||||
memset (&info, 0, sizeof info);
|
||||
|
||||
err = agent_scd_getattr ("EXTCAP", &info);
|
||||
if (err)
|
||||
{
|
||||
log_error (_("error getting card info: %s\n"), gpg_strerror (err));
|
||||
return;
|
||||
}
|
||||
|
||||
feature_available = info.extcap.bt;
|
||||
agent_release_card_info (&info);
|
||||
|
||||
if (!feature_available)
|
||||
{
|
||||
log_error (_("This command is not supported by this card\n"));
|
||||
tty_printf ("\n");
|
||||
return;
|
||||
}
|
||||
|
||||
snprintf (name, sizeof name, "UIF-%d", arg_number);
|
||||
if ( !strcmp (arg_rest, "off") )
|
||||
data[0] = 0x00;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue