annotate src/tls.h @ 5887:6eca500211f4

Prototype for X509_check_host() has changed, detect this in configure.ac ChangeLog addition: 2015-04-09 Aidan Kehoe <kehoea@parhasard.net> * configure.ac: If X509_check_host() is available, check the number of arguments it takes. Don't use it if it takes any number of arguments other than five. Also don't use it if <openssl/x509v3.h> does not declare it, since if that is so there is no portable way to tell how many arguments it should take, and so we would end up smashing the stack. * configure: Regenerate. src/ChangeLog addition: 2015-04-09 Aidan Kehoe <kehoea@parhasard.net> * tls.c: #include <openssl/x509v3.h> for its prototype for X509_check_host(). * tls.c (tls_open): Pass the new fifth argument to X509_check_host().
author Aidan Kehoe <kehoea@parhasard.net>
date Thu, 09 Apr 2015 14:27:02 +0100
parents d59bfb050ca8
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
5814
a216b3c2b09e Add TLS support. See xemacs-patches message with ID
Jerry James <james@xemacs.org>
parents:
diff changeset
1 /* Transport Layer Security implementation -- header file.
a216b3c2b09e Add TLS support. See xemacs-patches message with ID
Jerry James <james@xemacs.org>
parents:
diff changeset
2 Copyright (C) 2014 Jerry James
a216b3c2b09e Add TLS support. See xemacs-patches message with ID
Jerry James <james@xemacs.org>
parents:
diff changeset
3
a216b3c2b09e Add TLS support. See xemacs-patches message with ID
Jerry James <james@xemacs.org>
parents:
diff changeset
4 This file is part of XEmacs.
a216b3c2b09e Add TLS support. See xemacs-patches message with ID
Jerry James <james@xemacs.org>
parents:
diff changeset
5
a216b3c2b09e Add TLS support. See xemacs-patches message with ID
Jerry James <james@xemacs.org>
parents:
diff changeset
6 XEmacs is free software: you can redistribute it and/or modify it
a216b3c2b09e Add TLS support. See xemacs-patches message with ID
Jerry James <james@xemacs.org>
parents:
diff changeset
7 under the terms of the GNU General Public License as published by the
a216b3c2b09e Add TLS support. See xemacs-patches message with ID
Jerry James <james@xemacs.org>
parents:
diff changeset
8 Free Software Foundation, either version 3 of the License, or (at your
a216b3c2b09e Add TLS support. See xemacs-patches message with ID
Jerry James <james@xemacs.org>
parents:
diff changeset
9 option) any later version.
a216b3c2b09e Add TLS support. See xemacs-patches message with ID
Jerry James <james@xemacs.org>
parents:
diff changeset
10
a216b3c2b09e Add TLS support. See xemacs-patches message with ID
Jerry James <james@xemacs.org>
parents:
diff changeset
11 XEmacs is distributed in the hope that it will be useful, but WITHOUT
a216b3c2b09e Add TLS support. See xemacs-patches message with ID
Jerry James <james@xemacs.org>
parents:
diff changeset
12 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
a216b3c2b09e Add TLS support. See xemacs-patches message with ID
Jerry James <james@xemacs.org>
parents:
diff changeset
13 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
a216b3c2b09e Add TLS support. See xemacs-patches message with ID
Jerry James <james@xemacs.org>
parents:
diff changeset
14 for more details.
a216b3c2b09e Add TLS support. See xemacs-patches message with ID
Jerry James <james@xemacs.org>
parents:
diff changeset
15
a216b3c2b09e Add TLS support. See xemacs-patches message with ID
Jerry James <james@xemacs.org>
parents:
diff changeset
16 You should have received a copy of the GNU General Public License
a216b3c2b09e Add TLS support. See xemacs-patches message with ID
Jerry James <james@xemacs.org>
parents:
diff changeset
17 along with XEmacs. If not, see <http://www.gnu.org/licenses/>. */
a216b3c2b09e Add TLS support. See xemacs-patches message with ID
Jerry James <james@xemacs.org>
parents:
diff changeset
18
a216b3c2b09e Add TLS support. See xemacs-patches message with ID
Jerry James <james@xemacs.org>
parents:
diff changeset
19 /* Synched up with: Not in FSF. */
a216b3c2b09e Add TLS support. See xemacs-patches message with ID
Jerry James <james@xemacs.org>
parents:
diff changeset
20
a216b3c2b09e Add TLS support. See xemacs-patches message with ID
Jerry James <james@xemacs.org>
parents:
diff changeset
21 /* Written by Jerry James. */
a216b3c2b09e Add TLS support. See xemacs-patches message with ID
Jerry James <james@xemacs.org>
parents:
diff changeset
22
a216b3c2b09e Add TLS support. See xemacs-patches message with ID
Jerry James <james@xemacs.org>
parents:
diff changeset
23 #ifndef INCLUDED_tls_h_
a216b3c2b09e Add TLS support. See xemacs-patches message with ID
Jerry James <james@xemacs.org>
parents:
diff changeset
24 #define INCLUDED_tls_h_
a216b3c2b09e Add TLS support. See xemacs-patches message with ID
Jerry James <james@xemacs.org>
parents:
diff changeset
25
a216b3c2b09e Add TLS support. See xemacs-patches message with ID
Jerry James <james@xemacs.org>
parents:
diff changeset
26 extern Lisp_Object Qtls_error;
a216b3c2b09e Add TLS support. See xemacs-patches message with ID
Jerry James <james@xemacs.org>
parents:
diff changeset
27
a216b3c2b09e Add TLS support. See xemacs-patches message with ID
Jerry James <james@xemacs.org>
parents:
diff changeset
28 void syms_of_tls (void);
a216b3c2b09e Add TLS support. See xemacs-patches message with ID
Jerry James <james@xemacs.org>
parents:
diff changeset
29 void vars_of_tls (void);
a216b3c2b09e Add TLS support. See xemacs-patches message with ID
Jerry James <james@xemacs.org>
parents:
diff changeset
30 void init_tls (void);
a216b3c2b09e Add TLS support. See xemacs-patches message with ID
Jerry James <james@xemacs.org>
parents:
diff changeset
31
a216b3c2b09e Add TLS support. See xemacs-patches message with ID
Jerry James <james@xemacs.org>
parents:
diff changeset
32 #ifdef WITH_TLS
a216b3c2b09e Add TLS support. See xemacs-patches message with ID
Jerry James <james@xemacs.org>
parents:
diff changeset
33
a216b3c2b09e Add TLS support. See xemacs-patches message with ID
Jerry James <james@xemacs.org>
parents:
diff changeset
34 #ifdef HAVE_NSS
a216b3c2b09e Add TLS support. See xemacs-patches message with ID
Jerry James <james@xemacs.org>
parents:
diff changeset
35 #include <prio.h>
a216b3c2b09e Add TLS support. See xemacs-patches message with ID
Jerry James <james@xemacs.org>
parents:
diff changeset
36
a216b3c2b09e Add TLS support. See xemacs-patches message with ID
Jerry James <james@xemacs.org>
parents:
diff changeset
37 #define TLS_SETUP_SOCK 0
a216b3c2b09e Add TLS support. See xemacs-patches message with ID
Jerry James <james@xemacs.org>
parents:
diff changeset
38
a216b3c2b09e Add TLS support. See xemacs-patches message with ID
Jerry James <james@xemacs.org>
parents:
diff changeset
39 typedef struct tls_state
a216b3c2b09e Add TLS support. See xemacs-patches message with ID
Jerry James <james@xemacs.org>
parents:
diff changeset
40 {
a216b3c2b09e Add TLS support. See xemacs-patches message with ID
Jerry James <james@xemacs.org>
parents:
diff changeset
41 PRFileDesc *tls_file_desc;
a216b3c2b09e Add TLS support. See xemacs-patches message with ID
Jerry James <james@xemacs.org>
parents:
diff changeset
42 int tls_refcount;
a216b3c2b09e Add TLS support. See xemacs-patches message with ID
Jerry James <james@xemacs.org>
parents:
diff changeset
43 } tls_state_t;
a216b3c2b09e Add TLS support. See xemacs-patches message with ID
Jerry James <james@xemacs.org>
parents:
diff changeset
44 #endif
a216b3c2b09e Add TLS support. See xemacs-patches message with ID
Jerry James <james@xemacs.org>
parents:
diff changeset
45
a216b3c2b09e Add TLS support. See xemacs-patches message with ID
Jerry James <james@xemacs.org>
parents:
diff changeset
46 #ifdef HAVE_GNUTLS
a216b3c2b09e Add TLS support. See xemacs-patches message with ID
Jerry James <james@xemacs.org>
parents:
diff changeset
47 #include <gnutls/gnutls.h>
a216b3c2b09e Add TLS support. See xemacs-patches message with ID
Jerry James <james@xemacs.org>
parents:
diff changeset
48
a216b3c2b09e Add TLS support. See xemacs-patches message with ID
Jerry James <james@xemacs.org>
parents:
diff changeset
49 #define TLS_SETUP_SOCK 1
a216b3c2b09e Add TLS support. See xemacs-patches message with ID
Jerry James <james@xemacs.org>
parents:
diff changeset
50
a216b3c2b09e Add TLS support. See xemacs-patches message with ID
Jerry James <james@xemacs.org>
parents:
diff changeset
51 typedef struct tls_state
a216b3c2b09e Add TLS support. See xemacs-patches message with ID
Jerry James <james@xemacs.org>
parents:
diff changeset
52 {
a216b3c2b09e Add TLS support. See xemacs-patches message with ID
Jerry James <james@xemacs.org>
parents:
diff changeset
53 gnutls_session_t tls_session;
a216b3c2b09e Add TLS support. See xemacs-patches message with ID
Jerry James <james@xemacs.org>
parents:
diff changeset
54 int tls_refcount;
a216b3c2b09e Add TLS support. See xemacs-patches message with ID
Jerry James <james@xemacs.org>
parents:
diff changeset
55 } tls_state_t;
a216b3c2b09e Add TLS support. See xemacs-patches message with ID
Jerry James <james@xemacs.org>
parents:
diff changeset
56 #endif
a216b3c2b09e Add TLS support. See xemacs-patches message with ID
Jerry James <james@xemacs.org>
parents:
diff changeset
57
a216b3c2b09e Add TLS support. See xemacs-patches message with ID
Jerry James <james@xemacs.org>
parents:
diff changeset
58 #ifdef HAVE_OPENSSL
a216b3c2b09e Add TLS support. See xemacs-patches message with ID
Jerry James <james@xemacs.org>
parents:
diff changeset
59 # include <openssl/ssl.h>
a216b3c2b09e Add TLS support. See xemacs-patches message with ID
Jerry James <james@xemacs.org>
parents:
diff changeset
60
a216b3c2b09e Add TLS support. See xemacs-patches message with ID
Jerry James <james@xemacs.org>
parents:
diff changeset
61 #define TLS_SETUP_SOCK 1
a216b3c2b09e Add TLS support. See xemacs-patches message with ID
Jerry James <james@xemacs.org>
parents:
diff changeset
62
a216b3c2b09e Add TLS support. See xemacs-patches message with ID
Jerry James <james@xemacs.org>
parents:
diff changeset
63 typedef struct tls_state
a216b3c2b09e Add TLS support. See xemacs-patches message with ID
Jerry James <james@xemacs.org>
parents:
diff changeset
64 {
a216b3c2b09e Add TLS support. See xemacs-patches message with ID
Jerry James <james@xemacs.org>
parents:
diff changeset
65 SSL *tls_connection;
a216b3c2b09e Add TLS support. See xemacs-patches message with ID
Jerry James <james@xemacs.org>
parents:
diff changeset
66 int tls_refcount;
a216b3c2b09e Add TLS support. See xemacs-patches message with ID
Jerry James <james@xemacs.org>
parents:
diff changeset
67 } tls_state_t;
a216b3c2b09e Add TLS support. See xemacs-patches message with ID
Jerry James <james@xemacs.org>
parents:
diff changeset
68 #endif
a216b3c2b09e Add TLS support. See xemacs-patches message with ID
Jerry James <james@xemacs.org>
parents:
diff changeset
69
a216b3c2b09e Add TLS support. See xemacs-patches message with ID
Jerry James <james@xemacs.org>
parents:
diff changeset
70 tls_state_t *tls_open (int, const Extbyte *);
a216b3c2b09e Add TLS support. See xemacs-patches message with ID
Jerry James <james@xemacs.org>
parents:
diff changeset
71 tls_state_t *tls_negotiate (int, const Extbyte *, Lisp_Object);
a216b3c2b09e Add TLS support. See xemacs-patches message with ID
Jerry James <james@xemacs.org>
parents:
diff changeset
72 void tls_close_connection (tls_state_t *);
a216b3c2b09e Add TLS support. See xemacs-patches message with ID
Jerry James <james@xemacs.org>
parents:
diff changeset
73 Lisp_Object make_tls_output_stream (tls_state_t *);
a216b3c2b09e Add TLS support. See xemacs-patches message with ID
Jerry James <james@xemacs.org>
parents:
diff changeset
74 Lisp_Object make_tls_input_stream (tls_state_t *);
a216b3c2b09e Add TLS support. See xemacs-patches message with ID
Jerry James <james@xemacs.org>
parents:
diff changeset
75 int tls_get_fd (tls_state_t *);
a216b3c2b09e Add TLS support. See xemacs-patches message with ID
Jerry James <james@xemacs.org>
parents:
diff changeset
76 Bytecount tls_read (tls_state_t *, unsigned char *, Bytecount, unsigned int);
a216b3c2b09e Add TLS support. See xemacs-patches message with ID
Jerry James <james@xemacs.org>
parents:
diff changeset
77 Bytecount tls_write (tls_state_t *, const unsigned char *, Bytecount,
a216b3c2b09e Add TLS support. See xemacs-patches message with ID
Jerry James <james@xemacs.org>
parents:
diff changeset
78 unsigned int);
a216b3c2b09e Add TLS support. See xemacs-patches message with ID
Jerry James <james@xemacs.org>
parents:
diff changeset
79 int tls_close (tls_state_t *);
a216b3c2b09e Add TLS support. See xemacs-patches message with ID
Jerry James <james@xemacs.org>
parents:
diff changeset
80 #else /* WITH_TLS */
a216b3c2b09e Add TLS support. See xemacs-patches message with ID
Jerry James <james@xemacs.org>
parents:
diff changeset
81 typedef int tls_state_t;
a216b3c2b09e Add TLS support. See xemacs-patches message with ID
Jerry James <james@xemacs.org>
parents:
diff changeset
82 #define TLS_SETUP_SOCK 1
5815
d59bfb050ca8 Fix TLS-related build failures. See xemacs-patches message with ID
Jerry James <james@xemacs.org>
parents: 5814
diff changeset
83 #define tls_open(x,y) ({ \
d59bfb050ca8 Fix TLS-related build failures. See xemacs-patches message with ID
Jerry James <james@xemacs.org>
parents: 5814
diff changeset
84 signal_error (Qtls_error, "TLS support unavailable", Qnil); \
d59bfb050ca8 Fix TLS-related build failures. See xemacs-patches message with ID
Jerry James <james@xemacs.org>
parents: 5814
diff changeset
85 NULL; })
5814
a216b3c2b09e Add TLS support. See xemacs-patches message with ID
Jerry James <james@xemacs.org>
parents:
diff changeset
86 #define tls_negotiate(x,y,z) NULL
5815
d59bfb050ca8 Fix TLS-related build failures. See xemacs-patches message with ID
Jerry James <james@xemacs.org>
parents: 5814
diff changeset
87 #define make_tls_input_stream(x) ({ \
d59bfb050ca8 Fix TLS-related build failures. See xemacs-patches message with ID
Jerry James <james@xemacs.org>
parents: 5814
diff changeset
88 signal_error (Qtls_error, "TLS support unavailable", Qnil); \
d59bfb050ca8 Fix TLS-related build failures. See xemacs-patches message with ID
Jerry James <james@xemacs.org>
parents: 5814
diff changeset
89 NULL; })
d59bfb050ca8 Fix TLS-related build failures. See xemacs-patches message with ID
Jerry James <james@xemacs.org>
parents: 5814
diff changeset
90 #define make_tls_output_stream(x) ({ \
d59bfb050ca8 Fix TLS-related build failures. See xemacs-patches message with ID
Jerry James <james@xemacs.org>
parents: 5814
diff changeset
91 signal_error (Qtls_error, "TLS support unavailable", Qnil); \
d59bfb050ca8 Fix TLS-related build failures. See xemacs-patches message with ID
Jerry James <james@xemacs.org>
parents: 5814
diff changeset
92 NULL; })
d59bfb050ca8 Fix TLS-related build failures. See xemacs-patches message with ID
Jerry James <james@xemacs.org>
parents: 5814
diff changeset
93 #define tls_get_fd(x) -1
5814
a216b3c2b09e Add TLS support. See xemacs-patches message with ID
Jerry James <james@xemacs.org>
parents:
diff changeset
94 #define tls_read(w,x,y,z) -1
a216b3c2b09e Add TLS support. See xemacs-patches message with ID
Jerry James <james@xemacs.org>
parents:
diff changeset
95 #define tls_write(w,x,y,z) -1
a216b3c2b09e Add TLS support. See xemacs-patches message with ID
Jerry James <james@xemacs.org>
parents:
diff changeset
96 #define tls_close(x) -1
a216b3c2b09e Add TLS support. See xemacs-patches message with ID
Jerry James <james@xemacs.org>
parents:
diff changeset
97 #endif /* WITH_TLS */
a216b3c2b09e Add TLS support. See xemacs-patches message with ID
Jerry James <james@xemacs.org>
parents:
diff changeset
98
a216b3c2b09e Add TLS support. See xemacs-patches message with ID
Jerry James <james@xemacs.org>
parents:
diff changeset
99 #endif /* INCLUDED_tls_h_ */