1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
mod errors;
pub use errors::SchnorrError;
mod tools;
pub use tools::SigningContext;
pub mod keys;
pub mod signature;
pub use signature::{Signature, SIGNATURE_LENGTH};
mod ecdh;
pub use crate::ecdh::{diffie_hellman, SharedSecret};
mod multimessage;
pub use multimessage::Multimessage;
mod multisignature;
pub use multisignature::Multisignature;
pub use crate::keys::*;
mod batch;
pub use batch::{BatchVerification, BatchVerifier, SingleVerifier};
mod context;
pub use context::MuSigContext;
pub(crate) mod counterparty;
mod signer;
pub use signer::{
Signer, SignerAwaitingCommitments, SignerAwaitingPrecommitments, SignerAwaitingShares,
};
pub mod feldman_vss;
pub mod threshold;
#[cfg(test)]
mod threshold_test;
#[cfg(test)]
mod musig_test;
macro_rules! serde_boilerplate { ($t:ty) => {
impl ::serde::Serialize for $t {
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error> where S: ::serde::Serializer {
serializer.serialize_bytes(&self.to_bytes()[..])
}
}
impl<'d> ::serde::Deserialize<'d> for $t {
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error> where D: ::serde::Deserializer<'d> {
struct MyVisitor;
impl<'d> ::serde::de::Visitor<'d> for MyVisitor {
type Value = $t;
fn expecting(&self, formatter: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
formatter.write_str("SERDE ERROR")
}
fn visit_bytes<E>(self, bytes: &[u8]) -> Result<$t, E> where E: ::serde::de::Error {
Self::Value::from_bytes(bytes).map_err(crate::errors::serde_error_from_signature_error)
}
}
deserializer.deserialize_bytes(MyVisitor)
}
}
} }
serde_boilerplate!(Signature);
serde_boilerplate!(PublicKey);
serde_boilerplate!(SecretKey);
serde_boilerplate!(Keypair);