bool CLoginHelper::CheckSteamLogin() { r3d_assert(gSteam.steamID); r3d_assert(gSteam.authToken.getSize() > 0); CkString ticket; gSteam.authToken.encode("hex", ticket); CWOBackendReq req("api_SteamLogin.aspx"); req.AddParam("ticket", ticket.getAnsi()); if(!req.Issue()) { r3dOutToLog("CheckSteamLogin: failed %d\n", req.resultCode_); return false; } int n = sscanf(req.bodyStr_, "%d %d %d", &CustomerID, &SessionID, &AccountStatus); if(n != 3) { r3dOutToLog("CheckSteamLogin: bad answer %s\n", req.bodyStr_); return false; } return true; }
void CLoginHelper::CreateAuthToken(char* token) const { char sessionInfo[512]; sprintf(sessionInfo, "%d:%d:%d", CustomerID, SessionID, AccountStatus); for(size_t i=0; i<strlen(sessionInfo); ++i) sessionInfo[i] = sessionInfo[i] ^ 0x64; CkString encoded; encoded = sessionInfo; encoded.base64Encode("utf-8"); strcpy(token, encoded.getAnsi()); return; }