snarkvm_console_account/graph_key/
serialize.rs1use super::*;
17
18impl<N: Network> Serialize for GraphKey<N> {
19 fn serialize<S: Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
21 ToBytesSerializer::serialize(self, serializer)
22 }
23}
24
25impl<'de, N: Network> Deserialize<'de> for GraphKey<N> {
26 fn deserialize<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
28 FromBytesDeserializer::<Self>::deserialize(deserializer, "graph key", (N::Field::size_in_bits() + 7) / 8)
29 }
30}
31
32#[cfg(test)]
33mod tests {
34 use super::*;
35 use crate::PrivateKey;
36 use snarkvm_console_network::MainnetV0;
37
38 type CurrentNetwork = MainnetV0;
39
40 const ITERATIONS: u64 = 1000;
41
42 #[test]
43 fn test_bincode() -> Result<()> {
44 let mut rng = TestRng::default();
45
46 for _ in 0..ITERATIONS {
47 let private_key = PrivateKey::<CurrentNetwork>::new(&mut rng)?;
49 let view_key = ViewKey::try_from(private_key)?;
50 let expected = GraphKey::try_from(view_key)?;
51
52 let expected_bytes = expected.to_bytes_le()?;
54 assert_eq!(&expected_bytes[..], &bincode::serialize(&expected)?[..]);
55
56 assert_eq!(expected, GraphKey::read_le(&expected_bytes[..])?);
58 assert_eq!(expected, bincode::deserialize(&expected_bytes[..])?);
59 }
60 Ok(())
61 }
62}