mpz is a collection of multi-party computation libraries written in Rust 🦀.
This project strives to provide safe, performant, modular and portable MPC software with a focus on usability.
See our design doc for information on design choices, standards and project structure.
This project is currently under active development and should not be used in production. Expect bugs and regular major breaking changes. Use at your own risk.
mpz-core
- Core cryptographic primitives.mpz-common
- Common functionalities needed for modeling protocol execution, I/O, and multi-threading.mpz-fields
- Finite-fields.mpz-circuits
(macros
) - Boolean circuit DSL.mpz-ot
(core
) - Oblivious transfer protocols.mpz-garble
(core
) - Boolean garbled circuit protocols.mpz-share-conversion
(core
) - Multiplicative-to-Additive and Additive-to-Multiplicative share conversion protocols for a variety of fields.mpz-cointoss
(core
) - 2-party cointoss protocol.matrix-transpose
- Bit-wise matrix transposition.clmul
- Carry-less multiplication.
All crates in this repository are licensed under either of
at your option.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.
See CONTRIBUTING.md.
mpz is pronounced "em-peasy".