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
	* g10/call-agent.c (agent_delete_key): Handle KEYGRIP2 and
	issue another command with it, if any.

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

	agent: Fix the regression in pkdecrypt with TPM RSA.
	+ commit 6eed3959303c81c9699fe9273030e480732f72be
	* agent/divert-tpm2.c (divert_tpm2_pkdecrypt): Care about additional
	0x00.

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

	dirmngr: Let KS_SEARCH print all uid records for a key.
	+ commit 2dde9ddf56feb79f9f61225c07abf6e4ef7041e6
	* dirmngr/ks-engine-ldap.c (ks_ldap_search): Use a loop to print all
	  user-ids.

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

	gpgscm: New operator "*long-time-t?" to detect proper time_t systems.
	+ commit 86baca6e62b3323d516056bf6cfbf9014cf3a8ec
	* tests/gpgscm/opdefines.h (OP_LONG_TIME_T): New.
	* tests/gpgscm/scheme.c (Eval_Cycle): Implement it.

	* tests/openpgp/quick-key-manipulation.scm (last-pgp-date): new.
	(last-pgp-date-5min): New.
	(last-pgp-seconds): New.
	(last-pgp-seconds-5min): New.
	("Checking that we can add subkeys..."): Use the new functions instead
	of the year 20238 constants.

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

	gpgconf: Show /proc/self/exe with -V and -X.
	+ commit c86374ea7756984b3673a4c34cb12a808411e5a4
	* common/homedir.c (w32_rootdir): Factor some code out to ...
	(w32_myproc_self): here.
	(unix_rootdir): Factor some code out to ...
	(unix_myproc_self): here.
	(gnupg_myproc_self): New.
	* tools/gpgconf.c (show_version_gnupg): Use new function.

2026-01-30  Mario Haustein  <mario.haustein@hrz.tu-chemnitz.de>

	scd:p15: Add support for D-Trust Card 6.1/6.4.
	+ commit 987c6a398a9505399b2c25a775d4b625753bc962
	* scd/app-p15.c (CARD_TYPE_STARCOS_37): New.
	(CARD_PRODUCT_DTRUST6): New.
	(read_p15_info): Add workaround for wrongly encoded PIN reference in
	EF.AOD
	(prepare_verify_pin): Use select_df_by_path to select application, as
	the card operating system doesn't support path-based selections.
	(do_sign): Support for key reference IDs longer than one byte.

	scd: allow to query FCP when selecting an application.
	+ commit eb4a805de46f2f877861e543e3f563f9b810bb78
	* scd/iso7816.c (iso7816_select_application_ext): Add flag die query FCP
	* scd/iso7816.h: define new response type flags
	* scd/app.c: apply new flags
	* scd/app-piv.c: ditto
	* scd/app-p15.c: query FCI during application selection and fallback to
	  FCP if file ID tag 0x83 is not found.

2026-01-28  philip  <philip.le@gnupg.com>

	tests: Add test for parsing too large signature packets.
	+ commit 0437dfc94b2386aa9b49fca60a02bc7226f53c0f
	* tests/openpgp/issue8049.scm: new

2026-01-27  Werner Koch  <wk@gnupg.org>

	Release 2.5.17.
	+ commit 17b514596f6000ebbffe5ec1101b6818b9c83cfe


2026-01-26  Werner Koch  <wk@gnupg.org>
	    NIIBE Yutaka  <gniibe@fsij.org>

	gpg: Fix possible NULL-deref with overlong signature packets.
	+ commit 11b7e4139e82fcd0cee72f38964444a17c812547
	* g10/parse-packet.c (parse_signature): Retrun an error for overlong
	subpacket area

	tpm: Fix possible buffer overflow in PKDECRYPT.
	+ commit 93fa34d9a346020355cd51d54102d30d4f177323
	* tpm2d/tpm2.c (tpm2_ecc_decrypt): Bail out on too long CIPHERTEXT.
	(tpm2_rsa_decrypt): Ditto.

