mirror of
git://git.gnupg.org/gnupg.git
synced 2025-07-03 22:56:33 +02:00
scd: Detect external interference when PCSC_SHARED.
* scd/app-common.h (check_aid): New method. * scd/app-openpgp.c (do_check_aid): New. * scd/app-piv.c (do_check_aid): New. * scd/app.c (check_external_interference): New. (maybe_switch_app): Check interference to determine switching is needed. -- GnuPG-bug-id: 5484 Signed-off-by: NIIBE Yutaka <gniibe@fsij.org>
This commit is contained in:
parent
5f78ae696c
commit
044e5a3c38
4 changed files with 72 additions and 2 deletions
|
@ -6134,6 +6134,18 @@ do_reselect (app_t app, ctrl_t ctrl)
|
|||
}
|
||||
|
||||
|
||||
/* Check if AID is the correct one. */
|
||||
static gpg_error_t
|
||||
do_check_aid (app_t app, ctrl_t ctrl, const unsigned char *aid, size_t aidlen)
|
||||
{
|
||||
if (aidlen >= sizeof openpgp_aid
|
||||
&& memcmp (aid, openpgp_aid, sizeof openpgp_aid) == 0)
|
||||
return 0;
|
||||
|
||||
return gpg_error (GPG_ERR_WRONG_CARD);
|
||||
}
|
||||
|
||||
|
||||
/* Select the OpenPGP application on the card in SLOT. This function
|
||||
must be used before any other OpenPGP application functions. */
|
||||
gpg_error_t
|
||||
|
@ -6322,6 +6334,7 @@ app_select_openpgp (app_t app)
|
|||
app->fnc.change_pin = do_change_pin;
|
||||
app->fnc.check_pin = do_check_pin;
|
||||
app->fnc.with_keygrip = do_with_keygrip;
|
||||
app->fnc.check_aid = do_check_aid;
|
||||
}
|
||||
|
||||
leave:
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue