All Projects → 1984not-GmbH → molch

1984not-GmbH / molch

Licence: other
An implementation of the axolotl ratchet based on libsodium.

Programming Languages

C++
36643 projects - #6 most used programming language
HTML
75241 projects
java
68154 projects - #9 most used programming language
objective c
16641 projects - #2 most used programming language
c
50402 projects - #5 most used programming language
C#
18002 projects

Projects that are alternatives of or similar to molch

Streamcryptor
Stream encryption & decryption with libsodium and protobuf
Stars: ✭ 112 (+366.67%)
Mutual labels:  protobuf, libsodium
Wire Webapp
👽 Wire for web
Stars: ✭ 982 (+3991.67%)
Mutual labels:  messenger, libsodium
Clay
Proto-first minimal server platform for gRPС+REST+Swagger APIs
Stars: ✭ 212 (+783.33%)
Mutual labels:  protobuf
sodalite
tweetnacl in rust
Stars: ✭ 26 (+8.33%)
Mutual labels:  libsodium
Quick Protobuf
A rust implementation of protobuf parser
Stars: ✭ 244 (+916.67%)
Mutual labels:  protobuf
Jackson Dataformats Binary
Uber-project for standard Jackson binary format backends: avro, cbor, ion, protobuf, smile
Stars: ✭ 221 (+820.83%)
Mutual labels:  protobuf
JavaSteam
Java library that provides an interface to directly interact with Valve's Steam servers.
Stars: ✭ 70 (+191.67%)
Mutual labels:  protobuf
Gametracking
🛢 Dumping things, so you don't have to
Stars: ✭ 204 (+750%)
Mutual labels:  protobuf
GameTracking-HalfLifeAlyx
📥 Game Tracker: Half-Life: Alyx
Stars: ✭ 24 (+0%)
Mutual labels:  protobuf
Unitysocketprotobuf3demo
主要实现了用Unity对接了Leaf服务器。其次带了些小工具。
Stars: ✭ 244 (+916.67%)
Mutual labels:  protobuf
raster
A micro server framework, support coroutine, and parallel-computing, used for building flatbuffers/thrift/protobuf/http protocol service.
Stars: ✭ 19 (-20.83%)
Mutual labels:  protobuf
Protoman
Postman for protobuf APIs
Stars: ✭ 241 (+904.17%)
Mutual labels:  protobuf
Protobuf Jetbrains Plugin
Protobuf Support for JetBrains IDEs
Stars: ✭ 226 (+841.67%)
Mutual labels:  protobuf
flyteidl
Specification of the IR for Flyte workflows and tasks. Also Interfaces for all backend services. https://docs.flyte.org/projects/flyteidl/en/stable/
Stars: ✭ 27 (+12.5%)
Mutual labels:  protobuf
Protoc Gen Lint
A plug-in for Google's Protocol Buffers (protobufs) compiler to lint .proto files for style violations.
Stars: ✭ 221 (+820.83%)
Mutual labels:  protobuf
go-chat
go-chat.使用Go基于WebSocket开发的web聊天应用。单聊,群聊。文字,图片,语音,视频消息,屏幕共享,剪切板图片,基于WebRTC的P2P语音通话,视频聊天。
Stars: ✭ 516 (+2050%)
Mutual labels:  protobuf
Rules protobuf
Bazel rules for building protocol buffers and gRPC services (java, c++, go, ...)
Stars: ✭ 206 (+758.33%)
Mutual labels:  protobuf
Gordon cnn
A small convolution neural network deep learning framework implemented in c++.
Stars: ✭ 241 (+904.17%)
Mutual labels:  protobuf
Play Store Api
Google Play Store protobuf API wrapper in java
Stars: ✭ 249 (+937.5%)
Mutual labels:  protobuf
sisyphus-js
Sisyphus customized protobuf and gRPC runtime and code generator for JavaScript/TypeScript
Stars: ✭ 19 (-20.83%)
Mutual labels:  protobuf

molch

Travis Build Status Coverity Scan Build Join the chat at https://gitter.im/FSMaxB/molch

An implementation of the axolotl ratchet (https://github.com/trevp/axolotl/wiki) based on libsodium.

WARNING: THIS SOFTWARE ISN'T READY YET. DON'T USE IT!

how to get the code

After cloning the repository, the git submodules have to be initialised and updated:

$ git clone https://github.com/FSMaxB/molch
$ git submodule update --init --recursive

dependencies

Molch depends on the following:

  • libsodium
  • protobuf-c
  • Meson (build and tests)
  • C-Compiler (build)
  • C++-Compiler (build)
  • Clang Static Analyzer (tests)
  • Address Sanitizer (tests)
  • Undefined Behavior Sanitizer (tests)
  • Valgrind
  • Lua (optional, for Lua-Bindings)
  • Swig (optional, for Lua-Bindings)
  • Doxygen (optional, documentation)
  • Graphviz (optional, documentation)
  • Android-NDK (optional, for Android builds)

On Ubuntu:

sudo apt-get install libsodium18 libsodium-dev libprotobuf-c-dev libprotobuf-c1 libprotobuf-c1-dbg libprotobuf9v5:armhf protobuf-c-compiler clang libubsan0 libasan0 libasan1 libasan2 valgrind liblua5.3 lua5.3 liblua5.3-dev swig doxygen graphviz meson

On Arch:

sudo pacman -S clang-analyzer libsodium valgrind swig lua doxygen graphviz protobuf-c meson

On Max OS X (via homebrew):

brew install libsodium valgrind swig lua graphviz doxygen protobuf-c meson

supported platforms

Molch is constantly tested on the following platforms:

processor os
x86_64 Archlinux
i686 Ubuntu 16.04
ARMv7hf Archlinux ARM
AArch64 Archlinux ARM
PowerPC Apple G4 Gentoo
x86_64 Mac OS X 10.11 El Capitan

how to build

To build Molch run the script release.sh from the project root.

To run all tests, run ./run-ci.sh from the project root. Or you can run the scripts separately:

  • test.sh: For normal build and tests with and without valgrind
  • sanitizers.sh: To build and run with AddressSanitizer and UndefinedBehaviorSanitizer
  • static-analysis.: To run clang static analyzer
  • doxygen.sh: To create the documentation

on android

  1. ./build-container.sh
  2. ./run-container.sh
  3. cd molch
  4. ./build-android.sh
  5. exit
  6. ./copy-binaries-from-container.sh
  7. ./stop-and-remove-container.sh

format of a packet

Molch uses Googles Protocol Buffers via the Protobuf-C library. You can find the protocol descriptions in lib/protobuf.

cryptography

This is a brief non-complete overview of the cryptographic primitives used by molch. A detailed description of what molch does cryptographically is only provided by its source code at the moment.

Molch uses only primitives implemented by libsodium.

Key derivation: Blake2b Header encryption: Xsalsa20 with Poly1305 MAC Message encryption: XSalsa20 with Poly1305 MAC Signing keys (used to sign prekeys and the identity key): Ed25519 Other keypairs: X25519 Key exchange: ECDH with X25519

Molch allows you to mix in a low entropy random source to the creation of signing and identity keypairs. In this case, the low entropy random source is used as input to Argon2i and the output xored with high entropy random numbers provided by the operating system.

Want to help?

Take a look at the file CONTRIBUTING. And look for GitHub Issues with the help wanted label.

license

This library is licensed under the ISC license.

More about information can be found in the file LICENSE.md.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].