summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLibravatar Michael J Gruber <git@drmicha.warpmail.net>2010-11-10 12:17:30 +0100
committerLibravatar Junio C Hamano <gitster@pobox.com>2010-11-10 09:40:35 -0800
commit3d5854e765dedfaf2a942e8fa1e950a40f9dcee3 (patch)
tree1156a1b70da302be54cf5c5c44003d461551ba1d
parenttag: factor out sig detection for tag display (diff)
downloadtgif-3d5854e765dedfaf2a942e8fa1e950a40f9dcee3.tar.xz
tag: recognize rfc1991 signatures
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>
-rwxr-xr-xt/t7004-tag.sh12
-rw-r--r--tag.c4
2 files changed, 9 insertions, 7 deletions
diff --git a/t/t7004-tag.sh b/t/t7004-tag.sh
index c7d49e1049..6841c23c0a 100755
--- a/t/t7004-tag.sh
+++ b/t/t7004-tag.sh
@@ -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 &&
@@ -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 &&
@@ -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 &&
diff --git a/tag.c b/tag.c
index d4f3080e3f..f789744cca 100644
--- a/tag.c
+++ b/tag.c
@@ -5,6 +5,7 @@
#include "blob.h"
#define PGP_SIGNATURE "-----BEGIN PGP SIGNATURE-----"
+#define PGP_MESSAGE "-----BEGIN PGP MESSAGE-----"
const char *tag_type = "tag";
@@ -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;
}