mirror of
https://git.notmuchmail.org/git/notmuch
synced 2024-11-23 11:28:13 +01:00
test: initial tests for S/MIME and notmuch-emacs
Test the ability of notmuch-mua-mail to send S/MIME signed (and encrypted) messages; this really relies on existing functionality in message-mode. The generated keys and messages will later be useful for testing the notmuch CLI.
This commit is contained in:
parent
12534d5c4b
commit
ef30770dfa
6 changed files with 135 additions and 0 deletions
42
test/T355-smime.sh
Executable file
42
test/T355-smime.sh
Executable file
|
@ -0,0 +1,42 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
test_description='S/MIME signature verification and decryption'
|
||||||
|
. ./test-lib.sh || exit 1
|
||||||
|
|
||||||
|
test_require_external_prereq openssl
|
||||||
|
test_require_external_prereq gpgsm
|
||||||
|
|
||||||
|
cp $TEST_DIRECTORY/smime/key+cert.pem test_suite.pem
|
||||||
|
|
||||||
|
FINGERPRINT=$(openssl x509 -fingerprint -in test_suite.pem -noout | sed -e 's/^.*=//' -e s/://g)
|
||||||
|
|
||||||
|
test_expect_success 'emacs delivery of S/MIME signed message' \
|
||||||
|
'emacs_fcc_message \
|
||||||
|
"test signed message 001" \
|
||||||
|
"This is a test signed message." \
|
||||||
|
"(mml-secure-message-sign \"smime\")"'
|
||||||
|
|
||||||
|
# Hard code the MML to avoid several interactive questions
|
||||||
|
test_expect_success 'emacs delivery of S/MIME encrypted + signed message' \
|
||||||
|
'emacs_fcc_message \
|
||||||
|
"test encrypted message 001" \
|
||||||
|
"<#secure method=smime mode=signencrypt keyfile=\\\"test_suite.pem\\\" certfile=\\\"test_suite.pem\\\">\nThis is a test encrypted message.\n"'
|
||||||
|
|
||||||
|
test_begin_subtest "Signature verification (openssl)"
|
||||||
|
notmuch show --format=raw subject:"test signed message 001" |\
|
||||||
|
openssl smime -verify -CAfile $TEST_DIRECTORY/smime/test.crt 2>OUTPUT
|
||||||
|
cat <<EOF > EXPECTED
|
||||||
|
Verification successful
|
||||||
|
EOF
|
||||||
|
test_expect_equal_file EXPECTED OUTPUT
|
||||||
|
|
||||||
|
test_begin_subtest "Decryption and signature verification (openssl)"
|
||||||
|
notmuch show --format=raw subject:"test encrypted message 001" |\
|
||||||
|
openssl smime -decrypt -recip test_suite.pem |\
|
||||||
|
openssl smime -verify -CAfile $TEST_DIRECTORY/smime/test.crt 2>OUTPUT
|
||||||
|
cat <<EOF > EXPECTED
|
||||||
|
Verification successful
|
||||||
|
EOF
|
||||||
|
test_expect_equal_file EXPECTED OUTPUT
|
||||||
|
|
||||||
|
test_done
|
7
test/smime/README
Normal file
7
test/smime/README
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
test.crt: self signed certificated
|
||||||
|
% gpgsm --gen-key # needs gpgsm 2.1
|
||||||
|
|
||||||
|
key+cert.pem: cert + unencryped private
|
||||||
|
% gpsm --import test.crt
|
||||||
|
% gpgsm --export-private-key-p12 -out foo.p12 (no passphrase)
|
||||||
|
% openssl pkcs12 -in ns.p12 -clcerts -nodes > key+cert.pem
|
56
test/smime/key+cert.pem
Normal file
56
test/smime/key+cert.pem
Normal file
|
@ -0,0 +1,56 @@
|
||||||
|
Bag Attributes
|
||||||
|
friendlyName: GnuPG exported certificate e0972a47
|
||||||
|
localKeyID: 61 6F 46 CD 73 83 4C 63 84 77 56 AF 0D FB 64 A6 E0 97 2A 47
|
||||||
|
subject=/CN=Notmuch Test Suite
|
||||||
|
issuer=/CN=Notmuch Test Suite
|
||||||
|
-----BEGIN CERTIFICATE-----
|
||||||
|
MIIDCzCCAfOgAwIBAgIIb3SMlL0MZ6kwDQYJKoZIhvcNAQELBQAwHTEbMBkGA1UE
|
||||||
|
AxMSTm90bXVjaCBUZXN0IFN1aXRlMCAXDTE1MTIxNDAyMDgxMFoYDzIwNjMwNDA1
|
||||||
|
MTcwMDAwWjAdMRswGQYDVQQDExJOb3RtdWNoIFRlc3QgU3VpdGUwggEiMA0GCSqG
|
||||||
|
SIb3DQEBAQUAA4IBDwAwggEKAoIBAQC7vH1/lkENTAJRbyq2036K7Pw+imSIhB5T
|
||||||
|
U0WnAgVGWOemY1Eppi9Dk6rjDxuuUKOCQ5el2wmFZN57Fi/4leBH7x217BnnqWNU
|
||||||
|
QV88DxEfV+sk8dSb4a5FOOyfhFJmZso/0lK8x0fBcCNjmRFIjB1afSSXWnCvRpAR
|
||||||
|
v+O9trLJuIjbbmXg1gltjuB5yDw8/OLEI7G7YSIop9FxopWJL5rW/o2WEfRPGpYe
|
||||||
|
HNRLObCRIvbyDd6XjaCrKBuIrhN7R7mmIa9PUyl8TiY+pCMWs9dHmOsiC73/+P6E
|
||||||
|
AhsTOY1bfbGQXBAGZ/FL+SgC5wEcPr2u3+y8y5gw2bpaVhQnu6YLAgMBAAGjTTBL
|
||||||
|
MCUGA1UdEQQeMByBGnRlc3Rfc3VpdGVAbm90bXVjaG1haWwub3JnMBEGCisGAQQB
|
||||||
|
2kcCAgEEAwEB/zAPBgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3DQEBCwUAA4IBAQBb
|
||||||
|
XP5OnRVplrEdlnivx3CbCLWO13fcMWXfvKxLGsKFwKuxtpvINFUKM+jDr0kVdQ3d
|
||||||
|
u3DJe2hNFQMILK/KrGyN5qEz2YBdHNvdkkvWA+3WHr/tiNr6Rly6QuxBzouxzmRu
|
||||||
|
MmnUhsOzZaHT3GmLSVJlwie8KqSfKVGwyBmCyHbUQkMrSEV6QDESN6KyWt85gokB
|
||||||
|
56Bc/wVq073xS1nFbfF1M3Z5q5BlLZK4IOerKTQx/oSfR4EX6B7rW2pttWsUCyEj
|
||||||
|
LljaA8ehxR9B29m08IGGl43pHEpC1WnOHvsEGs99mPpjWbUgVv5KY7OuS/8iVw6v
|
||||||
|
/Yy5Z+JBwlMzTBaUXXl3
|
||||||
|
-----END CERTIFICATE-----
|
||||||
|
Bag Attributes
|
||||||
|
friendlyName: GnuPG exported certificate e0972a47
|
||||||
|
localKeyID: 61 6F 46 CD 73 83 4C 63 84 77 56 AF 0D FB 64 A6 E0 97 2A 47
|
||||||
|
Key Attributes: <No Attributes>
|
||||||
|
-----BEGIN PRIVATE KEY-----
|
||||||
|
MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQC7vH1/lkENTAJR
|
||||||
|
byq2036K7Pw+imSIhB5TU0WnAgVGWOemY1Eppi9Dk6rjDxuuUKOCQ5el2wmFZN57
|
||||||
|
Fi/4leBH7x217BnnqWNUQV88DxEfV+sk8dSb4a5FOOyfhFJmZso/0lK8x0fBcCNj
|
||||||
|
mRFIjB1afSSXWnCvRpARv+O9trLJuIjbbmXg1gltjuB5yDw8/OLEI7G7YSIop9Fx
|
||||||
|
opWJL5rW/o2WEfRPGpYeHNRLObCRIvbyDd6XjaCrKBuIrhN7R7mmIa9PUyl8TiY+
|
||||||
|
pCMWs9dHmOsiC73/+P6EAhsTOY1bfbGQXBAGZ/FL+SgC5wEcPr2u3+y8y5gw2bpa
|
||||||
|
VhQnu6YLAgMBAAECggEAVhtHCHz3C01Ahu9RDRgGI1w8+cZqA/9tFVTNTqNrne9r
|
||||||
|
GHLXKB4z8W/KYmhsjtAnnri31neXb1prfNMZX5AGlZfD7cwDubCEgYGWV6qldNXT
|
||||||
|
YVeV54VkdBV+2k9Lp/Ifc5RZJILWk4+Ge8kaF0dEs1tQrCbsJkhcDfgQUdR5PnGe
|
||||||
|
6cKv/8HJo0ep6u5cJloIluit8yF3z4+aHixMQBvQKm/8tug+EsrQZ3IVXbh1hONO
|
||||||
|
AZ68z9CrU2pJ/0w/jwwcM5feRfTMC7bZ3vkQb1mQKYFJrvN77TGroUtAZFWqJw7M
|
||||||
|
r0f2MShdVjfEdJ1ySnCyKF24cSSPSQsLZUe4UlFyQQKBgQDlqr9ajaUzc6Lyma2e
|
||||||
|
Q1IJapbX2OZQtf5tlKVCVtZOlu5r97YMOK96XsQFKtdxhAhrGvvTJwPmwhj+fqfR
|
||||||
|
XltNrmUBpHCMsm9nloADvBS83KTP5tw9TMT0VZpt+m5XmvutdyQbSKwy+KMy+GZz
|
||||||
|
/XBQCfTEoiDS4grGFftvZuRB4QKBgQDRQvsVFMh2NOnVGqczHJNGjvbDueUJmPUN
|
||||||
|
3VxZc/FpBGLRSoN7uxQ4dGNnwyvXHs+pLAAC6xZpFCos9c3R8EPvoMyUehoDSAKW
|
||||||
|
CMD4C+K8z7n4ducE5a0NrGIgQvnXtteKr3ZwK8V7cscyTCyjXdrQmQ5XHeue8asR
|
||||||
|
758g+dG9awKBgEWuZJho2XKe5xWMIu0dp8pLmLCsklRyo1tD+lACYMs/Z99CLO3Q
|
||||||
|
VQ1fq0GWGf/K+3LjoPwTnk9pHIQ6kVgotLMA8oxpA+zsRni7ZOO9MN2MZETf2nqO
|
||||||
|
zEMFpfEwRkI2N54Nw9qzVeuxHHLegtc2Udk27BisyCCzjGlFSiAmq6KBAoGAFGfE
|
||||||
|
RXjcvT65HX8Gaya+wtugFB8BRx0JX7dI6OLk5ZKLmq0ykH2bQepgnWermmU4we77
|
||||||
|
0Dvtfa3u0YjZ/24XXg2YbSpWiWps0Y2/C7AyAAzq12/1OGcX5qk4Tbd0f+QkIset
|
||||||
|
qxzmt4XcAKw50J+Vf3DmbYQ1M/BftCZcTm0ShHcCgYEAxp8mjE8iIHxFrm7nHMS0
|
||||||
|
2/iWxO8DYaAZ0OLfjaZELHchVvTwa+DynbkwvOc3l4cbNTVaf9O6nmHTkLyBLBNr
|
||||||
|
2htPKm1vi9TzNdvGqobFO3ijfvdGvq1rjQl86ns0cf395REmEaVX3zcw2v+GyC5n
|
||||||
|
qE6Aa5bvdZ9Yykg6aoFo1mY=
|
||||||
|
-----END PRIVATE KEY-----
|
19
test/smime/test.crt
Normal file
19
test/smime/test.crt
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
-----BEGIN CERTIFICATE-----
|
||||||
|
MIIDCzCCAfOgAwIBAgIIb3SMlL0MZ6kwDQYJKoZIhvcNAQELBQAwHTEbMBkGA1UE
|
||||||
|
AxMSTm90bXVjaCBUZXN0IFN1aXRlMCAXDTE1MTIxNDAyMDgxMFoYDzIwNjMwNDA1
|
||||||
|
MTcwMDAwWjAdMRswGQYDVQQDExJOb3RtdWNoIFRlc3QgU3VpdGUwggEiMA0GCSqG
|
||||||
|
SIb3DQEBAQUAA4IBDwAwggEKAoIBAQC7vH1/lkENTAJRbyq2036K7Pw+imSIhB5T
|
||||||
|
U0WnAgVGWOemY1Eppi9Dk6rjDxuuUKOCQ5el2wmFZN57Fi/4leBH7x217BnnqWNU
|
||||||
|
QV88DxEfV+sk8dSb4a5FOOyfhFJmZso/0lK8x0fBcCNjmRFIjB1afSSXWnCvRpAR
|
||||||
|
v+O9trLJuIjbbmXg1gltjuB5yDw8/OLEI7G7YSIop9FxopWJL5rW/o2WEfRPGpYe
|
||||||
|
HNRLObCRIvbyDd6XjaCrKBuIrhN7R7mmIa9PUyl8TiY+pCMWs9dHmOsiC73/+P6E
|
||||||
|
AhsTOY1bfbGQXBAGZ/FL+SgC5wEcPr2u3+y8y5gw2bpaVhQnu6YLAgMBAAGjTTBL
|
||||||
|
MCUGA1UdEQQeMByBGnRlc3Rfc3VpdGVAbm90bXVjaG1haWwub3JnMBEGCisGAQQB
|
||||||
|
2kcCAgEEAwEB/zAPBgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3DQEBCwUAA4IBAQBb
|
||||||
|
XP5OnRVplrEdlnivx3CbCLWO13fcMWXfvKxLGsKFwKuxtpvINFUKM+jDr0kVdQ3d
|
||||||
|
u3DJe2hNFQMILK/KrGyN5qEz2YBdHNvdkkvWA+3WHr/tiNr6Rly6QuxBzouxzmRu
|
||||||
|
MmnUhsOzZaHT3GmLSVJlwie8KqSfKVGwyBmCyHbUQkMrSEV6QDESN6KyWt85gokB
|
||||||
|
56Bc/wVq073xS1nFbfF1M3Z5q5BlLZK4IOerKTQx/oSfR4EX6B7rW2pttWsUCyEj
|
||||||
|
LljaA8ehxR9B29m08IGGl43pHEpC1WnOHvsEGs99mPpjWbUgVv5KY7OuS/8iVw6v
|
||||||
|
/Yy5Z+JBwlMzTBaUXXl3
|
||||||
|
-----END CERTIFICATE-----
|
|
@ -188,3 +188,13 @@ nothing."
|
||||||
;; environments
|
;; environments
|
||||||
|
|
||||||
(setq mm-text-html-renderer 'html2text)
|
(setq mm-text-html-renderer 'html2text)
|
||||||
|
|
||||||
|
;; Set some variables for S/MIME tests.
|
||||||
|
|
||||||
|
(setq smime-keys '(("" "test_suite.pem" nil)))
|
||||||
|
|
||||||
|
(setq mml-smime-use 'openssl)
|
||||||
|
|
||||||
|
;; all test keys are without passphrase
|
||||||
|
(eval-after-load 'smime
|
||||||
|
'(defun smime-ask-passphrase (cache) nil))
|
||||||
|
|
|
@ -1333,4 +1333,5 @@ test_declare_external_prereq emacs
|
||||||
test_declare_external_prereq ${TEST_EMACSCLIENT}
|
test_declare_external_prereq ${TEST_EMACSCLIENT}
|
||||||
test_declare_external_prereq gdb
|
test_declare_external_prereq gdb
|
||||||
test_declare_external_prereq gpg
|
test_declare_external_prereq gpg
|
||||||
|
test_declare_external_prereq openssl
|
||||||
test_declare_external_prereq ${NOTMUCH_PYTHON}
|
test_declare_external_prereq ${NOTMUCH_PYTHON}
|
||||||
|
|
Loading…
Reference in a new issue