1
0
Fork 0
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:
NIIBE Yutaka 2021-07-06 14:52:29 +09:00
parent 5f78ae696c
commit 044e5a3c38
4 changed files with 72 additions and 2 deletions

View file

@ -3609,6 +3609,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 piv_aid
&& memcmp (aid, piv_aid, sizeof piv_aid) == 0)
return 0;
return gpg_error (GPG_ERR_WRONG_CARD);
}
/* Select the PIV application on the card in SLOT. This function must
* be used before any other PIV application functions. */
gpg_error_t
@ -3713,6 +3725,7 @@ app_select_piv (app_t app)
app->fnc.change_pin = do_change_chv;
app->fnc.check_pin = do_check_chv;
app->fnc.with_keygrip = do_with_keygrip;
app->fnc.check_aid = do_check_aid;
leave: