summaryrefslogtreecommitdiff
path: root/app-crypt/gnupg/files
diff options
context:
space:
mode:
authorV3n3RiX <venerix@koprulu.sector>2022-07-14 07:39:06 +0100
committerV3n3RiX <venerix@koprulu.sector>2022-07-14 07:39:06 +0100
commit4a30f472147c2d8642bd558b78fcfce7b6a9c6b9 (patch)
treeac0800b987f671677c408554735a832a6924b9a6 /app-crypt/gnupg/files
parentae5005f56ad29d19861ad8a8acb541cf0e99c8d9 (diff)
gentoo auto-resync : 14:07:2022 - 07:39:06
Diffstat (limited to 'app-crypt/gnupg/files')
-rw-r--r--app-crypt/gnupg/files/gnupg-2.3.7-yubikey-workaround-fix.patch53
1 files changed, 53 insertions, 0 deletions
diff --git a/app-crypt/gnupg/files/gnupg-2.3.7-yubikey-workaround-fix.patch b/app-crypt/gnupg/files/gnupg-2.3.7-yubikey-workaround-fix.patch
new file mode 100644
index 000000000000..94062c885b5b
--- /dev/null
+++ b/app-crypt/gnupg/files/gnupg-2.3.7-yubikey-workaround-fix.patch
@@ -0,0 +1,53 @@
+https://git.gnupg.org/cgi-bin/gitweb.cgi?p=gnupg.git;a=commit;h=f34b9147eb3070bce80d53febaa564164cd6c977
+
+From f34b9147eb3070bce80d53febaa564164cd6c977 Mon Sep 17 00:00:00 2001
+From: NIIBE Yutaka <gniibe@fsij.org>
+Date: Wed, 13 Jul 2022 10:40:55 +0900
+Subject: [PATCH] scd:openpgp: Fix workaround for Yubikey heuristics.
+
+* scd/app-openpgp.c (parse_algorithm_attribute): Handle the case
+of firmware 5.4, too.
+
+--
+
+GnuPG-bug-id: 6070
+Signed-off-by: NIIBE Yutaka <gniibe@fsij.org>
+--- a/scd/app-openpgp.c
++++ b/scd/app-openpgp.c
+@@ -6259,15 +6259,28 @@ parse_algorithm_attribute (app_t app, int keyno)
+ app->app_local->keyattr[keyno].ecc.algo = *buffer;
+ app->app_local->keyattr[keyno].ecc.flags = 0;
+
+- if (APP_CARD(app)->cardtype == CARDTYPE_YUBIKEY
+- || buffer[buflen-1] == 0x00 || buffer[buflen-1] == 0xff)
+- { /* Found "pubkey required"-byte for private key template. */
+- oidlen--;
+- if (buffer[buflen-1] == 0xff)
+- app->app_local->keyattr[keyno].ecc.flags |= ECC_FLAG_PUBKEY;
++ if (APP_CARD(app)->cardtype == CARDTYPE_YUBIKEY)
++ {
++ /* Yubikey implementations vary.
++ * Firmware version 5.2 returns "pubkey required"-byte with
++ * 0x00, but after removal and second time insertion, it
++ * returns bogus value there.
++ * Firmware version 5.4 returns none.
++ */
++ curve = ecc_curve (buffer + 1, oidlen);
++ if (!curve)
++ curve = ecc_curve (buffer + 1, oidlen - 1);
++ }
++ else
++ {
++ if (buffer[buflen-1] == 0x00 || buffer[buflen-1] == 0xff)
++ { /* Found "pubkey required"-byte for private key template. */
++ oidlen--;
++ if (buffer[buflen-1] == 0xff)
++ app->app_local->keyattr[keyno].ecc.flags |= ECC_FLAG_PUBKEY;
++ }
++ curve = ecc_curve (buffer + 1, oidlen);
+ }
+-
+- curve = ecc_curve (buffer + 1, oidlen);
+
+ if (!curve)
+ {