From a05c27e670b72c9afe5dee38b2c5bb02654d7f52 Mon Sep 17 00:00:00 2001 From: Werner Koch Date: Mon, 11 May 2026 14:19:32 +0200 Subject: Make GPGME_DECRYPT_SESSION_HASH also work for gnupg 2.2.55 * src/engine-gpg.c (have_usable_session_hash): New. (gpg_decrypt): Use here. --- NEWS | 17 +++++++++++++---- src/engine-gpg.c | 11 ++++++++++- 2 files changed, 23 insertions(+), 5 deletions(-) diff --git a/NEWS b/NEWS index 36bbed9a..5064333a 100644 --- a/NEWS +++ b/NEWS @@ -1,19 +1,28 @@ -Noteworthy changes in version 2.0.2 (unreleased) [C45/A0/R)] +Noteworthy changes in version 2.1.0 (unreleased) [C45/A0/R)] ------------------------------------------------ * New flags "is_de_vs" and "beta_compliance" for encryption results. [T6702] + * New decryption flag GPGME_DECRYPT_SESSION_HASH and new field + session_hash in gpgme_decrypt_result_t. For details see the gpg + option --show-session-key. [rM63f18298d3] + * New context flag "export-filter". [T8033] * Extend the internal gpgsm_assuan_simple_command to consume all received lines. This fixes a possible lockup introduced by the fix for T7759. [T8187] - * Interface changes relative to the 2.0.1 release: + * Interface changes relative to the 2.0.0 release: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - gpgme_set_ctx_flag EXT: New flag 'export-filter'. - gpgme_decrypt_result_t EXT: New fields is_de_vs and beta_compliance. + gpgme_set_ctx_flag EXT: New flag "export-filter". + gpgme_decrypt_result_t EXT: New fields is_de_vs, + beta_compliance, and session_hash. + GPGME_DECRYPT_SESSION_HASH NEW. + + Release-info: https://dev.gnupg.org/T8237 + Noteworthy changes in version 2.0.1 (2025-09-23) [C45/A0/R1] ------------------------------------------------ diff --git a/src/engine-gpg.c b/src/engine-gpg.c index 8c4e38bf..eea97bc7 100644 --- a/src/engine-gpg.c +++ b/src/engine-gpg.c @@ -437,6 +437,15 @@ have_usable_gpgtar (engine_gpg_t gpg) } +static int +have_usable_session_hash (engine_gpg_t gpg) +{ + return have_gpg_version (gpg, "2.5.19") + || (have_gpg_version (gpg, "2.2.55") + && !have_gpg_version (gpg, "2.3.0")); +} + + static int have_option_proc_all_sigs (engine_gpg_t gpg) { @@ -1979,7 +1988,7 @@ gpg_decrypt (void *engine, err = add_arg (gpg, "--list-only"); if (!err && (flags & GPGME_DECRYPT_SESSION_HASH) - && have_gpg_version (gpg, "2.5.19")) + && have_usable_session_hash (gpg)) err = add_arg (gpg, (flags & GPGME_DECRYPT_LISTONLY)? "--show-only-session-hash" /* */ : "--show-session-hash"); -- cgit