Changelog for gnupg: 2.5.20 -> 2.5.21 Source: ChangeLog 2026-07-02 Werner Koch Release 2.5.21. + commit 363096d9c9a973ac8dcad8ee4efd479f50add290 2026-06-30 Werner Koch 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 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 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 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 build: Update ldap.m4 for POSIX with no LDAP_DEPRECATED. + commit d3822099fdd4d84323afae4bacaadfeab9cb3e27 * m4/ldap.m4: Check ldap_err2string, instead. 2026-06-18 Werner Koch 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 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 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 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 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 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 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 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 Philip Le 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 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 Jakub Jelen 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 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 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 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 . * 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 gpgscm: Allow building on systems with MUSL libc. + commit a0d4d936424e945966de9314cbb2765a8819efbf * tests/gpgscm/scheme.c: Include time.h.