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