diff options
author | brian m. carlson <sandals@crustytoothpaste.net> | 2021-02-11 03:08:03 +0100 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2021-02-11 08:35:42 +0100 |
commit | 482c119186987110bfccf705a5ac75d399b08766 (patch) | |
tree | b2ca29c0db4269de041bf2c4db0bd96bc20c6084 /gpg-interface.c | |
parent | commit: ignore additional signatures when parsing signed commits (diff) | |
download | git-482c119186987110bfccf705a5ac75d399b08766.tar.xz git-482c119186987110bfccf705a5ac75d399b08766.zip |
gpg-interface: improve interface for parsing tags
We have a function which parses a buffer with a signature at the end,
parse_signature, and this function is used for signed tags. However,
we'll need to store values for multiple algorithms, and we'll do this by
using a header for the non-default algorithm.
Adjust the parse_signature interface to store the parsed data in two
strbufs and turn the existing function into parse_signed_buffer. The
latter is still used in places where we know we always have a signed
buffer, such as push certs.
Adjust all the callers to deal with this new interface.
Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'gpg-interface.c')
-rw-r--r-- | gpg-interface.c | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/gpg-interface.c b/gpg-interface.c index b499270836..c6274c14af 100644 --- a/gpg-interface.c +++ b/gpg-interface.c @@ -345,7 +345,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 +361,17 @@ 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); + strbuf_add(signature, buf + match, size - match); + return 1; + } + return 0; +} + void set_signing_key(const char *key) { free(configured_signing_key); |