test/smime: fix signature verification test with newer gmime.

The extra machinery to check for the actual output format is justified
by the possibility that distros may patch this newer output format
into older versions of gmime.

Amended-by: Michael J Gruber <git@grubix.eu>
Signed-off-by: Michael J Gruber <git@grubix.eu>
Amended-again-by: db
This commit is contained in:
David Bremner 2022-04-12 22:15:56 +02:00
parent 7228fe688c
commit 8723e707c1
2 changed files with 24 additions and 2 deletions

17
configure vendored
View file

@ -588,6 +588,11 @@ int main () {
#ifdef CHECK_VALIDITY #ifdef CHECK_VALIDITY
validity = g_mime_certificate_get_id_validity (cert); validity = g_mime_certificate_get_id_validity (cert);
if (validity != GMIME_VALIDITY_FULL) return !! fprintf (stderr, "Got validity %d, expected %d\n", validity, GMIME_VALIDITY_FULL); if (validity != GMIME_VALIDITY_FULL) return !! fprintf (stderr, "Got validity %d, expected %d\n", validity, GMIME_VALIDITY_FULL);
#endif
#ifdef CHECK_EMAIL
const char *email = g_mime_certificate_get_email (cert);
if (! email) return !! fprintf (stderr, "no email returned");
if (email[0] == '<') return 2;
#endif #endif
return 0; return 0;
} }
@ -622,6 +627,15 @@ EOF
errors=$((errors + 1)) errors=$((errors + 1))
fi fi
fi fi
printf "Checking whether GMime emits email addresses with angle brackets... "
if ${CC} -DCHECK_EMAIL ${CFLAGS} ${gmime_cflags} _check_gmime_cert.c ${gmime_ldflags} -o _check_email &&
GNUPGHOME=${TEMP_GPG} ./_check_email; then
gmime_emits_angle_brackets=0
printf "No.\n"
else
gmime_emits_angle_brackets=1
printf "Yes.\n"
fi
else else
printf 'No.\nFailed to set up gpgsm for testing X.509 certificate validity support.\n' printf 'No.\nFailed to set up gpgsm for testing X.509 certificate validity support.\n'
errors=$((errors + 1)) errors=$((errors + 1))
@ -1559,6 +1573,9 @@ NOTMUCH_HAVE_XAPIAN_DB_RETRY_LOCK=${WITH_RETRY_LOCK}
# Whether GMime can verify X.509 certificate validity # Whether GMime can verify X.509 certificate validity
NOTMUCH_GMIME_X509_CERT_VALIDITY=${gmime_x509_cert_validity} NOTMUCH_GMIME_X509_CERT_VALIDITY=${gmime_x509_cert_validity}
# Whether GMime emits addresses with angle brackets (with <>)
NOTMUCH_GMIME_EMITS_ANGLE_BRACKETS=${gmime_emits_angle_brackets}
# Whether GMime can verify signatures when decrypting with a session key: # Whether GMime can verify signatures when decrypting with a session key:
NOTMUCH_GMIME_VERIFY_WITH_SESSION_KEY=${gmime_verify_with_session_key} NOTMUCH_GMIME_VERIFY_WITH_SESSION_KEY=${gmime_verify_with_session_key}

View file

@ -35,6 +35,11 @@ EOF
test_expect_equal_file EXPECTED OUTPUT test_expect_equal_file EXPECTED OUTPUT
test_begin_subtest "signature verification (notmuch CLI)" test_begin_subtest "signature verification (notmuch CLI)"
if [ $NOTMUCH_GMIME_EMITS_ANGLE_BRACKETS == 1 ]; then
EXPECTED_EMAIL_ADDR='<test_suite@notmuchmail.org>'
else
EXPECTED_EMAIL_ADDR='test_suite@notmuchmail.org'
fi
output=$(notmuch show --format=json --verify subject:"test signed message 001" \ output=$(notmuch show --format=json --verify subject:"test signed message 001" \
| notmuch_json_show_sanitize \ | notmuch_json_show_sanitize \
| sed -e 's|"created": [-1234567890]*|"created": 946728000|g' \ | sed -e 's|"created": [-1234567890]*|"created": 946728000|g' \
@ -46,7 +51,7 @@ expected='[[[{"id": "XXXXX",
"timestamp": 946728000, "timestamp": 946728000,
"date_relative": "2000-01-01", "date_relative": "2000-01-01",
"tags": ["inbox","signed"], "tags": ["inbox","signed"],
"crypto": {"signed": {"status": [{"fingerprint": "'$FINGERPRINT'", "status": "good","userid": "CN=Notmuch Test Suite", "email": "<test_suite@notmuchmail.org>", "expires": 424242424, "created": 946728000}]}}, "crypto": {"signed": {"status": [{"fingerprint": "'$FINGERPRINT'", "status": "good","userid": "CN=Notmuch Test Suite", "email": "'$EXPECTED_EMAIL_ADDR'", "expires": 424242424, "created": 946728000}]}},
"headers": {"Subject": "test signed message 001", "headers": {"Subject": "test signed message 001",
"From": "Notmuch Test Suite <test_suite@notmuchmail.org>", "From": "Notmuch Test Suite <test_suite@notmuchmail.org>",
"To": "test_suite@notmuchmail.org", "To": "test_suite@notmuchmail.org",
@ -55,7 +60,7 @@ expected='[[[{"id": "XXXXX",
"sigstatus": [{"fingerprint": "'$FINGERPRINT'", "sigstatus": [{"fingerprint": "'$FINGERPRINT'",
"status": "good", "status": "good",
"userid": "CN=Notmuch Test Suite", "userid": "CN=Notmuch Test Suite",
"email": "<test_suite@notmuchmail.org>", "email": "'$EXPECTED_EMAIL_ADDR'",
"expires": 424242424, "expires": 424242424,
"created": 946728000}], "created": 946728000}],
"content-type": "multipart/signed", "content-type": "multipart/signed",