X-Git-Url: https://git.notmuchmail.org/git?a=blobdiff_plain;f=test%2FT350-crypto.sh;h=27c0e86d42b672b6442c8ab6981a468a48bc34e0;hb=HEAD;hp=f31cd3d7be36ab64941c2d0b26880e55203eb955;hpb=93e699e5c86bb93b2992f4ab3a15680824b7ee2d;p=notmuch diff --git a/test/T350-crypto.sh b/test/T350-crypto.sh index f31cd3d7..27c0e86d 100755 --- a/test/T350-crypto.sh +++ b/test/T350-crypto.sh @@ -6,26 +6,42 @@ test_description='PGP/MIME signature verification and decryption' . $(dirname "$0")/test-lib.sh || exit 1 +. $NOTMUCH_SRCDIR/test/test-lib-emacs.sh || exit 1 ################################################## +test_require_emacs add_gnupg_home -test_begin_subtest "emacs delivery of signed message" +test_begin_subtest "emacs delivery of signed message via fcc" test_expect_success \ 'emacs_fcc_message \ "test signed message 001" \ "This is a test signed message." \ "(mml-secure-message-sign)"' +test_begin_subtest "emacs delivery of signed message via fcc and smtp" +emacs_deliver_message \ + 'signed message sent via SMTP' \ + 'This is a test that messages are sent via SMTP' \ + "(add-hook 'message-send-mail-hook (lambda () (sleep-for 1))) + (mml-secure-message-sign)" +msg_file=$(notmuch search --output=files subject:signed-message-sent-via-SMTP) +test_expect_equal_message_body sent_message "$msg_file" + test_begin_subtest "signed part content-type indexing" -output=$(notmuch search mimetype:multipart/signed and mimetype:application/pgp-signature | notmuch_search_sanitize) -test_expect_equal "$output" "thread:XXX 2000-01-01 [1/1] Notmuch Test Suite; test signed message 001 (inbox signed)" +test_subtest_broken_for_installed +notmuch search mimetype:multipart/signed and mimetype:application/pgp-signature | notmuch_search_sanitize > OUTPUT +cat <EXPECTED +thread:XXX 2000-01-01 [1/1] Notmuch Test Suite; test signed message 001 (inbox signed) +thread:XXX 2000-01-01 [1/1] Notmuch Test Suite; signed message sent via SMTP (inbox signed) +EOF +test_expect_equal_file EXPECTED OUTPUT test_begin_subtest "signature verification" output=$(notmuch show --format=json --verify subject:"test signed message 001" \ | notmuch_json_show_sanitize \ - | sed -e 's|"created": [1234567890]*|"created": 946728000|') + | sed -e 's|"created": [1234567890]*|"created": 946728000|g') expected='[[[{"id": "XXXXX", "match": true, "excluded": false, @@ -33,6 +49,7 @@ expected='[[[{"id": "XXXXX", "timestamp": 946728000, "date_relative": "2000-01-01", "tags": ["inbox","signed"], + "crypto": {"signed": {"status": [{ "status": "good", "created": 946728000, "email": "'"$SELF_EMAIL"'", "fingerprint": "'$FINGERPRINT'", "userid": "'"$SELF_USERID"'"}]}}, "headers": {"Subject": "test signed message 001", "From": "Notmuch Test Suite ", "To": "test_suite@notmuchmail.org", @@ -40,7 +57,9 @@ expected='[[[{"id": "XXXXX", "body": [{"id": 1, "sigstatus": [{"status": "good", "fingerprint": "'$FINGERPRINT'", - "created": 946728000}], + "created": 946728000, + "email": "'"$SELF_EMAIL"'", + "userid": "'"$SELF_USERID"'"}], "content-type": "multipart/signed", "content": [{"id": 2, "content-type": "text/plain", @@ -73,6 +92,7 @@ expected='[[[{"id": "XXXXX", "timestamp": 946728000, "date_relative": "2000-01-01", "tags": ["inbox","signed"], + "crypto": {"signed": {"status": [{ "status": "bad", "keyid": "'$(echo $FINGERPRINT | cut -c 25-)'"}]}}, "headers": {"Subject": "bad signed message 001", "From": "Notmuch Test Suite ", "To": "test_suite@notmuchmail.org", @@ -111,6 +131,7 @@ output=$(notmuch show --format=json --verify subject:"bad signed message 002" \ | notmuch_json_show_sanitize \ | sed -e 's|"created": [1234567890]*|"created": 946728000|') expected='[[[{"id": "XXXXX", + "crypto": {}, "match": true, "excluded": false, "filename": ["YYYYY"], @@ -135,14 +156,14 @@ test_expect_equal_json \ "$output" \ "$expected" -test_begin_subtest "signature verification with full user ID validity" -# give the key ultimate owner trust, which confers full validity on -# all user IDs in the certificate: -echo "${FINGERPRINT}:6:" | gpg --no-tty --import-ownertrust >>"$GNUPGHOME"/trust.log 2>&1 -gpg --no-tty --check-trustdb >>"$GNUPGHOME"/trust.log 2>&1 +test_begin_subtest "signature verification without full user ID validity" +# give the key no owner trust, removes validity on all user IDs of the +# certificate in the absence of other trusted certifiers: +gpg --quiet --batch --no-tty --export-ownertrust > "$GNUPGHOME/ownertrust.bak" +echo "${FINGERPRINT}:3:" | gpg --quiet --batch --no-tty --import-ownertrust output=$(notmuch show --format=json --verify subject:"test signed message 001" \ | notmuch_json_show_sanitize \ - | sed -e 's|"created": [1234567890]*|"created": 946728000|') + | sed -e 's|"created": [1234567890]*|"created": 946728000|g') expected='[[[{"id": "XXXXX", "match": true, "excluded": false, @@ -150,6 +171,7 @@ expected='[[[{"id": "XXXXX", "timestamp": 946728000, "date_relative": "2000-01-01", "tags": ["inbox","signed"], + "crypto": {"signed": {"status": [{ "status": "good", "created": 946728000, "fingerprint": "'$FINGERPRINT'"}]}}, "headers": {"Subject": "test signed message 001", "From": "Notmuch Test Suite ", "To": "test_suite@notmuchmail.org", @@ -157,8 +179,7 @@ expected='[[[{"id": "XXXXX", "body": [{"id": 1, "sigstatus": [{"status": "good", "fingerprint": "'$FINGERPRINT'", - "created": 946728000, - "userid": "'"$SELF_USERID"'"}], + "created": 946728000}], "content-type": "multipart/signed", "content": [{"id": 2, "content-type": "text/plain", @@ -170,13 +191,14 @@ expected='[[[{"id": "XXXXX", test_expect_equal_json \ "$output" \ "$expected" +gpg --quiet --batch --no-tty --import-ownertrust < "$GNUPGHOME/ownertrust.bak" test_begin_subtest "signature verification with signer key unavailable" # move the gnupghome temporarily out of the way mv "${GNUPGHOME}"{,.bak} output=$(notmuch show --format=json --verify subject:"test signed message 001" \ | notmuch_json_show_sanitize \ - | sed -e 's|"created": [1234567890]*|"created": 946728000|') + | sed -e 's|"created": [1234567890]*|"created": 946728000|g') expected='[[[{"id": "XXXXX", "match": true, "excluded": false, @@ -184,6 +206,7 @@ expected='[[[{"id": "XXXXX", "timestamp": 946728000, "date_relative": "2000-01-01", "tags": ["inbox","signed"], + "crypto": {"signed": {"status": [{"errors": {"key-missing": true}, "keyid": "'$(echo $FINGERPRINT | cut -c 25-)'", "status": "error"}]}}, "headers": {"Subject": "test signed message 001", "From": "Notmuch Test Suite ", "To": "test_suite@notmuchmail.org", @@ -263,6 +286,7 @@ expected='[[[{"id": "XXXXX", "timestamp": 946728000, "date_relative": "2000-01-01", "tags": ["encrypted","inbox"], + "crypto": {"decrypted": {"status": "full"}}, "headers": {"Subject": "test encrypted message 001", "From": "Notmuch Test Suite ", "To": "test_suite@notmuchmail.org", @@ -314,6 +338,7 @@ output=$(notmuch show --format=json --decrypt=true subject:"test encrypted messa | notmuch_json_show_sanitize \ | sed -e 's|"created": [1234567890]*|"created": 946728000|') expected='[[[{"id": "XXXXX", + "crypto": {}, "match": true, "excluded": false, "filename": ["YYYYY"], @@ -349,7 +374,7 @@ test_expect_success \ test_begin_subtest "decryption + signature verification" output=$(notmuch show --format=json --decrypt=true subject:"test encrypted message 002" \ | notmuch_json_show_sanitize \ - | sed -e 's|"created": [1234567890]*|"created": 946728000|') + | sed -e 's|"created": [1234567890]*|"created": 946728000|g') expected='[[[{"id": "XXXXX", "match": true, "excluded": false, @@ -357,6 +382,9 @@ expected='[[[{"id": "XXXXX", "timestamp": 946728000, "date_relative": "2000-01-01", "tags": ["encrypted","inbox"], + "crypto": {"signed": {"status": [{ "status": "good", "created": 946728000, "fingerprint": "'$FINGERPRINT'", "email": "'"$SELF_EMAIL"'", "userid": "'"$SELF_USERID"'"}], + "encrypted": true }, + "decrypted": {"status": "full"}}, "headers": {"Subject": "test encrypted message 002", "From": "Notmuch Test Suite ", "To": "test_suite@notmuchmail.org", @@ -366,6 +394,7 @@ expected='[[[{"id": "XXXXX", "sigstatus": [{"status": "good", "fingerprint": "'$FINGERPRINT'", "created": 946728000, + "email": "'"$SELF_EMAIL"'", "userid": "'"$SELF_USERID"'"}], "content-type": "multipart/encrypted", "content": [{"id": 2, @@ -432,13 +461,14 @@ expected='[[[{"id": "XXXXX", "timestamp": 946728000, "date_relative": "2000-01-01", "tags": ["inbox","signed"], + "crypto": {"signed": {"status": [{"errors": {"key-revoked": true}, "keyid": "'$(echo $FINGERPRINT | cut -c 25-)'", "status": "error"}]}}, "headers": {"Subject": "test signed message 001", "From": "Notmuch Test Suite ", "To": "test_suite@notmuchmail.org", "Date": "Sat, 01 Jan 2000 12:00:00 +0000"}, "body": [{"id": 1, "sigstatus": [{"status": "error", - "keyid": "6D92612D94E46381", + "keyid": "'$(echo $FINGERPRINT | cut -c 25-)'", "errors": {"key-revoked": true}}], "content-type": "multipart/signed", "content": [{"id": 2,