2026-08-31  Werner Koch  <wk@gnupg.org>

	Release 2.5.22.
	+ commit bd253e9fecedd4c0e699530826ee43264581634b


2026-08-26  Philip Le  <philip.le@gnupg.com>

	gpgsm: Fix condition for de-vs compliance status line.
	+ commit a09f16f2b17a47b3f215e2d257ef256f3b2b724e
	* sm/decrypt.c (gpgsm_decrypt): Also check other conditions for de-vs
	compliance before emitting status line.

2026-08-25  Philip Le  <philip.le@gnupg.com>

	gpgsm: Check keyboxd usage in keydb_get_flags.
	+ commit e338ea3de2d151fe718c11d7dcd2a2178b10a22e
	* sm/keydb.c (keydb_get_flags): Add condition that keyboxd is not
	used.

2026-08-21  Werner Koch  <wk@gnupg.org>

	gpgconf: Print a warning on Windows on insufficent /etc permissions.
	+ commit 56eb3148c7b88eb1c0804141b58cb54b9007f48d
	* README (Securing the global config files on Windows): New.

	* tools/gpgconf.c [W32]: Include aclapi.h.
	(enum cmd_and_opt_values): Add oDebug.
	(opts): Add option --debug.
	(debug_flags): New.
	(main): Parse debug flags.
	(w32_get_file_integrity_level) [W32]: New.
	(show_configs) [W32]: Check permissions of the gloab sysconfdir
	* tools/gpgconf.h (opt): Add field 'debug'.
	(DBG_W32_API): New.

2026-08-18  Philip Le  <philip.le@gnupg.com>

	gpg: Emit status line for failed write.
	+ commit 09ac242827c3bd002da2ff9d693a2db646d4e386
	* g10/plaintext.c (handle_plaintext): Emit error location and code in
	failure status.

2026-08-12  Philip Le  <philip.le@gnupg.com>
	    Werner Koch  <wk@gnupg.org>

	gpg: Fix regression introduced by partial file guards.
	+ commit 1b8debd65baaa05250ce26079fad15ac7bb16bd5
	* g10/main.h (gnupg_rollback_partial_file): New. Removes .part files.
	(gnupg_commit_partial_file): New. Renames .part files.
	* g10/misc.c (gnupg_rollback_partial_file): New.
	(gnupg_commit_partial_file): New.
	* g10/mainproc.c (proc_encrypted): Use gnupg_commit_partial_file.
	* g10/gpg.c (g10_exit): Use gnupg_commit_partial_file.
	(main): Remove .part files if decryption fails.

2026-08-12  NIIBE Yutaka  <gniibe@fsij.org>

	common,gpg: Don't enable the partial file guard if already done.
	+ commit 95ad7f7a5165b96e1a39afe70b1b1092b9ab6f45
	* common/stringhelp.c (has_suffix): New.
	* common/stringhelp.h (has_suffix): New.
	* g10/plaintext.c (get_output_file): Only enable the partial
	file guard when it doesn't have ".part" suffix.

2026-08-10  Werner Koch  <wk@gnupg.org>

	gpg: Fix TOFU trust models to actually check UTK signatures.
	+ commit 08611f5da8ad4b9cc80bb05f0f8610ec6baa6063
	* g10/tofu.c (signed_by_utk): Add arg ctrl.  Use macros fro the
	  sigclass.  Check the signature before returning true.

2026-08-05  Werner Koch  <wk@gnupg.org>

	g13: Add sanity check on the syntax of the dmsetup algo string.
	+ commit 386c3e63b1cac7f506f974715dbf30c6d40663dd
	* g13/sh-dmcrypt.c (is_valid_algostr): New
	(sh_dmcrypt_mount_container): Use here
	(sh_dmcrypt_resume_container): and here.

2026-08-04  NIIBE Yutaka  <gniibe@fsij.org>

	gpg: Add a comment and minor fix for composing SEXP.
	+ commit e9b40fd1f0c0f6639c16346e895153561be93388
	* g10/import.c (internal_skey_object_to_sexp): Add comment.
	* g10/keyid.c (keygrip_from_pk): Compose correct SEXP with Ed448.

2026-07-30  Philip Le  <philip.le@gnupg.com>
	    Werner Koch  <wk@gnupg.org>

	gpgsm: Emit issuer and serial no. when the certificate is not found.
	+ commit 82d5dc7782617cb7683b3769a3267e154ebdb067
	* doc/DETAILS: Update NO_PUBKEY for X.509 certificates.
	* sm/verify.c (gpgsm_verify): Print the issuer and serial no. of the
	signer's certificate when the certificate is not found.

2026-07-30  Philip Le  <philip.le@gnupg.com>

	gpg: Emit signing time as status output for bad signatures.
	+ commit e5acae48015751e21a04bf3113ba42d02c3db3f7
	* g10/mainproc.c (print_good_bad_signature): Emit signature creation
	time with STATUS_SIGINFO for bad signatures.

2026-07-30  Philip Le  <philip.le@gnupg.com>
	    Werner Koch  <wk@gnupg.org>

	gpgsm: Emit signing time as status output for bad signatures.
	+ commit 74305fa7d79700eb5ec03ab575260d640430bc71
	* common/status.h (enum): Add new STATUS_SIGINFO.
	* doc/DETAILS: Add description for new STATUS_SIGINFO.
	* sm/verify.c (gpgsm_verify): Add signature creation time with
	STATUS_SIGINFO for bad signatures.

2026-07-30  NIIBE Yutaka  <gniibe@fsij.org>

	scd: Allow switching APP when opt.pcsc_shared is enabled.
	+ commit f783c02525c3be9af14e84ec6456d4bde6018c74
	* scd/app.c (maybe_switch_app): Add opt.pcsc_shared condition.

2026-07-21  NIIBE Yutaka  <gniibe@fsij.org>

	gpgsm: Fix keydb_get_flags with keyboxd.
	+ commit 766e9773cbc2a03d0392c2a2c94d0fe237741c5b
	* sm/keydb.c (struct keydb_handle): Add new field of last_is_revoked.
	(keydb_get_flag): Support keyboxd.
	(search_status_cb): Fill last_is_revoked field.

