Skip to main content

dpp/identity/identity_public_key/accessors/
mod.rs

1use crate::fee::Credits;
2use crate::identity::contract_bounds::ContractBounds;
3use crate::identity::identity_public_key::accessors::v0::{
4    IdentityPublicKeyGettersV0, IdentityPublicKeySettersV0,
5};
6use crate::identity::identity_public_key::accessors::v1::IdentityPublicKeyGettersV1;
7use crate::identity::KeyType;
8use crate::identity::Purpose;
9use crate::identity::SecurityLevel;
10use crate::identity::{IdentityPublicKey, KeyID, TimestampMillis};
11use platform_value::BinaryData;
12
13pub mod v0;
14pub mod v1;
15
16impl IdentityPublicKeyGettersV0 for IdentityPublicKey {
17    fn id(&self) -> KeyID {
18        match self {
19            IdentityPublicKey::V0(v0) => v0.id(),
20            IdentityPublicKey::V1(v1) => v1.id(),
21        }
22    }
23
24    fn purpose(&self) -> Purpose {
25        match self {
26            IdentityPublicKey::V0(v0) => v0.purpose(),
27            IdentityPublicKey::V1(v1) => v1.purpose(),
28        }
29    }
30
31    fn security_level(&self) -> SecurityLevel {
32        match self {
33            IdentityPublicKey::V0(v0) => v0.security_level(),
34            IdentityPublicKey::V1(v1) => v1.security_level(),
35        }
36    }
37
38    fn key_type(&self) -> KeyType {
39        match self {
40            IdentityPublicKey::V0(v0) => v0.key_type(),
41            IdentityPublicKey::V1(v1) => v1.key_type(),
42        }
43    }
44
45    fn read_only(&self) -> bool {
46        match self {
47            IdentityPublicKey::V0(v0) => v0.read_only(),
48            IdentityPublicKey::V1(v1) => v1.read_only(),
49        }
50    }
51
52    fn data(&self) -> &BinaryData {
53        match self {
54            IdentityPublicKey::V0(v0) => v0.data(),
55            IdentityPublicKey::V1(v1) => v1.data(),
56        }
57    }
58
59    fn data_owned(self) -> BinaryData {
60        match self {
61            IdentityPublicKey::V0(v0) => v0.data_owned(),
62            IdentityPublicKey::V1(v1) => v1.data_owned(),
63        }
64    }
65
66    fn disabled_at(&self) -> Option<TimestampMillis> {
67        match self {
68            IdentityPublicKey::V0(v0) => v0.disabled_at(),
69            IdentityPublicKey::V1(v1) => v1.disabled_at(),
70        }
71    }
72
73    fn is_disabled(&self) -> bool {
74        match self {
75            IdentityPublicKey::V0(v0) => v0.is_disabled(),
76            IdentityPublicKey::V1(v1) => v1.is_disabled(),
77        }
78    }
79
80    fn contract_bounds(&self) -> Option<&ContractBounds> {
81        match self {
82            IdentityPublicKey::V0(v0) => v0.contract_bounds(),
83            IdentityPublicKey::V1(v1) => v1.contract_bounds(),
84        }
85    }
86}
87
88impl IdentityPublicKeyGettersV1 for IdentityPublicKey {
89    fn total_budget(&self) -> Option<Credits> {
90        match self {
91            IdentityPublicKey::V0(_) => None,
92            IdentityPublicKey::V1(v1) => v1.total_budget(),
93        }
94    }
95
96    fn expires_at(&self) -> Option<TimestampMillis> {
97        match self {
98            IdentityPublicKey::V0(_) => None,
99            IdentityPublicKey::V1(v1) => v1.expires_at(),
100        }
101    }
102}
103
104impl IdentityPublicKeySettersV0 for IdentityPublicKey {
105    fn set_id(&mut self, id: KeyID) {
106        match self {
107            IdentityPublicKey::V0(v0) => {
108                v0.set_id(id);
109            }
110            IdentityPublicKey::V1(v1) => {
111                v1.set_id(id);
112            }
113        }
114    }
115
116    fn set_purpose(&mut self, purpose: Purpose) {
117        match self {
118            IdentityPublicKey::V0(v0) => {
119                v0.set_purpose(purpose);
120            }
121            IdentityPublicKey::V1(v1) => {
122                v1.set_purpose(purpose);
123            }
124        }
125    }
126
127    fn set_security_level(&mut self, security_level: SecurityLevel) {
128        match self {
129            IdentityPublicKey::V0(v0) => {
130                v0.set_security_level(security_level);
131            }
132            IdentityPublicKey::V1(v1) => {
133                v1.set_security_level(security_level);
134            }
135        }
136    }
137
138    fn set_key_type(&mut self, key_type: KeyType) {
139        match self {
140            IdentityPublicKey::V0(v0) => {
141                v0.set_key_type(key_type);
142            }
143            IdentityPublicKey::V1(v1) => {
144                v1.set_key_type(key_type);
145            }
146        }
147    }
148
149    fn set_read_only(&mut self, read_only: bool) {
150        match self {
151            IdentityPublicKey::V0(v0) => {
152                v0.set_read_only(read_only);
153            }
154            IdentityPublicKey::V1(v1) => {
155                v1.set_read_only(read_only);
156            }
157        }
158    }
159
160    fn set_data(&mut self, data: BinaryData) {
161        match self {
162            IdentityPublicKey::V0(v0) => {
163                v0.set_data(data);
164            }
165            IdentityPublicKey::V1(v1) => {
166                v1.set_data(data);
167            }
168        }
169    }
170
171    fn set_disabled_at(&mut self, timestamp_millis: u64) {
172        match self {
173            IdentityPublicKey::V0(v0) => {
174                v0.set_disabled_at(timestamp_millis);
175            }
176            IdentityPublicKey::V1(v1) => {
177                v1.set_disabled_at(timestamp_millis);
178            }
179        }
180    }
181
182    fn remove_disabled_at(&mut self) {
183        match self {
184            IdentityPublicKey::V0(v0) => {
185                v0.remove_disabled_at();
186            }
187            IdentityPublicKey::V1(v1) => {
188                v1.remove_disabled_at();
189            }
190        }
191    }
192}