Skip to main content

steam_protos/messages/
auth.rs

1//! Authentication protobuf messages for steam-session
2
3use prost::Message;
4
5#[allow(unused_imports)]
6pub use crate::enums::EAuthTokenRevokeAction;
7use crate::{
8    enums::{EAuthSessionGuardType, EAuthSessionSecurityHistory, EAuthTokenAppType, EAuthTokenPlatformType, EAuthTokenState, EAuthenticationType, ESessionPersistence, ETokenRenewalType},
9    messages::base::CMsgIPAddress,
10};
11
12/// Get password RSA public key request
13#[derive(Clone, PartialEq, Message)]
14pub struct CAuthenticationGetPasswordRSAPublicKeyRequest {
15    #[prost(string, optional, tag = "1")]
16    pub account_name: Option<String>,
17}
18
19/// Get password RSA public key response
20#[derive(Clone, PartialEq, Message)]
21pub struct CAuthenticationGetPasswordRSAPublicKeyResponse {
22    #[prost(string, optional, tag = "1")]
23    pub publickey_mod: Option<String>,
24    #[prost(string, optional, tag = "2")]
25    pub publickey_exp: Option<String>,
26    #[prost(uint64, optional, tag = "3")]
27    pub timestamp: Option<u64>,
28}
29
30/// Device details for authentication
31#[derive(Clone, PartialEq, Message)]
32pub struct CAuthenticationDeviceDetails {
33    #[prost(string, optional, tag = "1")]
34    pub device_friendly_name: Option<String>,
35    #[prost(enumeration = "EAuthTokenPlatformType", optional, tag = "2")]
36    pub platform_type: Option<i32>,
37    #[prost(int32, optional, tag = "3")]
38    pub os_type: Option<i32>,
39    #[prost(uint32, optional, tag = "4")]
40    pub gaming_device_type: Option<u32>,
41    #[prost(uint32, optional, tag = "5")]
42    pub client_count: Option<u32>,
43    #[prost(bytes = "vec", optional, tag = "6")]
44    pub machine_id: Option<Vec<u8>>,
45    #[prost(enumeration = "EAuthTokenAppType", optional, tag = "7")]
46    pub app_type: Option<i32>,
47}
48
49/// Begin auth session via QR request
50#[derive(Clone, PartialEq, Message)]
51pub struct CAuthenticationBeginAuthSessionViaQRRequest {
52    #[prost(string, optional, tag = "1")]
53    pub device_friendly_name: Option<String>,
54    #[prost(enumeration = "EAuthTokenPlatformType", optional, tag = "2")]
55    pub platform_type: Option<i32>,
56    #[prost(message, optional, tag = "3")]
57    pub device_details: Option<CAuthenticationDeviceDetails>,
58    #[prost(string, optional, tag = "4")]
59    pub website_id: Option<String>,
60}
61
62/// Begin auth session via QR response
63#[derive(Clone, PartialEq, Message)]
64pub struct CAuthenticationBeginAuthSessionViaQRResponse {
65    #[prost(uint64, optional, tag = "1")]
66    pub client_id: Option<u64>,
67    #[prost(string, optional, tag = "2")]
68    pub challenge_url: Option<String>,
69    #[prost(bytes = "vec", optional, tag = "3")]
70    pub request_id: Option<Vec<u8>>,
71    #[prost(float, optional, tag = "4")]
72    pub interval: Option<f32>,
73    #[prost(message, repeated, tag = "5")]
74    pub allowed_confirmations: Vec<CAuthenticationAllowedConfirmation>,
75    #[prost(int32, optional, tag = "6")]
76    pub version: Option<i32>,
77}
78
79/// Allowed confirmation method
80#[derive(Clone, PartialEq, Message)]
81pub struct CAuthenticationAllowedConfirmation {
82    #[prost(enumeration = "EAuthSessionGuardType", optional, tag = "1")]
83    pub confirmation_type: Option<i32>,
84    #[prost(string, optional, tag = "2")]
85    pub associated_message: Option<String>,
86}
87
88/// Begin auth session via credentials request
89#[derive(Clone, PartialEq, Message)]
90pub struct CAuthenticationBeginAuthSessionViaCredentialsRequest {
91    #[prost(string, optional, tag = "1")]
92    pub device_friendly_name: Option<String>,
93    #[prost(string, optional, tag = "2")]
94    pub account_name: Option<String>,
95    #[prost(string, optional, tag = "3")]
96    pub encrypted_password: Option<String>,
97    #[prost(uint64, optional, tag = "4")]
98    pub encryption_timestamp: Option<u64>,
99    #[prost(bool, optional, tag = "5")]
100    pub remember_login: Option<bool>,
101    #[prost(enumeration = "EAuthTokenPlatformType", optional, tag = "6")]
102    pub platform_type: Option<i32>,
103    #[prost(enumeration = "ESessionPersistence", optional, tag = "7")]
104    pub persistence: Option<i32>,
105    #[prost(string, optional, tag = "8")]
106    pub website_id: Option<String>,
107    #[prost(message, optional, tag = "9")]
108    pub device_details: Option<CAuthenticationDeviceDetails>,
109    #[prost(string, optional, tag = "10")]
110    pub guard_data: Option<String>,
111    #[prost(uint32, optional, tag = "11")]
112    pub language: Option<u32>,
113    #[prost(int32, optional, tag = "12")]
114    pub qos_level: Option<i32>,
115}
116
117/// Begin auth session via credentials response
118#[derive(Clone, PartialEq, Message)]
119pub struct CAuthenticationBeginAuthSessionViaCredentialsResponse {
120    #[prost(uint64, optional, tag = "1")]
121    pub client_id: Option<u64>,
122    #[prost(bytes = "vec", optional, tag = "2")]
123    pub request_id: Option<Vec<u8>>,
124    #[prost(float, optional, tag = "3")]
125    pub interval: Option<f32>,
126    #[prost(message, repeated, tag = "4")]
127    pub allowed_confirmations: Vec<CAuthenticationAllowedConfirmation>,
128    #[prost(uint64, optional, tag = "5")]
129    pub steamid: Option<u64>,
130    #[prost(string, optional, tag = "6")]
131    pub weak_token: Option<String>,
132    #[prost(string, optional, tag = "7")]
133    pub agreement_session_url: Option<String>,
134    #[prost(string, optional, tag = "8")]
135    pub extended_error_message: Option<String>,
136}
137
138/// Poll auth session status request
139#[derive(Clone, PartialEq, Message)]
140pub struct CAuthenticationPollAuthSessionStatusRequest {
141    #[prost(uint64, optional, tag = "1")]
142    pub client_id: Option<u64>,
143    #[prost(bytes = "vec", optional, tag = "2")]
144    pub request_id: Option<Vec<u8>>,
145    #[prost(fixed64, optional, tag = "3")]
146    pub token_to_revoke: Option<u64>,
147}
148
149/// Poll auth session status response
150#[derive(Clone, PartialEq, Message)]
151pub struct CAuthenticationPollAuthSessionStatusResponse {
152    #[prost(uint64, optional, tag = "1")]
153    pub new_client_id: Option<u64>,
154    #[prost(string, optional, tag = "2")]
155    pub new_challenge_url: Option<String>,
156    #[prost(string, optional, tag = "3")]
157    pub refresh_token: Option<String>,
158    #[prost(string, optional, tag = "4")]
159    pub access_token: Option<String>,
160    #[prost(bool, optional, tag = "5")]
161    pub had_remote_interaction: Option<bool>,
162    #[prost(string, optional, tag = "6")]
163    pub account_name: Option<String>,
164    #[prost(string, optional, tag = "7")]
165    pub new_guard_data: Option<String>,
166    #[prost(string, optional, tag = "8")]
167    pub agreement_session_url: Option<String>,
168}
169
170/// Get auth session info request
171#[derive(Clone, PartialEq, Message)]
172pub struct CAuthenticationGetAuthSessionInfoRequest {
173    #[prost(uint64, optional, tag = "1")]
174    pub client_id: Option<u64>,
175}
176
177/// Get auth session info response
178#[derive(Clone, PartialEq, Message)]
179pub struct CAuthenticationGetAuthSessionInfoResponse {
180    #[prost(string, optional, tag = "1")]
181    pub ip: Option<String>,
182    #[prost(string, optional, tag = "2")]
183    pub geoloc: Option<String>,
184    #[prost(string, optional, tag = "3")]
185    pub city: Option<String>,
186    #[prost(string, optional, tag = "4")]
187    pub state: Option<String>,
188    #[prost(string, optional, tag = "5")]
189    pub country: Option<String>,
190    #[prost(enumeration = "EAuthTokenPlatformType", optional, tag = "6")]
191    pub platform_type: Option<i32>,
192    #[prost(string, optional, tag = "7")]
193    pub device_friendly_name: Option<String>,
194    #[prost(int32, optional, tag = "8")]
195    pub version: Option<i32>,
196    #[prost(enumeration = "EAuthSessionSecurityHistory", optional, tag = "9")]
197    pub login_history: Option<i32>,
198    #[prost(bool, optional, tag = "10")]
199    pub requestor_location_mismatch: Option<bool>,
200    #[prost(bool, optional, tag = "11")]
201    pub high_usage_login: Option<bool>,
202    #[prost(enumeration = "ESessionPersistence", optional, tag = "12")]
203    pub requested_persistence: Option<i32>,
204    #[prost(int32, optional, tag = "13")]
205    pub device_trust: Option<i32>,
206    #[prost(enumeration = "EAuthTokenAppType", optional, tag = "14")]
207    pub app_type: Option<i32>,
208}
209
210/// Update auth session with mobile confirmation request
211#[derive(Clone, PartialEq, Message)]
212pub struct CAuthenticationUpdateAuthSessionWithMobileConfirmationRequest {
213    #[prost(int32, optional, tag = "1")]
214    pub version: Option<i32>,
215    #[prost(uint64, optional, tag = "2")]
216    pub client_id: Option<u64>,
217    #[prost(fixed64, optional, tag = "3")]
218    pub steamid: Option<u64>,
219    #[prost(bytes = "vec", optional, tag = "4")]
220    pub signature: Option<Vec<u8>>,
221    #[prost(bool, optional, tag = "5")]
222    pub confirm: Option<bool>,
223    #[prost(enumeration = "ESessionPersistence", optional, tag = "6")]
224    pub persistence: Option<i32>,
225}
226
227/// Update auth session with mobile confirmation response
228#[derive(Clone, PartialEq, Message)]
229pub struct CAuthenticationUpdateAuthSessionWithMobileConfirmationResponse {}
230
231/// Update auth session with Steam Guard code request
232#[derive(Clone, PartialEq, Message)]
233pub struct CAuthenticationUpdateAuthSessionWithSteamGuardCodeRequest {
234    #[prost(uint64, optional, tag = "1")]
235    pub client_id: Option<u64>,
236    #[prost(fixed64, optional, tag = "2")]
237    pub steamid: Option<u64>,
238    #[prost(string, optional, tag = "3")]
239    pub code: Option<String>,
240    #[prost(enumeration = "EAuthSessionGuardType", optional, tag = "4")]
241    pub code_type: Option<i32>,
242}
243
244/// Update auth session with Steam Guard code response
245#[derive(Clone, PartialEq, Message)]
246pub struct CAuthenticationUpdateAuthSessionWithSteamGuardCodeResponse {
247    #[prost(string, optional, tag = "7")]
248    pub agreement_session_url: Option<String>,
249}
250
251/// Generate access token for app request
252#[derive(Clone, PartialEq, Message)]
253pub struct CAuthenticationAccessTokenGenerateForAppRequest {
254    #[prost(string, optional, tag = "1")]
255    pub refresh_token: Option<String>,
256    #[prost(fixed64, optional, tag = "2")]
257    pub steamid: Option<u64>,
258    #[prost(enumeration = "ETokenRenewalType", optional, tag = "3")]
259    pub renewal_type: Option<i32>,
260}
261
262/// Generate access token for app response
263#[derive(Clone, PartialEq, Message)]
264pub struct CAuthenticationAccessTokenGenerateForAppResponse {
265    #[prost(string, optional, tag = "1")]
266    pub access_token: Option<String>,
267    #[prost(string, optional, tag = "2")]
268    pub refresh_token: Option<String>,
269}
270
271/// Enumerate refresh tokens request
272#[derive(Clone, PartialEq, Message)]
273#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
274#[cfg_attr(feature = "serde", serde(default))]
275pub struct CAuthenticationRefreshTokenEnumerateRequest {
276    #[prost(bool, optional, tag = "1")]
277    pub include_revoked: Option<bool>,
278}
279
280/// Event information for token usage
281#[derive(Clone, PartialEq, Message)]
282#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
283#[cfg_attr(feature = "serde", serde(default))]
284pub struct TokenUsageEvent {
285    #[prost(uint32, optional, tag = "1")]
286    pub time: Option<u32>,
287    #[prost(message, optional, tag = "2")]
288    pub ip: Option<CMsgIPAddress>,
289    #[prost(string, optional, tag = "3")]
290    pub locale: Option<String>,
291    #[prost(string, optional, tag = "4")]
292    pub country: Option<String>,
293    #[prost(string, optional, tag = "5")]
294    pub state: Option<String>,
295    #[prost(string, optional, tag = "6")]
296    pub city: Option<String>,
297}
298
299/// Refresh token description
300#[derive(Clone, PartialEq, Message)]
301#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
302#[cfg_attr(feature = "serde", serde(default))]
303pub struct RefreshTokenDescription {
304    #[prost(fixed64, optional, tag = "1")]
305    pub token_id: Option<u64>,
306    #[prost(string, optional, tag = "2")]
307    pub token_description: Option<String>,
308    #[prost(uint32, optional, tag = "3")]
309    pub time_updated: Option<u32>,
310    #[prost(enumeration = "EAuthTokenPlatformType", optional, tag = "4")]
311    pub platform_type: Option<i32>,
312    #[prost(bool, optional, tag = "5")]
313    pub logged_in: Option<bool>,
314    #[prost(uint32, optional, tag = "6")]
315    pub os_platform: Option<u32>,
316    #[prost(uint32, optional, tag = "7")]
317    pub auth_type: Option<u32>,
318    #[prost(uint32, optional, tag = "8")]
319    pub gaming_device_type: Option<u32>,
320    #[prost(message, optional, tag = "9")]
321    pub first_seen: Option<TokenUsageEvent>,
322    #[prost(message, optional, tag = "10")]
323    pub last_seen: Option<TokenUsageEvent>,
324    #[prost(int32, optional, tag = "11")]
325    pub os_type: Option<i32>,
326    #[prost(enumeration = "EAuthenticationType", optional, tag = "12")]
327    pub authentication_type: Option<i32>,
328    #[prost(enumeration = "EAuthTokenState", optional, tag = "13")]
329    pub effective_token_state: Option<i32>,
330}
331
332/// Enumerate refresh tokens response
333#[derive(Clone, PartialEq, Message)]
334#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
335#[cfg_attr(feature = "serde", serde(default))]
336pub struct CAuthenticationRefreshTokenEnumerateResponse {
337    #[prost(message, repeated, tag = "1")]
338    pub refresh_tokens: Vec<RefreshTokenDescription>,
339    #[prost(fixed64, optional, tag = "2")]
340    pub requesting_token: Option<u64>,
341}
342
343/// Refresh token revoke request
344#[derive(Clone, PartialEq, Message)]
345pub struct CAuthenticationRefreshTokenRevokeRequest {
346    #[prost(fixed64, optional, tag = "1")]
347    pub token_id: Option<u64>,
348    #[prost(fixed64, optional, tag = "2")]
349    pub steamid: Option<u64>,
350    #[prost(enumeration = "EAuthTokenRevokeAction", optional, tag = "3")]
351    pub revoke_action: Option<i32>,
352    #[prost(bytes = "vec", optional, tag = "4")]
353    pub signature: Option<Vec<u8>>,
354}
355
356/// Refresh token revoke response
357#[derive(Clone, PartialEq, Message)]
358pub struct CAuthenticationRefreshTokenRevokeResponse {}