Crate sharks[][src]

Fast, small and secure Shamir’s Secret Sharing library crate

Usage example (std):

use sharks::{ Sharks, Share };

// Set a minimum threshold of 10 shares
let sharks = Sharks(10);
// Obtain an iterator over the shares for secret [1, 2, 3, 4]
let dealer = sharks.dealer(&[1, 2, 3, 4]);
// Get 10 shares
let shares: Vec<Share> = dealer.take(10).collect();
// Recover the original secret!
let secret = sharks.recover(shares.as_slice()).unwrap();
assert_eq!(secret, vec![1, 2, 3, 4]);

Usage example (no std):

use sharks::{ Sharks, Share };
use rand_chacha::rand_core::SeedableRng;

// Set a minimum threshold of 10 shares
let sharks = Sharks(10);
// Obtain an iterator over the shares for secret [1, 2, 3, 4]
let mut rng = rand_chacha::ChaCha8Rng::from_seed([0x90; 32]);
let dealer = sharks.dealer_rng(&[1, 2, 3, 4], &mut rng);
// Get 10 shares
let shares: Vec<Share> = dealer.take(10).collect();
// Recover the original secret!
let secret = sharks.recover(shares.as_slice()).unwrap();
assert_eq!(secret, vec![1, 2, 3, 4]);

Structs

Share

A share used to reconstruct the secret. Can be serialized to and from a byte array.

Sharks

Tuple struct which implements methods to generate shares and recover secrets over a 256 bits Galois Field. Its only parameter is the minimum shares threshold.