aboutsummaryrefslogtreecommitdiffstats
path: root/scd/app-nks.c
diff options
context:
space:
mode:
authorWerner Koch <[email protected]>2019-06-25 06:30:04 +0000
committerWerner Koch <[email protected]>2019-06-25 07:21:14 +0000
commitd803b3bb3c084b6bce4d2bd161db50dc45442e5b (patch)
treef316cf0e99db9629dc24de46212efe5e69fc7408 /scd/app-nks.c
parentspelling: Fix "synchronize" (diff)
downloadgnupg-d803b3bb3c084b6bce4d2bd161db50dc45442e5b.tar.gz
gnupg-d803b3bb3c084b6bce4d2bd161db50dc45442e5b.zip
scd: Add an re-select mechanism to switch apps.
* scd/app-common.h (struct app_ctx_s): Add func ptr 'reselect'. * scd/app-piv.c (do_reselect): New. (app_select_piv): Move AID constant to file scope. * scd/app-openpgp.c (do_reselect): New. (app_select_openpgp): Move AID constant to file scope. * scd/app.c (apptype_from_name): New. (check_application_conflict): Check against all apps of the card. Always set current_apptype. (select_additional_application): New. (maybe_switch_app): New. (app_write_learn_status, app_readcert, app_readkey, app_getattr) (app_setattr, app_sign, app_auth, app_decipher, app_writecert) (app_writekey, app_genkey, app_change_pin, app_check_pin): Use it here. (app_do_with_keygrip): Force reselect on success. (app_new_register): Move setting of CURRENT_APPTYPE to ... (select_application): here so that it will be set to the requested card. * scd/command.c (open_card_with_request): Select additional application if possible. -- Noet that we will likely need to rework this even more so to get well defined semantics for card access. Signed-off-by: Werner Koch <[email protected]>
Diffstat (limited to 'scd/app-nks.c')
-rw-r--r--scd/app-nks.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/scd/app-nks.c b/scd/app-nks.c
index 0651e5d57..d12720cf6 100644
--- a/scd/app-nks.c
+++ b/scd/app-nks.c
@@ -1424,6 +1424,7 @@ app_select_nks (app_t app)
log_info ("Detected NKS version: %d\n", app->app_local->nks_version);
app->fnc.deinit = do_deinit;
+ app->fnc.reselect = NULL;
app->fnc.learn_status = do_learn_status;
app->fnc.readcert = do_readcert;
app->fnc.readkey = do_readkey;