]> git.cworth.org Git - notmuch/commitdiff
test/smime: fix signature verification test with newer gmime.
authorDavid Bremner <david@tethera.net>
Tue, 12 Apr 2022 20:15:56 +0000 (22:15 +0200)
committerDavid Bremner <david@tethera.net>
Wed, 13 Apr 2022 10:55:22 +0000 (07:55 -0300)
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
configure
test/T355-smime.sh

index d6e1200e7667189eb80a6c35c761fc84b44c459e..056f92323a0035948dd692c6ec842983972b189a 100755 (executable)
--- a/configure
+++ b/configure
@@ -588,6 +588,11 @@ int main () {
 #ifdef CHECK_VALIDITY
     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);
+#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
     return 0;
 }
@@ -622,6 +627,15 @@ EOF
                errors=$((errors + 1))
            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
        printf 'No.\nFailed to set up gpgsm for testing X.509 certificate validity support.\n'
        errors=$((errors + 1))
@@ -1559,6 +1573,9 @@ NOTMUCH_HAVE_XAPIAN_DB_RETRY_LOCK=${WITH_RETRY_LOCK}
 # Whether GMime can verify X.509 certificate 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:
 NOTMUCH_GMIME_VERIFY_WITH_SESSION_KEY=${gmime_verify_with_session_key}
 
index 31fa4b4e9e5bb3bdf56c6bc62bfdf6049375dfb3..809274ce14a2156ab56d68c0d0e524da3baecab6 100755 (executable)
@@ -35,6 +35,11 @@ EOF
 test_expect_equal_file EXPECTED OUTPUT
 
 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" \
     | notmuch_json_show_sanitize \
     | sed -e 's|"created": [-1234567890]*|"created": 946728000|g' \
@@ -46,7 +51,7 @@ expected='[[[{"id": "XXXXX",
  "timestamp": 946728000,
  "date_relative": "2000-01-01",
  "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",
  "From": "Notmuch Test Suite <test_suite@notmuchmail.org>",
  "To": "test_suite@notmuchmail.org",
@@ -55,7 +60,7 @@ expected='[[[{"id": "XXXXX",
  "sigstatus": [{"fingerprint": "'$FINGERPRINT'",
  "status": "good",
  "userid": "CN=Notmuch Test Suite",
- "email": "<test_suite@notmuchmail.org>",
+ "email": "'$EXPECTED_EMAIL_ADDR'",
  "expires": 424242424,
  "created": 946728000}],
  "content-type": "multipart/signed",