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>
This commit is contained in:
parent
434060ec6d
commit
ca194d50b8
@ -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));
|
memset(&signature_check, 0, sizeof(signature_check));
|
||||||
|
|
||||||
ret = check_commit_signature(lookup_commit(sha1), &signature_check);
|
ret = check_commit_signature(lookup_commit(sha1), &signature_check);
|
||||||
|
print_signature_buffer(&signature_check, verbose ? GPG_VERIFY_VERBOSE : 0);
|
||||||
if (verbose && signature_check.payload)
|
|
||||||
fputs(signature_check.payload, stdout);
|
|
||||||
|
|
||||||
if (signature_check.gpg_output)
|
|
||||||
fputs(signature_check.gpg_output, stderr);
|
|
||||||
|
|
||||||
signature_check_clear(&signature_check);
|
signature_check_clear(&signature_check);
|
||||||
return ret;
|
return ret;
|
||||||
|
@ -27,14 +27,15 @@ static int run_gpg_verify(const char *buf, unsigned long size, int verbose)
|
|||||||
memset(&sigc, 0, sizeof(sigc));
|
memset(&sigc, 0, sizeof(sigc));
|
||||||
|
|
||||||
len = parse_signature(buf, size);
|
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");
|
return error("no signature found");
|
||||||
|
}
|
||||||
|
|
||||||
ret = check_signature(buf, len, buf + len, size - len, &sigc);
|
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);
|
signature_check_clear(&sigc);
|
||||||
return ret;
|
return ret;
|
||||||
|
@ -85,6 +85,15 @@ int check_signature(const char *payload, size_t plen, const char *signature,
|
|||||||
return sigc->result != 'G' && sigc->result != 'U';
|
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
|
* Look at GPG signed content (e.g. a signed tag object), whose
|
||||||
* payload is followed by a detached signature on it. Return the
|
* payload is followed by a detached signature on it. Return the
|
||||||
|
@ -1,6 +1,8 @@
|
|||||||
#ifndef GPG_INTERFACE_H
|
#ifndef GPG_INTERFACE_H
|
||||||
#define GPG_INTERFACE_H
|
#define GPG_INTERFACE_H
|
||||||
|
|
||||||
|
#define GPG_VERIFY_VERBOSE 1
|
||||||
|
|
||||||
struct signature_check {
|
struct signature_check {
|
||||||
char *payload;
|
char *payload;
|
||||||
char *gpg_output;
|
char *gpg_output;
|
||||||
@ -29,5 +31,6 @@ extern void set_signing_key(const char *);
|
|||||||
extern const char *get_signing_key(void);
|
extern const char *get_signing_key(void);
|
||||||
extern int check_signature(const char *payload, size_t plen,
|
extern int check_signature(const char *payload, size_t plen,
|
||||||
const char *signature, size_t slen, struct signature_check *sigc);
|
const char *signature, size_t slen, struct signature_check *sigc);
|
||||||
|
void print_signature_buffer(const struct signature_check *sigc, unsigned flags);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
Loading…
Reference in New Issue
Block a user