X-Git-Url: https://git.notmuchmail.org/git?p=notmuch;a=blobdiff_plain;f=test%2FT357-index-decryption.sh;h=2b8e05b839bcb934679c76098902fa3eb1ee75ea;hp=7996ec67d07de396a4868292ed239f5aabe294ab;hb=8ea4a99d74737929f58568505e41c94f65a14743;hpb=e4890b5bf9e2260b36bcc36ddb77d8e97e2abe7d diff --git a/test/T357-index-decryption.sh b/test/T357-index-decryption.sh index 7996ec67..2b8e05b8 100755 --- a/test/T357-index-decryption.sh +++ b/test/T357-index-decryption.sh @@ -48,6 +48,17 @@ test_expect_equal \ "$output" \ "$expected" +test_begin_subtest "show the message body of the encrypted message" +notmuch dump wumpus +output=$(notmuch show wumpus | awk '/^\014part}/{ f=0 }; { if (f) { print $0 } } /^\014part{ ID: 3/{ f=1 }') +expected='This is a test encrypted message with a wumpus.' +if [ $NOTMUCH_HAVE_GMIME_SESSION_KEYS -eq 0 ]; then + test_subtest_known_broken +fi +test_expect_equal \ + "$output" \ + "$expected" + test_begin_subtest "message should go away after deletion" # cache the message in an env var and remove it: @@ -129,10 +140,21 @@ test_expect_equal \ "$output" \ "$expected" +# try a simple reindex +test_begin_subtest 'reindex in auto mode' +test_expect_success 'notmuch reindex tag:encrypted and property:index.decryption=success' +test_begin_subtest "reindexed encrypted messages, should not have changed" +output=$(notmuch search wumpus) +if [ $NOTMUCH_HAVE_GMIME_SESSION_KEYS -eq 0 ]; then + test_subtest_known_broken +fi +test_expect_equal \ + "$output" \ + "$expected" # try to remove cleartext indexing test_begin_subtest 'reindex without cleartext' -test_expect_success 'notmuch reindex tag:encrypted and property:index.decryption=success' +test_expect_success 'notmuch reindex --decrypt=false tag:encrypted and property:index.decryption=success' test_begin_subtest "reindexed encrypted messages, without cleartext" output=$(notmuch search wumpus) expected='' @@ -142,7 +164,7 @@ test_expect_equal \ # ensure no session keys are present: test_begin_subtest 'reindex using only session keys' -test_expect_success 'notmuch reindex --decrypt=auto tag:encrypted and property:index.decryption=success' +test_expect_success 'notmuch reindex tag:encrypted and property:index.decryption=success' test_begin_subtest "reindexed encrypted messages, decrypting only with session keys" output=$(notmuch search wumpus) expected='' @@ -166,6 +188,29 @@ test_expect_equal \ "$output" \ "$expected" +test_begin_subtest "index cleartext without keeping session keys" +test_expect_success "notmuch reindex --decrypt=nostash tag:blarney" + +test_begin_subtest "Ensure that the indexed terms are present" +output=$(notmuch search wumpus) +test_expect_equal \ + "$output" \ + "$expected" + +test_begin_subtest "show one of the messages with --decrypt=true" +output=$(notmuch show --decrypt=true thread:0000000000000001 | awk '/^\014part}/{ f=0 }; { if (f) { print $0 } } /^\014part{ ID: 3/{ f=1 }') +expected='This is a test encrypted message with a wumpus.' +test_expect_equal \ + "$output" \ + "$expected" + +test_begin_subtest "Ensure that we cannot show the message with --decrypt=auto" +output=$(notmuch show thread:0000000000000001 | awk '/^\014part}/{ f=0 }; { if (f) { print $0 } } /^\014part{ ID: 3/{ f=1 }') +expected='Non-text part: application/octet-stream' +test_expect_equal \ + "$output" \ + "$expected" + add_email_corpus crypto test_begin_subtest "indexing message fails when secret key not available" @@ -190,7 +235,7 @@ notmuch restore <') +expected='> This is a top sekrit message.' +if [ $NOTMUCH_HAVE_GMIME_SESSION_KEYS -eq 0 ]; then + test_subtest_known_broken +fi +test_expect_equal \ + "$output" \ + "$expected" + +test_begin_subtest "notmuch show should show cleartext if session key is present" +output=$(notmuch show id:simple-encrypted@crypto.notmuchmail.org | awk '/^\014part}/{ f=0 }; { if (f) { print $0 } } /^\014part{ ID: 3/{ f=1 }') +expected='This is a top sekrit message.' +if [ $NOTMUCH_HAVE_GMIME_SESSION_KEYS -eq 0 ]; then + test_subtest_known_broken +fi +test_expect_equal \ + "$output" \ + "$expected" + +test_begin_subtest "notmuch show should show nothing if decryption is explicitly disallowed" +output=$(notmuch show --decrypt=false id:simple-encrypted@crypto.notmuchmail.org | awk '/^\014part}/{ f=0 }; { if (f) { print $0 } } /^\014part{ ID: 3/{ f=1 }') +expected='Non-text part: application/octet-stream' +test_expect_equal \ + "$output" \ + "$expected" + +test_begin_subtest "purging stashed session keys should lose access to the cleartext" +notmuch reindex --decrypt=false id:simple-encrypted@crypto.notmuchmail.org +output=$(notmuch search sekrit) +expected='' +test_expect_equal \ + "$output" \ + "$expected" + +test_begin_subtest "and cleartext should be unrecoverable now that there are no stashed session keys" +notmuch dump +notmuch reindex --decrypt=true id:simple-encrypted@crypto.notmuchmail.org +output=$(notmuch search sekrit) +expected='' +test_expect_equal \ + "$output" \ + "$expected" + # TODO: test removal of a message from the message store between # indexing and reindexing.