README.md 2.61 KB
Newer Older
Erwan Croze's avatar
Erwan Croze committed
1 2
[![pipeline status](https://gitlab.linphone.org/BC/public/bzrtp/badges/master/pipeline.svg)](https://gitlab.linphone.org/BC/public/bzrtp/commits/master)

François Grisez's avatar
François Grisez committed
3 4
BZRTP
=====
johan's avatar
johan committed
5

François Grisez's avatar
François Grisez committed
6 7
What's BZRTP
------------
johan's avatar
johan committed
8

François Grisez's avatar
François Grisez committed
9 10
BZRTP is an opensource implementation of ZRTP keys exchange protocol. 
The library written in C 89 is fully portable and can be executed  on many platforms including both ARM  processor and x86. 
Simon Morlat's avatar
Simon Morlat committed
11

François Grisez's avatar
François Grisez committed
12
Licensing: The source code is licensed under GPLv2.
johan's avatar
johan committed
13

14 15 16

Compatibility with RFC6189 - ZRTP: Media Path Key Agreement for Unicast Secure RTP
----------------------------------------------------------------------------------
François Grisez's avatar
François Grisez committed
17 18 19 20 21 22 23 24 25 26 27

### Mandatory but NOT implemented

* Sas Relay mechanism (section 7.3)
* Error message generation, emission or reception(which doesn't imply any security problem, they are mostly for debug purpose)


### Optional and implementd

* multistream mode
* cacheless implementation
johan's avatar
johan committed
28
* zrtp-hash attribute in SDP
François Grisez's avatar
François Grisez committed
29 30 31 32 33 34 35 36


### Optional and NOT implemented

* Go Clear/Clear ACK messages
* SAS signing


johan's avatar
johan committed
37 38
### Supported Algorithms

johan's avatar
johan committed
39
* Hash : SHA-256, SHA-384
johan's avatar
johan committed
40 41 42
* Cipher : AES-128, AES-256
* SAS rendering: B32, B256(PGP word list)
* Auth Tag : HS32, HS80
johan's avatar
johan committed
43
* Key Agreement : DH-2048, DH-3072, X25519, X448
johan's avatar
johan committed
44

johan's avatar
johan committed
45
*Note*: X25519 and X448 Key agreements(RFC7748) are not part of RFC6189 and supported only when *bctoolbox[1]* is linking *libdecaf[2]*
johan's avatar
johan committed
46

François Grisez's avatar
François Grisez committed
47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79
Dependencies
------------

- *bctoolbox[1]*: portability layer and crypto function abstraction


Build BZRTP
-----------

	cmake . -DCMAKE_INSTALL_PREFIX=<prefix> -DCMAKE_PREFIX_PATH=<search_paths>
	
	make
	make install


Build options
-------------

* `CMAKE_INSTALL_PREFIX=<string>` : install prefix
* `CMAKE_PREFIX_PATH=<string>`    : column-separated list of prefixes where to search for dependencies
* `ENABLE_SHARED=NO`              : do not build the shared library
* `ENABLE_STATIC=NO`              : do not build the static library
* `ENABLE_STRICT=NO`              : build without the strict compilation flags
* `ENABLE_TESTS=YES`              : build non-regression tests


Notes for packagers
-------------------

Our CMake scripts may automatically add some paths into research paths of generated binaries.
To ensure that the installed binaries are striped of any rpath, use `-DCMAKE_SKIP_INSTALL_RPATH=ON`
while you invoke cmake.

jehan's avatar
jehan committed
80 81 82 83 84 85 86 87 88
Rpm packaging
bzrtp can be generated with cmake3 using the following command:
mkdir WORK
cd WORK
cmake3 ../
make package_source
rpmbuild -ta --clean --rmsource --rmspec bzrtp-<version>-<release>.tar.gz


François Grisez's avatar
François Grisez committed
89 90 91 92 93

----------------------------------


* [1] git://git.linphone.org/bctoolbox.git or <http://www.linphone.org/releases/sources/bctoolbox>
johan's avatar
johan committed
94
* [2] <https://sourceforge.net/projects/ed448goldilocks/>