Function: network-stream-open-tls

network-stream-open-tls is a byte-compiled function defined in network-stream.el.gz.

Signature

(network-stream-open-tls NAME BUFFER HOST SERVICE PARAMETERS)

Source Code

;; Defined in /usr/src/emacs/lisp/net/network-stream.el.gz
(defun network-stream-open-tls (name buffer host service parameters)
  (with-current-buffer buffer
    (let* ((start (point-max))
	   (stream
            (if (gnutls-available-p)
                (open-gnutls-stream name buffer host service
                                    parameters)
              (require 'tls)
              (open-tls-stream name buffer host service)))
	   (eoc (plist-get parameters :end-of-command))
           greeting)
      (if (plist-get parameters :nowait)
          (list stream nil nil 'tls)
        ;; Check certificate validity etc.
        (when (and (gnutls-available-p) stream)
          (setq stream (nsm-verify-connection stream host service)))
        (if (null stream)
            (list nil nil nil 'plain)
          ;; If we're using tls.el, we have to delete the output from
          ;; openssl/gnutls-cli.
          (when (and (not (gnutls-available-p))
                     eoc)
            (setq greeting (network-stream-get-response stream start eoc))
            (goto-char (point-min))
            (when (re-search-forward eoc nil t)
              (goto-char (match-beginning 0))
              (delete-region (point-min) (line-beginning-position))))
          (let ((capability-command
                 (plist-get parameters :capability-command))
                (eo-capa (or (plist-get parameters :end-of-capability)
                             eoc)))
            (list stream
                  (network-stream-get-response stream start eoc)
                  (network-stream-command
                   stream
                   (network-stream--capability-command
                    capability-command greeting)
                   eo-capa)
                  'tls)))))))