arcium-primitives 0.4.5

Arcium primitives
Documentation
pub mod additive_shares;

pub use additive_shares::AdditiveShares;

#[cfg(test)]
mod tests {
    use crate::{
        algebra::elliptic_curve::{Curve, Curve25519Ristretto},
        random::{self, Random},
        sharing::unauthenticated::AdditiveShares,
        types::heap_array::SubfieldElements,
    };

    #[test]
    fn test_subfield_additive_shares() {
        // Context
        type C = Curve25519Ristretto;
        type F = <C as Curve>::Scalar;
        type M = typenum::U1;
        let n_parties = 3;
        let mut rng = random::test_rng();

        let secret = SubfieldElements::<F, M>::random(&mut rng);
        let shares = secret.to_additive_shares(n_parties, &mut rng);
        let reconstructed = SubfieldElements::<F, M>::from_additive_shares(&shares);

        assert_eq!(secret, reconstructed);
    }
}