2025-09-23  Werner Koch  <wk@gnupg.org>

	Release 2.0.1.
	+ commit e4adebe020b07bc47e583817576ce98ca93e9711


2025-08-29  NIIBE Yutaka  <gniibe@fsij.org>

	gpgsm: Extend gpgsm_assuan_simple_command to consule diag output.
	+ commit cff9df67d34fa21fc8f3ba47300e1671c4526629
	* src/engine-gpgsm.c (gpgsm_assuan_simple_command): Take care about
	diag output.

	gpgsm: Introduce two phase interactions to consume diag output.
	+ commit 52bde50b879c2b9318c87eb9f377bed6557366e2
	* src/engine-gpgsm.c (prepare): Move the first part from...
	(start): ... here.
	(gpgsm_decrypt, gpgsm_delete, gpgsm_encrypt)
	(gpgsm_export, gpgsm_export_ext, gpgsm_genkey)
	(gpgsm_import, gpgsm_keylist, gpgsm_keylist_ext)
	(gpgsm_sign, gpgsm_verify, gpgsm_getauditlog)
	(gpgsm_passwd): Follow the change.

2025-07-18  Werner Koch  <wk@gnupg.org>

	Make it easier to maintain gpgme.h by using forward declarations.
	+ commit 6a1f72b4702488f5ee4e14ef308876349ac8a005
	* src/gpgme.h.in: Use forward declarations for the key objects.

2025-07-16  Werner Koch  <wk@gnupg.org>

	Rename an internal function for clarity.
	+ commit 1821ebaa333dfadf936b8fc38dd8483abee7aab3
	* src/key.c (_gpgme_key_add_sig): Rename to ...
	(_gpgme_key_add_uid_sig): this.

2025-07-15  Werner Koch  <wk@gnupg.org>

	gnupg-manage-keys: Implement a new tool.
	+ commit 9e3266ccbbdf6ab9b37ec4e0c5342630dc0ffa82
	* tools/gnupg-key-manage.c: new.
	* tools/Makefile.am: New.
	* configure.ac: Add Makefile.
	* Makefile.am (SUBDIRS): Add tools directory.

2025-07-05  Collin Funk via Gnupg-devel  <gnupg-devel@gnupg.org>

	Fix an uninitialized variable.
	+ commit 6e37569847d7948c63c14dd67c42993eb21d6018
	* src/engine-gpg.c (gpg_getdirect): Initialize ERR to zero to satisfy
	the loop condition.

2025-07-03  Collin Funk via Gnupg-devel  <gnupg-devel@gnupg.org>

	Remove duplicate character passed to strchr.
	+ commit 74b725457432173865299c046adc4b42d263ecac
	* src/keylist.c (parse_sec_field15): Remove duplicate '0' character.

2025-06-23  NIIBE Yutaka  <gniibe@fsij.org>

	Use sysconf as a fallback mechanism in the initialization.
	+ commit 8caa7cc517ebf61c5e47c9b571169740a9301acb
	* src/posix-io.c (max_fds_fallback): New.
	[_SC_OPEN_MAX] (_gpgme_io_subsystem_init): Set max_fds_fallback.
	(get_max_fds): Use max_fds_fallback.

	Fix debug output of posix-io.c.
	+ commit 075e5be9fbee6022e640ffd759b2d500d29bf5cd
	* src/posix-io.c (_gpgme_io_select_poll): Emit the file descriptor
	information just like _gpgme_io_select_select.

2025-06-20  NIIBE Yutaka  <gniibe@fsij.org>

	posix: Clean up get_max_fds implementation.
	+ commit e8e5434cc4f5cc3c322659792cc1850a5c5b26b8
	* src/posix-io.c (get_max_fds): Return type is int.
	Ifdef-out TRACE.
	Remove call to sysconf.
	Use long for R and POS.
	Use aligned buffer for struct linux_dirent64.

2025-06-03  Werner Koch  <wk@gnupg.org>

	Release 2.0.0.
	+ commit e17ba578861905857da0a514b4fc9b88a57f7346


2025-05-24  Werner Koch  <wk@gnupg.org>

	Fix an include guard.
	+ commit e763305ff1ce2aeaef1087f543ceb473bc3cb8d2
	* src/json-common.h (GPGME_JSON_COMMON_H): Fix guard.

2025-05-23  Werner Koch  <wk@gnupg.org>

	json: Fix minor memory leak.
	+ commit 66de35a9b1170815e51005996441318bd9574e68
	* src/json-core.c (json_core_process_request): Fix leak and worng
	formatting in interactive mode in case of an error.

	Refactor gpgme-json for future re-use.
	+ commit d7267db472a4e4f65c8139f68d9d976c64b79636
	* src/gpgme-json.c: Factor large chunks of code out to ...
	* src/json-core.c: new file and ...
	* src/json-util.c: new file and ...
	* src/json-common.h: new file.
	* src/Makefile.am (gpgme_json_SOURCES): Add new files.

2025-05-14  Ingo Klöcker  <dev@ingo-kloecker.de>

	Treat empty algorithm the same way as unset algorithm.
	+ commit 15ae7da74bc403d19df8d3ca3c0176b7dac98e18
	* src/engine-gpg.c (gpg_add_algo_usage_expire): Add "default" as
	algorithm argument if algo is NULL or an empty string.

2025-05-13  Ingo Klöcker  <dev@ingo-kloecker.de>

	Add algorithm, usage and expire also if only the group flag is set.
	+ commit 8f08ca0e382085f9caba8ff969aa1ce66b6a84c8
	* src/engine-gpg.c (gpg_add_algo_usage_expire): Check flags for
	GPGME_CREATE_GROUP flag.

2025-05-12  Werner Koch  <wk@gnupg.org>

	Add GPGME_CREATE_GROUP flag for gpgme_op_createkey and _createsubkey.
	+ commit 905bd760a99a455af6717b66311fc2197dea1055
	* src/gpgme.h.in (GPGME_CREATE_GROUP): New.
	* src/engine-gpg.c (gpg_add_algo_usage_expire): Pass to engine.
	* tests/run-genkey.c (parse_usage_string): Support here too.

2025-05-05  Werner Koch  <wk@gnupg.org>

	Change timestamp fields from signed to unsigned long.
	+ commit f2d40473b522e348d96a70c089d2191d0b978098
	* src/gpgme.h.in (struct _gpgme_subkey): Chnage timestamp and expires.
	(struct _gpgme_key_sig): Ditto.
	(struct _gpgme_new_signature): Ditto.

	Allow signing using an exactly specified subkey.
	+ commit bfd320abfeaf0c7a16af3057279c77a45bfa961a
	* src/engine-gpg.c (append_args_from_signers): Detect exactly
	specified keys and apped the '!' suffix.

	Mark the subkey used to find a key.
	+ commit 87d6da1188db3c7df899821e4c0d895c61504522
	* src/gpgme.h.in (struct _gpgme_subkey): New flag subkey_match.
	* src/keylist.c (spacep): New.
	(op_data_t): Add field requested_subkey.
	(release_op_data): Free it.
	(exact_match_pattern): New.
	(maybe_setup_for_requested_subkey): New.
	(gpgme_op_keylist_start): Call it here.
	(gpgme_op_keylist_ext_start): Call it for each pattern until one
	found.
	(gpgme_op_keylist_next): Set the subkey_match field.
	---

	This is needed for

