summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--builtin/verify-commit.c7
-rw-r--r--builtin/verify-tag.c9
-rw-r--r--gpg-interface.c9
-rw-r--r--gpg-interface.h3
4 files changed, 18 insertions, 10 deletions
diff --git a/builtin/verify-commit.c b/builtin/verify-commit.c
index e30f7cfbc1..016319ada3 100644
--- a/builtin/verify-commit.c
+++ b/builtin/verify-commit.c
@@ -26,12 +26,7 @@ static int run_gpg_verify(const unsigned char *sha1, const char *buf, unsigned l
memset(&signature_check, 0, sizeof(signature_check));
ret = check_commit_signature(lookup_commit(sha1), &signature_check);
-
- if (verbose && signature_check.payload)
- fputs(signature_check.payload, stdout);
-
- if (signature_check.gpg_output)
- fputs(signature_check.gpg_output, stderr);
+ print_signature_buffer(&signature_check, verbose ? GPG_VERIFY_VERBOSE : 0);
signature_check_clear(&signature_check);
return ret;
diff --git a/builtin/verify-tag.c b/builtin/verify-tag.c
index 8750bef016..d67e3dbd10 100644
--- a/builtin/verify-tag.c
+++ b/builtin/verify-tag.c
@@ -27,14 +27,15 @@ static int run_gpg_verify(const char *buf, unsigned long size, int verbose)
memset(&sigc, 0, sizeof(sigc));
len = parse_signature(buf, size);
- if (verbose)
- write_in_full(1, buf, len);
- if (size == len)
+ if (size == len) {
+ if (verbose)
+ write_in_full(1, buf, len);
return error("no signature found");
+ }
ret = check_signature(buf, len, buf + len, size - len, &sigc);
- fputs(sigc.gpg_output, stderr);
+ print_signature_buffer(&sigc, verbose ? GPG_VERIFY_VERBOSE : 0);
signature_check_clear(&sigc);
return ret;
diff --git a/gpg-interface.c b/gpg-interface.c
index 77a4da627e..e764fb625b 100644
--- a/gpg-interface.c
+++ b/gpg-interface.c
@@ -85,6 +85,15 @@ int check_signature(const char *payload, size_t plen, const char *signature,
return sigc->result != 'G' && sigc->result != 'U';
}
+void print_signature_buffer(const struct signature_check *sigc, unsigned flags)
+{
+ if (flags & GPG_VERIFY_VERBOSE && sigc->payload)
+ fputs(sigc->payload, stdout);
+
+ if (sigc->gpg_output)
+ fputs(sigc->gpg_output, stderr);
+}
+
/*
* Look at GPG signed content (e.g. a signed tag object), whose
* payload is followed by a detached signature on it. Return the
diff --git a/gpg-interface.h b/gpg-interface.h
index e2aabde305..1207861e7a 100644
--- a/gpg-interface.h
+++ b/gpg-interface.h
@@ -1,6 +1,8 @@
#ifndef GPG_INTERFACE_H
#define GPG_INTERFACE_H
+#define GPG_VERIFY_VERBOSE 1
+
struct signature_check {
char *payload;
char *gpg_output;
@@ -29,5 +31,6 @@ extern void set_signing_key(const char *);
extern const char *get_signing_key(void);
extern int check_signature(const char *payload, size_t plen,
const char *signature, size_t slen, struct signature_check *sigc);
+void print_signature_buffer(const struct signature_check *sigc, unsigned flags);
#endif