diff --git a/Makefile.am b/Makefile.am
index 3278c872..27c419c0 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -1,96 +1,97 @@
# Makefile.am - Installer for GnuPG 4 Windows Makefile.
# Copyright (C) 2005, 2008, 2012 g10 Code GmbH
#
# This file is part of GPG4Win.
#
# GPG4Win is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# GPG4Win is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, see .
ACLOCAL_AMFLAGS = -I m4
AUTOMAKE_OPTIONS = dist-bzip2 no-dist-gzip
DISTCHECK_CONFIGURE_FLAGS = --host=i686-w64-mingw32
SUBDIRS = po packages doc src
# find patches -type f | sort | sed 's/$/ \\/' | sed 's/^/ /'
EXTRA_DIST = autogen.sh README.GIT ONEWS \
doc/license-page doc/GPLv3 \
build-aux/git-log-footer build-aux/git-log-fix \
patches/boost/boost-1-fixes.patch \
patches/extra-cmake-modules/0001-Use-BIN_INSTALL_DIR-data-for-DATAROOTDIR-on-Windows.patch \
patches/glib-2.41.5/01-socket.patch \
patches/glib-2.41.5/02-formatsec.patch \
patches/kconfigwidgets/0001-Make-QDbus-optional.patch \
patches/kiconthemes/0001-Make-DBus-optional.patch \
patches/kxmlgui/0001-make-qdbus-optional.patch \
patches/kxmlgui/0004-Cruedly-disable-KSendbugmail.patch \
patches/qtbase/0001-Fix-build-without-std-thread.patch \
patches/qtbase/0002-Gpg4win-theme-names-and-relpaths.patch \
patches/qtbase/0001-Gpg4win-qstandardpaths-patch.patch \
patches/qttools/disable-most-tools.patch \
patches/w32pth-2.0.5/workaround-broken-libtool.patch \
patches/breeze-icons/0001-Make-binary-icons-cross-compilable.patch \
patches/libkleo/lower-cmake-requirement.patch \
- patches/kleopatra/lower-cmake-requirement.patch
+ patches/kleopatra/lower-cmake-requirement.patch \
+ patches/gpgme/0001-cpp-Use-keyID-as-fallback-for-primaryFingerprint.patch
copy-news:
cp NEWS doc/website/NEWS.last
copy-release: gpg4win-$(VERSION).tar.bz2 installers/gpg4win-$(VERSION).exe \
installers/gpg4win-light-$(VERSION).exe \
installers/gpg4win-vanilla-$(VERSION).exe
@echo Copying $(VERSION) to $(RELEASEHOST) >&2
@set -e;\
if ssh "$$(echo $(RELEASEHOST)|cut -d: -f -1)" \
test -f "$$(echo $(RELEASEHOST)/gpg4win-$(VERSION).exe|cut -d: -f2-)";\
then echo "This release has already been copied to the server" >&2 ;\
else scp gpg4win-$(VERSION).tar.bz2 \
installers/gpg4win-$(VERSION).exe \
installers/gpg4win-light-$(VERSION).exe \
installers/gpg4win-vanilla-$(VERSION).exe \
installers/gpg4win-src-$(VERSION).exe $(RELEASEHOST)/ ;\
for f in en de ; do \
scp src/README.$$f.txt \
$(RELEASEHOST)/README-$(VERSION).$$f.txt; \
done;\
fi
dist-hook: gen-ChangeLog
gen_start_date = 2012-03-26T00:00:00
.PHONY: gen-ChangeLog
gen-ChangeLog:
set -e; \
if test -d $(top_srcdir)/.git; then \
(cd $(top_srcdir) && \
$(GITLOG_TO_CHANGELOG) --append-dot --tear-off \
--amend=build-aux/git-log-fix \
--since=$(gen_start_date) ) > $(distdir)/cl-t; \
cat $(top_srcdir)/build-aux/git-log-footer >> $(distdir)/cl-t;\
rm -f $(distdir)/ChangeLog; \
mv $(distdir)/cl-t $(distdir)/ChangeLog; \
fi
download: packages/packages.current
(cd packages; ./download.sh)
msi:
$(MAKE) $(AM_MAKEFLAGS) -C src msi
msi-signed:
$(MAKE) $(AM_MAKEFLAGS) -C src msi-signed
msi-upload:
$(MAKE) $(AM_MAKEFLAGS) -C src msi-upload
diff --git a/patches/gpgme/0001-cpp-Use-keyID-as-fallback-for-primaryFingerprint.patch b/patches/gpgme/0001-cpp-Use-keyID-as-fallback-for-primaryFingerprint.patch
new file mode 100755
index 00000000..f2e4790a
--- /dev/null
+++ b/patches/gpgme/0001-cpp-Use-keyID-as-fallback-for-primaryFingerprint.patch
@@ -0,0 +1,50 @@
+#! /bin/sh
+patch -p1 -l -f $* < $0
+exit $?
+
+From c1843ee030fa4b8b2ff0a51b9b4d2c41caba6f54 Mon Sep 17 00:00:00 2001
+From: Andre Heinecke
+Date: Wed, 19 May 2021 13:54:54 +0200
+Subject: [PATCH] cpp: Use keyID as fallback for primaryFingerprint
+
+* lang/cpp/src/key.cpp (Key::primaryFingerprint): Fallback
+to keyID when we have no fingerprint.
+
+--
+When a keylist returns a key without a fingerprint this for
+example can happen when searching in LDAP then code assuming
+the primaryFingerprint is the main identifier of the key
+will fail.
+
+This way we have "best available unique identifier" still
+connected to primaryFingerprint. And this should avoid bugs
+in code using GPGME that would handle two different keys
+without a fingerprint as the same key.
+
+GnuPG-Bug-Id: T5441
+---
+ lang/cpp/src/key.cpp | 6 +++++-
+ 1 file changed, 5 insertions(+), 1 deletion(-)
+
+diff --git a/lang/cpp/src/key.cpp b/lang/cpp/src/key.cpp
+index b893a7cd..9d9f4615 100644
+--- a/lang/cpp/src/key.cpp
++++ b/lang/cpp/src/key.cpp
+@@ -292,10 +292,14 @@ const char *Key::primaryFingerprint() const
+ /* Return what gpgme thinks is the primary fingerprint */
+ return key->fpr;
+ }
+- if (key->subkeys) {
++ if (key->subkeys && key->subkeys->fpr) {
+ /* Return the first subkeys fingerprint */
+ return key->subkeys->fpr;
+ }
++ if (key->subkeys && key->subkeys->keyid) {
++ /* When no fingerprint is available use the first subkeys keyid */
++ return key->subkeys->keyid;
++ }
+ return nullptr;
+ }
+
+--
+2.20.1