Skip to content
Implementation of Messaging Layer Security
C++ CMake Makefile
Branch: master
Clone or download
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
cmd Typo Aug 2, 2019
include More linter errors Aug 2, 2019
src More linter errors Aug 2, 2019
test More linter errors Aug 2, 2019
.gitignore Check in code from R Barnes Feb 16, 2018
.travis.yml Clean up and enable linters Aug 1, 2019
CMakeLists.txt Merge branch 'master' into new-api-ish Aug 1, 2019
LICENSE Initial commit Feb 16, 2018
Makefile Clean up lint Aug 2, 2019
README.md Check in code from R Barnes Feb 16, 2018
TODO.md Check in code from R Barnes Feb 16, 2018

README.md

MLS++

Draft implementation of the proposed Messaging Layer Security protocol in C++. Depends on C++14 STL for data structures and OpenSSL for crypto.

Quickstart

Using the convenient Makefile that wraps CMake:

> git submodule update --init
> make
> make test

Conventions

  • 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> as mls::optional<T>
    • std::vector<uint8_t> as bytes
  • 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
  • For cryptographic keys in particular:
    • X_key is the public key of an asymmetric key pair
    • X_priv is the private key of an asymmetric key pair
    • X_secret is a symmetric secret
You can’t perform that action at this time.