From 63805293ff58271f3228e3fa357b732f235a14d2 Mon Sep 17 00:00:00 2001 From: Carson McManus Date: Sun, 3 Dec 2023 10:14:59 -0500 Subject: [PATCH] update steam protobufs (#347) --- steamguard/protobufs/custom.proto | 2 - steamguard/protobufs/enums.proto | 142 +++++++++++++++++- steamguard/protobufs/service_twofactor.proto | 25 ++- .../steammessages_auth.steamclient.proto | 24 +++ steamguard/protobufs/steammessages_base.proto | 21 +++ .../steammessages_clientserver_login.proto | 2 +- steamguard/src/steamapi/twofactor.rs | 1 - 7 files changed, 191 insertions(+), 26 deletions(-) diff --git a/steamguard/protobufs/custom.proto b/steamguard/protobufs/custom.proto index cd08f68..4323e29 100644 --- a/steamguard/protobufs/custom.proto +++ b/steamguard/protobufs/custom.proto @@ -19,5 +19,3 @@ message CAuthentication_BeginAuthSessionViaCredentials_Request_BinaryGuardData { optional uint32 language = 11; optional int32 qos_level = 12 [default = 2, (description) = "[ENetQOSLevel] client-specified priority for this auth attempt"]; } - -message CTwoFactor_Time_Request {} diff --git a/steamguard/protobufs/enums.proto b/steamguard/protobufs/enums.proto index f7e1f01..ba826ae 100644 --- a/steamguard/protobufs/enums.proto +++ b/steamguard/protobufs/enums.proto @@ -59,9 +59,10 @@ enum EPersonaStateFlag { enum EContentCheckProvider { k_EContentCheckProvider_Invalid = 0; - k_EContentCheckProvider_Google = 1; + k_EContentCheckProvider_Google_DEPRECATED = 1; k_EContentCheckProvider_Amazon = 2; k_EContentCheckProvider_Local = 3; + k_EContentCheckProvider_GoogleVertexAI = 4; } enum EProfileCustomizationType { @@ -89,6 +90,7 @@ enum EProfileCustomizationType { k_EProfileCustomizationTypeLoyaltyRewardReactions = 21; k_EProfileCustomizationTypeSingleArtworkShowcase = 22; k_EProfileCustomizationTypeAchievementsCompletionist = 23; + k_EProfileCustomizationTypeReplay = 24; } enum EPublishedFileStorageSystem { @@ -113,17 +115,32 @@ enum ESDCardFormatStage { k_ESDCardFormatStage_Finalizing = 5; } +enum EStorageFormatStage { + k_EStorageFormatStage_Invalid = 0; + k_EStorageFormatStage_NotRunning = 1; + k_EStorageFormatStage_Starting = 2; + k_EStorageFormatStage_Testing = 3; + k_EStorageFormatStage_Rescuing = 4; + k_EStorageFormatStage_Formatting = 5; + k_EStorageFormatStage_Finalizing = 6; +} + enum ESystemFanControlMode { k_SystemFanControlMode_Invalid = 0; k_SystemFanControlMode_Disabled = 1; k_SystemFanControlMode_Default = 2; } -enum EColorProfile { - k_EColorProfile_Invalid = 0; - k_EColorProfile_Native = 1; - k_EColorProfile_Standard = 2; - k_EColorProfile_Vivid = 3; +enum EStartupMovieVariant { + k_EStartupMovieVariant_Invalid = 0; + k_EStartupMovieVariant_Default = 1; + k_EStartupMovieVariant_Orange = 2; +} + +enum EColorGamutLabelSet { + k_ColorGamutLabelSet_Default = 0; + k_ColorGamutLabelSet_sRGB_Native = 1; + k_ColorGamutLabelSet_Native_sRGB_Boosted = 2; } enum EBluetoothDeviceType { @@ -206,6 +223,52 @@ enum EScalingFilter { k_EScalingFilter_NIS = 5; } +enum ESplitScalingFilter { + k_ESplitScalingFilter_Invalid = 0; + k_ESplitScalingFilter_Linear = 1; + k_ESplitScalingFilter_Nearest = 2; + k_ESplitScalingFilter_FSR = 3; + k_ESplitScalingFilter_NIS = 4; +} + +enum ESplitScalingScaler { + k_ESplitScalingScaler_Invalid = 0; + k_ESplitScalingScaler_Auto = 1; + k_ESplitScalingScaler_Integer = 2; + k_ESplitScalingScaler_Fit = 3; + k_ESplitScalingScaler_Fill = 4; + k_ESplitScalingScaler_Stretch = 5; +} + +enum EGamescopeBlurMode { + k_EGamescopeBlurMode_Disabled = 0; + k_EGamescopeBlurMode_IfOccluded = 1; + k_EGamescopeBlurMode_Always = 2; +} + +enum ESLSHelper { + k_ESLSHelper_Invalid = 0; + k_ESLSHelper_Minidump = 1; + k_ESLSHelper_Kdump = 2; + k_ESLSHelper_Journal = 3; + k_ESLSHelper_Gpu = 4; + k_ESLSHelper_SystemInfo = 5; +} + +enum EHDRVisualization { + k_EHDRVisualization_None = 0; + k_EHDRVisualization_Heatmap = 1; + k_EHDRVisualization_Analysis = 2; + k_EHDRVisualization_HeatmapExtended = 3; + k_EHDRVisualization_HeatmapClassic = 4; +} + +enum EHDRToneMapOperator { + k_EHDRToneMapOperator_Invalid = 0; + k_EHDRToneMapOperator_Uncharted = 1; + k_EHDRToneMapOperator_Reinhard = 2; +} + enum ECPUGovernor { k_ECPUGovernor_Invalid = 0; k_ECPUGovernor_Perf = 1; @@ -249,6 +312,20 @@ enum EStorageBlockFileSystemType { k_EStorageBlockFileSystemType_Ext4 = 3; } +enum EStorageDriveMediaType { + k_EStorageDriveMediaType_Invalid = 0; + k_EStorageDriveMediaType_Unknown = 1; + k_EStorageDriveMediaType_HDD = 2; + k_EStorageDriveMediaType_SSD = 3; + k_EStorageDriveMediaType_Removable = 4; +} + +enum ESystemDisplayCompatibilityMode { + k_ESystemDisplayCompatibilityMode_Invalid = 0; + k_ESystemDisplayCompatibilityMode_None = 1; + k_ESystemDisplayCompatibilityMode_MinimalBandwith = 2; +} + enum ESteamDeckCompatibilityCategory { k_ESteamDeckCompatibilityCategory_Unknown = 0; k_ESteamDeckCompatibilityCategory_Unsupported = 1; @@ -285,6 +362,7 @@ enum EOSBranch { k_EOSBranch_Beta = 3; k_EOSBranch_BetaCandidate = 4; k_EOSBranch_Main = 5; + k_EOSBranch_Staging = 6; } enum ECommunityItemClass { @@ -305,6 +383,7 @@ enum ECommunityItemClass { k_ECommunityItemClass_AvatarFrame = 14; k_ECommunityItemClass_AnimatedAvatar = 15; k_ECommunityItemClass_SteamDeckKeyboardSkin = 16; + k_ECommunityItemClass_SteamDeckStartupMovie = 17; } enum ESteamDeckCompatibilityFeedback { @@ -342,3 +421,54 @@ enum ESessionPersistence { k_ESessionPersistence_Ephemeral = 0; k_ESessionPersistence_Persistent = 1; } + +enum ENewSteamAnnouncementState { + k_ENewSteamAnnouncementState_Invalid = 0; + k_ENewSteamAnnouncementState_AllRead = 1; + k_ENewSteamAnnouncementState_NewAnnouncement = 2; + k_ENewSteamAnnouncementState_FeaturedAnnouncement = 3; +} + +enum ECommentThreadType { + k_ECommentThreadTypeInvalid = 0; + k_ECommentThreadTypeScreenshot_Deprecated = 1; + k_ECommentThreadTypeWorkshopAccount_Developer = 2; + k_ECommentThreadTypeWorkshopAccount_Public = 3; + k_ECommentThreadTypePublishedFile_Developer = 4; + k_ECommentThreadTypePublishedFile_Public = 5; + k_ECommentThreadTypeTest = 6; + k_ECommentThreadTypeForumTopic = 7; + k_ECommentThreadTypeRecommendation = 8; + k_ECommentThreadTypeVideo_Deprecated = 9; + k_ECommentThreadTypeProfile = 10; + k_ECommentThreadTypeNewsPost = 11; + k_ECommentThreadTypeClan = 12; + k_ECommentThreadTypeClanAnnouncement = 13; + k_ECommentThreadTypeClanEvent = 14; + k_ECommentThreadTypeUserStatusPublished = 15; + k_ECommentThreadTypeUserReceivedNewGame = 16; + k_ECommentThreadTypePublishedFile_Announcement = 17; + k_ECommentThreadTypeModeratorMessage = 18; + k_ECommentThreadTypeClanCuratedApp = 19; + k_ECommentThreadTypeQAndASession = 20; + k_ECommentThreadTypeMax = 21; +} + +enum EBroadcastPermission { + k_EBroadcastPermissionDisabled = 0; + k_EBroadcastPermissionFriendsApprove = 1; + k_EBroadcastPermissionFriendsAllowed = 2; + k_EBroadcastPermissionPublic = 3; + k_EBroadcastPermissionSubscribers = 4; +} + +enum EBroadcastEncoderSetting { + k_EBroadcastEncoderBestQuality = 0; + k_EBroadcastEncoderBestPerformance = 1; +} + +enum ECloudGamingPlatform { + k_ECloudGamingPlatformNone = 0; + k_ECloudGamingPlatformValve = 1; + k_ECloudGamingPlatformNVIDIA = 2; +} \ No newline at end of file diff --git a/steamguard/protobufs/service_twofactor.proto b/steamguard/protobufs/service_twofactor.proto index 02516b4..72eb71a 100644 --- a/steamguard/protobufs/service_twofactor.proto +++ b/steamguard/protobufs/service_twofactor.proto @@ -38,20 +38,13 @@ message CTwoFactor_AddAuthenticator_Response { optional bytes secret_1 = 9; optional int32 status = 10; optional string phone_number_hint = 11; -} - -message CTwoFactor_CreateEmergencyCodes_Request { - optional string code = 1; + optional int32 confirm_type = 12; } message CTwoFactor_CreateEmergencyCodes_Response { repeated string codes = 1; } -message CTwoFactor_DestroyEmergencyCodes_Request { - optional fixed64 steamid = 1; -} - message CTwoFactor_DestroyEmergencyCodes_Response { } @@ -132,6 +125,10 @@ message CTwoFactor_Status_Response { optional uint32 version = 14; } +message CTwoFactor_Time_Request { + optional uint64 sender_time = 1; +} + message CTwoFactor_Time_Response { optional uint64 server_time = 1; optional uint64 skew_tolerance_seconds = 2; @@ -153,25 +150,21 @@ message CTwoFactor_UpdateTokenVersion_Request { message CTwoFactor_UpdateTokenVersion_Response { } -message CTwoFactor_ValidateToken_Request { - optional string code = 1; -} - message CTwoFactor_ValidateToken_Response { optional bool valid = 1; } service TwoFactor { rpc AddAuthenticator (.CTwoFactor_AddAuthenticator_Request) returns (.CTwoFactor_AddAuthenticator_Response); - rpc CreateEmergencyCodes (.CTwoFactor_CreateEmergencyCodes_Request) returns (.CTwoFactor_CreateEmergencyCodes_Response); - rpc DestroyEmergencyCodes (.CTwoFactor_DestroyEmergencyCodes_Request) returns (.CTwoFactor_DestroyEmergencyCodes_Response); + rpc CreateEmergencyCodes (.NotImplemented) returns (.CTwoFactor_CreateEmergencyCodes_Response); + rpc DestroyEmergencyCodes (.NotImplemented) returns (.CTwoFactor_DestroyEmergencyCodes_Response); rpc FinalizeAddAuthenticator (.CTwoFactor_FinalizeAddAuthenticator_Request) returns (.CTwoFactor_FinalizeAddAuthenticator_Response); rpc QueryStatus (.CTwoFactor_Status_Request) returns (.CTwoFactor_Status_Response); - rpc QueryTime (.NotImplemented) returns (.CTwoFactor_Time_Response); + rpc QueryTime (.CTwoFactor_Time_Request) returns (.CTwoFactor_Time_Response); rpc RemoveAuthenticator (.CTwoFactor_RemoveAuthenticator_Request) returns (.CTwoFactor_RemoveAuthenticator_Response); rpc RemoveAuthenticatorViaChallengeContinue (.CTwoFactor_RemoveAuthenticatorViaChallengeContinue_Request) returns (.CTwoFactor_RemoveAuthenticatorViaChallengeContinue_Response); rpc RemoveAuthenticatorViaChallengeStart (.CTwoFactor_RemoveAuthenticatorViaChallengeStart_Request) returns (.CTwoFactor_RemoveAuthenticatorViaChallengeStart_Response); rpc SendEmail (.CTwoFactor_SendEmail_Request) returns (.CTwoFactor_SendEmail_Response); rpc UpdateTokenVersion (.CTwoFactor_UpdateTokenVersion_Request) returns (.CTwoFactor_UpdateTokenVersion_Response); - rpc ValidateToken (.CTwoFactor_ValidateToken_Request) returns (.CTwoFactor_ValidateToken_Response); + rpc ValidateToken (.NotImplemented) returns (.CTwoFactor_ValidateToken_Response); } diff --git a/steamguard/protobufs/steammessages_auth.steamclient.proto b/steamguard/protobufs/steammessages_auth.steamclient.proto index f39bf91..6cd1e46 100644 --- a/steamguard/protobufs/steammessages_auth.steamclient.proto +++ b/steamguard/protobufs/steammessages_auth.steamclient.proto @@ -28,12 +28,20 @@ enum EAuthSessionSecurityHistory { k_EAuthSessionSecurityHistory_NoPriorHistory = 2; } +enum ETokenRenewalType { + k_ETokenRenewalType_None = 0; + k_ETokenRenewalType_Allow = 1; +} + enum EAuthTokenRevokeAction { k_EAuthTokenRevokeLogout = 0; k_EAuthTokenRevokePermanent = 1; k_EAuthTokenRevokeReplaced = 2; k_EAuthTokenRevokeSupport = 3; k_EAuthTokenRevokeConsume = 4; + k_EAuthTokenRevokeNonRememberedLogout = 5; + k_EAuthTokenRevokeNonRememberedPermanent = 6; + k_EAuthTokenRevokeAutomatic = 7; } enum EAuthTokenState { @@ -62,6 +70,8 @@ message CAuthentication_DeviceDetails { optional .EAuthTokenPlatformType platform_type = 2 [default = k_EAuthTokenPlatformType_Unknown, (description) = "EAuthTokenPlatformType, claimed, of device"]; optional int32 os_type = 3 [(description) = "EOSType, claimed, of authorized device"]; optional uint32 gaming_device_type = 4 [(description) = "EGamingDeviceType, claimed, of authorized device for steam client-type devices"]; + optional uint32 client_count = 5 [(description) = "For desktop clients, quantized number of users in history"]; + optional bytes machine_id = 6 [(description) = "Additional device context"]; } message CAuthentication_BeginAuthSessionViaQR_Request { @@ -173,10 +183,12 @@ message CAuthentication_UpdateAuthSessionWithSteamGuardCode_Response { message CAuthentication_AccessToken_GenerateForApp_Request { optional string refresh_token = 1; optional fixed64 steamid = 2; + optional .ETokenRenewalType renewal_type = 3 [default = k_ETokenRenewalType_None]; } message CAuthentication_AccessToken_GenerateForApp_Response { optional string access_token = 1; + optional string refresh_token = 2; } message CAuthentication_RefreshToken_Enumerate_Request { @@ -228,6 +240,14 @@ message CAuthentication_MigrateMobileSession_Response { optional string access_token = 2; } +message CAuthentication_Token_Revoke_Request { + optional string token = 1; + optional .EAuthTokenRevokeAction revoke_action = 2 [default = k_EAuthTokenRevokePermanent, (description) = "Select between logout and logout-and-forget-machine"]; +} + +message CAuthentication_Token_Revoke_Response { +} + message CAuthentication_RefreshToken_Revoke_Request { optional fixed64 token_id = 1; optional fixed64 steamid = 2 [(description) = "Token holder if an admin action on behalf of another user"]; @@ -373,6 +393,10 @@ service Authentication { option (method_description) = "Migrates a WG token to an access and refresh token using a signature generated with the user's 2FA secret"; } + rpc RevokeToken (.CAuthentication_Token_Revoke_Request) returns (.CAuthentication_Token_Revoke_Response) { + option (method_description) = "Revoke a single token immediately, making it unable to renew or generate new access tokens"; + } + rpc RevokeRefreshToken (.CAuthentication_RefreshToken_Revoke_Request) returns (.CAuthentication_RefreshToken_Revoke_Response) { option (method_description) = "Mark the given refresh token as revoked"; } diff --git a/steamguard/protobufs/steammessages_base.proto b/steamguard/protobufs/steammessages_base.proto index d64ce8a..e1d8f47 100644 --- a/steamguard/protobufs/steammessages_base.proto +++ b/steamguard/protobufs/steammessages_base.proto @@ -92,6 +92,11 @@ message CMsgGCRoutingProtoBufHeader { } message CMsgProtoBufHeader { + enum ESessionDisposition { + k_ESessionDispositionNormal = 0; + k_ESessionDispositionDisconnect = 1; + } + optional fixed64 steamid = 1; optional int32 client_sessionid = 2; optional uint32 routing_appid = 3; @@ -120,6 +125,10 @@ message CMsgProtoBufHeader { optional uint32 debug_source_string_index = 35; optional uint64 token_id = 36; optional .CMsgGCRoutingProtoBufHeader routing_gc = 37; + optional .CMsgProtoBufHeader.ESessionDisposition session_disposition = 38 [default = k_ESessionDispositionNormal]; + optional string wg_token = 39; + optional string webui_auth_key = 40; + repeated int32 exclude_client_sessionids = 41; oneof ip_addr { uint32 ip = 15; @@ -145,6 +154,7 @@ message CMsgAuthTicket { optional uint32 ticket_crc = 6; optional bytes ticket = 7; optional bytes server_secret = 8; + optional uint32 ticket_type = 9; } message CCDDBAppDetailCommon { @@ -302,6 +312,8 @@ message CPackageReservationStatus { optional bool expired = 6; optional uint32 time_expires = 7; optional uint32 time_reserved = 8; + optional uint32 rtime_estimated_notification = 9; + optional string notificaton_token = 10; } message CMsgKeyValuePair { @@ -312,3 +324,12 @@ message CMsgKeyValuePair { message CMsgKeyValueSet { repeated .CMsgKeyValuePair pairs = 1; } + +message UserContentDescriptorPreferences { + message ContentDescriptor { + optional uint32 content_descriptorid = 1; + optional uint32 timestamp_added = 2; + } + + repeated .UserContentDescriptorPreferences.ContentDescriptor content_descriptors_to_exclude = 1; +} diff --git a/steamguard/protobufs/steammessages_clientserver_login.proto b/steamguard/protobufs/steammessages_clientserver_login.proto index f68ad76..69cd6f3 100644 --- a/steamguard/protobufs/steammessages_clientserver_login.proto +++ b/steamguard/protobufs/steammessages_clientserver_login.proto @@ -99,11 +99,11 @@ message CMsgClientLogonResponse { optional string email_domain = 8; optional bytes steam2_ticket = 9; optional int32 eresult_extended = 10; - optional string webapi_authenticate_user_nonce = 11; optional uint32 cell_id_ping_threshold = 12; optional bool deprecated_use_pics = 13; optional string vanity_url = 14; optional .CMsgIPAddress public_ip = 15; + optional string user_country = 16; optional fixed64 client_supplied_steamid = 20; optional string ip_country_code = 21; optional bytes parental_settings = 22; diff --git a/steamguard/src/steamapi/twofactor.rs b/steamguard/src/steamapi/twofactor.rs index ed38197..51b0474 100644 --- a/steamguard/src/steamapi/twofactor.rs +++ b/steamguard/src/steamapi/twofactor.rs @@ -3,7 +3,6 @@ use crate::transport::{Transport, TransportError}; use super::{ApiRequest, ApiResponse, BuildableRequest}; -use crate::protobufs::custom::CTwoFactor_Time_Request; use crate::protobufs::service_twofactor::*; const SERVICE_NAME: &str = "ITwoFactorService";