use ark_ff::FftField;
use ark_serialize::{CanonicalDeserialize, CanonicalSerialize};
use serde::{Deserialize, Serialize};
use stoffelnet::network_utils::PartyId;
use crate::{common::share::shamir::NonRobustShare, honeybadger::SessionId};
#[derive(Clone, Serialize, Deserialize, Debug)]
pub enum RanDouShaPayload {
Reconstruct(Vec<u8>),
ReconstructBatch(Vec<Vec<u8>>),
Output(bool),
}
#[derive(Clone, Serialize, Deserialize, Debug)]
pub struct RanDouShaMessage {
pub sender_id: PartyId,
pub session_id: SessionId,
pub payload: RanDouShaPayload,
}
impl RanDouShaMessage {
pub fn new(sender_id: PartyId, session_id: SessionId, payload: RanDouShaPayload) -> Self {
Self {
sender_id,
session_id,
payload,
}
}
}
#[derive(CanonicalDeserialize, CanonicalSerialize)]
pub struct ReconstructionMessage<F: FftField> {
pub r_share_deg_t: NonRobustShare<F>,
pub r_share_deg_2t: NonRobustShare<F>,
}
impl<F> ReconstructionMessage<F>
where
F: FftField,
{
pub fn new(r_deg_t: NonRobustShare<F>, r_deg_2t: NonRobustShare<F>) -> Self {
Self {
r_share_deg_t: r_deg_t,
r_share_deg_2t: r_deg_2t,
}
}
}