unofficial mirror of notmuch@notmuchmail.org
 help / color / mirror / code / Atom feed
From: michaeljgruber+grubix+git@gmail.com
To: notmuch@notmuchmail.org
Cc: Daniel Kahn Gillmor <dkg@debian.org>, Michael J Gruber <git@grubix.eu>
Subject: [PATCH v2 2/2] test/smime: fix signature verification test with newer gmime.
Date: Tue, 12 Apr 2022 22:15:56 +0200	[thread overview]
Message-ID: <458b1d99c3d868d4c1659b29d0aa4474aff215c1.1649781229.git.git@grubix.eu> (raw)
In-Reply-To: <87mtgrmgll.fsf@fifthhorseman.net>

From: David Bremner <david@tethera.net>

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>
---
Here is what I meant with my comments: We have everything in place to
adjust the expected test output to the detected gmime behaviour. This
also takes into account dkg's remarks on the variable names.

[And yes, I have list bounces again, please forgive my mess and multiple
subscriptions to work around it.]

 configure          | 17 +++++++++++++++++
 test/T355-smime.sh | 11 +++++++++--
 2 files changed, 26 insertions(+), 2 deletions(-)

diff --git a/configure b/configure
index d6e1200e..056f9232 100755
--- 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}
 
diff --git a/test/T355-smime.sh b/test/T355-smime.sh
index 31fa4b4e..b15169b7 100755
--- a/test/T355-smime.sh
+++ b/test/T355-smime.sh
@@ -35,6 +35,13 @@ EOF
 test_expect_equal_file EXPECTED OUTPUT
 
 test_begin_subtest "signature verification (notmuch CLI)"
+if [ $NOTMUCH_GMIME_EMITS_ANGLE_BRACKETS == 1 ]; then
+    LEFT_ANGLE='<'
+    RIGHT_ANGLE='>'
+else
+    LEFT_ANGLE=''
+    RIGHT_ANGLE=''
+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 +53,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": "'$LEFT_ANGLE'test_suite@notmuchmail.org'$RIGHT_ANGLE'", "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 +62,7 @@ expected='[[[{"id": "XXXXX",
  "sigstatus": [{"fingerprint": "'$FINGERPRINT'",
  "status": "good",
  "userid": "CN=Notmuch Test Suite",
- "email": "<test_suite@notmuchmail.org>",
+ "email": "'$LEFT_ANGLE'test_suite@notmuchmail.org'$RIGHT_ANGLE'",
  "expires": 424242424,
  "created": 946728000}],
  "content-type": "multipart/signed",
-- 
2.36.0.rc0.457.gf4fc0d8e4e

  reply	other threads:[~2022-04-12 20:23 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-03-18 10:48 Failing notmuch/SMIME test David Bremner
2022-03-20 21:10 ` Daniel Kahn Gillmor
2022-03-22 17:16   ` David Bremner
2022-04-09 12:34     ` [PATCH 1/2] configure: restructure gmime cert validity checker code David Bremner
2022-04-09 12:34       ` [PATCH 2/2] test/smime: fix signature verification test with newer gmime David Bremner
2022-04-11  0:35         ` Daniel Kahn Gillmor
2022-04-11  8:44           ` Michael J Gruber
2022-04-11 21:53             ` Daniel Kahn Gillmor
2022-04-12 20:15               ` michaeljgruber+grubix+git [this message]
2022-04-12 23:26                 ` [PATCH v2 " Daniel Kahn Gillmor
2022-04-13 11:28                   ` David Bremner

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://notmuchmail.org/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=458b1d99c3d868d4c1659b29d0aa4474aff215c1.1649781229.git.git@grubix.eu \
    --to=michaeljgruber+grubix+git@gmail.com \
    --cc=dkg@debian.org \
    --cc=git@grubix.eu \
    --cc=notmuch@notmuchmail.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://yhetil.org/notmuch.git/

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).