Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package gpgme for openSUSE:Factory checked in at 2021-01-18 11:27:22 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/gpgme (Old) and /work/SRC/openSUSE:Factory/.gpgme.new.28504 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "gpgme" Mon Jan 18 11:27:22 2021 rev:85 rq:863068 version:1.15.1 Changes: -------- --- /work/SRC/openSUSE:Factory/gpgme/gpgme.changes 2020-12-09 22:11:54.419096577 +0100 +++ /work/SRC/openSUSE:Factory/.gpgme.new.28504/gpgme.changes 2021-01-18 11:30:36.852391040 +0100 @@ -1,0 +2,10 @@ +Tue Jan 12 22:35:23 UTC 2021 - Andreas Stieger <andreas.stie...@gmx.de> + +- gpgme 1.15.1: + * Fix a bug in the secret key export + * Make listing of signatures work if only secret keys are listed + * qt: Avoid empty "r...@gnupg.org" signature notations + * python: Fix key_export functions +- remove deprecated texinfo macros + +------------------------------------------------------------------- Old: ---- gpgme-1.15.0.tar.bz2 gpgme-1.15.0.tar.bz2.sig New: ---- gpgme-1.15.1.tar.bz2 gpgme-1.15.1.tar.bz2.sig ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ gpgme.spec ++++++ --- /var/tmp/diff_new_pack.o1A2wN/_old 2021-01-18 11:30:37.904404224 +0100 +++ /var/tmp/diff_new_pack.o1A2wN/_new 2021-01-18 11:30:37.912404324 +0100 @@ -1,7 +1,7 @@ # # spec file for package gpgme # -# Copyright (c) 2020 SUSE LLC +# Copyright (c) 2021 SUSE LLC # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -30,7 +30,7 @@ %endif %{!?python_module:%define python_module() python-%{**} python3-{**}} Name: gpgme%{psuffix} -Version: 1.15.0 +Version: 1.15.1 Release: 0 Summary: Programmatic library interface to GnuPG License: LGPL-2.1-or-later AND GPL-3.0-or-later @@ -50,11 +50,9 @@ BuildRequires: pkgconfig BuildRequires: swig %if %{with python2} || %{with python3} -BuildRequires: python-rpm-macros BuildRequires: %{python_module devel} +BuildRequires: python-rpm-macros %endif -Requires(post): %{install_info_prereq} -Requires(preun): %{install_info_prereq} %if %{with qt} BuildRequires: pkgconfig(Qt5Core) BuildRequires: pkgconfig(Qt5Test) @@ -68,7 +66,6 @@ %define python_files() -n python3-%{**} %endif - %description GnuPG Made Easy (GPGME) is a library designed to make access to GnuPG easier for applications. It provides a high-level crypto API for @@ -262,11 +259,6 @@ %postun -n libgpgme11 -p /sbin/ldconfig %post -n libgpgmepp6 -p /sbin/ldconfig %postun -n libgpgmepp6 -p /sbin/ldconfig -%post -%install_info --info-dir=%{_infodir} %{_infodir}/gpgme.info%{ext_info} - -%preun -%install_info_delete --info-dir=%{_infodir} %{_infodir}/gpgme.info%{ext_info} %endif %if !%{with qt} ++++++ gpgme-1.15.0.tar.bz2 -> gpgme-1.15.1.tar.bz2 ++++++ ++++ 1807 lines of diff (skipped) ++++ retrying with extended exclude list diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/gpgme-1.15.0/AUTHORS new/gpgme-1.15.1/AUTHORS --- old/gpgme-1.15.0/AUTHORS 2018-12-03 10:37:25.000000000 +0100 +++ new/gpgme-1.15.1/AUTHORS 2021-01-08 18:07:52.000000000 +0100 @@ -19,7 +19,7 @@ Copyright (C) 1991-2013 Free Software Foundation, Inc. Copyright (C) 2000-2001 Werner Koch - Copyright (C) 2001-2018 g10 Code GmbH + Copyright (C) 2001-2021 g10 Code GmbH Copyright (C) 2002 Klar??lvdalens Datakonsult AB Copyright (C) 2004-2008 Igor Belyi Copyright (C) 2002 John Goerzen diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/gpgme-1.15.0/ChangeLog new/gpgme-1.15.1/ChangeLog --- old/gpgme-1.15.0/ChangeLog 2020-11-12 10:30:05.000000000 +0100 +++ new/gpgme-1.15.1/ChangeLog 2021-01-08 18:21:40.000000000 +0100 @@ -1,5 +1,106 @@ +2021-01-08 Werner Koch <w...@gnupg.org> + + Release 1.15.1. + + commit bb9880778fb16cdb6de83905e45bf6c965770013 + + + Make distcheck make target a bit more reliable. + + commit 133050b3fa28122a4b60dbbde698fb14379ccf95 + * Makefile.am (release): Do not pass --parallel + +2021-01-05 Ingo Kl??cker <d...@ingo-kloecker.de> + + core: Make listing of signatures work if only secret keys are listed. + + commit 5137d7fc214d0d9dcb947ccdc32fa87979f9a6d0 + * src/engine-gpg.c (gpg_keylist_build_options): Add "--with-sig-check" + argument if signatures shall be listed. + * tests/gpg/t-keylist-secret-sig.c: New. + * tests/gpg/Makefile.am (c_tests): Add new test. + +2021-01-04 Ingo Kl??cker <d...@ingo-kloecker.de> + + cpp: Add const-overload of UserID::Signature::operator< + + commit a6220adf3081c9c848f6d0a6fc3774cb168ccf9c + lang/cpp/src/key.h, lang/cpp/src/key.cpp (UserID::Signature::operator<): + Add const-overload. Deprecate non-const overload. + +2021-01-04 Andre Heinecke <aheine...@gnupg.org> + + Qt: Undeprecate QByteArray based start functs. + + commit 543e2106386f00ebecf7653e7896fa12a6e828ff + * lang/qt/src/encryptjob.h, lang/qt/src/signjob.h (start): + Undeprecate QByteArray based functions. + +2020-12-03 NIIBE Yutaka <gni...@fsij.org> + + python: Fix key_export*. + + commit 7a4fe82a017b751ad756c93d2b9e31d7be045275 + * lang/python/src/core.py (key_export): Just raise an error. + (key_export_minimal, key_export_secret): Ditto. + +2020-11-24 NIIBE Yutaka <gni...@fsij.org> + + core: Call _gpgme_passphrase_status_handler when exporting keys. + + commit 53ac732bae46e1f883998e987fc84d4cababde12 + * src/export.c (export_status_handler): Call the handler. + +2020-11-20 Andre Heinecke <aheine...@gnupg.org> + + Revert "cpp: Use portable off_t size_t" + + commit a5c4b030258714dd72a2e276114183309cad3ec3 + This reverts commit 88294023c196497cfa6737be262c8b0c09d2a3ce. + +2020-11-20 NIIBE Yutaka <gni...@fsij.org> + + m4: Update with newer autoconf constructs. + + commit 4c6fd361593e22092770d120d68a18b4f70e0bb8 + * src/gpgme.m4: Replace AC_HELP_STRING to AS_HELP_STRING. + +2020-11-18 Andre Heinecke <aheine...@gnupg.org> + + cpp: Use portable off_t size_t. + + commit 88294023c196497cfa6737be262c8b0c09d2a3ce + * configure.ac: Configure cpp data.h.in + * lang/cpp/src/Makefile.am: Generate data.h + * lang/cpp/src/data.cpp, lang/cpp/src/data.h: Use portable + types. + * lang/qt/src/Makefile.am: Include build dir. + * lang/qt/tests/makefile.am: Include build dir. + +2020-11-18 Ingo Kl??cker <d...@ingo-kloecker.de> + Daniel Kahn Gillmor + + qt: Avoid empty "r...@gnupg.org" signature notations. + + commit 3c185c2159cdcc23f44773fe1cfb624b27598c80 + * lang/qt/src/qgpgmesignkeyjob.cpp (sign_key): Check remark for being + an empty string instead of a null QString. + +2020-11-18 NIIBE Yutaka <gni...@fsij.org> + + build: Update with newer autoconf constructs. + + commit 223779dfdeb7808809372587fa135a8cc2616ce8 + * configure.ac: Use AC_USE_SYSTEM_EXTENSIONS instead of AC_GNU_SOURCE. + Use AS_HELP_STRING instead of AC_HELP_STRING. + * m4/libtool.m4: Update from libgpg-error. + * m4/gpg-error.m4: Update from libgpg-error. + * m4/libassuan.m4: Update from libassuan. + +2020-11-12 Andre Heinecke <aheine...@gnupg.org> + + qt: Fix export of qDebug GpgME::Error overload. + + commit df5a89e6929479dc1bf301974fe7d607d024bc1f + * lang/qt/src/debug.cpp: Include debug.h to get the export decl. + 2020-11-12 Werner Koch <w...@gnupg.org> + build: Use ~/.gnupg-autogen.sh for the release targets. + + commit 27abdac25dcd4ba57e073a5de2f057830e623282 + * Makefile.am (sign-release): Use global config vars. + + Post release updates. + + commit 01a0d8ec1aa8543dca0986c6dcb5cabc535aae2c + + Release 1.15.0. + commit feea38c89d4ceb40334f884da9ab07cc4b73e757 * configure.ac: Bump LT versions to c=C35/A24/R0, cpp=C18/A13/R0, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/gpgme-1.15.0/Makefile.am new/gpgme-1.15.1/Makefile.am --- old/gpgme-1.15.0/Makefile.am 2018-12-03 10:37:25.000000000 +0100 +++ new/gpgme-1.15.1/Makefile.am 2021-01-08 17:39:43.000000000 +0100 @@ -20,14 +20,14 @@ ## Process this file with automake to produce Makefile.in -# Location of the released tarball archives. Note that this is an -# internal archive and before uploading this to the public server, -# manual tests should be run and the git release tat set and pushed. -# Adjust as needed. -RELEASE_ARCHIVE_DIR = wk@vigenere:tarballs/gpgme/ +# Location of the released tarball archives. This is prefixed by +# the variable RELEASE_ARCHIVE in ~/.gnupg-autogen.rc. For example: +# RELEASE_ARCHIVE=user@host:archive/tarballs +RELEASE_ARCHIVE_SUFFIX = gpgme +# The variable RELEASE_SIGNKEY in ~/.gnupg-autogen.rc is used +# to specify the key for signing. For example: +# RELEASE_SIGNKEY=D8692123C4065DEA5E0F3AB5249B39D24F25E3B6 -# The key used to sign the released sources. Adjust as needed. -RELEASE_SIGNING_KEY = D8692123C4065DEA5E0F3AB5249B39D24F25E3B6 # Autoconf flags ACLOCAL_AMFLAGS = -I m4 @@ -97,7 +97,7 @@ cd $(abs_top_builddir); \ rm -rf dist; mkdir dist ; cd dist ; \ $(abs_top_srcdir)/configure --enable-maintainer-mode; \ - $(MAKE) distcheck TESTFLAGS=--parallel; \ + $(MAKE) distcheck; \ echo "/* Build finished at $$(date -uIseconds) */" ;\ echo "/*" ;\ echo " * Please run the final step interactively:" ;\ @@ -108,19 +108,31 @@ sign-release: +(set -e; \ cd dist; \ + x=$$(grep '^RELEASE_ARCHIVE=' $$HOME/.gnupg-autogen.rc|cut -d= -f2);\ + if [ -z "$$x" ]; then \ + echo "error: RELEASE_ARCHIVE missing in ~/.gnupg-autogen.rc">&2; \ + exit 2;\ + fi;\ + myarchive="$$x/$(RELEASE_ARCHIVE_SUFFIX)";\ + x=$$(grep '^RELEASE_SIGNKEY=' $$HOME/.gnupg-autogen.rc|cut -d= -f2);\ + if [ -z "$$x" ]; then \ + echo "error: RELEASE_SIGNKEY missing in ~/.gnupg-autogen.rc">&2; \ + exit 2;\ + fi;\ + mysignkey="$$x";\ files1="$(RELEASE_NAME).tar.bz2" ;\ files2="$(RELEASE_NAME).tar.bz2.sig \ $(RELEASE_NAME).swdb \ $(RELEASE_NAME).buildlog" ;\ echo "/* Signing the source tarball ..." ;\ - gpg -sbu $(RELEASE_SIGNING_KEY) $(RELEASE_NAME).tar.bz2 ;\ + gpg -sbu $$mysignkey $(RELEASE_NAME).tar.bz2 ;\ cat $(RELEASE_NAME).swdb >swdb.snippet;\ echo >>swdb.snippet ;\ sha1sum $${files1} >>swdb.snippet ;\ cat "../$(RELEASE_NAME).buildlog" swdb.snippet \ | gzip >$(RELEASE_NAME).buildlog ;\ echo "Copying to local archive ..." ;\ - scp -p $${files1} $${files2} $(RELEASE_ARCHIVE_DIR)/ || true;\ + scp -p $${files1} $${files2} $$myarchive/ || true;\ echo "Uploading documentation ..." ;\ $(MAKE) -C doc online; \ echo '/*' ;\ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/gpgme-1.15.0/NEWS new/gpgme-1.15.1/NEWS --- old/gpgme-1.15.0/NEWS 2020-11-12 10:18:33.000000000 +0100 +++ new/gpgme-1.15.1/NEWS 2021-01-08 18:14:21.000000000 +0100 @@ -1,3 +1,22 @@ +Noteworthy changes in version 1.15.1 (2021-01-08) +------------------------------------------------- + + * Fix another bug in the secret key export. [#5046] + + * Make listing of signatures work if only secret keys are listed. [#3580] + + * Fix build problem on FreeBSD. [a6220adf30] + + * qt: Avoid empty "r...@gnupg.org" signature notations. [#5142] + + * python: Fix key_export functions. [#5149] + + + [c=C35/A24/R1 cpp=C18/A12/R1 qt=C12/A5/R1] + + Release-info: https://dev.gnupg.org/T5225 + + Noteworthy changes in version 1.15.0 (2020-11-12) ------------------------------------------------- diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/gpgme-1.15.0/README new/gpgme-1.15.1/README --- old/gpgme-1.15.0/README 2020-11-12 10:18:42.000000000 +0100 +++ new/gpgme-1.15.1/README 2021-01-08 18:07:35.000000000 +0100 @@ -1,7 +1,7 @@ GPGME - GnuPG Made Easy --------------------------- -Copyright 2001-2020 g10 Code GmbH +Copyright 2001-2021 g10 Code GmbH This file is free software; as a special exception the author gives unlimited permission to copy and/or distribute it, with or without diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/gpgme-1.15.0/VERSION new/gpgme-1.15.1/VERSION --- old/gpgme-1.15.0/VERSION 2020-11-12 10:29:38.000000000 +0100 +++ new/gpgme-1.15.1/VERSION 2021-01-08 18:21:12.000000000 +0100 @@ -1 +1 @@ -1.15.0 +1.15.1 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/gpgme-1.15.0/conf/config.h.in new/gpgme-1.15.1/conf/config.h.in --- old/gpgme-1.15.0/conf/config.h.in 2020-11-12 10:27:35.000000000 +0100 +++ new/gpgme-1.15.1/conf/config.h.in 2021-01-08 18:20:23.000000000 +0100 @@ -278,5 +278,5 @@ #define GPG_ERR_ENABLE_ERRNO_MACROS 1 #define CRIGHTBLURB "Copyright (C) 2000 Werner Koch\n" \ - "Copyright (C) 2001--2020 g10 Code GmbH\n" + "Copyright (C) 2001--2021 g10 Code GmbH\n" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/gpgme-1.15.0/configure.ac new/gpgme-1.15.1/configure.ac --- old/gpgme-1.15.0/configure.ac 2020-11-12 10:19:50.000000000 +0100 +++ new/gpgme-1.15.1/configure.ac 2021-01-08 18:13:58.000000000 +0100 @@ -1,6 +1,6 @@ # configure.ac for GPGME # Copyright (C) 2000 Werner Koch (dd9jn) -# Copyright (C) 2001-2018 g10 Code GmbH +# Copyright (C) 2001-2021 g10 Code GmbH # # This file is part of GPGME. # @@ -19,7 +19,7 @@ # SPDX-License-Identifier: LGPL-2.1-or-later # (Process this file with autoconf to produce a configure script.) -AC_PREREQ(2.59) +AC_PREREQ([2.59]) min_automake_version="1.14" # To build a release you need to create a tag with the version number @@ -32,7 +32,7 @@ m4_define([mym4_package],[gpgme]) m4_define([mym4_major], [1]) m4_define([mym4_minor], [15]) -m4_define([mym4_micro], [0]) +m4_define([mym4_micro], [1]) # Below is m4 magic to extract and compute the git revision number, # the decimalized short revision number, a beta version string and a @@ -45,7 +45,7 @@ m4_define([mym4_revision], m4_argn(7, mym4_verslist)) m4_define([mym4_revision_dec], m4_argn(8, mym4_verslist)) m4_esyscmd([echo ]mym4_version[>VERSION]) -AC_INIT([mym4_package],[mym4_version], [https://bugs.gnupg.org]) +AC_INIT([mym4_package],[mym4_version],[https://bugs.gnupg.org]) # LT Version numbers, remember to change them just *before* a release. # (Code changed: REVISION++) @@ -55,18 +55,18 @@ # LIBGPGME_LT_CURRENT=35 LIBGPGME_LT_AGE=24 -LIBGPGME_LT_REVISION=0 +LIBGPGME_LT_REVISION=1 # If there is an ABI break in gpgmepp or qgpgme also bump the # version in IMPORTED_LOCATION in the GpgmeppConfig-w32.cmake.in.in LIBGPGMEPP_LT_CURRENT=18 LIBGPGMEPP_LT_AGE=12 -LIBGPGMEPP_LT_REVISION=0 +LIBGPGMEPP_LT_REVISION=1 LIBQGPGME_LT_CURRENT=12 LIBQGPGME_LT_AGE=5 -LIBQGPGME_LT_REVISION=0 +LIBQGPGME_LT_REVISION=1 ################################################ AC_SUBST(LIBGPGME_LT_CURRENT) @@ -105,7 +105,7 @@ AC_ARG_VAR(SYSROOT,[locate config scripts also below that directory]) # Enable GNU extensions on systems that have them. -AC_GNU_SOURCE +AC_USE_SYSTEM_EXTENSIONS # Taken from mpfr-4.0.1, then modified for LDADD_FOR_TESTS_KLUDGE dnl Under Linux, make sure that the old dtags are used if LD_LIBRARY_PATH @@ -243,7 +243,7 @@ AM_PATH_GLIB_2_0 AC_ARG_ENABLE(w32-glib, - AC_HELP_STRING([--enable-w32-glib], [build GPGME Glib for W32]), + AS_HELP_STRING([--enable-w32-glib],[build GPGME Glib for W32]), build_w32_glib=$enableval) ;; *) @@ -291,7 +291,7 @@ AC_ARG_ENABLE([fixed-path], - AC_HELP_STRING([--enable-fixed-path=PATH], + AS_HELP_STRING([--enable-fixed-path=PATH], [locate binaries only via this PATH]), [fixed_search_path="$enableval"], [fixed_search_path=""]) @@ -304,7 +304,7 @@ # Note: You need to declare all possible languages also in # lang/Makefile.am's DIST_SUBDIRS. AC_ARG_ENABLE([languages], - AC_HELP_STRING([--enable-languages=languages], + AS_HELP_STRING([--enable-languages=languages], [enable only specific language bindings]), [enabled_languages=`echo $enableval | \ tr ',:' ' ' | tr '[A-Z]' '[a-z]' | \ @@ -494,7 +494,7 @@ AC_SUBST(BUILD_FILEVERSION) AC_ARG_ENABLE([build-timestamp], - AC_HELP_STRING([--enable-build-timestamp], + AS_HELP_STRING([--enable-build-timestamp], [set an explicit build timestamp for reproducibility. (default is the current time in ISO-8601 format)]), [if test "$enableval" = "yes"; then @@ -513,25 +513,25 @@ # run_gpgconf_test="yes" AC_ARG_ENABLE(gpgconf-test, - AC_HELP_STRING([--disable-gpgconf-test], [disable GPGCONF regression test]), + AS_HELP_STRING([--disable-gpgconf-test],[disable GPGCONF regression test]), run_gpgconf_test=$enableval) AM_CONDITIONAL(RUN_GPGCONF_TESTS, test "$run_gpgconf_test" = "yes") run_gpg_test="yes" AC_ARG_ENABLE(gpg-test, - AC_HELP_STRING([--disable-gpg-test], [disable GPG regression test]), + AS_HELP_STRING([--disable-gpg-test],[disable GPG regression test]), run_gpg_test=$enableval) AM_CONDITIONAL(RUN_GPG_TESTS, test "$run_gpg_test" = "yes") run_gpgsm_test="yes" AC_ARG_ENABLE(gpgsm-test, - AC_HELP_STRING([--disable-gpgsm-test], [disable GPGSM regression test]), + AS_HELP_STRING([--disable-gpgsm-test],[disable GPGSM regression test]), run_gpgsm_test=$enableval) AM_CONDITIONAL(RUN_GPGSM_TESTS, test "$run_gpgsm_test" = "yes") run_g13_test="yes" AC_ARG_ENABLE(g13-test, - AC_HELP_STRING([--disable-g13-test], [disable G13 regression test]), + AS_HELP_STRING([--disable-g13-test],[disable G13 regression test]), run_g13_test=$enableval) AM_CONDITIONAL(RUN_G13_TESTS, test "$run_g13_test" = "yes") @@ -750,7 +750,7 @@ use_descriptor_passing=yes AC_ARG_ENABLE(fd-passing, - AC_HELP_STRING([--disable-fd-passing], [do not use FD passing]), + AS_HELP_STRING([--disable-fd-passing],[do not use FD passing]), use_descriptor_passing=$enableval) if test "$supports_descriptor_passing" != "yes"; then @@ -782,7 +782,7 @@ # before an exec. This option allows to switch this optimization off. use_linux_getdents=yes AC_ARG_ENABLE(linux-getdents, - AC_HELP_STRING([--disable-linux-getdents], + AS_HELP_STRING([--disable-linux-getdents], [do not use SYS_getdents on Linux]), use_linux_getdents=$enableval) if test "$use_linux_getdents" = "yes"; then @@ -824,7 +824,7 @@ #define GPG_ERR_ENABLE_ERRNO_MACROS 1 #define CRIGHTBLURB "Copyright (C) 2000 Werner Koch\n" \ - "Copyright (C) 2001--2020 g10 Code GmbH\n" + "Copyright (C) 2001--2021 g10 Code GmbH\n" ]) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/gpgme-1.15.0/gpgme.spec new/gpgme-1.15.1/gpgme.spec --- old/gpgme-1.15.0/gpgme.spec 2020-11-12 10:30:05.000000000 +0100 +++ new/gpgme-1.15.1/gpgme.spec 2021-01-08 18:21:40.000000000 +0100 @@ -1,7 +1,7 @@ # This is a template. The dist target uses it to create the real file. Summary: GPGME - GnuPG Made Easy Name: gpgme -Version: 1.15.0 +Version: 1.15.1 Release: 1 URL: https://gnupg.org/gpgme.html Source: https://www.gnupg.org/ftp/gcrypt/gpgme/%{name}-%{version}.tar.gz diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/gpgme-1.15.0/lang/cl/gpgme.asd new/gpgme-1.15.1/lang/cl/gpgme.asd --- old/gpgme-1.15.0/lang/cl/gpgme.asd 2020-11-12 10:29:57.000000000 +0100 +++ new/gpgme-1.15.1/lang/cl/gpgme.asd 2021-01-08 18:21:32.000000000 +0100 @@ -27,7 +27,7 @@ (defsystem gpgme :description "GnuPG Made Easy." :author "g10 Code GmbH" - :version "1.15.0" + :version "1.15.1" :licence "GPL" :defsystem-depends-on ("cffi-grovel") :depends-on ("cffi" "gpg-error" "trivial-garbage") diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/gpgme-1.15.0/lang/cpp/src/key.cpp new/gpgme-1.15.1/lang/cpp/src/key.cpp --- old/gpgme-1.15.0/lang/cpp/src/key.cpp 2020-11-05 23:27:32.000000000 +0100 +++ new/gpgme-1.15.1/lang/cpp/src/key.cpp 2021-01-08 16:23:34.000000000 +0100 @@ -867,6 +867,12 @@ bool UserID::Signature::operator<(const Signature &other) { + // kept for binary compatibility + return static_cast<const UserID::Signature *>(this)->operator<(other); +} + +bool UserID::Signature::operator<(const Signature &other) const +{ // based on cmp_signodes() in g10/keylist.c // both signatures must belong to the same user ID diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/gpgme-1.15.0/lang/cpp/src/key.h new/gpgme-1.15.1/lang/cpp/src/key.h --- old/gpgme-1.15.0/lang/cpp/src/key.h 2020-11-05 23:27:32.000000000 +0100 +++ new/gpgme-1.15.1/lang/cpp/src/key.h 2021-01-08 16:23:34.000000000 +0100 @@ -468,7 +468,9 @@ } /*! Defines a canonical sort order for signatures of the same user ID. */ - bool operator<(const Signature &other); + bool operator<(const Signature &other) const; + + GPGMEPP_DEPRECATED bool operator<(const Signature &other); bool isNull() const { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/gpgme-1.15.0/lang/python/src/core.py new/gpgme-1.15.1/lang/python/src/core.py --- old/gpgme-1.15.0/lang/python/src/core.py 2020-11-05 23:27:32.000000000 +0100 +++ new/gpgme-1.15.1/lang/python/src/core.py 2021-01-08 16:23:34.000000000 +0100 @@ -637,7 +637,7 @@ data.seek(0, os.SEEK_SET) pk_result = data.read() except GPGMEError as e: - pk_result = e + raise e if len(pk_result) > 0: result = pk_result @@ -672,7 +672,7 @@ data.seek(0, os.SEEK_SET) pk_result = data.read() except GPGMEError as e: - pk_result = e + raise e if len(pk_result) > 0: result = pk_result @@ -713,7 +713,7 @@ data.seek(0, os.SEEK_SET) sk_result = data.read() except GPGMEError as e: - sk_result = e + raise e if len(sk_result) > 0: result = sk_result diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/gpgme-1.15.0/lang/qt/src/debug.cpp new/gpgme-1.15.1/lang/qt/src/debug.cpp --- old/gpgme-1.15.0/lang/qt/src/debug.cpp 2020-11-05 23:27:32.000000000 +0100 +++ new/gpgme-1.15.1/lang/qt/src/debug.cpp 2021-01-08 16:23:34.000000000 +0100 @@ -36,6 +36,7 @@ #endif #include "error.h" +#include "debug.h" #include <QDebug> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/gpgme-1.15.0/lang/qt/src/encryptjob.h new/gpgme-1.15.1/lang/qt/src/encryptjob.h --- old/gpgme-1.15.0/lang/qt/src/encryptjob.h 2017-07-12 14:35:02.000000000 +0200 +++ new/gpgme-1.15.1/lang/qt/src/encryptjob.h 2021-01-08 16:23:34.000000000 +0100 @@ -90,7 +90,7 @@ not be performed, but full validity assumed for all keys without further checks. */ - virtual QGPGME_DEPRECATED_EXPORT GpgME::Error start(const std::vector<GpgME::Key> &recipients, + virtual GpgME::Error start(const std::vector<GpgME::Key> &recipients, const QByteArray &plainText, bool alwaysTrust = false) = 0; /*! diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/gpgme-1.15.0/lang/qt/src/qgpgmesignkeyjob.cpp new/gpgme-1.15.1/lang/qt/src/qgpgmesignkeyjob.cpp --- old/gpgme-1.15.0/lang/qt/src/qgpgmesignkeyjob.cpp 2020-07-15 12:14:17.000000000 +0200 +++ new/gpgme-1.15.1/lang/qt/src/qgpgmesignkeyjob.cpp 2021-01-08 16:23:34.000000000 +0100 @@ -83,7 +83,7 @@ skei->setDupeOk(true); } - if (!remark.isNull()) { + if (!remark.isEmpty()) { ctx->addSignatureNotation("r...@gnupg.org", remark.toUtf8().constData()); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/gpgme-1.15.0/lang/qt/src/signjob.h new/gpgme-1.15.1/lang/qt/src/signjob.h --- old/gpgme-1.15.0/lang/qt/src/signjob.h 2017-07-12 14:35:02.000000000 +0200 +++ new/gpgme-1.15.1/lang/qt/src/signjob.h 2021-01-08 16:23:34.000000000 +0100 @@ -85,7 +85,7 @@ Starts the signing operation. \a signers is the list of keys to sign \a plainText with. Empty (null) keys are ignored. */ - virtual QGPGME_DEPRECATED_EXPORT GpgME::Error start(const std::vector<GpgME::Key> &signers, + virtual GpgME::Error start(const std::vector<GpgME::Key> &signers, const QByteArray &plainText, GpgME::SignatureMode mode) = 0; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/gpgme-1.15.0/m4/gpg-error.m4 new/gpgme-1.15.1/m4/gpg-error.m4 --- old/gpgme-1.15.0/m4/gpg-error.m4 2018-12-03 10:37:25.000000000 +0100 +++ new/gpgme-1.15.1/m4/gpg-error.m4 2021-01-08 16:23:34.000000000 +0100 @@ -1,5 +1,5 @@ # gpg-error.m4 - autoconf macro to detect libgpg-error. -# Copyright (C) 2002, 2003, 2004, 2011, 2014, 2018 g10 Code GmbH +# Copyright (C) 2002, 2003, 2004, 2011, 2014, 2018, 2020 g10 Code GmbH # # This file is free software; as a special exception the author gives # unlimited permission to copy and/or distribute it, with or without @@ -9,7 +9,7 @@ # WITHOUT ANY WARRANTY, to the extent permitted by law; without even the # implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. # -# Last-changed: 2018-11-02 +# Last-changed: 2020-11-17 dnl AM_PATH_GPG_ERROR([MINIMUM-VERSION, @@ -31,7 +31,7 @@ dnl since that is consistent with how our three siblings use the directory/ dnl package name in --with-$dir_name-prefix=PFX. AC_ARG_WITH(libgpg-error-prefix, - AC_HELP_STRING([--with-libgpg-error-prefix=PFX], + AS_HELP_STRING([--with-libgpg-error-prefix=PFX], [prefix where GPG Error is installed (optional)]), [gpg_error_config_prefix="$withval"]) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/gpgme-1.15.0/m4/libassuan.m4 new/gpgme-1.15.1/m4/libassuan.m4 --- old/gpgme-1.15.0/m4/libassuan.m4 2018-12-03 10:37:25.000000000 +0100 +++ new/gpgme-1.15.1/m4/libassuan.m4 2021-01-08 16:23:34.000000000 +0100 @@ -9,6 +9,7 @@ dnl WITHOUT ANY WARRANTY, to the extent permitted by law; without even the dnl implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. dnl SPDX-License-Identifier: FSFULLR +# Last-changed: 2020-11-17 dnl dnl Common code used for libassuan detection [internal] @@ -17,7 +18,7 @@ AC_DEFUN([_AM_PATH_LIBASSUAN_COMMON], [ AC_REQUIRE([AC_CANONICAL_HOST]) AC_ARG_WITH(libassuan-prefix, - AC_HELP_STRING([--with-libassuan-prefix=PFX], + AS_HELP_STRING([--with-libassuan-prefix=PFX], [prefix where LIBASSUAN is installed (optional)]), libassuan_config_prefix="$withval", libassuan_config_prefix="") if test x$libassuan_config_prefix != x ; then diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/gpgme-1.15.0/m4/libtool.m4 new/gpgme-1.15.1/m4/libtool.m4 --- old/gpgme-1.15.0/m4/libtool.m4 2017-03-28 16:49:24.000000000 +0200 +++ new/gpgme-1.15.1/m4/libtool.m4 2021-01-08 16:23:34.000000000 +0100 @@ -1326,7 +1326,10 @@ x86_64-*linux*) LD="${LD-ld} -m elf_i386" ;; - ppc64-*linux*|powerpc64-*linux*) + powerpc64le-*) + LD="${LD-ld} -m elf32lppclinux" + ;; + powerpc64-*) LD="${LD-ld} -m elf32ppclinux" ;; s390x-*linux*) @@ -1345,7 +1348,10 @@ x86_64-*linux*) LD="${LD-ld} -m elf_x86_64" ;; - ppc*-*linux*|powerpc*-*linux*) + powerpcle-*) + LD="${LD-ld} -m elf64lppc" + ;; + powerpc-*) LD="${LD-ld} -m elf64ppc" ;; s390*-*linux*|s390*-*tpf*) @@ -2638,6 +2644,26 @@ dynamic_linker=no ;; +linux*android*) + version_type=none # Android doesn't support versioned libraries. + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext' + soname_spec='$libname$release$shared_ext' + finish_cmds= + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + hardcode_into_libs=yes + + dynamic_linker='Android linker' + # Don't embed -rpath directories since the linker doesn't support them. + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + ;; + # This must be glibc/ELF. linux* | k*bsd*-gnu | kopensolaris*-gnu) version_type=linux # correct to gnu/linux during the next big refactor @@ -7448,7 +7474,7 @@ # to write the compiler configuration to `libtool'. m4_defun([_LT_LANG_GCJ_CONFIG], [AC_REQUIRE([LT_PROG_GCJ])dnl -AC_LANG_SAVE +AC_LANG_PUSH([Java]) # Source file extension for Java test sources. ac_ext=java @@ -7504,7 +7530,7 @@ _LT_CONFIG($1) fi -AC_LANG_RESTORE +AC_LANG_POP GCC=$lt_save_GCC CC=$lt_save_CC @@ -7519,7 +7545,7 @@ # to write the compiler configuration to `libtool'. m4_defun([_LT_LANG_GO_CONFIG], [AC_REQUIRE([LT_PROG_GO])dnl -AC_LANG_SAVE +AC_LANG_PUSH([Go]) # Source file extension for Go test sources. ac_ext=go @@ -7575,7 +7601,7 @@ _LT_CONFIG($1) fi -AC_LANG_RESTORE +AC_LANG_POP GCC=$lt_save_GCC CC=$lt_save_CC @@ -7590,7 +7616,9 @@ # to write the compiler configuration to `libtool'. m4_defun([_LT_LANG_RC_CONFIG], [AC_REQUIRE([LT_PROG_RC])dnl -AC_LANG_SAVE + +dnl Here, something like AC_LANG_PUSH([RC]) is expected. +dnl But Resource Compiler is not supported as a language by autoconf # Source file extension for RC test sources. ac_ext=rc @@ -7629,8 +7657,10 @@ _LT_CONFIG($1) fi +dnl Here, AC_LANG_POP is expected. GCC=$lt_save_GCC -AC_LANG_RESTORE +dnl Back to C +AC_LANG([C]) CC=$lt_save_CC CFLAGS=$lt_save_CFLAGS ])# _LT_LANG_RC_CONFIG diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/gpgme-1.15.0/src/engine-gpg.c new/gpgme-1.15.1/src/engine-gpg.c --- old/gpgme-1.15.0/src/engine-gpg.c 2020-11-05 23:27:32.000000000 +0100 +++ new/gpgme-1.15.1/src/engine-gpg.c 2021-01-08 16:23:34.000000000 +0100 @@ -3017,6 +3017,12 @@ err = add_arg (gpg, "--with-keygrip"); } + if (!err && (mode & GPGME_KEYLIST_MODE_SIGS) + && have_gpg_version (gpg, "2.0.10")) + { + err = add_arg (gpg, "--with-sig-check"); + } + if (!err && (mode & GPGME_KEYLIST_MODE_SIGS) && (mode & GPGME_KEYLIST_MODE_SIG_NOTATIONS)) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/gpgme-1.15.0/src/export.c new/gpgme-1.15.1/src/export.c --- old/gpgme-1.15.0/src/export.c 2020-11-12 09:59:47.000000000 +0100 +++ new/gpgme-1.15.1/src/export.c 2021-01-08 16:23:34.000000000 +0100 @@ -88,6 +88,10 @@ op_data_t opd; const char *loc; + err = _gpgme_passphrase_status_handler (priv, code, args); + if (err) + return err; + err = _gpgme_op_data_lookup (ctx, OPDATA_EXPORT, &hook, -1, NULL); opd = hook; if (err) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/gpgme-1.15.0/src/gpgme.m4 new/gpgme-1.15.1/src/gpgme.m4 --- old/gpgme-1.15.0/src/gpgme.m4 2018-12-03 10:37:25.000000000 +0100 +++ new/gpgme-1.15.1/src/gpgme.m4 2021-01-08 16:23:34.000000000 +0100 @@ -9,12 +9,12 @@ # WITHOUT ANY WARRANTY, to the extent permitted by law; without even the # implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. # -# Last-changed: 2018-11-12 +# Last-changed: 2020-11-20 AC_DEFUN([_AM_PATH_GPGME_CONFIG], [ AC_ARG_WITH(gpgme-prefix, - AC_HELP_STRING([--with-gpgme-prefix=PFX], + AS_HELP_STRING([--with-gpgme-prefix=PFX], [prefix where GPGME is installed (optional)]), gpgme_config_prefix="$withval", gpgme_config_prefix="") if test x"${GPGME_CONFIG}" = x ; then diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/gpgme-1.15.0/src/versioninfo.rc.in new/gpgme-1.15.1/src/versioninfo.rc.in --- old/gpgme-1.15.0/src/versioninfo.rc.in 2020-11-12 10:19:16.000000000 +0100 +++ new/gpgme-1.15.1/src/versioninfo.rc.in 2021-01-08 18:08:07.000000000 +0100 @@ -39,7 +39,7 @@ VALUE "FileDescription", "GPGME - GnuPG Made Easy\0" VALUE "FileVersion", "@LIBGPGME_LT_CURRENT@.@LIBGPGME_LT_AGE@.@LIBGPGME_LT_REVISION@.@BUILD_REVISION@\0" VALUE "InternalName", "gpgme\0" - VALUE "LegalCopyright", "Copyright ? 2001-2020 g10 Code GmbH\0" + VALUE "LegalCopyright", "Copyright ? 2001-2021 g10 Code GmbH\0" VALUE "LegalTrademarks", "\0" VALUE "OriginalFilename", "gpgme.dll\0" VALUE "PrivateBuild", "\0" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/gpgme-1.15.0/tests/gpg/Makefile.am new/gpgme-1.15.1/tests/gpg/Makefile.am --- old/gpgme-1.15.0/tests/gpg/Makefile.am 2020-07-15 15:57:11.000000000 +0200 +++ new/gpgme-1.15.1/tests/gpg/Makefile.am 2021-01-08 16:23:34.000000000 +0100 @@ -38,7 +38,7 @@ c_tests = \ t-encrypt t-encrypt-sym t-encrypt-sign t-sign t-signers \ t-decrypt t-verify t-decrypt-verify t-sig-notation t-export \ - t-import t-edit t-keylist t-keylist-sig t-wait \ + t-import t-edit t-keylist t-keylist-sig t-keylist-secret-sig t-wait \ t-encrypt-large t-file-name t-gpgconf t-encrypt-mixed \ $(tests_unix) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/gpgme-1.15.0/tests/gpg/t-keylist-secret-sig.c new/gpgme-1.15.1/tests/gpg/t-keylist-secret-sig.c --- old/gpgme-1.15.0/tests/gpg/t-keylist-secret-sig.c 1970-01-01 01:00:00.000000000 +0100 +++ new/gpgme-1.15.1/tests/gpg/t-keylist-secret-sig.c 2021-01-08 16:23:34.000000000 +0100 @@ -0,0 +1,628 @@ +/* t-keylist-secret-sig.c - Regression test. + * Copyright (C) 2000 Werner Koch (dd9jn) + * Copyright (C) 2001, 2003, 2004 g10 Code GmbH + * + * This file is part of GPGME. + * + * GPGME is free software; you can redistribute it and/or modify it + * under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation; either version 2.1 of + * the License, or (at your option) any later version. + * + * GPGME 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this program; if not, see <https://gnu.org/licenses/>. + * SPDX-License-Identifier: LGPL-2.1-or-later + */ + +/* We need to include config.h so that we know whether we are building + with large file system (LFS) support. */ +#ifdef HAVE_CONFIG_H +#include <config.h> +#endif + +#include <stdlib.h> +#include <stdio.h> +#include <string.h> + +#include <gpgme.h> + +#include "t-support.h" + + +struct +{ + const char *fpr; + const char *sec_keyid; + struct + { + const char *name; + const char *comment; + const char *email; + struct + { + gpgme_pubkey_algo_t algo; + const char *keyid; + const char *name; + const char *comment; + const char *email; + unsigned int sig_class; + int exportable; + } sig; + } uid[3]; +} +keys[] = + { + { "A0FF4590BB6122EDEF6E3C542D727CC768697734", "6AE6D7EE46A871F8", + { { "Alfa Test", "demo key", "a...@example.net", + { GPGME_PK_DSA, "2D727CC768697734", + "Alfa Test", "demo key", "a...@example.net", 19, 1 } }, + { "Alpha Test", "demo key", "al...@example.net", + { GPGME_PK_DSA, "2D727CC768697734", + "Alfa Test", "demo key", "a...@example.net", 19, 1 } }, + { "Alice", "demo key", NULL, + { GPGME_PK_DSA, "2D727CC768697734", + "Alfa Test", "demo key", "a...@example.net", 19, 1 } } } }, + { NULL } + }; + + +int +main (void) +{ + gpgme_error_t err; + gpgme_ctx_t ctx; + gpgme_key_t key; + gpgme_keylist_result_t result; + int mode; + int i = 0; + + init_gpgme (GPGME_PROTOCOL_OpenPGP); + + err = gpgme_new (&ctx); + fail_if_err (err); + + mode = gpgme_get_keylist_mode (ctx); + mode |= GPGME_KEYLIST_MODE_SIGS; + err = gpgme_set_keylist_mode (ctx, mode); + fail_if_err (err); + + err = gpgme_op_keylist_start (ctx, "Alpha", 1); + fail_if_err (err); + + while (!(err = gpgme_op_keylist_next (ctx, &key))) + { + if (!keys[i].fpr) + { + fprintf (stderr, "More keys returned than expected\n"); + exit (1); + } + + /* Global key flags. */ + if (key->revoked) + { + fprintf (stderr, "Key unexpectedly revoked\n"); + exit (1); + } + if (key->expired) + { + fprintf (stderr, "Key unexpectedly expired\n"); + exit (1); + } + if (key->disabled) + { + fprintf (stderr, "Key unexpectedly disabled\n"); + exit (1); + } + if (key->invalid) + { + fprintf (stderr, "Key unexpectedly invalid\n"); + exit (1); + } + if (!key->can_encrypt) + { + fprintf (stderr, "Key unexpectedly unusable for encryption\n"); + exit (1); + } + if (!key->can_sign) + { + fprintf (stderr, "Key unexpectedly unusable for signing\n"); + exit (1); + } + if (!key->can_certify) + { + fprintf (stderr, "Key unexpectedly unusable for certifications\n"); + exit (1); + } + if (!key->secret) + { + fprintf (stderr, "Key unexpectedly not secret\n"); + exit (1); + } + if (key->protocol != GPGME_PROTOCOL_OpenPGP) + { + fprintf (stderr, "Key has unexpected protocol: %s\n", + gpgme_get_protocol_name (key->protocol)); + exit (1); + } + if (key->issuer_serial) + { + fprintf (stderr, "Key unexpectedly carries issuer serial: %s\n", + key->issuer_serial); + exit (1); + } + if (key->issuer_name) + { + fprintf (stderr, "Key unexpectedly carries issuer name: %s\n", + key->issuer_name); + exit (1); + } + if (key->chain_id) + { + fprintf (stderr, "Key unexpectedly carries chain ID: %s\n", + key->chain_id); + exit (1); + } + if (key->owner_trust != GPGME_VALIDITY_UNKNOWN) + { + fprintf (stderr, "Key has unexpected owner trust: %i\n", + key->owner_trust); + exit (1); + } + if (!key->subkeys || !key->subkeys->next || key->subkeys->next->next) + { + fprintf (stderr, "Key has unexpected number of subkeys\n"); + exit (1); + } + + /* Primary key. */ + if (key->subkeys->revoked) + { + fprintf (stderr, "Primary key unexpectedly revoked\n"); + exit (1); + } + if (key->subkeys->expired) + { + fprintf (stderr, "Primary key unexpectedly expired\n"); + exit (1); + } + if (key->subkeys->disabled) + { + fprintf (stderr, "Primary key unexpectedly disabled\n"); + exit (1); + } + if (key->subkeys->invalid) + { + fprintf (stderr, "Primary key unexpectedly invalid\n"); + exit (1); + } + if (key->subkeys->can_encrypt) + { + fprintf (stderr, "Primary key unexpectedly usable for encryption\n"); + exit (1); + } + if (!key->subkeys->can_sign) + { + fprintf (stderr, "Primary key unexpectedly unusable for signing\n"); + exit (1); + } + if (!key->subkeys->can_certify) + { + fprintf (stderr, "Primary key unexpectedly unusable for certifications\n"); + exit (1); + } + if (!key->subkeys->secret) + { + fprintf (stderr, "Primary key unexpectedly not secret\n"); + exit (1); + } + if (key->subkeys->pubkey_algo != GPGME_PK_DSA) + { + fprintf (stderr, "Primary key has unexpected public key algo: %s\n", + gpgme_pubkey_algo_name (key->subkeys->pubkey_algo)); + exit (1); + } + if (key->subkeys->length != 1024) + { + fprintf (stderr, "Primary key has unexpected length: %i\n", + key->subkeys->length); + exit (1); + } + if (strcmp (key->subkeys->keyid, &keys[i].fpr[40 - 16])) + { + fprintf (stderr, "Primary key has unexpected key ID: %s\n", + key->subkeys->keyid); + exit (1); + } + if (strcmp (key->subkeys->fpr, keys[i].fpr)) + { + fprintf (stderr, "Primary key has unexpected fingerprint: %s\n", + key->subkeys->fpr); + exit (1); + } + if (key->subkeys->expires) + { + fprintf (stderr, "Primary key unexpectedly expires: %lu\n", + key->subkeys->expires); + exit (1); + } + + /* Secondary key. */ + if (key->subkeys->next->revoked) + { + fprintf (stderr, "Secondary key unexpectedly revoked\n"); + exit (1); + } + if (key->subkeys->next->expired) + { + fprintf (stderr, "Secondary key unexpectedly expired\n"); + exit (1); + } + if (key->subkeys->next->disabled) + { + fprintf (stderr, "Secondary key unexpectedly disabled\n"); + exit (1); + } + if (key->subkeys->next->invalid) + { + fprintf (stderr, "Secondary key unexpectedly invalid\n"); + exit (1); + } + if (!key->subkeys->next->can_encrypt) + { + fprintf (stderr, "Secondary key unexpectedly unusable for encryption\n"); + exit (1); + } + if (key->subkeys->next->can_sign) + { + fprintf (stderr, "Secondary key unexpectedly usable for signing\n"); + exit (1); + } + if (key->subkeys->next->can_certify) + { + fprintf (stderr, "Secondary key unexpectedly usable for certifications\n"); + exit (1); + } + if (!key->subkeys->next->secret) + { + fprintf (stderr, "Secondary key unexpectedly not secret\n"); + exit (1); + } + if (key->subkeys->next->pubkey_algo != GPGME_PK_ELG_E) + { + fprintf (stderr, "Secondary key has unexpected public key algo: %s\n", + gpgme_pubkey_algo_name (key->subkeys->next->pubkey_algo)); + exit (1); + } + if (key->subkeys->next->length != 1024) + { + fprintf (stderr, "Secondary key has unexpected length: %i\n", + key->subkeys->next->length); + exit (1); + } + if (strcmp (key->subkeys->next->keyid, keys[i].sec_keyid)) + { + fprintf (stderr, "Secondary key has unexpected key ID: %s\n", + key->subkeys->next->keyid); + exit (1); + } + if (!key->subkeys->next->fpr) + { + fprintf (stderr, "Secondary key has unexpectedly no fingerprint\n"); + exit (1); + } + if (key->subkeys->next->expires) + { + fprintf (stderr, "Secondary key unexpectedly expires: %lu\n", + key->subkeys->next->expires); + exit (1); + } + + /* FIXME: The below test will crash if we want to check for a + name, comment or email that doesn't exist in the key's user + IDs. */ + if (!((!keys[i].uid[0].name && !key->uids) + || (keys[i].uid[0].name && !keys[i].uid[1].name + && key->uids && !key->uids->next) + || (keys[i].uid[0].name && keys[i].uid[1].name + && !keys[i].uid[2].name + && key->uids && key->uids->next && !key->uids->next->next) + || (keys[i].uid[0].name && keys[i].uid[1].name + && keys[i].uid[2].name + && key->uids && key->uids->next && key->uids->next->next + && !key->uids->next->next->next))) + { + fprintf (stderr, "Key has unexpected number of user IDs\n"); + exit (1); + } + if (key->uids && key->uids->revoked) + { + fprintf (stderr, "First user ID unexpectedly revoked\n"); + exit (1); + } + if (key->uids && key->uids->invalid) + { + fprintf (stderr, "First user ID unexpectedly invalid\n"); + exit (1); + } + if (key->uids && key->uids->validity != GPGME_VALIDITY_UNKNOWN) + { + fprintf (stderr, "First user ID has unexpectedly validity: %i\n", + key->uids->validity); + exit (1); + } + if (keys[i].uid[0].name + && strcmp (keys[i].uid[0].name, key->uids->name)) + { + fprintf (stderr, "Unexpected name in first user ID: %s\n", + key->uids->name); + exit (1); + } + if (keys[i].uid[0].comment + && strcmp (keys[i].uid[0].comment, key->uids->comment)) + { + fprintf (stderr, "Unexpected comment in first user ID: %s\n", + key->uids->comment); + exit (1); + } + if (keys[i].uid[0].email + && strcmp (keys[i].uid[0].email, key->uids->email)) + { + fprintf (stderr, "Unexpected email in first user ID: %s\n", + key->uids->email); + exit (1); + } + if (key->uids && (!key->uids->signatures || key->uids->signatures->next)) + { + fprintf (stderr, "First user ID unexpected number of signatures\n"); + exit (1); + } + if (keys[i].uid[0].sig.algo != key->uids->signatures->pubkey_algo) + { + fprintf (stderr, "Unexpected algorithm in first user ID sig: %s\n", + gpgme_pubkey_algo_name (key->uids->signatures->pubkey_algo)); + exit (1); + } + if (strcmp (keys[i].uid[0].sig.keyid, key->uids->signatures->keyid)) + { + fprintf (stderr, "Unexpected key ID in first user ID sig: %s\n", + key->uids->signatures->keyid); + exit (1); + } + if (strcmp (keys[i].uid[0].sig.name, key->uids->signatures->name)) + { + fprintf (stderr, "Unexpected name in first user ID sig: %s\n", + key->uids->signatures->name); + exit (1); + } + if (strcmp (keys[i].uid[0].sig.comment, key->uids->signatures->comment)) + { + fprintf (stderr, "Unexpected comment in first user ID sig: %s\n", + key->uids->signatures->comment); + exit (1); + } + if (strcmp (keys[i].uid[0].sig.email, key->uids->signatures->email)) + { + fprintf (stderr, "Unexpected email in first user ID sig: %s\n", + key->uids->signatures->email); + exit (1); + } + if (keys[i].uid[0].sig.sig_class != key->uids->signatures->sig_class) + { + fprintf (stderr, "Unexpected class in first user ID sig: %i\n", + key->uids->signatures->sig_class); + exit (1); + } + if (keys[i].uid[0].sig.exportable != key->uids->signatures->exportable) + { + fprintf (stderr, "Unexpected exportable stat in first user ID sig: %i\n", + key->uids->signatures->exportable); + exit (1); + } + + if (key->uids && key->uids->next && key->uids->next->revoked) + { + fprintf (stderr, "Second user ID unexpectedly revoked\n"); + exit (1); + } + if (key->uids && key->uids->next && key->uids->next->invalid) + { + fprintf (stderr, "Second user ID unexpectedly invalid\n"); + exit (1); + } + if (key->uids && key->uids->next + && key->uids->next->validity != GPGME_VALIDITY_UNKNOWN) + { + fprintf (stderr, "Second user ID has unexpectedly validity: %i\n", + key->uids->next->validity); + exit (1); + } + if (keys[i].uid[1].name + && strcmp (keys[i].uid[1].name, key->uids->next->name)) + { + fprintf (stderr, "Unexpected name in second user ID: %s\n", + key->uids->next->name); + exit (1); + } + if (keys[i].uid[1].comment + && strcmp (keys[i].uid[1].comment, key->uids->next->comment)) + { + fprintf (stderr, "Unexpected comment in second user ID: %s\n", + key->uids->next->comment); + exit (1); + } + if (keys[i].uid[1].email + && strcmp (keys[i].uid[1].email, key->uids->next->email)) + { + fprintf (stderr, "Unexpected email in second user ID: %s\n", + key->uids->next->email); + exit (1); + } + /* Note: There is a bug in gpg 1.3.4 which duplicates a + signature after importing the secret key. Thus we disable + the second part of the check. */ + if (key->uids && (!key->uids->next->signatures /*|| key->uids->next->signatures->next*/)) + { + fprintf (stderr, "Second user ID unexpected number of signatures\n"); + exit (1); + } + if (keys[i].uid[1].sig.algo != key->uids->next->signatures->pubkey_algo) + { + fprintf (stderr, "Unexpected algorithm in second user ID sig: %s\n", + gpgme_pubkey_algo_name (key->uids->next->signatures->pubkey_algo)); + exit (1); + } + if (strcmp (keys[i].uid[1].sig.keyid, key->uids->next->signatures->keyid)) + { + fprintf (stderr, "Unexpected key ID in second user ID sig: %s\n", + key->uids->next->signatures->keyid); + exit (1); + } + if (strcmp (keys[i].uid[1].sig.name, key->uids->next->signatures->name)) + { + fprintf (stderr, "Unexpected name in second user ID sig: %s\n", + key->uids->next->signatures->name); + exit (1); + } + if (strcmp (keys[i].uid[1].sig.comment, key->uids->next->signatures->comment)) + { + fprintf (stderr, "Unexpected comment in second user ID sig: %s\n", + key->uids->next->signatures->comment); + exit (1); + } + if (strcmp (keys[i].uid[1].sig.email, key->uids->next->signatures->email)) + { + fprintf (stderr, "Unexpected email in second user ID sig: %s\n", + key->uids->next->signatures->email); + exit (1); + } + if (keys[i].uid[1].sig.sig_class != key->uids->next->signatures->sig_class) + { + fprintf (stderr, "Unexpected class in second user ID sig: %i\n", + key->uids->next->signatures->sig_class); + exit (1); + } + if (keys[i].uid[1].sig.exportable != key->uids->next->signatures->exportable) + { + fprintf (stderr, "Unexpected exportable stat in second user ID sig: %i\n", + key->uids->next->signatures->exportable); + exit (1); + } + + if (key->uids && key->uids->next && key->uids->next->next + && key->uids->next->next->revoked) + { + fprintf (stderr, "Third user ID unexpectedly revoked\n"); + exit (1); + } + if (key->uids && key->uids->next && key->uids->next->next + && key->uids->next->next->invalid) + { + fprintf (stderr, "Third user ID unexpectedly invalid\n"); + exit (1); + } + if (key->uids && key->uids->next && key->uids->next->next + && key->uids->next->next->validity != GPGME_VALIDITY_UNKNOWN) + { + fprintf (stderr, "Third user ID has unexpectedly validity: %i\n", + key->uids->next->next->validity); + exit (1); + } + if (keys[i].uid[2].name + && strcmp (keys[i].uid[2].name, key->uids->next->next->name)) + { + fprintf (stderr, "Unexpected name in third user ID: %s\n", + key->uids->next->next->name); + exit (1); + } + if (keys[i].uid[2].comment + && strcmp (keys[i].uid[2].comment, key->uids->next->next->comment)) + { + fprintf (stderr, "Unexpected comment in third user ID: %s\n", + key->uids->next->next->comment); + exit (1); + } + if (keys[i].uid[2].email + && strcmp (keys[i].uid[2].email, key->uids->next->next->email)) + { + fprintf (stderr, "Unexpected email in third user ID: %s\n", + key->uids->next->next->email); + exit (1); + } + if (key->uids && (!key->uids->next->next->signatures + || key->uids->next->next->signatures->next)) + { + fprintf (stderr, "Third user ID unexpected number of signatures\n"); + exit (1); + } + if (keys[i].uid[2].sig.algo != key->uids->next->next->signatures->pubkey_algo) + { + fprintf (stderr, "Unexpected algorithm in third user ID sig: %s\n", + gpgme_pubkey_algo_name (key->uids->next->next->signatures->pubkey_algo)); + exit (1); + } + if (strcmp (keys[i].uid[2].sig.keyid, key->uids->next->next->signatures->keyid)) + { + fprintf (stderr, "Unexpected key ID in third user ID sig: %s\n", + key->uids->next->next->signatures->keyid); + exit (1); + } + if (strcmp (keys[i].uid[2].sig.name, key->uids->next->next->signatures->name)) + { + fprintf (stderr, "Unexpected name in third user ID sig: %s\n", + key->uids->next->next->signatures->name); + exit (1); + } + if (strcmp (keys[i].uid[2].sig.comment, key->uids->next->next->signatures->comment)) + { + fprintf (stderr, "Unexpected comment in third user ID sig: %s\n", + key->uids->next->next->signatures->comment); + exit (1); + } + if (strcmp (keys[i].uid[2].sig.email, key->uids->next->next->signatures->email)) + { + fprintf (stderr, "Unexpected email in third user ID sig: %s\n", + key->uids->next->next->signatures->email); + exit (1); + } + if (keys[i].uid[2].sig.sig_class != key->uids->next->next->signatures->sig_class) + { + fprintf (stderr, "Unexpected class in third user ID sig: %i\n", + key->uids->next->next->signatures->sig_class); + exit (1); + } + if (keys[i].uid[2].sig.exportable != key->uids->next->next->signatures->exportable) + { + fprintf (stderr, "Unexpected exportable stat in third user ID sig: %i\n", + key->uids->next->next->signatures->exportable); + exit (1); + } + + gpgme_key_unref (key); + i++; + } + if (gpgme_err_code (err) != GPG_ERR_EOF) + fail_if_err (err); + err = gpgme_op_keylist_end (ctx); + fail_if_err (err); + + result = gpgme_op_keylist_result (ctx); + if (result->truncated) + { + fprintf (stderr, "Key listing unexpectedly truncated\n"); + exit (1); + } + + if (keys[i].fpr) + { + fprintf (stderr, "Less keys returned than expected\n"); + exit (1); + } + + gpgme_release (ctx); + return 0; +}