2025-03-18  Werner Koch  <wk@gnupg.org>

	New decrypt flags GPGME_DECRYPT_LISTONLY.
	+ commit 91a59d2a35540769c055da2341b5face0be6c286
	* src/gpgme.h.in (GPGME_DECRYPT_LISTONLY): New.
	* src/decrypt.c (op_data_t): Add member list_only.
	(_gpgme_decrypt_status_handler): Do not return NO_DATA in list_only
	mode.
	(_gpgme_op_decrypt_init_result): Add arg flags and set the list_only
	flag.
	(_gpgme_decrypt_start): Pss flags to the init function.
	* src/decrypt-verify.c (decrypt_verify_start): Ditto.
	* src/engine-gpg.c (gpg_decrypt): Add --list-only if flag is set.

	* tests/run-decrypt.c (main): Add option --list-only.

2025-03-14  Werner Koch  <wk@gnupg.org>

	Add API gpgme_op_random_value.
	+ commit 926b1f1f1e3e382f08cc57fc86d5892649514007
	* src/genrandom.c (getrandom_size_t): New.
	(gpgme_op_random_value): New.
	* src/gpgme.def: Add new function.
	* src/libgpgme.vers: Ditto.
	* src/gpgme.h.in: Add prototype.

	* tests/run-genrandom.c: Add an option to use the new function.

2025-03-10  NIIBE Yutaka  <gniibe@fsij.org>

	m4: Update libassuan.m4.
	+ commit 7568566ef3d1230ee134b3db3128c8681ebecf37
	* m4/libassuan.m4: Update from libassuan master.

2025-02-26  Werner Koch  <wk@gnupg.org>

	Add API gpgme_op_random_bytes.
	+ commit 0a64c7d0c6d0463cf2e06b3a01ef5be4d879bcf0
	* src/genrandom.c: New.
	* src/Makefile.am: Add new file.
	* src/engine-backend.h (struct engine_ops): Add func ptr getdirect.
	Adjust all engine_ops.
	* src/engine-gpg.c (gpg_getdirect): New.
	(_gpgme_engine_ops_gpg): Connect new handler.
	* src/gpgme.h.in (gpgme_random_mode_t): New.
	(GPGME_RANDOM_MODE_NORMAL): New.
	(GPGME_RANDOM_MODE_ZBASE32): New.
	(gpgme_op_random_bytes): New public function
	* src/libgpgme.vers: Add function.
	* src/gpgme.def: Add function.

	* tests/run-genrandom.c: New.
	* tests/Makefile.am: Add new file.

2025-02-21  Werner Koch  <wk@gnupg.org>

	Remove now unused functions.
	+ commit 2e21919a1b2663137c123917cee0a12b98ad36b2
	* src/engine.c (_gpgme_engine_op_trustlist): Remove.
	* src/libgpgme.vers (gpgme_op_trustlist_end)
	(gpgme_op_trustlist_next)
	(gpgme_op_trustlist_start): Remove.
	* src/gpgme.def: Ditto.
	* src/key.c (otrust_to_string)
	(validity_to_string)
	(capabilities_to_string)
	(get_keysig): Remove

	Remove the long deprecated and never working trust list functions.
	+ commit 7e6a65e66a96278bed5fed6d0b75887c0f032c4e
	* src/trust-item.c: Remove file.
	* src/trustlist.c: Remove file.
	* src/Makefile.am (main_sources): Remove those files.
	* src/gpgme.h.in (GPGME_EVENT_NEXT_TRUSTITEM): Remove.
	(gpgme_trust_item_t, GpgmeTrustItem): Remove.
	(gpgme_op_trustlist_start): Remove.
	(gpgme_op_trustlist_next): Remove.
	(gpgme_op_trustlist_end): Remove.
	(gpgme_trust_item_ref): Remove.
	(gpgme_trust_item_unref, gpgme_trust_item_release): Remove.
	* src/gpgme.def: Remove removed functions.
	* src/libgpgme.vers: Ditto.

	Remove long deprecated functions.
	+ commit d54d6eaa642ba6de179ef280930525c7367c9b88
	* src/gpgme.h.in (GPGME_EXPORT_MODE_NOUID): Remove.  This was a
	left-over from an experiment.
	(gpgme_attr_t,_gpgme_attr_t) Remove.  Deprecated sinze 2003.
	(gpgme_get_sig_ulong_attr): Ditto.
	(gpgme_get_sig_string_attr): Ditto.
	(gpgme_key_get_string_attr): Ditto.
	(gpgme_key_get_ulong_attr): Ditto.
	(gpgme_key_sig_get_string_attr): Ditto.
	(gpgme_key_sig_get_ulong_attr): Ditto.
	(gpgme_trust_item_get_string_attr): Ditto.
	(gpgme_trust_item_get_int_attr): Ditto.
	* src/gpgme.def: Remove them here too.
	* src/libgpgme.vers: Ditto.
	* src/trust-item.c: Remove corresponding implementations.
	* src/verify.c: Ditto.
	* src/key.c: Ditto.

2025-02-03  Werner Koch  <wk@gnupg.org>

	core: Fix regression for RSA in gpgme_pubkey_algo_string.
	+ commit 7d09f1f9fbf8889f467a06432f1954f9ad4f5922
	* src/gpgme.c (gpgme_pubkey_algo_string): Consider all RSA variants.

2025-02-03  Ingo Klöcker  <dev@ingo-kloecker.de>

	python: Remove Python bindings.
	+ commit 932caf37d36eca2caec59bf48bc505364a5765bb
	* README: Update.
	* configure.ac: Remove checks, variables and file generations related to
	the Python bindings. Remove python from available_languages and
	default_languages.
	* lang/Makefile.am (DIST_SUBDIRS): Remove python.
	* lang/python: Remove.
	* m4/ax_pkg_swig.m4, m4/ax_python_devel.m4, m4/python.m4: Remove.

	cpp,qt: Remove C++ and Qt bindings.
	+ commit 763d5f5d6a88ec938b8678ab597e1404af724553
	* README: Update.
	* configure.ac: Remove checks, variables and file generations related to
	the C++/Qt bindings. Remove cpp and qt* from available_languages and
	default_languages.
	* lang/Makefile.am (DIST_SUBDIRS): Remove cpp and qt.
	* lang/cpp, lang/qt: Remove.
	* m4/ax_check_compile_flag.m4, m4/ax_cxx_compile_stdcxx.m4,
	m4/ax_gcc_func_attribute.m4, m4/pkg.m4, m4/qt5.m4, m4/qt6.m4: Remove.

2025-01-15  Ingo Klöcker  <dev@ingo-kloecker.de>

	build: Fix generation of ChangeLog on secondary working trees.
	+ commit f6403a998f812b95534c1b6911b4ae5590c0d970
	* Makefile.am (gen-ChangeLog): Use test -e instead of test -d to check
	for git working trees.