2026-01-25  Werner Koch  <wk@gnupg.org>

	agent: Add accelerator keys for "Wrong" and "Correct".
	+ commit eba28eeaa1b1f7d08b7bacadba6381a3a06a4715
	* agent/trustlist.c (agent_marktrusted): Use hack for new accel keys.

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

	agent: Fix stack buffer overflow when using gpgsm and KEM.
	+ commit 2438271ab601f6e3d436db11825f2b2df9498e2c
	* agent/pkdecrypt.c (ecc_kem_decrypt): Check sessionkey_len before
	calling gcry_cipher_decrypt.  Always close decryption handle.

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

	gpgsm: Make multiple search patterns work with keyboxd.
	+ commit c7770b0a7068b3f75234db092c0352ca4fe9a770
	* sm/keydb.c (keydb_search): Loop over all descriptions.

	gpg: Remove a dead statement.
	+ commit 71570012ed515f67c5fa65b5808451ea74f63eeb
	* g10/call-keyboxd.c (keydb_search): Remove useless while statement.

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

	gpg: New export-option "keep-expired-subkeys"
	+ commit 0bcd9be9a068f7ef3b1fd8bc1cc9dc574dd2b07f
	* g10/export.c (parse_export_options): Add "keep-expired-subkeys".
	(do_export_stream): With this option only use KEY_CLEAN_INVALID is
	used.

	doc: Improve the "Programmatic use of GnuPG" section.
	+ commit 0e37a6779e566ccd13ea23b73c5ac9617b288621
	* doc/gpg.texi (Programmatic use of GnuPG): Mention --status-fd.

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

	doc: Rename an internal function to clarity the purpose.
	+ commit 5f4ad39b16a43c522dfed8a72891128b60b9b313
	* common/w32-cmdline.c (count_backslashes): Rename to ...
	(count_leading_backslashes): This.

	dirmngr: Help detection of bad keyserver configurations.
	+ commit 8d4fc76677cccc29f67c31c4f06f692261156fe3
	* dirmngr/server.c (count_colons): New.
	(cmd_keyserver): Print a warning status in some cases.

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

	Release 2.5.16.
	+ commit 7d38a23b8fb165792b4515794fa75d7196266e31


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

	Revert "misc: Validate the value on the use of strtol."
	+ commit a9da315fb8d1cb074f97a358c22b72696edc39f6
	* g10/misc.c: No checking for end-of-string after strtol because the
	function is also used for strings with several values.

	Release 2.5.15.
	+ commit 7ee523ac29032292aed46612d80d847234c1afae


	gpg: Deprecate the option --not-dash-escaped.
	+ commit 947ea3c411f0c14ba002612bb4ab500fba105570
	* g10/options.h (COMPAT_ALLOW_NOT_DASH_ESCAPED): new.
	* g10/gpg.c (compatibility_flags): Add "allow-not-dash-escaped".
	(main): Print a deprecation warning.
	* g10/armor.c (parse_header_line): Ignore the NotDashEscaped header.

	* tests/openpgp/clearsig.scm (vectors): Remove test case.

	gpg: Fix for a recently claimed harmless keyboxd change.
	+ commit abe9bddaa72bac34b4ad01367ecf2589d63153af
	* g10/call-keyboxd.c (search_status_cb): Bump up last_pk_no to fix for
	the discrepancy between keyboxd API and out internal use.

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

	keyboxd: Fix database schema migration.
	+ commit 81bb949755ce1344206bb8750185b573bc22bbf4
	* kbx/backend-sqlite.c (migrate_from_v1_to_v2): Explicitly name the
	columns of the new table.

	gpg: Implement skip function for keyboxd to fix a validation bug.
	+ commit 6c1d13ac66d74f3fbe7993811d0ba9d02ff99733
	* kbx/keybox-openpgp.c (_keybox_parse_openpgp): Add flag only_primary.
	Change all callers.
	(kbx_get_first_opgp_keyid): New.
	* kbx/keybox-search-desc.h: Add prototype for this function.
	* g10/call-keyboxd.c (keydb_search): Implement the skip function.

	keybox: Fix the not yet used uid and pk keyblock index return values.
	+ commit 01eaa386ec06df399954694dcf6fc086be399185
	* kbx/backend-sqlite.c (be_sqlite_search): Return pk_no and uid_no
	without an offset of 1.

2025-12-23  Temuri Doghonadze  <temuri.doghonadze@gmail.com>

	po: Update Georgian Translation.
	+ commit c7472b1b9d2f739446efb9c5c72cfb8c495ebbbf


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

	Avoid the function name thread_init.
	+ commit 4350fc192251f668c0ee9a88a8bad574e4fc6ac9
	* agent/gpg-agent.c (thread_init_once): Rename to ...
	(agent_thread_init_once): this.
	* kbx/keyboxd.c (thread_init_once): Rename to ...
	(keyboxd_thread_init_once): this.
	* dirmngr/dirmngr.c (thread_init): Rename to ...
	(dirmngr_thread_init): this.

2025-11-28  Werner Koch  <wk@gnupg.org>

	dirmngr: Add a compatibility flag for use with newer Libksba versions.
	+ commit 674aa54242d121354b5edd066d6753194446cbd7
	* dirmngr/dirmngr.h (COMPAT_OCSP_SHA256_CERTID): New.
	* dirmngr/dirmngr.c (compatibility_flags): Add compat flag.
	(my_ksba_hash_buffer): Support SHA256.
	* dirmngr/ocsp.c (do_ocsp_request): Make use of the flag.

2025-11-25  NIIBE Yutaka  <gniibe@fsij.org>

	common:dotlock: Escalate a warning message up to INFO from DEBUG.
	+ commit 32a3e5f83bbb8c6f21fcc11d28330e136fbe1785
	* common/dotlock.c (dotlock_take): Use my_info_1 when already locked.
	(dotlock_release): Likewise.

	kbx:sqlite: Don't call dotlock_release.
	+ commit aab29b1286936fbddacdc8fffe2f0399fee668d7
	* kbx/backend-sqlite.c (create_or_open_database): Remove call to
	dotlock_release, as dotlock_destroy cares the lock if any.

	common:dotlock: Comment fixes.
	+ commit d4e40e2a8adc7b6278fb7d0923faf88b316f4dc2
	* common/dotlock.h: dotlock_tool is now in gpgconf.
	* common/dotlock.c: Likewise.

	common:dotlock:w32: Minor fixes for Windows.
	+ commit 68dcfec91b9007884e1c46920647007618d402c8
	* common/dotlock.c (any8bitchar): Define under HAVE_DOSISH_SYSTEM.
