signer-daemon 0.3.2

Signer daemon package.
Documentation
use crate::model::viewobject::CrdtEventVO;
use serde::{Deserialize, Serialize};
use signer_core::{SignerCrypted, SignerUser};

#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct CrdtCryptedEventVO {
    pub clock: i32,
    pub peer: String,
    pub data: SignerCrypted<CrdtEventVO>,
}

impl CrdtCryptedEventVO {
    pub fn from_data(user: &SignerUser, data: &CrdtEventVO) -> crate::DaemonResult<Self> {
        // 移除 crdt_event 中的 revert 字段内容
        let data = CrdtEventVO {
            revert: None,
            ..data.clone()
        };

        Ok(Self {
            clock: data.clock,
            peer: data.peer.clone(),
            data: SignerCrypted::create(user, &user.public.pub_key, data)?,
        })
    }

    pub fn decrypt(&self, user: &SignerUser) -> crate::DaemonResult<CrdtEventVO> {
        let data = self.data.decrypt(user)?;
        Ok(CrdtEventVO {
            revert: None,
            ..data
        })
    }
}