signer-daemon 0.2.1

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,
  ) -> anyhow::Result<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) -> anyhow::Result<CrdtEventVO> {
    let data = self.data.decrypt(user)?;
    Ok(CrdtEventVO {
      revert: None,
      ..data
    })
  }
}