xref: /freebsd-src/contrib/libpcap/sslutils.h (revision 6f9cba8f8b5efd16249633e52483ea351876b67b)
1*6f9cba8fSJoseph Mingrone /*
2*6f9cba8fSJoseph Mingrone  * Copyright (c) 2002 - 2003
3*6f9cba8fSJoseph Mingrone  * NetGroup, Politecnico di Torino (Italy)
4*6f9cba8fSJoseph Mingrone  * All rights reserved.
5*6f9cba8fSJoseph Mingrone  *
6*6f9cba8fSJoseph Mingrone  * Redistribution and use in source and binary forms, with or without
7*6f9cba8fSJoseph Mingrone  * modification, are permitted provided that the following conditions
8*6f9cba8fSJoseph Mingrone  * are met:
9*6f9cba8fSJoseph Mingrone  *
10*6f9cba8fSJoseph Mingrone  * 1. Redistributions of source code must retain the above copyright
11*6f9cba8fSJoseph Mingrone  * notice, this list of conditions and the following disclaimer.
12*6f9cba8fSJoseph Mingrone  * 2. Redistributions in binary form must reproduce the above copyright
13*6f9cba8fSJoseph Mingrone  * notice, this list of conditions and the following disclaimer in the
14*6f9cba8fSJoseph Mingrone  * documentation and/or other materials provided with the distribution.
15*6f9cba8fSJoseph Mingrone  * 3. Neither the name of the Politecnico di Torino nor the names of its
16*6f9cba8fSJoseph Mingrone  * contributors may be used to endorse or promote products derived from
17*6f9cba8fSJoseph Mingrone  * this software without specific prior written permission.
18*6f9cba8fSJoseph Mingrone  *
19*6f9cba8fSJoseph Mingrone  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
20*6f9cba8fSJoseph Mingrone  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
21*6f9cba8fSJoseph Mingrone  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
22*6f9cba8fSJoseph Mingrone  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
23*6f9cba8fSJoseph Mingrone  * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
24*6f9cba8fSJoseph Mingrone  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
25*6f9cba8fSJoseph Mingrone  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
26*6f9cba8fSJoseph Mingrone  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
27*6f9cba8fSJoseph Mingrone  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
28*6f9cba8fSJoseph Mingrone  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
29*6f9cba8fSJoseph Mingrone  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30*6f9cba8fSJoseph Mingrone  *
31*6f9cba8fSJoseph Mingrone  */
32*6f9cba8fSJoseph Mingrone 
33*6f9cba8fSJoseph Mingrone #ifndef __SSLUTILS_H__
34*6f9cba8fSJoseph Mingrone #define __SSLUTILS_H__
35*6f9cba8fSJoseph Mingrone 
36*6f9cba8fSJoseph Mingrone #ifdef HAVE_OPENSSL
37*6f9cba8fSJoseph Mingrone #include "pcap/socket.h"  // for SOCKET
38*6f9cba8fSJoseph Mingrone #include <openssl/ssl.h>
39*6f9cba8fSJoseph Mingrone #include <openssl/err.h>
40*6f9cba8fSJoseph Mingrone 
41*6f9cba8fSJoseph Mingrone /*
42*6f9cba8fSJoseph Mingrone  * Utility functions
43*6f9cba8fSJoseph Mingrone  */
44*6f9cba8fSJoseph Mingrone 
45*6f9cba8fSJoseph Mingrone void ssl_set_certfile(const char *certfile);
46*6f9cba8fSJoseph Mingrone void ssl_set_keyfile(const char *keyfile);
47*6f9cba8fSJoseph Mingrone int ssl_init_once(int is_server, int enable_compression, char *errbuf, size_t errbuflen);
48*6f9cba8fSJoseph Mingrone SSL *ssl_promotion(int is_server, SOCKET s, char *errbuf, size_t errbuflen);
49*6f9cba8fSJoseph Mingrone void ssl_finish(SSL *ssl);
50*6f9cba8fSJoseph Mingrone int ssl_send(SSL *, char const *buffer, int size, char *errbuf, size_t errbuflen);
51*6f9cba8fSJoseph Mingrone int ssl_recv(SSL *, char *buffer, int size, char *errbuf, size_t errbuflen);
52*6f9cba8fSJoseph Mingrone 
53*6f9cba8fSJoseph Mingrone // The SSL parameters are used
54*6f9cba8fSJoseph Mingrone #define _U_NOSSL_
55*6f9cba8fSJoseph Mingrone 
56*6f9cba8fSJoseph Mingrone #else   // HAVE_OPENSSL
57*6f9cba8fSJoseph Mingrone 
58*6f9cba8fSJoseph Mingrone // This saves us from a lot of ifdefs:
59*6f9cba8fSJoseph Mingrone #define SSL void const
60*6f9cba8fSJoseph Mingrone 
61*6f9cba8fSJoseph Mingrone // The SSL parameters are unused
62*6f9cba8fSJoseph Mingrone #define _U_NOSSL_	_U_
63*6f9cba8fSJoseph Mingrone 
64*6f9cba8fSJoseph Mingrone #endif  // HAVE_OPENSSL
65*6f9cba8fSJoseph Mingrone 
66*6f9cba8fSJoseph Mingrone #endif  // __SSLUTILS_H__
67