lit_node_core/models/
signable.rs1use crate::{Error, Result};
2use serde::{Deserialize, Serialize};
3
4#[derive(Clone, Serialize, Deserialize, Debug)]
6pub struct EcdsaSignedMessageShare {
7 pub digest: String,
8 pub result: String,
9 pub share_id: String,
10 pub peer_id: String,
11 pub signature_share: String,
12 pub big_r: String,
13 pub compressed_public_key: String,
14 pub public_key: String,
15 pub sig_type: String,
16}
17
18#[derive(Clone, Serialize, Deserialize, Debug)]
20pub struct FrostSignedMessageShare {
21 pub message: String,
22 pub result: String,
23 pub share_id: String,
24 pub peer_id: String,
25 pub signature_share: String,
26 pub signing_commitments: String,
27 pub verifying_share: String,
28 pub public_key: String,
29 pub sig_type: String,
30}
31
32#[derive(Clone, Serialize, Deserialize, Debug)]
34pub struct BlsSignedMessageShare {
35 pub message: String,
36 pub result: String,
37 pub peer_id: String,
38 pub share_id: String,
39 pub signature_share: String,
40 pub verifying_share: String,
41 pub public_key: String,
42 pub sig_type: String,
43}
44
45#[derive(Debug, Clone, serde::Serialize, serde::Deserialize)]
47pub enum SignableOutput {
48 EcdsaSignedMessageShare(EcdsaSignedMessageShare),
50 FrostSignedMessageShare(FrostSignedMessageShare),
52 BlsSignedMessageShare(BlsSignedMessageShare),
54}
55
56impl From<EcdsaSignedMessageShare> for SignableOutput {
57 fn from(share: EcdsaSignedMessageShare) -> Self {
58 SignableOutput::EcdsaSignedMessageShare(share)
59 }
60}
61
62impl From<FrostSignedMessageShare> for SignableOutput {
63 fn from(share: FrostSignedMessageShare) -> Self {
64 SignableOutput::FrostSignedMessageShare(share)
65 }
66}
67
68impl From<BlsSignedMessageShare> for SignableOutput {
69 fn from(share: BlsSignedMessageShare) -> Self {
70 SignableOutput::BlsSignedMessageShare(share)
71 }
72}
73
74impl SignableOutput {
75 pub fn ecdsa_failed_message_share() -> Self {
77 EcdsaSignedMessageShare {
78 digest: "".to_string(),
79 result: "fail".to_string(),
80 signature_share: "".to_string(),
81 share_id: "".to_string(),
82 peer_id: "".to_string(),
83 big_r: "".to_string(),
84 compressed_public_key: "".to_string(),
85 public_key: "".to_string(),
86 sig_type: "".to_string(),
87 }
88 .into()
89 }
90
91 pub fn ecdsa_signed_message_share(&self) -> Result<EcdsaSignedMessageShare> {
93 match self {
94 SignableOutput::EcdsaSignedMessageShare(share) => Ok((*share).clone()),
95 _ => Err(Error::InvalidType(
96 "Invalid SignableOutput type".to_string(),
97 )),
98 }
99 }
100
101 pub fn frost_signed_message_share(&self) -> Result<FrostSignedMessageShare> {
103 match self {
104 SignableOutput::FrostSignedMessageShare(share) => Ok((*share).clone()),
105 _ => Err(Error::InvalidType(
106 "Invalid SignableOutput type".to_string(),
107 )),
108 }
109 }
110
111 pub fn bls_signed_message_share(&self) -> Result<BlsSignedMessageShare> {
113 match self {
114 SignableOutput::BlsSignedMessageShare(share) => Ok((*share).clone()),
115 _ => Err(Error::InvalidType(
116 "Invalid SignableOutput type".to_string(),
117 )),
118 }
119 }
120}