1
0
mirror of git://git.gnupg.org/gnupg.git synced 2024-06-06 23:17:47 +02:00

gpg: Fix detecting OpenPGP card by serialno.

* g10/card-util.c (get_info_for_key_operation): Use ->apptype to
determine card's APP.
(current_card_status): Even if its SERIALNO is not like OpenPGP card,
it's OpenPGP card when app says so.
--

GnuPG-bug-id: 5100
Signed-off-by: NIIBE Yutaka <gniibe@fsij.org>
Backported-from-master: 157f1de64e
This commit is contained in:
NIIBE Yutaka 2020-10-26 13:49:23 +09:00 committed by Werner Koch
parent 12ad952978
commit 27ae89db6e
No known key found for this signature in database
GPG Key ID: E3FDFF218E45B72B

View File

@ -382,7 +382,9 @@ current_card_status (ctrl_t ctrl, estream_t fp,
|| strlen (info.serialno) != 32 )
{
const char *name1, *name2;
if (info.apptype && !strcmp (info.apptype, "NKS"))
if (info.apptype && !strcmp (info.apptype, "openpgp"))
goto openpgp;
else if (info.apptype && !strcmp (info.apptype, "NKS"))
{
name1 = "netkey";
name2 = "NetKey";
@ -422,7 +424,7 @@ current_card_status (ctrl_t ctrl, estream_t fp,
xfree (pk);
return;
}
openpgp:
if (!serialno)
;
else if (strlen (info.serialno)+1 > serialnobuflen)
@ -1236,8 +1238,7 @@ get_info_for_key_operation (struct agent_card_info_s *info)
memset (info, 0, sizeof *info);
rc = agent_scd_getattr ("SERIALNO", info);
if (rc || !info->serialno || strncmp (info->serialno, "D27600012401", 12)
|| strlen (info->serialno) != 32 )
if (rc || !info->apptype || strcmp (info->apptype, "openpgp"))
{
log_error (_("key operation not possible: %s\n"),
rc ? gpg_strerror (rc) : _("not an OpenPGP card"));