diff options
| author | Ingo Klöcker <[email protected]> | 2023-02-08 13:44:38 +0000 | 
|---|---|---|
| committer | Ingo Klöcker <[email protected]> | 2023-02-10 08:54:03 +0000 | 
| commit | 41dc3bd22a3e0001abec8f2bea79b40ee5ad00be (patch) | |
| tree | 95bf13b97712f8acf074f28d8daf62a96415933a /src/decrypt-verify.c | |
| parent | cpp: Improve debug output of some enums (diff) | |
| download | gpgme-41dc3bd22a3e0001abec8f2bea79b40ee5ad00be.tar.gz gpgme-41dc3bd22a3e0001abec8f2bea79b40ee5ad00be.zip | |
core: Allow finalization of signature verification of unencrypted data
* src/decrypt-verify.c (decrypt_verify_status_handler): Call
_gpgme_verify_status_handler on EOF even if
_gpgme_decrypt_status_handler returned NO DATA error.
* tests/gpg/t-decrypt-verify.c (normal_signed_message): New.
(main): Add test with signed, but not encrypted data.
--
This allows the verify status handler to finalize the verification of
the last signature even if the decrypt status handler returned a NO DATA
error because the input data wasn't encrypted.
GnuPG-bug-id: 6368
Diffstat (limited to 'src/decrypt-verify.c')
| -rw-r--r-- | src/decrypt-verify.c | 10 | 
1 files changed, 7 insertions, 3 deletions
| diff --git a/src/decrypt-verify.c b/src/decrypt-verify.c index b63318f2..3ff15feb 100644 --- a/src/decrypt-verify.c +++ b/src/decrypt-verify.c @@ -35,13 +35,17 @@ decrypt_verify_status_handler (void *priv, gpgme_status_code_t code,  			       char *args)  {    gpgme_error_t err; +  gpgme_error_t err2;    err = _gpgme_progress_status_handler (priv, code, args);    if (!err)      err = _gpgme_decrypt_status_handler (priv, code, args); -  if (!err) -      err = _gpgme_verify_status_handler (priv, code, args); -  return err; +  /* Allow finalization of signature verification even if previous handler +   * returned NO DATA error which just means that the data wasn't encrypted. */ +  if (!err +      || (code == GPGME_STATUS_EOF && gpg_err_code (err) == GPG_ERR_NO_DATA)) +    err2 = _gpgme_verify_status_handler (priv, code, args); +  return err ? err : err2;  } | 
