Version 1.8.0.0
[socat.git] / xio-openssl.h
blob204aca60c90330af244a54fa2920aa513bc275e1
1 /* source: xio-openssl.h */
2 /* Copyright Gerhard Rieger and contributors (see file CHANGES) */
3 /* Published under the GNU General Public License V.2, see file COPYING */
5 #ifndef __xio_openssl_included
6 #define __xio_openssl_included 1
8 #if WITH_OPENSSL /* make this address configure dependend */
10 #define SSLIO_BASE 0x53530000 /* "SSxx" */
11 #define SSLIO_MASK 0xffff0000
13 extern const struct addrdesc xioaddr_openssl;
14 extern const struct addrdesc xioaddr_openssl_listen;
15 extern const struct addrdesc xioaddr_openssl_dtls_client;
16 extern const struct addrdesc xioaddr_openssl_dtls_server;
18 extern const struct optdesc opt_openssl_cipherlist;
19 extern const struct optdesc opt_openssl_method;
20 extern const struct optdesc opt_openssl_min_proto_version;
21 extern const struct optdesc opt_openssl_max_proto_version;
22 extern const struct optdesc opt_openssl_verify;
23 extern const struct optdesc opt_openssl_certificate;
24 extern const struct optdesc opt_openssl_key;
25 extern const struct optdesc opt_openssl_dhparam;
26 extern const struct optdesc opt_openssl_cafile;
27 extern const struct optdesc opt_openssl_capath;
28 extern const struct optdesc opt_openssl_egd;
29 #if HAVE_SSL_CTX_set_tlsext_max_fragment_length || defined(SSL_CTX_set_tlsext_max_fragment_length)
30 extern const struct optdesc opt_openssl_maxfraglen;
31 #endif
32 #if HAVE_SSL_CTX_set_max_send_fragment || defined(SSL_CTX_set_max_send_fragment)
33 extern const struct optdesc opt_openssl_maxsendfrag;
34 #endif
35 extern const struct optdesc opt_openssl_pseudo;
36 #if OPENSSL_VERSION_NUMBER >= 0x00908000L
37 extern const struct optdesc opt_openssl_compress;
38 #endif
39 #if WITH_FIPS
40 extern const struct optdesc opt_openssl_fips;
41 #endif
42 extern const struct optdesc opt_openssl_commonname;
43 extern const struct optdesc opt_openssl_no_sni;
44 extern const struct optdesc opt_openssl_snihost;
46 extern int
47 _xioopen_openssl_prepare(struct opt *opts, struct single *xfd,
48 bool server, bool *opt_ver, const char *opt_cert,
49 SSL_CTX **ctx, bool *use_dtls);
50 extern int
51 _xioopen_openssl_connect(struct single *xfd, bool opt_ver,
52 const char *opt_commonname,
53 bool no_sni, const char *snihost,
54 SSL_CTX *ctx, int level);
55 extern int
56 _xioopen_openssl_listen(struct single *xfd, bool opt_ver,
57 const char *opt_commonname,
58 SSL_CTX *ctx, int level);
59 extern int xioclose_openssl(xiofile_t *xfd);
60 extern int xioshutdown_openssl(struct single *sfd, int how);
61 extern ssize_t xioread_openssl(struct single *file, void *buff, size_t bufsiz);
62 extern ssize_t xiopending_openssl(struct single *pipe);
63 extern ssize_t xiowrite_openssl(struct single *file, const void *buff, size_t bufsiz);
65 #if WITH_FIPS
66 extern int xio_reset_fips_mode(void);
67 #endif /* WITH_FIPS */
69 #endif /* WITH_OPENSSL */
71 #endif /* !defined(__xio_openssl_included) */