2026-07-20  Philip Le  <philip.le@gnupg.com>

	gpgsm: Check args for special file names and dashes.
	+ commit 2efb4a6242e25a661eb60adf2cb2c5abf4185d04
	* sm/gpgsm.c (main): Use open_es_fread to check input args for special
	file names and dashes.

2026-07-17  NIIBE Yutaka  <gniibe@fsij.org>

	scd: Put a workaround for buggy CCID device.
	+ commit 481b3dd50e744a6d4213abecd27ac1f497c6e1c5
	* scd/ccid-driver.c (bulk_in): Handle ZLP.

2026-07-16  Philip Le  <philip.le@gnupg.com>

	gpgsm: Return 0 if decryption of multi recipient file succeeeds.
	+ commit 890d16586beaa185b082a21e6a26b953181da3eb
	* sm/gpgsm.c (main): Reset error count when decryption succeeds.

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

	common: Make unix_rootdir work for macOS.
	+ commit 0be940905d70125866622c6f53b8d25bde87c21b
	* common/homedir.c [APPLE]: Include procinfo.h
	(macos_myproc_self) [APPLE]: New.
	(unix_rootdir, gnupg_myproc_self): Call macos specific version.

	gpg: Add option primary to the --card-edit generate command.
	+ commit a95da9e25362ea9f33c1e0b4441a86d6eca937f0
	* g10/card-util.c (generate_card_keys): Add arg arg_string and
	  implement option "primary".
	* g10/main.h (GENERATE_KEYPAIR_FULL): New.
	(GENERATE_KEYPAIR_CARDBACKUP): New.
	(GENERATE_KEYPAIR_CARDPRIMARY): New.
	* g10/keygen.c (generate_keypair): Remove args full and and
	  card_backup_key and replace by a new genflags args.  Implement the
	  new CARDPRIMARY feature.

	gpg: Fix long standing regression of "bkuptocard"
	+ commit f103eaee63f702278824967365de16b9757ecc83
	* g10/card-util.c (card_store_subkey): Add arg r_selected_use to
	  return the selected usage.
	* g10/keygen.c (append_subkey_to_keyblock): New.
	* g10/keyedit.c (keyedit_menu) <bkuptocard>:  Also append a
	  corresponding new subkey.

2026-07-14  Werner Koch  <wk@gnupg.org>

	doc: Improve comment on one function.
	+ commit 204d02da018e8aba0bdbae2b5d0c3151a810bf9f
	* g10/keygen.c (write_keybinding): Rename a variable.

2026-07-10  Daniel Cerqueira  <dan.git@lispclub.com>

	po: Update Portuguese Translation.
	+ commit 3913f7b167394cdf47c8f150247c2823f58966e7


2026-07-09  Philip Le  <philip.le@gnupg.com>

	gpgsm: Only display de-vs compliance status in de-vs compliance mode.
	+ commit 4a8f177f390b270df9a86ea47d8eced85420d7d4
	* sm/decrypt.c (gpgsm_decrypt): Check cert chain only in de-vs
	compliance mode.

2026-07-08  NIIBE Yutaka  <gniibe@fsij.org>

	gpg: Fix a memory leak.
	+ commit 6faaeca6b89a64763242cb8b586245085257b066
	* g10/trustdb.c (validate_keys): Release KEYBLOCK.

2026-07-07  Philip Le  <philip.le@gnupg.com>

	gpg: Fix possible double free in import_revoke_cert.
	+ commit a19534b70e27df101a0ad8f653aee8eefdbe8469
	* g10/import.c (import_revoke_cert): Fix possible double free. Use
	LEAVE label on errors.

	gpg: Fix assertion.
	+ commit e319d82d7e3ad9cf2eff3642e23b63304eda55f2
	* g10/build-packet.c (build_sig_subpkt_from_sig): Fix assertion.
	Check fingerprint version before creating the signature subpacket.

2026-07-07  NIIBE Yutaka  <gniibe@fsij.org>

	common:dotlock:unix: Don't emit wrong error message.
	+ commit f454e9372ae0e2a2a0ec034dbdbfa9c8c6d68f77
	* common/dotlock.c (dotlock_take_unix): It's not an error when
	it encounters disappeared lockfile.

2026-07-06  Philip Le  <philip.le@gnupg.com>

	gpg: Fix using wrong fingerprint length.
	+ commit 42e6677f7ab5617ce605cad08079a48095be09cf
	g10/build-packet.c (build_sig_subpkt_from_sig): Use the fpr length of
	the to be revoked key.

2026-07-03  NIIBE Yutaka  <gniibe@fsij.org>

	gpg: Fix trustdb recursive lock problem.
	+ commit 7752c7dcad8942e4227384282e6c8eb85b284d6f
	* g10/tdbio.c (take_write_lock): It's the callee to handle the
	recursive lock.
	(tdbio_sync): Simply use take_write_lock and release_write_lock.

2026-07-02  Werner Koch  <wk@gnupg.org>

	Release 2.5.21.
	+ commit 363096d9c9a973ac8dcad8ee4efd479f50add290


