diff options
author | brian m. carlson <sandals@crustytoothpaste.net> | 2015-06-21 23:14:41 +0000 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2015-06-22 14:20:47 -0700 |
commit | ca194d50b84b53a0b711fef46d1a47657ec5da41 (patch) | |
tree | b1218e292a895da641a1faa2c7b524de36ea039d | |
parent | 434060ec6d9bf50f095db901da3fb9b557e11df1 (diff) | |
download | git-ca194d50b84b53a0b711fef46d1a47657ec5da41.tar.gz |
gpg: centralize printing signature buffers
The code to handle printing of signature data from a struct
signature_check is very similar between verify-commit and verify-tag.
Place this in a single function. verify-tag retains its special case
behavior of printing the tag even when no valid signature is found.
Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
-rw-r--r-- | builtin/verify-commit.c | 7 | ||||
-rw-r--r-- | builtin/verify-tag.c | 9 | ||||
-rw-r--r-- | gpg-interface.c | 9 | ||||
-rw-r--r-- | gpg-interface.h | 3 |
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 |