pub fn new(
        kappa_unmasked: IDkgTranscript,
        lambda_masked: IDkgTranscript,
        kappa_times_lambda: IDkgTranscript,
        key_times_lambda: IDkgTranscript,
    ) -> Result<Self, error::PresignatureQuadrupleCreationError> {
        Self::check_algorithm_ids(
            &kappa_unmasked,
            &lambda_masked,
            &kappa_times_lambda,
            &key_times_lambda,
        )?;
        Self::check_receivers_are_equal(
            &kappa_unmasked,
            &lambda_masked,
            &kappa_times_lambda,
            &key_times_lambda,
        )?;
        Self::check_consistency_of_transcripts(
            &kappa_unmasked,
            &lambda_masked,
            &kappa_times_lambda,
            &key_times_lambda,
        )?;

        Ok(Self {
            kappa_unmasked,
            lambda_masked,
            kappa_times_lambda,
            key_times_lambda,
        })
    }
/// Constructs a `PreSignatureQuadruple` from the provided transcripts.
///
/// # Arguments:
/// - kappa_unmasked: An unmasked resharing of the masked random kappa
/// - lambda_masked: A masked random sharing of lambda
/// - kappa_times_lambda: The kappa_unmasked multiplied by lambda_masked
///   - Note that the order of the factors matters
/// - key_times_lambda: The (unmasked, reshared) secret key multiplied by
///   lambda_masked
///   - Note that the order of the factors matters
///
/// This checks that:
/// - kappa is an Unmasked, from a Reshare of a Masked
/// - lambda is a Masked, of type Random
/// - kappa_times_lambda is a Masked, from a Multiplication of an Unmasked
///   times a Masked
/// - key_times_lambda is a Masked, from a Multiplication of an Unmasked
///   times a Masked
/// - The first factor of kappa_times_lambda matches kappa_unmasked
/// - The second factors in both kappa_times_lambda and key_times_lambda
///   match lambda_masked
/// - All transcripts use the same AlgorithmId
/// - All transcripts have the same receiver set (same receiver nodes, and
///   each node at the same index)
Constructs a `PreSignatureQuadruple` from the provided transcripts.
Constructs a ` PreSignatureQuadruple ` from the provided transcripts .
pub fn new(
        kappa_unmasked: IDkgTranscript,
        lambda_masked: IDkgTranscript,
        kappa_times_lambda: IDkgTranscript,
        key_times_lambda: IDkgTranscript,
    ) -> Result<Self, error::PresignatureQuadrupleCreationError> {
        Self::check_algorithm_ids(
            &kappa_unmasked,
            &lambda_masked,
            &kappa_times_lambda,
            &key_times_lambda,
        )?;
        Self::check_receivers_are_equal(
            &kappa_unmasked,
            &lambda_masked,
            &kappa_times_lambda,
            &key_times_lambda,
        )?;
        Self::check_consistency_of_transcripts(
            &kappa_unmasked,
            &lambda_masked,
            &kappa_times_lambda,
            &key_times_lambda,
        )?;
        Ok(Self {
            kappa_unmasked,
            lambda_masked,
            kappa_times_lambda,
            key_times_lambda,
        })
    }
pub fn new ( kappa_unmasked : IDkgTranscript , lambda_masked : IDkgTranscript , kappa_times_lambda : IDkgTranscript , key_times_lambda : IDkgTranscript , ) -> Result < Self , error :: PresignatureQuadrupleCreationError > { Self :: check_algorithm_ids ( & kappa_unmasked , & lambda_masked , & kappa_times_lambda , & key_times_lambda , ) ? ; Self :: check_receivers_are_equal ( & kappa_unmasked , & lambda_masked , & kappa_times_lambda , & key_times_lambda , ) ? ; Self :: check_consistency_of_transcripts ( & kappa_unmasked , & lambda_masked , & kappa_times_lambda , & key_times_lambda , ) ? ; Ok ( Self { kappa_unmasked , lambda_masked , kappa_times_lambda , key_times_lambda , } ) }
Constructs a `PreSignatureQuadruple` from the provided transcripts.
Constructs a ` PreSignatureQuadruple ` from the provided transcripts .
kappa_unmasked
IDkgTranscript
lambda_masked
IDkgTranscript
kappa_times_lambda
IDkgTranscript
key_times_lambda
IDkgTranscript
kappa_unmasked
IDkgTranscript
lambda_masked
IDkgTranscript
kappa_times_lambda
IDkgTranscript
key_times_lambda
IDkgTranscript
arguments:
An unmasked resharing of the masked random kappa
lambda_masked: A masked random sharing of lambda
kappa_times_lambda: The kappa_unmasked multiplied by lambda_masked
Note that the order of the factors matters
key_times_lambda: The (unmasked, reshared) secret key multiplied by
lambda_masked
Note that the order of the factors matters

This checks that:
kappa is an Unmasked, from a Reshare of a Masked
lambda is a Masked, of type Random
kappa_times_lambda is a Masked, from a Multiplication of an Unmasked
times a Masked
key_times_lambda is a Masked, from a Multiplication of an Unmasked
times a Masked
The first factor of kappa_times_lambda matches kappa_unmasked
The second factors in both kappa_times_lambda and key_times_lambda
match lambda_masked
All transcripts use the same AlgorithmId
All transcripts have the same receiver set (same receiver nodes, and
each node at the same index)
An unmasked resharing of the masked random kappa lambda_masked : A masked random sharing of lambda kappa_times_lambda : The kappa_unmasked multiplied by lambda_masked Note that the order of the factors matters key_times_lambda : The ( unmasked reshared ) secret key multiplied by lambda_masked Note that the order of the factors matters This checks that : kappa is an Unmasked from a Reshare of a Masked lambda is a Masked of type Random kappa_times_lambda is a Masked from a Multiplication of an Unmasked times a Masked key_times_lambda is a Masked from a Multiplication of an Unmasked times a Masked The first factor of kappa_times_lambda matches kappa_unmasked The second factors in both kappa_times_lambda and key_times_lambda match lambda_masked All transcripts use the same AlgorithmId All transcripts have the same receiver set ( same receiver nodes and each node at the same index )