pub struct ShamirSS;Expand description
Shamir Secret Sharing implementation. This struct provides static methods for splitting and joining secrets using Shamir’s algorithm.
Implementations§
Source§impl ShamirSS
Implementation of Shamir’s Secret Sharing methods.
impl ShamirSS
Implementation of Shamir’s Secret Sharing methods.
Sourcepub fn split(
n: i32,
k: i32,
secret: Vec<u8>,
) -> Result<BTreeMap<i32, Vec<u8>>, String>
pub fn split( n: i32, k: i32, secret: Vec<u8>, ) -> Result<BTreeMap<i32, Vec<u8>>, String>
Splits a secret into n shares, requiring at least k shares to reconstruct the secret.
The secret is treated as a sequence of bytes, and each byte is split independently using polynomial interpolation over GF(256).
§Arguments
n- The total number of shares to generate. Must be betweenkand 255.k- The minimum number of shares required to reconstruct the secret. Must be greater than 1.secret- The secret data as a vector of bytes.
§Returns
A Result containing a BTreeMap where keys are share indices (1 to n) and values are the share data,
or an error string if the parameters are invalid.
§Errors
Returns an error if k <= 1, n < k, or n > 255.
Sourcepub fn join(parts: BTreeMap<i32, Vec<u8>>) -> Result<Vec<u8>, String>
pub fn join(parts: BTreeMap<i32, Vec<u8>>) -> Result<Vec<u8>, String>
Reconstructs the original secret from a set of shares.
At least k shares (where k is the threshold used in split) are required to successfully
reconstruct the secret. Providing fewer shares or invalid shares will result in an error.
§Arguments
parts- ABTreeMapcontaining share indices as keys and share data as values. The indices should correspond to those generated bysplit.
§Returns
A Result containing the reconstructed secret as a vector of bytes, or an error string.
§Errors
Returns an error if no parts are provided or if the parts have inconsistent lengths.