X-Git-Url: https://git.cworth.org/git?a=blobdiff_plain;f=test%2FT350-crypto.sh;h=8dbf89352a60e4af75efd19d6c3c0eb9bfe246c3;hb=237f803fdbf8978514d0f6b56e9d1aaf51cb3153;hp=6045a7dc3d0b764c4546531174db13456d35b084;hpb=6682b4e686b7972883626c9b0f941ae4bf02dedb;p=notmuch diff --git a/test/T350-crypto.sh b/test/T350-crypto.sh index 6045a7dc..8dbf8935 100755 --- a/test/T350-crypto.sh +++ b/test/T350-crypto.sh @@ -6,9 +6,11 @@ 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" @@ -25,7 +27,7 @@ test_expect_equal "$output" "thread:XXX 2000-01-01 [1/1] Notmuch Test Suite; t 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 +35,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 +43,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 +78,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 +117,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,13 +142,14 @@ test_expect_equal_json \ "$output" \ "$expected" -test_begin_subtest "signature verification with full owner trust" -# give the key full owner trust -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, @@ -149,6 +157,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", @@ -156,8 +165,7 @@ expected='[[[{"id": "XXXXX", "body": [{"id": 1, "sigstatus": [{"status": "good", "fingerprint": "'$FINGERPRINT'", - "created": 946728000, - "userid": "Notmuch Test Suite (INSECURE!)"}], + "created": 946728000}], "content-type": "multipart/signed", "content": [{"id": 2, "content-type": "text/plain", @@ -169,13 +177,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, @@ -183,6 +192,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", @@ -262,6 +272,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", @@ -313,6 +324,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"], @@ -348,7 +360,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, @@ -356,6 +368,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", @@ -365,7 +380,8 @@ expected='[[[{"id": "XXXXX", "sigstatus": [{"status": "good", "fingerprint": "'$FINGERPRINT'", "created": 946728000, - "userid": "Notmuch Test Suite (INSECURE!)"}], + "email": "'"$SELF_EMAIL"'", + "userid": "'"$SELF_USERID"'"}], "content-type": "multipart/encrypted", "content": [{"id": 2, "content-type": "application/pgp-encrypted", @@ -431,6 +447,7 @@ 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",