freeswitch/include/zrtp_config_user.h
2012-03-31 18:51:46 +00:00

183 lines
5.8 KiB
C

/*
* libZRTP SDK library, implements the ZRTP secure VoIP protocol.
* Copyright (c) 2006-2009 Philip R. Zimmermann. All rights reserved.
* Contact: http://philzimmermann.com
* For licensing and other legal details, see the file zrtp_legal.c.
*
* Viktor Krykun <v.krikun at zfoneproject.com>
*/
/**
* @file zrtp_config_user.h
* @brief libzrtp user configuration routine
*/
#ifndef __ZRTP_CONFIG_USER_H__
#define __ZRTP_CONFIG_USER_H__
/**
* \defgroup zrtp_config Build Configuration
* \{
*
* As libzrtp based on few OS dependent components, target platform and byte-order must be defined
* on compilation level. libzrtp provides automatic platform and byte-order detection. Developer
* needs to define these parameters manually in very specific cases only.
*
* libzrtp originaly supports folowwing platforms:
* - 32/64-bit Windows platform;
* - Windows kernel mode;
* - Apple Mac OS X and iPhone;
* - Linux and *nix platforms;
* - Symbian OS.
*
* In order to specify platform manually, developer should define ZRTP_PLATFORM value. If
* ZRTP_PLATFORM is not defined - libzrtp will try to detect it automatically (see zrtp_config.h).
*
* In order to specify platform byte-order manually, developer should define ZRTP_BYTE_ORDER value.
* If ZRTP_BYTE_ORDER is not defined - libzrtp will try to detect it automatically.
*/
/** \brief Constant to define ZRTP Windows 32-bit platform */
#define ZP_WIN32 100
/** \brief Constant to define ZRTP Windows 64-bit platform */
#define ZP_WIN64 106
/** \brief Constant to define ZRTP Windows Kernel mode */
#define ZP_WIN32_KERNEL 101
/** \brief Constant to define ZRTP Windows CE platform */
#define ZP_WINCE 102
/** \brief Constant to define Linux and *nux platforms */
#define ZP_LINUX 103
/** \brief Constant to define Mac OS X Platform */
#define ZP_DARWIN 104
/** \brief Constant to define Symbian OS */
#define ZP_SYMBIAN 105
/** \brief Constant to define ZRTP BSD platform */
#define ZP_BSD 107
/** \brief Define Platform manually there */
//#undefine ZRTP_PLATFORM
/** \brief Constant to define Big Endian Platform */
#define ZBO_BIG_ENDIAN 0x4321
/** \brief Constant to define Little Endian Platform */
#define ZBO_LITTLE_ENDIAN 0x1234
/** \brief Define Platform Byte Order manually there */
//#define ZRTP_BYTE_ORDER
/** \brief Defines the max length in bytes of a binary SAS digest */
#ifndef ZRTP_SAS_DIGEST_LENGTH
#define ZRTP_SAS_DIGEST_LENGTH 32
#endif
/** \brief Defines maximum number of ZRTP streams within one session */
#ifndef ZRTP_MAX_STREAMS_PER_SESSION
#define ZRTP_MAX_STREAMS_PER_SESSION 2
#endif
/**
* \brief Allows to build libzrtp against external srtp encryption library
*
* The latest version of libzrtp, starting with 0.3.9, supplies a built-in mechanism for SRTP
* encryption. However, if for some reason during development it is neccesary to use an external
* library, this flag must be set.
*/
#ifndef ZRTP_USE_EXTERN_SRTP
#define ZRTP_USE_EXTERN_SRTP 0
#endif
/**
* \brief Build libzrtp with minimum stack usage
*
* Set to 1 you build libzrtp in environment with strong limitation of stack size (Mobile platforms
* or in kernel mode). When this flag is set, some static data allocation will be changed to
* dynamic. The size of these data doesn't matter in "regular" PC applications, but on mobile
* platforms and in kernel mode, where the stack size is critical, libzrtp must work with optimized
* data.
*/
#ifndef ZRTP_USE_STACK_MINIM
#define ZRTP_USE_STACK_MINIM 0
#endif
#ifndef ZRTP_USE_BUILTIN
#define ZRTP_USE_BUILTIN 1
#endif
#ifndef ZRTP_USE_BUILTIN_SCEHDULER
#define ZRTP_USE_BUILTIN_SCEHDULER 1
#endif
#ifndef ZRTP_USE_BUILTIN_CACHE
#define ZRTP_USE_BUILTIN_CACHE 1
#endif
#ifndef ZRTP_ENABLE_EC
#define ZRTP_ENABLE_EC 1
#endif
#ifndef ZRTP_DEBUG_WITH_PJSIP
#define ZRTP_DEBUG_WITH_PJSIP 0
#endif
/**
* \brief Set to 1 if you build libzrtp against libzrtp-s.
*
* CSD-mode was implemented to support new ZRTP/S protocol designed by KHAMSA SA, Via Giacometti 1,
* CH-6900, Lugano - info@khamsa.ch. and Phil Zimmermann. ZRTP/S allows to make secure ZRTP calls
* over CSD channels. This option affect enterprise version of the library only.
*/
#ifndef ZRTP_BUILD_FOR_CSD
#define ZRTP_BUILD_FOR_CSD 0
#endif
/**
* \brief Maximum number of Preshared exchanges allowed since last retain secret update
*
* Preshared key exchange mode has lot of weaknesses comparing to DH. And one of them - lack of key
* continuity. Preshared mode is not recommended unless there is a strong necessity in using it
* (slow CPU device, low-latency channel).
*
* To minimize risk of using Preshared exchanges, libzrtp automatically limits number for preshared
* connection available for the same instance of RS value. In other words, libzrtp forces DH exchange
* every \c ZRTP_PRESHARED_MAX_ALLOWED calls.
*/
#define ZRTP_PRESHARED_MAX_ALLOWED 20
/**
* \brief Defines libzrtp log-level
*
* Defines maximum log level for libzrtp: log-level 3 contains debug messages, 2 - warnings and
* software errors, 1 - security issues. If you set this option to 0 - libzrtp will not debug
* output and will not even make a log function calls.
*/
#ifndef ZRTP_LOG_MAX_LEVEL
#define ZRTP_LOG_MAX_LEVEL 3
#endif
/**
* \brief Enables SRTP debug output
*
* \warning! ZRTP crypto debug logs may include security sensitive information and cause security
* weakness in the system. Enable SRTP debug logging only when it necessary.
*/
#ifndef ZRTP_DEBUG_SRTP_KEYS
#define ZRTP_DEBUG_SRTP_KEYS 0
#endif
/**
* \brief Enables ZRTP Crypto debug logging.
*
* \warning! ZRTP crypto debug logs may include security sensitive information and cause security
* weakness in the system. Enable ZRTP Protocol debug logging only when it necessary.
*/
#ifndef ZRTP_DEBUG_ZRTP_KEYS
#define ZRTP_DEBUG_ZRTP_KEYS 0
#endif
/* \} */
#endif /*__ZRTP_CONFIG_USER_H__*/