2025-01-15  NIIBE Yutaka  <gniibe@fsij.org>

	build: Remove defining GPG_ERR_ENABLE_ERRNO_MACROS.
	+ commit fa17f2aaedb50cb576c47b191b3599e384272bc2
	* configure.ac (GPG_ERR_ENABLE_ERRNO_MACROS): Remove.

2025-01-02  Ingo Klöcker  <dev@ingo-kloecker.de>

	tests,json: Prevent failing tests after 2027-05-15.
	+ commit b9f9e24c00448851027683757ee5cf3f8c569ff1
	* tests/json/key-with-revokers.asc: Replace with new public key.
	* tests/json/t-keylist-revokers.out.json: Update to new public key.

2024-12-04  Ingo Klöcker  <dev@ingo-kloecker.de>

	build,python: Fix uninstalling in distcheck.
	+ commit 7a42ec5d466dfb5d4571773e22a51d0786b76d85
	* lang/python/Makefile.am (uninstall-local): Get platlib path relative
	to data path.

	build,python: Add Python 3.13 and remove Python 3.8.
	+ commit 27da4ec6350d803354d691c06a31c47176ec1064
	* configure.ac: Look for Python 3.13. Don't look for Python 3.8 anymore.
	* lang/python/setup.py.in: Update Python versions in classifiers.
	* m4/python.m4: Add python3.13 as valid interpreter. Remove python3.8.

2024-12-04  Werner Koch  <wk@gnupg.org>
	    lgh1

	Add a configure test for gettid.
	+ commit 4a62318422ca3f0f72b6fd00031daba556a10687
	* configure.ac (HAVE_GETTID,HAVE_SYS_GETTID): New test.
	* src/debug.c: Include syscall.h if needed.
	(tid_log_callback) [HAVE_SYS_GETTID]: Use SYS_gettid

2024-11-14  Ingo Klöcker  <dev@ingo-kloecker.de>

	cpp: Add Kyber algorithm.
	+ commit 56718f8d204f8a5895feb1a99c4b8ecd42b78010
	* lang/cpp/src/key.h (enum Subkey::PubkeyAlgo): Add AlgoKyber with
	same value as GPGME_PK_KYBER.

2024-11-14  Werner Koch  <wk@gnupg.org>

	Support the Kyber algorithm in key listings.
	+ commit 62b6c1f16ae0ed7b0eb1b095ee383aa0910314bb
	* src/gpgme.h.in (GPGME_PK_KYBER): New.
	* src/conversion.c (_gpgme_map_pk_algo): Handle Kyber.
	* src/gpgme.c (gpgme_pubkey_algo_string): Support Kyber.
	(gpgme_pubkey_algo_name): Add Kyber.

2024-11-06  Werner Koch  <wk@gnupg.org>

	Release 1.24.0.
	+ commit 98b10fbc63b323a146e66a2ea8f7ff8f216b31d7


2024-11-05  Werner Koch  <wk@gnupg.org>

	Include the full commit id.
	+ commit 0ad30e670aecce24eb1e59854d8f639ceb4009a6
	* autogen.sh: Update to version 2024-07-04 from libgpg-error.
	* configure.ac (BUILD_COMMITID): New.  Append to VERSION file.
	* src/version.c (cright_blurb): Use BUILD_COMMITID here.

2024-10-29  Werner Koch  <wk@gnupg.org>

	core: New context flags "known-notations".
	+ commit a304ec0ede937e21df5b4a311cbaf8d89f13ef59
	* src/gpgme.c (gpgme_set_ctx_flag): Add "known-notations".
	(gpgme_get_ctx_flag): Ditto.
	(gpgme_release): Free variable.
	* src/context.h (struct gpgme_context): Add "known_notations".

	* src/engine-gpg.c (struct engine_gpg): Add "known_notations".
	(gpg_release): Free variable.
	(gpg_set_engine_flags): Set variable.
	(add_known_notations): New.
	(gpg_decrypt, gpg_verify): Call function.

	* tests/run-decrypt.c (main): Add option --known-notations.
	* tests/run-verify.c (main): Ditto.

	core: Add new helper _gpgme_strtokenize.
	+ commit c835676f7dfe39830d5b0500ad2cb809832428d1
	* src/conversion.c (spacep): New.
	(_gpgme_strtokenize): New.

2024-10-23  Ingo Klöcker  <dev@ingo-kloecker.de>

	qt: Fix typo.
	+ commit e656e51d535cdce2db3e1a4848029a2410c30108
	* lang/qt/src/Makefile.am (camelcase_headers): Fix typo in header name.

	qt: Put attributes before declarations.
	+ commit 7d02ba8a9308b25140f6d1b9a5ad5c14f0b36374
	* lang/qt/src/downloadjob.h (DownloadJob::start): Move QGPGME_DEPRECATED
	before the whole function declaration.

	cpp: Put attributes before declarations.
	+ commit c4b39a77950b3b737de06eca044b35a845fc6299
	* lang/cpp/src/key.h (UserID::Signature::Notation): Move
	GPGMEPP_DEPRECATED before the whole typedef declaration.
	* lang/cpp/src/verificationresult.h (Signature::Notation): Ditto.

	cpp: Add/change some includes.
	+ commit bff4b847fc6361c6027afc1e8c78aa7580e2a27c
	* lang/cpp/src/gpgaddexistingsubkeyeditinteractor.h,
	lang/cpp/src/gpgrevokekeyeditinteractor.h: Include <string>.
	* lang/cpp/src/key.h: Include <ctime> instead of <sys/time.h>.

2024-10-21  Ingo Klöcker  <dev@ingo-kloecker.de>

	cpp: Add support for new flag fields beta_compliance.
	+ commit 2a0595906970505debf64e166b9a35cccbf1b424
	* lang/cpp/src/decryptionresult.cpp, lang/cpp/src/decryptionresult.h
	(class DecryptionResult): Add method isBetaCompliance.
	* lang/cpp/src/decryptionresult.cpp (operator<<): Add new flag.
	* lang/cpp/src/key.cpp, lang/cpp/src/key.h (class Key): Add method
	isBetaCompliance.
	(class Subkey): Add method isBetaCompliance.
	* lang/cpp/src/key.cpp:
	(Key::isDeVs): Remove duplicate check of is_de_vs of first subkey.
	(operator<<): Add new flag.
	* lang/cpp/src/verificationresult.cpp, lang/cpp/src/verificationresult.h
	(class Signature): Add method isBetaCompliance.
	* lang/cpp/src/verificationresult.cpp (operator<<): Add new flag.

2024-10-09  Tobias Fella  <tobias.fella@gnupg.com>

	core: fix passing --proc-all-sigs to gpgtar.
	+ commit 227c9c763b30072e9a58bbbe7f66056aa966378f
	* src/engine-gpg.c: Pass --gpg-args before passing --proc-all-sigs
	  if using gpgtar

