# Rust PVSS (Publicly Verifiable Secret Sharing) [![Crates.io][crates-badge]][crates-url] [![MIT licensed][mit-badge]][mit-url] [![APACHE-2 licensed][apache2-badge]][apache2-url] [![Build Status][actions-badge]][actions-url] [crates-badge]: https://img.shields.io/crates/v/pvss.svg [crates-url]: https://crates.io/crates/pvss [mit-badge]: https://img.shields.io/badge/license-MIT-blue.svg [apache2-badge]: https://img.shields.io/badge/license-APACHE--2-blue.svg [mit-url]: https://github.com/vincenthz/rust-pvss/blob/master/LICENSE-MIT [apache2-url]: https://github.com/vincenthz/rust-pvss/blob/master/LICENSE-APACHE [actions-badge]: https://github.com/vincenthz/rust-pvss/workflows/CI/badge.svg [actions-url]: https://github.com/vincenthz/rust-pvss/actions?query=workflow%3ACI+branch%3Amaster [API Docs](https://docs.rs/pvss/latest/pvss) This package provide secret sharing schemes which are publicly veriable and recoverable using a simple `t` out of `n` `(t,n)` threshold system. A secret value can be **escrow** to N encrypted shares. This secret value can be recovered by decrypting at least `t` amount of shares, and combining them. Publicly Verifiable Secret Sharing (PVSS) scheme implemented: * [Schoenmaker](http://www.win.tue.nl/~berry/papers/crypto99.pdf) * [SCRAPE](https://eprint.iacr.org/2017/216.pdf) ## Crypto For now the implementation uses the P256R1 elliptic curve by default, through the eccoxide package which wrap fiat-crypto code for this specific curve.