Function shamirsecretsharing::combine_shares [−][src]
pub fn combine_shares(shares: &[Vec<u8>]) -> Result<Option<Vec<u8>>, SSSError>
Combine a set of shares and return the original secret
shares
must be a slice of share vectors.
The return type will be a Result
which will only be Err(err)
of the input shares were
malformed. When the input shares are of the correct length, this function will always return
Ok(_)
.
Attempts at restoring a secret may fail. Then combine_shares
will return Ok(None)
. This only
cases in which this can happen are:
- More shares were needed to reach the treshold.
- Shares of different sets (corresponding to different secrets) were supplied or some of the shares were tampered with.
If the shares were correct—and a secret could be restored—this function will return
Ok(Some(data))
, with data
being a vector of u8
s. This data
will be the same length as When
it was shared, namely DATA_SIZE
(64) bytes.
Example
use shamirsecretsharing::*; // When `shares` contains a set of valid shares let restored = combine_shares(&shares).unwrap(); let data = restored.expect("`shares` did not contain a valid set of shares"); println!("Restored some data: {:?}", data); // When `shares` contains an invalid set of shares let restored = combine_shares(&shares).unwrap(); assert_eq!(restored, None);