2024-10-07  Werner Koch  <wk@gnupg.org>

	core: New flag fields beta_compliance.
	+ commit 1a7bc88ee756df127761c90a4b66d885f0c9de74
	* src/gpgme.h.in (struct _gpgme_subkey): Add field beta_compliance.
	(struct _gpgme_op_decrypt_result): Ditto.
	(struct _gpgme_signature): Ditto.
	* src/util.h (PARSE_COMPLIANCE_FLAGS): Handle the new 2023 value.
	* tests/run-decrypt.c: Append a "(beta)" to the vs-de compliance.
	* tests/run-keylist.c: Ditto.
	* tests/run-verify.c: Ditto.

2024-09-26  Werner Koch  <wk@gnupg.org>

	core: Allow GPGME_CREATE_ADSK also for gnupg 2.2.45.
	+ commit 3bf1ea97bcabac31d29f17320cdad2f75f759435
	* src/engine-gpg.c (gpg_addadsk): Extend the version check.

2024-09-20  Ingo Klöcker  <dev@ingo-kloecker.de>

	core: Report failed encryption/signing if gpgtar didn't emit SUCCESS.
	+ commit 79ca846993638de359936f86eafaa23f75c9f85d
	src/encrypt-sign.c (encrypt_sym_status_handler): Add call of
	_gpgme_encrypt_status_handler.
	(encrypt_sign_start): Call _gpgme_op_encrypt_init_result with
	success_required=1 if archive is created. Always call
	_gpgme_op_sign_init_result with success_required=0 because the encrypt
	status handler already checks for SUCCESS.
	src/encrypt.c (op_data_t): Add success_seen flag.
	(_gpgme_encrypt_status_handler): Return error if we didn't see a
	required SUCCESS on GPGME_STATUS_EOF. Set success_seen flag on
	GPGME_STATUS_SUCCESS.
	(encrypt_sym_status_handler): Add call of _gpgme_encrypt_status_handler.
	(_gpgme_op_encrypt_init_result): Add argument success_required. Set
	success_seen flag if SUCCESS is not required.
	(encrypt_start): Call _gpgme_op_encrypt_init_result with
	success_required=1 if archive is created.
	src/ops.h (_gpgme_op_sign_init_result, _gpgme_op_encrypt_init_result):
	Add argument success_required to prototypes.
	src/sign.c (op_data_t): Add success_seen flag.
	(_gpgme_sign_status_handler): Return error if we didn't see a
	required SUCCESS on GPGME_STATUS_EOF. Set success_seen flag on
	GPGME_STATUS_SUCCESS.
	(sign_init_result): Add argument success_required. Set success_seen
	flag if SUCCESS is not required.
	(_gpgme_op_sign_init_result): Add argument success_required and
	forward it to sign_init_result.
	(sign_start): Call sign_init_result with success_required=1 if archive
	is created.

2024-09-17  Ingo Klöcker  <dev@ingo-kloecker.de>

	doc,build: Look for yat2m in $prefix/bin.
	+ commit 9747f189620a4c89f88f50c5960baa511eea0a97
	* configure.ac: Look for yat2m first in $prefix/bin and then in $PATH.

	doc,build: Fix "make install" if yat2m isn't available.
	+ commit e4b04ae15363ee8b2159dbc2586fbf93792598f6
	* configure.ac: Add hint for YAT2M variable. Set HAVE_YAT2M if yat2m was
	found.
	* doc/Makefile.am (myman_pages): Set to empty string if yat2m isn't
	available

2024-09-10  Sébastien Noel  <sebastien@twolife.be>

	doc: Provide a man page for gpgme-json.
	+ commit 8e7f443045f8e77bb5c841c2b7bfe2e1e3fcceb9
	* doc/gpgme-json.texi: New.
	* configure.ac: Check for yat2m.
	* doc/Makefile.am (YAT2M_OPTIONS): New.  Also add all the other man
	page stuff similar to what is used in gnupg.

2024-09-09  Werner Koch  <wk@gnupg.org>

	core: New encryption flags GPGME_ENCRYPT_ADD_RECP and _CHG_RECP.
	+ commit cd79fc39736fda6ce38f1f79700cf658c47372f9
	* src/gpgme.h.in (GPGME_ENCRYPT_ADD_RECP, GPGME_ENCRYPT_CHG_RECP):
	New flag values.
	* src/engine-gpg.c (have_cmd_modify_recipients): New.
	(gpg_encrypt): Check availability of the feature and prepare command.

	* tests/run-encrypt.c (main): New options --add-recipients
	and --change-recipients.

2024-09-04  Ingo Klöcker  <dev@ingo-kloecker.de>

	core: Treat email-only user IDs with upper case letters as email address
	+ commit 2264b64b85e6d522fdc5e06d5260f5b7b5414417
	* src/key.c (_gpgme_key_append_name): Support email-only user IDs with
	upper case letters.

	* tests/gpg/t-keylist.c (struct key_info_s): Add algo, length, sec_algo,
	sec_length.
	(keys): Add expected algo and length for primary and secondary subkeys.
	(main): Factor out code for checking a key and the code for the keylist
	test. Call the factored out test function and a new test function.
	(check_key, test_keylist, key_with_email_only_user_id,
	key_info_email_only_user_id,
	test_email_only_user_id_with_upper_case_letters): New.

2024-09-02  Ingo Klöcker  <dev@ingo-kloecker.de>

	build,python: Fix build with setuptools 72.2.0+
	+ commit ecd0c86d62351d267bdc9566286c532a394c711b
	* lang/python/setup.py.in (BuildExtFirstHack.run): Extend members of the
	extension instead of lists that were passed to the extension.

2024-08-29  Ingo Klöcker  <dev@ingo-kloecker.de>

	cpp: Add pkgconfig file for gpgmepp.
	+ commit 569348ee84068ade5e05902dd9d670a1a30c7ca1
	* configure.ac: Add substitutions GPGMEPP_PKGCONFIG_LIBS,
	GPGMEPP_PKGCONFIG_CFLAGS, GPGMEPP_PKGCONFIG_HOST. Apply them. Configure
	gpgmepp.pc file.
	* lang/cpp/src/Makefile.am (pkgconfigdir, pkgconfig_DATA): New.
	(EXTRA_DIST): Add gpgmepp.pc.in.
	* lang/cpp/src/gpgmepp.pc.in: New.

2024-08-28  Ingo Klöcker  <dev@ingo-kloecker.de>

	cpp: Go with default answer on unknown question by key edit interface.
	+ commit 7579c40124c9b287bb67e974bda46e879e1a1ab1
	* lang/cpp/src/editinteractor.cpp (edit_interactor_callback_impl):
	Send empty string to edit interface if General Error occurred.