2026-06-30  Werner Koch  <wk@gnupg.org>

	speedo: Create a pkgversioninfo.txt file.
	+ commit 8716b4dac4a79b600d18847b8bc0193bd06e1fc1
	* build-aux/mk-sbom.sh: New.  Taken from gpg4win and extended.
	* Makefile.am (EXTRA_DIST): Add it.
	* build-aux/speedo.mk (gnupg_ver_this): Use sed to extract version.
	(gnupg_commit_id): new.
	(00-unpack): Call mk-sbom.sh.
	(clean-pkg-versions: Clear version files.
	($(bdir)/pkgversioninfo.txt): New.
	(all-speedo,installer): Depend on above.
	(dist-source): Exclude autom4te.cache just in case
	* build-aux/speedo/w32/inst.nsi: Install pkgversioninfo.txt.

2026-06-30  NIIBE Yutaka  <gniibe@fsij.org>

	scd: Fix condition to retrieve ATR.
	+ commit ca25a7a61bebbe4e27dd5568c5b049675b7aa4ae
	* scd/app.c (atr_to_cardtype): Call apdu_get_atr when ATR is NULL.

2026-06-29  Werner Koch  <wk@gnupg.org>

	speedo: Fix passing configure args to w32 builds.
	+ commit 7af73849a5dbbc5c70e43c3a3f5d70c639c80ab4
	* build-aux/speedo.mk (pkgcfg): Use correct number of dollar signs.

	common: Prepare to get rid of map_w32_to_errno.
	+ commit bf808091534f587e8cdacf351b0e7ba060165fd8
	* common/sysutils.c (gnupg_w32_set_errno): Use gpgrt function if
	  available.

	agent: Make batch import of Kyber keys work.
	+ commit 4fca79b67bba04bc5ef2a4402e948c01821ceac5
	* agent/command.c (cmd_import_key): Allow --unattended also for
	  composite keys.

2026-06-26  NIIBE Yutaka  <gniibe@fsij.org>

	dirmngr: Add a validation check in get_dns_cert_standard.
	+ commit c3ec7678799a161b9265969e7ad3fd59605b18ab
	* dirmngr/dns-stuff.c (get_dns_cert_standard): Validate the length.

2026-06-19  NIIBE Yutaka  <gniibe@fsij.org>

	build: Update ldap.m4 for POSIX with no LDAP_DEPRECATED.
	+ commit d3822099fdd4d84323afae4bacaadfeab9cb3e27
	* m4/ldap.m4: Check ldap_err2string, instead.

2026-06-18  Werner Koch  <wk@gnupg.org>

	gpgsm: Require a minimum tag length for GCM decryption.
	+ commit 4c7e68cf3d335328821bdbb70db309a60d0e4fd4
	* sm/decrypt.c (gpgsm_decrypt): Require a minimum authtaglen.

2026-06-18  NIIBE Yutaka  <gniibe@fsij.org>

	w32:common: Fix usleep in w32_wait_when_sharing_violation.
	+ commit ab9ce5f5e775a3a6a37923299685ac371f740103
	* common/sysutils.c (w32_wait_when_sharing_violation): WTIME is
	in milliseconds.

2026-06-17  Philip Le  <philip.le@gnupg.com>

	gpg: Fix copy_signature.
	+ commit 56e11ffe971d5cc58185b4e8d02b82dc432c634b
	* g10/free-packet.c (copy_signature): Set the signers_uid of the new
	copy to NULL if it is not present in the source signature.

	gpg: Use the INT_RCP_FPR subpacket in revocation signatures.
	+ commit 9e0e5547d2a008332873a9b632f82f9414ad887f
	* common/openpgpdefs.h (sigsubpkttype_t): Add Intended Recipient
	Fingerprint signature subpacket.
	* g10/build-packet.c (build_sig_subpkt): Build the Intended Recipient
	Fingerprint signature subpacket for v4 and v5 keys.
	* g10/free-packet.c (free_seckey_enc): Free rev_subject_info.
	(copy_signature): Copy the rev_subject_info struct too.
	* g10/import.c (import_one): Print info that addtional revocation
	signatures are checked.
	(import_revoke_cert): Use the new INT_RCP_FPR subpacket to check
	revocation signature if the subpacket is present.
	* g10/packet.h (rev_subject_info_s): New. Contains the fingerprint of
	the to be revoked key in a revocation signature.
	(PKT_signature): Add rev_subject_info.
	* g10/parse-packet.c (dump_sig_subpkt): Print info line about
	INT_RCP_FPR signature subpacket.
	(parse_signature): Parse INT_RCP_FPR signature subpacket.
	* g10/sig-check.c (check_key_signature): Check the revocation
	signature and ignore revocation for already revoked keys.
	* g10/sign.c (make_keysig_packet): Write the fingerprint of the to be
	revoked key into sig->rev_subject_info.

2026-06-15  NIIBE Yutaka  <gniibe@fsij.org>

	gpg: Fix partial file handling.
	+ commit a54dff1b151b85837714b199f316cbb339275ddc
	* g10/misc.c (gnupg_register_partial_file): Fix possible memory leaks.
	(gnupg_process_partial_file): Better error message.
	* g10/plaintext.c (pfg_close_file): Likewise.

2026-06-12  NIIBE Yutaka  <gniibe@fsij.org>

	gpg: Defer renaming at exit, so that it can remove on failure.
	+ commit ab2e64e4b490bf9ea45f7aff2060e16e7b2b7119
	* g10/main.h (gnupg_register_partial_file): New.
	(gnupg_process_partial_file): New.
	* g10/misc.c (gnupg_register_partial_file): New.
	(gnupg_process_partial_file): New.
	* g10/plaintext.c (pfg_close_file): Add log_info when remove.
	Register the file rename.
	* g10/gpg.c (g10_exit): Call gnupg_process_partial_file.

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

	gpg-authcode-sign: Avoid syntax error if input file does not exist.
	+ commit a9c9435cd4471232a252785b69e4dd44379bc49f
	* tools/gpg-authcode-sign.sh (cleanup): Check that file exists.

2026-06-09  Mikhail Filippov  <mikhail@filippov.me>

	scd:openpgp: Fix CHV1 retry counter byte index.
	+ commit 245330ebeaf67f8e87fef979777c24b983f1a519
	* scd/app-openpgp.c (get_remaining_tries): Read value[4] not value[1]
	for chvno==1.

2026-06-09  NIIBE Yutaka  <gniibe@fsij.org>

	gpg: Fix error propagation in encrypted->compressed->plaintext chain.
	+ commit 91bff8b9fd5e130a3ebf46f0afc6c8ad723ca1e4
	* g10/compress.c (do_uncompress): Return an error of input failure.
	* g10/decrypt-data.c (aead_underflow): Remove modifying an error code,
	because ->checktag_failed is enough for this.
	* g10/plaintext.c (handle_plaintext): Pick up an error code from input
	failure.

2026-06-09  NIIBE Yutaka  <gniibe@fsij.org>
	    Philip Le  <philip.le@gnupg.com>

	gpg: Use partial file on decryption, remove on failure.
	+ commit 8f8b2bdcc3c93f7586ce2c18ddbaff2efe5ba5d3
	* g10/options.h (COMPAT_NO_PARTIALFILEGUARD): New.
	* g10/gpg.c (compatibility_flags_s compatibility_flags): Add
	COMPAT_NO_PARTIALFILEGUARD.
	* sm/gpgsm.c (compatibility_flags_s compatibility_flags): Fix the
	option name.
	* g10/packet.h (struct pfg, pfg_open_file, pfg_close_file): New.
	* g10/decrypt-data.c (decrypt_data): Use pfg_open_file,
	pfg_close_file, instead of get_output_file.  Add log_error for MDC
	failure just like AEAD failure.
	* g10/plaintext.c (get_output_file): Mofify using PFG.
	(pfg_open_file, pfg_close_file): New.
	(handle_plaintext): Use PFG.
	Add iobuf_error check to ensure aead filter failure is detected
	correctly.

2026-06-02  NIIBE Yutaka  <gniibe@fsij.org>

	gpgsm: Use partial file on decryption, remove on failure.
	+ commit ca8633c55edffd9ee46fe80735ee125120e0bc2c
	* sm/gpgsm.c (main): Prepare .part file and rename on success, remove
	on failure.
	* sm/gpgsm.h (COMPAT_NO_PARTIALFILEGUARD): New.

	tools:gpgconf: Raise an error on parse error.
	+ commit f99e4291200d507f5ac8a73066a2ea259a1d7eb8
	* tools/gpgconf-comp.c (change_options_program): Return an
	error, replacing assertion.

	scd: Limit the size of data object returned from a device.
	+ commit ab3b9c7709fdd41b37e44632cc1569e85c6d1e6e
	* scd/apdu.c (send_le, apdu_send_direct): Raise an error
	of SW_WRONG_LENGTH, when it's too large.

2026-06-02  NIIBE Yutaka  <gniibe@fsij.org>
	    Jakub Jelen  <jjelen@redhat.com>

	gpg:keygen: Fix setting keyserver_url in key generation.
	+ commit b42f8da77c5a709ea9fd163ad7c4d73ddeee9dba
	* g10/keygen.c (proc_parameter_file): Save and restore global
	variable opt.def_keyserver_url.

2026-05-29  Philip Le  <philip.le@gnupg.com>

	gpgsm: Fix regression in gpgsm_verify with expired certificates.
	+ commit 32f56a2732f0ac6204aad946388789cdbb0e26eb
	* sm/verify.c (gpgsm_verify): Display information about signers with
	expired certificate.

2026-05-29  Werner Koch  <wk@gnupg.org>

	gpg: Improve diagnostics for faulty secret key packets.
	+ commit 91defad97deca5ce1b9cc8e792ae5fe13c201f7a
	* g10/parse-packet.c (parse_key): Add a note about a mising checksum.

2026-05-26  NIIBE Yutaka  <gniibe@fsij.org>

	tests:gpgscm: Support signed-char machine.
	+ commit 31c8f42bb30306d2bef3e315730c379a19f0af26
	* tests/gpgscm/ffi.c (rl_gets, ffi_schemify_name): Add coercion to
	unsigned char explicitly.
	* tests/gpgscm/main.c: Remove unused <ctype.h>.
	* tests/gpgscm/scheme.c (stricmp, mk_atom, readstrexp)
	(printslashstring, hash_fn): Add coercion to unsigned char explicitly.
	(basic_inchar): Add coercion to unsigned char * explicitly.

2026-05-18  Werner Koch  <wk@gnupg.org>

	gpgscm: Allow building on systems with MUSL libc.
	+ commit a0d4d936424e945966de9314cbb2765a8819efbf
	* tests/gpgscm/scheme.c: Include time.h.

2026-05-13  Werner Koch  <wk@gnupg.org>

	Release 2.5.20.
	+ commit 343d0cb8910441aa44c56ce8673a78e137040c87


2026-05-13  David Nyström  <david.nystrom@est.tech>

	gpg-pair-tool: Fix a never working message manipulation check.
	+ commit 9668489ea440169d96024ea4a90f1160d4732b06
	* tools/gpg-pair-tool.c (proc_msg_confirm): Get memcmp right.

2026-05-13  NIIBE Yutaka  <gniibe@fsij.org>

	agent: Fix cmd_put_secret for saving input line.
	+ commit 1875bc185e066148108108892e30020f8d1cc5ef
	* agent/command.c (cmd_put_secret): Copy the input to newly allocated
	memory, so that the inquiry won't break anything.
	(cmd_get_passphrase): Use xtrystrdup and care about an error.

2026-05-13  Waqar Hameed  <whame@whame.dev>

	agent: Fix not using cache for pinentry loopback.
	+ commit d4b608a31f038d82293b770c8717007e8f05ed1b
	* agent/command.c (cmd_get_passphrase): Use a local copy of cacheid.

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

	gpgsm: Support unsigned attributes.
	+ commit a82cf1036be73fc3dd9323f97ad133954bca1d84
	* sm/sign.c (add_signed_system_attribute): Rename to ...
	(add_system_attribute): this.  Prepare for unsigned attributes.
	(add_signed_attribute): Rename to ...
	(add_attribute): this.  Support unsigned attributes.

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

	gpgsm: Introduce system defined attribute _signingCertificateV2.
	+ commit 0335a9cb0491b329a9b063d13c28bbb92b273d6f
	* sm/sign.c (add_signed_system_attribute): New.
	(add_signed_attribute): Add args cert and signer and divert some calls
	to new function.
	(gpgsm_sign): Allow setting attributes to selected signers.

	gpgsm: Fix an uninitialized use of a callbback parameter.
	+ commit 6d16c43c981b0e1b88e8d2cfb185789fe4d3ba18
	* sm/certchain.c (find_up_dirmngr): Initialize all fields of
	  find_up_store_certs_parm.

	common: Fix never used function strlist_copy.
	+ commit 2bce4a8d9343105d1b7ffee9c003181b64c1e232
	* common/strlist.c (strlist_copy): Fix obvious bug.

2026-05-07  Werner Koch  <wk@gnupg.org>

	gpgsm: New server command SETATTR.
	+ commit a2134cac903ff66ca6c9fb5baa4bddc019378cbe
	* sm/gpgsm.h (opt): Move 'attributes' to ...
	(struct server_control_s): ... here.
	* sm/gpgsm.c (opt_attributes): New.
	(main): Store value for --attribute in new var.
	(gpgsm_init_default_ctrl): Set new member attribute from
	opt_attributes.
	(gpgsm_deinit_default_ctrl): Free new member.
	* sm/server.c (cmd_setattr): New.
	* sm/sign.c (gpgsm_sign): Use ctrl->attributes instead of the fomer
	  opt.attribute.

	common: Add new function strlist_pop_try.
	+ commit e48b9a588d65dcdd5b913f5998c13bc3a00ae5f4
	* common/strlist.c (strlist_pop_try): New.

	dirmngr: Fix uninitialized use of union dns_any in dns_rr_cmp.
	+ commit 21a8f364207291835e5ef714f16611c4f45d2d4d
	* dirmngr/dns.c (dns_rr_cmp): Init two local structs.

2026-05-06  Werner Koch  <wk@gnupg.org>

	gpgsm: The option --attribute is now working.
	+ commit 699052a40a2fe04285df0fce248cc2bd8edb4ddd
	* sm/sign.c (add_signed_attribute): Enable the long existing
	  --attribute option with a recent libksba.

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

	gpgsm: Silence a compiler warning.
	+ commit cc80ff664e2cea4a90dd7c95b23cd75c9023c968
	* sm/keydb.c (keydb_set_cert_flags): Flag EPHEMERAL arg as unused.

2026-05-05  Philip Le  <philip.le@gnupg.com>

	gpg: Consider certify keys for revocation signature check.
	+ commit 39f7f55f3e31a5f9ee020b66f269805b34d7ed5f
	* g10/getkey.c (get_pubkey_for_sig): Include the certify usage flag
	when looking up a public key for verifying a signature.

2026-05-03  Werner Koch  <wk@gnupg.org>

	gpgsm: Use AES256-GCM by default in de-vs mode.
	+ commit 70fa606081e6a745e893ae0274d8eb9eae4db08d
	* sm/gpgsm.c (DEFAULT_CIPHER_ALGO_DE_VS): New.
	(cipher_algo_option_seen): New.
	(main): Switch default cipher algo.

	gpgsm: Implement GCM encryption.
	+ commit 1365f314f6405012051c82984339ecdfc179d218
	* sm/encrypt.c (struct dek_s): Add field 'mode'.
	(init_dek): Take the mode from DEK.
	(gpgsm_encrypt): Allocate the DEK earlier and set the mode from the
	cipher-algo option.  Set content-type depending on the mode.  Adjust
	compliance check.  Handle the KSBA_SR_NEED_SIG event by setting the
	authtag.

2026-04-30  Werner Koch  <wk@gnupg.org>

	gpgsm: Fix regression in password encrypted GCM data.
	+ commit 60a823c97bb027aae0f4f981f94ae21df50af7f9
	* sm/decrypt.c (gpgsm_decrypt): Run the chain validation only if we
	  have a certificate.

	gpgsm: Avoid a final FAILURE status line w/o unsing --status-fd.
	+ commit 69c27fe3778754ef7b440bf97a17d709f295e044
	* sm/gpgsm.c (no_final_failure_status): New.
	(main): Set it.
	(gpgsm_exit): Use it.

	gpgsm: Make --with-ephemeral work correct with the keyboxd.
	+ commit e5472f5cf8c252aa6026435cd3b358618f64d8ad
	* sm/keydb.c (kbx_client_set_ephemeral): Revert logic
	* kbx/kbxserver.c (cmd_setephemeral): Document option --set which can
	  be used for better readability.

	scd:sc-hsm: Avoid buffer overflow with cards providing RSA > 2k.
	+ commit 8a3cfb65e03353d302c5f801c9fb272f49f00653
	* scd/app-sc-hsm.c (do_sign): Return an error for a too small buffer.
	(do_decipher): Ditto.

	scd:sc-hsm: Change error message style.
	+ commit 86d5cfad461fa94c87a6c1c295a47333a59377e1
	* scd/app-sc-hsm.c: Prefix error messages with the module name. Do not
	  do this for the PIN info messages.

2026-04-27  NIIBE Yutaka  <gniibe@fsij.org>

	gpgsm:keydb: Use SETEPHEMERAL and PUTKEYFLAG command.
	+ commit 7428463a9db3c0586b30fe6cff884bcb35972d1e
	* sm/keydb.c (kbx_client_set_ephemeral): New.
	(keydb_set_ephemeral): Implement the keyboxd use case.
	(set_cert_flags): Rename from keydb_set_cert_flags for the case
	of local keybox access.
	(keydb_set_cert_flags): Implement the keyboxd use case.
	(keydb_clear_some_cert_flags): Implement the keyboxd use case.

	keyboxd: Support ephemeral mode to search/store accordingly.
	+ commit aa0f8990beb811e1b9121126f0ac6b326a2e2e4f
	* kbx/backend-sqlite.c (be_sqlite_search): Care about ephemeral mode.
	(store_into_pubkey): Add an argument to care about ephemeral mode.
	(be_sqlite_store): Follow the change.

	keyboxd: Add PUTKEYFLAG command (only for SQLite backend).
	+ commit e24a191470975b626b00aafed3151c4f942c34ac
	* kbx/backend-sqlite.c (be_sqlite_putkeyflag): New.
	* kbx/backend.h (be_sqlite_putkeyflag): New.
	* kbx/frontend.c (kbxd_putkeyflag): New.
	* kbx/frontend.h (kbxd_putkeyflag): New.
	* kbx/kbxserver.c (hlp_putkeyflag, cmd_putkeyflag): New.
	(register_commands): Add PUTKEYFLAG.

	kbx: Fix the offset for KEYBOX_FLAG_CREATED_AT.
	+ commit 91436ab15ad7f33784bac393f49b112b9440fb08
	* kbx/keybox-search.c (_keybox_get_flag_location): Fix the value.

2026-04-26  Werner Koch  <wk@gnupg.org>

	gpgsm: Fix possible double free in the CMS parser.
	+ commit 2ceca1f5f978c878f0ce7a097002aba9778bd274
	* sm/decrypt.c (gpgsm_decrypt): Init issuer and serial in the recp
	  loop to avoid a double free in case of an error from
	  ksba_cms_get_issuer_serial.  Also clar enc_val to be safe for future
	  code modifications.
	* sm/verify.c (gpgsm_verify): Init serial.  Not really needed, though.

2026-04-24  Werner Koch  <wk@gnupg.org>

	Release 2.5.19.
	+ commit b0750c06a39adebcaa0d4f250156c3d3238545d9


2026-04-23  Werner Koch  <wk@gnupg.org>

	gpg: New options --show-session-hash and --show-only-session-hash.
	+ commit ecd0f7afa1cf3f1c2ecf90be6ede329dfa082823
	* g10/options.h (opt): Add field show_session_hash.
	* g10/gpg.c (oShowOnlySessionHash,oShowSessionHash): New.
	(opts): Add options.
	(main): Set flags.
	* common/status.h (STATUS_SESSION_HASH): New.
	* g10/decrypt-data.c (decrypt_data): Emit new status code. Make
	  opt.show_only_session_key work for the new options.

2026-04-22  Werner Koch  <wk@gnupg.org>

	dirmngr: New keyword "clear" for --keyserver.
	+ commit 2ab4cba36ccd70f1dc5becff8d47bde3f187e289
	* dirmngr/dirmngr.c (parse_rereadable_options): Add "clear" keyword.

2026-04-20  NIIBE Yutaka  <gniibe@fsij.org>

	gpg,regexp: Fix REGEXP_PREFIX macro, expanded correctly.
	+ commit 97c057ff47836d26e869873aeeead9107e3cfd39
	* regexp/jimregexp.h (ADD_PREFIX0): New.
	(ADD_PREFIX): Have two argument, prefix and name.
	(regcomp, regexec, regerror, regfree): Use REGEXP_PREFIX.

2026-04-16  Werner Koch  <wk@gnupg.org>

	agent: Rework the trustlist reading code.
	+ commit 9ccae14354392e9ed0359647478d45812e70c9ea
	* agent/trustlist.c (read_one_trustfile): Replace es_fgets by
	  es_read_line.  List all errors before returning the first error.
	  Print a status warning line.  Add arg ctrl.
	(read_trustfiles): Add arg ctrl and pass on.
	(istrusted_internal): Ditto.
	(agent_listtrusted): Ditto.

	agent: Fix a minor utf8 file name problem with trustlist.txt.
	+ commit d5a66c7ed4a59e7c5fa34a1f6447efb1063f2a6a
	* agent/trustlist.c (agent_marktrusted): Use gnupg-access.

2026-04-16  Philip Le  <philip.le@gnupg.com>

	gpgsm: Emit more details when failing to check a crlDP.
	+ commit 09ee3833ef6a1a914d2253f7a4f1ee861b98b350
	* dirmngr/crlcache.c (crl_cache_reload_crl): Print status messages on
	errors.
	* dirmngr/ks-engine-http.c (ks_http_fetch): Print a status message on
	error.
	* sm/call-dirmngr.c (warning_and_note_printer): Add new warning
	messages.
	* sm/certchain.c (is_cert_still_valid): Log an error message when
	failing to retrieve a crlDP.

2026-04-14  Werner Koch  <wk@gnupg.org>

	gpgsm: Show rsaPSS certificates as de-vs compliant in listings.
	+ commit 639f7f18fc65b90ab7d64b5bc9d32017dfdddf82
	* sm/certcheck.c (extract_pss_params): Add arg 'silent'.
	(gpgsm_check_cert_sig): Factor some code out to ...
	(get_sig_val_from_cert): new function.
	(gpgsm_pss_hash_algo_from_cert): New.
	* sm/keylist.c (print_compliance_flags): Handle rsaPSS.

2026-04-14  Eva Bolten  <eva.bolten@gnupg.com>

	de.po: Remove reference to obsolete mail address.
	+ commit 48239ffa894077a1652d4f455714db2fd78c1110


2026-04-14  NIIBE Yutaka  <gniibe@fsij.org>

	tools:gpgtar: Fix for a case of non existing dir with -C.
	+ commit 1bdd1f5bb4d192d9700dd6ab2540b0a940c23dd5
	* tools/gpgtar-extract.c (gpgtar_extract): Call the
	check_output_directory function only when DIRNAME exists.

2026-04-13  Werner Koch  <wk@gnupg.org>

	gpgconf,w32: Show the integrity level with -X and -V.
	+ commit 900245653656991371612a59018a64d07513fad9
	* tools/gpgconf.c (w32_get_integrity_level): New.
	(show_version_gnupg): Include more Windows specific stuff.
	(show_configs): Show the integrity level.

2026-04-09  Werner Koch  <wk@gnupg.org>

	gpgtar: Add --compatibility-flag  no-dir-check.
	+ commit 86020945ce1564a7f6cfa6a18ea8dcdca5e19baf
	* tools/gpgtar.c (oCompatibilityFlags): New.
	(opts): Add "compatibility-flags".
	(compatibility_flags): New.
	(parse_arguments): Parse it.
	* tools/gpgtar.h (opt): Add field compat_flags.
	(COMPAT_NO_DIR_CHECK): New.
	* tools/gpgtar-extract.c (gpgtar_extract): No directory check if
	  COMPAT_NO_DIR_CHECK is set.

2026-04-07  Werner Koch  <wk@gnupg.org>

	dirmngr: New command handler "timestamp"
	+ commit 3903b05e9c256dfc419d66b1af4238c729669a02
	* dirmngr/dirmngr.h (MAX_DIGEST_LEN): New.
	* dirmngr/server.c (parse_hexstring): New.  Taken from gpg-agent.
	(cmd_timestamp): New stub command.

	gpg: Fix edge case in --refresh-keys.
	+ commit fd0d620a6e15fda9c6f836fee443a6de73570566
	* g10/keyserver.c (keyserver_get): Take care of NO_DATA in one chunk.

2026-04-07  Philip Le  <philip.le@gnupg.com>

	gpgsm: Add a certificate chain check for de-vs compliance.
	+ commit 56a1e5f3dda36b396874035c313fb2e6dd972c2f
	* sm/certchain.c (do_validate_chain): Fix typo
	* sm/decrypt.c (gpgsm_decrypt): Check the certifacte chain for de-vs
	compliance
	* sm/verify.c (gpgsm_verify): Check the certificate chain for de-vs
	compliance

	* sm/certchain.c (do_validate_chain): Set the is_de_vs user data and
	flag.
	* sm/keylist.c (cert_has_de_vs_flag): New.
	(print_compliance_flags): Print compliance string only if the flag
	is set.

2026-04-07  Werner Koch  <wk@gnupg.org>

	gpgsm: Allow cipher mode as part of the algo for --cipher-algo.
	+ commit 047d699aa40c6cd3f35c337091951b62adf32493
	* common/miscellaneous.c (gnupg_cipher_mode_name): New.
	* common/audit.c (proc_type_encrypt): Print the encryption mode.
	* sm/misc.c (gpgsm_map_cipher_name_to_oid): New.
	* sm/gpgsm.c (DEFAULT_CIPHER_ALGO): Change to AES256-CBC for
	consistent error messages.
	(main): Replace the alias name mapping using if-else by a call to the
	new function.

	* g10/misc.c (openpgp_aead_algo_name): Use gnupg_cipher_mode_name for
	consistency.

2026-04-02  Werner Koch  <wk@gnupg.org>

	gpgsm: Make GCM fully compliant for de-vs.
	+ commit 04fd775fce5999df51cc6588defd3d4f9c7104da
	* common/compliance.c (gnupg_cipher_is_compliant): Allow GCM for
	  gpgsm.
	(gnupg_cipher_is_allowed): Allow GCM for gpgsm also in producer mode.

	gpgsm: Announce that we can handle GCM encrypted data.
	+ commit 699b6d0603175934eddf7075a3984bdbc38c89a2
	* sm/sign.c (gpgsm_sign): Add GCM capabilities.

2026-04-01  NIIBE Yutaka  <gniibe@fsij.org>

	agent:ssh: Fix RSA padding in signature handling.
	+ commit c67e0b0a86b400f34a1ac2944719e0303fc00daa
	* agent/command-ssh.c (ssh_signature_encoder_rsa): Swap DST and SRC.

2026-03-31  Werner Koch  <wk@gnupg.org>

	gpgsm: Fix bug so that a cert can be signed by a different algo.
	+ commit 66fdafab3c6db03e29ef561544859055f5cc0d88
	* sm/certreqgen.c (create_request): Take the algo from the sigkey
	  instead of the to-be-signed public key.

2026-03-26  Werner Koch  <wk@gnupg.org>

	gpg: Improve a recursion check.
	+ commit bc7c91bee521e4adf3506ca32bf34177b84ce1c5
	* g10/gpg.h (struct server_control_s): Add in_check_revocation_keys.
	* g10/sig-check.c (check_revocation_keys): Replace static var by new
	  member of ctrl.  Also rename rc to err.

2026-03-26  NIIBE Yutaka  <gniibe@fsij.org>

	keyboxd: Add SETEPHEMERAL command.
	+ commit 92c75575ecd483b37c21e7826d5aa58acb7d24da
	* kbx/kbxserver.c (hlp_setephemeral, cmd_setephemeral): New.
	(table): Add SETEPHEMERAL command.
	* kbx/keyboxd.h (struct server_control_s): Add ephemeral field.

2026-03-25  NIIBE Yutaka  <gniibe@fsij.org>

	gpgsm: Make sure initializing TMP_CERT.
	+ commit 2a2145782cbb9f290f101f0391fdb8558c616d9e
	* sm/certchain.c (do_validate_chain): Initialize TMP_CERT.

	agent: Raise GPG_ERR_BAD_SECKEY when p >= q for RSA key.
	+ commit 8b6de59ad880b1d2ac799c66b198a4aaff1d45c5
	* agent/cvt-openpgp.c (convert_secret_key): Reject a key
	with p >= q.

2026-03-24  NIIBE Yutaka  <gniibe@fsij.org>

	common:dotlock: Clean up for error/info/warning message.
	+ commit 533bcc265e9ce41a4f512b4f92ed74879de30b24
	* common/dotlock.c (my_info_*,my_error_*,my_debug_1): Remove.
	(struct dotlock_handle): Rename to msg_cb from info_cb, and
	to msg_cb_arg from info_cb_value.
	(default_msg_cb): New.
	(read_lockfile): Use msg_cb and msg_cb_arg.
	(dotlock_create_unix, dotlock_create_w32): Likewise.
	(dotlock_take_unix, dotlock_take_w32): Likewise.
	(dotlock_release_unix, dotlock_release_w32): Likewise.
	(dotlock_release): Likewise.
	(dotlock_create_with): New.
	(dotlock_finish_create, dotlock_set_info_cb): Remove.
	(dotlock_create): Use dotlock_create_with.
	* common/dotlock.h (define dotlock_create_with): New.
	(dotlock_finish_create, dotlock_set_info_cb): Remove.
	(DOTLOCK_LOCKED_ALREADY, DOTLOCK_FATAL): New.
	(DOTLOCK_PREPARE_CREATE): Remove.
	* common/t-dotlock.c (lock_and_unlock): Use new internal API.
	* kbx/backend-sqlite.c (create_or_open_database): Ditto.

	tool:gpgtar: Check the output directory with --directory.
	+ commit 7a2692fe5e580ae3bbb2a47abc4baaf1af65aa88
	* doc/tools.texi (gpgtar): Clarify about the --directory option.
	* tools/gpgtar-extract.c (check_output_directory): New.
	(gpgtar_extract): Call check_output_directory.

2026-03-23  NIIBE Yutaka  <gniibe@fsij.org>

	scd:openpgp: Fix removal of the diagnostic for Admin PIN.
	+ commit 41c4325813c1dcb4a5b439e09489c987f94ccd40
	* scd/app-openpgp.c (build_enter_pin_prompt): Recover log_info.

2026-03-22  Werner Koch  <wk@gnupg.org>

	gpg: Add option --use-ocb-sym.
	+ commit ccdcdfbb37ab6b424ab752523b57aa978c87d349
	* g10/gpg.c (oUseOCBSym): New.
	(opts): Add --use-ocb-sym.
	(main): Set it.
	* g10/options.h (opt): Add field use_ocb_sym.
	* g10/encrypt.c (encrypt_symmetric): Take care of the new option.
	(use_aead): Ditto.

	gpg: Rename a variable for clarity.
	+ commit ddde8ae64db713b89d86fd395e7b465d7ca5028b
	* g10/options.h (opt): Rename field force_aead to force_ocb and change
	  all users.
	* g10/gpg.c (enum cmd_and_opt_values): Rename oForceAEAD to oForceOCB.

2026-03-20  NIIBE Yutaka  <gniibe@fsij.org>

	scd:openpgp: UI improvement for use of PIN-entry.
	+ commit 2239f687bb14428b6167517f92ae74077f96b8b7
	* scd/app-openpgp.c (get_remaining_tries): Add support for Reset code.
	(get_prompt_info): Don't show the "Count" line, when SIGCOUNT is zero.
	(build_enter_pin_prompt): New.
	(verify_a_chv): Use build_enter_pin_prompt.
	(build_enter_admin_pin_prompt): Likewise.
	(do_change_pin): Likewise.
	(do_check_pin): Use get_remaining_tries.

2026-03-18  NIIBE Yutaka  <gniibe@fsij.org>

	tests:openpgp: With gpgtar, extract tarball into an empty directory.
	+ commit 268e435f921a834909429063ea656186266a0f85
	* tests/openpgp/defs.scm (setup-legacy-environment): Only
	call create-gpghome in case of no --unpack-tarball.

2026-03-10  Werner Koch  <wk@gnupg.org>

	gpgsm: Skip the optional PKCS#12 PBES2 keyLength parameter.
	+ commit c8c9604bba0cf2eeac4dd5b4f994a545a95c2d3a
	* sm/minip12.c (parse_bag_encrypted_data): Parse and ignore the
	  optional keyLength.
	(parse_shrouded_key_bag): Ditto.

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

	scd: Return GPG_ERR_PIN_BLOCKED before asking the PIN to a user.
	+ commit c5f4900a57f8bcc752d2076005748e494fe044a3
	* scd/app-openpgp.c (do_change_pin): Check retry counter before
	asking the PIN and return GPG_ERR_PIN_BLOCKED if locked.

	scd: Return GPG_ERR_BAD_RESET_CODE when unblocking fails with PUK.
	+ commit 55b72dcb13bad5cb1be9fce290ce1923a57e41be
	* scd/app-openpgp.c (do_change_pin): Return GPG_ERR_BAD_RESET_CODE
	when changing PIN fails with PUK.

	scd: Return GPG_ERR_PIN_BLOCKED before asking pin.
	+ commit 1c2ba3bb20600b9ff11fcd7f3d926eb70fd753fa
	* scd/app-openpgp.c (verify_a_chv): Return GPG_ERR_PIN_BLOCKED when
	it found locked.

	gpg: Don't call gcry_kdf_derive with empty passphrase.
	+ commit 3ddb622f4db922d4fc07c6e0026d64c45ac14aa9
	* g10/passphrase.c (passphrase_to_dek): Return NULL when PW is empty,
	not raising an error by gcry_kdf_derive.

2026-03-04  NIIBE Yutaka  <gniibe@fsij.org>

	build: Add forgotten m4 file and update m4/Makefile.am.
	+ commit 087f4b745bdad715846659d2af491db591a58329
	* m4/Makefile.am (EXTRA_DIST): Update.  Add comments for their origin.
	* m4/intlmacosx.m4: New.

2026-02-24  Werner Koch  <wk@gnupg.org>

	Release 2.5.18.
	+ commit 1b8362889a522bbcfeb80ef3af61218db216f62b


2026-02-24  NIIBE Yutaka  <gniibe@fsij.org>

	gpg:keygen: Add ECC information for composit keys.
	+ commit d67fa0d6874846f0b0fa055500a72adbc0e29d1a
	* g10/keygen.c (ask_kyber_variant): Show curve information.

2026-02-20  Werner Koch  <wk@gnupg.org>

	gpgsm: New option --assert-validsig.
	+ commit 9500b2c7762b8b91ee5d3a3ed3cdb7f1e4143eef
	* sm/gpgsm.c (oAssertValidsig, oAssertKeyusage): New.
	(opts): Add options --assert0validsig and --assert-keyusage.
	(assert_validsig_true): New global var.
	(main): Set options.
	(gpgsm_exit): Implement --assert-validsig.
	* sm/gpgsm.h (opt): Add fields assert_validsig and assert_keyusage.
	* sm/verify.c (gpgsm_verify): Set assert_validsig_true.

2026-02-20  NIIBE Yutaka  <gniibe@fsij.org>

	gpg: Fix armor parsing when no CRC is found.
	+ commit b7aa3f5e320dff0d35ce90c6f6381ee4213b6eb7
	* g10/armor.c (radix64_read): Fix no CRC at the end of armor.

2026-02-19  NIIBE Yutaka  <gniibe@fsij.org>

	agent: Fix debug output for ECC decryption.
	+ commit 463812bfed4ed3074fa6990c89dc6dbbdc9d5837
	* agent/pkdecrypt.c (ecc_extract_pk_from_key): Length fix.

2026-02-17  Daniel Cerqueira  <dan.git@lispclub.com>

	po: Update Portuguese Translation.
	+ commit 6d81e29392ed203dd0445416b1d50f301fe3ec59
	 - change po/pt.po

2026-02-17  Sam James via Gnupg-devel  <gnupg-devel@gnupg.org>

	g10: fix uninit use in aead filter.
	+ commit ac99481ee65a412eb8add995ae338cd7ff52e8ec
	* g10/decrypt-data.c (aead_underflow): Initialize 'err'
	  to 0.

	g10: fix uninit use.
	+ commit 1687dd35ee98e2710b6ac9592eee612e1de4741c
	* g10/encrypt.c (reencrypt_to_new_recipients): Drop first
	  (and uninitialized) use of 'count'.

	g10: check null in assert.
	+ commit 0f5c9c845fda1f8828ff17e5e9d1819813cc8f81
	* g10/keyedit.c (keyedit_quick_revsig): Check 'keyblock' in log_assert.

2026-02-17  NIIBE Yutaka  <gniibe@fsij.org>

	gpg: Support deleting a composite secret key in gpg-agent.
	+ commit 49e61332af4912c9234d98710d5bd1eac6e806b0
