verify-tag: share code with verify-commit

verify-tag was executing an entirely different codepath than
verify-commit, except for the underlying verify_signed_buffer.  Move
much of the code from check_commit_signature to a generic
check_signature function and adjust both codepaths to call it.

Update verify-tag to explicitly output the signature text, as we now
call verify_signed_buffer with strbufs to catch the output, which
prevents it from being printed automatically.

Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
brian m. carlson
2015-06-21 23:14:38 +00:00
committed by Junio C Hamano
parent d66aeff21e
commit a4cc18f293
4 changed files with 34 additions and 15 deletions

View File

@ -20,8 +20,11 @@ static const char * const verify_tag_usage[] = {
static int run_gpg_verify(const char *buf, unsigned long size, int verbose)
{
struct signature_check sigc;
int len;
memset(&sigc, 0, sizeof(sigc));
len = parse_signature(buf, size);
if (verbose)
write_in_full(1, buf, len);
@ -29,7 +32,11 @@ static int run_gpg_verify(const char *buf, unsigned long size, int verbose)
if (size == len)
return error("no signature found");
return verify_signed_buffer(buf, len, buf + len, size - len, NULL, NULL);
check_signature(buf, len, buf + len, size - len, &sigc);
fputs(sigc.gpg_output, stderr);
signature_check_clear(&sigc);
return sigc.result != 'G' && sigc.result != 'U';
}
static int verify_tag(const char *name, int verbose)