forked from Mirrors/freeswitch
d2edcad66e
Thanks to Phil Zimmermann for the code and for the license exception we needed to include it. There remains some build system integration work to be done before this code will build properly in the FreeSWITCH tree.
192 lines
6.2 KiB
C
192 lines
6.2 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 Constant to define ZRTP Android platform */
|
|
#define ZP_ANDROID 108
|
|
|
|
/** \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
|
|
# if defined(_WIN32) || defined(__WIN32__) || defined(_WIN64) || defined(WIN32) || defined(__TOS_WIN__)
|
|
# if defined(__BUILDMACHINE__) && (__BUILDMACHINE__ == WinDDK)
|
|
# define ZRTP_USE_BUILTIN_CACHE 1
|
|
# else
|
|
# define ZRTP_USE_BUILTIN_CACHE 0
|
|
# endif
|
|
# else
|
|
# define ZRTP_USE_BUILTIN_CACHE 1
|
|
# endif
|
|
#endif
|
|
|
|
#ifndef ZRTP_ENABLE_EC
|
|
#define ZRTP_ENABLE_EC 0
|
|
#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__*/
|