All Downloads are FREE. Search and download functionalities are using the official Maven repository.

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