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