Skip to main content

ShamirSS

Struct ShamirSS 

Source
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.

Source

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 between k and 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.

Source

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 - A BTreeMap containing share indices as keys and share data as values. The indices should correspond to those generated by split.
§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.

Trait Implementations§

Source§

impl Clone for ShamirSS

Source§

fn clone(&self) -> ShamirSS

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for ShamirSS

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V