2005-06-19 08:20:27 +04:00
/*
Unix SMB / CIFS implementation .
transport layer security handling code
Copyright ( C ) Andrew Tridgell 2005
This program is free software ; you can redistribute it and / or modify
it under the terms of the GNU General Public License as published by
2007-07-10 06:07:03 +04:00
the Free Software Foundation ; either version 3 of the License , or
2005-06-19 08:20:27 +04:00
( at your option ) any later version .
This program is distributed in the hope that it will be useful ,
but WITHOUT ANY WARRANTY ; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the
GNU General Public License for more details .
You should have received a copy of the GNU General Public License
2007-07-10 06:07:03 +04:00
along with this program . If not , see < http : //www.gnu.org/licenses/>.
2005-06-19 08:20:27 +04:00
*/
2005-11-09 11:13:41 +03:00
# ifndef _TLS_H_
# define _TLS_H_
2006-05-23 08:41:09 +04:00
# include "lib/socket/socket.h"
2007-12-03 02:28:22 +03:00
struct loadparm_context ;
2015-03-18 23:42:19 +03:00
void tls_cert_generate ( TALLOC_CTX * mem_ctx ,
const char * hostname ,
const char * keyfile , const char * certfile ,
const char * cafile ) ;
2010-02-03 16:36:10 +03:00
struct tstream_context ;
struct tstream_tls_params ;
2015-12-23 18:17:04 +03:00
enum tls_verify_peer_state {
TLS_VERIFY_PEER_NO_CHECK = 0 ,
# define TLS_VERIFY_PEER_NO_CHECK_STRING "no_check"
TLS_VERIFY_PEER_CA_ONLY = 10 ,
# define TLS_VERIFY_PEER_CA_ONLY_STRING "ca_only"
TLS_VERIFY_PEER_CA_AND_NAME_IF_AVAILABLE = 20 ,
# define TLS_VERIFY_PEER_CA_AND_NAME_IF_AVAILABLE_STRING \
" ca_and_name_if_available "
TLS_VERIFY_PEER_CA_AND_NAME = 30 ,
# define TLS_VERIFY_PEER_CA_AND_NAME_STRING "ca_and_name"
TLS_VERIFY_PEER_AS_STRICT_AS_POSSIBLE = 9999 ,
# define TLS_VERIFY_PEER_AS_STRICT_AS_POSSIBLE_STRING \
" as_strict_as_possible "
} ;
const char * tls_verify_peer_string ( enum tls_verify_peer_state verify_peer ) ;
2010-02-03 16:36:10 +03:00
NTSTATUS tstream_tls_params_client ( TALLOC_CTX * mem_ctx ,
const char * ca_file ,
const char * crl_file ,
2015-07-20 02:22:46 +03:00
const char * tls_priority ,
2015-12-23 18:17:04 +03:00
enum tls_verify_peer_state verify_peer ,
const char * peer_name ,
2010-02-03 16:36:10 +03:00
struct tstream_tls_params * * _tlsp ) ;
NTSTATUS tstream_tls_params_server ( TALLOC_CTX * mem_ctx ,
const char * dns_host_name ,
2010-10-07 13:16:48 +04:00
bool enabled ,
2010-02-03 16:36:10 +03:00
const char * key_file ,
const char * cert_file ,
const char * ca_file ,
const char * crl_file ,
const char * dhp_file ,
2015-07-20 02:22:46 +03:00
const char * tls_priority ,
2010-02-03 16:36:10 +03:00
struct tstream_tls_params * * _params ) ;
bool tstream_tls_params_enabled ( struct tstream_tls_params * params ) ;
struct tevent_req * _tstream_tls_connect_send ( TALLOC_CTX * mem_ctx ,
struct tevent_context * ev ,
struct tstream_context * plain_stream ,
struct tstream_tls_params * tls_params ,
const char * location ) ;
2015-06-19 13:26:55 +03:00
# define tstream_tls_connect_send(mem_ctx, ev, plain_stream, tls_params) \
2010-02-03 16:36:10 +03:00
_tstream_tls_connect_send ( mem_ctx , ev , plain_stream , tls_params , __location__ )
int tstream_tls_connect_recv ( struct tevent_req * req ,
int * perrno ,
TALLOC_CTX * mem_ctx ,
struct tstream_context * * tls_stream ) ;
struct tevent_req * _tstream_tls_accept_send ( TALLOC_CTX * mem_ctx ,
struct tevent_context * ev ,
struct tstream_context * plain_stream ,
struct tstream_tls_params * tls_params ,
const char * location ) ;
# define tstream_tls_accept_send(mem_ctx, ev, plain_stream, tls_params) \
_tstream_tls_accept_send ( mem_ctx , ev , plain_stream , tls_params , __location__ )
int tstream_tls_accept_recv ( struct tevent_req * req ,
int * perrno ,
TALLOC_CTX * mem_ctx ,
struct tstream_context * * tls_stream ) ;
# endif /* _TLS_H_ */