POGOProtos.Networking.Envelopes.Signature.proto Maven / Gradle / Ivy
syntax = "proto3";
package POGOProtos.Networking.Envelopes;
message Signature {
message LocationFix {
string provider = 1; // "network", "gps", "fused", possibly others
uint64 timestamp_snapshot = 2; // in ms since start
float altitude = 4; // Confirmed on android/ios
float latitude = 13;
float longitude = 14;
float speed = 18; // iOS only (-1 for no reading available, speed in m/s)
float course = 20; // iOS only (range seems to be -1 for not reading, and 0 to 360 for reading) confirmed by @marcel
float horizontal_accuracy = 21; // in meters, both on Android and iOS
float vertical_accuracy = 22; // iOS only
uint64 provider_status = 26; // Usually 3 (possibly GPS status: 1 = no fix, 2 = acquiring/inaccurate, 3 = fix acquired)
// On iOS there are some LocationFixes with unk26=1 and everything else empty
uint32 floor = 27; // The floor of the building this person is on
uint64 location_type = 28; // Always 1 (if there is data at all)
}
// don't really care about this since we're not using it
message AndroidGpsInfo {
uint64 time_to_fix = 1;
repeated int32 satellites_prn = 2;
repeated float azimuth = 3;
repeated float elevation = 4;
repeated float snr = 5;
repeated bool has_almanac = 6;
repeated bool has_ephemeris = 7;
repeated bool used_in_fix = 8;
}
message SensorInfo {
uint64 timestamp_snapshot = 1; // in ms since start
double linear_acceleration_x = 3;
double linear_acceleration_y = 4;
double linear_acceleration_z = 5;
double magnetic_field_x = 6;
double magnetic_field_y = 7;
double magnetic_field_z = 8;
int32 magnetic_field_accuracy = 9;
double attitude_pitch = 10;
double attitude_yaw = 11;
double attitude_roll = 12;
double rotation_rate_x = 13;
double rotation_rate_y = 14;
double rotation_rate_z = 15;
double gravity_x = 16;
double gravity_y = 17;
double gravity_z = 18;
int32 status = 19;
}
message DeviceInfo {
string device_id = 1; // Hex string
string android_board_name = 2;
string android_bootloader = 3;
string device_brand = 4; // On Android: product.brand
string device_model = 5; // On Android: product.device
string device_model_identifier = 6; // Android only, build.display.id
string device_model_boot = 7; // On Android: boot.hardware
string hardware_manufacturer = 8; // On Android: product.manufacturer
string hardware_model = 9; // On Android: product.model
string firmware_brand = 10; // On Android: product.name, on iOS: "iPhone OS"
string firmware_tags = 12; // Android only, build.tags
string firmware_type = 13; // On Android: build.type, on iOS instead: iOS version
string firmware_fingerprint = 14; // Android only, build.fingerprint
}
// Only used in iOS - Android just sends an empty version
message ActivityStatus {
// all of these had 1 as their value
uint64 start_time_ms = 1;
bool unknown_status = 2;
bool walking = 3;
bool running = 4;
bool stationary = 5;
bool automotive = 6;
bool tilting = 7;
bool cycling = 8;
bytes status = 9;
}
repeated UnknownMessage field1 = 1;
uint64 timestamp_since_start = 2; // in ms
string field3 = 3;
repeated LocationFix location_fix = 4;
repeated AndroidGpsInfo gps_info = 5;
repeated UnknownMessage field6 = 6;
repeated SensorInfo sensor_info = 7;
DeviceInfo device_info = 8;
ActivityStatus activity_status = 9;
int32 location_hash1 = 10;
bool field11 = 11;
bool field12 = 12;
int32 field13 = 13;
int32 field14 = 14;
string field15 = 15;
int32 field16 = 16;
string field17 = 17;
string field18 = 18;
bool field19 = 19;
int32 location_hash2 = 20;
bool field21 = 21;
bytes session_hash = 22; // 32 random bytes, unique per session.
uint64 timestamp = 23; // epoch timestamp in ms
repeated uint64 request_hash = 24; // hashes of each request message in a hashArray signed based on the auth_token or auth_info - xxhash64
int64 unknown25 = 25;
int32 unknown27 = 27;
}
// Just a junk message to denote that we don't currently know what message something is.
message UnknownMessage {
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy