ChangeLog 25 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556
  1. * libZRTP SDK library, implements the ZRTP secure VoIP protocol.
  2. * Copyright (c) 2006-2009 Philip R. Zimmermann. All rights reserved.
  3. * Contact: http://philzimmermann.com
  4. * For licensing and other legal details, see the file zrtp_legal.c.
  5. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  6. SINCE LIBZRTP v0.80 CHANGELOG IS A PART OF HTML DOCUMENTATION.
  7. Check generated html or doc/manuals/changelog.dox doxygen sources
  8. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  9. libzrtp 0.7.1 18.11.2008
  10. --------------------------------------------------------------------------------
  11. 1. Fixed bug with hardcoded AES128 cipher for generating SRTP keys. In this
  12. version is selected according to ZRTP discovery.
  13. 2. Added initialization/deinitalization functions to zrtp helper functions.
  14. libzrtp 0.7.0 04.11.2008
  15. --------------------------------------------------------------------------------
  16. 1. Changes in libzrtp sources tree.
  17. 2. Improvements in libzrtp initialization routine:
  18. - all global zrtp options were combined in zrtp_config_t structure;
  19. - zrtp_init() allocates memory for zrtp global context;
  20. - zrtp_config_defaults()
  21. 3. Improvements for Passive/Active mode support.
  22. a) A passive endpoint never sends a commit message, period. Also, it
  23. declares itself as a passive endpoint by setting the P flag it its own
  24. Hello message;
  25. b) A active endpoint does not send a commit to a passive endpoint, which it
  26. recognizes by detecting the P flag;
  27. c) A passive phone, if acting as a SIP initiator (meaning it initiated the
  28. call), rejects all commit packets from everyone;
  29. d) A passive phone rejects all commit messages from a PBX, which is easily
  30. recognized by the M flag.
  31. Passive mode support is built into the library logic and will be used
  32. automatically if the developer specifies signaling role by setting
  33. is_initiator flag in zrtp_init_session_ctx().
  34. 4. Improvements in ZRTP feedback interface and system-dependent functions.
  35. There are two types of interface functions in libzrtp: system dependent API
  36. and realization of helper functions and events. System dependent API in
  37. defined in zrtp_iface_system.h as set of extern functions. System
  38. functions are already implemented for several basic platforms in
  39. zrtp_iface.sys.c libzrtp feedback and helper functions were re-factored
  40. and implemented as set of callbacks. If the developer doesn't want to
  41. handle one or another event it may just leave necessary pointer empty.
  42. See zrtp_init() and zrtp_callback_t, zrtp_iface.h for more details.
  43. 5. ZRTP configuration approach was improved: zrtp_config_xxx.h contains
  44. adjustments for necessary target platform. libzrtp contains default
  45. configs for Linux, OS X, Windows, Window CE and Symbian platforms.
  46. All ZRTP protocol and behavior related adjustments are collected in
  47. zrtp_config_user.h. Edit this file to configure libzrtp for your
  48. needs.
  49. 6. Implemented new functions in protocol according to the Internet Draft v 10.
  50. 7. Improved realization of built-in libzrtp scheduler. Fixed bug with crashing
  51. on performing delay call when zrtp session have been already deleted.
  52. 8. Logging function was improved. Use ZRTP_LOG macro to print log messages. See
  53. zrtp_log.h for more information.
  54. libzrtp 0.6.8 03.09.2008
  55. --------------------------------------------------------------------------------
  56. ZRTP
  57. 1. Fixed bug with incorrect maximum value for T1 retry interval timer which
  58. increased delay between LOOKING_FOR_ZRTP and NO_ZRTP_SUPPORT states.
  59. Internal fix, no API changes required;
  60. 2. Implemented version negotiation according to the latest specification.
  61. libzrtp v 0.6.8 supports ZRTP v0.90 only. No changes required in
  62. applications that use the SDK.
  63. 3. Compilation flag WITH_ZFONE was removed. The developer, who wants to use
  64. built-in ZRTP cache, has to set name of the ZRTP cache explicitly,
  65. implementing zrtp_get_cache_path() function.
  66. 4. New libzrtp licensing scheme was implemented. It allows the licensing policy
  67. to be changed at run time. See zrtp_license_mode_t doc. for more details.
  68. Affected API - zrtp_init().
  69. 5. ZRTP Protocol version was changed to 0.90 according to ZRTP Internet Draft.
  70. 6. Some changes in Linux config files: surplus configuration flags were removed
  71. from ./cfg.XXX templates.
  72. 7. Added experimental ZRTP messages retries scheduler for slow channels. As
  73. ex ample for GSM CSD channel with average bandwidth 6Kb/s. To use this
  74. option build library with BUILD_FOR_CSD flag.
  75. libzrtp 0.6.6 27.06.2008
  76. --------------------------------------------------------------------------------
  77. ZRTP
  78. 1. Small bug was fixed in S0 calculation: when RS1 is corrupted the library uses
  79. RS2 instead;
  80. 2. Some changes in Makefile and building process: unused header were eliminated
  81. from the installation process.
  82. 3. -DBUILD_WITH_ZRTP_MUTEXES was replaced with --enable_mutexes option passed to
  83. ./configure script. This change allows not to specify any libzrtp compilation
  84. flags during user application compilation. --enable-mutexes adds
  85. BUILD_ZRTP_MUTEXES definition to the ./config/zrtp_unix_config.h so if you
  86. build libzrtp on other platforms - define this flag manually (windows
  87. configuration file already includes this option).
  88. 4. Clean-up in .h and .c comments was made.
  89. libzrtp 0.6.5 04.06.2008
  90. --------------------------------------------------------------------------------
  91. ZRTP
  92. 1. New names for: other_secret - pbxs; srtps - auxs. In bits and secrets storages;
  93. 2. RS2 secret was eliminated form DH s0 calculation;
  94. 3. Protocol version number was increased to 0.85
  95. libzrtp 0.6.4 19.05.2008
  96. --------------------------------------------------------------------------------
  97. ZRTP
  98. 1. According to the new version of the Internet Draft Signaling shared secret was
  99. removed from the protocol and from the sources. It was not used by interface
  100. functions and developers may change nothing in libzrtp based applications.
  101. 2. DH4K Key echange was eleminated from the specification and from the sources.
  102. Now ECDH is used for all larger AES key sizes.
  103. libzrtp 0.6.2 04.02.2008
  104. --------------------------------------------------------------------------------
  105. ZRTP
  106. 1. New behaviour for Secure --> Clear --> Secure scenario was implemnted. According
  107. to ZRTP ID 06 section 5.7.2.1 new value of ZRTPSess computed as hash(ZRTPSess).
  108. DOC:
  109. Libzrtp documentation was updated up to version 0.6.2.
  110. libzrtp 0.6.1 03.14.2008
  111. --------------------------------------------------------------------------------
  112. ZRTP
  113. 1. Multistream mode was implemented according to ZRTP Internet Draft 05.n:
  114. - new stream mode zrtp_stream_mode_t:: ZRTP_STREAM_MODE_MULT;
  115. - Multistream key exchange component was added with ID zrtp_pktype_id_t::
  116. ZRTP_PKTYPE_MULT and symbolic name ZRTP_MULT. To allow libzrtp use Multistream
  117. mode - ZRTP_PKTYPE_MULT have to be added to the stream profile in the first
  118. position;
  119. - According to the new draft SAS and ZRTPSess key are Session option and
  120. were moved to the zrtp_conn_ctx_t structure. New specification defines
  121. single SAS values for all streams within the session;
  122. - ZRTP state-machine was changed to handle Multistream mode. In .Fast. mode
  123. DH exchange is omitted and stream skips ZRTP_STATE_WAIT_CONFIRM1 and
  124. ZRTP_STATE_PENDINGSECURE for the Initiator and Responder state-machines,
  125. respectively;
  126. 2. Hash preimages were added to prevent DOS attacks. See ZRTP ID sec 9.0 for detail
  127. information. This option is available using zrtp_set_signaling_hash() and
  128. zrtp_get_signaling_hash() functions.
  129. 3. Hmac values were added to every packet to allow eliminate SAS validation
  130. if SIP is protected;
  131. 4. Autosave. of the default realization of the ZRTP cache to the hard drive was
  132. implemented;
  133. 5. Lot of other internal changes and improvements according to the latest ZRTP
  134. specification v06.
  135. libzrtp 0.4.5-6
  136. --------------------------------------------------------------------------------
  137. 1. Full PBX support. Tested on GS-Labs Asterisk
  138. API:
  139. DOC:
  140. 2. Resolved problem with BG ciphers compilation: initialization of AES hash tables.
  141. 3. Fixed bug in SRTP replay protection. (Undeleted nodes for mulsy-stream encryption)
  142. (May resulted in a error zrtp_protocol_error_t::zrtp_status_rp_fail)
  143. 4. Vrification is a session option. Input parameter of zrtp_set_verified() was
  144. changed from stream to ZRTP session structure.
  145. 5. Fixed bug with malformed ZRTP Hello packet.
  146. 5. fast video
  147. libzrtp 0.4.4 31.07.2007
  148. --------------------------------------------------------------------------------
  149. 1. New extra error code for replay protection was added.
  150. See zrtp_status_t::zrtp_status_rp_fail.
  151. 2. Fixed bug which may resulted in a dammage with decrypt failed 7 error. It
  152. was happen when libzrtp passed RTP alerts packet to the replay protection
  153. engine and ROC was broken.
  154. 3. Fixed RTCP encryption/decryption.
  155. 4. Fixed bug with RS1 and RS2 swapping when one of the sides lost RS1.
  156. (May resulted in a error zrtp_protocol_error_t::zrtp_error_auth_decrypt )
  157. libzrtp 0.4.3 06.07.2007
  158. --------------------------------------------------------------------------------
  159. 1. Beta version of API for PBX support according to the latest ZRTP draft.
  160. Not tested. For internal development only. Follow // PBX comments;
  161. - secret's cache format was changed.
  162. 2. S0 calculation according to NIST recommendations; Internal change
  163. - ZRTP protocol version was increased to 0.07.
  164. 3. All libzrtp sources was audited with coverity code analyzer. http://coverity.com/
  165. libzrtp (0.3.9 - 0.4.2) 27.06.2008
  166. --------------------------------------------------------------------------------
  167. 1. Changes according to new draft 04a. All changes are internal.
  168. a) new DH packets: pvi/pvr, nonce field is at the end of the DH packet.
  169. In "Preshared" mode both DH packets contain nonce value instead of pvi/r;
  170. b) new hvi value the same for all modes (DH and Preshared)
  171. hvi = hash(initiator's DHPart2 message | responder's Hello message);
  172. c) new algorithm of SAS computing: sasvalue = HMAC(hmackeyi,"SAS");
  173. 2. New GUI based test-unite forSymbian platform
  174. 3. Default implementation of the packet retries unite for Symbian was added
  175. to the libzrtp package. Except besides scheduler, libzrtp includes
  176. realization of some synchronization and threading routines. These
  177. components written in C++ and can't be linked with the library. One should
  178. add them to own Symbian project project.
  179. 4. Compilation of default realization of ZRTP mutexes was separated from
  180. the other system interfaces. To build library with default mutexes
  181. BUILD_ZRTP_MUTEXES flag should be used;
  182. 5. New clearing logic. Goals:
  183. API:
  184. - state-machine states were changed
  185. - goclear reason was eliminated. Now we can switch to CLEAR just on
  186. user action.
  187. - ZRTP_EVENT_IS_INITIATINGCLEAR was removed as a uperfluous event. As a
  188. result all event codes were changed.
  189. - new clear_hmac = HMAC(hmakkeyi/r, "Clear Hmac")
  190. 6. New Errors handling logic. See updated state-macine diagram and "developers
  191. guide".
  192. API:
  193. - ZRTP_STATE_ERROR was added to handle error requests. Libzrtp switches
  194. to this state after the Error exchange. From ZRTP_STATE_ERROR stream
  195. cxan be started again or destroyed, depending on application strategy.
  196. - ZRTP_ERRORACK and ZRTP_ERROR packets were added
  197. - new event ZRTP_ENEVT_NO_ZRTP inform's user that other side doesn't
  198. support ZRTP encryption.
  199. 7. -D WITH_STACK_MINIM compilation flag allows to minimize coasts for the
  200. system stack. In the most critical places dynamic allocation will be used
  201. instead of static variables. This option can be useful on mobile platforms
  202. in kernel mode, etc.
  203. 8. Several bug fixes in scheduler. Improved built-in realization of Symbian
  204. platform. If you use our default realization on Symbian - please update.
  205. 9. David A. McGrew's srtp was replaced with our own. We did it to get control
  206. over all crypto functions, generalize interface of crypto component. It
  207. allows us to port libsrtp to any platforms more smoothly. We have one
  208. configuration file, all platform-dependent function and definitions are
  209. concentrated at one place. We eliminated superfluous functionality from
  210. libsrtp, made it crossplatform and thread-safe. In SRTP engine we use our
  211. own crypto-components based on by Dr. Brian Gladman's sources. Each component
  212. has strong self-test function allows it to be tested on any platform and
  213. in any environment.
  214. - project structure was changed;
  215. - bgaes folder includes AES and SHA routines by Dr. Brian Gladman. For details
  216. see dgaes/howto and bg2zrtp.h files;
  217. - libzrtp supports external realizations of SRTP (Use zrtp_srtp.h API and flag
  218. -D WITHOUT_BUILTIN_SRTP );
  219. 10. Header files were refactored: one can add just single zrtp.h include to use
  220. any libzrtp function or data type;
  221. 11. Solved problem with deadlock during Video conferences. (One side starts
  222. negotioation with Video and another one with Audio stream)
  223. 12. Some changes in test-unite:
  224. - test vectores and test-cases for all cryptio components are available;
  225. - zrtp_system_test.h checks environment and compilation flags
  226. - use ZRTP_ENABLE_TEST flag to build library with all tests
  227. 13. Full documentation review and updating.
  228. 14. Sources clean up and some refactoring;
  229. 15. Fixing in "break the tie" logic. See diagrams and zrtp_preparse_commit(),
  230. zrtp_preparse_init_commit();
  231. 16. Some changes according to the lates ZRTP specification:
  232. - sasvalue was trancated to 32 bits and used mostleft parts of the hashvalue.
  233. 17. Small bug fixes (zrtp_can_start_dh and zrtp_can_start_preshared() mixed into
  234. zrtp_can_start_stream);
  235. 18. New key derivation mechanism according to NIST standarts. See ZRTP Draft
  236. 5.4.4 and 5.5.4.
  237. libzrtp (0.3.7)
  238. --------------------------------------------------------------------------------
  239. 1. New, more clear and useful test-unite
  240. 2. Eliminated zrtp_stop_protocol(). Now zrtp_done_session_ctx() includes
  241. protocol stopping.
  242. 3. Some simplifications in project structure: removed zrtp_inet.h and bnase32.h,
  243. zrtp_iface.c was removed to src\iface folder;
  244. 4. ZSTR_GET_VALUE should be used to convert zrtp_stringxx_t to zrtp_stringn_t;
  245. 5. Some changes for windows CE;
  246. 6. Changed default options: SAS base256 enabled by defauld and "staysecure" is on.
  247. libzrtp (0.3.6)
  248. --------------------------------------------------------------------------------
  249. FIXES:
  250. a) CRC now covers the whole ZRTP packet, not just a body
  251. b) improved names of some crypto-components in HELLO/COMMIT packets
  252. c) improved messages hash: hash function covers all ZRTP message with
  253. magic number and length fields;
  254. d) fixed DHPart1 and DHPart2 packets format according to last version
  255. of ZRTP Internet draft.
  256. e) fixed retain secrets sorting algorithm according to the last version
  257. of the internet draft.
  258. 1. Windows CE support. Now library is fully compatible with Windows CE.
  259. - .\libzrtp\projects\libzrtp_wince_vc8.sln project file for MS VS 2005
  260. - .\libzrtp\test\WinCE contains sources of simple test-unite ( We have
  261. just started working in this direction and more intelligent test unite
  262. will be available soon. Tested on HTC S620 with Windows CE 2005 )
  263. 2. Added previous state field to ZRTP stream structure. It can be used to
  264. analyze conditions of switching from one state to another. (For libzrtp
  265. developers only)
  266. API:
  267. - zrtp_stream_ctx_t#_prev_state was added
  268. - _zrtp_change_state() MUST be used to switch from one state to another
  269. 3. Some changes in PENDING_CLEAR state handler. In case of error during
  270. transition from CLEAR to SECURE state-machine will switch back to CLEAR
  271. without the confirmation by user.
  272. libzrtp (0.3.5)
  273. --------------------------------------------------------------------------------
  274. Full description is in progress
  275. 1. Support of all crypto futures according to the new ZRTP draft v 0.3. Lots
  276. of internal changes were provided in ZRTP kernel.
  277. 2. Symbian support. Now you can build libzrtp and test unites on Symbian
  278. platforms. There are .inf and .mmp files in corresponded directories.
  279. (Symbian project files are a little bit row and we will appreciate any
  280. suggestions and advices.)
  281. 3. ZRTP stream became more independent. You can use different configurations
  282. for different streams. So
  283. ZRTP profile: profile;
  284. "staysecure" flag: staysecure;
  285. SAS values: sas_values;
  286. cache TTL: cache_ttl;
  287. and all used crypto components were removed from session context
  288. (zrtp_conn_ctx_t) to stream context (zrtp_stream_ctx_t).
  289. API:
  290. - you should configure every stream in the same way as the whole session in
  291. previous version has been done. See zrtp_init_session_ctx()
  292. and zrtp_attach_stream()
  293. 4. "Multistream" mode was replaced by "Preshared" (based on retain secrets
  294. from previous call. See http://zfoneproject.com/docs/ietf/draft-zimmermann-avt-zrtp-03.html#anchor19 .
  295. Preshared mode is available as a normal ZRTP crypto component e.g."DH3K"
  296. or "DH4K". If you enable Preshared mode in profile and libzrtp finds
  297. secrets in your cache - "Preshared" mode will be used for all next calls
  298. API:
  299. - the choice of stream mode was removed from zrtp_start_stream() and
  300. from zrtp_secure_stream().
  301. 5. Integer enumerations for all crypto components e.g. Hash type, cipher type
  302. etc. You should use these values instead of character values for optional
  303. profile configuration. (as an example for enabling "preshared" mode)
  304. API:
  305. - enumerations types zrtp_hash_id, zrtp_cipher_idzrtp_atl_id,
  306. zrtp_pktype_id, zrtp_sas_id in zrtp_crypto.h
  307. - all crypto components structures now have id field and libzrtp
  308. operates with this field to find, register or delete crypto
  309. components.
  310. - ZRTP profile: zrtp_profile_t uses this integer values too. (list of
  311. crypto-components is a zero terminated array of values of necessary
  312. type)
  313. - zrtp_find_in_profile() and zrtp_find_comp() operate with component
  314. integer identifiers
  315. - there are two special functions to convert component ID to ZRTP
  316. character name: zrtp_comp_id2type(), zrtp_comp_type2id.
  317. 6. Integer error codes were provided instead of 4-character values. One should
  318. use them to analyze zrtp_stream_ctx_t#last_error value in your ZRTP
  319. errors handlers.
  320. API:
  321. - zrtp_protocol_error_t was added to zrtp_error.h.
  322. - zrtp_stream_ctx_t#last_error now is an integer value from
  323. zrtp_protocol_error_t space.
  324. 7. Special function for verification of SAS value was added. One should use
  325. this function to set/unset SAS verification flag from his own
  326. application.
  327. API:
  328. - zrtp_set_verified() was added to zrtp.h
  329. 8. Some optimization of types was provided. Here are some possible changes which you
  330. need to make in your product:
  331. - libzrtp uses it own strings (zrtp_stringXX_t group) to operate with
  332. binary and character strings. In this version we made attempt to
  333. minimize memory coasts and replaced zrtp_string_t with zrtp_stringXX_t
  334. group, where XX - maximum length in bytes. zrtp_stringxx_t contains
  335. its length and as a result all functions for work with strings are
  336. type independent. So one should use one of these types to store binary
  337. strings and zrtp_stringn_t as a type of operand in all global functions.
  338. - all retain secrets holders and flags were removed to zrtp_secrets
  339. structure in zrtp_conn_ctx_t#secrets.
  340. - zrtp_packet_string4_t was replaced by zrtp_ucharXX_t group where XX -
  341. type length in bytes. These types are used in library for packets
  342. construction instead of char arrays.
  343. 9. Packets retries synchronization was added. zrtp_retry_task_t structure
  344. from zrtp_types_t is used for all operations with scheduler. One should
  345. use #callback and #timeout fields from this structure.
  346. API:
  347. - zrtp_send_packet_later(), zrtp_cancel_send_packet_later()
  348. libzrtp (0.3.4)
  349. --------------------------------------------------------------------------------
  350. 1. ZRTP state-macine was fully refactored. All transitions between states
  351. are absolutely identical to diagram attached to documentation.
  352. DOC:
  353. - See doc/img/png/state_mach_ext.png
  354. 2. ZRTP uses new packets format according to draft-zimmermann-avt-zrtp-03i
  355. 3. Improved some mistakes in libbn make-files for windows. Unused
  356. functions were omitted.
  357. 4. Provided types optimization to decrease RAM memory costs.
  358. 5. Packets retries were synchronized.
  359. 6. zrtp_voip_proto_t was removed from the library
  360. API:
  361. - if you need this enumeration see zfone_types.h in zfone project
  362. 7. "GoClear reasons" support
  363. 8. Some internal changes according to draft-zimmermann-avt-zrtp-03i
  364. a) Commit hash covers the whole Hello body
  365. b) GoClear hmac includes "Reason string"
  366. c) Confirm body encrypted by AES CDB cipher
  367. d) Confirm hmac covers whole encrypted part of the packet
  368. 9. Use BUILD_ZRTP_DEBUG_LOG flag instead of BUILD_DEBUG_LOG to build the
  369. library with debug logs.
  370. libzrtp (0.3.3) 21.02.2007
  371. --------------------------------------------------------------------------------
  372. 1. libzrtp test application refactored for better performance and usability.
  373. For addition information see test application README file and
  374. "libzrtp test suite" chapter in main documentation page.
  375. 2. Some changes in documentation for better English
  376. 3. Use microseconds in zrtp_time_t instead of milliseconds.
  377. API changes:
  378. - change zrtp_get_time() function realization if needed
  379. 4. Fixed several small mistakes
  380. libzrtp (0.3.2) 09.02.2007
  381. --------------------------------------------------------------------------------
  382. 1. Global context allocation removed to user space.
  383. This was made to able RNG using before library initialization.
  384. API changes:
  385. - zrtp_init(), zrtp_down()
  386. - zrtp_randstr(), zrtp_add_system_state()
  387. 2. Fixed bug in srtp SHA1 calculation for Windows.
  388. 3. Confirm and GoClear HMAC was truncated to 64 bits.
  389. 4. Calls stack minimized for library using in kernel mode
  390. 5. Default realization of secrets' cache is available. Cache was implemented
  391. as a simple binary file and can be built using -DBUILD_DEFAULT_CACHE file.
  392. API:
  393. - realization at src\iface\zrtp_cache.c
  394. DOC:
  395. - 1.4 libZRTP setup and building
  396. - 2.2 System-dependent functions
  397. 6. Default cross-platform realization of time-out sending unite is available.
  398. This unite is available for Linux, MacOS and Windows. It can be built using
  399. -DBUILD_DEFAULT_TIMER flag.
  400. API:
  401. - realization at src\iface\zrtp_scheduler.c
  402. DOC:
  403. - 1.4 libZRTP setup and building
  404. - 2.2 System-dependent functions
  405. 7. "HOWTO libzrtp" was added to the library documentation
  406. libzrtp (0.3.1) 06.12.2006
  407. --------------------------------------------------------------------------------
  408. 1. Global variables were removed from c-files. Added global context
  409. zrtp_global_ctx_t for necessary data storing. This was made to allow
  410. to build library in some special environment as Symbian OS ed2.
  411. DOC changes:
  412. - 2.1.2 data structure
  413. API changes:
  414. - zrtp_global_ctx_t added
  415. - zrtp_init(), zrtp_down(), zrtp_init_session(), zrtp_down_session()
  416. 2. Added multithreading support. Now libzrtp is thread-safe. About all
  417. conditions of usage in multithreading application and synchronization
  418. schemes see section "2.3.3 Multithreading and concurrent streams" in
  419. developers guide.
  420. DOC changes:
  421. - 2.2.3 Multithreading and concurrent streams
  422. API changes:
  423. - mutex were added to main data structures
  424. - mutex interface section at zrtp_iface.c, default realization at
  425. zrtp_iface.c
  426. 3. Session configuration routine was simplified. ZRTP profile is applied on
  427. session initialization. Some configuration functions were removed and
  428. changed.
  429. DOC changes:
  430. - 2.3.1 Setup, initialization and deinitialization
  431. API:
  432. - zrtp_profile_autoload() removed
  433. - zrtp_init_session(), zrtp_check_profile()
  434. 4. Default realizations of system interfaces was added (for Windows, Linux
  435. and MacOS).
  436. API:
  437. - zrtp_iface.c added
  438. 5. Test suit developed.
  439. Simple test-unite created. It runs several ZRTP sessions, enters SECURE
  440. mode, shows statistics and is closed. To build test-suite on Unix - use C
  441. flags -DBUILD_DEBUG_LOG -DBUILD_WITH_CFUNC -DBUILD_EMPTY_CACHE
  442. -DBUILD_EMPTY_TIMER and configure param. --enable-test. To run tests:
  443. make check. To build test-suite on Windows use necessary project files.
  444. DOC changes:
  445. - 1.4 libZRTP setup and building
  446. API:
  447. - Sources can be found at /test directory
  448. 6. Some changes in project structure, configuration and make files according
  449. to new functionality.
  450. DOC changes:
  451. - 1.4 libZRTP setup and building