aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--scd/app-openpgp.c20
1 files changed, 13 insertions, 7 deletions
diff --git a/scd/app-openpgp.c b/scd/app-openpgp.c
index cbad3be5f..f1f9bf465 100644
--- a/scd/app-openpgp.c
+++ b/scd/app-openpgp.c
@@ -1073,6 +1073,7 @@ do_getattr (app_t app, ctrl_t ctrl, const char *name)
{ "UIF-1", 0x00D6, 0 },
{ "UIF-2", 0x00D7, 0 },
{ "UIF-3", 0x00D8, 0 },
+ { "UIF", 0x0000, -9 }, /* Shortcut for all UIF */
{ "KDF", 0x00F9, 5 },
{ "MANUFACTURER", 0x0000, -8 },
{ NULL, 0 }
@@ -1171,6 +1172,15 @@ do_getattr (app_t app, ctrl_t ctrl, const char *name)
app->app_local->manufacturer,
get_manufacturer (app->app_local->manufacturer));
}
+ if (table[idx].special == -9)
+ {
+ rc = do_getattr (app, ctrl, "UIF-1");
+ if (!rc)
+ rc = do_getattr (app, ctrl, "UIF-2");
+ if (!rc)
+ rc = do_getattr (app, ctrl, "UIF-3");
+ return rc;
+ }
relptr = get_one_do (app, table[idx].tag, &value, &valuelen, &rc);
if (relptr)
@@ -2072,18 +2082,14 @@ do_learn_status (app_t app, ctrl_t ctrl, unsigned int flags)
err = do_getattr (app, ctrl, "CHV-STATUS");
if (!err)
err = do_getattr (app, ctrl, "SIG-COUNTER");
- if (!err)
- err = do_getattr (app, ctrl, "UIF-1");
- if (!err)
- err = do_getattr (app, ctrl, "UIF-2");
- if (!err)
- err = do_getattr (app, ctrl, "UIF-3");
- if (app->app_local->extcap.private_dos)
+ if (!err && app->app_local->extcap.kdf_do)
{
err = do_getattr (app, ctrl, "KDF");
if (gpg_err_code (err) == GPG_ERR_NO_OBJ)
err = 0;
}
+ if (!err && app->app_local->extcap.has_button)
+ err = do_getattr (app, ctrl, "UIF");
if (!err && app->app_local->extcap.private_dos)
{
if (!err)