From 31eb884e8f102ed3cf1220ccdd77e6e1931a9a7b Mon Sep 17 00:00:00 2001 From: Ingo Klöcker Date: Thu, 30 Jul 2026 15:35:44 +0200 Subject: Handle new SIGINFO status line * src/gpgme.h.in (gpgme_status_code_t): Add status code for SIGINFO. * src/status-table.c (status_table): Add "SIGINFO". * src/verify.c (parse_sig_info): New. (_gpgme_verify_status_handler): Handle SIGINFO status line. -- GnuPG-bug-id: 8368 --- src/verify.c | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) (limited to 'src/verify.c') diff --git a/src/verify.c b/src/verify.c index 7ae18cb8..8179e4a8 100644 --- a/src/verify.c +++ b/src/verify.c @@ -486,6 +486,24 @@ parse_valid_sig (gpgme_signature_t sig, char *args, gpgme_protocol_t protocol) } +static gpgme_error_t +parse_sig_info (gpgme_signature_t sig, char *args) +{ + char *end = args; + char *tail; + + if (!*args) + /* We require at least the creation time. */ + return gpg_error (GPG_ERR_GENERAL); + + sig->timestamp = _gpgme_parse_timestamp (end, &tail); + if (sig->timestamp == -1 || end == tail || (*tail && *tail != ' ')) + return trace_gpg_error (GPG_ERR_INV_ENGINE); + + return 0; +} + + static gpgme_error_t parse_notation (gpgme_signature_t sig, gpgme_status_code_t code, char *args) { @@ -969,6 +987,11 @@ _gpgme_verify_status_handler (void *priv, gpgme_status_code_t code, char *args) return sig ? parse_valid_sig (sig, args, ctx->protocol) : trace_gpg_error (GPG_ERR_INV_ENGINE); + case GPGME_STATUS_SIGINFO: + opd->only_newsig_seen = 0; + return sig ? parse_sig_info (sig, args) + : trace_gpg_error (GPG_ERR_INV_ENGINE); + case GPGME_STATUS_NODATA: opd->only_newsig_seen = 0; if (!sig) -- cgit