README.md 2.38 KB
Newer Older
johan's avatar
johan committed
1 2 3 4
Lime
=======

Lime is a C++ library implementing Open Whisper System Signal protocol :
5 6 7 8 9
Sesame, double ratchet and X3DH. https://signal.org/docs/

Lime can run the Signal Protocol using elliptic curve 25519 or curve 448-goldilocks.

It is designed to work jointly with *Linphone*[1]
johan's avatar
johan committed
10 11 12

Dependencies
------------
13
- *bctoolbox[2]* : portability layer, built with Elliptic Curve Cryptography
johan's avatar
johan committed
14 15 16 17 18
- *soci-sqlite3* : Db access


Build instrucitons
------------------
19 20
```
 cmake -DCMAKE_INSTALL_PREFIX=<install_prefix> -DCMAKE_PREFIX_PATH=<search_prefix> <path_to_source>
johan's avatar
johan committed
21 22 23

 make
 make install
24 25 26 27 28 29 30 31 32 33 34 35 36
```


Documentation
-------------

To generate the Doxygen documentation files(having ran the cmake command):

```
 make doc
```

Comprehensive documentation on implementation choices and built-in protocols in *lime.pdf*
johan's avatar
johan committed
37

johan's avatar
johan committed
38

johan's avatar
johan committed
39 40 41
Testing
-------
 To test on local machine, you must run a local X3DH server.
42 43 44 45
 - A nodejs/sqlite version of UNSECURE X3DH server is provided in *tester/server/nodejs*
 See README from this directory for instructions.

 - A php/mysql (on docker) version of UNSECURE X3DH server is provided in *tester/server/php*
johan's avatar
johan committed
46 47
 See README from this directory for instructions.

48
A test instance of the nodejs X3DH server shall be running on sip5.linphone.org.
49

50 51 52
The main difference between the two versions of test server is that nodejs will
request user authentification (accepting any command with some test credentials)
while the PHP version is not performing any sort of user authentication.
johan's avatar
johan committed
53

johan's avatar
johan committed
54 55 56 57 58
Library settings
----------------
Some mostly harmless settings are available in src/lime_settings.hpp


johan's avatar
johan committed
59 60 61 62 63 64 65 66 67 68 69
Options
-------

- `CMAKE_INSTALL_PREFIX=<string>` : installation prefix
- `CMAKE_PREFIX_PATH=<string>`    : prefix where depedencies are installed
- `ENABLE_UNIT_TESTS=NO`          : do not compile non-regression tests
- `ENABLE_SHARED=NO`              : do not build the shared library.
- `ENABLE_STATIC=NO`              : do not build the static library.
- `ENABLE_STRICT=NO`              : do not build with strict complier flags e.g. `-Wall -Werror`
- `ENABLE_Curve25519`             : Enable support of Curve 25519.
- `ENABLE_Curve448`               : Enable support of Curve 448.
Johan Pascal's avatar
Johan Pascal committed
70 71
- `ENABLE_PROFILING`              : Enable code profiling for GCC

johan's avatar
johan committed
72 73
------------------

74 75
- [1] linphone-desktop: git://git.linphone.org/linphone-desktop.git
- [2] bctoolbox: git://git.linphone.org/bctoolbox.git or <http://www.linphone.org/releases/sources/bctoolbox>