2024-08-26  Ingo Klöcker  <dev@ingo-kloecker.de>

	qt: Add support for new context flag "proc-all-sigs"
	+ commit 409e314582273be36b9b6516e89f142f2e99e682
	* lang/qt/src/decryptverifyarchivejob.cpp,
	lang/qt/src/decryptverifyarchivejob.h (DecryptVerifyArchiveJob): Add
	member functions setProcessAllSignatures, processAllSignatures.
	* lang/qt/src/decryptverifyarchivejob_p.h
	(DecryptVerifyArchiveJobPrivate): Add member m_processAllSignatures.
	* lang/qt/src/decryptverifyjob.cpp, lang/qt/src/decryptverifyjob.h
	(DecryptVerifyJob): Add member functions setProcessAllSignatures,
	processAllSignatures.
	* lang/qt/src/decryptverifyjob_p.h (DecryptVerifyJobPrivate): Add member
	m_processAllSignatures.
	* lang/qt/src/qgpgmedecryptverifyarchivejob.cpp
	(decrypt_verify_from_file_name): Add argument "processAllSignatures".
	Set context flag "proc-all-sigs" if requested.
	(QGpgMEDecryptVerifyArchiveJob::start): Set context flag "proc-all-sigs"
	if requested.
	(QGpgMEDecryptVerifyArchiveJobPrivate::startIt): Pass
	m_processAllSignatures to decrypt_verify_from_file_name.
	* lang/qt/src/qgpgmedecryptverifyjob.cpp
	(decrypt_verify_from_filename): Add argument "processAllSignatures".
	Set context flag "proc-all-sigs" if requested.
	(QGpgMEDecryptVerifyJob::start, QGpgMEDecryptVerifyJob::exec): Set
	context flag "proc-all-sigs" if requested.
	(QGpgMEDecryptVerifyJobPrivate::startIt): Pass
	m_processAllSignatures to decrypt_verify_from_filename.
	* lang/qt/src/qgpgmeverifydetachedjob.cpp (verify_from_filename): Add
	argument "processAllSignatures". Set context flag "proc-all-sigs" if
	requested.
	(QGpgMEVerifyDetachedJob::start, QGpgMEVerifyDetachedJob::exec): Set
	context flag "proc-all-sigs" if requested.
	(QGpgMEVerifyDetachedJobPrivate::startIt): Pass
	m_processAllSignatures to decrypt_verify_from_filename.
	* lang/qt/src/qgpgmeverifyopaquejob.cpp (verify_from_filename): Add
	argument "processAllSignatures". Set context flag "proc-all-sigs" if
	requested.
	(QGpgMEVerifyOpaqueJob::start, QGpgMEVerifyOpaqueJob::exec): Set
	context flag "proc-all-sigs" if requested.
	(QGpgMEVerifyOpaqueJobPrivate::startIt): Pass
	m_processAllSignatures to decrypt_verify_from_filename.
	* lang/qt/src/verifydetachedjob.cpp, lang/qt/src/verifydetachedjob.h
	(VerifyDetachedJob): Add member functions setProcessAllSignatures,
	processAllSignatures.
	* lang/qt/src/verifydetachedjob_p.h (VerifyDetachedJobPrivate): Add
	member m_processAllSignatures.
	* lang/qt/src/verifyopaquejob.cpp, lang/qt/src/verifyopaquejob.h
	(VerifyOpaqueJob): Add member functions setProcessAllSignatures,
	processAllSignatures.
	* lang/qt/src/verifyopaquejob_p.h (VerifyOpaqueJobPrivate): Add
	member m_processAllSignatures.

	* lang/qt/tests/run-decryptverifyarchivejob.cpp,
	lang/qt/tests/run-decryptverifyjob.cpp,
	lang/qt/tests/run-verifydetachedjob.cpp,
	lang/qt/tests/run-verifyopaquejob.cpp (struct CommandLineOptions): Add
	member processAllSignatures.
	(parseCommandLine): Add command line option --process-all-signatures.
	(main): Pass new option to the job.

2024-08-23  Werner Koch  <wk@gnupg.org>

	New context flag "proc-all-sigs".
	+ commit 37aa9eee7c5696c7b79898a33f9c2883962c2a88
	* src/context.h (struct gpgme_context): Add proc_all_sigs.
	* src/gpgme.c (gpgme_set_ctx_flag): Add flag "proc-all-sigs".
	(gpgme_get_ctx_flag): Ditto.
	* src/engine-gpg.c (engine.gpg): Add flags.proc_all_sigs.
	(have_option_proc_all_sigs): New.
	(gpg_set_engine_flags): Set flag from context.
	(build_argv): Add --proc-all-sigs if requested and supported.

2024-08-07  Ingo Klöcker  <dev@ingo-kloecker.de>

	qt,tests: Add make target to clean the keyring.
	+ commit 0174575c8c169cd00f65ed509d91355dea26995f
	* lang/qt/tests/Makefile.am (clean-keyring): New target.

	qt: Use --quick-set-ownertrust if available.
	+ commit a73eee3655e21c60cbc572216a8a90eff5ac6ea5
	* lang/qt/src/qgpgmechangeownertrustjob.cpp (set_owner_trust): New.
	(QGpgMEChangeOwnerTrustJob::start): Use set_owner_trust if gpg is new
	enough.

	* lang/qt/tests/t-ownertrust.cpp
	(ChangeOwnerTrustTest::testChangeOwnerTrust): Log unexpected error.

	tests,json: Remove no longer needed code.
	+ commit 668a1344c6b230c6a205f5cf56c8ffc0c1ee9287
	* tests/json/t-json.c (parse_version_number, parse_version_string,
	compare_versions, check_gpg_version): Remove.
	(main): Use have_gpg_version from t-support.h.

	qt: Support disabling and enabling of keys.
	+ commit 63822343dfaac8b638ef475d441c4379da3a9804
	* lang/qt/src/Makefile.am: Add new files.
	* lang/qt/src/job.cpp (QuickJob): Move definition of constructor and
	destructor and inclusion of the moc file to quickjob.cpp.
	* lang/qt/src/qgpgmequickjob.cpp (class QGpgMEQuickJobPrivate): New.
	(QGpgMEQuickJob::QGpgMEQuickJob): Instantiate private job class.
	(set_key_enabled): New.
	* lang/qt/src/quickjob.cpp: New.
	* lang/qt/src/quickjob.h (class QuickJob): Add member function
	startSetKeyEnabled.
	* lang/qt/src/quickjob_p.h: New.

	* lang/qt/tests/Makefile.am: Add new test for Qt 5 and Qt 6.
	* lang/qt/tests/t-disablekey.cpp: New.

2024-08-06  Ingo Klöcker  <dev@ingo-kloecker.de>

	cpp: Add support for setting owner trust and for disabling keys.
	+ commit d5f612e9685d18313d445799a19ff83e013f1b0a
	* lang/cpp/src/context.cpp, lang/cpp/src/context.h (class Context): Add
	member functions setOwnerTrust, startSetOwnerTrust, setKeyEnabled,
	startSetKeyEnabled.
	* lang/cpp/src/context.cpp (owner_trust_to_string): New.

	core: New function gpgme_op_setownertrust.
	+ commit d804a7a4bc871f38f6cdc2cd63af3ef004580437
	* src/Makefile.am (main_sources): Add new file.
	* src/context.h (ctx_op_data_id_t): Add OPDATA_SETOWNERTRUST.
	* src/engine.c, src/engine.h (_gpgme_engine_op_setownertrust): New.
	* src/engine-backend.h (engine_ops): Add 'setownertrust' and adjust all
	engine initializers.
	* src/engine-gpg.c (gpg_setownertrust): New.
	(_gpgme_engine_ops_gpg): Set setownertrust to gpg_setownertrust.
	* src/gpgme.h.in (gpgme_op_setownertrust_start, gpgme_op_setownertrust):
	New.
	* src/gpgme.def, src/libgpgme.vers: Add new functions.
	* src/setownertrust.c: New.

	* doc/gpgme.texi: Document new functions.

	* tests/Makefile.am (noinst_PROGRAMS): Add new test program.
	* tests/run-setownertrust.c: New.

	* tests/gpg/Makefile.am (c_tests): Add new file. (LDADD): Add
	@GPG_ERROR_LIBS@.
	* tests/gpg/t-setownertrust.c: New.
	* tests/gpg/t-support.h (have_gpg_version): New.

