aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael J Gruber <git@drmicha.warpmail.net>2014-06-23 09:05:48 +0200
committerJunio C Hamano <gitster@pobox.com>2014-06-23 15:50:30 -0700
commit71c214c840782a67801fc8dbf5fe8a4f4fc62d01 (patch)
tree22b7db0f0ddac955e11d4a6c8a43ce4e9517b36e
parent01e57b5d91b0c9f2ac93708c5c2cbcd4731ddd34 (diff)
downloadgit-71c214c840782a67801fc8dbf5fe8a4f4fc62d01.tar.gz
git-71c214c840782a67801fc8dbf5fe8a4f4fc62d01.tar.xz
gpg-interface: provide access to the payload
In contrast to tag signatures, commit signatures are put into the header, that is between the other header parts and commit messages. Provide access to the commit content sans the signature, which is the payload that is actually signed. Commit signature verification does the parsing anyways, and callers may wish to act on or display the commit object sans the signature. Signed-off-by: Michael J Gruber <git@drmicha.warpmail.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
-rw-r--r--commit.c1
-rw-r--r--gpg-interface.c2
-rw-r--r--gpg-interface.h1
3 files changed, 4 insertions, 0 deletions
diff --git a/commit.c b/commit.c
index f4793316a..e9686b2df 100644
--- a/commit.c
+++ b/commit.c
@@ -1219,6 +1219,7 @@ void check_commit_signature(const struct commit* commit, struct signature_check
&gpg_output, &gpg_status);
if (status && !gpg_output.len)
goto out;
+ sigc->payload = strbuf_detach(&payload, NULL);
sigc->gpg_output = strbuf_detach(&gpg_output, NULL);
sigc->gpg_status = strbuf_detach(&gpg_status, NULL);
parse_gpg_output(sigc);
diff --git a/gpg-interface.c b/gpg-interface.c
index e71b59daf..ff0701272 100644
--- a/gpg-interface.c
+++ b/gpg-interface.c
@@ -9,10 +9,12 @@ static const char *gpg_program = "gpg";
void signature_check_clear(struct signature_check *sigc)
{
+ free(sigc->payload);
free(sigc->gpg_output);
free(sigc->gpg_status);
free(sigc->signer);
free(sigc->key);
+ sigc->payload = NULL;
sigc->gpg_output = NULL;
sigc->gpg_status = NULL;
sigc->signer = NULL;
diff --git a/gpg-interface.h b/gpg-interface.h
index 9f0784a41..37c23daff 100644
--- a/gpg-interface.h
+++ b/gpg-interface.h
@@ -2,6 +2,7 @@
#define GPG_INTERFACE_H
struct signature_check {
+ char *payload;
char *gpg_output;
char *gpg_status;
char result; /* 0 (not checked),