orbinum_encrypted_memo/domain/value_objects/
nullifier_key.rs1#[cfg(all(feature = "parity-scale-codec", feature = "scale-info"))]
7use parity_scale_codec::{Decode, Encode};
8#[cfg(all(feature = "parity-scale-codec", feature = "scale-info"))]
9use scale_info::TypeInfo;
10
11#[derive(Clone, PartialEq, Eq, Debug)]
15#[cfg_attr(
16 all(feature = "parity-scale-codec", feature = "scale-info"),
17 derive(Encode, Decode, TypeInfo)
18)]
19pub struct NullifierKey(pub [u8; 32]);
20
21impl NullifierKey {
22 pub fn from_bytes(bytes: [u8; 32]) -> Self {
24 Self(bytes)
25 }
26
27 pub fn as_bytes(&self) -> &[u8; 32] {
29 &self.0
30 }
31}
32
33impl AsRef<[u8; 32]> for NullifierKey {
34 fn as_ref(&self) -> &[u8; 32] {
35 &self.0
36 }
37}
38
39impl From<[u8; 32]> for NullifierKey {
40 fn from(bytes: [u8; 32]) -> Self {
41 Self(bytes)
42 }
43}
44
45#[cfg(test)]
50mod tests {
51 use super::*;
52 extern crate alloc;
53 use alloc::format;
54
55 const BYTES: [u8; 32] = [17u8; 32];
56
57 #[test]
58 fn test_from_bytes_stores_inner() {
59 assert_eq!(NullifierKey::from_bytes(BYTES).0, BYTES);
60 }
61
62 #[test]
63 fn test_as_bytes_returns_reference() {
64 assert_eq!(NullifierKey::from_bytes(BYTES).as_bytes(), &BYTES);
65 }
66
67 #[test]
68 fn test_as_ref() {
69 let k = NullifierKey::from_bytes(BYTES);
70 let r: &[u8; 32] = k.as_ref();
71 assert_eq!(r, &BYTES);
72 }
73
74 #[test]
75 fn test_from_trait() {
76 let k: NullifierKey = BYTES.into();
77 assert_eq!(k.0, BYTES);
78 }
79
80 #[test]
81 fn test_clone_eq() {
82 let k1 = NullifierKey::from_bytes(BYTES);
83 assert_eq!(k1.clone(), k1);
84 }
85
86 #[test]
87 fn test_ne_different_bytes() {
88 assert_ne!(
89 NullifierKey::from_bytes([1u8; 32]),
90 NullifierKey::from_bytes([2u8; 32])
91 );
92 }
93
94 #[test]
95 fn test_debug_contains_type_name() {
96 let s = format!("{:?}", NullifierKey::from_bytes([0u8; 32]));
97 assert!(s.contains("NullifierKey"));
98 }
99
100 #[test]
101 fn test_all_zeros() {
102 assert_eq!(NullifierKey::from_bytes([0u8; 32]).as_bytes(), &[0u8; 32]);
103 }
104
105 #[test]
106 fn test_all_ones() {
107 assert_eq!(
108 NullifierKey::from_bytes([0xFFu8; 32]).as_bytes(),
109 &[0xFFu8; 32]
110 );
111 }
112}