aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorWerner Koch <[email protected]>2020-05-26 14:13:15 +0000
committerWerner Koch <[email protected]>2023-10-10 14:25:31 +0000
commit216f3fc96ac213edae82b8d17088dcfc5d746214 (patch)
tree14aaa90117986cd35d7676db3a097dbdd9851f8b
parentscd: Add handling of Ed448 key. (diff)
downloadgnupg-216f3fc96ac213edae82b8d17088dcfc5d746214.tar.gz
gnupg-216f3fc96ac213edae82b8d17088dcfc5d746214.zip
scd:openpgp: Add attribute "UIF" for convenience.
* scd/app-openpgp.c (do_getattr): New attrubute "UIF". (do_learn_status): Use that. -- Actually this is not just convenience but will make it easier to add new keys to an openpgp card - we will need to change this only at one place. Signed-off-by: Werner Koch <[email protected]> (cherry picked from commit 11f0700282c1eeaee8db6686c38aca0900271351)
-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)