Draft implementation of the proposed Messaging Layer Security protocol in C++. Depends on C++14 STL for data structures and OpenSSL for crypto.
Using the convenient Makefile that wraps CMake:
> git submodule update --init
> make
> make test
- Following Mozilla
clang-format
style. If you use the top-level Makefile (as suggested above), it will auto-format for you. - For convenience, the following shortcuts are available:
std::experimental::optional<T>
asmls::optional<T>
std::vector<uint8_t>
asbytes
- General naming conventions:
- Camel case for classes (
RatchetNode
) - Snake case for variables, functions, members (
derive_epoch_keys
) - Private member variables start with underscore (
_
) - In general, prefer descriptive names
- Camel case for classes (
- For cryptographic keys in particular:
X_key
is the public key of an asymmetric key pairX_priv
is the private key of an asymmetric key pairX_secret
is a symmetric secret