/gosling

Primary LanguageRustOtherNOASSERTION

Description

Gosling is a protocol specification and reference library implementation for said protocol. The protocol is meant to solve the problem of building anonymous, metadata-resistant, and secure peer-to-peer applications using tor onion services.

It is meant to generalize (and improve upon) the authentication scheme used by Ricochet-Refresh clients use to talk to each other. Details can be found in the protocol specification here:

Dependencies

Libgosling currently has the following build dependencies:

Cargo will automatically download and build the required Rust crates. The list of current dependencies can be found in Cargo.toml

The functional tests additionally depend on:

Building

The reference implementation is a work-in-progress and the API is not yet fully stable.

You will need to initialize the git submodules by:

$ git submodule update --init

All of the usual cmake build types can be generated by invoking make from the out directory:

  • Debug - No optimization, asserts enabled, debug symbols
  • MinSizeRel - Optimize for size, no asserts, no symbols
  • Release - Optimize for speed, no asserts, no symbols
  • RelWithDebInfo - Optimize for speed, no asserts, debug symbols

Further information can be found in the cmake documentation:

From within one of the generated target directories, the projects may be built by:

$ make

and tests may then by run by:

$ make test

Acknowledgements

Creation of innovative free software needs support. We thank the NGI Assure Fund, a fund established by NLnet with financial support from the European Commission's Next Generation Internet programme, under the aegis of DG Communications Networks, Content and Technology under grant agreement No 957073