255 lines
5.7 KiB
Protocol Buffer
255 lines
5.7 KiB
Protocol Buffer
syntax = "proto3";
|
|
package authentication;
|
|
|
|
option go_package = "../gmproto";
|
|
|
|
import "util.proto";
|
|
import "pblite.proto";
|
|
|
|
enum BrowserType {
|
|
UNKNOWN_BROWSER_TYPE = 0;
|
|
OTHER = 1;
|
|
CHROME = 2;
|
|
FIREFOX = 3;
|
|
SAFARI = 4;
|
|
OPERA = 5;
|
|
IE = 6;
|
|
EDGE = 7;
|
|
}
|
|
|
|
enum DeviceType {
|
|
UNKNOWN_DEVICE_TYPE = 0;
|
|
WEB = 1;
|
|
TABLET = 2;
|
|
PWA = 3;
|
|
}
|
|
|
|
message BrowserDetails {
|
|
string userAgent = 1;
|
|
BrowserType browserType = 2;
|
|
string OS = 3;
|
|
DeviceType deviceType = 6;
|
|
}
|
|
|
|
message Device {
|
|
int64 userID = 1;
|
|
string sourceID = 2;
|
|
string network = 3;
|
|
}
|
|
|
|
message ConfigVersion {
|
|
int32 Year = 3;
|
|
int32 Month = 4;
|
|
int32 Day = 5;
|
|
int32 V1 = 7;
|
|
int32 V2 = 9;
|
|
}
|
|
|
|
message SignInGaiaRequest {
|
|
message Inner {
|
|
message DeviceID {
|
|
int32 unknownInt1 = 1; // 3
|
|
string deviceID = 2; // messages-web-{uuid without dashes}
|
|
}
|
|
message Data {
|
|
bytes someData = 3; // maybe an encryption key?
|
|
}
|
|
DeviceID deviceID = 1;
|
|
Data someData = 36 [(pblite.pblite_binary) = true];
|
|
}
|
|
AuthMessage authMessage = 1;
|
|
Inner inner = 2;
|
|
int32 unknownInt3 = 3;
|
|
string network = 4;
|
|
}
|
|
|
|
message SignInGaiaResponse {
|
|
message Header {
|
|
uint64 unknownInt2 = 2;
|
|
int64 unknownTimestamp = 4;
|
|
}
|
|
message DeviceData {
|
|
message DeviceWrapper {
|
|
Device device = 1;
|
|
}
|
|
DeviceWrapper deviceWrapper = 1;
|
|
repeated RPCGaiaData.UnknownContainer.Item2.Item1 unknownItems2 = 2;
|
|
repeated RPCGaiaData.UnknownContainer.Item4 unknownItems3 = 3;
|
|
// index 4 is some unknown field with no real data
|
|
}
|
|
Header header = 1;
|
|
string maybeBrowserUUID = 2 [(pblite.pblite_binary) = true];
|
|
DeviceData deviceData = 3;
|
|
TokenData tokenData = 4;
|
|
}
|
|
|
|
message GaiaPairingRequestContainer {
|
|
string pairingAttemptID = 1;
|
|
BrowserDetails browserDetails = 2;
|
|
int64 startTimestamp = 3;
|
|
bytes data = 4;
|
|
}
|
|
|
|
message GaiaPairingResponseContainer {
|
|
int32 finishErrorType = 1;
|
|
int32 finishErrorCode = 2;
|
|
int32 unknownInt3 = 3; // For init, 1
|
|
string sessionUUID = 4;
|
|
bytes data = 5;
|
|
}
|
|
|
|
message RevokeGaiaPairingRequest {
|
|
string pairingAttemptID = 1;
|
|
}
|
|
|
|
message RPCGaiaData {
|
|
message UnknownContainer {
|
|
message Item2 {
|
|
message Item1 {
|
|
string destOrSourceUUID = 1 [(pblite.pblite_binary) = true];
|
|
int32 unknownInt4 = 4; // 1 for destination device, 6 for local device?
|
|
string languageCode = 5;
|
|
uint64 unknownBigInt7 = 7;
|
|
}
|
|
repeated Item1 item1 = 1;
|
|
}
|
|
message Item4 {
|
|
message Item8 {
|
|
int32 unknownInt1 = 1; // present for destination device?
|
|
int32 unknownTimestamp = 2; // present for destination device?
|
|
bytes unknownBytes = 3; // present for local device?
|
|
}
|
|
string destOrSourceUUID = 1 [(pblite.pblite_binary) = true];
|
|
int32 unknownInt3 = 3; // 1 for destination device, 6 for local device?
|
|
int32 unknownInt4 = 4; // always 6?
|
|
int64 unknownTimestampMicroseconds = 7; // maybe device creation ts?
|
|
Item8 item8 = 8 [(pblite.pblite_binary) = true];
|
|
}
|
|
Item2 item2 = 2;
|
|
int64 unknownTimestampMicroseconds = 3; // pairing timestamp?
|
|
repeated Item4 item4 = 4;
|
|
}
|
|
|
|
int32 command = 1; // 9
|
|
UnknownContainer maybeServerData = 108;
|
|
}
|
|
|
|
message AuthenticationContainer {
|
|
AuthMessage authMessage = 1;
|
|
BrowserDetails browserDetails = 3;
|
|
|
|
oneof data {
|
|
KeyData keyData = 4;
|
|
CurrentDeviceData deviceData = 5;
|
|
}
|
|
}
|
|
|
|
message AuthMessage {
|
|
string requestID = 1;
|
|
string network = 3;
|
|
bytes tachyonAuthToken = 6;
|
|
ConfigVersion configVersion = 7;
|
|
}
|
|
|
|
message RevokeRelayPairingRequest {
|
|
AuthMessage authMessage = 1;
|
|
Device browser = 2;
|
|
}
|
|
|
|
message RevokeRelayPairingResponse {
|
|
// field 1 is an object with an unknown int64 in field 2
|
|
}
|
|
|
|
message RegisterRefreshRequest {
|
|
message NestedEmptyArr {
|
|
util.EmptyArr emptyArr = 9;
|
|
}
|
|
|
|
AuthMessage messageAuth = 1;
|
|
Device currBrowserDevice = 2;
|
|
int64 unixTimestamp = 3;
|
|
bytes signature = 4;
|
|
NestedEmptyArr emptyRefreshArr = 13;
|
|
int32 messageType = 16;
|
|
}
|
|
|
|
message RegisterRefreshResponse {
|
|
TokenData tokenData = 2;
|
|
}
|
|
|
|
message RegisterPhoneRelayResponse {
|
|
CoordinateMessage coordinates = 1;
|
|
Device browser = 2;
|
|
bytes pairingKey = 3;
|
|
int64 validFor = 4;
|
|
TokenData authKeyData = 5;
|
|
string responseID = 6;
|
|
}
|
|
|
|
message CoordinateMessage {
|
|
int64 coord1 = 2;
|
|
}
|
|
|
|
message RefreshPhoneRelayResponse {
|
|
CoordinateMessage coordinates = 1;
|
|
bytes pairKey = 2;
|
|
int64 validFor = 3;
|
|
}
|
|
|
|
message WebEncryptionKeyResponse {
|
|
CoordinateMessage coordinates = 1;
|
|
bytes key = 2;
|
|
}
|
|
|
|
message ErrorResponse {
|
|
int64 type = 1; // 5?
|
|
string message = 2;
|
|
repeated ErrorClass class = 3;
|
|
|
|
message ErrorClass {
|
|
string class = 1;
|
|
// 2: {1: 1}
|
|
}
|
|
}
|
|
|
|
message ECDSAKeys {
|
|
int64 field1 = 1; // idk?
|
|
bytes encryptedKeys = 2;
|
|
}
|
|
|
|
message CurrentDeviceData {
|
|
authentication.Device browser = 1;
|
|
}
|
|
|
|
message KeyData {
|
|
Device mobile = 1;
|
|
ECDSAKeys ecdsaKeys = 6;
|
|
WebAuthKey webAuthKeyData = 2;
|
|
Device browser = 3;
|
|
}
|
|
|
|
message WebAuthKey {
|
|
bytes webAuthKey = 1;
|
|
int64 validFor = 2;
|
|
}
|
|
|
|
message URLData {
|
|
bytes pairingKey = 1;
|
|
bytes AESKey = 2;
|
|
bytes HMACKey = 3;
|
|
}
|
|
|
|
message TokenData {
|
|
bytes tachyonAuthToken = 1;
|
|
int64 TTL = 2;
|
|
}
|
|
|
|
message PairedData {
|
|
Device mobile = 1;
|
|
TokenData tokenData = 2;
|
|
Device browser = 3;
|
|
}
|
|
|
|
message RevokePairData {
|
|
Device revokedDevice = 1;
|
|
}
|