aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--scd/app-openpgp.c16
1 files changed, 11 insertions, 5 deletions
diff --git a/scd/app-openpgp.c b/scd/app-openpgp.c
index 42dcdaad1..6c0c0f6d9 100644
--- a/scd/app-openpgp.c
+++ b/scd/app-openpgp.c
@@ -1080,6 +1080,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 }
@@ -1180,6 +1181,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)
@@ -2002,11 +2012,7 @@ do_learn_status (app_t app, ctrl_t ctrl, unsigned int flags)
if (app->app_local->extcap.kdf_do)
do_getattr (app, ctrl, "KDF");
if (app->app_local->extcap.has_button)
- {
- do_getattr (app, ctrl, "UIF-1");
- do_getattr (app, ctrl, "UIF-2");
- do_getattr (app, ctrl, "UIF-3");
- }
+ do_getattr (app, ctrl, "UIF");
if (app->app_local->extcap.private_dos)
{
do_getattr (app, ctrl, "PRIVATE-DO-1");