Front messages
S2
The protobuf methods and messages StarCraft II uses on Front while signing in.
Every fact on this page comes from one source, so it is all ⚠️ single source until checked against another client or project.
Methods
| Direction |
Service / method |
Message |
Purpose |
| Client → Server |
ConnectionService / 1 |
ConnectRequest |
Opens the RPC session, asking for "bindless" RPC. |
| Client → Server |
AuthenticationServer / 1 |
LogonRequest |
Starts signing in. |
| Server → Client |
ChallengeNotify / 3 |
ChallengeExternalRequest |
Sends the client to Blizzard's web sign-in. No response. |
| Client → Server |
AuthenticationServer / 7 |
VerifyWebCredentialsRequest |
Submits the short-lived credential from the web sign-in. |
| Server → Client |
AuthenticationClient / 5 |
LogonResult |
The result: account, game accounts, region and a 64-byte session key. |
| Server → Client |
AuthenticationClient / 14 |
GameAccountSelectedRequest |
Reports which game account was selected. |
| Client → Server |
AuthenticationServer / 8 |
GenerateWebCredentialsRequest |
Asks for a reusable credential for next time. |
| Client → Server |
GameUtilities / 1 |
ClientRequest |
Asks for the StarCraft II handoff to Sunken. |
AuthenticationClient methods 10 through 14 can arrive as callbacks at any time during sign-in: 10 reports a logon update and 14 the game-account selection. Methods 11 to 13 expect no response.
ConnectRequest
| # |
Field |
Type |
| 1 |
client_id |
ProcessId, optional |
| 2 |
bind_request |
BindRequest, optional |
| 3 |
use_bindless_rpc |
bool, optional, default true |
LogonRequest
| # |
Field |
Type |
StarCraft II sends |
| 1 |
program |
string |
S2 |
| 2 |
platform |
string |
The platform, such as Mc64 for 64-bit macOS |
| 3 |
locale |
string |
For example enUS |
| 4 |
email |
string |
|
| 5 |
version |
string |
The Battle.net SDK identity built into the game. The exact value for each build is on SC2Docs. |
| 6 |
application_version |
int32 |
0 |
| 7 |
public_computer |
bool |
|
| 10 |
allow_logon_queue_notifications |
bool, default false |
|
| 12 |
cached_web_credentials |
bytes |
A reusable credential from an earlier sign-in, if there is one |
| 14 |
user_agent |
string |
|
| 15 |
device_id |
string |
|
LogonResult
| # |
Field |
Type |
| 1 |
error_code |
uint32, required |
| 2 |
account_id |
EntityId |
| 3 |
game_account_id |
repeated EntityId |
| 4 |
email |
string |
| 5 |
available_region |
repeated uint32 |
| 6 |
connected_region |
uint32 |
| 7 |
battle_tag |
string |
| 8 |
geoip_country |
string |
| 9 |
session_key |
bytes (64 bytes) |
| 10 |
restricted_mode |
bool |
| 11 |
client_id |
string |
Web credentials
| Message |
# |
Field |
Type |
ChallengeExternalRequest |
1 |
request_token |
string |
|
2 |
payload_type |
string |
|
3 |
payload |
bytes |
VerifyWebCredentialsRequest |
1 |
web_credentials |
bytes |
GenerateWebCredentialsRequest |
1 |
program |
fixed32 |
GenerateWebCredentialsResponse |
1 |
web_credentials |
bytes |
GameAccountSelectedRequest |
1 |
result |
uint32, required |
|
2 |
game_account_id |
EntityId |
Two different credentials. The short-lived credential from the web sign-in is used once, with method 7. The reusable credential from method 8 is sent in LogonRequest next time. A client should replace it after every successful use, and fall back to the web sign-in when it's rejected.
The Sunken handoff: ClientRequest
| # |
Field |
Type |
StarCraft II sends |
| 1 |
attribute |
repeated Attribute |
The attributes below |
| 2 |
host |
ProcessId |
Omitted |
| 3 |
account_id |
EntityId |
Omitted |
| 4 |
game_account_id |
EntityId |
The first StarCraft II game account from LogonResult |
| 5 |
program |
fixed32 |
Omitted |
| 6 |
client_info |
ClientInfo |
Omitted |
| Attribute |
Type |
Value |
LogonTokenRequest |
string |
0.0.1 |
environment |
string |
The region, such as US |
session_key |
blob |
The 64-byte session key from LogonResult |
locale |
string |
For example enUS |
The response, ClientResponse, is another list of attributes. These carry everything Sunken needs:
| Attribute |
Contents |
address |
The Sunken server's address. The port is 1119 when not given. A bracketed IPv6 address may include a port after the bracket. |
session_key |
Exactly 64 bytes, used for the Resume proof and to derive the encryption keys. |
account_region |
The region number, 0 to 255. |
game_account_name, account_mail |
The account's identity. |
logon_response |
A bit-packed LogonResponse3 with status, timeouts, account data and settings. |
Attributes and variants
An Attribute is a name (field 1) and a Variant value (field 2). The Variant field number tells you its type:
| # |
Type |
# |
Type |
| 2 |
bool |
7 |
embedded message |
| 3 |
signed integer (int64) |
8 |
four-character code |
| 4 |
double |
9 |
unsigned integer (uint64) |
| 5 |
string |
10 |
entity ID |
| 6 |
bytes |
|
|
Sources and credits
Last edited September 16, 2026 by John Leighow.
Edit on GitHub
|
Page history