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