2024-08-05  Ingo Klöcker  <dev@ingo-kloecker.de>

	w32: Use UTF-8 for localized error descriptions for all threads.
	+ commit 9272b0fb6ebc245a37c74e02f1de00dc1ec99723
	* src/version.c (do_subsystem_inits) [W32]: Switch gettext to UTF-8
	for current thread and all new threads.

2024-07-22  Ingo Klöcker  <dev@ingo-kloecker.de>

	build,qt: Fix include path in CMake files.
	+ commit 5c095553e4344fba63bbf684b2468e36a7b891e8
	* lang/qt/src/Makefile.am (QGpgmeConfig.cmake, QGpgmeQt6Config.cmake):
	Use new variables includeprefix{5,6} instead of replaced variable
	includeprefix.

2024-07-18  Ingo Klöcker  <dev@ingo-kloecker.de>

	build,qt: Don't put generated camel-case headers in tarball.
	+ commit 9ab2ce36f9b9f510d58c2dd9946cd360c963976b
	* lang/qt/src/Makefile.am: Change camelcase5include_HEADERS to
	nodist_camelcase5include_HEADERS. Change camelcase6include_HEADERS to
	nodist_camelcase6include_HEADERS.

	core: Remove obsolete source files.
	+ commit c69240c843f2b80f47cad97b8ba3b314e104b959
	* src/isascii.c, src/putc_unlocked.c: Remove.

	build,qt: Allow building Qt 5 bindings and Qt 6 bindings.
	+ commit 42e151b34ba1e8c07b1ed2e4e1f6299466e499a1
	* configure.ac: Remove "qt" from default_languages. Add "qt5 qt6" to
	default_languages. Remove "qt" from help for --enable-languages. Don't
	fail anymore if "qt5" and "qt6" are enabled. Warn that "qt" is
	deprecated if it was enabled.
	* lang/qt/src/Makefile.am (libqgpgme_la, libqgpgmeqt6_la): New.
	(lib_LTLIBRARIES): Set Qt 5 and/or Qt 6 variant of libqgpgme.
	(AM_CPPFLAGS): Replace with libqgpgme_la_CPPFLAGS for Qt 5 and
	libqgpgmeqt6_la_CPPFLAGS for Qt 6.

	build,qt: Decouple generation of moc files.
	+ commit e6830b58b6de6d4fa02f1055cd0e992c9310b51a
	* m4/qt5.m4: Export moc for Qt 5 in variable MOC5. Unset temporary MOC2.
	* m4/qt6.m4: Export moc for Qt 6 in variable MOC6.
	* lang/qt/src/Makefile.am: Generate .moc5 files from .h files. Generate
	.moc forwarding headers in moc5 subfolder. Add moc5 subfolder to include
	paths for Qt 5-based qgpgme library. Ditto for Qt 6. Clean up moc5 and
	moc6 subfolders.
	* lang/qt/tests/Makefile.am: List tests and test runners for Qt 5 and
	Qt 6. Generate .moc5 files from .cpp files of tests. Generate .moc
	forwarding headers in moc5 subfolder. Generate .hmoc file from
	t-support.h directly in moc5 subfolder. Add moc5 subfolder to include
	paths for all Qt 5-based tests and runners. Ditto for Qt 6. Specify
	sources, LDADD and CPPFLAGS for all tests and test runners for Qt 5 and
	Qt 6. Clean up moc5 and moc6 subfolders.

	build,qt: Remove include directories on uninstall.
	+ commit 899a572b335528aabb769e5832318b0a3e910d08
	* lang/qt/src/Makefile.am (uninstall-include-dirs-qt5,
	uninstall-include-dirs-qt6): New targets.
	(uninstall_include_dirs_qt5, uninstall_include_dirs_qt6): New variables.
	(uninstall-local): Replace with...
	(uninstall-hook): ...this. Add new uninstall_include_dirs_qt* variables.

	build,qt: Decouple handling of include headers.
	+ commit 69558f2c0bede869a1caec70b2046a5138043c32
	* lang/qt/src/Makefile.am (includeprefix): Replace with...
	(includeprefix5, includeprefix6): ...these.
	(qgpgmeincludedir): Replace with...
	(qgpgme5includedir, qgpgme6includedir): ...these.
	(qgpgmeinclude_HEADERS): Replace with...
	(qgpgme5include_HEADERS, qgpgme6include_HEADERS): ...these.
	(nodist_qgpgmeinclude_HEADERS): Replace with...
	(nodist_qgpgme5include_HEADERS, nodist_qgpgme6include_HEADERS): ..these.
	(camelcaseincludedir): Replace with...
	(camelcase5includedir, camelcase6includedir): ...these.
	(camelcaseinclude_HEADERS): Replace with...
	(camelcase5include_HEADERS, camelcase6include_HEADERS): ...these.

	build,qt: Decouple (un)install of CMake files.
	+ commit 576d2db9dd9b7c66686e239ff61ffca606ad9f2a
	* lang/qt/src/Makefile.am (install-cmake-files): Rename target to
	install-cmake-files-qt5 and install-cmake-files-qt6.
	(uninstall-cmake-files): Rename target to uninstall-cmake-files-qt5 and
	uninstall-cmake-files-qt6.
	(install_cmake_files_qt5, uninstall_cmake_files_qt5,
	install_cmake_files_qt6, uninstall_cmake_files_qt6): New variables.
	(install-data-local): Depend on both install-cmake-files-qt* targets.
	(uninstall-local): Depend on both uninstall-cmake-files-qt* targets.

2024-07-15  Ingo Klöcker  <dev@ingo-kloecker.de>

	core: Support all keylist modes and fix possible overrun.
	+ commit aa15a664b3cf9bf578ba6d22c1c0c327af68b1b4
	* src/gpgme-tool.c (gt_get_keylist_mode): Increase NR_KEYLIST_MODES to
	number of keylist modes. Add support for GPGME_KEYLIST_MODE_WITH_TOFU,
	GPGME_KEYLIST_MODE_WITH_KEYGRIP, GPGME_KEYLIST_MODE_WITH_V5FPR. Write
	all modes.
	(hlp_keylist_mode): List all supported keylist modes.
	(cmd_keylist_mode): Add support for GPGME_KEYLIST_MODE_WITH_TOFU,
	GPGME_KEYLIST_MODE_WITH_KEYGRIP, GPGME_KEYLIST_MODE_WITH_V5FPR.

