aboutsummaryrefslogtreecommitdiffstats
path: root/test
diff options
context:
space:
mode:
authorLars Ingebrigtsen2016-02-08 15:28:50 +1100
committerLars Ingebrigtsen2016-02-08 15:28:50 +1100
commitf29b6cf37964859f40586e218abc37c3232f8480 (patch)
tree97750a570551f091c9f68ad64f9379b95ac4fc48 /test
parent4f50d8db8c54ca3fb80cd52c34099c4c0a8fb7dd (diff)
downloademacs-f29b6cf37964859f40586e218abc37c3232f8480.tar.gz
emacs-f29b6cf37964859f40586e218abc37c3232f8480.zip
Add a TLS connection test
* test/lisp/net/network-stream-tests.el (connect-to-tls): Add a TLS connection test.
Diffstat (limited to 'test')
-rw-r--r--test/lisp/net/cert.pem25
-rw-r--r--test/lisp/net/key.pem28
-rw-r--r--test/lisp/net/network-stream-tests.el47
3 files changed, 96 insertions, 4 deletions
diff --git a/test/lisp/net/cert.pem b/test/lisp/net/cert.pem
new file mode 100644
index 00000000000..4df4e92e0bf
--- /dev/null
+++ b/test/lisp/net/cert.pem
@@ -0,0 +1,25 @@
1-----BEGIN CERTIFICATE-----
2MIIELTCCAxWgAwIBAgIJAI6LqlFyaPRkMA0GCSqGSIb3DQEBCwUAMIGsMQswCQYD
3VQQGEwJBVTEYMBYGA1UECAwPTmV3IFNvdXRoIFdhbGVzMQ8wDQYDVQQHDAZTeWRu
4ZXkxITAfBgNVBAoMGEVtYWNzIFRlc3QgU2VydmljZXNzIExMQzESMBAGA1UECwwJ
5QXV0b21hdGVkMRcwFQYDVQQDDA50ZXN0LmVtYWNzLnpvdDEiMCAGCSqGSIb3DQEJ
6ARYTZW1hY3MtZGV2ZWxAZnNmLm9yZzAeFw0xNjAyMDgwNDA0MzJaFw0xNjAzMDkw
7NDA0MzJaMIGsMQswCQYDVQQGEwJBVTEYMBYGA1UECAwPTmV3IFNvdXRoIFdhbGVz
8MQ8wDQYDVQQHDAZTeWRuZXkxITAfBgNVBAoMGEVtYWNzIFRlc3QgU2VydmljZXNz
9IExMQzESMBAGA1UECwwJQXV0b21hdGVkMRcwFQYDVQQDDA50ZXN0LmVtYWNzLnpv
10dDEiMCAGCSqGSIb3DQEJARYTZW1hY3MtZGV2ZWxAZnNmLm9yZzCCASIwDQYJKoZI
11hvcNAQEBBQADggEPADCCAQoCggEBAM52lP7k1rBpctBX1irRVgDerxqlFSTkvg8L
12WmRCfwm3XY8EZWqM/8Eex5soH7myRlWfUH/cKxbqScZqXotj0hlPxdRkM6gWgHS9
13Mml7wnz2LZGvD5PfMfs+yBHKAMrqortFXCKksHsYIJ66l9gJMm1G5XjWha6CaEr/
14k2bE5Ovw0fB2B4vH0OqhJzGyenJOspXZz1ttn3h3UC5fbDXS8fUM9k/FbgJKypWr
15zB3P12GcMR939FsR5sqa8nNoCMw+WBzs4XuM5Ad+s/UtEaZvmtwvLwmdB7cgCEyM
16x5gaM969SlpOmuy7dDTCCK3lBl6B5dgFKvVcChYwSW+xJz5tfL0CAwEAAaNQME4w
17HQYDVR0OBBYEFG3YhH7ZzEdOGstkT67uUh1RylNjMB8GA1UdIwQYMBaAFG3YhH7Z
18zEdOGstkT67uUh1RylNjMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQELBQADggEB
19ADnJL2tBMnPepywA57yDfJz54FvrqRd+UAjSiB7/QySDpHnTM3b3sXWfwAkXPTjM
20c+jRW2kfdnL6OQW2tpcpPZANGnwK8MJrtGcbHhtPXjgDRhVZp64hsB7ayS+l0Dm7
212ZBbi2SF8FgZVcQy0WD01ir2raSODo124dMrq+3aHP77YLbiNEKj+wFoDbndQ1FQ
22gtIJBE80FADoqc7LnBrpA20aVlfqhKZqe+leYDSZ+CE1iwlPdvD+RTUxVDs5EfpB
23qVOHDlzEfVmcMnddKTV8pNYuo93AG4s0KdrGG9RwSvtLaOoHd2i6RmIs+Yiumbau
24mXodMxxAEW/cM7Ita/2QVmk=
25-----END CERTIFICATE-----
diff --git a/test/lisp/net/key.pem b/test/lisp/net/key.pem
new file mode 100644
index 00000000000..5db58f573ca
--- /dev/null
+++ b/test/lisp/net/key.pem
@@ -0,0 +1,28 @@
1-----BEGIN PRIVATE KEY-----
2MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDOdpT+5NawaXLQ
3V9Yq0VYA3q8apRUk5L4PC1pkQn8Jt12PBGVqjP/BHsebKB+5skZVn1B/3CsW6knG
4al6LY9IZT8XUZDOoFoB0vTJpe8J89i2Rrw+T3zH7PsgRygDK6qK7RVwipLB7GCCe
5upfYCTJtRuV41oWugmhK/5NmxOTr8NHwdgeLx9DqoScxsnpyTrKV2c9bbZ94d1Au
6X2w10vH1DPZPxW4CSsqVq8wdz9dhnDEfd/RbEebKmvJzaAjMPlgc7OF7jOQHfrP1
7LRGmb5rcLy8JnQe3IAhMjMeYGjPevUpaTprsu3Q0wgit5QZegeXYBSr1XAoWMElv
8sSc+bXy9AgMBAAECggEAaqHkIiGeoE5V9jTncAXeHWTlmyVX3k4luy9p6A5P/nyt
93YevuXBJRzzWatQ2Tno8yUwXD3Ju7s7ie4/EdMmBYYFJ84AtDctRXPm6Z7B7qn6a
102ntH2F+WOOUb/9QMxMCae44/H8VfQLQdZN2KPxHA8Z+ENPzW3mKL6vBE+PcIJLK2
11kTXQdCEIuUb1v4kxKYfjyyHAQ9yHvocUvZdodGHrpmWOr/2QCrqCjwiKnXyvdJMi
12JQ4a3dU+JG5Zwr2hScyeLgS4p+M3A2NY+oIACn2rCcsIKC6uvBK3wAbhssaY8z9c
135kap862oMBNmPCxPuQTIIO7ptla0EWHktpFxnu7GIQKBgQDvKyXt82zGHiOZ9acx
144fV7t3NF2MNd9fOn59NYWYRSs2gaEjit6BnsCgiKZOJJ2YFsggBiQMiWuEzwqIdW
15bOH8W5AubTxnE2OjeIpH5r8AXI6I/pKdOedM86oeElbL0p53OZqSqBK6vA5SnE76
16fZwC505h/mqH2E6AdKpcyL7sJwKBgQDc/jc4MkVnqF7xcYoJrYEbnkhwqRxIM+0Y
17HY2qXszWQPgjae3NK1rw/PEOATzWrHLvRS/utQ8yeLUAZIGsFY8+c1kjvkvl4ZK2
18OnsEOVLmEwjDqqnq3JFYCVSkXfLBGRD3wGldzkCQljOiGuJ/Co1rGHk7CfBmxX2p
19kxdts5OKewKBgQDTRsSc7Zs7cMh2a0GlmTyoa6iTHSeIy4rQ2sQimgGApSfjUBFt
2030l28G4XA4O7RT9FwZnhMeWA75JYTigwOsNvkNtPiAQB8mjksclGNxqnkRwA/RI7
21fjlMCzxOkFjIeWivXd2kjIDvIM1uQNKsCWZWUks12e/1zSmb5HPSvyuZpQKBgQDQ
22qVgKP604ysmav9HOgXy+Tx2nAoYpxp2/f2gbzZcrVfz1szdN2fnsQWh6CMEhEYMU
23WQeBJIRM65w72qp1iYXPOaqZDT0suWiFl4I/4sBbbO2BkssNb2Xs8iJxcCOeH8Td
24qVfTssNTwf7OuQPTYGtXC6ysCh5ra13Tl4cvlbdhsQKBgFHXP+919wSncLS+2ySD
25waBzG6GyVOgV+FE3DrM3Xp4S6fldWYAndKHQ1HjJVDY8SkC2Tk1D7QSQnmS+ZzYs
26YqzcnkPCTHLb6wCErs4ZiW0gn9xJnfxyv6wPujsayL4TMsmsqkj/IAB61UjwaA/a
27Z+rUw/WkcNPD59AD1J0eeSZu
28-----END PRIVATE KEY-----
diff --git a/test/lisp/net/network-stream-tests.el b/test/lisp/net/network-stream-tests.el
index f52a69e05d6..478b8248eb3 100644
--- a/test/lisp/net/network-stream-tests.el
+++ b/test/lisp/net/network-stream-tests.el
@@ -22,6 +22,8 @@
22 22
23;;; Code: 23;;; Code:
24 24
25(require 'gnutls)
26
25(ert-deftest make-local-unix-server () 27(ert-deftest make-local-unix-server ()
26 (let* ((file (make-temp-name "/tmp/server-test")) 28 (let* ((file (make-temp-name "/tmp/server-test"))
27 (server 29 (server
@@ -101,7 +103,7 @@
101 :buffer (generate-new-buffer "*foo*") 103 :buffer (generate-new-buffer "*foo*")
102 :host (system-name) 104 :host (system-name)
103 :service port))) 105 :service port)))
104 (with-current-buffer "*foo*" 106 (with-current-buffer (process-buffer proc)
105 (process-send-string proc "echo foo") 107 (process-send-string proc "echo foo")
106 (sleep-for 0.1) 108 (sleep-for 0.1)
107 (should (equal (buffer-string) "foo\n"))) 109 (should (equal (buffer-string) "foo\n")))
@@ -114,7 +116,7 @@
114 :buffer (generate-new-buffer "*foo*") 116 :buffer (generate-new-buffer "*foo*")
115 :host "localhost" 117 :host "localhost"
116 :service port))) 118 :service port)))
117 (with-current-buffer "*foo*" 119 (with-current-buffer (process-buffer proc)
118 (process-send-string proc "echo foo") 120 (process-send-string proc "echo foo")
119 (sleep-for 0.1) 121 (sleep-for 0.1)
120 (should (equal (buffer-string) "foo\n"))) 122 (should (equal (buffer-string) "foo\n")))
@@ -127,7 +129,7 @@
127 :buffer (generate-new-buffer "*foo*") 129 :buffer (generate-new-buffer "*foo*")
128 :host "127.0.0.1" 130 :host "127.0.0.1"
129 :service port))) 131 :service port)))
130 (with-current-buffer "*foo*" 132 (with-current-buffer (process-buffer proc)
131 (process-send-string proc "echo foo") 133 (process-send-string proc "echo foo")
132 (sleep-for 0.1) 134 (sleep-for 0.1)
133 (should (equal (buffer-string) "foo\n"))) 135 (should (equal (buffer-string) "foo\n")))
@@ -147,10 +149,47 @@
147 t))) 149 t)))
148 (while (eq (process-status proc) 'connect) 150 (while (eq (process-status proc) 'connect)
149 (sit-for 0.1)) 151 (sit-for 0.1))
150 (with-current-buffer "*foo*" 152 (with-current-buffer (process-buffer proc)
151 (process-send-string proc "echo foo") 153 (process-send-string proc "echo foo")
152 (sleep-for 0.1) 154 (sleep-for 0.1)
153 (should (equal (buffer-string) "foo\n"))) 155 (should (equal (buffer-string) "foo\n")))
154 (delete-process server))) 156 (delete-process server)))
155 157
158(defun make-tls-server ()
159 (start-process "openssl" (generate-new-buffer "*tls*") "openssl"
160 "s_server" "-key" "lisp/net/key.pem"
161 "-cert" "lisp/net/cert.pem"
162 "-accept" "44330"
163 "-www"))
164
165(ert-deftest connect-to-tls ()
166 (let ((server (make-tls-server))
167 (times 0)
168 proc status)
169 (sleep-for 1)
170 (with-current-buffer (process-buffer server)
171 (message "openssl: %s" (buffer-string)))
172
173 ;; It takes a while for openssl to start.
174 (while (and (null (ignore-errors
175 (setq proc (make-network-process
176 :name "bar"
177 :buffer (generate-new-buffer "*foo*")
178 :host "localhost"
179 :service 44330))))
180 (< (setq times (1+ times)) 10))
181 (sit-for 0.1))
182 (should proc)
183 (gnutls-negotiate :process proc
184 :type 'gnutls-x509pki
185 :hostname "localhost")
186 (delete-process server)
187 (setq status (gnutls-peer-status proc))
188 (should (consp status))
189 (delete-process proc)
190 (let ((issuer (plist-get (plist-get status :certificate) :issuer)))
191 (should (stringp issuer))
192 (setq issuer (split-string issuer ","))
193 (should (equal (nth 3 issuer) "O=Emacs Test Servicess LLC")))))
194
156;;; network-stream-tests.el ends here 195;;; network-stream-tests.el ends here