<!-- Copyright 2018 Google LLC

Use of this source code is governed by an MIT-style
license that can be found in the LICENSE file or at
https://opensource.org/licenses/MIT. -->

# Mundane

Mundane is a Rust cryptography library backed by BoringSSL that is difficult
to misuse, ergonomic, and performant (in that order).

## Issues and Contributions

We use [GitHub issues](https://github.com/google/mundane/issues) for issue
tracking, and
[Gerrit](https://fuchsia-review.googlesource.com/admin/repos/mundane) for code
reviews. See `CONTRIBUTING.md` for more details.

## Dependencies

Rust 1.36 or newer is required.

Mundane vendors a copy of the BoringSSL source, so BoringSSL does not need to be
installed locally in order to build. However, the BoringSSL build system has the
following dependencies:
- [CMake](https://cmake.org/download/) 2.8.11 or later
- Perl 5.6.1 or later. See [BoringSSL's build
  instructions](https://boringssl.googlesource.com/boringssl/+/master/BUILDING.md)
  for what to do if CMake fails to find Perl on your system.
- Either Make or [Ninja](https://ninja-build.org/). Ninja is preferable, as it
  makes compilation significantly faster; if both are present, Ninja will be
  used. On Windows, Ninja is required.
- A C++ compiler
- Go 1.10 or later
- To build the x86 and x86_64 assembly, your assembler must support AVX2
  instructions and `MOVBE`. If using GNU binutils, you must have 2.22 or later.

In order to avoid errors at link time due to conflicting symbols, we build
BoringSSL with a custom prefix for all of its symbols which is based on the name
and version of this crate. That way, even if multiple different versions of
Mundane are present in the same dependency graph, none of the symbols from one
version's BoringSSL will conflict with the symbols from another version's
BoringSSL.

## Supported platforms

Mundane supports being built on and for Linux and Mac. Windows support is under
development. Cross-compilation is not supported.

## License

Everything outside of the `boringssl/boringssl` directory is licensed under an
MIT license which can be found in the `LICENSE` file. Everything in the
`boringssl/boringssl` directory is licensed with a license that can be found in
the `boringssl/boringssl/LICENSE` file.

Disclaimer: Mundane is not an officially supported Google product.
