diff options
author | Benny Prijono <bennylp@teluu.com> | 2006-12-08 21:58:31 +0000 |
---|---|---|
committer | Benny Prijono <bennylp@teluu.com> | 2006-12-08 21:58:31 +0000 |
commit | e1f1e702acaed16de56fb5d19fad61a1de83e070 (patch) | |
tree | 052eee4c64444b8e68f994eb4ac6b5c82692ba17 /pjsip/include | |
parent | ec5923a4081a5014ee7242e5ef91b2af8394aceb (diff) |
Initial implementation of TLS transport for ticket #3 (still not working at all)
git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@849 74dad513-b988-da41-8d7b-12977e46ad98
Diffstat (limited to 'pjsip/include')
-rw-r--r-- | pjsip/include/pjsip.h | 3 | ||||
-rw-r--r-- | pjsip/include/pjsip/sip_config.h | 11 | ||||
-rw-r--r-- | pjsip/include/pjsip/sip_transport_tls.h | 90 | ||||
-rw-r--r-- | pjsip/include/pjsua-lib/pjsua.h | 15 |
4 files changed, 119 insertions, 0 deletions
diff --git a/pjsip/include/pjsip.h b/pjsip/include/pjsip.h index 8da2d64c..ff6af220 100644 --- a/pjsip/include/pjsip.h +++ b/pjsip/include/pjsip.h @@ -40,6 +40,9 @@ #include <pjsip/sip_transport_udp.h> #include <pjsip/sip_transport_loop.h> #include <pjsip/sip_transport_tcp.h> +#if defined(PJSIP_HAS_TLS_TRANSPORT) && PJSIP_HAS_TLS_TRANSPORT!=0 +# include <pjsip/sip_transport_tls.h> +#endif #include <pjsip/sip_resolve.h> /* Authentication. */ diff --git a/pjsip/include/pjsip/sip_config.h b/pjsip/include/pjsip/sip_config.h index 420a2a01..a66dc37e 100644 --- a/pjsip/include/pjsip/sip_config.h +++ b/pjsip/include/pjsip/sip_config.h @@ -234,6 +234,17 @@ #endif +/** + * Enable TLS SIP transport support. For most systems this means that + * OpenSSL must be installed. + * + * Default: 0 (for now) + */ +#ifndef PJSIP_HAS_TLS_TRANSPORT +# define PJSIP_HAS_TLS_TRANSPORT 0 +#endif + + /* Endpoint. */ #define PJSIP_MAX_TIMER_COUNT (2*PJSIP_MAX_TSX_COUNT + 2*PJSIP_MAX_DIALOG_COUNT) diff --git a/pjsip/include/pjsip/sip_transport_tls.h b/pjsip/include/pjsip/sip_transport_tls.h new file mode 100644 index 00000000..bef81acf --- /dev/null +++ b/pjsip/include/pjsip/sip_transport_tls.h @@ -0,0 +1,90 @@ +/* $Id$ */ +/* + * Copyright (C) 2003-2006 Benny Prijono <benny@prijono.org> + * + * 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 + * the Free Software Foundation; either version 2 of the License, or + * (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 + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ +#ifndef __PJSIP_TRANSPORT_TLS_H__ +#define __PJSIP_TRANSPORT_TLS_H__ + +/** + * @file sip_transport_tls.h + * @brief SIP TLS Transport. + */ + +#include <pjsip/sip_transport.h> + +PJ_BEGIN_DECL + +/** + * @defgroup PJSIP_TRANSPORT_TLS TLS Transport + * @ingroup PJSIP_TRANSPORT + * @brief API to create and register TLS transport. + * @{ + * The functions below are used to create TLS transport and register + * the transport to the framework. + */ + +/** + * Register support for SIP TLS transport by creating TLS listener on + * the specified address and port. This function will create an + * instance of SIP TLS transport factory and register it to the + * transport manager. + * + * @param endpt The SIP endpoint. + * @param keyfile Path to keys and certificate file. + * @param password Password to open the private key. + * @param ca_list_file Path to Certificate of Authority file. + * @param local Optional local address to bind, or specify the + * address to bind the server socket to. Both IP + * interface address and port fields are optional. + * If IP interface address is not specified, socket + * will be bound to PJ_INADDR_ANY. If port is not + * specified, socket will be bound to any port + * selected by the operating system. + * @param a_name Optional published address, which is the address to be + * advertised as the address of this SIP transport. + * If this argument is NULL, then the bound address + * will be used as the published address. + * @param async_cnt Number of simultaneous asynchronous accept() + * operations to be supported. It is recommended that + * the number here corresponds to the number of + * processors in the system (or the number of SIP + * worker threads). + * @param p_factory Optional pointer to receive the instance of the + * SIP TLS transport factory just created. + * + * @return PJ_SUCCESS when the transport has been successfully + * started and registered to transport manager, or + * the appropriate error code. + */ +PJ_DECL(pj_status_t) pjsip_tls_transport_start(pjsip_endpoint *endpt, + const pj_str_t *keyfile, + const pj_str_t *password, + const pj_str_t *ca_list_file, + const pj_sockaddr_in *local, + const pjsip_host_port *a_name, + unsigned async_cnt, + pjsip_tpfactory **p_factory); + + + +PJ_END_DECL + +/** + * @} + */ + +#endif /* __PJSIP_TRANSPORT_TLS_H__ */ diff --git a/pjsip/include/pjsua-lib/pjsua.h b/pjsip/include/pjsua-lib/pjsua.h index 1352aa9f..a964c49f 100644 --- a/pjsip/include/pjsua-lib/pjsua.h +++ b/pjsip/include/pjsua-lib/pjsua.h @@ -840,6 +840,21 @@ typedef struct pjsua_transport_config */ pjsua_stun_config stun_config; + /** + * TLS root CA file path (only used for TLS transport). + */ + pj_str_t tls_ca_file; + + /** + * TLS client key path (only used for TLS transport). + */ + pj_str_t tls_key_file; + + /** + * TLS password (only used for TLS transport). + */ + pj_str_t tls_password; + } pjsua_transport_config; |