Skip to content

Commit

Permalink
tag: recognize rfc1991 signatures
Browse files Browse the repository at this point in the history
We have always been creating rfc1991 signatures for users with "rfc1991"
in their gpg config but failed to recognize them (tag -l -n largenumber)
and verify them (tag -v, verify-tag).

Make good use of the refactored signature detection and let us recognize
and verify those signatures also.

Signed-off-by: Michael J Gruber <git@drmicha.warpmail.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
  • Loading branch information
Michael J Gruber authored and Junio C Hamano committed Nov 10, 2010
1 parent 81536b2 commit 3d5854e
Show file tree
Hide file tree
Showing 2 changed files with 9 additions and 7 deletions.
12 changes: 6 additions & 6 deletions t/t7004-tag.sh
Original file line number Diff line number Diff line change
Expand Up @@ -1048,19 +1048,19 @@ cp "$1" actual
EOF
chmod +x fakeeditor

test_expect_failure GPG \
test_expect_success GPG \
'reediting a signed tag body omits signature' '
echo "RFC1991 signed tag" >expect &&
GIT_EDITOR=./fakeeditor git tag -f -s rfc1991-signed-tag $commit &&
test_cmp expect actual
'

test_expect_failure GPG \
test_expect_success GPG \
'verifying rfc1991 signature' '
git tag -v rfc1991-signed-tag
'

test_expect_failure GPG \
test_expect_success GPG \
'list tag with rfc1991 signature' '
echo "rfc1991-signed-tag RFC1991 signed tag" >expect &&
git tag -l -n1 rfc1991-signed-tag >actual &&
Expand All @@ -1073,12 +1073,12 @@ test_expect_failure GPG \

rm -f gpghome/gpg.conf

test_expect_failure GPG \
test_expect_success GPG \
'verifying rfc1991 signature without --rfc1991' '
git tag -v rfc1991-signed-tag
'

test_expect_failure GPG \
test_expect_success GPG \
'list tag with rfc1991 signature without --rfc1991' '
echo "rfc1991-signed-tag RFC1991 signed tag" >expect &&
git tag -l -n1 rfc1991-signed-tag >actual &&
Expand All @@ -1089,7 +1089,7 @@ test_expect_failure GPG \
test_cmp expect actual
'

test_expect_failure GPG \
test_expect_success GPG \
'reediting a signed tag body omits signature' '
echo "RFC1991 signed tag" >expect &&
GIT_EDITOR=./fakeeditor git tag -f -s rfc1991-signed-tag $commit &&
Expand Down
4 changes: 3 additions & 1 deletion tag.c
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
#include "blob.h"

#define PGP_SIGNATURE "-----BEGIN PGP SIGNATURE-----"
#define PGP_MESSAGE "-----BEGIN PGP MESSAGE-----"

const char *tag_type = "tag";

Expand Down Expand Up @@ -140,7 +141,8 @@ size_t parse_signature(const char *buf, unsigned long size)
{
char *eol;
size_t len = 0;
while (len < size && prefixcmp(buf + len, PGP_SIGNATURE)) {
while (len < size && prefixcmp(buf + len, PGP_SIGNATURE) &&
prefixcmp(buf + len, PGP_MESSAGE)) {
eol = memchr(buf + len, '\n', size - len);
len += eol ? eol - (buf + len) + 1 : size - len;
}
Expand Down

0 comments on commit 3d5854e

Please sign in to comment.