Skip to main content

steam_protos/messages/
login.rs

1//! Login-related protobuf messages
2
3use prost::Message;
4
5use super::base::CMsgIPAddress;
6
7/// Client heartbeat message
8#[derive(Clone, PartialEq, Message)]
9pub struct CMsgClientHeartBeat {
10    #[prost(bool, optional, tag = "1")]
11    pub send_reply: Option<bool>,
12}
13
14/// Client hello message
15#[derive(Clone, PartialEq, Message)]
16pub struct CMsgClientHello {
17    #[prost(uint32, optional, tag = "1")]
18    pub protocol_version: Option<u32>,
19}
20
21/// Client secret for embedded authentication
22#[derive(Clone, PartialEq, Message)]
23pub struct CMsgClientSecret {
24    #[prost(uint32, optional, tag = "1")]
25    pub version: Option<u32>,
26    #[prost(uint32, optional, tag = "2")]
27    pub appid: Option<u32>,
28    #[prost(uint32, optional, tag = "3")]
29    pub deviceid: Option<u32>,
30    #[prost(fixed64, optional, tag = "4")]
31    pub nonce: Option<u64>,
32    #[prost(bytes = "vec", optional, tag = "5")]
33    pub hmac: Option<Vec<u8>>,
34}
35
36/// Client logon request
37#[derive(Clone, PartialEq, Message)]
38pub struct CMsgClientLogon {
39    #[prost(uint32, optional, tag = "1")]
40    pub protocol_version: Option<u32>,
41    #[prost(uint32, optional, tag = "2")]
42    pub deprecated_obfustucated_private_ip: Option<u32>,
43    #[prost(uint32, optional, tag = "3")]
44    pub cell_id: Option<u32>,
45    #[prost(uint32, optional, tag = "4")]
46    pub last_session_id: Option<u32>,
47    #[prost(uint32, optional, tag = "5")]
48    pub client_package_version: Option<u32>,
49    #[prost(string, optional, tag = "6")]
50    pub client_language: Option<String>,
51    #[prost(uint32, optional, tag = "7")]
52    pub client_os_type: Option<u32>,
53    #[prost(bool, optional, tag = "8")]
54    pub should_remember_password: Option<bool>,
55    #[prost(string, optional, tag = "9")]
56    pub wine_version: Option<String>,
57    #[prost(message, optional, tag = "11")]
58    pub obfuscated_private_ip: Option<CMsgIPAddress>,
59    #[prost(uint32, optional, tag = "21")]
60    pub qos_level: Option<u32>,
61    #[prost(fixed64, optional, tag = "22")]
62    pub client_supplied_steam_id: Option<u64>,
63    #[prost(message, optional, tag = "23")]
64    pub public_ip: Option<CMsgIPAddress>,
65    #[prost(bytes = "vec", optional, tag = "30")]
66    pub machine_id: Option<Vec<u8>>,
67    #[prost(uint32, optional, tag = "31")]
68    pub launcher_type: Option<u32>,
69    #[prost(uint32, optional, tag = "32")]
70    pub ui_mode: Option<u32>,
71    #[prost(uint32, optional, tag = "33")]
72    pub chat_mode: Option<u32>,
73    #[prost(bytes = "vec", optional, tag = "41")]
74    pub steam2_auth_ticket: Option<Vec<u8>>,
75    #[prost(string, optional, tag = "42")]
76    pub email_address: Option<String>,
77    #[prost(fixed32, optional, tag = "43")]
78    pub rtime32_account_creation: Option<u32>,
79    #[prost(string, optional, tag = "50")]
80    pub account_name: Option<String>,
81    #[prost(string, optional, tag = "51")]
82    pub password: Option<String>,
83    #[prost(string, optional, tag = "52")]
84    pub game_server_token: Option<String>,
85    #[prost(string, optional, tag = "60")]
86    pub login_key: Option<String>,
87    #[prost(uint32, optional, tag = "66")]
88    pub ping_ms_from_cell_search: Option<u32>,
89    #[prost(string, optional, tag = "80")]
90    pub anon_user_target_account_name: Option<String>,
91    #[prost(fixed64, optional, tag = "81")]
92    pub resolved_user_steam_id: Option<u64>,
93    #[prost(int32, optional, tag = "82")]
94    pub eresult_sentryfile: Option<i32>,
95    #[prost(bytes = "vec", optional, tag = "83")]
96    pub sha_sentryfile: Option<Vec<u8>>,
97    #[prost(string, optional, tag = "84")]
98    pub auth_code: Option<String>,
99    #[prost(int32, optional, tag = "85")]
100    pub otp_type: Option<i32>,
101    #[prost(uint32, optional, tag = "86")]
102    pub otp_value: Option<u32>,
103    #[prost(string, optional, tag = "87")]
104    pub otp_identifier: Option<String>,
105    #[prost(bool, optional, tag = "88")]
106    pub steam2_ticket_request: Option<bool>,
107    #[prost(bytes = "vec", optional, tag = "90")]
108    pub sony_psn_ticket: Option<Vec<u8>>,
109    #[prost(string, optional, tag = "91")]
110    pub sony_psn_service_id: Option<String>,
111    #[prost(bool, optional, tag = "92")]
112    pub create_new_psn_linked_account_if_needed: Option<bool>,
113    #[prost(string, optional, tag = "93")]
114    pub sony_psn_name: Option<String>,
115    #[prost(int32, optional, tag = "94")]
116    pub game_server_app_id: Option<i32>,
117    #[prost(bool, optional, tag = "95")]
118    pub steamguard_dont_remember_computer: Option<bool>,
119    #[prost(string, optional, tag = "96")]
120    pub machine_name: Option<String>,
121    #[prost(string, optional, tag = "97")]
122    pub machine_name_userchosen: Option<String>,
123    #[prost(string, optional, tag = "98")]
124    pub country_override: Option<String>,
125    #[prost(uint64, optional, tag = "100")]
126    pub client_instance_id: Option<u64>,
127    #[prost(string, optional, tag = "101")]
128    pub two_factor_code: Option<String>,
129    #[prost(bool, optional, tag = "102")]
130    pub supports_rate_limit_response: Option<bool>,
131    #[prost(string, optional, tag = "103")]
132    pub web_logon_nonce: Option<String>,
133    #[prost(int32, optional, tag = "104")]
134    pub priority_reason: Option<i32>,
135    #[prost(message, optional, tag = "105")]
136    pub embedded_client_secret: Option<CMsgClientSecret>,
137    #[prost(bool, optional, tag = "106")]
138    pub disable_partner_autogrants: Option<bool>,
139    #[prost(string, optional, tag = "108")]
140    pub access_token: Option<String>,
141    #[prost(bool, optional, tag = "109")]
142    pub is_chrome_os: Option<bool>,
143    #[prost(uint32, optional, tag = "111")]
144    pub gaming_device_type: Option<u32>,
145}
146
147/// Client logon response
148#[derive(Clone, PartialEq, Message)]
149pub struct CMsgClientLogonResponse {
150    #[prost(int32, optional, tag = "1")]
151    pub eresult: Option<i32>,
152    #[prost(int32, optional, tag = "2")]
153    pub legacy_out_of_game_heartbeat_seconds: Option<i32>,
154    #[prost(int32, optional, tag = "3")]
155    pub heartbeat_seconds: Option<i32>,
156    #[prost(fixed32, optional, tag = "5")]
157    pub rtime32_server_time: Option<u32>,
158    #[prost(uint32, optional, tag = "6")]
159    pub account_flags: Option<u32>,
160    #[prost(uint32, optional, tag = "7")]
161    pub cell_id: Option<u32>,
162    #[prost(string, optional, tag = "8")]
163    pub email_domain: Option<String>,
164    #[prost(bytes = "vec", optional, tag = "9")]
165    pub steam2_ticket: Option<Vec<u8>>,
166    #[prost(int32, optional, tag = "10")]
167    pub eresult_extended: Option<i32>,
168    #[prost(uint32, optional, tag = "12")]
169    pub cell_id_ping_threshold: Option<u32>,
170    #[prost(string, optional, tag = "14")]
171    pub vanity_url: Option<String>,
172    #[prost(message, optional, tag = "15")]
173    pub public_ip: Option<CMsgIPAddress>,
174    #[prost(string, optional, tag = "16")]
175    pub user_country: Option<String>,
176    #[prost(fixed64, optional, tag = "20")]
177    pub client_supplied_steamid: Option<u64>,
178    #[prost(string, optional, tag = "21")]
179    pub ip_country_code: Option<String>,
180    #[prost(bytes = "vec", optional, tag = "22")]
181    pub parental_settings: Option<Vec<u8>>,
182    #[prost(bytes = "vec", optional, tag = "23")]
183    pub parental_setting_signature: Option<Vec<u8>>,
184    #[prost(int32, optional, tag = "24")]
185    pub count_loginfailures_to_migrate: Option<i32>,
186    #[prost(int32, optional, tag = "25")]
187    pub count_disconnects_to_migrate: Option<i32>,
188    #[prost(int32, optional, tag = "26")]
189    pub ogs_data_report_time_window: Option<i32>,
190    #[prost(uint64, optional, tag = "27")]
191    pub client_instance_id: Option<u64>,
192    #[prost(bool, optional, tag = "28")]
193    pub force_client_update_check: Option<bool>,
194    #[prost(string, optional, tag = "29")]
195    pub agreement_session_url: Option<String>,
196    #[prost(uint64, optional, tag = "30")]
197    pub token_id: Option<u64>,
198    #[prost(uint64, optional, tag = "31")]
199    pub family_group_id: Option<u64>,
200}
201
202/// Client log off request
203#[derive(Clone, PartialEq, Message)]
204pub struct CMsgClientLogOff {}
205
206/// Client logged off notification
207#[derive(Clone, PartialEq, Message)]
208pub struct CMsgClientLoggedOff {
209    #[prost(int32, optional, tag = "1")]
210    pub eresult: Option<i32>,
211}
212
213/// Client account info
214#[derive(Clone, PartialEq, Message)]
215pub struct CMsgClientAccountInfo {
216    #[prost(string, optional, tag = "1")]
217    pub persona_name: Option<String>,
218    #[prost(string, optional, tag = "2")]
219    pub ip_country: Option<String>,
220    #[prost(uint64, optional, tag = "3")]
221    pub facebook_id: Option<u64>,
222    #[prost(string, optional, tag = "4")]
223    pub facebook_name: Option<String>,
224    #[prost(int32, optional, tag = "5")]
225    pub count_authed_computers: Option<i32>,
226    #[prost(uint32, optional, tag = "7")]
227    pub account_flags: Option<u32>,
228    #[prost(string, optional, tag = "15")]
229    pub steamguard_machine_name_user_chosen: Option<String>,
230    #[prost(bool, optional, tag = "16")]
231    pub is_phone_verified: Option<bool>,
232    #[prost(uint32, optional, tag = "17")]
233    pub two_factor_state: Option<u32>,
234    #[prost(bool, optional, tag = "18")]
235    pub is_phone_identifying: Option<bool>,
236    #[prost(bool, optional, tag = "19")]
237    pub is_phone_needing_reverify: Option<bool>,
238}
239
240/// New login key from server
241#[derive(Clone, PartialEq, Message)]
242pub struct CMsgClientNewLoginKey {
243    #[prost(uint32, optional, tag = "1")]
244    pub unique_id: Option<u32>,
245    #[prost(string, optional, tag = "2")]
246    pub login_key: Option<String>,
247}
248
249/// Login key accepted acknowledgement
250#[derive(Clone, PartialEq, Message)]
251pub struct CMsgClientNewLoginKeyAccepted {
252    #[prost(uint32, optional, tag = "1")]
253    pub unique_id: Option<u32>,
254}
255
256/// Protocol version constant
257pub const PROTOCOL_VERSION: u32 = 65580;
258
259/// Private IP obfuscation mask
260pub const PRIVATE_IP_OBFUSCATION_MASK: u32 = 0xBAADF00D;