Skip to main content

crabka_protocol/opt/rustwide/workdir/generated/
UserScramCredentialRecord.owned.rs

1// AUTO-GENERATED by crabka-protocol-codegen against a9ce3221537b8653448750697915607dc7936cf3. Do not edit.
2
3use 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/// Default JSON payload matching `Self::default()` for JVM oracle differential testing.
200/// Only includes fields valid for the given version.
201#[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}