X-Git-Url: http://git.ipfire.org/?a=blobdiff_plain;f=gpg-interface.c;h=127aecfc2b071f9a745a871a9ea205931eeb672f;hb=d166e8c1d4cb35dec960c4f69ccc23d2fedb322a;hp=b49927083661c8ca695112b8432691f17ed6d835;hpb=90051e5b5e63d415fad6d38b999b9a0582189a4b;p=thirdparty%2Fgit.git diff --git a/gpg-interface.c b/gpg-interface.c index b499270836..127aecfc2b 100644 --- a/gpg-interface.c +++ b/gpg-interface.c @@ -1,4 +1,5 @@ #include "cache.h" +#include "commit.h" #include "config.h" #include "run-command.h" #include "strbuf.h" @@ -345,7 +346,7 @@ void print_signature_buffer(const struct signature_check *sigc, unsigned flags) fputs(output, stderr); } -size_t parse_signature(const char *buf, size_t size) +size_t parse_signed_buffer(const char *buf, size_t size) { size_t len = 0; size_t match = size; @@ -361,6 +362,18 @@ size_t parse_signature(const char *buf, size_t size) return match; } +int parse_signature(const char *buf, size_t size, struct strbuf *payload, struct strbuf *signature) +{ + size_t match = parse_signed_buffer(buf, size); + if (match != size) { + strbuf_add(payload, buf, match); + remove_signature(payload); + strbuf_add(signature, buf + match, size - match); + return 1; + } + return 0; +} + void set_signing_key(const char *key) { free(configured_signing_key);