/mls

Primary LanguageGoApache License 2.0Apache-2.0

mls

An implementation of MLS (Messaging Layer Security) https://tools.ietf.org/html/draft-barnes-mls-protocol-00

This implementation uses BFTKV (https://github.com/yahoo/bftkv) as the Authentication Service defined in the architecture document (https://datatracker.ietf.org/doc/draft-omara-mls-architecture). See documents in https://github.com/yahoo/bftkv/docs for details.

Setup

  1. Install BFTKV
    1. go get -u github.com/yahoo/bftkv
    2. Install GnuPG 2.x
    3. Run setup.sh in bftkv/scripts
    4. Run a BFTKV cluster cd bftkv/scripts/run; ../run.sh
    5. Build a command line tool cd bftkv/cmd/bftrw; go get .
  2. Run Delivery Service (mlsds)
    1. Build the server cd mls/cmd; go build mlsds.go
    2. mlsds
  3. Setup a key pair
    1. cd bftkv/scripts; gen.sh -uid foo@bar.com key
    2. mv key mls/cmd
    3. bftrw -path $GOPATH/src/github.com/yahoo/bftrw/scripts/run/keys -key key register
  4. Run a MLS client
    1. Build mlsclient cd mls/cmd; go build mlsclient.go
    2. mlsclient -key key join mygroup

You can run as many clients as you want by repeating the step 3 and 4. Use the unique uid (e.g., "foo[123...]@bar.com") and the key directory (e.g., "key[123...]").

License

Copyright 2018, Oath Inc

Licensed under the terms of the Apache license. See LICENSE file in https://github.com/r2ishiguro/mls for terms.