fedimint_core/
bls12_381_serde.rs1pub mod scalar {
2 use bls12_381::Scalar;
3 use serde::de::Error;
4 use serde::{Deserializer, Serializer};
5
6 pub fn serialize<S: Serializer>(scalar: &Scalar, s: S) -> Result<S::Ok, S::Error> {
7 serdect::array::serialize_hex_lower_or_bin(&scalar.to_bytes(), s)
8 }
9
10 pub fn deserialize<'d, D: Deserializer<'d>>(d: D) -> Result<Scalar, D::Error> {
11 let mut byte_array = [0; 32];
12
13 serdect::array::deserialize_hex_or_bin(&mut byte_array, d)?;
14
15 Option::from(Scalar::from_bytes(&byte_array))
16 .ok_or_else(|| Error::custom("Could not decode scalar"))
17 }
18}
19
20pub mod g1 {
21 use bls12_381::G1Affine;
22 use serde::de::Error;
23 use serde::{Deserializer, Serializer};
24
25 pub fn serialize<S: Serializer>(point: &G1Affine, s: S) -> Result<S::Ok, S::Error> {
26 serdect::array::serialize_hex_lower_or_bin(&point.to_compressed(), s)
27 }
28
29 pub fn deserialize<'d, D: Deserializer<'d>>(d: D) -> Result<G1Affine, D::Error> {
30 let mut byte_array = [0; 48];
31
32 serdect::array::deserialize_hex_or_bin(&mut byte_array, d)?;
33
34 Option::from(G1Affine::from_compressed(&byte_array))
35 .ok_or_else(|| Error::custom("Could not decode compressed group element"))
36 }
37}
38
39pub mod g2 {
40 use bls12_381::G2Affine;
41 use serde::de::Error;
42 use serde::{Deserializer, Serializer};
43
44 pub fn serialize<S: Serializer>(point: &G2Affine, s: S) -> Result<S::Ok, S::Error> {
45 serdect::array::serialize_hex_lower_or_bin(&point.to_compressed(), s)
46 }
47
48 pub fn deserialize<'d, D: Deserializer<'d>>(d: D) -> Result<G2Affine, D::Error> {
49 let mut byte_array = [0; 96];
50
51 serdect::array::deserialize_hex_or_bin(&mut byte_array, d)?;
52
53 Option::from(G2Affine::from_compressed(&byte_array))
54 .ok_or_else(|| Error::custom("Could not decode compressed group element"))
55 }
56}