crabka_protocol/opt/rustwide/workdir/generated/
UserScramCredentialRecord.owned.rs1use bytes::{Buf, BufMut};
4
5use crate::primitives::fixed::{get_i8, get_i32, put_i8, put_i32};
6use crate::primitives::string_bytes::{
7 bytes_len, compact_bytes_len, get_bytes_owned, get_compact_bytes_owned, put_bytes,
8 put_compact_bytes,
9};
10use crate::primitives::string_bytes::{
11 compact_string_len, get_compact_string_owned, get_string_owned, put_compact_string, put_string,
12 string_len,
13};
14use crate::tagged_fields::{WriteTaggedFields, read_tagged_fields, tagged_fields_len};
15use crate::{Decode, Encode, ProtocolError, UnknownTaggedFields};
16pub const MIN_VERSION: i16 = 0;
17pub const MAX_VERSION: i16 = 0;
18pub const FLEXIBLE_MIN: i16 = 0;
19
20#[inline]
21fn is_flexible(version: i16) -> bool {
22 version >= FLEXIBLE_MIN
23}
24
25#[derive(Debug, Clone, PartialEq, Eq, Default)]
26pub struct UserScramCredentialRecord {
27 pub name: String,
28 pub mechanism: i8,
29 pub salt: ::bytes::Bytes,
30 pub stored_key: ::bytes::Bytes,
31 pub server_key: ::bytes::Bytes,
32 pub iterations: i32,
33 pub unknown_tagged_fields: UnknownTaggedFields,
34}
35impl Encode for UserScramCredentialRecord {
36 fn encode<B: BufMut>(&self, buf: &mut B, version: i16) -> Result<(), ProtocolError> {
37 if !(MIN_VERSION..=MAX_VERSION).contains(&version) {
38 return Err(ProtocolError::SchemaMismatch(
39 "UserScramCredentialRecord version out of range",
40 ));
41 }
42 let flex = is_flexible(version);
43 if version >= 0 {
44 if flex {
45 put_compact_string(buf, &self.name);
46 } else {
47 put_string(buf, &self.name);
48 }
49 }
50 if version >= 0 {
51 put_i8(buf, self.mechanism);
52 }
53 if version >= 0 {
54 if flex {
55 put_compact_bytes(buf, &self.salt);
56 } else {
57 put_bytes(buf, &self.salt);
58 }
59 }
60 if version >= 0 {
61 if flex {
62 put_compact_bytes(buf, &self.stored_key);
63 } else {
64 put_bytes(buf, &self.stored_key);
65 }
66 }
67 if version >= 0 {
68 if flex {
69 put_compact_bytes(buf, &self.server_key);
70 } else {
71 put_bytes(buf, &self.server_key);
72 }
73 }
74 if version >= 0 {
75 put_i32(buf, self.iterations);
76 }
77 if flex {
78 let tagged = WriteTaggedFields::new();
79 tagged.write(buf, &self.unknown_tagged_fields);
80 }
81 Ok(())
82 }
83 fn encoded_len(&self, version: i16) -> usize {
84 let flex = is_flexible(version);
85 let mut n: usize = 0;
86 if version >= 0 {
87 n += if flex {
88 compact_string_len(&self.name)
89 } else {
90 string_len(&self.name)
91 };
92 }
93 if version >= 0 {
94 n += 1;
95 }
96 if version >= 0 {
97 n += if flex {
98 compact_bytes_len(&self.salt)
99 } else {
100 bytes_len(&self.salt)
101 };
102 }
103 if version >= 0 {
104 n += if flex {
105 compact_bytes_len(&self.stored_key)
106 } else {
107 bytes_len(&self.stored_key)
108 };
109 }
110 if version >= 0 {
111 n += if flex {
112 compact_bytes_len(&self.server_key)
113 } else {
114 bytes_len(&self.server_key)
115 };
116 }
117 if version >= 0 {
118 n += 4;
119 }
120 if flex {
121 let known_pairs: Vec<(u32, usize)> = Vec::new();
122 n += tagged_fields_len(&known_pairs, &self.unknown_tagged_fields);
123 }
124 n
125 }
126}
127impl Decode<'_> for UserScramCredentialRecord {
128 fn decode<B: Buf>(buf: &mut B, version: i16) -> Result<Self, ProtocolError> {
129 if !(MIN_VERSION..=MAX_VERSION).contains(&version) {
130 return Err(ProtocolError::SchemaMismatch(
131 "UserScramCredentialRecord version out of range",
132 ));
133 }
134 let flex = is_flexible(version);
135 let mut out = Self::default();
136 if version >= 0 {
137 out.name = if flex {
138 get_compact_string_owned(buf)?
139 } else {
140 get_string_owned(buf)?
141 };
142 }
143 if version >= 0 {
144 out.mechanism = get_i8(buf)?;
145 }
146 if version >= 0 {
147 out.salt = if flex {
148 get_compact_bytes_owned(buf)?
149 } else {
150 get_bytes_owned(buf)?
151 };
152 }
153 if version >= 0 {
154 out.stored_key = if flex {
155 get_compact_bytes_owned(buf)?
156 } else {
157 get_bytes_owned(buf)?
158 };
159 }
160 if version >= 0 {
161 out.server_key = if flex {
162 get_compact_bytes_owned(buf)?
163 } else {
164 get_bytes_owned(buf)?
165 };
166 }
167 if version >= 0 {
168 out.iterations = get_i32(buf)?;
169 }
170 if flex {
171 out.unknown_tagged_fields = read_tagged_fields(buf, |_tag, _payload| Ok(false))?;
172 }
173 Ok(out)
174 }
175}
176#[cfg(test)]
177impl UserScramCredentialRecord {
178 #[must_use]
179 pub fn populated(version: i16) -> Self {
180 let mut m = Self::default();
181 if version >= 0 {
182 m.name = "x".to_string();
183 }
184 if version >= 0 {
185 m.mechanism = 1i8;
186 }
187 if version >= 0 {
188 m.salt = ::bytes::Bytes::from_static(b"x");
189 }
190 if version >= 0 {
191 m.stored_key = ::bytes::Bytes::from_static(b"x");
192 }
193 if version >= 0 {
194 m.server_key = ::bytes::Bytes::from_static(b"x");
195 }
196 if version >= 0 {
197 m.iterations = 1i32;
198 }
199 m
200 }
201}
202
203#[must_use]
206#[allow(unused_comparisons)]
207pub fn default_json(version: i16) -> ::serde_json::Value {
208 let mut obj = ::serde_json::Map::new();
209 obj.insert(
210 "name".to_string(),
211 ::serde_json::Value::String(String::new()),
212 );
213 obj.insert("mechanism".to_string(), ::serde_json::json!(0));
214 obj.insert(
215 "salt".to_string(),
216 ::serde_json::Value::String(String::new()),
217 );
218 obj.insert(
219 "storedKey".to_string(),
220 ::serde_json::Value::String(String::new()),
221 );
222 obj.insert(
223 "serverKey".to_string(),
224 ::serde_json::Value::String(String::new()),
225 );
226 obj.insert("iterations".to_string(), ::serde_json::json!(0));
227 ::serde_json::Value::Object(obj)
228}