2024-07-10  Ingo Klöcker  <dev@ingo-kloecker.de>

	build,cpp: Fix include paths in forwarding headers in gpgme++ folder.
	+ commit e46748a0d18b8a6d26e6b386f64a99a5cdc6a6e3
	* lang/cpp/src/Makefile.am (build rule for copied headers): Write
	abs_srcdir instead of srcdir in the generated headers.

2024-07-05  Ingo Klöcker  <dev@ingo-kloecker.de>

	qt: Replace usage of deprecated Error::asString.
	+ commit f6d020e24fb64cfba5e80cef7f80cad15f08cc3c
	* lang/qt/src/debug.cpp (operator<<): Use Error::asStdString instead of
	Error::asString.
	* lang/qt/src/qgpgmedecryptverifyjob.cpp (decrypt_verify),
	lang/qt/src/qgpgmenewcryptoconfig.cpp
	(QGpgMENewCryptoConfigComponent::sync),
	lang/qt/src/qgpgmewkdlookupjob.cpp (startDirmngr): Use QDebug operator
	for Error instead of Error::asString.
	* lang/qt/src/threadedjobmixin.cpp (_detail::audit_log_as_html): Use
	errorAsString instead of Error::asString.
	* lang/qt/src/util.h (errorAsString): New.

	* lang/qt/tests/run-decryptverifyarchivejob.cpp (main),
	lang/qt/tests/run-decryptverifyjob.cpp (main),
	lang/qt/tests/run-encryptarchivejob.cpp (main),
	lang/qt/tests/run-encryptjob.cpp (main),
	lang/qt/tests/run-exportjob.cpp (main),
	lang/qt/tests/run-importjob.cpp (main),
	lang/qt/tests/run-receivekeysjob.cpp (main),
	lang/qt/tests/run-refreshkeysjob.cpp (main),
	lang/qt/tests/run-signarchivejob.cpp (main),
	lang/qt/tests/run-signjob.cpp (main),
	lang/qt/tests/run-verifydetachedjob.cpp (main),
	lang/qt/tests/run-verifyopaquejob.cpp (main),
	lang/qt/tests/run-wkdrefreshjob.cpp (main),
	lang/qt/tests/t-ownertrust.cpp (testChangeOwnerTrust),
	lang/qt/tests/t-remarks.cpp (testRemarkOwnKey),
	lang/qt/tests/t-tofuinfo.cpp (testTofuPolicy): Use QDebug operator for
	Error instead of Error::asString.
	* lang/qt/tests/t-changeexpiryjob.cpp (all test functions),
	lang/qt/tests/t-trustsignatures.cpp (all test functions),
	lang/qt/tests/t-various.cpp (testSignKeyWithoutExpiration,
	testSignKeyWithExpiration): Use errorAsString instead of
	Error::asString.

	cpp: Deprecate Error::asString and update users.
	+ commit 28542b14c4df40c7a54bfcf65d7c725bd99fb3e5
	* lang/cpp/src/error.h (Error::asString): Mark as deprecated.
	* lang/cpp/src/context.cpp (operator<<),
	lang/cpp/src/editinteractor.cpp (edit_interactor_callback_impl),
	lang/cpp/tests/run-getkey.cpp (main),
	lang/cpp/tests/run-keylist.cpp (main),
	lang/cpp/tests/run-wkdlookup.cpp (main): Use Error::asStdString instead
	of Error::asString.

	cpp: Add safer member function returning text describing an error.
	+ commit 2656d3ee5b1a905d9fe4dd5c8b2d9737e775df31
	* lang/cpp/src/error.h, lang/cpp/src/context.cpp (class Error): New
	member function asStdString.

	qt: Always include C++ binding headers with gpgme++/ prefix.
	+ commit acf574af64d6ace5b090029748ecaf9d87163be7
	* lang/qt/src/Makefile.am, lang/qt/tests/Makefile.am (AM_CPPFLAGS):
	Add builddir instead of srcdir of C++ bindings as include path.
	* lang/qt/src/changeexpiryjob.cpp, lang/qt/src/changeexpiryjob.h,
	lang/qt/src/changeownertrustjob.h, lang/qt/src/dataprovider.cpp,
	lang/qt/src/dataprovider.h, lang/qt/src/debug.cpp,
	lang/qt/src/decryptverifyarchivejob.cpp,
	lang/qt/src/decryptverifyarchivejob.h,
	lang/qt/src/encryptarchivejob.cpp, lang/qt/src/encryptarchivejob.h,
	lang/qt/src/encryptjob.h, lang/qt/src/encryptjob_p.h,
	lang/qt/src/filelistdataprovider.cpp,
	lang/qt/src/filelistdataprovider.h,
	lang/qt/src/hierarchicalkeylistjob.h, lang/qt/src/importjob.cpp,
	lang/qt/src/importjob.h, lang/qt/src/importjob_p.h, lang/qt/src/job.h,
	lang/qt/src/keyformailboxjob.h, lang/qt/src/keylistjob.h,
	lang/qt/src/listallkeysjob.h, lang/qt/src/multideletejob.cpp,
	lang/qt/src/qgpgmeaddexistingsubkeyjob.cpp,
	lang/qt/src/qgpgmeadduseridjob.cpp, lang/qt/src/qgpgmebackend.cpp,
	lang/qt/src/qgpgmechangeexpiryjob.cpp,
	lang/qt/src/qgpgmechangeownertrustjob.cpp,
	lang/qt/src/qgpgmechangepasswdjob.cpp, lang/qt/src/qgpgmedecryptjob.cpp,
	lang/qt/src/qgpgmedecryptjob.h,
	lang/qt/src/qgpgmedecryptverifyarchivejob.cpp,
	lang/qt/src/qgpgmedecryptverifyarchivejob.h,
	lang/qt/src/qgpgmedecryptverifyjob.cpp,
	lang/qt/src/qgpgmedecryptverifyjob.h, lang/qt/src/qgpgmedeletejob.cpp,
	lang/qt/src/qgpgmedownloadjob.cpp,
	lang/qt/src/qgpgmeencryptarchivejob.cpp,
	lang/qt/src/qgpgmeencryptarchivejob.h, lang/qt/src/qgpgmeencryptjob.cpp,
	lang/qt/src/qgpgmeencryptjob.h, lang/qt/src/qgpgmeexportjob.cpp,
	lang/qt/src/qgpgmeimportfromkeyserverjob.cpp,
	lang/qt/src/qgpgmeimportfromkeyserverjob.h,
	lang/qt/src/qgpgmeimportjob.cpp, lang/qt/src/qgpgmeimportjob.h,
	lang/qt/src/qgpgmekeyformailboxjob.h,
	lang/qt/src/qgpgmekeygenerationjob.cpp,
	lang/qt/src/qgpgmekeygenerationjob.h, lang/qt/src/qgpgmekeylistjob.cpp,
	lang/qt/src/qgpgmekeylistjob.h, lang/qt/src/qgpgmelistallkeysjob.cpp,
	lang/qt/src/qgpgmelistallkeysjob.h,
	lang/qt/src/qgpgmenewcryptoconfig.cpp,
	lang/qt/src/qgpgmenewcryptoconfig.h, lang/qt/src/qgpgmequickjob.cpp,
	lang/qt/src/qgpgmereceivekeysjob.h,
	lang/qt/src/qgpgmerefreshsmimekeysjob.cpp,
	lang/qt/src/qgpgmerefreshsmimekeysjob.h,
	lang/qt/src/qgpgmerevokekeyjob.cpp,
	lang/qt/src/qgpgmesetprimaryuseridjob.cpp,
	lang/qt/src/qgpgmesignarchivejob.cpp,
	lang/qt/src/qgpgmesignarchivejob.h,
	lang/qt/src/qgpgmesignencryptarchivejob.cpp,
	lang/qt/src/qgpgmesignencryptarchivejob.h,
	lang/qt/src/qgpgmesignencryptjob.cpp,
	lang/qt/src/qgpgmesignencryptjob.h, lang/qt/src/qgpgmesignjob.cpp,
	lang/qt/src/qgpgmesignjob.h, lang/qt/src/qgpgmesignkeyjob.cpp,
	lang/qt/src/qgpgmetofupolicyjob.cpp,
	lang/qt/src/qgpgmeverifydetachedjob.cpp,
	lang/qt/src/qgpgmeverifydetachedjob.h,
	lang/qt/src/qgpgmeverifyopaquejob.cpp,
	lang/qt/src/qgpgmeverifyopaquejob.h, lang/qt/src/qgpgmewkdlookupjob.cpp,
	lang/qt/src/qgpgmewkdrefreshjob.cpp, lang/qt/src/qgpgmewkdrefreshjob.h,
	lang/qt/src/qgpgmewkspublishjob.cpp, lang/qt/src/quickjob.h,
	lang/qt/src/signarchivejob.cpp, lang/qt/src/signarchivejob.h,
	lang/qt/src/signencryptarchivejob.cpp,
	lang/qt/src/signencryptarchivejob.h, lang/qt/src/signencryptjob.h,
	lang/qt/src/signencryptjob_p.h, lang/qt/src/signjob.h,
	lang/qt/src/signjob_p.h, lang/qt/src/threadedjobmixin.cpp,
	lang/qt/src/threadedjobmixin.h, lang/qt/src/tofupolicyjob.h,
	lang/qt/src/util.cpp, lang/qt/src/wkdlookupresult.cpp,
	lang/qt/src/wkdlookupresult.h, lang/qt/src/wkdrefreshjob_p.h,
	lang/qt/tests/run-decryptverifyarchivejob.cpp,
	lang/qt/tests/run-decryptverifyjob.cpp,
	lang/qt/tests/run-encryptarchivejob.cpp,
	lang/qt/tests/run-encryptjob.cpp, lang/qt/tests/run-exportjob.cpp,
	lang/qt/tests/run-importjob.cpp, lang/qt/tests/run-keyformailboxjob.cpp,
	lang/qt/tests/run-receivekeysjob.cpp,
	lang/qt/tests/run-refreshkeysjob.cpp,
	lang/qt/tests/run-signarchivejob.cpp, lang/qt/tests/run-signjob.cpp,
	lang/qt/tests/run-verifydetachedjob.cpp,
	lang/qt/tests/run-verifyopaquejob.cpp,
	lang/qt/tests/run-wkdrefreshjob.cpp,
	lang/qt/tests/t-addexistingsubkey.cpp,
	lang/qt/tests/t-changeexpiryjob.cpp, lang/qt/tests/t-config.cpp,
	lang/qt/tests/t-decryptverify.cpp, lang/qt/tests/t-encrypt.cpp,
	lang/qt/tests/t-import.cpp, lang/qt/tests/t-keylist.cpp,
	lang/qt/tests/t-keylocate.cpp, lang/qt/tests/t-ownertrust.cpp,
	lang/qt/tests/t-remarks.cpp, lang/qt/tests/t-revokekey.cpp,
	lang/qt/tests/t-setprimaryuserid.cpp, lang/qt/tests/t-support.cpp,
	lang/qt/tests/t-support.h, lang/qt/tests/t-tofuinfo.cpp,
	lang/qt/tests/t-trustsignatures.cpp, lang/qt/tests/t-various.cpp,
	lang/qt/tests/t-verify.cpp, lang/qt/tests/t-wkdlookup.cpp,
	lang/qt/tests/t-wkspublish.cpp: Include GpgME++ headers with gpgme++/
	prefix.

	build,cpp: Create forwarding headers in a gpgme++ folder.
	+ commit b7435b31f6e6754480a4e6d2910d74ee15f75fc5
	* lang/cpp/src/Makefile.am (copied_headers): New.
	(build rule for all copied headers): New.
	(BUILT_SOURCES): New.
	(CLEANFILES): Add copied_headers.

