Diffusion GnuPG d803b3bb3c08

scd: Add an re-select mechanism to switch apps.

Authored by werner on Tue, Jun 25, 8:30 AM.

Description

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 <wk@gnupg.org>

Details

Committed
wernerTue, Jun 25, 9:21 AM
Parents
rGd7d1ff45574e: spelling: Fix "synchronize"
Branches
Unknown
Tags
Unknown