dpp/identity/identity_public_key/accessors/
mod.rs1use 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}