snarkvm_console_account/signature/
to_bits.rs1use super::*;
17
18impl<N: Network> ToBits for Signature<N> {
19 fn write_bits_le(&self, vec: &mut Vec<bool>) {
21 self.challenge.write_bits_le(vec);
23 self.response.write_bits_le(vec);
25 self.compute_key.write_bits_le(vec);
27 }
28
29 fn write_bits_be(&self, vec: &mut Vec<bool>) {
31 self.challenge.write_bits_be(vec);
33 self.response.write_bits_be(vec);
35 self.compute_key.write_bits_be(vec);
37 }
38}
39
40#[cfg(test)]
41mod tests {
42 use super::*;
43 use snarkvm_console_network::MainnetV0;
44
45 type CurrentNetwork = MainnetV0;
46
47 const ITERATIONS: u64 = 1_000;
48
49 #[test]
50 fn test_to_bits_le() {
51 let rng = &mut TestRng::default();
52
53 for i in 0..ITERATIONS {
54 let signature = test_helpers::sample_signature(i, rng);
56
57 let candidate = signature.to_bits_le();
58 assert_eq!(Signature::<CurrentNetwork>::size_in_bits(), candidate.len());
59
60 let mut expected = Vec::new();
62 expected.extend(signature.challenge.to_bits_le());
63 expected.extend(signature.response.to_bits_le());
64 expected.extend(signature.compute_key.to_bits_le());
65
66 for (expected, candidate) in expected.iter().zip_eq(&candidate) {
67 assert_eq!(expected, candidate);
68 }
69 }
70 }
71
72 #[test]
73 fn test_to_bits_be() {
74 let rng = &mut TestRng::default();
75
76 for i in 0..ITERATIONS {
77 let signature = test_helpers::sample_signature(i, rng);
79
80 let candidate = signature.to_bits_be();
81 assert_eq!(Signature::<CurrentNetwork>::size_in_bits(), candidate.len());
82
83 let mut expected = Vec::new();
85 expected.extend(signature.challenge.to_bits_be());
86 expected.extend(signature.response.to_bits_be());
87 expected.extend(signature.compute_key.to_bits_be());
88
89 for (expected, candidate) in expected.iter().zip_eq(&candidate) {
90 assert_eq!(expected, candidate);
91 }
92 }
93 }
94}