2024-07-05  NIIBE Yutaka  <gniibe@fsij.org>

	Fix calling CancelSynchronousIo.
	+ commit 95bd4fa813023a56c29a43bdb9ad9777362b389b
	* src/w32-util.c (_gpgme_w32_cancel_synchronous_io): Use HANDLE.

	Fix printing size_t and off_t value for LLP64 Windows.
	+ commit de6068450094783b9ed68ec9553ea59d02a208ff
	* src/debug.h (_trace_sysres_off_t): Use 'z' length specifier.
	* src/w32-io.c (_gpgme_io_read): Likewise.
	(writer, _gpgme_io_write): Likewise.

	Remove ath.h and ath.c.
	+ commit 8b4171680c325d63952c9026aa7fa35f4b23e351
	* src/Makefile.am (system_components): We don't use ath.h any more.
	(main_sources): Remove ath.h and ath.c.

	Don't use ath_self, but get thread ID directly.
	+ commit 9c276e762a25262cd635e97f5aad4b09fa41b427
	* src/debug.c [HAVE_W32_SYSTEM or __linux] (tid_log_callback): Use
	native thread ID call for Windows and Linux, ifdef-out-ed.
	(debug_init): Only call gpgrt_log_set_pid_suffix_cb for relevant
	systems.

2024-07-01  NIIBE Yutaka  <gniibe@fsij.org>

	Use gpgrt_b64dec in libgpg-error.
	+ commit ec2c6dd8bc49e010810cb8ad403a9b8dad5d399e
	* src/b64dec.c: Remove.
	* src/Makefile.am (main_sources): Remove b64dec.c.
	* src/data-identify.c (pgp_binary_detection): Use gpgrt_b64dec in
	libgpg-error.

2024-06-28  Ingo Klöcker  <dev@ingo-kloecker.de>

	cpp: Remove obsolete files.
	+ commit 6ed5c9a38aedcda9e67607c7474042f28121af6e
	* lang/cpp/src/context_glib.cpp, lang/cpp/src/context_qt.cpp: Remove.

2024-06-18  Ingo Klöcker  <dev@ingo-kloecker.de>

