diff options
| author | Lars Ingebrigtsen | 2016-02-08 15:28:50 +1100 |
|---|---|---|
| committer | Lars Ingebrigtsen | 2016-02-08 15:28:50 +1100 |
| commit | f29b6cf37964859f40586e218abc37c3232f8480 (patch) | |
| tree | 97750a570551f091c9f68ad64f9379b95ac4fc48 /test | |
| parent | 4f50d8db8c54ca3fb80cd52c34099c4c0a8fb7dd (diff) | |
| download | emacs-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.pem | 25 | ||||
| -rw-r--r-- | test/lisp/net/key.pem | 28 | ||||
| -rw-r--r-- | test/lisp/net/network-stream-tests.el | 47 |
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----- | ||
| 2 | MIIELTCCAxWgAwIBAgIJAI6LqlFyaPRkMA0GCSqGSIb3DQEBCwUAMIGsMQswCQYD | ||
| 3 | VQQGEwJBVTEYMBYGA1UECAwPTmV3IFNvdXRoIFdhbGVzMQ8wDQYDVQQHDAZTeWRu | ||
| 4 | ZXkxITAfBgNVBAoMGEVtYWNzIFRlc3QgU2VydmljZXNzIExMQzESMBAGA1UECwwJ | ||
| 5 | QXV0b21hdGVkMRcwFQYDVQQDDA50ZXN0LmVtYWNzLnpvdDEiMCAGCSqGSIb3DQEJ | ||
| 6 | ARYTZW1hY3MtZGV2ZWxAZnNmLm9yZzAeFw0xNjAyMDgwNDA0MzJaFw0xNjAzMDkw | ||
| 7 | NDA0MzJaMIGsMQswCQYDVQQGEwJBVTEYMBYGA1UECAwPTmV3IFNvdXRoIFdhbGVz | ||
| 8 | MQ8wDQYDVQQHDAZTeWRuZXkxITAfBgNVBAoMGEVtYWNzIFRlc3QgU2VydmljZXNz | ||
| 9 | IExMQzESMBAGA1UECwwJQXV0b21hdGVkMRcwFQYDVQQDDA50ZXN0LmVtYWNzLnpv | ||
| 10 | dDEiMCAGCSqGSIb3DQEJARYTZW1hY3MtZGV2ZWxAZnNmLm9yZzCCASIwDQYJKoZI | ||
| 11 | hvcNAQEBBQADggEPADCCAQoCggEBAM52lP7k1rBpctBX1irRVgDerxqlFSTkvg8L | ||
| 12 | WmRCfwm3XY8EZWqM/8Eex5soH7myRlWfUH/cKxbqScZqXotj0hlPxdRkM6gWgHS9 | ||
| 13 | Mml7wnz2LZGvD5PfMfs+yBHKAMrqortFXCKksHsYIJ66l9gJMm1G5XjWha6CaEr/ | ||
| 14 | k2bE5Ovw0fB2B4vH0OqhJzGyenJOspXZz1ttn3h3UC5fbDXS8fUM9k/FbgJKypWr | ||
| 15 | zB3P12GcMR939FsR5sqa8nNoCMw+WBzs4XuM5Ad+s/UtEaZvmtwvLwmdB7cgCEyM | ||
| 16 | x5gaM969SlpOmuy7dDTCCK3lBl6B5dgFKvVcChYwSW+xJz5tfL0CAwEAAaNQME4w | ||
| 17 | HQYDVR0OBBYEFG3YhH7ZzEdOGstkT67uUh1RylNjMB8GA1UdIwQYMBaAFG3YhH7Z | ||
| 18 | zEdOGstkT67uUh1RylNjMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQELBQADggEB | ||
| 19 | ADnJL2tBMnPepywA57yDfJz54FvrqRd+UAjSiB7/QySDpHnTM3b3sXWfwAkXPTjM | ||
| 20 | c+jRW2kfdnL6OQW2tpcpPZANGnwK8MJrtGcbHhtPXjgDRhVZp64hsB7ayS+l0Dm7 | ||
| 21 | 2ZBbi2SF8FgZVcQy0WD01ir2raSODo124dMrq+3aHP77YLbiNEKj+wFoDbndQ1FQ | ||
| 22 | gtIJBE80FADoqc7LnBrpA20aVlfqhKZqe+leYDSZ+CE1iwlPdvD+RTUxVDs5EfpB | ||
| 23 | qVOHDlzEfVmcMnddKTV8pNYuo93AG4s0KdrGG9RwSvtLaOoHd2i6RmIs+Yiumbau | ||
| 24 | mXodMxxAEW/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----- | ||
| 2 | MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDOdpT+5NawaXLQ | ||
| 3 | V9Yq0VYA3q8apRUk5L4PC1pkQn8Jt12PBGVqjP/BHsebKB+5skZVn1B/3CsW6knG | ||
| 4 | al6LY9IZT8XUZDOoFoB0vTJpe8J89i2Rrw+T3zH7PsgRygDK6qK7RVwipLB7GCCe | ||
| 5 | upfYCTJtRuV41oWugmhK/5NmxOTr8NHwdgeLx9DqoScxsnpyTrKV2c9bbZ94d1Au | ||
| 6 | X2w10vH1DPZPxW4CSsqVq8wdz9dhnDEfd/RbEebKmvJzaAjMPlgc7OF7jOQHfrP1 | ||
| 7 | LRGmb5rcLy8JnQe3IAhMjMeYGjPevUpaTprsu3Q0wgit5QZegeXYBSr1XAoWMElv | ||
| 8 | sSc+bXy9AgMBAAECggEAaqHkIiGeoE5V9jTncAXeHWTlmyVX3k4luy9p6A5P/nyt | ||
| 9 | 3YevuXBJRzzWatQ2Tno8yUwXD3Ju7s7ie4/EdMmBYYFJ84AtDctRXPm6Z7B7qn6a | ||
| 10 | 2ntH2F+WOOUb/9QMxMCae44/H8VfQLQdZN2KPxHA8Z+ENPzW3mKL6vBE+PcIJLK2 | ||
| 11 | kTXQdCEIuUb1v4kxKYfjyyHAQ9yHvocUvZdodGHrpmWOr/2QCrqCjwiKnXyvdJMi | ||
| 12 | JQ4a3dU+JG5Zwr2hScyeLgS4p+M3A2NY+oIACn2rCcsIKC6uvBK3wAbhssaY8z9c | ||
| 13 | 5kap862oMBNmPCxPuQTIIO7ptla0EWHktpFxnu7GIQKBgQDvKyXt82zGHiOZ9acx | ||
| 14 | 4fV7t3NF2MNd9fOn59NYWYRSs2gaEjit6BnsCgiKZOJJ2YFsggBiQMiWuEzwqIdW | ||
| 15 | bOH8W5AubTxnE2OjeIpH5r8AXI6I/pKdOedM86oeElbL0p53OZqSqBK6vA5SnE76 | ||
| 16 | fZwC505h/mqH2E6AdKpcyL7sJwKBgQDc/jc4MkVnqF7xcYoJrYEbnkhwqRxIM+0Y | ||
| 17 | HY2qXszWQPgjae3NK1rw/PEOATzWrHLvRS/utQ8yeLUAZIGsFY8+c1kjvkvl4ZK2 | ||
| 18 | OnsEOVLmEwjDqqnq3JFYCVSkXfLBGRD3wGldzkCQljOiGuJ/Co1rGHk7CfBmxX2p | ||
| 19 | kxdts5OKewKBgQDTRsSc7Zs7cMh2a0GlmTyoa6iTHSeIy4rQ2sQimgGApSfjUBFt | ||
| 20 | 30l28G4XA4O7RT9FwZnhMeWA75JYTigwOsNvkNtPiAQB8mjksclGNxqnkRwA/RI7 | ||
| 21 | fjlMCzxOkFjIeWivXd2kjIDvIM1uQNKsCWZWUks12e/1zSmb5HPSvyuZpQKBgQDQ | ||
| 22 | qVgKP604ysmav9HOgXy+Tx2nAoYpxp2/f2gbzZcrVfz1szdN2fnsQWh6CMEhEYMU | ||
| 23 | WQeBJIRM65w72qp1iYXPOaqZDT0suWiFl4I/4sBbbO2BkssNb2Xs8iJxcCOeH8Td | ||
| 24 | qVfTssNTwf7OuQPTYGtXC6ysCh5ra13Tl4cvlbdhsQKBgFHXP+919wSncLS+2ySD | ||
| 25 | waBzG6GyVOgV+FE3DrM3Xp4S6fldWYAndKHQ1HjJVDY8SkC2Tk1D7QSQnmS+ZzYs | ||
| 26 | YqzcnkPCTHLb6wCErs4ZiW0gn9xJnfxyv6wPujsayL4TMsmsqkj/IAB61UjwaA/a | ||
| 27 | Z+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 |