Code

Split GPG interface into its own helper library
authorJunio C Hamano <gitster@pobox.com>
Thu, 8 Sep 2011 04:19:47 +0000 (21:19 -0700)
committerJunio C Hamano <gitster@pobox.com>
Wed, 19 Oct 2011 23:21:59 +0000 (16:21 -0700)
commit89587fadb211e9c07c3bb2f05f0e90b3a57ac340
tree5dd31e75a89b67f6f64ed62f72392b1f45970316
parent703f05ad5835cff92b12c29aecf8d724c8c847e2
Split GPG interface into its own helper library

This mostly moves existing code from builtin/tag.c (for signing)
and builtin/verify-tag.c (for verifying) to a new gpg-interface.c
file to provide a more generic library interface.

 - sign_buffer() takes a payload strbuf, a signature strbuf, and a signing
   key, runs "gpg" to produce a detached signature for the payload, and
   appends it to the signature strbuf. The contents of a signed tag that
   concatenates the payload and the detached signature can be produced by
   giving the same strbuf as payload and signature strbuf.

 - verify_signed_buffer() takes a payload and a detached signature as
   <ptr, len> pairs, and runs "gpg --verify" to see if the payload matches
   the signature. It can optionally capture the output from GPG to allow
   the callers to pretty-print it in a way more suitable for their
   contexts.

"verify-tag" (aka "tag -v") used to save the whole tag contents as if it
is a detached signature, and fed gpg the payload part of the tag. It
relied on gpg to fail when the given tag is not signed but just is
annotated.  The updated run_gpg_verify() function detects the lack of
detached signature in the input, and errors out without bothering "gpg".

Signed-off-by: Junio C Hamano <gitster@pobox.com>
Makefile
builtin/tag.c
builtin/verify-tag.c
gpg-interface.c [new file with mode: 0644]
gpg-interface.h [new file with mode: 0644]
tag.c