diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..12f16e6 --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,21 @@ +cmake_minimum_required(VERSION 3.26) +project(pyquickshare LANGUAGES CXX) + +set(CMAKE_CXX_STANDARD 17) +set(CMAKE_CXX_STANDARD_REQUIRED ON) + +find_package(Python REQUIRED COMPONENTS Interpreter Development.Module) +find_package(pybind11 REQUIRED CONFIG) +find_package(PkgConfig) + + +pkg_check_modules(BLUEZ bluez) +if(NOT BLUEZ_FOUND) + pkg_check_modules(BLUEZ REQUIRED bluetooth) +endif() + +pybind11_add_module(_rfcomm pyquickshare/rfcomm/_rfcomm.cpp) +target_include_directories(_rfcomm PRIVATE ${BLUEZ_INCLUDE_DIRS}) +target_link_libraries(_rfcomm PRIVATE ${BLUEZ_LINK_LIBRARIES}) + +install(TARGETS _rfcomm DESTINATION pyquickshare/rfcomm) \ No newline at end of file diff --git a/README.md b/README.md index cdd3e7c..50dd30e 100644 --- a/README.md +++ b/README.md @@ -1,12 +1,12 @@ # pyquickshare -![Ruff logo](https://img.shields.io/endpoint?url=https%3A%2F%2Fteaishealthy.me%2Fv2.json&style=flat-square) +![Ruff logo](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/teaishealthy/teaishealthy/refs/heads/main/ruff-badge.json&style=flat-square) ![GitHub Actions Workflow Status](https://img.shields.io/github/actions/workflow/status/teaishealthy/pyquickshare/ruff.yml?style=flat-square&label=lint+and+format) ![GitHub Actions Workflow Status](https://img.shields.io/github/actions/workflow/status/teaishealthy/pyquickshare/test.yml?style=flat-square&label=tests) ![Coveralls](https://img.shields.io/coverallsCoverage/github/teaishealthy/pyquickshare?style=flat-square) -An implementation of Quick Share in Python. +An asynchronous Python implementation of the Android Quick Share (Nearby Share) protocol ## System requirements @@ -29,7 +29,10 @@ Communication with `firewalld` is done over D-Bus, `polkit` may prompt for authe ## Installation ```bash -pip install git+https://github.com/teaishealthy/pyquickshare +pip install pyquickshare + +# or, to install with extras (QR code support) +pip install pyquickshare[extras] ``` ## Features @@ -37,7 +40,7 @@ pip install git+https://github.com/teaishealthy/pyquickshare Receive is fully implemented, namely WiFi credentials, files, and text. Sending only supports files, but support for sending text and WiFi credentials is planned. ### Transfer -Only LAN/Wifi is supported at the moment, but Bluetooth is planned. +Quick Share supports two "bare" transports: WiFi/Lan and Bluetooth Classic. Bluetooth Classic *can* transfer files, but can also be used to trigger an upgrade to a faster medium (e.g. WiFi Direct or Hotspot). ### Discovery pyquickshare uses mDNS to discover other devices on the local network. BLE is only used to trigger advertisment at the moment. @@ -58,10 +61,12 @@ uv run example.py send ## Notes and Acknowledgements -The code in [`pyquickshare/protos`](https://github.com/teaishealthy/pyquickshare/blob/main/pyquickshare/protos/) is generated from protobuf sources licensed under Apache 2.0. +- The code in [`pyquickshare/protos`](https://github.com/teaishealthy/pyquickshare/blob/main/pyquickshare/protos/) is generated from protobuf sources licensed under Apache 2.0. As a derivative work, these generated files remain under the original Apache 2.0 license. A copy of the original license can be found in the [`pyquickshare/protos`](https://github.com/teaishealthy/pyquickshare/blob/main/pyquickshare/protos/) directory. +- This project would not have been possible without the amazing reverse engineering work done by [grishka](https://github.com/grishka/) on the Quick Share protocol. +Check out [NearDrop](https://github.com/grishka/NearDrop/), a similar project for Mac OS. -This project would not have been possible without the amazing reverse engineering work done by [grishka](https://github.com/grishka/) on the Quick Share protocol. -Check out [NearDrop](https://github.com/grishka/NearDrop/), a similar project for Mac OS. \ No newline at end of file +- **WiFi-Direct**: While according to Google's Nearby documentation and the protobuf fields WiFi-Direct is supposed to be an available medium, it seems that Quick Share does not use it. +It more likely uses WiFi-Aware which isn't widely supported outside of Android devices. diff --git a/example.py b/example.py index 57e03b6..9dc0210 100644 --- a/example.py +++ b/example.py @@ -9,7 +9,10 @@ async def send(file: str) -> None: - first = await anext(pyquickshare.discover_services()) + quickshare = await pyquickshare.discover_services() + quickshare.qr_code.print() + + first = await anext(quickshare) return await pyquickshare.send_to(first, file=file) diff --git a/pyproject.toml b/pyproject.toml index ffea8b6..62b32e0 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,7 +1,7 @@ [project] name = "pyquickshare" -version = "0.1.0" -description = "" +version = "0.1.0.post1" +description = "An asynchronous Python implementation of the Android Quick Share (Nearby Share) protocol" authors = [{ name = "teaishealthy", email = "teaishealthy@protonmail.com" }] requires-python = "~=3.10.0" readme = "README.md" @@ -11,14 +11,55 @@ dependencies = [ "bless>=0.2.6", "cryptography>=44.0.1", "dbus-next>=0.2.3", - "protobuf>=5.29.3", + "protobuf>=6.32.0", "python-magic>=0.4.27", "zeroconf>=0.145.1", - # need to pin bleak (dependency of bless) "bleak==0.22.3", ] +keywords = [ + "quick share", + "quickshare", + "nearby share", + "nearbyshare", + "file transfer", + "file sharing", + "asyncio", + "linux", + "android", +] + +classifiers = [ + "Programming Language :: Python :: 3.10", + "Programming Language :: Python :: 3.11", + "Programming Language :: Python :: 3.12", + "Operating System :: POSIX :: Linux", + "Operating System :: Android", + "Development Status :: 3 - Alpha", + "Environment :: Console", + "Intended Audience :: Developers", + "Intended Audience :: End Users/Desktop", + "Topic :: Communications :: File Sharing", + + # Things we integrate with + "Topic :: System :: Networking", + "Topic :: System :: Networking :: Firewalls", + "Topic :: Security :: Cryptography", + "Topic :: Internet :: Name Service (DNS)", + + "Topic :: Software Development :: Libraries :: Python Modules", + "Typing :: Typed", + "Framework :: AsyncIO", +] + +[project.urls] +Repository = "https://github.com/teaishealthy/pyquickshare" +Issues = "https://github.com/teaishealthy/pyquickshare/issues" + +[project.optional-dependencies] +extras = ["qrcode>=8.2"] + [dependency-groups] dev = [ "pytest>=8.3.4", @@ -76,5 +117,8 @@ exclude_also = ["pragma: no cover", "if TYPE_CHECKING:"] asyncio_default_fixture_loop_scope = "session" [build-system] -requires = ["hatchling"] -build-backend = "hatchling.build" +requires = ["scikit-build-core>=0.10", "pybind11>=2.13"] +build-backend = "scikit_build_core.build" + +[tool.scikit-build] +wheel.packages = ["pyquickshare"] diff --git a/pyquickshare/bluetooth.py b/pyquickshare/bluetooth.py new file mode 100644 index 0000000..bb06984 --- /dev/null +++ b/pyquickshare/bluetooth.py @@ -0,0 +1,123 @@ +import asyncio +import logging +import socket +from dataclasses import dataclass +from typing import Any, AsyncGenerator, cast + +from dbus_next.aio.message_bus import MessageBus +from dbus_next.constants import BusType + +from . import rfcomm +from .dbus.dbus import get_proxy_object + +logger = logging.getLogger(__name__) + + +BLEUTOOTH_QUICKSHARE_UUID = "a82efa21-ae5c-3dde-9bbc-f16da7b16c5a" +BLEUTOOTH_QUICKSHARE_RECEIVE_UUID = "0000fef3-0000-1000-8000-00805f9b34fb" +BLUETOOTH_QUICKSHARE_NEW_UUID = "00001101-0000-1000-8000-00805f9b34fb" +UUIDS = [ + BLEUTOOTH_QUICKSHARE_UUID, + BLEUTOOTH_QUICKSHARE_RECEIVE_UUID, + BLUETOOTH_QUICKSHARE_NEW_UUID, +] + + +@dataclass +class BluetoothDevice: + name: str + address: str + channel: int + + +async def find_receiving_devices() -> AsyncGenerator[BluetoothDevice, None]: + logger.debug("Connecting to the system bus") + bus = await MessageBus(bus_type=BusType.SYSTEM).connect() + logger.info("Connected to the system bus") + + bluez_root = await get_proxy_object( + bus, + "org.bluez", + "/", + ) + + object_manager = bluez_root.get_interface("org.freedesktop.DBus.ObjectManager") + objects = await object_manager.call_get_managed_objects() + + adapter_path = None + for path, interfaces in objects.items(): + if "org.bluez.Adapter1" in interfaces: + logger.debug("Found adapter at %s", path) + adapter_path = path + break + + if adapter_path is None: + logger.error("No Bluetooth adapter found") + return + + queue: asyncio.Queue[str] = asyncio.Queue() + + for path, interface in objects.items(): + if "org.bluez.Device1" in interface: + await queue.put(path) + + register_new_devices(object_manager, queue) + + adapter_proxy = await get_proxy_object(bus, "org.bluez", adapter_path) + adapter = adapter_proxy.get_interface("org.bluez.Adapter1") + await adapter.call_start_discovery() + + while True: + path = await queue.get() + device_proxy = await get_proxy_object(bus, "org.bluez", path) + device = device_proxy.get_interface("org.bluez.Device1") + uuids = [u.casefold() for u in await device.get_uui_ds()] + if BLEUTOOTH_QUICKSHARE_UUID in uuids: + name = await device.get_name() + address = await device.get_address() + logger.info("Found QuickShare device: %s (%s) at %s", name, address, path) + + channel = cast( + int, + rfcomm.find_rfcomm_channel(address, BLEUTOOTH_QUICKSHARE_UUID), # pyright: ignore[reportAttributeAccessIssue, reportUnknownMemberType] + ) + + yield BluetoothDevice(name, address, channel) + + +def register_new_devices(object_manager: Any, queue: asyncio.Queue[str]) -> None: + def on_interfaces_added(object_path: str, interfaces: dict[str, Any]) -> None: + if "org.bluez.Device1" in interfaces: + logger.debug("Found new device at %s", object_path) + queue.put_nowait(object_path) + + object_manager.on_interfaces_added(on_interfaces_added) + + +async def connect_bluetooth_device(device: BluetoothDevice) -> socket.socket: + logger.info( + "Connecting to device %s (%s) on channel %d", device.name, device.address, device.channel + ) + + sock = rfcomm.open_rfcomm_socket() + rfcomm.connect_rfcomm(sock.fileno(), device.address, device.channel) # pyright: ignore[reportAttributeAccessIssue, reportUnknownMemberType] + logger.info( + "Connected to device %s (%s) on channel %d", device.name, device.address, device.channel + ) + + return sock + + +async def tinker() -> None: + async for device in find_receiving_devices(): + sock = await connect_bluetooth_device(device) + sock.close() + break + + +if __name__ == "__main__": + import asyncio + + logging.basicConfig(level=logging.DEBUG) + + asyncio.run(tinker()) diff --git a/pyquickshare/common.py b/pyquickshare/common.py index 7c13fd1..1f35470 100644 --- a/pyquickshare/common.py +++ b/pyquickshare/common.py @@ -16,7 +16,7 @@ from cryptography.hazmat.primitives import hashes, hmac, padding from cryptography.hazmat.primitives.ciphers import Cipher, algorithms, modes -from pyquickshare.protos import ( +from .protos import ( device_to_device_messages_pb2, offline_wire_formats_pb2, securegcm_pb2, @@ -268,13 +268,20 @@ async def send(frame: bytes, *, id: int | None = None) -> None: return send -def generate_paired_key_encryption() -> wire_format_pb2.Frame: +def generate_paired_key_encryption( + qr_code_handshake_data: bytes | None = None, +) -> wire_format_pb2.Frame: paired_key_encryption = wire_format_pb2.Frame() paired_key_encryption.v1.type = wire_format_pb2.V1Frame.PAIRED_KEY_ENCRYPTION paired_key_encryption.version = wire_format_pb2.Frame.V1 paired_key_encryption.v1.paired_key_encryption.secret_id_hash = bytes( [0x00] * 6, ) # fmt: off + if qr_code_handshake_data: + paired_key_encryption.v1.paired_key_encryption.qr_code_handshake_data = ( + qr_code_handshake_data + ) + paired_key_encryption.v1.paired_key_encryption.signed_data = bytes([0x00] * 72) return paired_key_encryption diff --git a/pyquickshare/dbus/__init__.py b/pyquickshare/dbus/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/pyquickshare/dbus/dbus.py b/pyquickshare/dbus/dbus.py new file mode 100644 index 0000000..3e73bc9 --- /dev/null +++ b/pyquickshare/dbus/dbus.py @@ -0,0 +1,22 @@ +from typing import Any + +from dbus_next.aio.message_bus import MessageBus + + +async def get_proxy_object( + bus: MessageBus, + name: str, + path: str, + introspection: Any = None, +) -> Any: + if introspection is None: + introspection = await bus.introspect( + name, + path, + ) + + return bus.get_proxy_object( + name, + path, + introspection, + ) diff --git a/pyquickshare/firewalld.py b/pyquickshare/dbus/firewalld.py similarity index 82% rename from pyquickshare/firewalld.py rename to pyquickshare/dbus/firewalld.py index f7e8840..9d9cb61 100644 --- a/pyquickshare/firewalld.py +++ b/pyquickshare/dbus/firewalld.py @@ -1,36 +1,18 @@ """Module to command firewalld to open a port to allow incoming connections temporarily.""" import logging -from typing import Any from dbus_next.aio.message_bus import MessageBus from dbus_next.constants import BusType +from .dbus import get_proxy_object + logger = logging.getLogger(__name__) __all__ = ("temporarily_open_port",) -async def get_proxy_object( - bus: MessageBus, - name: str, - path: str, - introspection: Any = None, -) -> Any: - if introspection is None: - introspection = await bus.introspect( - name, - path, - ) - - return bus.get_proxy_object( - name, - path, - introspection, - ) - - async def temporarily_open_port(interface: str, port: int = 8080) -> None: logger.info("Opening port %d for 5 minutes", port) diff --git a/pyquickshare/errors.py b/pyquickshare/errors.py new file mode 100644 index 0000000..8cee4c5 --- /dev/null +++ b/pyquickshare/errors.py @@ -0,0 +1,16 @@ +class NonCriticalMissingServiceError(Exception): + """Exception raised when a non-critical service is missing.""" + service_name: str + feature: str | None + resolution: str | None + + def __init__(self, service_name: str, feature: str | None = None, resolution: str | None = None) -> None: + self.service_name = service_name + self.feature = feature + message = f"Non-critical service '{service_name}' is missing." + if feature: + message = f"Non-critical feature '{feature}' of service '{service_name}' is missing." + if resolution: + message += f"\nPossible resolution: {resolution}" + + super().__init__(message) diff --git a/pyquickshare/mdns/receive.py b/pyquickshare/mdns/receive.py index 3de043d..2ea4f36 100644 --- a/pyquickshare/mdns/receive.py +++ b/pyquickshare/mdns/receive.py @@ -15,7 +15,7 @@ from zeroconf.asyncio import AsyncServiceInfo, AsyncZeroconf from ..common import NETWORK_BASE_PATH, InterfaceInfo, Type, to_url64 -from ..firewalld import temporarily_open_port +from ..dbus.firewalld import temporarily_open_port logger = getLogger(__name__) diff --git a/pyquickshare/protos/device_to_device_messages_pb2.py b/pyquickshare/protos/device_to_device_messages_pb2.py index a8c4532..10348af 100644 --- a/pyquickshare/protos/device_to_device_messages_pb2.py +++ b/pyquickshare/protos/device_to_device_messages_pb2.py @@ -1,11 +1,22 @@ # -*- coding: utf-8 -*- # Generated by the protocol buffer compiler. DO NOT EDIT! +# NO CHECKED-IN PROTOBUF GENCODE # source: device_to_device_messages.proto +# Protobuf Python Version: 6.32.0 """Generated protocol buffer code.""" -from google.protobuf.internal import builder as _builder from google.protobuf import descriptor as _descriptor from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database +from google.protobuf.internal import builder as _builder +_runtime_version.ValidateProtobufRuntimeVersion( + _runtime_version.Domain.PUBLIC, + 6, + 32, + 0, + '', + 'device_to_device_messages.proto' +) # @@protoc_insertion_point(imports) _sym_db = _symbol_database.Default() @@ -16,22 +27,22 @@ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1f\x64\x65vice_to_device_messages.proto\x12\tsecuregcm\x1a\x13securemessage.proto\"A\n\x15\x44\x65viceToDeviceMessage\x12\x0f\n\x07message\x18\x01 \x01(\x0c\x12\x17\n\x0fsequence_number\x18\x02 \x01(\x05\"e\n\x0eInitiatorHello\x12\x36\n\rpublic_dh_key\x18\x01 \x01(\x0b\x32\x1f.securemessage.GenericPublicKey\x12\x1b\n\x10protocol_version\x18\x02 \x01(\x05:\x01\x30\"e\n\x0eResponderHello\x12\x36\n\rpublic_dh_key\x18\x01 \x01(\x0b\x32\x1f.securemessage.GenericPublicKey\x12\x1b\n\x10protocol_version\x18\x02 \x01(\x05:\x01\x30\"@\n\x07\x45\x63Point\x12\x1f\n\x05\x63urve\x18\x01 \x02(\x0e\x32\x10.securegcm.Curve\x12\t\n\x01x\x18\x02 \x02(\x0c\x12\t\n\x01y\x18\x03 \x02(\x0c\"w\n\x15SpakeHandshakeMessage\x12\x13\n\x0b\x66low_number\x18\x01 \x01(\x05\x12$\n\x08\x65\x63_point\x18\x02 \x01(\x0b\x32\x12.securegcm.EcPoint\x12\x12\n\nhash_value\x18\x03 \x01(\x0c\x12\x0f\n\x07payload\x18\x04 \x01(\x0c*\x15\n\x05\x43urve\x12\x0c\n\x08\x45\x44_25519\x10\x01\x42S\n+com.google.security.cryptauth.lib.securegcmB\x1b\x44\x65viceToDeviceMessagesProtoH\x03\xa2\x02\x04SGCM') -_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, globals()) -_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'device_to_device_messages_pb2', globals()) -if _descriptor._USE_C_DESCRIPTORS == False: - - DESCRIPTOR._options = None - DESCRIPTOR._serialized_options = b'\n+com.google.security.cryptauth.lib.securegcmB\033DeviceToDeviceMessagesProtoH\003\242\002\004SGCM' - _CURVE._serialized_start=527 - _CURVE._serialized_end=548 - _DEVICETODEVICEMESSAGE._serialized_start=67 - _DEVICETODEVICEMESSAGE._serialized_end=132 - _INITIATORHELLO._serialized_start=134 - _INITIATORHELLO._serialized_end=235 - _RESPONDERHELLO._serialized_start=237 - _RESPONDERHELLO._serialized_end=338 - _ECPOINT._serialized_start=340 - _ECPOINT._serialized_end=404 - _SPAKEHANDSHAKEMESSAGE._serialized_start=406 - _SPAKEHANDSHAKEMESSAGE._serialized_end=525 +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'device_to_device_messages_pb2', _globals) +if not _descriptor._USE_C_DESCRIPTORS: + _globals['DESCRIPTOR']._loaded_options = None + _globals['DESCRIPTOR']._serialized_options = b'\n+com.google.security.cryptauth.lib.securegcmB\033DeviceToDeviceMessagesProtoH\003\242\002\004SGCM' + _globals['_CURVE']._serialized_start=527 + _globals['_CURVE']._serialized_end=548 + _globals['_DEVICETODEVICEMESSAGE']._serialized_start=67 + _globals['_DEVICETODEVICEMESSAGE']._serialized_end=132 + _globals['_INITIATORHELLO']._serialized_start=134 + _globals['_INITIATORHELLO']._serialized_end=235 + _globals['_RESPONDERHELLO']._serialized_start=237 + _globals['_RESPONDERHELLO']._serialized_end=338 + _globals['_ECPOINT']._serialized_start=340 + _globals['_ECPOINT']._serialized_end=404 + _globals['_SPAKEHANDSHAKEMESSAGE']._serialized_start=406 + _globals['_SPAKEHANDSHAKEMESSAGE']._serialized_end=525 # @@protoc_insertion_point(module_scope) diff --git a/pyquickshare/protos/device_to_device_messages_pb2.pyi b/pyquickshare/protos/device_to_device_messages_pb2.pyi index 8cea980..0f0ee14 100644 --- a/pyquickshare/protos/device_to_device_messages_pb2.pyi +++ b/pyquickshare/protos/device_to_device_messages_pb2.pyi @@ -2,56 +2,58 @@ import securemessage_pb2 as _securemessage_pb2 from google.protobuf.internal import enum_type_wrapper as _enum_type_wrapper from google.protobuf import descriptor as _descriptor from google.protobuf import message as _message -from typing import ClassVar as _ClassVar, Mapping as _Mapping, Optional as _Optional, Union as _Union +from collections.abc import Mapping as _Mapping +from typing import ClassVar as _ClassVar, Optional as _Optional, Union as _Union DESCRIPTOR: _descriptor.FileDescriptor + +class Curve(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = () + ED_25519: _ClassVar[Curve] ED_25519: Curve class DeviceToDeviceMessage(_message.Message): - __slots__ = ["message", "sequence_number"] + __slots__ = ("message", "sequence_number") MESSAGE_FIELD_NUMBER: _ClassVar[int] SEQUENCE_NUMBER_FIELD_NUMBER: _ClassVar[int] message: bytes sequence_number: int def __init__(self, message: _Optional[bytes] = ..., sequence_number: _Optional[int] = ...) -> None: ... -class EcPoint(_message.Message): - __slots__ = ["curve", "x", "y"] - CURVE_FIELD_NUMBER: _ClassVar[int] - X_FIELD_NUMBER: _ClassVar[int] - Y_FIELD_NUMBER: _ClassVar[int] - curve: Curve - x: bytes - y: bytes - def __init__(self, curve: _Optional[_Union[Curve, str]] = ..., x: _Optional[bytes] = ..., y: _Optional[bytes] = ...) -> None: ... - class InitiatorHello(_message.Message): - __slots__ = ["protocol_version", "public_dh_key"] - PROTOCOL_VERSION_FIELD_NUMBER: _ClassVar[int] + __slots__ = ("public_dh_key", "protocol_version") PUBLIC_DH_KEY_FIELD_NUMBER: _ClassVar[int] - protocol_version: int + PROTOCOL_VERSION_FIELD_NUMBER: _ClassVar[int] public_dh_key: _securemessage_pb2.GenericPublicKey + protocol_version: int def __init__(self, public_dh_key: _Optional[_Union[_securemessage_pb2.GenericPublicKey, _Mapping]] = ..., protocol_version: _Optional[int] = ...) -> None: ... class ResponderHello(_message.Message): - __slots__ = ["protocol_version", "public_dh_key"] - PROTOCOL_VERSION_FIELD_NUMBER: _ClassVar[int] + __slots__ = ("public_dh_key", "protocol_version") PUBLIC_DH_KEY_FIELD_NUMBER: _ClassVar[int] - protocol_version: int + PROTOCOL_VERSION_FIELD_NUMBER: _ClassVar[int] public_dh_key: _securemessage_pb2.GenericPublicKey + protocol_version: int def __init__(self, public_dh_key: _Optional[_Union[_securemessage_pb2.GenericPublicKey, _Mapping]] = ..., protocol_version: _Optional[int] = ...) -> None: ... +class EcPoint(_message.Message): + __slots__ = ("curve", "x", "y") + CURVE_FIELD_NUMBER: _ClassVar[int] + X_FIELD_NUMBER: _ClassVar[int] + Y_FIELD_NUMBER: _ClassVar[int] + curve: Curve + x: bytes + y: bytes + def __init__(self, curve: _Optional[_Union[Curve, str]] = ..., x: _Optional[bytes] = ..., y: _Optional[bytes] = ...) -> None: ... + class SpakeHandshakeMessage(_message.Message): - __slots__ = ["ec_point", "flow_number", "hash_value", "payload"] - EC_POINT_FIELD_NUMBER: _ClassVar[int] + __slots__ = ("flow_number", "ec_point", "hash_value", "payload") FLOW_NUMBER_FIELD_NUMBER: _ClassVar[int] + EC_POINT_FIELD_NUMBER: _ClassVar[int] HASH_VALUE_FIELD_NUMBER: _ClassVar[int] PAYLOAD_FIELD_NUMBER: _ClassVar[int] - ec_point: EcPoint flow_number: int + ec_point: EcPoint hash_value: bytes payload: bytes def __init__(self, flow_number: _Optional[int] = ..., ec_point: _Optional[_Union[EcPoint, _Mapping]] = ..., hash_value: _Optional[bytes] = ..., payload: _Optional[bytes] = ...) -> None: ... - -class Curve(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): - __slots__ = [] diff --git a/pyquickshare/protos/offline_wire_formats_pb2.py b/pyquickshare/protos/offline_wire_formats_pb2.py index e14c86e..8dea85b 100644 --- a/pyquickshare/protos/offline_wire_formats_pb2.py +++ b/pyquickshare/protos/offline_wire_formats_pb2.py @@ -1,11 +1,22 @@ # -*- coding: utf-8 -*- # Generated by the protocol buffer compiler. DO NOT EDIT! +# NO CHECKED-IN PROTOBUF GENCODE # source: offline_wire_formats.proto +# Protobuf Python Version: 6.32.0 """Generated protocol buffer code.""" -from google.protobuf.internal import builder as _builder from google.protobuf import descriptor as _descriptor from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database +from google.protobuf.internal import builder as _builder +_runtime_version.ValidateProtobufRuntimeVersion( + _runtime_version.Domain.PUBLIC, + 6, + 32, + 0, + '', + 'offline_wire_formats.proto' +) # @@protoc_insertion_point(imports) _sym_db = _symbol_database.Default() @@ -15,110 +26,110 @@ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1aoffline_wire_formats.proto\x12\x1blocation.nearby.connections\"\xac\x01\n\x0cOfflineFrame\x12\x42\n\x07version\x18\x01 \x01(\x0e\x32\x31.location.nearby.connections.OfflineFrame.Version\x12\x30\n\x02v1\x18\x02 \x01(\x0b\x32$.location.nearby.connections.V1Frame\"&\n\x07Version\x12\x13\n\x0fUNKNOWN_VERSION\x10\x00\x12\x06\n\x02V1\x10\x01\"\xcb\x06\n\x07V1Frame\x12<\n\x04type\x18\x01 \x01(\x0e\x32..location.nearby.connections.V1Frame.FrameType\x12O\n\x12\x63onnection_request\x18\x02 \x01(\x0b\x32\x33.location.nearby.connections.ConnectionRequestFrame\x12Q\n\x13\x63onnection_response\x18\x03 \x01(\x0b\x32\x34.location.nearby.connections.ConnectionResponseFrame\x12K\n\x10payload_transfer\x18\x04 \x01(\x0b\x32\x31.location.nearby.connections.PayloadTransferFrame\x12\x64\n\x1d\x62\x61ndwidth_upgrade_negotiation\x18\x05 \x01(\x0b\x32=.location.nearby.connections.BandwidthUpgradeNegotiationFrame\x12?\n\nkeep_alive\x18\x06 \x01(\x0b\x32+.location.nearby.connections.KeepAliveFrame\x12\x46\n\rdisconnection\x18\x07 \x01(\x0b\x32/.location.nearby.connections.DisconnectionFrame\x12T\n\x15paired_key_encryption\x18\x08 \x01(\x0b\x32\x35.location.nearby.connections.PairedKeyEncryptionFrame\"\xcb\x01\n\tFrameType\x12\x16\n\x12UNKNOWN_FRAME_TYPE\x10\x00\x12\x16\n\x12\x43ONNECTION_REQUEST\x10\x01\x12\x17\n\x13\x43ONNECTION_RESPONSE\x10\x02\x12\x14\n\x10PAYLOAD_TRANSFER\x10\x03\x12!\n\x1d\x42\x41NDWIDTH_UPGRADE_NEGOTIATION\x10\x04\x12\x0e\n\nKEEP_ALIVE\x10\x05\x12\x11\n\rDISCONNECTION\x10\x06\x12\x19\n\x15PAIRED_KEY_ENCRYPTION\x10\x07\"\xbd\x04\n\x16\x43onnectionRequestFrame\x12\x13\n\x0b\x65ndpoint_id\x18\x01 \x01(\t\x12\x15\n\rendpoint_name\x18\x02 \x01(\t\x12\x16\n\x0ehandshake_data\x18\x03 \x01(\x0c\x12\r\n\x05nonce\x18\x04 \x01(\x05\x12K\n\x07mediums\x18\x05 \x03(\x0e\x32:.location.nearby.connections.ConnectionRequestFrame.Medium\x12\x15\n\rendpoint_info\x18\x06 \x01(\x0c\x12\x44\n\x0fmedium_metadata\x18\x07 \x01(\x0b\x32+.location.nearby.connections.MediumMetadata\x12\"\n\x1akeep_alive_interval_millis\x18\x08 \x01(\x05\x12!\n\x19keep_alive_timeout_millis\x18\t \x01(\x05\x12\x16\n\x0b\x64\x65vice_type\x18\n \x01(\x05:\x01\x30\x12\x13\n\x0b\x64\x65vice_info\x18\x0b \x01(\x0c\"\xb1\x01\n\x06Medium\x12\x12\n\x0eUNKNOWN_MEDIUM\x10\x00\x12\x0c\n\x04MDNS\x10\x01\x1a\x02\x08\x01\x12\r\n\tBLUETOOTH\x10\x02\x12\x10\n\x0cWIFI_HOTSPOT\x10\x03\x12\x07\n\x03\x42LE\x10\x04\x12\x0c\n\x08WIFI_LAN\x10\x05\x12\x0e\n\nWIFI_AWARE\x10\x06\x12\x07\n\x03NFC\x10\x07\x12\x0f\n\x0bWIFI_DIRECT\x10\x08\x12\x0b\n\x07WEB_RTC\x10\t\x12\r\n\tBLE_L2CAP\x10\n\x12\x07\n\x03USB\x10\x0b\"\xdf\x02\n\x17\x43onnectionResponseFrame\x12\x12\n\x06status\x18\x01 \x01(\x05\x42\x02\x18\x01\x12\x16\n\x0ehandshake_data\x18\x02 \x01(\x0c\x12U\n\x08response\x18\x03 \x01(\x0e\x32\x43.location.nearby.connections.ConnectionResponseFrame.ResponseStatus\x12\x34\n\x07os_info\x18\x04 \x01(\x0b\x32#.location.nearby.connections.OsInfo\x12 \n\x18multiplex_socket_bitmask\x18\x05 \x01(\x05\x12\"\n\x1anearby_connections_version\x18\x06 \x01(\x05\"E\n\x0eResponseStatus\x12\x1b\n\x17UNKNOWN_RESPONSE_STATUS\x10\x00\x12\n\n\x06\x41\x43\x43\x45PT\x10\x01\x12\n\n\x06REJECT\x10\x02\"\x85\x08\n\x14PayloadTransferFrame\x12Q\n\x0bpacket_type\x18\x01 \x01(\x0e\x32<.location.nearby.connections.PayloadTransferFrame.PacketType\x12W\n\x0epayload_header\x18\x02 \x01(\x0b\x32?.location.nearby.connections.PayloadTransferFrame.PayloadHeader\x12U\n\rpayload_chunk\x18\x03 \x01(\x0b\x32>.location.nearby.connections.PayloadTransferFrame.PayloadChunk\x12Y\n\x0f\x63ontrol_message\x18\x04 \x01(\x0b\x32@.location.nearby.connections.PayloadTransferFrame.ControlMessage\x1a\x94\x02\n\rPayloadHeader\x12\n\n\x02id\x18\x01 \x01(\x03\x12Y\n\x04type\x18\x02 \x01(\x0e\x32K.location.nearby.connections.PayloadTransferFrame.PayloadHeader.PayloadType\x12\x12\n\ntotal_size\x18\x03 \x01(\x03\x12\x14\n\x0cis_sensitive\x18\x04 \x01(\x08\x12\x11\n\tfile_name\x18\x05 \x01(\t\x12\x15\n\rparent_folder\x18\x06 \x01(\t\"H\n\x0bPayloadType\x12\x18\n\x14UNKNOWN_PAYLOAD_TYPE\x10\x00\x12\t\n\x05\x42YTES\x10\x01\x12\x08\n\x04\x46ILE\x10\x02\x12\n\n\x06STREAM\x10\x03\x1aT\n\x0cPayloadChunk\x12\r\n\x05\x66lags\x18\x01 \x01(\x05\x12\x0e\n\x06offset\x18\x02 \x01(\x03\x12\x0c\n\x04\x62ody\x18\x03 \x01(\x0c\"\x17\n\x05\x46lags\x12\x0e\n\nLAST_CHUNK\x10\x01\x1a\xe3\x01\n\x0e\x43ontrolMessage\x12Y\n\x05\x65vent\x18\x01 \x01(\x0e\x32J.location.nearby.connections.PayloadTransferFrame.ControlMessage.EventType\x12\x0e\n\x06offset\x18\x02 \x01(\x03\"f\n\tEventType\x12\x16\n\x12UNKNOWN_EVENT_TYPE\x10\x00\x12\x11\n\rPAYLOAD_ERROR\x10\x01\x12\x14\n\x10PAYLOAD_CANCELED\x10\x02\x12\x18\n\x14PAYLOAD_RECEIVED_ACK\x10\x03\"<\n\nPacketType\x12\x17\n\x13UNKNOWN_PACKET_TYPE\x10\x00\x12\x08\n\x04\x44\x41TA\x10\x01\x12\x0b\n\x07\x43ONTROL\x10\x02\"\xa9\x13\n BandwidthUpgradeNegotiationFrame\x12[\n\nevent_type\x18\x01 \x01(\x0e\x32G.location.nearby.connections.BandwidthUpgradeNegotiationFrame.EventType\x12h\n\x11upgrade_path_info\x18\x02 \x01(\x0b\x32M.location.nearby.connections.BandwidthUpgradeNegotiationFrame.UpgradePathInfo\x12m\n\x13\x63lient_introduction\x18\x03 \x01(\x0b\x32P.location.nearby.connections.BandwidthUpgradeNegotiationFrame.ClientIntroduction\x12t\n\x17\x63lient_introduction_ack\x18\x04 \x01(\x0b\x32S.location.nearby.connections.BandwidthUpgradeNegotiationFrame.ClientIntroductionAck\x1a\x9e\r\n\x0fUpgradePathInfo\x12\x64\n\x06medium\x18\x01 \x01(\x0e\x32T.location.nearby.connections.BandwidthUpgradeNegotiationFrame.UpgradePathInfo.Medium\x12\x86\x01\n\x18wifi_hotspot_credentials\x18\x02 \x01(\x0b\x32\x64.location.nearby.connections.BandwidthUpgradeNegotiationFrame.UpgradePathInfo.WifiHotspotCredentials\x12t\n\x0fwifi_lan_socket\x18\x03 \x01(\x0b\x32[.location.nearby.connections.BandwidthUpgradeNegotiationFrame.UpgradePathInfo.WifiLanSocket\x12\x81\x01\n\x15\x62luetooth_credentials\x18\x04 \x01(\x0b\x32\x62.location.nearby.connections.BandwidthUpgradeNegotiationFrame.UpgradePathInfo.BluetoothCredentials\x12\x82\x01\n\x16wifi_aware_credentials\x18\x05 \x01(\x0b\x32\x62.location.nearby.connections.BandwidthUpgradeNegotiationFrame.UpgradePathInfo.WifiAwareCredentials\x12\x84\x01\n\x17wifi_direct_credentials\x18\x06 \x01(\x0b\x32\x63.location.nearby.connections.BandwidthUpgradeNegotiationFrame.UpgradePathInfo.WifiDirectCredentials\x12|\n\x13web_rtc_credentials\x18\x08 \x01(\x0b\x32_.location.nearby.connections.BandwidthUpgradeNegotiationFrame.UpgradePathInfo.WebRtcCredentials\x12%\n\x1dsupports_disabling_encryption\x18\x07 \x01(\x08\x12(\n supports_client_introduction_ack\x18\t \x01(\x08\x1aw\n\x16WifiHotspotCredentials\x12\x0c\n\x04ssid\x18\x01 \x01(\t\x12\x10\n\x08password\x18\x02 \x01(\t\x12\x0c\n\x04port\x18\x03 \x01(\x05\x12\x18\n\x07gateway\x18\x04 \x01(\t:\x07\x30.0.0.0\x12\x15\n\tfrequency\x18\x05 \x01(\x05:\x02-1\x1a\x36\n\rWifiLanSocket\x12\x12\n\nip_address\x18\x01 \x01(\x0c\x12\x11\n\twifi_port\x18\x02 \x01(\x05\x1a\x41\n\x14\x42luetoothCredentials\x12\x14\n\x0cservice_name\x18\x01 \x01(\t\x12\x13\n\x0bmac_address\x18\x02 \x01(\t\x1aR\n\x14WifiAwareCredentials\x12\x12\n\nservice_id\x18\x01 \x01(\t\x12\x14\n\x0cservice_info\x18\x02 \x01(\x0c\x12\x10\n\x08password\x18\x03 \x01(\t\x1ar\n\x15WifiDirectCredentials\x12\x0c\n\x04ssid\x18\x01 \x01(\t\x12\x10\n\x08password\x18\x02 \x01(\t\x12\x0c\n\x04port\x18\x03 \x01(\x05\x12\x11\n\tfrequency\x18\x04 \x01(\x05\x12\x18\n\x07gateway\x18\x05 \x01(\t:\x07\x30.0.0.0\x1a\x66\n\x11WebRtcCredentials\x12\x0f\n\x07peer_id\x18\x01 \x01(\t\x12@\n\rlocation_hint\x18\x02 \x01(\x0b\x32).location.nearby.connections.LocationHint\"\xa2\x01\n\x06Medium\x12\x12\n\x0eUNKNOWN_MEDIUM\x10\x00\x12\x0c\n\x04MDNS\x10\x01\x1a\x02\x08\x01\x12\r\n\tBLUETOOTH\x10\x02\x12\x10\n\x0cWIFI_HOTSPOT\x10\x03\x12\x07\n\x03\x42LE\x10\x04\x12\x0c\n\x08WIFI_LAN\x10\x05\x12\x0e\n\nWIFI_AWARE\x10\x06\x12\x07\n\x03NFC\x10\x07\x12\x0f\n\x0bWIFI_DIRECT\x10\x08\x12\x0b\n\x07WEB_RTC\x10\t\x12\x07\n\x03USB\x10\x0b\x1aP\n\x12\x43lientIntroduction\x12\x13\n\x0b\x65ndpoint_id\x18\x01 \x01(\t\x12%\n\x1dsupports_disabling_encryption\x18\x02 \x01(\x08\x1a\x17\n\x15\x43lientIntroductionAck\"\xcc\x01\n\tEventType\x12\x16\n\x12UNKNOWN_EVENT_TYPE\x10\x00\x12\x1a\n\x16UPGRADE_PATH_AVAILABLE\x10\x01\x12\x1f\n\x1bLAST_WRITE_TO_PRIOR_CHANNEL\x10\x02\x12\x1f\n\x1bSAFE_TO_CLOSE_PRIOR_CHANNEL\x10\x03\x12\x17\n\x13\x43LIENT_INTRODUCTION\x10\x04\x12\x13\n\x0fUPGRADE_FAILURE\x10\x05\x12\x1b\n\x17\x43LIENT_INTRODUCTION_ACK\x10\x06\"\x1d\n\x0eKeepAliveFrame\x12\x0b\n\x03\x61\x63k\x18\x01 \x01(\x08\"X\n\x12\x44isconnectionFrame\x12\"\n\x1arequest_safe_to_disconnect\x18\x01 \x01(\x08\x12\x1e\n\x16\x61\x63k_safe_to_disconnect\x18\x02 \x01(\x08\"/\n\x18PairedKeyEncryptionFrame\x12\x13\n\x0bsigned_data\x18\x01 \x01(\x0c\"\xd7\x04\n\x0eMediumMetadata\x12\x16\n\x0esupports_5_ghz\x18\x01 \x01(\x08\x12\r\n\x05\x62ssid\x18\x02 \x01(\t\x12\x12\n\nip_address\x18\x03 \x01(\x0c\x12\x16\n\x0esupports_6_ghz\x18\x04 \x01(\x08\x12\x14\n\x0cmobile_radio\x18\x05 \x01(\x08\x12\x18\n\x0c\x61p_frequency\x18\x06 \x01(\x05:\x02-1\x12J\n\x12\x61vailable_channels\x18\x07 \x01(\x0b\x32..location.nearby.connections.AvailableChannels\x12\x61\n\x1fwifi_direct_cli_usable_channels\x18\x08 \x01(\x0b\x32\x38.location.nearby.connections.WifiDirectCliUsableChannels\x12T\n\x18wifi_lan_usable_channels\x18\t \x01(\x0b\x32\x32.location.nearby.connections.WifiLanUsableChannels\x12X\n\x1awifi_aware_usable_channels\x18\n \x01(\x0b\x32\x34.location.nearby.connections.WifiAwareUsableChannels\x12\x63\n wifi_hotspot_sta_usable_channels\x18\x0b \x01(\x0b\x32\x39.location.nearby.connections.WifiHotspotStaUsableChannels\")\n\x11\x41vailableChannels\x12\x14\n\x08\x63hannels\x18\x01 \x03(\x05\x42\x02\x10\x01\"3\n\x1bWifiDirectCliUsableChannels\x12\x14\n\x08\x63hannels\x18\x01 \x03(\x05\x42\x02\x10\x01\"-\n\x15WifiLanUsableChannels\x12\x14\n\x08\x63hannels\x18\x01 \x03(\x05\x42\x02\x10\x01\"/\n\x17WifiAwareUsableChannels\x12\x14\n\x08\x63hannels\x18\x01 \x03(\x05\x42\x02\x10\x01\"4\n\x1cWifiHotspotStaUsableChannels\x12\x14\n\x08\x63hannels\x18\x01 \x03(\x05\x42\x02\x10\x01\"f\n\x0cLocationHint\x12\x10\n\x08location\x18\x01 \x01(\t\x12\x44\n\x06\x66ormat\x18\x02 \x01(\x0e\x32\x34.location.nearby.connections.LocationStandard.Format\"S\n\x10LocationStandard\"?\n\x06\x46ormat\x12\x0b\n\x07UNKNOWN\x10\x00\x12\x10\n\x0c\x45\x31\x36\x34_CALLING\x10\x01\x12\x16\n\x12ISO_3166_1_ALPHA_2\x10\x02\"\xa0\x01\n\x06OsInfo\x12\x38\n\x04type\x18\x01 \x01(\x0e\x32*.location.nearby.connections.OsInfo.OsType\"\\\n\x06OsType\x12\x13\n\x0fUNKNOWN_OS_TYPE\x10\x00\x12\x0b\n\x07\x41NDROID\x10\x01\x12\r\n\tCHROME_OS\x10\x02\x12\x0b\n\x07WINDOWS\x10\x03\x12\t\n\x05\x41PPLE\x10\x04\x12\t\n\x05LINUX\x10\x64\x42P\n,com.google.location.nearby.connections.protoB\x17OfflineWireFormatsProtoH\x03\xa2\x02\x04GNCP') -_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, globals()) -_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'offline_wire_formats_pb2', globals()) -if _descriptor._USE_C_DESCRIPTORS == False: - - DESCRIPTOR._options = None - DESCRIPTOR._serialized_options = b'\n,com.google.location.nearby.connections.protoB\027OfflineWireFormatsProtoH\003\242\002\004GNCP' - _CONNECTIONREQUESTFRAME_MEDIUM.values_by_name["MDNS"]._options = None - _CONNECTIONREQUESTFRAME_MEDIUM.values_by_name["MDNS"]._serialized_options = b'\010\001' - _CONNECTIONRESPONSEFRAME.fields_by_name['status']._options = None - _CONNECTIONRESPONSEFRAME.fields_by_name['status']._serialized_options = b'\030\001' - _BANDWIDTHUPGRADENEGOTIATIONFRAME_UPGRADEPATHINFO_MEDIUM.values_by_name["MDNS"]._options = None - _BANDWIDTHUPGRADENEGOTIATIONFRAME_UPGRADEPATHINFO_MEDIUM.values_by_name["MDNS"]._serialized_options = b'\010\001' - _AVAILABLECHANNELS.fields_by_name['channels']._options = None - _AVAILABLECHANNELS.fields_by_name['channels']._serialized_options = b'\020\001' - _WIFIDIRECTCLIUSABLECHANNELS.fields_by_name['channels']._options = None - _WIFIDIRECTCLIUSABLECHANNELS.fields_by_name['channels']._serialized_options = b'\020\001' - _WIFILANUSABLECHANNELS.fields_by_name['channels']._options = None - _WIFILANUSABLECHANNELS.fields_by_name['channels']._serialized_options = b'\020\001' - _WIFIAWAREUSABLECHANNELS.fields_by_name['channels']._options = None - _WIFIAWAREUSABLECHANNELS.fields_by_name['channels']._serialized_options = b'\020\001' - _WIFIHOTSPOTSTAUSABLECHANNELS.fields_by_name['channels']._options = None - _WIFIHOTSPOTSTAUSABLECHANNELS.fields_by_name['channels']._serialized_options = b'\020\001' - _OFFLINEFRAME._serialized_start=60 - _OFFLINEFRAME._serialized_end=232 - _OFFLINEFRAME_VERSION._serialized_start=194 - _OFFLINEFRAME_VERSION._serialized_end=232 - _V1FRAME._serialized_start=235 - _V1FRAME._serialized_end=1078 - _V1FRAME_FRAMETYPE._serialized_start=875 - _V1FRAME_FRAMETYPE._serialized_end=1078 - _CONNECTIONREQUESTFRAME._serialized_start=1081 - _CONNECTIONREQUESTFRAME._serialized_end=1654 - _CONNECTIONREQUESTFRAME_MEDIUM._serialized_start=1477 - _CONNECTIONREQUESTFRAME_MEDIUM._serialized_end=1654 - _CONNECTIONRESPONSEFRAME._serialized_start=1657 - _CONNECTIONRESPONSEFRAME._serialized_end=2008 - _CONNECTIONRESPONSEFRAME_RESPONSESTATUS._serialized_start=1939 - _CONNECTIONRESPONSEFRAME_RESPONSESTATUS._serialized_end=2008 - _PAYLOADTRANSFERFRAME._serialized_start=2011 - _PAYLOADTRANSFERFRAME._serialized_end=3040 - _PAYLOADTRANSFERFRAME_PAYLOADHEADER._serialized_start=2386 - _PAYLOADTRANSFERFRAME_PAYLOADHEADER._serialized_end=2662 - _PAYLOADTRANSFERFRAME_PAYLOADHEADER_PAYLOADTYPE._serialized_start=2590 - _PAYLOADTRANSFERFRAME_PAYLOADHEADER_PAYLOADTYPE._serialized_end=2662 - _PAYLOADTRANSFERFRAME_PAYLOADCHUNK._serialized_start=2664 - _PAYLOADTRANSFERFRAME_PAYLOADCHUNK._serialized_end=2748 - _PAYLOADTRANSFERFRAME_PAYLOADCHUNK_FLAGS._serialized_start=2725 - _PAYLOADTRANSFERFRAME_PAYLOADCHUNK_FLAGS._serialized_end=2748 - _PAYLOADTRANSFERFRAME_CONTROLMESSAGE._serialized_start=2751 - _PAYLOADTRANSFERFRAME_CONTROLMESSAGE._serialized_end=2978 - _PAYLOADTRANSFERFRAME_CONTROLMESSAGE_EVENTTYPE._serialized_start=2876 - _PAYLOADTRANSFERFRAME_CONTROLMESSAGE_EVENTTYPE._serialized_end=2978 - _PAYLOADTRANSFERFRAME_PACKETTYPE._serialized_start=2980 - _PAYLOADTRANSFERFRAME_PACKETTYPE._serialized_end=3040 - _BANDWIDTHUPGRADENEGOTIATIONFRAME._serialized_start=3043 - _BANDWIDTHUPGRADENEGOTIATIONFRAME._serialized_end=5516 - _BANDWIDTHUPGRADENEGOTIATIONFRAME_UPGRADEPATHINFO._serialized_start=3508 - _BANDWIDTHUPGRADENEGOTIATIONFRAME_UPGRADEPATHINFO._serialized_end=5202 - _BANDWIDTHUPGRADENEGOTIATIONFRAME_UPGRADEPATHINFO_WIFIHOTSPOTCREDENTIALS._serialized_start=4491 - _BANDWIDTHUPGRADENEGOTIATIONFRAME_UPGRADEPATHINFO_WIFIHOTSPOTCREDENTIALS._serialized_end=4610 - _BANDWIDTHUPGRADENEGOTIATIONFRAME_UPGRADEPATHINFO_WIFILANSOCKET._serialized_start=4612 - _BANDWIDTHUPGRADENEGOTIATIONFRAME_UPGRADEPATHINFO_WIFILANSOCKET._serialized_end=4666 - _BANDWIDTHUPGRADENEGOTIATIONFRAME_UPGRADEPATHINFO_BLUETOOTHCREDENTIALS._serialized_start=4668 - _BANDWIDTHUPGRADENEGOTIATIONFRAME_UPGRADEPATHINFO_BLUETOOTHCREDENTIALS._serialized_end=4733 - _BANDWIDTHUPGRADENEGOTIATIONFRAME_UPGRADEPATHINFO_WIFIAWARECREDENTIALS._serialized_start=4735 - _BANDWIDTHUPGRADENEGOTIATIONFRAME_UPGRADEPATHINFO_WIFIAWARECREDENTIALS._serialized_end=4817 - _BANDWIDTHUPGRADENEGOTIATIONFRAME_UPGRADEPATHINFO_WIFIDIRECTCREDENTIALS._serialized_start=4819 - _BANDWIDTHUPGRADENEGOTIATIONFRAME_UPGRADEPATHINFO_WIFIDIRECTCREDENTIALS._serialized_end=4933 - _BANDWIDTHUPGRADENEGOTIATIONFRAME_UPGRADEPATHINFO_WEBRTCCREDENTIALS._serialized_start=4935 - _BANDWIDTHUPGRADENEGOTIATIONFRAME_UPGRADEPATHINFO_WEBRTCCREDENTIALS._serialized_end=5037 - _BANDWIDTHUPGRADENEGOTIATIONFRAME_UPGRADEPATHINFO_MEDIUM._serialized_start=5040 - _BANDWIDTHUPGRADENEGOTIATIONFRAME_UPGRADEPATHINFO_MEDIUM._serialized_end=5202 - _BANDWIDTHUPGRADENEGOTIATIONFRAME_CLIENTINTRODUCTION._serialized_start=5204 - _BANDWIDTHUPGRADENEGOTIATIONFRAME_CLIENTINTRODUCTION._serialized_end=5284 - _BANDWIDTHUPGRADENEGOTIATIONFRAME_CLIENTINTRODUCTIONACK._serialized_start=5286 - _BANDWIDTHUPGRADENEGOTIATIONFRAME_CLIENTINTRODUCTIONACK._serialized_end=5309 - _BANDWIDTHUPGRADENEGOTIATIONFRAME_EVENTTYPE._serialized_start=5312 - _BANDWIDTHUPGRADENEGOTIATIONFRAME_EVENTTYPE._serialized_end=5516 - _KEEPALIVEFRAME._serialized_start=5518 - _KEEPALIVEFRAME._serialized_end=5547 - _DISCONNECTIONFRAME._serialized_start=5549 - _DISCONNECTIONFRAME._serialized_end=5637 - _PAIREDKEYENCRYPTIONFRAME._serialized_start=5639 - _PAIREDKEYENCRYPTIONFRAME._serialized_end=5686 - _MEDIUMMETADATA._serialized_start=5689 - _MEDIUMMETADATA._serialized_end=6288 - _AVAILABLECHANNELS._serialized_start=6290 - _AVAILABLECHANNELS._serialized_end=6331 - _WIFIDIRECTCLIUSABLECHANNELS._serialized_start=6333 - _WIFIDIRECTCLIUSABLECHANNELS._serialized_end=6384 - _WIFILANUSABLECHANNELS._serialized_start=6386 - _WIFILANUSABLECHANNELS._serialized_end=6431 - _WIFIAWAREUSABLECHANNELS._serialized_start=6433 - _WIFIAWAREUSABLECHANNELS._serialized_end=6480 - _WIFIHOTSPOTSTAUSABLECHANNELS._serialized_start=6482 - _WIFIHOTSPOTSTAUSABLECHANNELS._serialized_end=6534 - _LOCATIONHINT._serialized_start=6536 - _LOCATIONHINT._serialized_end=6638 - _LOCATIONSTANDARD._serialized_start=6640 - _LOCATIONSTANDARD._serialized_end=6723 - _LOCATIONSTANDARD_FORMAT._serialized_start=6660 - _LOCATIONSTANDARD_FORMAT._serialized_end=6723 - _OSINFO._serialized_start=6726 - _OSINFO._serialized_end=6886 - _OSINFO_OSTYPE._serialized_start=6794 - _OSINFO_OSTYPE._serialized_end=6886 +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'offline_wire_formats_pb2', _globals) +if not _descriptor._USE_C_DESCRIPTORS: + _globals['DESCRIPTOR']._loaded_options = None + _globals['DESCRIPTOR']._serialized_options = b'\n,com.google.location.nearby.connections.protoB\027OfflineWireFormatsProtoH\003\242\002\004GNCP' + _globals['_CONNECTIONREQUESTFRAME_MEDIUM'].values_by_name["MDNS"]._loaded_options = None + _globals['_CONNECTIONREQUESTFRAME_MEDIUM'].values_by_name["MDNS"]._serialized_options = b'\010\001' + _globals['_CONNECTIONRESPONSEFRAME'].fields_by_name['status']._loaded_options = None + _globals['_CONNECTIONRESPONSEFRAME'].fields_by_name['status']._serialized_options = b'\030\001' + _globals['_BANDWIDTHUPGRADENEGOTIATIONFRAME_UPGRADEPATHINFO_MEDIUM'].values_by_name["MDNS"]._loaded_options = None + _globals['_BANDWIDTHUPGRADENEGOTIATIONFRAME_UPGRADEPATHINFO_MEDIUM'].values_by_name["MDNS"]._serialized_options = b'\010\001' + _globals['_AVAILABLECHANNELS'].fields_by_name['channels']._loaded_options = None + _globals['_AVAILABLECHANNELS'].fields_by_name['channels']._serialized_options = b'\020\001' + _globals['_WIFIDIRECTCLIUSABLECHANNELS'].fields_by_name['channels']._loaded_options = None + _globals['_WIFIDIRECTCLIUSABLECHANNELS'].fields_by_name['channels']._serialized_options = b'\020\001' + _globals['_WIFILANUSABLECHANNELS'].fields_by_name['channels']._loaded_options = None + _globals['_WIFILANUSABLECHANNELS'].fields_by_name['channels']._serialized_options = b'\020\001' + _globals['_WIFIAWAREUSABLECHANNELS'].fields_by_name['channels']._loaded_options = None + _globals['_WIFIAWAREUSABLECHANNELS'].fields_by_name['channels']._serialized_options = b'\020\001' + _globals['_WIFIHOTSPOTSTAUSABLECHANNELS'].fields_by_name['channels']._loaded_options = None + _globals['_WIFIHOTSPOTSTAUSABLECHANNELS'].fields_by_name['channels']._serialized_options = b'\020\001' + _globals['_OFFLINEFRAME']._serialized_start=60 + _globals['_OFFLINEFRAME']._serialized_end=232 + _globals['_OFFLINEFRAME_VERSION']._serialized_start=194 + _globals['_OFFLINEFRAME_VERSION']._serialized_end=232 + _globals['_V1FRAME']._serialized_start=235 + _globals['_V1FRAME']._serialized_end=1078 + _globals['_V1FRAME_FRAMETYPE']._serialized_start=875 + _globals['_V1FRAME_FRAMETYPE']._serialized_end=1078 + _globals['_CONNECTIONREQUESTFRAME']._serialized_start=1081 + _globals['_CONNECTIONREQUESTFRAME']._serialized_end=1654 + _globals['_CONNECTIONREQUESTFRAME_MEDIUM']._serialized_start=1477 + _globals['_CONNECTIONREQUESTFRAME_MEDIUM']._serialized_end=1654 + _globals['_CONNECTIONRESPONSEFRAME']._serialized_start=1657 + _globals['_CONNECTIONRESPONSEFRAME']._serialized_end=2008 + _globals['_CONNECTIONRESPONSEFRAME_RESPONSESTATUS']._serialized_start=1939 + _globals['_CONNECTIONRESPONSEFRAME_RESPONSESTATUS']._serialized_end=2008 + _globals['_PAYLOADTRANSFERFRAME']._serialized_start=2011 + _globals['_PAYLOADTRANSFERFRAME']._serialized_end=3040 + _globals['_PAYLOADTRANSFERFRAME_PAYLOADHEADER']._serialized_start=2386 + _globals['_PAYLOADTRANSFERFRAME_PAYLOADHEADER']._serialized_end=2662 + _globals['_PAYLOADTRANSFERFRAME_PAYLOADHEADER_PAYLOADTYPE']._serialized_start=2590 + _globals['_PAYLOADTRANSFERFRAME_PAYLOADHEADER_PAYLOADTYPE']._serialized_end=2662 + _globals['_PAYLOADTRANSFERFRAME_PAYLOADCHUNK']._serialized_start=2664 + _globals['_PAYLOADTRANSFERFRAME_PAYLOADCHUNK']._serialized_end=2748 + _globals['_PAYLOADTRANSFERFRAME_PAYLOADCHUNK_FLAGS']._serialized_start=2725 + _globals['_PAYLOADTRANSFERFRAME_PAYLOADCHUNK_FLAGS']._serialized_end=2748 + _globals['_PAYLOADTRANSFERFRAME_CONTROLMESSAGE']._serialized_start=2751 + _globals['_PAYLOADTRANSFERFRAME_CONTROLMESSAGE']._serialized_end=2978 + _globals['_PAYLOADTRANSFERFRAME_CONTROLMESSAGE_EVENTTYPE']._serialized_start=2876 + _globals['_PAYLOADTRANSFERFRAME_CONTROLMESSAGE_EVENTTYPE']._serialized_end=2978 + _globals['_PAYLOADTRANSFERFRAME_PACKETTYPE']._serialized_start=2980 + _globals['_PAYLOADTRANSFERFRAME_PACKETTYPE']._serialized_end=3040 + _globals['_BANDWIDTHUPGRADENEGOTIATIONFRAME']._serialized_start=3043 + _globals['_BANDWIDTHUPGRADENEGOTIATIONFRAME']._serialized_end=5516 + _globals['_BANDWIDTHUPGRADENEGOTIATIONFRAME_UPGRADEPATHINFO']._serialized_start=3508 + _globals['_BANDWIDTHUPGRADENEGOTIATIONFRAME_UPGRADEPATHINFO']._serialized_end=5202 + _globals['_BANDWIDTHUPGRADENEGOTIATIONFRAME_UPGRADEPATHINFO_WIFIHOTSPOTCREDENTIALS']._serialized_start=4491 + _globals['_BANDWIDTHUPGRADENEGOTIATIONFRAME_UPGRADEPATHINFO_WIFIHOTSPOTCREDENTIALS']._serialized_end=4610 + _globals['_BANDWIDTHUPGRADENEGOTIATIONFRAME_UPGRADEPATHINFO_WIFILANSOCKET']._serialized_start=4612 + _globals['_BANDWIDTHUPGRADENEGOTIATIONFRAME_UPGRADEPATHINFO_WIFILANSOCKET']._serialized_end=4666 + _globals['_BANDWIDTHUPGRADENEGOTIATIONFRAME_UPGRADEPATHINFO_BLUETOOTHCREDENTIALS']._serialized_start=4668 + _globals['_BANDWIDTHUPGRADENEGOTIATIONFRAME_UPGRADEPATHINFO_BLUETOOTHCREDENTIALS']._serialized_end=4733 + _globals['_BANDWIDTHUPGRADENEGOTIATIONFRAME_UPGRADEPATHINFO_WIFIAWARECREDENTIALS']._serialized_start=4735 + _globals['_BANDWIDTHUPGRADENEGOTIATIONFRAME_UPGRADEPATHINFO_WIFIAWARECREDENTIALS']._serialized_end=4817 + _globals['_BANDWIDTHUPGRADENEGOTIATIONFRAME_UPGRADEPATHINFO_WIFIDIRECTCREDENTIALS']._serialized_start=4819 + _globals['_BANDWIDTHUPGRADENEGOTIATIONFRAME_UPGRADEPATHINFO_WIFIDIRECTCREDENTIALS']._serialized_end=4933 + _globals['_BANDWIDTHUPGRADENEGOTIATIONFRAME_UPGRADEPATHINFO_WEBRTCCREDENTIALS']._serialized_start=4935 + _globals['_BANDWIDTHUPGRADENEGOTIATIONFRAME_UPGRADEPATHINFO_WEBRTCCREDENTIALS']._serialized_end=5037 + _globals['_BANDWIDTHUPGRADENEGOTIATIONFRAME_UPGRADEPATHINFO_MEDIUM']._serialized_start=5040 + _globals['_BANDWIDTHUPGRADENEGOTIATIONFRAME_UPGRADEPATHINFO_MEDIUM']._serialized_end=5202 + _globals['_BANDWIDTHUPGRADENEGOTIATIONFRAME_CLIENTINTRODUCTION']._serialized_start=5204 + _globals['_BANDWIDTHUPGRADENEGOTIATIONFRAME_CLIENTINTRODUCTION']._serialized_end=5284 + _globals['_BANDWIDTHUPGRADENEGOTIATIONFRAME_CLIENTINTRODUCTIONACK']._serialized_start=5286 + _globals['_BANDWIDTHUPGRADENEGOTIATIONFRAME_CLIENTINTRODUCTIONACK']._serialized_end=5309 + _globals['_BANDWIDTHUPGRADENEGOTIATIONFRAME_EVENTTYPE']._serialized_start=5312 + _globals['_BANDWIDTHUPGRADENEGOTIATIONFRAME_EVENTTYPE']._serialized_end=5516 + _globals['_KEEPALIVEFRAME']._serialized_start=5518 + _globals['_KEEPALIVEFRAME']._serialized_end=5547 + _globals['_DISCONNECTIONFRAME']._serialized_start=5549 + _globals['_DISCONNECTIONFRAME']._serialized_end=5637 + _globals['_PAIREDKEYENCRYPTIONFRAME']._serialized_start=5639 + _globals['_PAIREDKEYENCRYPTIONFRAME']._serialized_end=5686 + _globals['_MEDIUMMETADATA']._serialized_start=5689 + _globals['_MEDIUMMETADATA']._serialized_end=6288 + _globals['_AVAILABLECHANNELS']._serialized_start=6290 + _globals['_AVAILABLECHANNELS']._serialized_end=6331 + _globals['_WIFIDIRECTCLIUSABLECHANNELS']._serialized_start=6333 + _globals['_WIFIDIRECTCLIUSABLECHANNELS']._serialized_end=6384 + _globals['_WIFILANUSABLECHANNELS']._serialized_start=6386 + _globals['_WIFILANUSABLECHANNELS']._serialized_end=6431 + _globals['_WIFIAWAREUSABLECHANNELS']._serialized_start=6433 + _globals['_WIFIAWAREUSABLECHANNELS']._serialized_end=6480 + _globals['_WIFIHOTSPOTSTAUSABLECHANNELS']._serialized_start=6482 + _globals['_WIFIHOTSPOTSTAUSABLECHANNELS']._serialized_end=6534 + _globals['_LOCATIONHINT']._serialized_start=6536 + _globals['_LOCATIONHINT']._serialized_end=6638 + _globals['_LOCATIONSTANDARD']._serialized_start=6640 + _globals['_LOCATIONSTANDARD']._serialized_end=6723 + _globals['_LOCATIONSTANDARD_FORMAT']._serialized_start=6660 + _globals['_LOCATIONSTANDARD_FORMAT']._serialized_end=6723 + _globals['_OSINFO']._serialized_start=6726 + _globals['_OSINFO']._serialized_end=6886 + _globals['_OSINFO_OSTYPE']._serialized_start=6794 + _globals['_OSINFO_OSTYPE']._serialized_end=6886 # @@protoc_insertion_point(module_scope) diff --git a/pyquickshare/protos/offline_wire_formats_pb2.pyi b/pyquickshare/protos/offline_wire_formats_pb2.pyi index 3fba015..113e79c 100644 --- a/pyquickshare/protos/offline_wire_formats_pb2.pyi +++ b/pyquickshare/protos/offline_wire_formats_pb2.pyi @@ -2,400 +2,465 @@ from google.protobuf.internal import containers as _containers from google.protobuf.internal import enum_type_wrapper as _enum_type_wrapper from google.protobuf import descriptor as _descriptor from google.protobuf import message as _message -from typing import ClassVar as _ClassVar, Iterable as _Iterable, Mapping as _Mapping, Optional as _Optional, Union as _Union +from collections.abc import Iterable as _Iterable, Mapping as _Mapping +from typing import ClassVar as _ClassVar, Optional as _Optional, Union as _Union DESCRIPTOR: _descriptor.FileDescriptor -class AvailableChannels(_message.Message): - __slots__ = ["channels"] - CHANNELS_FIELD_NUMBER: _ClassVar[int] - channels: _containers.RepeatedScalarFieldContainer[int] - def __init__(self, channels: _Optional[_Iterable[int]] = ...) -> None: ... +class OfflineFrame(_message.Message): + __slots__ = ("version", "v1") + class Version(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = () + UNKNOWN_VERSION: _ClassVar[OfflineFrame.Version] + V1: _ClassVar[OfflineFrame.Version] + UNKNOWN_VERSION: OfflineFrame.Version + V1: OfflineFrame.Version + VERSION_FIELD_NUMBER: _ClassVar[int] + V1_FIELD_NUMBER: _ClassVar[int] + version: OfflineFrame.Version + v1: V1Frame + def __init__(self, version: _Optional[_Union[OfflineFrame.Version, str]] = ..., v1: _Optional[_Union[V1Frame, _Mapping]] = ...) -> None: ... + +class V1Frame(_message.Message): + __slots__ = ("type", "connection_request", "connection_response", "payload_transfer", "bandwidth_upgrade_negotiation", "keep_alive", "disconnection", "paired_key_encryption") + class FrameType(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = () + UNKNOWN_FRAME_TYPE: _ClassVar[V1Frame.FrameType] + CONNECTION_REQUEST: _ClassVar[V1Frame.FrameType] + CONNECTION_RESPONSE: _ClassVar[V1Frame.FrameType] + PAYLOAD_TRANSFER: _ClassVar[V1Frame.FrameType] + BANDWIDTH_UPGRADE_NEGOTIATION: _ClassVar[V1Frame.FrameType] + KEEP_ALIVE: _ClassVar[V1Frame.FrameType] + DISCONNECTION: _ClassVar[V1Frame.FrameType] + PAIRED_KEY_ENCRYPTION: _ClassVar[V1Frame.FrameType] + UNKNOWN_FRAME_TYPE: V1Frame.FrameType + CONNECTION_REQUEST: V1Frame.FrameType + CONNECTION_RESPONSE: V1Frame.FrameType + PAYLOAD_TRANSFER: V1Frame.FrameType + BANDWIDTH_UPGRADE_NEGOTIATION: V1Frame.FrameType + KEEP_ALIVE: V1Frame.FrameType + DISCONNECTION: V1Frame.FrameType + PAIRED_KEY_ENCRYPTION: V1Frame.FrameType + TYPE_FIELD_NUMBER: _ClassVar[int] + CONNECTION_REQUEST_FIELD_NUMBER: _ClassVar[int] + CONNECTION_RESPONSE_FIELD_NUMBER: _ClassVar[int] + PAYLOAD_TRANSFER_FIELD_NUMBER: _ClassVar[int] + BANDWIDTH_UPGRADE_NEGOTIATION_FIELD_NUMBER: _ClassVar[int] + KEEP_ALIVE_FIELD_NUMBER: _ClassVar[int] + DISCONNECTION_FIELD_NUMBER: _ClassVar[int] + PAIRED_KEY_ENCRYPTION_FIELD_NUMBER: _ClassVar[int] + type: V1Frame.FrameType + connection_request: ConnectionRequestFrame + connection_response: ConnectionResponseFrame + payload_transfer: PayloadTransferFrame + bandwidth_upgrade_negotiation: BandwidthUpgradeNegotiationFrame + keep_alive: KeepAliveFrame + disconnection: DisconnectionFrame + paired_key_encryption: PairedKeyEncryptionFrame + def __init__(self, type: _Optional[_Union[V1Frame.FrameType, str]] = ..., connection_request: _Optional[_Union[ConnectionRequestFrame, _Mapping]] = ..., connection_response: _Optional[_Union[ConnectionResponseFrame, _Mapping]] = ..., payload_transfer: _Optional[_Union[PayloadTransferFrame, _Mapping]] = ..., bandwidth_upgrade_negotiation: _Optional[_Union[BandwidthUpgradeNegotiationFrame, _Mapping]] = ..., keep_alive: _Optional[_Union[KeepAliveFrame, _Mapping]] = ..., disconnection: _Optional[_Union[DisconnectionFrame, _Mapping]] = ..., paired_key_encryption: _Optional[_Union[PairedKeyEncryptionFrame, _Mapping]] = ...) -> None: ... + +class ConnectionRequestFrame(_message.Message): + __slots__ = ("endpoint_id", "endpoint_name", "handshake_data", "nonce", "mediums", "endpoint_info", "medium_metadata", "keep_alive_interval_millis", "keep_alive_timeout_millis", "device_type", "device_info") + class Medium(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = () + UNKNOWN_MEDIUM: _ClassVar[ConnectionRequestFrame.Medium] + MDNS: _ClassVar[ConnectionRequestFrame.Medium] + BLUETOOTH: _ClassVar[ConnectionRequestFrame.Medium] + WIFI_HOTSPOT: _ClassVar[ConnectionRequestFrame.Medium] + BLE: _ClassVar[ConnectionRequestFrame.Medium] + WIFI_LAN: _ClassVar[ConnectionRequestFrame.Medium] + WIFI_AWARE: _ClassVar[ConnectionRequestFrame.Medium] + NFC: _ClassVar[ConnectionRequestFrame.Medium] + WIFI_DIRECT: _ClassVar[ConnectionRequestFrame.Medium] + WEB_RTC: _ClassVar[ConnectionRequestFrame.Medium] + BLE_L2CAP: _ClassVar[ConnectionRequestFrame.Medium] + USB: _ClassVar[ConnectionRequestFrame.Medium] + UNKNOWN_MEDIUM: ConnectionRequestFrame.Medium + MDNS: ConnectionRequestFrame.Medium + BLUETOOTH: ConnectionRequestFrame.Medium + WIFI_HOTSPOT: ConnectionRequestFrame.Medium + BLE: ConnectionRequestFrame.Medium + WIFI_LAN: ConnectionRequestFrame.Medium + WIFI_AWARE: ConnectionRequestFrame.Medium + NFC: ConnectionRequestFrame.Medium + WIFI_DIRECT: ConnectionRequestFrame.Medium + WEB_RTC: ConnectionRequestFrame.Medium + BLE_L2CAP: ConnectionRequestFrame.Medium + USB: ConnectionRequestFrame.Medium + ENDPOINT_ID_FIELD_NUMBER: _ClassVar[int] + ENDPOINT_NAME_FIELD_NUMBER: _ClassVar[int] + HANDSHAKE_DATA_FIELD_NUMBER: _ClassVar[int] + NONCE_FIELD_NUMBER: _ClassVar[int] + MEDIUMS_FIELD_NUMBER: _ClassVar[int] + ENDPOINT_INFO_FIELD_NUMBER: _ClassVar[int] + MEDIUM_METADATA_FIELD_NUMBER: _ClassVar[int] + KEEP_ALIVE_INTERVAL_MILLIS_FIELD_NUMBER: _ClassVar[int] + KEEP_ALIVE_TIMEOUT_MILLIS_FIELD_NUMBER: _ClassVar[int] + DEVICE_TYPE_FIELD_NUMBER: _ClassVar[int] + DEVICE_INFO_FIELD_NUMBER: _ClassVar[int] + endpoint_id: str + endpoint_name: str + handshake_data: bytes + nonce: int + mediums: _containers.RepeatedScalarFieldContainer[ConnectionRequestFrame.Medium] + endpoint_info: bytes + medium_metadata: MediumMetadata + keep_alive_interval_millis: int + keep_alive_timeout_millis: int + device_type: int + device_info: bytes + def __init__(self, endpoint_id: _Optional[str] = ..., endpoint_name: _Optional[str] = ..., handshake_data: _Optional[bytes] = ..., nonce: _Optional[int] = ..., mediums: _Optional[_Iterable[_Union[ConnectionRequestFrame.Medium, str]]] = ..., endpoint_info: _Optional[bytes] = ..., medium_metadata: _Optional[_Union[MediumMetadata, _Mapping]] = ..., keep_alive_interval_millis: _Optional[int] = ..., keep_alive_timeout_millis: _Optional[int] = ..., device_type: _Optional[int] = ..., device_info: _Optional[bytes] = ...) -> None: ... + +class ConnectionResponseFrame(_message.Message): + __slots__ = ("status", "handshake_data", "response", "os_info", "multiplex_socket_bitmask", "nearby_connections_version") + class ResponseStatus(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = () + UNKNOWN_RESPONSE_STATUS: _ClassVar[ConnectionResponseFrame.ResponseStatus] + ACCEPT: _ClassVar[ConnectionResponseFrame.ResponseStatus] + REJECT: _ClassVar[ConnectionResponseFrame.ResponseStatus] + UNKNOWN_RESPONSE_STATUS: ConnectionResponseFrame.ResponseStatus + ACCEPT: ConnectionResponseFrame.ResponseStatus + REJECT: ConnectionResponseFrame.ResponseStatus + STATUS_FIELD_NUMBER: _ClassVar[int] + HANDSHAKE_DATA_FIELD_NUMBER: _ClassVar[int] + RESPONSE_FIELD_NUMBER: _ClassVar[int] + OS_INFO_FIELD_NUMBER: _ClassVar[int] + MULTIPLEX_SOCKET_BITMASK_FIELD_NUMBER: _ClassVar[int] + NEARBY_CONNECTIONS_VERSION_FIELD_NUMBER: _ClassVar[int] + status: int + handshake_data: bytes + response: ConnectionResponseFrame.ResponseStatus + os_info: OsInfo + multiplex_socket_bitmask: int + nearby_connections_version: int + def __init__(self, status: _Optional[int] = ..., handshake_data: _Optional[bytes] = ..., response: _Optional[_Union[ConnectionResponseFrame.ResponseStatus, str]] = ..., os_info: _Optional[_Union[OsInfo, _Mapping]] = ..., multiplex_socket_bitmask: _Optional[int] = ..., nearby_connections_version: _Optional[int] = ...) -> None: ... + +class PayloadTransferFrame(_message.Message): + __slots__ = ("packet_type", "payload_header", "payload_chunk", "control_message") + class PacketType(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = () + UNKNOWN_PACKET_TYPE: _ClassVar[PayloadTransferFrame.PacketType] + DATA: _ClassVar[PayloadTransferFrame.PacketType] + CONTROL: _ClassVar[PayloadTransferFrame.PacketType] + UNKNOWN_PACKET_TYPE: PayloadTransferFrame.PacketType + DATA: PayloadTransferFrame.PacketType + CONTROL: PayloadTransferFrame.PacketType + class PayloadHeader(_message.Message): + __slots__ = ("id", "type", "total_size", "is_sensitive", "file_name", "parent_folder") + class PayloadType(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = () + UNKNOWN_PAYLOAD_TYPE: _ClassVar[PayloadTransferFrame.PayloadHeader.PayloadType] + BYTES: _ClassVar[PayloadTransferFrame.PayloadHeader.PayloadType] + FILE: _ClassVar[PayloadTransferFrame.PayloadHeader.PayloadType] + STREAM: _ClassVar[PayloadTransferFrame.PayloadHeader.PayloadType] + UNKNOWN_PAYLOAD_TYPE: PayloadTransferFrame.PayloadHeader.PayloadType + BYTES: PayloadTransferFrame.PayloadHeader.PayloadType + FILE: PayloadTransferFrame.PayloadHeader.PayloadType + STREAM: PayloadTransferFrame.PayloadHeader.PayloadType + ID_FIELD_NUMBER: _ClassVar[int] + TYPE_FIELD_NUMBER: _ClassVar[int] + TOTAL_SIZE_FIELD_NUMBER: _ClassVar[int] + IS_SENSITIVE_FIELD_NUMBER: _ClassVar[int] + FILE_NAME_FIELD_NUMBER: _ClassVar[int] + PARENT_FOLDER_FIELD_NUMBER: _ClassVar[int] + id: int + type: PayloadTransferFrame.PayloadHeader.PayloadType + total_size: int + is_sensitive: bool + file_name: str + parent_folder: str + def __init__(self, id: _Optional[int] = ..., type: _Optional[_Union[PayloadTransferFrame.PayloadHeader.PayloadType, str]] = ..., total_size: _Optional[int] = ..., is_sensitive: _Optional[bool] = ..., file_name: _Optional[str] = ..., parent_folder: _Optional[str] = ...) -> None: ... + class PayloadChunk(_message.Message): + __slots__ = ("flags", "offset", "body") + class Flags(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = () + LAST_CHUNK: _ClassVar[PayloadTransferFrame.PayloadChunk.Flags] + LAST_CHUNK: PayloadTransferFrame.PayloadChunk.Flags + FLAGS_FIELD_NUMBER: _ClassVar[int] + OFFSET_FIELD_NUMBER: _ClassVar[int] + BODY_FIELD_NUMBER: _ClassVar[int] + flags: int + offset: int + body: bytes + def __init__(self, flags: _Optional[int] = ..., offset: _Optional[int] = ..., body: _Optional[bytes] = ...) -> None: ... + class ControlMessage(_message.Message): + __slots__ = ("event", "offset") + class EventType(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = () + UNKNOWN_EVENT_TYPE: _ClassVar[PayloadTransferFrame.ControlMessage.EventType] + PAYLOAD_ERROR: _ClassVar[PayloadTransferFrame.ControlMessage.EventType] + PAYLOAD_CANCELED: _ClassVar[PayloadTransferFrame.ControlMessage.EventType] + PAYLOAD_RECEIVED_ACK: _ClassVar[PayloadTransferFrame.ControlMessage.EventType] + UNKNOWN_EVENT_TYPE: PayloadTransferFrame.ControlMessage.EventType + PAYLOAD_ERROR: PayloadTransferFrame.ControlMessage.EventType + PAYLOAD_CANCELED: PayloadTransferFrame.ControlMessage.EventType + PAYLOAD_RECEIVED_ACK: PayloadTransferFrame.ControlMessage.EventType + EVENT_FIELD_NUMBER: _ClassVar[int] + OFFSET_FIELD_NUMBER: _ClassVar[int] + event: PayloadTransferFrame.ControlMessage.EventType + offset: int + def __init__(self, event: _Optional[_Union[PayloadTransferFrame.ControlMessage.EventType, str]] = ..., offset: _Optional[int] = ...) -> None: ... + PACKET_TYPE_FIELD_NUMBER: _ClassVar[int] + PAYLOAD_HEADER_FIELD_NUMBER: _ClassVar[int] + PAYLOAD_CHUNK_FIELD_NUMBER: _ClassVar[int] + CONTROL_MESSAGE_FIELD_NUMBER: _ClassVar[int] + packet_type: PayloadTransferFrame.PacketType + payload_header: PayloadTransferFrame.PayloadHeader + payload_chunk: PayloadTransferFrame.PayloadChunk + control_message: PayloadTransferFrame.ControlMessage + def __init__(self, packet_type: _Optional[_Union[PayloadTransferFrame.PacketType, str]] = ..., payload_header: _Optional[_Union[PayloadTransferFrame.PayloadHeader, _Mapping]] = ..., payload_chunk: _Optional[_Union[PayloadTransferFrame.PayloadChunk, _Mapping]] = ..., control_message: _Optional[_Union[PayloadTransferFrame.ControlMessage, _Mapping]] = ...) -> None: ... class BandwidthUpgradeNegotiationFrame(_message.Message): - __slots__ = ["client_introduction", "client_introduction_ack", "event_type", "upgrade_path_info"] + __slots__ = ("event_type", "upgrade_path_info", "client_introduction", "client_introduction_ack") class EventType(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): - __slots__ = [] - class ClientIntroduction(_message.Message): - __slots__ = ["endpoint_id", "supports_disabling_encryption"] - ENDPOINT_ID_FIELD_NUMBER: _ClassVar[int] - SUPPORTS_DISABLING_ENCRYPTION_FIELD_NUMBER: _ClassVar[int] - endpoint_id: str - supports_disabling_encryption: bool - def __init__(self, endpoint_id: _Optional[str] = ..., supports_disabling_encryption: bool = ...) -> None: ... - class ClientIntroductionAck(_message.Message): - __slots__ = [] - def __init__(self) -> None: ... + __slots__ = () + UNKNOWN_EVENT_TYPE: _ClassVar[BandwidthUpgradeNegotiationFrame.EventType] + UPGRADE_PATH_AVAILABLE: _ClassVar[BandwidthUpgradeNegotiationFrame.EventType] + LAST_WRITE_TO_PRIOR_CHANNEL: _ClassVar[BandwidthUpgradeNegotiationFrame.EventType] + SAFE_TO_CLOSE_PRIOR_CHANNEL: _ClassVar[BandwidthUpgradeNegotiationFrame.EventType] + CLIENT_INTRODUCTION: _ClassVar[BandwidthUpgradeNegotiationFrame.EventType] + UPGRADE_FAILURE: _ClassVar[BandwidthUpgradeNegotiationFrame.EventType] + CLIENT_INTRODUCTION_ACK: _ClassVar[BandwidthUpgradeNegotiationFrame.EventType] + UNKNOWN_EVENT_TYPE: BandwidthUpgradeNegotiationFrame.EventType + UPGRADE_PATH_AVAILABLE: BandwidthUpgradeNegotiationFrame.EventType + LAST_WRITE_TO_PRIOR_CHANNEL: BandwidthUpgradeNegotiationFrame.EventType + SAFE_TO_CLOSE_PRIOR_CHANNEL: BandwidthUpgradeNegotiationFrame.EventType + CLIENT_INTRODUCTION: BandwidthUpgradeNegotiationFrame.EventType + UPGRADE_FAILURE: BandwidthUpgradeNegotiationFrame.EventType + CLIENT_INTRODUCTION_ACK: BandwidthUpgradeNegotiationFrame.EventType class UpgradePathInfo(_message.Message): - __slots__ = ["bluetooth_credentials", "medium", "supports_client_introduction_ack", "supports_disabling_encryption", "web_rtc_credentials", "wifi_aware_credentials", "wifi_direct_credentials", "wifi_hotspot_credentials", "wifi_lan_socket"] + __slots__ = ("medium", "wifi_hotspot_credentials", "wifi_lan_socket", "bluetooth_credentials", "wifi_aware_credentials", "wifi_direct_credentials", "web_rtc_credentials", "supports_disabling_encryption", "supports_client_introduction_ack") class Medium(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): - __slots__ = [] + __slots__ = () + UNKNOWN_MEDIUM: _ClassVar[BandwidthUpgradeNegotiationFrame.UpgradePathInfo.Medium] + MDNS: _ClassVar[BandwidthUpgradeNegotiationFrame.UpgradePathInfo.Medium] + BLUETOOTH: _ClassVar[BandwidthUpgradeNegotiationFrame.UpgradePathInfo.Medium] + WIFI_HOTSPOT: _ClassVar[BandwidthUpgradeNegotiationFrame.UpgradePathInfo.Medium] + BLE: _ClassVar[BandwidthUpgradeNegotiationFrame.UpgradePathInfo.Medium] + WIFI_LAN: _ClassVar[BandwidthUpgradeNegotiationFrame.UpgradePathInfo.Medium] + WIFI_AWARE: _ClassVar[BandwidthUpgradeNegotiationFrame.UpgradePathInfo.Medium] + NFC: _ClassVar[BandwidthUpgradeNegotiationFrame.UpgradePathInfo.Medium] + WIFI_DIRECT: _ClassVar[BandwidthUpgradeNegotiationFrame.UpgradePathInfo.Medium] + WEB_RTC: _ClassVar[BandwidthUpgradeNegotiationFrame.UpgradePathInfo.Medium] + USB: _ClassVar[BandwidthUpgradeNegotiationFrame.UpgradePathInfo.Medium] + UNKNOWN_MEDIUM: BandwidthUpgradeNegotiationFrame.UpgradePathInfo.Medium + MDNS: BandwidthUpgradeNegotiationFrame.UpgradePathInfo.Medium + BLUETOOTH: BandwidthUpgradeNegotiationFrame.UpgradePathInfo.Medium + WIFI_HOTSPOT: BandwidthUpgradeNegotiationFrame.UpgradePathInfo.Medium + BLE: BandwidthUpgradeNegotiationFrame.UpgradePathInfo.Medium + WIFI_LAN: BandwidthUpgradeNegotiationFrame.UpgradePathInfo.Medium + WIFI_AWARE: BandwidthUpgradeNegotiationFrame.UpgradePathInfo.Medium + NFC: BandwidthUpgradeNegotiationFrame.UpgradePathInfo.Medium + WIFI_DIRECT: BandwidthUpgradeNegotiationFrame.UpgradePathInfo.Medium + WEB_RTC: BandwidthUpgradeNegotiationFrame.UpgradePathInfo.Medium + USB: BandwidthUpgradeNegotiationFrame.UpgradePathInfo.Medium + class WifiHotspotCredentials(_message.Message): + __slots__ = ("ssid", "password", "port", "gateway", "frequency") + SSID_FIELD_NUMBER: _ClassVar[int] + PASSWORD_FIELD_NUMBER: _ClassVar[int] + PORT_FIELD_NUMBER: _ClassVar[int] + GATEWAY_FIELD_NUMBER: _ClassVar[int] + FREQUENCY_FIELD_NUMBER: _ClassVar[int] + ssid: str + password: str + port: int + gateway: str + frequency: int + def __init__(self, ssid: _Optional[str] = ..., password: _Optional[str] = ..., port: _Optional[int] = ..., gateway: _Optional[str] = ..., frequency: _Optional[int] = ...) -> None: ... + class WifiLanSocket(_message.Message): + __slots__ = ("ip_address", "wifi_port") + IP_ADDRESS_FIELD_NUMBER: _ClassVar[int] + WIFI_PORT_FIELD_NUMBER: _ClassVar[int] + ip_address: bytes + wifi_port: int + def __init__(self, ip_address: _Optional[bytes] = ..., wifi_port: _Optional[int] = ...) -> None: ... class BluetoothCredentials(_message.Message): - __slots__ = ["mac_address", "service_name"] - MAC_ADDRESS_FIELD_NUMBER: _ClassVar[int] + __slots__ = ("service_name", "mac_address") SERVICE_NAME_FIELD_NUMBER: _ClassVar[int] - mac_address: str + MAC_ADDRESS_FIELD_NUMBER: _ClassVar[int] service_name: str + mac_address: str def __init__(self, service_name: _Optional[str] = ..., mac_address: _Optional[str] = ...) -> None: ... - class WebRtcCredentials(_message.Message): - __slots__ = ["location_hint", "peer_id"] - LOCATION_HINT_FIELD_NUMBER: _ClassVar[int] - PEER_ID_FIELD_NUMBER: _ClassVar[int] - location_hint: LocationHint - peer_id: str - def __init__(self, peer_id: _Optional[str] = ..., location_hint: _Optional[_Union[LocationHint, _Mapping]] = ...) -> None: ... class WifiAwareCredentials(_message.Message): - __slots__ = ["password", "service_id", "service_info"] - PASSWORD_FIELD_NUMBER: _ClassVar[int] + __slots__ = ("service_id", "service_info", "password") SERVICE_ID_FIELD_NUMBER: _ClassVar[int] SERVICE_INFO_FIELD_NUMBER: _ClassVar[int] - password: str + PASSWORD_FIELD_NUMBER: _ClassVar[int] service_id: str service_info: bytes + password: str def __init__(self, service_id: _Optional[str] = ..., service_info: _Optional[bytes] = ..., password: _Optional[str] = ...) -> None: ... class WifiDirectCredentials(_message.Message): - __slots__ = ["frequency", "gateway", "password", "port", "ssid"] - FREQUENCY_FIELD_NUMBER: _ClassVar[int] - GATEWAY_FIELD_NUMBER: _ClassVar[int] + __slots__ = ("ssid", "password", "port", "frequency", "gateway") + SSID_FIELD_NUMBER: _ClassVar[int] PASSWORD_FIELD_NUMBER: _ClassVar[int] PORT_FIELD_NUMBER: _ClassVar[int] - SSID_FIELD_NUMBER: _ClassVar[int] - frequency: int - gateway: str - password: str - port: int - ssid: str - def __init__(self, ssid: _Optional[str] = ..., password: _Optional[str] = ..., port: _Optional[int] = ..., frequency: _Optional[int] = ..., gateway: _Optional[str] = ...) -> None: ... - class WifiHotspotCredentials(_message.Message): - __slots__ = ["frequency", "gateway", "password", "port", "ssid"] FREQUENCY_FIELD_NUMBER: _ClassVar[int] GATEWAY_FIELD_NUMBER: _ClassVar[int] - PASSWORD_FIELD_NUMBER: _ClassVar[int] - PORT_FIELD_NUMBER: _ClassVar[int] - SSID_FIELD_NUMBER: _ClassVar[int] - frequency: int - gateway: str + ssid: str password: str port: int - ssid: str - def __init__(self, ssid: _Optional[str] = ..., password: _Optional[str] = ..., port: _Optional[int] = ..., gateway: _Optional[str] = ..., frequency: _Optional[int] = ...) -> None: ... - class WifiLanSocket(_message.Message): - __slots__ = ["ip_address", "wifi_port"] - IP_ADDRESS_FIELD_NUMBER: _ClassVar[int] - WIFI_PORT_FIELD_NUMBER: _ClassVar[int] - ip_address: bytes - wifi_port: int - def __init__(self, ip_address: _Optional[bytes] = ..., wifi_port: _Optional[int] = ...) -> None: ... - BLE: BandwidthUpgradeNegotiationFrame.UpgradePathInfo.Medium - BLUETOOTH: BandwidthUpgradeNegotiationFrame.UpgradePathInfo.Medium - BLUETOOTH_CREDENTIALS_FIELD_NUMBER: _ClassVar[int] - MDNS: BandwidthUpgradeNegotiationFrame.UpgradePathInfo.Medium + frequency: int + gateway: str + def __init__(self, ssid: _Optional[str] = ..., password: _Optional[str] = ..., port: _Optional[int] = ..., frequency: _Optional[int] = ..., gateway: _Optional[str] = ...) -> None: ... + class WebRtcCredentials(_message.Message): + __slots__ = ("peer_id", "location_hint") + PEER_ID_FIELD_NUMBER: _ClassVar[int] + LOCATION_HINT_FIELD_NUMBER: _ClassVar[int] + peer_id: str + location_hint: LocationHint + def __init__(self, peer_id: _Optional[str] = ..., location_hint: _Optional[_Union[LocationHint, _Mapping]] = ...) -> None: ... MEDIUM_FIELD_NUMBER: _ClassVar[int] - NFC: BandwidthUpgradeNegotiationFrame.UpgradePathInfo.Medium - SUPPORTS_CLIENT_INTRODUCTION_ACK_FIELD_NUMBER: _ClassVar[int] - SUPPORTS_DISABLING_ENCRYPTION_FIELD_NUMBER: _ClassVar[int] - UNKNOWN_MEDIUM: BandwidthUpgradeNegotiationFrame.UpgradePathInfo.Medium - USB: BandwidthUpgradeNegotiationFrame.UpgradePathInfo.Medium - WEB_RTC: BandwidthUpgradeNegotiationFrame.UpgradePathInfo.Medium - WEB_RTC_CREDENTIALS_FIELD_NUMBER: _ClassVar[int] - WIFI_AWARE: BandwidthUpgradeNegotiationFrame.UpgradePathInfo.Medium - WIFI_AWARE_CREDENTIALS_FIELD_NUMBER: _ClassVar[int] - WIFI_DIRECT: BandwidthUpgradeNegotiationFrame.UpgradePathInfo.Medium - WIFI_DIRECT_CREDENTIALS_FIELD_NUMBER: _ClassVar[int] - WIFI_HOTSPOT: BandwidthUpgradeNegotiationFrame.UpgradePathInfo.Medium WIFI_HOTSPOT_CREDENTIALS_FIELD_NUMBER: _ClassVar[int] - WIFI_LAN: BandwidthUpgradeNegotiationFrame.UpgradePathInfo.Medium WIFI_LAN_SOCKET_FIELD_NUMBER: _ClassVar[int] - bluetooth_credentials: BandwidthUpgradeNegotiationFrame.UpgradePathInfo.BluetoothCredentials + BLUETOOTH_CREDENTIALS_FIELD_NUMBER: _ClassVar[int] + WIFI_AWARE_CREDENTIALS_FIELD_NUMBER: _ClassVar[int] + WIFI_DIRECT_CREDENTIALS_FIELD_NUMBER: _ClassVar[int] + WEB_RTC_CREDENTIALS_FIELD_NUMBER: _ClassVar[int] + SUPPORTS_DISABLING_ENCRYPTION_FIELD_NUMBER: _ClassVar[int] + SUPPORTS_CLIENT_INTRODUCTION_ACK_FIELD_NUMBER: _ClassVar[int] medium: BandwidthUpgradeNegotiationFrame.UpgradePathInfo.Medium - supports_client_introduction_ack: bool - supports_disabling_encryption: bool - web_rtc_credentials: BandwidthUpgradeNegotiationFrame.UpgradePathInfo.WebRtcCredentials - wifi_aware_credentials: BandwidthUpgradeNegotiationFrame.UpgradePathInfo.WifiAwareCredentials - wifi_direct_credentials: BandwidthUpgradeNegotiationFrame.UpgradePathInfo.WifiDirectCredentials wifi_hotspot_credentials: BandwidthUpgradeNegotiationFrame.UpgradePathInfo.WifiHotspotCredentials wifi_lan_socket: BandwidthUpgradeNegotiationFrame.UpgradePathInfo.WifiLanSocket - def __init__(self, medium: _Optional[_Union[BandwidthUpgradeNegotiationFrame.UpgradePathInfo.Medium, str]] = ..., wifi_hotspot_credentials: _Optional[_Union[BandwidthUpgradeNegotiationFrame.UpgradePathInfo.WifiHotspotCredentials, _Mapping]] = ..., wifi_lan_socket: _Optional[_Union[BandwidthUpgradeNegotiationFrame.UpgradePathInfo.WifiLanSocket, _Mapping]] = ..., bluetooth_credentials: _Optional[_Union[BandwidthUpgradeNegotiationFrame.UpgradePathInfo.BluetoothCredentials, _Mapping]] = ..., wifi_aware_credentials: _Optional[_Union[BandwidthUpgradeNegotiationFrame.UpgradePathInfo.WifiAwareCredentials, _Mapping]] = ..., wifi_direct_credentials: _Optional[_Union[BandwidthUpgradeNegotiationFrame.UpgradePathInfo.WifiDirectCredentials, _Mapping]] = ..., web_rtc_credentials: _Optional[_Union[BandwidthUpgradeNegotiationFrame.UpgradePathInfo.WebRtcCredentials, _Mapping]] = ..., supports_disabling_encryption: bool = ..., supports_client_introduction_ack: bool = ...) -> None: ... - CLIENT_INTRODUCTION: BandwidthUpgradeNegotiationFrame.EventType - CLIENT_INTRODUCTION_ACK: BandwidthUpgradeNegotiationFrame.EventType - CLIENT_INTRODUCTION_ACK_FIELD_NUMBER: _ClassVar[int] - CLIENT_INTRODUCTION_FIELD_NUMBER: _ClassVar[int] + bluetooth_credentials: BandwidthUpgradeNegotiationFrame.UpgradePathInfo.BluetoothCredentials + wifi_aware_credentials: BandwidthUpgradeNegotiationFrame.UpgradePathInfo.WifiAwareCredentials + wifi_direct_credentials: BandwidthUpgradeNegotiationFrame.UpgradePathInfo.WifiDirectCredentials + web_rtc_credentials: BandwidthUpgradeNegotiationFrame.UpgradePathInfo.WebRtcCredentials + supports_disabling_encryption: bool + supports_client_introduction_ack: bool + def __init__(self, medium: _Optional[_Union[BandwidthUpgradeNegotiationFrame.UpgradePathInfo.Medium, str]] = ..., wifi_hotspot_credentials: _Optional[_Union[BandwidthUpgradeNegotiationFrame.UpgradePathInfo.WifiHotspotCredentials, _Mapping]] = ..., wifi_lan_socket: _Optional[_Union[BandwidthUpgradeNegotiationFrame.UpgradePathInfo.WifiLanSocket, _Mapping]] = ..., bluetooth_credentials: _Optional[_Union[BandwidthUpgradeNegotiationFrame.UpgradePathInfo.BluetoothCredentials, _Mapping]] = ..., wifi_aware_credentials: _Optional[_Union[BandwidthUpgradeNegotiationFrame.UpgradePathInfo.WifiAwareCredentials, _Mapping]] = ..., wifi_direct_credentials: _Optional[_Union[BandwidthUpgradeNegotiationFrame.UpgradePathInfo.WifiDirectCredentials, _Mapping]] = ..., web_rtc_credentials: _Optional[_Union[BandwidthUpgradeNegotiationFrame.UpgradePathInfo.WebRtcCredentials, _Mapping]] = ..., supports_disabling_encryption: _Optional[bool] = ..., supports_client_introduction_ack: _Optional[bool] = ...) -> None: ... + class ClientIntroduction(_message.Message): + __slots__ = ("endpoint_id", "supports_disabling_encryption") + ENDPOINT_ID_FIELD_NUMBER: _ClassVar[int] + SUPPORTS_DISABLING_ENCRYPTION_FIELD_NUMBER: _ClassVar[int] + endpoint_id: str + supports_disabling_encryption: bool + def __init__(self, endpoint_id: _Optional[str] = ..., supports_disabling_encryption: _Optional[bool] = ...) -> None: ... + class ClientIntroductionAck(_message.Message): + __slots__ = () + def __init__(self) -> None: ... EVENT_TYPE_FIELD_NUMBER: _ClassVar[int] - LAST_WRITE_TO_PRIOR_CHANNEL: BandwidthUpgradeNegotiationFrame.EventType - SAFE_TO_CLOSE_PRIOR_CHANNEL: BandwidthUpgradeNegotiationFrame.EventType - UNKNOWN_EVENT_TYPE: BandwidthUpgradeNegotiationFrame.EventType - UPGRADE_FAILURE: BandwidthUpgradeNegotiationFrame.EventType - UPGRADE_PATH_AVAILABLE: BandwidthUpgradeNegotiationFrame.EventType UPGRADE_PATH_INFO_FIELD_NUMBER: _ClassVar[int] - client_introduction: BandwidthUpgradeNegotiationFrame.ClientIntroduction - client_introduction_ack: BandwidthUpgradeNegotiationFrame.ClientIntroductionAck + CLIENT_INTRODUCTION_FIELD_NUMBER: _ClassVar[int] + CLIENT_INTRODUCTION_ACK_FIELD_NUMBER: _ClassVar[int] event_type: BandwidthUpgradeNegotiationFrame.EventType upgrade_path_info: BandwidthUpgradeNegotiationFrame.UpgradePathInfo + client_introduction: BandwidthUpgradeNegotiationFrame.ClientIntroduction + client_introduction_ack: BandwidthUpgradeNegotiationFrame.ClientIntroductionAck def __init__(self, event_type: _Optional[_Union[BandwidthUpgradeNegotiationFrame.EventType, str]] = ..., upgrade_path_info: _Optional[_Union[BandwidthUpgradeNegotiationFrame.UpgradePathInfo, _Mapping]] = ..., client_introduction: _Optional[_Union[BandwidthUpgradeNegotiationFrame.ClientIntroduction, _Mapping]] = ..., client_introduction_ack: _Optional[_Union[BandwidthUpgradeNegotiationFrame.ClientIntroductionAck, _Mapping]] = ...) -> None: ... -class ConnectionRequestFrame(_message.Message): - __slots__ = ["device_info", "device_type", "endpoint_id", "endpoint_info", "endpoint_name", "handshake_data", "keep_alive_interval_millis", "keep_alive_timeout_millis", "medium_metadata", "mediums", "nonce"] - class Medium(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): - __slots__ = [] - BLE: ConnectionRequestFrame.Medium - BLE_L2CAP: ConnectionRequestFrame.Medium - BLUETOOTH: ConnectionRequestFrame.Medium - DEVICE_INFO_FIELD_NUMBER: _ClassVar[int] - DEVICE_TYPE_FIELD_NUMBER: _ClassVar[int] - ENDPOINT_ID_FIELD_NUMBER: _ClassVar[int] - ENDPOINT_INFO_FIELD_NUMBER: _ClassVar[int] - ENDPOINT_NAME_FIELD_NUMBER: _ClassVar[int] - HANDSHAKE_DATA_FIELD_NUMBER: _ClassVar[int] - KEEP_ALIVE_INTERVAL_MILLIS_FIELD_NUMBER: _ClassVar[int] - KEEP_ALIVE_TIMEOUT_MILLIS_FIELD_NUMBER: _ClassVar[int] - MDNS: ConnectionRequestFrame.Medium - MEDIUMS_FIELD_NUMBER: _ClassVar[int] - MEDIUM_METADATA_FIELD_NUMBER: _ClassVar[int] - NFC: ConnectionRequestFrame.Medium - NONCE_FIELD_NUMBER: _ClassVar[int] - UNKNOWN_MEDIUM: ConnectionRequestFrame.Medium - USB: ConnectionRequestFrame.Medium - WEB_RTC: ConnectionRequestFrame.Medium - WIFI_AWARE: ConnectionRequestFrame.Medium - WIFI_DIRECT: ConnectionRequestFrame.Medium - WIFI_HOTSPOT: ConnectionRequestFrame.Medium - WIFI_LAN: ConnectionRequestFrame.Medium - device_info: bytes - device_type: int - endpoint_id: str - endpoint_info: bytes - endpoint_name: str - handshake_data: bytes - keep_alive_interval_millis: int - keep_alive_timeout_millis: int - medium_metadata: MediumMetadata - mediums: _containers.RepeatedScalarFieldContainer[ConnectionRequestFrame.Medium] - nonce: int - def __init__(self, endpoint_id: _Optional[str] = ..., endpoint_name: _Optional[str] = ..., handshake_data: _Optional[bytes] = ..., nonce: _Optional[int] = ..., mediums: _Optional[_Iterable[_Union[ConnectionRequestFrame.Medium, str]]] = ..., endpoint_info: _Optional[bytes] = ..., medium_metadata: _Optional[_Union[MediumMetadata, _Mapping]] = ..., keep_alive_interval_millis: _Optional[int] = ..., keep_alive_timeout_millis: _Optional[int] = ..., device_type: _Optional[int] = ..., device_info: _Optional[bytes] = ...) -> None: ... - -class ConnectionResponseFrame(_message.Message): - __slots__ = ["handshake_data", "multiplex_socket_bitmask", "nearby_connections_version", "os_info", "response", "status"] - class ResponseStatus(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): - __slots__ = [] - ACCEPT: ConnectionResponseFrame.ResponseStatus - HANDSHAKE_DATA_FIELD_NUMBER: _ClassVar[int] - MULTIPLEX_SOCKET_BITMASK_FIELD_NUMBER: _ClassVar[int] - NEARBY_CONNECTIONS_VERSION_FIELD_NUMBER: _ClassVar[int] - OS_INFO_FIELD_NUMBER: _ClassVar[int] - REJECT: ConnectionResponseFrame.ResponseStatus - RESPONSE_FIELD_NUMBER: _ClassVar[int] - STATUS_FIELD_NUMBER: _ClassVar[int] - UNKNOWN_RESPONSE_STATUS: ConnectionResponseFrame.ResponseStatus - handshake_data: bytes - multiplex_socket_bitmask: int - nearby_connections_version: int - os_info: OsInfo - response: ConnectionResponseFrame.ResponseStatus - status: int - def __init__(self, status: _Optional[int] = ..., handshake_data: _Optional[bytes] = ..., response: _Optional[_Union[ConnectionResponseFrame.ResponseStatus, str]] = ..., os_info: _Optional[_Union[OsInfo, _Mapping]] = ..., multiplex_socket_bitmask: _Optional[int] = ..., nearby_connections_version: _Optional[int] = ...) -> None: ... - -class DisconnectionFrame(_message.Message): - __slots__ = ["ack_safe_to_disconnect", "request_safe_to_disconnect"] - ACK_SAFE_TO_DISCONNECT_FIELD_NUMBER: _ClassVar[int] - REQUEST_SAFE_TO_DISCONNECT_FIELD_NUMBER: _ClassVar[int] - ack_safe_to_disconnect: bool - request_safe_to_disconnect: bool - def __init__(self, request_safe_to_disconnect: bool = ..., ack_safe_to_disconnect: bool = ...) -> None: ... - class KeepAliveFrame(_message.Message): - __slots__ = ["ack"] + __slots__ = ("ack",) ACK_FIELD_NUMBER: _ClassVar[int] ack: bool - def __init__(self, ack: bool = ...) -> None: ... + def __init__(self, ack: _Optional[bool] = ...) -> None: ... -class LocationHint(_message.Message): - __slots__ = ["format", "location"] - FORMAT_FIELD_NUMBER: _ClassVar[int] - LOCATION_FIELD_NUMBER: _ClassVar[int] - format: LocationStandard.Format - location: str - def __init__(self, location: _Optional[str] = ..., format: _Optional[_Union[LocationStandard.Format, str]] = ...) -> None: ... +class DisconnectionFrame(_message.Message): + __slots__ = ("request_safe_to_disconnect", "ack_safe_to_disconnect") + REQUEST_SAFE_TO_DISCONNECT_FIELD_NUMBER: _ClassVar[int] + ACK_SAFE_TO_DISCONNECT_FIELD_NUMBER: _ClassVar[int] + request_safe_to_disconnect: bool + ack_safe_to_disconnect: bool + def __init__(self, request_safe_to_disconnect: _Optional[bool] = ..., ack_safe_to_disconnect: _Optional[bool] = ...) -> None: ... -class LocationStandard(_message.Message): - __slots__ = [] - class Format(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): - __slots__ = [] - E164_CALLING: LocationStandard.Format - ISO_3166_1_ALPHA_2: LocationStandard.Format - UNKNOWN: LocationStandard.Format - def __init__(self) -> None: ... +class PairedKeyEncryptionFrame(_message.Message): + __slots__ = ("signed_data",) + SIGNED_DATA_FIELD_NUMBER: _ClassVar[int] + signed_data: bytes + def __init__(self, signed_data: _Optional[bytes] = ...) -> None: ... class MediumMetadata(_message.Message): - __slots__ = ["ap_frequency", "available_channels", "bssid", "ip_address", "mobile_radio", "supports_5_ghz", "supports_6_ghz", "wifi_aware_usable_channels", "wifi_direct_cli_usable_channels", "wifi_hotspot_sta_usable_channels", "wifi_lan_usable_channels"] - AP_FREQUENCY_FIELD_NUMBER: _ClassVar[int] - AVAILABLE_CHANNELS_FIELD_NUMBER: _ClassVar[int] + __slots__ = ("supports_5_ghz", "bssid", "ip_address", "supports_6_ghz", "mobile_radio", "ap_frequency", "available_channels", "wifi_direct_cli_usable_channels", "wifi_lan_usable_channels", "wifi_aware_usable_channels", "wifi_hotspot_sta_usable_channels") + SUPPORTS_5_GHZ_FIELD_NUMBER: _ClassVar[int] BSSID_FIELD_NUMBER: _ClassVar[int] IP_ADDRESS_FIELD_NUMBER: _ClassVar[int] - MOBILE_RADIO_FIELD_NUMBER: _ClassVar[int] - SUPPORTS_5_GHZ_FIELD_NUMBER: _ClassVar[int] SUPPORTS_6_GHZ_FIELD_NUMBER: _ClassVar[int] - WIFI_AWARE_USABLE_CHANNELS_FIELD_NUMBER: _ClassVar[int] + MOBILE_RADIO_FIELD_NUMBER: _ClassVar[int] + AP_FREQUENCY_FIELD_NUMBER: _ClassVar[int] + AVAILABLE_CHANNELS_FIELD_NUMBER: _ClassVar[int] WIFI_DIRECT_CLI_USABLE_CHANNELS_FIELD_NUMBER: _ClassVar[int] - WIFI_HOTSPOT_STA_USABLE_CHANNELS_FIELD_NUMBER: _ClassVar[int] WIFI_LAN_USABLE_CHANNELS_FIELD_NUMBER: _ClassVar[int] - ap_frequency: int - available_channels: AvailableChannels + WIFI_AWARE_USABLE_CHANNELS_FIELD_NUMBER: _ClassVar[int] + WIFI_HOTSPOT_STA_USABLE_CHANNELS_FIELD_NUMBER: _ClassVar[int] + supports_5_ghz: bool bssid: str ip_address: bytes - mobile_radio: bool - supports_5_ghz: bool supports_6_ghz: bool - wifi_aware_usable_channels: WifiAwareUsableChannels + mobile_radio: bool + ap_frequency: int + available_channels: AvailableChannels wifi_direct_cli_usable_channels: WifiDirectCliUsableChannels - wifi_hotspot_sta_usable_channels: WifiHotspotStaUsableChannels wifi_lan_usable_channels: WifiLanUsableChannels - def __init__(self, supports_5_ghz: bool = ..., bssid: _Optional[str] = ..., ip_address: _Optional[bytes] = ..., supports_6_ghz: bool = ..., mobile_radio: bool = ..., ap_frequency: _Optional[int] = ..., available_channels: _Optional[_Union[AvailableChannels, _Mapping]] = ..., wifi_direct_cli_usable_channels: _Optional[_Union[WifiDirectCliUsableChannels, _Mapping]] = ..., wifi_lan_usable_channels: _Optional[_Union[WifiLanUsableChannels, _Mapping]] = ..., wifi_aware_usable_channels: _Optional[_Union[WifiAwareUsableChannels, _Mapping]] = ..., wifi_hotspot_sta_usable_channels: _Optional[_Union[WifiHotspotStaUsableChannels, _Mapping]] = ...) -> None: ... - -class OfflineFrame(_message.Message): - __slots__ = ["v1", "version"] - class Version(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): - __slots__ = [] - UNKNOWN_VERSION: OfflineFrame.Version - V1: OfflineFrame.Version - V1_FIELD_NUMBER: _ClassVar[int] - VERSION_FIELD_NUMBER: _ClassVar[int] - v1: V1Frame - version: OfflineFrame.Version - def __init__(self, version: _Optional[_Union[OfflineFrame.Version, str]] = ..., v1: _Optional[_Union[V1Frame, _Mapping]] = ...) -> None: ... - -class OsInfo(_message.Message): - __slots__ = ["type"] - class OsType(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): - __slots__ = [] - ANDROID: OsInfo.OsType - APPLE: OsInfo.OsType - CHROME_OS: OsInfo.OsType - LINUX: OsInfo.OsType - TYPE_FIELD_NUMBER: _ClassVar[int] - UNKNOWN_OS_TYPE: OsInfo.OsType - WINDOWS: OsInfo.OsType - type: OsInfo.OsType - def __init__(self, type: _Optional[_Union[OsInfo.OsType, str]] = ...) -> None: ... - -class PairedKeyEncryptionFrame(_message.Message): - __slots__ = ["signed_data"] - SIGNED_DATA_FIELD_NUMBER: _ClassVar[int] - signed_data: bytes - def __init__(self, signed_data: _Optional[bytes] = ...) -> None: ... - -class PayloadTransferFrame(_message.Message): - __slots__ = ["control_message", "packet_type", "payload_chunk", "payload_header"] - class PacketType(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): - __slots__ = [] - class ControlMessage(_message.Message): - __slots__ = ["event", "offset"] - class EventType(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): - __slots__ = [] - EVENT_FIELD_NUMBER: _ClassVar[int] - OFFSET_FIELD_NUMBER: _ClassVar[int] - PAYLOAD_CANCELED: PayloadTransferFrame.ControlMessage.EventType - PAYLOAD_ERROR: PayloadTransferFrame.ControlMessage.EventType - PAYLOAD_RECEIVED_ACK: PayloadTransferFrame.ControlMessage.EventType - UNKNOWN_EVENT_TYPE: PayloadTransferFrame.ControlMessage.EventType - event: PayloadTransferFrame.ControlMessage.EventType - offset: int - def __init__(self, event: _Optional[_Union[PayloadTransferFrame.ControlMessage.EventType, str]] = ..., offset: _Optional[int] = ...) -> None: ... - class PayloadChunk(_message.Message): - __slots__ = ["body", "flags", "offset"] - class Flags(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): - __slots__ = [] - BODY_FIELD_NUMBER: _ClassVar[int] - FLAGS_FIELD_NUMBER: _ClassVar[int] - LAST_CHUNK: PayloadTransferFrame.PayloadChunk.Flags - OFFSET_FIELD_NUMBER: _ClassVar[int] - body: bytes - flags: int - offset: int - def __init__(self, flags: _Optional[int] = ..., offset: _Optional[int] = ..., body: _Optional[bytes] = ...) -> None: ... - class PayloadHeader(_message.Message): - __slots__ = ["file_name", "id", "is_sensitive", "parent_folder", "total_size", "type"] - class PayloadType(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): - __slots__ = [] - BYTES: PayloadTransferFrame.PayloadHeader.PayloadType - FILE: PayloadTransferFrame.PayloadHeader.PayloadType - FILE_NAME_FIELD_NUMBER: _ClassVar[int] - ID_FIELD_NUMBER: _ClassVar[int] - IS_SENSITIVE_FIELD_NUMBER: _ClassVar[int] - PARENT_FOLDER_FIELD_NUMBER: _ClassVar[int] - STREAM: PayloadTransferFrame.PayloadHeader.PayloadType - TOTAL_SIZE_FIELD_NUMBER: _ClassVar[int] - TYPE_FIELD_NUMBER: _ClassVar[int] - UNKNOWN_PAYLOAD_TYPE: PayloadTransferFrame.PayloadHeader.PayloadType - file_name: str - id: int - is_sensitive: bool - parent_folder: str - total_size: int - type: PayloadTransferFrame.PayloadHeader.PayloadType - def __init__(self, id: _Optional[int] = ..., type: _Optional[_Union[PayloadTransferFrame.PayloadHeader.PayloadType, str]] = ..., total_size: _Optional[int] = ..., is_sensitive: bool = ..., file_name: _Optional[str] = ..., parent_folder: _Optional[str] = ...) -> None: ... - CONTROL: PayloadTransferFrame.PacketType - CONTROL_MESSAGE_FIELD_NUMBER: _ClassVar[int] - DATA: PayloadTransferFrame.PacketType - PACKET_TYPE_FIELD_NUMBER: _ClassVar[int] - PAYLOAD_CHUNK_FIELD_NUMBER: _ClassVar[int] - PAYLOAD_HEADER_FIELD_NUMBER: _ClassVar[int] - UNKNOWN_PACKET_TYPE: PayloadTransferFrame.PacketType - control_message: PayloadTransferFrame.ControlMessage - packet_type: PayloadTransferFrame.PacketType - payload_chunk: PayloadTransferFrame.PayloadChunk - payload_header: PayloadTransferFrame.PayloadHeader - def __init__(self, packet_type: _Optional[_Union[PayloadTransferFrame.PacketType, str]] = ..., payload_header: _Optional[_Union[PayloadTransferFrame.PayloadHeader, _Mapping]] = ..., payload_chunk: _Optional[_Union[PayloadTransferFrame.PayloadChunk, _Mapping]] = ..., control_message: _Optional[_Union[PayloadTransferFrame.ControlMessage, _Mapping]] = ...) -> None: ... - -class V1Frame(_message.Message): - __slots__ = ["bandwidth_upgrade_negotiation", "connection_request", "connection_response", "disconnection", "keep_alive", "paired_key_encryption", "payload_transfer", "type"] - class FrameType(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): - __slots__ = [] - BANDWIDTH_UPGRADE_NEGOTIATION: V1Frame.FrameType - BANDWIDTH_UPGRADE_NEGOTIATION_FIELD_NUMBER: _ClassVar[int] - CONNECTION_REQUEST: V1Frame.FrameType - CONNECTION_REQUEST_FIELD_NUMBER: _ClassVar[int] - CONNECTION_RESPONSE: V1Frame.FrameType - CONNECTION_RESPONSE_FIELD_NUMBER: _ClassVar[int] - DISCONNECTION: V1Frame.FrameType - DISCONNECTION_FIELD_NUMBER: _ClassVar[int] - KEEP_ALIVE: V1Frame.FrameType - KEEP_ALIVE_FIELD_NUMBER: _ClassVar[int] - PAIRED_KEY_ENCRYPTION: V1Frame.FrameType - PAIRED_KEY_ENCRYPTION_FIELD_NUMBER: _ClassVar[int] - PAYLOAD_TRANSFER: V1Frame.FrameType - PAYLOAD_TRANSFER_FIELD_NUMBER: _ClassVar[int] - TYPE_FIELD_NUMBER: _ClassVar[int] - UNKNOWN_FRAME_TYPE: V1Frame.FrameType - bandwidth_upgrade_negotiation: BandwidthUpgradeNegotiationFrame - connection_request: ConnectionRequestFrame - connection_response: ConnectionResponseFrame - disconnection: DisconnectionFrame - keep_alive: KeepAliveFrame - paired_key_encryption: PairedKeyEncryptionFrame - payload_transfer: PayloadTransferFrame - type: V1Frame.FrameType - def __init__(self, type: _Optional[_Union[V1Frame.FrameType, str]] = ..., connection_request: _Optional[_Union[ConnectionRequestFrame, _Mapping]] = ..., connection_response: _Optional[_Union[ConnectionResponseFrame, _Mapping]] = ..., payload_transfer: _Optional[_Union[PayloadTransferFrame, _Mapping]] = ..., bandwidth_upgrade_negotiation: _Optional[_Union[BandwidthUpgradeNegotiationFrame, _Mapping]] = ..., keep_alive: _Optional[_Union[KeepAliveFrame, _Mapping]] = ..., disconnection: _Optional[_Union[DisconnectionFrame, _Mapping]] = ..., paired_key_encryption: _Optional[_Union[PairedKeyEncryptionFrame, _Mapping]] = ...) -> None: ... + wifi_aware_usable_channels: WifiAwareUsableChannels + wifi_hotspot_sta_usable_channels: WifiHotspotStaUsableChannels + def __init__(self, supports_5_ghz: _Optional[bool] = ..., bssid: _Optional[str] = ..., ip_address: _Optional[bytes] = ..., supports_6_ghz: _Optional[bool] = ..., mobile_radio: _Optional[bool] = ..., ap_frequency: _Optional[int] = ..., available_channels: _Optional[_Union[AvailableChannels, _Mapping]] = ..., wifi_direct_cli_usable_channels: _Optional[_Union[WifiDirectCliUsableChannels, _Mapping]] = ..., wifi_lan_usable_channels: _Optional[_Union[WifiLanUsableChannels, _Mapping]] = ..., wifi_aware_usable_channels: _Optional[_Union[WifiAwareUsableChannels, _Mapping]] = ..., wifi_hotspot_sta_usable_channels: _Optional[_Union[WifiHotspotStaUsableChannels, _Mapping]] = ...) -> None: ... -class WifiAwareUsableChannels(_message.Message): - __slots__ = ["channels"] +class AvailableChannels(_message.Message): + __slots__ = ("channels",) CHANNELS_FIELD_NUMBER: _ClassVar[int] channels: _containers.RepeatedScalarFieldContainer[int] def __init__(self, channels: _Optional[_Iterable[int]] = ...) -> None: ... class WifiDirectCliUsableChannels(_message.Message): - __slots__ = ["channels"] + __slots__ = ("channels",) CHANNELS_FIELD_NUMBER: _ClassVar[int] channels: _containers.RepeatedScalarFieldContainer[int] def __init__(self, channels: _Optional[_Iterable[int]] = ...) -> None: ... -class WifiHotspotStaUsableChannels(_message.Message): - __slots__ = ["channels"] +class WifiLanUsableChannels(_message.Message): + __slots__ = ("channels",) CHANNELS_FIELD_NUMBER: _ClassVar[int] channels: _containers.RepeatedScalarFieldContainer[int] def __init__(self, channels: _Optional[_Iterable[int]] = ...) -> None: ... -class WifiLanUsableChannels(_message.Message): - __slots__ = ["channels"] +class WifiAwareUsableChannels(_message.Message): + __slots__ = ("channels",) + CHANNELS_FIELD_NUMBER: _ClassVar[int] + channels: _containers.RepeatedScalarFieldContainer[int] + def __init__(self, channels: _Optional[_Iterable[int]] = ...) -> None: ... + +class WifiHotspotStaUsableChannels(_message.Message): + __slots__ = ("channels",) CHANNELS_FIELD_NUMBER: _ClassVar[int] channels: _containers.RepeatedScalarFieldContainer[int] def __init__(self, channels: _Optional[_Iterable[int]] = ...) -> None: ... + +class LocationHint(_message.Message): + __slots__ = ("location", "format") + LOCATION_FIELD_NUMBER: _ClassVar[int] + FORMAT_FIELD_NUMBER: _ClassVar[int] + location: str + format: LocationStandard.Format + def __init__(self, location: _Optional[str] = ..., format: _Optional[_Union[LocationStandard.Format, str]] = ...) -> None: ... + +class LocationStandard(_message.Message): + __slots__ = () + class Format(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = () + UNKNOWN: _ClassVar[LocationStandard.Format] + E164_CALLING: _ClassVar[LocationStandard.Format] + ISO_3166_1_ALPHA_2: _ClassVar[LocationStandard.Format] + UNKNOWN: LocationStandard.Format + E164_CALLING: LocationStandard.Format + ISO_3166_1_ALPHA_2: LocationStandard.Format + def __init__(self) -> None: ... + +class OsInfo(_message.Message): + __slots__ = ("type",) + class OsType(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = () + UNKNOWN_OS_TYPE: _ClassVar[OsInfo.OsType] + ANDROID: _ClassVar[OsInfo.OsType] + CHROME_OS: _ClassVar[OsInfo.OsType] + WINDOWS: _ClassVar[OsInfo.OsType] + APPLE: _ClassVar[OsInfo.OsType] + LINUX: _ClassVar[OsInfo.OsType] + UNKNOWN_OS_TYPE: OsInfo.OsType + ANDROID: OsInfo.OsType + CHROME_OS: OsInfo.OsType + WINDOWS: OsInfo.OsType + APPLE: OsInfo.OsType + LINUX: OsInfo.OsType + TYPE_FIELD_NUMBER: _ClassVar[int] + type: OsInfo.OsType + def __init__(self, type: _Optional[_Union[OsInfo.OsType, str]] = ...) -> None: ... diff --git a/pyquickshare/protos/securegcm_pb2.py b/pyquickshare/protos/securegcm_pb2.py index 5eb9217..00639f8 100644 --- a/pyquickshare/protos/securegcm_pb2.py +++ b/pyquickshare/protos/securegcm_pb2.py @@ -1,11 +1,22 @@ # -*- coding: utf-8 -*- # Generated by the protocol buffer compiler. DO NOT EDIT! +# NO CHECKED-IN PROTOBUF GENCODE # source: securegcm.proto +# Protobuf Python Version: 6.32.0 """Generated protocol buffer code.""" -from google.protobuf.internal import builder as _builder from google.protobuf import descriptor as _descriptor from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database +from google.protobuf.internal import builder as _builder +_runtime_version.ValidateProtobufRuntimeVersion( + _runtime_version.Domain.PUBLIC, + 6, + 32, + 0, + '', + 'securegcm.proto' +) # @@protoc_insertion_point(imports) _sym_db = _symbol_database.Default() @@ -15,28 +26,28 @@ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x0fsecuregcm.proto\x12\tsecuregcm\"\xaf\n\n\rGcmDeviceInfo\x12\x19\n\x11\x61ndroid_device_id\x18\x01 \x01(\x06\x12\x1b\n\x13gcm_registration_id\x18\x66 \x01(\x0c\x12\x1c\n\x13\x61pn_registration_id\x18\xca\x01 \x01(\x0c\x12#\n\x14notification_enabled\x18\xcb\x01 \x01(\x08:\x04true\x12\x1e\n\x15\x62luetooth_mac_address\x18\xae\x02 \x01(\t\x12\x1e\n\x16\x64\x65vice_master_key_hash\x18g \x01(\x0c\x12\x17\n\x0fuser_public_key\x18\x04 \x02(\x0c\x12\x14\n\x0c\x64\x65vice_model\x18\x07 \x01(\t\x12\x0e\n\x06locale\x18\x08 \x01(\t\x12\x12\n\nkey_handle\x18\t \x01(\x0c\x12\x12\n\x07\x63ounter\x18\x0c \x01(\x03:\x01\x30\x12\x19\n\x11\x64\x65vice_os_version\x18\r \x01(\t\x12\x1e\n\x16\x64\x65vice_os_version_code\x18\x0e \x01(\x03\x12\x19\n\x11\x64\x65vice_os_release\x18\x0f \x01(\t\x12\x1a\n\x12\x64\x65vice_os_codename\x18\x10 \x01(\t\x12\x1f\n\x17\x64\x65vice_software_version\x18\x11 \x01(\t\x12$\n\x1c\x64\x65vice_software_version_code\x18\x12 \x01(\x03\x12\x1f\n\x17\x64\x65vice_software_package\x18\x13 \x01(\t\x12$\n\x1c\x64\x65vice_display_diagonal_mils\x18\x16 \x01(\x05\x12\x1e\n\x16\x64\x65vice_authzen_version\x18\x18 \x01(\x05\x12\x16\n\x0elong_device_id\x18\x1d \x01(\x0c\x12\x1b\n\x13\x64\x65vice_manufacturer\x18\x1f \x01(\t\x12\x33\n\x0b\x64\x65vice_type\x18 \x01(\x0e\x32\x15.securegcm.DeviceType:\x07\x41NDROID\x12\'\n\x17using_secure_screenlock\x18\x90\x03 \x01(\x08:\x05\x66\x61lse\x12\x30\n auto_unlock_screenlock_supported\x18\x91\x03 \x01(\x08:\x05\x66\x61lse\x12.\n\x1e\x61uto_unlock_screenlock_enabled\x18\x92\x03 \x01(\x08:\x05\x66\x61lse\x12)\n\x19\x62luetooth_radio_supported\x18\x93\x03 \x01(\x08:\x05\x66\x61lse\x12\'\n\x17\x62luetooth_radio_enabled\x18\x94\x03 \x01(\x08:\x05\x66\x61lse\x12%\n\x15mobile_data_supported\x18\x95\x03 \x01(\x08:\x05\x66\x61lse\x12#\n\x13tethering_supported\x18\x96\x03 \x01(\x08:\x05\x66\x61lse\x12#\n\x13\x62le_radio_supported\x18\x97\x03 \x01(\x08:\x05\x66\x61lse\x12 \n\x10pixel_experience\x18\x98\x03 \x01(\x08:\x05\x66\x61lse\x12\x1d\n\rarc_plus_plus\x18\x99\x03 \x01(\x08:\x05\x66\x61lse\x12)\n\x19is_screenlock_state_flaky\x18\x9a\x03 \x01(\x08:\x05\x66\x61lse\x12@\n\x1bsupported_software_features\x18\x9b\x03 \x03(\x0e\x32\x1a.securegcm.SoftwareFeature\x12>\n\x19\x65nabled_software_features\x18\x9c\x03 \x03(\x0e\x32\x1a.securegcm.SoftwareFeature\x12\x1e\n\x15\x65nrollment_session_id\x18\xe8\x07 \x01(\x0c\x12\x14\n\x0boauth_token\x18\xe9\x07 \x01(\t\"@\n\x0bGcmMetadata\x12\x1d\n\x04type\x18\x01 \x02(\x0e\x32\x0f.securegcm.Type\x12\x12\n\x07version\x18\x02 \x01(\x05:\x01\x30\"\x1d\n\x06Tickle\x12\x13\n\x0b\x65xpiry_time\x18\x01 \x01(\x06\"o\n\x15LoginNotificationInfo\x12\x15\n\rcreation_time\x18\x02 \x01(\x06\x12\r\n\x05\x65mail\x18\x03 \x01(\t\x12\x0c\n\x04host\x18\x04 \x01(\t\x12\x0e\n\x06source\x18\x05 \x01(\t\x12\x12\n\nevent_type\x18\x06 \x01(\t*;\n\x17\x41ppleDeviceDiagonalMils\x12\x10\n\x0b\x41PPLE_PHONE\x10\xa0\x1f\x12\x0e\n\tAPPLE_PAD\x10\xdc=*Q\n\nDeviceType\x12\x0b\n\x07UNKNOWN\x10\x00\x12\x0b\n\x07\x41NDROID\x10\x01\x12\n\n\x06\x43HROME\x10\x02\x12\x07\n\x03IOS\x10\x03\x12\x0b\n\x07\x42ROWSER\x10\x04\x12\x07\n\x03OSX\x10\x05*\xe8\x01\n\x0fSoftwareFeature\x12\x13\n\x0fUNKNOWN_FEATURE\x10\x00\x12\x18\n\x14\x42\x45TTER_TOGETHER_HOST\x10\x01\x12\x1a\n\x16\x42\x45TTER_TOGETHER_CLIENT\x10\x02\x12\x14\n\x10\x45\x41SY_UNLOCK_HOST\x10\x03\x12\x16\n\x12\x45\x41SY_UNLOCK_CLIENT\x10\x04\x12\x15\n\x11MAGIC_TETHER_HOST\x10\x05\x12\x17\n\x13MAGIC_TETHER_CLIENT\x10\x06\x12\x14\n\x10SMS_CONNECT_HOST\x10\x07\x12\x16\n\x12SMS_CONNECT_CLIENT\x10\x08*\xb8\x03\n\x10InvocationReason\x12\x12\n\x0eREASON_UNKNOWN\x10\x00\x12\x19\n\x15REASON_INITIALIZATION\x10\x01\x12\x13\n\x0fREASON_PERIODIC\x10\x02\x12\x18\n\x14REASON_SLOW_PERIODIC\x10\x03\x12\x18\n\x14REASON_FAST_PERIODIC\x10\x04\x12\x15\n\x11REASON_EXPIRATION\x10\x05\x12\x1b\n\x17REASON_FAILURE_RECOVERY\x10\x06\x12\x16\n\x12REASON_NEW_ACCOUNT\x10\x07\x12\x1a\n\x16REASON_CHANGED_ACCOUNT\x10\x08\x12\x1a\n\x16REASON_FEATURE_TOGGLED\x10\t\x12\x1b\n\x17REASON_SERVER_INITIATED\x10\n\x12\x19\n\x15REASON_ADDRESS_CHANGE\x10\x0b\x12\x1a\n\x16REASON_SOFTWARE_UPDATE\x10\x0c\x12\x11\n\rREASON_MANUAL\x10\r\x12\"\n\x1eREASON_CUSTOM_KEY_INVALIDATION\x10\x0e\x12\x1d\n\x19REASON_PROXIMITY_PERIODIC\x10\x0f*\x84\x03\n\x04Type\x12\x0e\n\nENROLLMENT\x10\x00\x12\n\n\x06TICKLE\x10\x01\x12\x0e\n\nTX_REQUEST\x10\x02\x12\x0c\n\x08TX_REPLY\x10\x03\x12\x13\n\x0fTX_SYNC_REQUEST\x10\x04\x12\x14\n\x10TX_SYNC_RESPONSE\x10\x05\x12\x0b\n\x07TX_PING\x10\x06\x12\x16\n\x12\x44\x45VICE_INFO_UPDATE\x10\x07\x12\x15\n\x11TX_CANCEL_REQUEST\x10\x08\x12\x19\n\x15PROXIMITYAUTH_PAIRING\x10\n\x12\x1c\n\x18GCMV1_IDENTITY_ASSERTION\x10\x0b\x12,\n(DEVICE_TO_DEVICE_RESPONDER_HELLO_PAYLOAD\x10\x0c\x12\x1c\n\x18\x44\x45VICE_TO_DEVICE_MESSAGE\x10\r\x12\x1d\n\x19\x44\x45VICE_PROXIMITY_CALLBACK\x10\x0e\x12\x1f\n\x1bUNLOCK_KEY_SIGNED_CHALLENGE\x10\x0f\x12\x16\n\x12LOGIN_NOTIFICATION\x10\x65\x42\x46\n+com.google.security.cryptauth.lib.securegcmB\x0eSecureGcmProtoH\x03\xa2\x02\x04SGCM') -_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, globals()) -_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'securegcm_pb2', globals()) -if _descriptor._USE_C_DESCRIPTORS == False: - - DESCRIPTOR._options = None - DESCRIPTOR._serialized_options = b'\n+com.google.security.cryptauth.lib.securegcmB\016SecureGcmProtoH\003\242\002\004SGCM' - _APPLEDEVICEDIAGONALMILS._serialized_start=1570 - _APPLEDEVICEDIAGONALMILS._serialized_end=1629 - _DEVICETYPE._serialized_start=1631 - _DEVICETYPE._serialized_end=1712 - _SOFTWAREFEATURE._serialized_start=1715 - _SOFTWAREFEATURE._serialized_end=1947 - _INVOCATIONREASON._serialized_start=1950 - _INVOCATIONREASON._serialized_end=2390 - _TYPE._serialized_start=2393 - _TYPE._serialized_end=2781 - _GCMDEVICEINFO._serialized_start=31 - _GCMDEVICEINFO._serialized_end=1358 - _GCMMETADATA._serialized_start=1360 - _GCMMETADATA._serialized_end=1424 - _TICKLE._serialized_start=1426 - _TICKLE._serialized_end=1455 - _LOGINNOTIFICATIONINFO._serialized_start=1457 - _LOGINNOTIFICATIONINFO._serialized_end=1568 +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'securegcm_pb2', _globals) +if not _descriptor._USE_C_DESCRIPTORS: + _globals['DESCRIPTOR']._loaded_options = None + _globals['DESCRIPTOR']._serialized_options = b'\n+com.google.security.cryptauth.lib.securegcmB\016SecureGcmProtoH\003\242\002\004SGCM' + _globals['_APPLEDEVICEDIAGONALMILS']._serialized_start=1570 + _globals['_APPLEDEVICEDIAGONALMILS']._serialized_end=1629 + _globals['_DEVICETYPE']._serialized_start=1631 + _globals['_DEVICETYPE']._serialized_end=1712 + _globals['_SOFTWAREFEATURE']._serialized_start=1715 + _globals['_SOFTWAREFEATURE']._serialized_end=1947 + _globals['_INVOCATIONREASON']._serialized_start=1950 + _globals['_INVOCATIONREASON']._serialized_end=2390 + _globals['_TYPE']._serialized_start=2393 + _globals['_TYPE']._serialized_end=2781 + _globals['_GCMDEVICEINFO']._serialized_start=31 + _globals['_GCMDEVICEINFO']._serialized_end=1358 + _globals['_GCMMETADATA']._serialized_start=1360 + _globals['_GCMMETADATA']._serialized_end=1424 + _globals['_TICKLE']._serialized_start=1426 + _globals['_TICKLE']._serialized_end=1455 + _globals['_LOGINNOTIFICATIONINFO']._serialized_start=1457 + _globals['_LOGINNOTIFICATIONINFO']._serialized_end=1568 # @@protoc_insertion_point(module_scope) diff --git a/pyquickshare/protos/securegcm_pb2.pyi b/pyquickshare/protos/securegcm_pb2.pyi index 890110e..3be4fd4 100644 --- a/pyquickshare/protos/securegcm_pb2.pyi +++ b/pyquickshare/protos/securegcm_pb2.pyi @@ -2,178 +2,228 @@ from google.protobuf.internal import containers as _containers from google.protobuf.internal import enum_type_wrapper as _enum_type_wrapper from google.protobuf import descriptor as _descriptor from google.protobuf import message as _message -from typing import ClassVar as _ClassVar, Iterable as _Iterable, Optional as _Optional, Union as _Union +from collections.abc import Iterable as _Iterable +from typing import ClassVar as _ClassVar, Optional as _Optional, Union as _Union -ANDROID: DeviceType -APPLE_PAD: AppleDeviceDiagonalMils +DESCRIPTOR: _descriptor.FileDescriptor + +class AppleDeviceDiagonalMils(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = () + APPLE_PHONE: _ClassVar[AppleDeviceDiagonalMils] + APPLE_PAD: _ClassVar[AppleDeviceDiagonalMils] + +class DeviceType(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = () + UNKNOWN: _ClassVar[DeviceType] + ANDROID: _ClassVar[DeviceType] + CHROME: _ClassVar[DeviceType] + IOS: _ClassVar[DeviceType] + BROWSER: _ClassVar[DeviceType] + OSX: _ClassVar[DeviceType] + +class SoftwareFeature(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = () + UNKNOWN_FEATURE: _ClassVar[SoftwareFeature] + BETTER_TOGETHER_HOST: _ClassVar[SoftwareFeature] + BETTER_TOGETHER_CLIENT: _ClassVar[SoftwareFeature] + EASY_UNLOCK_HOST: _ClassVar[SoftwareFeature] + EASY_UNLOCK_CLIENT: _ClassVar[SoftwareFeature] + MAGIC_TETHER_HOST: _ClassVar[SoftwareFeature] + MAGIC_TETHER_CLIENT: _ClassVar[SoftwareFeature] + SMS_CONNECT_HOST: _ClassVar[SoftwareFeature] + SMS_CONNECT_CLIENT: _ClassVar[SoftwareFeature] + +class InvocationReason(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = () + REASON_UNKNOWN: _ClassVar[InvocationReason] + REASON_INITIALIZATION: _ClassVar[InvocationReason] + REASON_PERIODIC: _ClassVar[InvocationReason] + REASON_SLOW_PERIODIC: _ClassVar[InvocationReason] + REASON_FAST_PERIODIC: _ClassVar[InvocationReason] + REASON_EXPIRATION: _ClassVar[InvocationReason] + REASON_FAILURE_RECOVERY: _ClassVar[InvocationReason] + REASON_NEW_ACCOUNT: _ClassVar[InvocationReason] + REASON_CHANGED_ACCOUNT: _ClassVar[InvocationReason] + REASON_FEATURE_TOGGLED: _ClassVar[InvocationReason] + REASON_SERVER_INITIATED: _ClassVar[InvocationReason] + REASON_ADDRESS_CHANGE: _ClassVar[InvocationReason] + REASON_SOFTWARE_UPDATE: _ClassVar[InvocationReason] + REASON_MANUAL: _ClassVar[InvocationReason] + REASON_CUSTOM_KEY_INVALIDATION: _ClassVar[InvocationReason] + REASON_PROXIMITY_PERIODIC: _ClassVar[InvocationReason] + +class Type(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = () + ENROLLMENT: _ClassVar[Type] + TICKLE: _ClassVar[Type] + TX_REQUEST: _ClassVar[Type] + TX_REPLY: _ClassVar[Type] + TX_SYNC_REQUEST: _ClassVar[Type] + TX_SYNC_RESPONSE: _ClassVar[Type] + TX_PING: _ClassVar[Type] + DEVICE_INFO_UPDATE: _ClassVar[Type] + TX_CANCEL_REQUEST: _ClassVar[Type] + PROXIMITYAUTH_PAIRING: _ClassVar[Type] + GCMV1_IDENTITY_ASSERTION: _ClassVar[Type] + DEVICE_TO_DEVICE_RESPONDER_HELLO_PAYLOAD: _ClassVar[Type] + DEVICE_TO_DEVICE_MESSAGE: _ClassVar[Type] + DEVICE_PROXIMITY_CALLBACK: _ClassVar[Type] + UNLOCK_KEY_SIGNED_CHALLENGE: _ClassVar[Type] + LOGIN_NOTIFICATION: _ClassVar[Type] APPLE_PHONE: AppleDeviceDiagonalMils -BETTER_TOGETHER_CLIENT: SoftwareFeature -BETTER_TOGETHER_HOST: SoftwareFeature -BROWSER: DeviceType +APPLE_PAD: AppleDeviceDiagonalMils +UNKNOWN: DeviceType +ANDROID: DeviceType CHROME: DeviceType -DESCRIPTOR: _descriptor.FileDescriptor -DEVICE_INFO_UPDATE: Type -DEVICE_PROXIMITY_CALLBACK: Type -DEVICE_TO_DEVICE_MESSAGE: Type -DEVICE_TO_DEVICE_RESPONDER_HELLO_PAYLOAD: Type -EASY_UNLOCK_CLIENT: SoftwareFeature -EASY_UNLOCK_HOST: SoftwareFeature -ENROLLMENT: Type -GCMV1_IDENTITY_ASSERTION: Type IOS: DeviceType -LOGIN_NOTIFICATION: Type -MAGIC_TETHER_CLIENT: SoftwareFeature -MAGIC_TETHER_HOST: SoftwareFeature +BROWSER: DeviceType OSX: DeviceType -PROXIMITYAUTH_PAIRING: Type -REASON_ADDRESS_CHANGE: InvocationReason -REASON_CHANGED_ACCOUNT: InvocationReason -REASON_CUSTOM_KEY_INVALIDATION: InvocationReason +UNKNOWN_FEATURE: SoftwareFeature +BETTER_TOGETHER_HOST: SoftwareFeature +BETTER_TOGETHER_CLIENT: SoftwareFeature +EASY_UNLOCK_HOST: SoftwareFeature +EASY_UNLOCK_CLIENT: SoftwareFeature +MAGIC_TETHER_HOST: SoftwareFeature +MAGIC_TETHER_CLIENT: SoftwareFeature +SMS_CONNECT_HOST: SoftwareFeature +SMS_CONNECT_CLIENT: SoftwareFeature +REASON_UNKNOWN: InvocationReason +REASON_INITIALIZATION: InvocationReason +REASON_PERIODIC: InvocationReason +REASON_SLOW_PERIODIC: InvocationReason +REASON_FAST_PERIODIC: InvocationReason REASON_EXPIRATION: InvocationReason REASON_FAILURE_RECOVERY: InvocationReason -REASON_FAST_PERIODIC: InvocationReason -REASON_FEATURE_TOGGLED: InvocationReason -REASON_INITIALIZATION: InvocationReason -REASON_MANUAL: InvocationReason REASON_NEW_ACCOUNT: InvocationReason -REASON_PERIODIC: InvocationReason -REASON_PROXIMITY_PERIODIC: InvocationReason +REASON_CHANGED_ACCOUNT: InvocationReason +REASON_FEATURE_TOGGLED: InvocationReason REASON_SERVER_INITIATED: InvocationReason -REASON_SLOW_PERIODIC: InvocationReason +REASON_ADDRESS_CHANGE: InvocationReason REASON_SOFTWARE_UPDATE: InvocationReason -REASON_UNKNOWN: InvocationReason -SMS_CONNECT_CLIENT: SoftwareFeature -SMS_CONNECT_HOST: SoftwareFeature +REASON_MANUAL: InvocationReason +REASON_CUSTOM_KEY_INVALIDATION: InvocationReason +REASON_PROXIMITY_PERIODIC: InvocationReason +ENROLLMENT: Type TICKLE: Type -TX_CANCEL_REQUEST: Type -TX_PING: Type -TX_REPLY: Type TX_REQUEST: Type +TX_REPLY: Type TX_SYNC_REQUEST: Type TX_SYNC_RESPONSE: Type -UNKNOWN: DeviceType -UNKNOWN_FEATURE: SoftwareFeature +TX_PING: Type +DEVICE_INFO_UPDATE: Type +TX_CANCEL_REQUEST: Type +PROXIMITYAUTH_PAIRING: Type +GCMV1_IDENTITY_ASSERTION: Type +DEVICE_TO_DEVICE_RESPONDER_HELLO_PAYLOAD: Type +DEVICE_TO_DEVICE_MESSAGE: Type +DEVICE_PROXIMITY_CALLBACK: Type UNLOCK_KEY_SIGNED_CHALLENGE: Type +LOGIN_NOTIFICATION: Type class GcmDeviceInfo(_message.Message): - __slots__ = ["android_device_id", "apn_registration_id", "arc_plus_plus", "auto_unlock_screenlock_enabled", "auto_unlock_screenlock_supported", "ble_radio_supported", "bluetooth_mac_address", "bluetooth_radio_enabled", "bluetooth_radio_supported", "counter", "device_authzen_version", "device_display_diagonal_mils", "device_manufacturer", "device_master_key_hash", "device_model", "device_os_codename", "device_os_release", "device_os_version", "device_os_version_code", "device_software_package", "device_software_version", "device_software_version_code", "device_type", "enabled_software_features", "enrollment_session_id", "gcm_registration_id", "is_screenlock_state_flaky", "key_handle", "locale", "long_device_id", "mobile_data_supported", "notification_enabled", "oauth_token", "pixel_experience", "supported_software_features", "tethering_supported", "user_public_key", "using_secure_screenlock"] + __slots__ = ("android_device_id", "gcm_registration_id", "apn_registration_id", "notification_enabled", "bluetooth_mac_address", "device_master_key_hash", "user_public_key", "device_model", "locale", "key_handle", "counter", "device_os_version", "device_os_version_code", "device_os_release", "device_os_codename", "device_software_version", "device_software_version_code", "device_software_package", "device_display_diagonal_mils", "device_authzen_version", "long_device_id", "device_manufacturer", "device_type", "using_secure_screenlock", "auto_unlock_screenlock_supported", "auto_unlock_screenlock_enabled", "bluetooth_radio_supported", "bluetooth_radio_enabled", "mobile_data_supported", "tethering_supported", "ble_radio_supported", "pixel_experience", "arc_plus_plus", "is_screenlock_state_flaky", "supported_software_features", "enabled_software_features", "enrollment_session_id", "oauth_token") ANDROID_DEVICE_ID_FIELD_NUMBER: _ClassVar[int] + GCM_REGISTRATION_ID_FIELD_NUMBER: _ClassVar[int] APN_REGISTRATION_ID_FIELD_NUMBER: _ClassVar[int] - ARC_PLUS_PLUS_FIELD_NUMBER: _ClassVar[int] - AUTO_UNLOCK_SCREENLOCK_ENABLED_FIELD_NUMBER: _ClassVar[int] - AUTO_UNLOCK_SCREENLOCK_SUPPORTED_FIELD_NUMBER: _ClassVar[int] - BLE_RADIO_SUPPORTED_FIELD_NUMBER: _ClassVar[int] + NOTIFICATION_ENABLED_FIELD_NUMBER: _ClassVar[int] BLUETOOTH_MAC_ADDRESS_FIELD_NUMBER: _ClassVar[int] - BLUETOOTH_RADIO_ENABLED_FIELD_NUMBER: _ClassVar[int] - BLUETOOTH_RADIO_SUPPORTED_FIELD_NUMBER: _ClassVar[int] - COUNTER_FIELD_NUMBER: _ClassVar[int] - DEVICE_AUTHZEN_VERSION_FIELD_NUMBER: _ClassVar[int] - DEVICE_DISPLAY_DIAGONAL_MILS_FIELD_NUMBER: _ClassVar[int] - DEVICE_MANUFACTURER_FIELD_NUMBER: _ClassVar[int] DEVICE_MASTER_KEY_HASH_FIELD_NUMBER: _ClassVar[int] + USER_PUBLIC_KEY_FIELD_NUMBER: _ClassVar[int] DEVICE_MODEL_FIELD_NUMBER: _ClassVar[int] - DEVICE_OS_CODENAME_FIELD_NUMBER: _ClassVar[int] - DEVICE_OS_RELEASE_FIELD_NUMBER: _ClassVar[int] - DEVICE_OS_VERSION_CODE_FIELD_NUMBER: _ClassVar[int] + LOCALE_FIELD_NUMBER: _ClassVar[int] + KEY_HANDLE_FIELD_NUMBER: _ClassVar[int] + COUNTER_FIELD_NUMBER: _ClassVar[int] DEVICE_OS_VERSION_FIELD_NUMBER: _ClassVar[int] - DEVICE_SOFTWARE_PACKAGE_FIELD_NUMBER: _ClassVar[int] - DEVICE_SOFTWARE_VERSION_CODE_FIELD_NUMBER: _ClassVar[int] + DEVICE_OS_VERSION_CODE_FIELD_NUMBER: _ClassVar[int] + DEVICE_OS_RELEASE_FIELD_NUMBER: _ClassVar[int] + DEVICE_OS_CODENAME_FIELD_NUMBER: _ClassVar[int] DEVICE_SOFTWARE_VERSION_FIELD_NUMBER: _ClassVar[int] - DEVICE_TYPE_FIELD_NUMBER: _ClassVar[int] - ENABLED_SOFTWARE_FEATURES_FIELD_NUMBER: _ClassVar[int] - ENROLLMENT_SESSION_ID_FIELD_NUMBER: _ClassVar[int] - GCM_REGISTRATION_ID_FIELD_NUMBER: _ClassVar[int] - IS_SCREENLOCK_STATE_FLAKY_FIELD_NUMBER: _ClassVar[int] - KEY_HANDLE_FIELD_NUMBER: _ClassVar[int] - LOCALE_FIELD_NUMBER: _ClassVar[int] + DEVICE_SOFTWARE_VERSION_CODE_FIELD_NUMBER: _ClassVar[int] + DEVICE_SOFTWARE_PACKAGE_FIELD_NUMBER: _ClassVar[int] + DEVICE_DISPLAY_DIAGONAL_MILS_FIELD_NUMBER: _ClassVar[int] + DEVICE_AUTHZEN_VERSION_FIELD_NUMBER: _ClassVar[int] LONG_DEVICE_ID_FIELD_NUMBER: _ClassVar[int] + DEVICE_MANUFACTURER_FIELD_NUMBER: _ClassVar[int] + DEVICE_TYPE_FIELD_NUMBER: _ClassVar[int] + USING_SECURE_SCREENLOCK_FIELD_NUMBER: _ClassVar[int] + AUTO_UNLOCK_SCREENLOCK_SUPPORTED_FIELD_NUMBER: _ClassVar[int] + AUTO_UNLOCK_SCREENLOCK_ENABLED_FIELD_NUMBER: _ClassVar[int] + BLUETOOTH_RADIO_SUPPORTED_FIELD_NUMBER: _ClassVar[int] + BLUETOOTH_RADIO_ENABLED_FIELD_NUMBER: _ClassVar[int] MOBILE_DATA_SUPPORTED_FIELD_NUMBER: _ClassVar[int] - NOTIFICATION_ENABLED_FIELD_NUMBER: _ClassVar[int] - OAUTH_TOKEN_FIELD_NUMBER: _ClassVar[int] + TETHERING_SUPPORTED_FIELD_NUMBER: _ClassVar[int] + BLE_RADIO_SUPPORTED_FIELD_NUMBER: _ClassVar[int] PIXEL_EXPERIENCE_FIELD_NUMBER: _ClassVar[int] + ARC_PLUS_PLUS_FIELD_NUMBER: _ClassVar[int] + IS_SCREENLOCK_STATE_FLAKY_FIELD_NUMBER: _ClassVar[int] SUPPORTED_SOFTWARE_FEATURES_FIELD_NUMBER: _ClassVar[int] - TETHERING_SUPPORTED_FIELD_NUMBER: _ClassVar[int] - USER_PUBLIC_KEY_FIELD_NUMBER: _ClassVar[int] - USING_SECURE_SCREENLOCK_FIELD_NUMBER: _ClassVar[int] + ENABLED_SOFTWARE_FEATURES_FIELD_NUMBER: _ClassVar[int] + ENROLLMENT_SESSION_ID_FIELD_NUMBER: _ClassVar[int] + OAUTH_TOKEN_FIELD_NUMBER: _ClassVar[int] android_device_id: int + gcm_registration_id: bytes apn_registration_id: bytes - arc_plus_plus: bool - auto_unlock_screenlock_enabled: bool - auto_unlock_screenlock_supported: bool - ble_radio_supported: bool + notification_enabled: bool bluetooth_mac_address: str - bluetooth_radio_enabled: bool - bluetooth_radio_supported: bool - counter: int - device_authzen_version: int - device_display_diagonal_mils: int - device_manufacturer: str device_master_key_hash: bytes + user_public_key: bytes device_model: str - device_os_codename: str - device_os_release: str + locale: str + key_handle: bytes + counter: int device_os_version: str device_os_version_code: int - device_software_package: str + device_os_release: str + device_os_codename: str device_software_version: str device_software_version_code: int - device_type: DeviceType - enabled_software_features: _containers.RepeatedScalarFieldContainer[SoftwareFeature] - enrollment_session_id: bytes - gcm_registration_id: bytes - is_screenlock_state_flaky: bool - key_handle: bytes - locale: str + device_software_package: str + device_display_diagonal_mils: int + device_authzen_version: int long_device_id: bytes + device_manufacturer: str + device_type: DeviceType + using_secure_screenlock: bool + auto_unlock_screenlock_supported: bool + auto_unlock_screenlock_enabled: bool + bluetooth_radio_supported: bool + bluetooth_radio_enabled: bool mobile_data_supported: bool - notification_enabled: bool - oauth_token: str + tethering_supported: bool + ble_radio_supported: bool pixel_experience: bool + arc_plus_plus: bool + is_screenlock_state_flaky: bool supported_software_features: _containers.RepeatedScalarFieldContainer[SoftwareFeature] - tethering_supported: bool - user_public_key: bytes - using_secure_screenlock: bool - def __init__(self, android_device_id: _Optional[int] = ..., gcm_registration_id: _Optional[bytes] = ..., apn_registration_id: _Optional[bytes] = ..., notification_enabled: bool = ..., bluetooth_mac_address: _Optional[str] = ..., device_master_key_hash: _Optional[bytes] = ..., user_public_key: _Optional[bytes] = ..., device_model: _Optional[str] = ..., locale: _Optional[str] = ..., key_handle: _Optional[bytes] = ..., counter: _Optional[int] = ..., device_os_version: _Optional[str] = ..., device_os_version_code: _Optional[int] = ..., device_os_release: _Optional[str] = ..., device_os_codename: _Optional[str] = ..., device_software_version: _Optional[str] = ..., device_software_version_code: _Optional[int] = ..., device_software_package: _Optional[str] = ..., device_display_diagonal_mils: _Optional[int] = ..., device_authzen_version: _Optional[int] = ..., long_device_id: _Optional[bytes] = ..., device_manufacturer: _Optional[str] = ..., device_type: _Optional[_Union[DeviceType, str]] = ..., using_secure_screenlock: bool = ..., auto_unlock_screenlock_supported: bool = ..., auto_unlock_screenlock_enabled: bool = ..., bluetooth_radio_supported: bool = ..., bluetooth_radio_enabled: bool = ..., mobile_data_supported: bool = ..., tethering_supported: bool = ..., ble_radio_supported: bool = ..., pixel_experience: bool = ..., arc_plus_plus: bool = ..., is_screenlock_state_flaky: bool = ..., supported_software_features: _Optional[_Iterable[_Union[SoftwareFeature, str]]] = ..., enabled_software_features: _Optional[_Iterable[_Union[SoftwareFeature, str]]] = ..., enrollment_session_id: _Optional[bytes] = ..., oauth_token: _Optional[str] = ...) -> None: ... + enabled_software_features: _containers.RepeatedScalarFieldContainer[SoftwareFeature] + enrollment_session_id: bytes + oauth_token: str + def __init__(self, android_device_id: _Optional[int] = ..., gcm_registration_id: _Optional[bytes] = ..., apn_registration_id: _Optional[bytes] = ..., notification_enabled: _Optional[bool] = ..., bluetooth_mac_address: _Optional[str] = ..., device_master_key_hash: _Optional[bytes] = ..., user_public_key: _Optional[bytes] = ..., device_model: _Optional[str] = ..., locale: _Optional[str] = ..., key_handle: _Optional[bytes] = ..., counter: _Optional[int] = ..., device_os_version: _Optional[str] = ..., device_os_version_code: _Optional[int] = ..., device_os_release: _Optional[str] = ..., device_os_codename: _Optional[str] = ..., device_software_version: _Optional[str] = ..., device_software_version_code: _Optional[int] = ..., device_software_package: _Optional[str] = ..., device_display_diagonal_mils: _Optional[int] = ..., device_authzen_version: _Optional[int] = ..., long_device_id: _Optional[bytes] = ..., device_manufacturer: _Optional[str] = ..., device_type: _Optional[_Union[DeviceType, str]] = ..., using_secure_screenlock: _Optional[bool] = ..., auto_unlock_screenlock_supported: _Optional[bool] = ..., auto_unlock_screenlock_enabled: _Optional[bool] = ..., bluetooth_radio_supported: _Optional[bool] = ..., bluetooth_radio_enabled: _Optional[bool] = ..., mobile_data_supported: _Optional[bool] = ..., tethering_supported: _Optional[bool] = ..., ble_radio_supported: _Optional[bool] = ..., pixel_experience: _Optional[bool] = ..., arc_plus_plus: _Optional[bool] = ..., is_screenlock_state_flaky: _Optional[bool] = ..., supported_software_features: _Optional[_Iterable[_Union[SoftwareFeature, str]]] = ..., enabled_software_features: _Optional[_Iterable[_Union[SoftwareFeature, str]]] = ..., enrollment_session_id: _Optional[bytes] = ..., oauth_token: _Optional[str] = ...) -> None: ... class GcmMetadata(_message.Message): - __slots__ = ["type", "version"] + __slots__ = ("type", "version") TYPE_FIELD_NUMBER: _ClassVar[int] VERSION_FIELD_NUMBER: _ClassVar[int] type: Type version: int def __init__(self, type: _Optional[_Union[Type, str]] = ..., version: _Optional[int] = ...) -> None: ... +class Tickle(_message.Message): + __slots__ = ("expiry_time",) + EXPIRY_TIME_FIELD_NUMBER: _ClassVar[int] + expiry_time: int + def __init__(self, expiry_time: _Optional[int] = ...) -> None: ... + class LoginNotificationInfo(_message.Message): - __slots__ = ["creation_time", "email", "event_type", "host", "source"] + __slots__ = ("creation_time", "email", "host", "source", "event_type") CREATION_TIME_FIELD_NUMBER: _ClassVar[int] EMAIL_FIELD_NUMBER: _ClassVar[int] - EVENT_TYPE_FIELD_NUMBER: _ClassVar[int] HOST_FIELD_NUMBER: _ClassVar[int] SOURCE_FIELD_NUMBER: _ClassVar[int] + EVENT_TYPE_FIELD_NUMBER: _ClassVar[int] creation_time: int email: str - event_type: str host: str source: str + event_type: str def __init__(self, creation_time: _Optional[int] = ..., email: _Optional[str] = ..., host: _Optional[str] = ..., source: _Optional[str] = ..., event_type: _Optional[str] = ...) -> None: ... - -class Tickle(_message.Message): - __slots__ = ["expiry_time"] - EXPIRY_TIME_FIELD_NUMBER: _ClassVar[int] - expiry_time: int - def __init__(self, expiry_time: _Optional[int] = ...) -> None: ... - -class AppleDeviceDiagonalMils(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): - __slots__ = [] - -class DeviceType(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): - __slots__ = [] - -class SoftwareFeature(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): - __slots__ = [] - -class InvocationReason(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): - __slots__ = [] - -class Type(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): - __slots__ = [] diff --git a/pyquickshare/protos/securemessage_pb2.py b/pyquickshare/protos/securemessage_pb2.py index 4ecf931..5402606 100644 --- a/pyquickshare/protos/securemessage_pb2.py +++ b/pyquickshare/protos/securemessage_pb2.py @@ -1,11 +1,22 @@ # -*- coding: utf-8 -*- # Generated by the protocol buffer compiler. DO NOT EDIT! +# NO CHECKED-IN PROTOBUF GENCODE # source: securemessage.proto +# Protobuf Python Version: 6.32.0 """Generated protocol buffer code.""" -from google.protobuf.internal import builder as _builder from google.protobuf import descriptor as _descriptor from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database +from google.protobuf.internal import builder as _builder +_runtime_version.ValidateProtobufRuntimeVersion( + _runtime_version.Domain.PUBLIC, + 6, + 32, + 0, + '', + 'securemessage.proto' +) # @@protoc_insertion_point(imports) _sym_db = _symbol_database.Default() @@ -15,32 +26,32 @@ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x13securemessage.proto\x12\rsecuremessage\";\n\rSecureMessage\x12\x17\n\x0fheader_and_body\x18\x01 \x02(\x0c\x12\x11\n\tsignature\x18\x02 \x02(\x0c\"\xf1\x01\n\x06Header\x12\x32\n\x10signature_scheme\x18\x01 \x02(\x0e\x32\x18.securemessage.SigScheme\x12\x33\n\x11\x65ncryption_scheme\x18\x02 \x02(\x0e\x32\x18.securemessage.EncScheme\x12\x1b\n\x13verification_key_id\x18\x03 \x01(\x0c\x12\x19\n\x11\x64\x65\x63ryption_key_id\x18\x04 \x01(\x0c\x12\n\n\x02iv\x18\x05 \x01(\x0c\x12\x17\n\x0fpublic_metadata\x18\x06 \x01(\x0c\x12!\n\x16\x61ssociated_data_length\x18\x07 \x01(\r:\x01\x30\"D\n\rHeaderAndBody\x12%\n\x06header\x18\x01 \x02(\x0b\x32\x15.securemessage.Header\x12\x0c\n\x04\x62ody\x18\x02 \x02(\x0c\"5\n\x15HeaderAndBodyInternal\x12\x0e\n\x06header\x18\x01 \x02(\x0c\x12\x0c\n\x04\x62ody\x18\x02 \x02(\x0c\"\'\n\x0f\x45\x63P256PublicKey\x12\t\n\x01x\x18\x01 \x02(\x0c\x12\t\n\x01y\x18\x02 \x02(\x0c\"1\n\x12SimpleRsaPublicKey\x12\t\n\x01n\x18\x01 \x02(\x0c\x12\x10\n\x01\x65\x18\x02 \x01(\x05:\x05\x36\x35\x35\x33\x37\"\x18\n\x0b\x44hPublicKey\x12\t\n\x01y\x18\x01 \x02(\x0c\"\xf0\x01\n\x10GenericPublicKey\x12*\n\x04type\x18\x01 \x02(\x0e\x32\x1c.securemessage.PublicKeyType\x12:\n\x12\x65\x63_p256_public_key\x18\x02 \x01(\x0b\x32\x1e.securemessage.EcP256PublicKey\x12=\n\x12rsa2048_public_key\x18\x03 \x01(\x0b\x32!.securemessage.SimpleRsaPublicKey\x12\x35\n\x11\x64h2048_public_key\x18\x04 \x01(\x0b\x32\x1a.securemessage.DhPublicKey*G\n\tSigScheme\x12\x0f\n\x0bHMAC_SHA256\x10\x01\x12\x15\n\x11\x45\x43\x44SA_P256_SHA256\x10\x02\x12\x12\n\x0eRSA2048_SHA256\x10\x03*&\n\tEncScheme\x12\x08\n\x04NONE\x10\x01\x12\x0f\n\x0b\x41\x45S_256_CBC\x10\x02*:\n\rPublicKeyType\x12\x0b\n\x07\x45\x43_P256\x10\x01\x12\x0b\n\x07RSA2048\x10\x02\x12\x0f\n\x0b\x44H2048_MODP\x10\x03\x42N\n/com.google.security.cryptauth.lib.securemessageB\x12SecureMessageProtoH\x03\xa2\x02\x04SMSG') -_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, globals()) -_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'securemessage_pb2', globals()) -if _descriptor._USE_C_DESCRIPTORS == False: - - DESCRIPTOR._options = None - DESCRIPTOR._serialized_options = b'\n/com.google.security.cryptauth.lib.securemessageB\022SecureMessageProtoH\003\242\002\004SMSG' - _SIGSCHEME._serialized_start=829 - _SIGSCHEME._serialized_end=900 - _ENCSCHEME._serialized_start=902 - _ENCSCHEME._serialized_end=940 - _PUBLICKEYTYPE._serialized_start=942 - _PUBLICKEYTYPE._serialized_end=1000 - _SECUREMESSAGE._serialized_start=38 - _SECUREMESSAGE._serialized_end=97 - _HEADER._serialized_start=100 - _HEADER._serialized_end=341 - _HEADERANDBODY._serialized_start=343 - _HEADERANDBODY._serialized_end=411 - _HEADERANDBODYINTERNAL._serialized_start=413 - _HEADERANDBODYINTERNAL._serialized_end=466 - _ECP256PUBLICKEY._serialized_start=468 - _ECP256PUBLICKEY._serialized_end=507 - _SIMPLERSAPUBLICKEY._serialized_start=509 - _SIMPLERSAPUBLICKEY._serialized_end=558 - _DHPUBLICKEY._serialized_start=560 - _DHPUBLICKEY._serialized_end=584 - _GENERICPUBLICKEY._serialized_start=587 - _GENERICPUBLICKEY._serialized_end=827 +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'securemessage_pb2', _globals) +if not _descriptor._USE_C_DESCRIPTORS: + _globals['DESCRIPTOR']._loaded_options = None + _globals['DESCRIPTOR']._serialized_options = b'\n/com.google.security.cryptauth.lib.securemessageB\022SecureMessageProtoH\003\242\002\004SMSG' + _globals['_SIGSCHEME']._serialized_start=829 + _globals['_SIGSCHEME']._serialized_end=900 + _globals['_ENCSCHEME']._serialized_start=902 + _globals['_ENCSCHEME']._serialized_end=940 + _globals['_PUBLICKEYTYPE']._serialized_start=942 + _globals['_PUBLICKEYTYPE']._serialized_end=1000 + _globals['_SECUREMESSAGE']._serialized_start=38 + _globals['_SECUREMESSAGE']._serialized_end=97 + _globals['_HEADER']._serialized_start=100 + _globals['_HEADER']._serialized_end=341 + _globals['_HEADERANDBODY']._serialized_start=343 + _globals['_HEADERANDBODY']._serialized_end=411 + _globals['_HEADERANDBODYINTERNAL']._serialized_start=413 + _globals['_HEADERANDBODYINTERNAL']._serialized_end=466 + _globals['_ECP256PUBLICKEY']._serialized_start=468 + _globals['_ECP256PUBLICKEY']._serialized_end=507 + _globals['_SIMPLERSAPUBLICKEY']._serialized_start=509 + _globals['_SIMPLERSAPUBLICKEY']._serialized_end=558 + _globals['_DHPUBLICKEY']._serialized_start=560 + _globals['_DHPUBLICKEY']._serialized_end=584 + _globals['_GENERICPUBLICKEY']._serialized_start=587 + _globals['_GENERICPUBLICKEY']._serialized_end=827 # @@protoc_insertion_point(module_scope) diff --git a/pyquickshare/protos/securemessage_pb2.pyi b/pyquickshare/protos/securemessage_pb2.pyi index 8090d47..9c62d6a 100644 --- a/pyquickshare/protos/securemessage_pb2.pyi +++ b/pyquickshare/protos/securemessage_pb2.pyi @@ -1,99 +1,108 @@ from google.protobuf.internal import enum_type_wrapper as _enum_type_wrapper from google.protobuf import descriptor as _descriptor from google.protobuf import message as _message -from typing import ClassVar as _ClassVar, Mapping as _Mapping, Optional as _Optional, Union as _Union +from collections.abc import Mapping as _Mapping +from typing import ClassVar as _ClassVar, Optional as _Optional, Union as _Union -AES_256_CBC: EncScheme DESCRIPTOR: _descriptor.FileDescriptor -DH2048_MODP: PublicKeyType -ECDSA_P256_SHA256: SigScheme -EC_P256: PublicKeyType + +class SigScheme(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = () + HMAC_SHA256: _ClassVar[SigScheme] + ECDSA_P256_SHA256: _ClassVar[SigScheme] + RSA2048_SHA256: _ClassVar[SigScheme] + +class EncScheme(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = () + NONE: _ClassVar[EncScheme] + AES_256_CBC: _ClassVar[EncScheme] + +class PublicKeyType(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = () + EC_P256: _ClassVar[PublicKeyType] + RSA2048: _ClassVar[PublicKeyType] + DH2048_MODP: _ClassVar[PublicKeyType] HMAC_SHA256: SigScheme +ECDSA_P256_SHA256: SigScheme +RSA2048_SHA256: SigScheme NONE: EncScheme +AES_256_CBC: EncScheme +EC_P256: PublicKeyType RSA2048: PublicKeyType -RSA2048_SHA256: SigScheme - -class DhPublicKey(_message.Message): - __slots__ = ["y"] - Y_FIELD_NUMBER: _ClassVar[int] - y: bytes - def __init__(self, y: _Optional[bytes] = ...) -> None: ... - -class EcP256PublicKey(_message.Message): - __slots__ = ["x", "y"] - X_FIELD_NUMBER: _ClassVar[int] - Y_FIELD_NUMBER: _ClassVar[int] - x: bytes - y: bytes - def __init__(self, x: _Optional[bytes] = ..., y: _Optional[bytes] = ...) -> None: ... +DH2048_MODP: PublicKeyType -class GenericPublicKey(_message.Message): - __slots__ = ["dh2048_public_key", "ec_p256_public_key", "rsa2048_public_key", "type"] - DH2048_PUBLIC_KEY_FIELD_NUMBER: _ClassVar[int] - EC_P256_PUBLIC_KEY_FIELD_NUMBER: _ClassVar[int] - RSA2048_PUBLIC_KEY_FIELD_NUMBER: _ClassVar[int] - TYPE_FIELD_NUMBER: _ClassVar[int] - dh2048_public_key: DhPublicKey - ec_p256_public_key: EcP256PublicKey - rsa2048_public_key: SimpleRsaPublicKey - type: PublicKeyType - def __init__(self, type: _Optional[_Union[PublicKeyType, str]] = ..., ec_p256_public_key: _Optional[_Union[EcP256PublicKey, _Mapping]] = ..., rsa2048_public_key: _Optional[_Union[SimpleRsaPublicKey, _Mapping]] = ..., dh2048_public_key: _Optional[_Union[DhPublicKey, _Mapping]] = ...) -> None: ... +class SecureMessage(_message.Message): + __slots__ = ("header_and_body", "signature") + HEADER_AND_BODY_FIELD_NUMBER: _ClassVar[int] + SIGNATURE_FIELD_NUMBER: _ClassVar[int] + header_and_body: bytes + signature: bytes + def __init__(self, header_and_body: _Optional[bytes] = ..., signature: _Optional[bytes] = ...) -> None: ... class Header(_message.Message): - __slots__ = ["associated_data_length", "decryption_key_id", "encryption_scheme", "iv", "public_metadata", "signature_scheme", "verification_key_id"] - ASSOCIATED_DATA_LENGTH_FIELD_NUMBER: _ClassVar[int] - DECRYPTION_KEY_ID_FIELD_NUMBER: _ClassVar[int] + __slots__ = ("signature_scheme", "encryption_scheme", "verification_key_id", "decryption_key_id", "iv", "public_metadata", "associated_data_length") + SIGNATURE_SCHEME_FIELD_NUMBER: _ClassVar[int] ENCRYPTION_SCHEME_FIELD_NUMBER: _ClassVar[int] + VERIFICATION_KEY_ID_FIELD_NUMBER: _ClassVar[int] + DECRYPTION_KEY_ID_FIELD_NUMBER: _ClassVar[int] IV_FIELD_NUMBER: _ClassVar[int] PUBLIC_METADATA_FIELD_NUMBER: _ClassVar[int] - SIGNATURE_SCHEME_FIELD_NUMBER: _ClassVar[int] - VERIFICATION_KEY_ID_FIELD_NUMBER: _ClassVar[int] - associated_data_length: int - decryption_key_id: bytes + ASSOCIATED_DATA_LENGTH_FIELD_NUMBER: _ClassVar[int] + signature_scheme: SigScheme encryption_scheme: EncScheme + verification_key_id: bytes + decryption_key_id: bytes iv: bytes public_metadata: bytes - signature_scheme: SigScheme - verification_key_id: bytes + associated_data_length: int def __init__(self, signature_scheme: _Optional[_Union[SigScheme, str]] = ..., encryption_scheme: _Optional[_Union[EncScheme, str]] = ..., verification_key_id: _Optional[bytes] = ..., decryption_key_id: _Optional[bytes] = ..., iv: _Optional[bytes] = ..., public_metadata: _Optional[bytes] = ..., associated_data_length: _Optional[int] = ...) -> None: ... class HeaderAndBody(_message.Message): - __slots__ = ["body", "header"] - BODY_FIELD_NUMBER: _ClassVar[int] + __slots__ = ("header", "body") HEADER_FIELD_NUMBER: _ClassVar[int] - body: bytes + BODY_FIELD_NUMBER: _ClassVar[int] header: Header + body: bytes def __init__(self, header: _Optional[_Union[Header, _Mapping]] = ..., body: _Optional[bytes] = ...) -> None: ... class HeaderAndBodyInternal(_message.Message): - __slots__ = ["body", "header"] - BODY_FIELD_NUMBER: _ClassVar[int] + __slots__ = ("header", "body") HEADER_FIELD_NUMBER: _ClassVar[int] - body: bytes + BODY_FIELD_NUMBER: _ClassVar[int] header: bytes + body: bytes def __init__(self, header: _Optional[bytes] = ..., body: _Optional[bytes] = ...) -> None: ... -class SecureMessage(_message.Message): - __slots__ = ["header_and_body", "signature"] - HEADER_AND_BODY_FIELD_NUMBER: _ClassVar[int] - SIGNATURE_FIELD_NUMBER: _ClassVar[int] - header_and_body: bytes - signature: bytes - def __init__(self, header_and_body: _Optional[bytes] = ..., signature: _Optional[bytes] = ...) -> None: ... +class EcP256PublicKey(_message.Message): + __slots__ = ("x", "y") + X_FIELD_NUMBER: _ClassVar[int] + Y_FIELD_NUMBER: _ClassVar[int] + x: bytes + y: bytes + def __init__(self, x: _Optional[bytes] = ..., y: _Optional[bytes] = ...) -> None: ... class SimpleRsaPublicKey(_message.Message): - __slots__ = ["e", "n"] - E_FIELD_NUMBER: _ClassVar[int] + __slots__ = ("n", "e") N_FIELD_NUMBER: _ClassVar[int] - e: int + E_FIELD_NUMBER: _ClassVar[int] n: bytes + e: int def __init__(self, n: _Optional[bytes] = ..., e: _Optional[int] = ...) -> None: ... -class SigScheme(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): - __slots__ = [] - -class EncScheme(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): - __slots__ = [] +class DhPublicKey(_message.Message): + __slots__ = ("y",) + Y_FIELD_NUMBER: _ClassVar[int] + y: bytes + def __init__(self, y: _Optional[bytes] = ...) -> None: ... -class PublicKeyType(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): - __slots__ = [] +class GenericPublicKey(_message.Message): + __slots__ = ("type", "ec_p256_public_key", "rsa2048_public_key", "dh2048_public_key") + TYPE_FIELD_NUMBER: _ClassVar[int] + EC_P256_PUBLIC_KEY_FIELD_NUMBER: _ClassVar[int] + RSA2048_PUBLIC_KEY_FIELD_NUMBER: _ClassVar[int] + DH2048_PUBLIC_KEY_FIELD_NUMBER: _ClassVar[int] + type: PublicKeyType + ec_p256_public_key: EcP256PublicKey + rsa2048_public_key: SimpleRsaPublicKey + dh2048_public_key: DhPublicKey + def __init__(self, type: _Optional[_Union[PublicKeyType, str]] = ..., ec_p256_public_key: _Optional[_Union[EcP256PublicKey, _Mapping]] = ..., rsa2048_public_key: _Optional[_Union[SimpleRsaPublicKey, _Mapping]] = ..., dh2048_public_key: _Optional[_Union[DhPublicKey, _Mapping]] = ...) -> None: ... diff --git a/pyquickshare/protos/sharing_enums_pb2.py b/pyquickshare/protos/sharing_enums_pb2.py new file mode 100644 index 0000000..4f3a7b0 --- /dev/null +++ b/pyquickshare/protos/sharing_enums_pb2.py @@ -0,0 +1,165 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# NO CHECKED-IN PROTOBUF GENCODE +# source: sharing_enums.proto +# Protobuf Python Version: 6.32.0 +"""Generated protocol buffer code.""" +from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import runtime_version as _runtime_version +from google.protobuf import symbol_database as _symbol_database +from google.protobuf.internal import builder as _builder +_runtime_version.ValidateProtobufRuntimeVersion( + _runtime_version.Domain.PUBLIC, + 6, + 32, + 0, + '', + 'sharing_enums.proto' +) +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + + + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x13sharing_enums.proto\x12\x1dlocation.nearby.proto.sharing*\xcf\x0f\n\tEventType\x12\x16\n\x12UNKNOWN_EVENT_TYPE\x10\x00\x12\x15\n\x11\x41\x43\x43\x45PT_AGREEMENTS\x10\x01\x12\x19\n\x15\x45NABLE_NEARBY_SHARING\x10\x02\x12\x12\n\x0eSET_VISIBILITY\x10\x03\x12\x18\n\x14\x44\x45SCRIBE_ATTACHMENTS\x10\x04\x12 \n\x1cSCAN_FOR_SHARE_TARGETS_START\x10\x05\x12\x1e\n\x1aSCAN_FOR_SHARE_TARGETS_END\x10\x06\x12#\n\x1f\x41\x44VERTISE_DEVICE_PRESENCE_START\x10\x07\x12!\n\x1d\x41\x44VERTISE_DEVICE_PRESENCE_END\x10\x08\x12\x1c\n\x18SEND_FAST_INITIALIZATION\x10\t\x12\x1f\n\x1bRECEIVE_FAST_INITIALIZATION\x10\n\x12\x19\n\x15\x44ISCOVER_SHARE_TARGET\x10\x0b\x12\x15\n\x11SEND_INTRODUCTION\x10\x0c\x12\x18\n\x14RECEIVE_INTRODUCTION\x10\r\x12\x1b\n\x17RESPOND_TO_INTRODUCTION\x10\x0e\x12\x1a\n\x16SEND_ATTACHMENTS_START\x10\x0f\x12\x18\n\x14SEND_ATTACHMENTS_END\x10\x10\x12\x1d\n\x19RECEIVE_ATTACHMENTS_START\x10\x11\x12\x1b\n\x17RECEIVE_ATTACHMENTS_END\x10\x12\x12\x1e\n\x1a\x43\x41NCEL_SENDING_ATTACHMENTS\x10\x13\x12 \n\x1c\x43\x41NCEL_RECEIVING_ATTACHMENTS\x10\x14\x12\x1d\n\x19OPEN_RECEIVED_ATTACHMENTS\x10\x15\x12\x1d\n\x15LAUNCH_SETUP_ACTIVITY\x10\x16\x1a\x02\x08\x01\x12\x0f\n\x0b\x41\x44\x44_CONTACT\x10\x17\x12\x12\n\x0eREMOVE_CONTACT\x10\x18\x12\x1e\n\x1a\x46\x41ST_SHARE_SERVER_RESPONSE\x10\x19\x12\x0e\n\nSEND_START\x10\x1a\x12\x1e\n\x1a\x41\x43\x43\x45PT_FAST_INITIALIZATION\x10\x1b\x12\x12\n\x0eSET_DATA_USAGE\x10\x1c\x12\x1f\n\x1b\x44ISMISS_FAST_INITIALIZATION\x10\x1d\x12\x15\n\x11\x43\x41NCEL_CONNECTION\x10\x1e\x12\x13\n\x0fLAUNCH_ACTIVITY\x10\x1f\x12 \n\x1c\x44ISMISS_PRIVACY_NOTIFICATION\x10 \x12\x1c\n\x18TAP_PRIVACY_NOTIFICATION\x10!\x12\x0c\n\x08TAP_HELP\x10\"\x12\x10\n\x0cTAP_FEEDBACK\x10#\x12\x1b\n\x17\x41\x44\x44_QUICK_SETTINGS_TILE\x10$\x12\x1e\n\x1aREMOVE_QUICK_SETTINGS_TILE\x10%\x12\x18\n\x14LAUNCH_PHONE_CONSENT\x10&\x12\x19\n\x15\x44ISPLAY_PHONE_CONSENT\x10\x36\x12\x1b\n\x17TAP_QUICK_SETTINGS_TILE\x10\'\x12\x0f\n\x0bINSTALL_APK\x10(\x12\x0e\n\nVERIFY_APK\x10)\x12\x12\n\x0eLAUNCH_CONSENT\x10*\x12$\n PROCESS_RECEIVED_ATTACHMENTS_END\x10+\x12\x1c\n\x18TOGGLE_SHOW_NOTIFICATION\x10,\x12\x13\n\x0fSET_DEVICE_NAME\x10-\x12\x16\n\x12\x44\x45\x43LINE_AGREEMENTS\x10.\x12\x1f\n\x1bREQUEST_SETTING_PERMISSIONS\x10/\x12\x18\n\x14\x45STABLISH_CONNECTION\x10\x30\x12\x13\n\x0f\x44\x45VICE_SETTINGS\x10\x31\x12$\n AUTO_DISMISS_FAST_INITIALIZATION\x10\x32\x12\r\n\tAPP_CRASH\x10\x33\x12!\n\x1dTAP_QUICK_SETTINGS_FILE_SHARE\x10\x34\x12 \n\x1c\x44ISPLAY_PRIVACY_NOTIFICATION\x10\x35\x12\x15\n\x11PREFERENCES_USAGE\x10\x37\x12\x12\n\x0e\x44\x45\x46\x41ULT_OPT_IN\x10\x38\x12\x10\n\x0cSETUP_WIZARD\x10\x39\x12\x0f\n\x0bTAP_QR_CODE\x10:\x12\x16\n\x12QR_CODE_LINK_SHOWN\x10;\x12\x1e\n\x1aPARSING_FAILED_ENDPOINT_ID\x10<\x12\x1d\n\x19\x46\x41ST_INIT_DISCOVER_DEVICE\x10=\x12\x1d\n\x19SEND_DESKTOP_NOTIFICATION\x10>\x12\x0f\n\x0bSET_ACCOUNT\x10?\x12\x1f\n\x1b\x44\x45\x43RYPT_CERTIFICATE_FAILURE\x10@\x12%\n!SHOW_ALLOW_PERMISSION_AUTO_ACCESS\x10\x41\x12\x1f\n\x1bSEND_DESKTOP_TRANSFER_EVENT\x10\x42\x12\x16\n\x12WAITING_FOR_ACCEPT\x10\x43\x12\x1d\n\x19HIGH_QUALITY_MEDIUM_SETUP\x10\x44\x12\x13\n\x0fRPC_CALL_STATUS\x10\x45\x12\x19\n\x15START_QR_CODE_SESSION\x10\x46\x12 \n\x1cQR_CODE_OPENED_IN_WEB_CLIENT\x10G\x12\x14\n\x10HATS_JOINT_EVENT\x10H\x12\x14\n\x10RECEIVE_PREVIEWS\x10I*v\n\rEventCategory\x12\x1a\n\x16UNKNOWN_EVENT_CATEGORY\x10\x00\x12\x11\n\rSENDING_EVENT\x10\x01\x12\x13\n\x0fRECEIVING_EVENT\x10\x02\x12\x12\n\x0eSETTINGS_EVENT\x10\x03\x12\r\n\tRPC_EVENT\x10\x04*I\n\x13NearbySharingStatus\x12!\n\x1dUNKNOWN_NEARBY_SHARING_STATUS\x10\x00\x12\x06\n\x02ON\x10\x01\x12\x07\n\x03OFF\x10\x02*\x81\x01\n\nVisibility\x12\x16\n\x12UNKNOWN_VISIBILITY\x10\x00\x12\x11\n\rCONTACTS_ONLY\x10\x01\x12\x0c\n\x08\x45VERYONE\x10\x02\x12\x1e\n\x16SELECTED_CONTACTS_ONLY\x10\x03\x1a\x02\x08\x01\x12\n\n\x06HIDDEN\x10\x04\x12\x0e\n\nSELF_SHARE\x10\x05*K\n\tDataUsage\x12\x16\n\x12UNKNOWN_DATA_USAGE\x10\x00\x12\n\n\x06ONLINE\x10\x01\x12\r\n\tWIFI_ONLY\x10\x02\x12\x0b\n\x07OFFLINE\x10\x03*\xf1\x03\n\x19\x45stablishConnectionStatus\x12\x1d\n\x19\x43ONNECTION_STATUS_UNKNOWN\x10\x00\x12\x1d\n\x19\x43ONNECTION_STATUS_SUCCESS\x10\x01\x12\x1d\n\x19\x43ONNECTION_STATUS_FAILURE\x10\x02\x12\"\n\x1e\x43ONNECTION_STATUS_CANCELLATION\x10\x03\x12\x32\n.CONNECTION_STATUS_MEDIA_UNAVAILABLE_ATTACHMENT\x10\x04\x12\x30\n,CONNECTION_STATUS_FAILED_PAIRED_KEYHANDSHAKE\x10\x05\x12/\n+CONNECTION_STATUS_FAILED_WRITE_INTRODUCTION\x10\x06\x12,\n(CONNECTION_STATUS_FAILED_NULL_CONNECTION\x10\x07\x12\x38\n4CONNECTION_STATUS_FAILED_NO_TRANSFER_UPDATE_CALLBACK\x10\x08\x12\'\n#CONNECTION_STATUS_LOST_CONNECTIVITY\x10\t\x12+\n\'CONNECTION_STATUS_INVALID_ADVERTISEMENT\x10\n*\xe5\n\n\x1c\x41ttachmentTransmissionStatus\x12*\n&UNKNOWN_ATTACHMENT_TRANSMISSION_STATUS\x10\x00\x12+\n\'COMPLETE_ATTACHMENT_TRANSMISSION_STATUS\x10\x01\x12+\n\'CANCELED_ATTACHMENT_TRANSMISSION_STATUS\x10\x02\x12)\n%FAILED_ATTACHMENT_TRANSMISSION_STATUS\x10\x03\x12\x1b\n\x13REJECTED_ATTACHMENT\x10\x04\x1a\x02\x08\x01\x12\x1c\n\x14TIMED_OUT_ATTACHMENT\x10\x05\x1a\x02\x08\x01\x12\x34\n,AWAITING_REMOTE_ACCEPTANCE_FAILED_ATTACHMENT\x10\x06\x1a\x02\x08\x01\x12#\n\x1bNOT_ENOUGH_SPACE_ATTACHMENT\x10\x07\x1a\x02\x08\x01\x12*\n\"FAILED_NO_TRANSFER_UPDATE_CALLBACK\x10\x08\x1a\x02\x08\x01\x12$\n\x1cMEDIA_UNAVAILABLE_ATTACHMENT\x10\t\x1a\x02\x08\x01\x12.\n&UNSUPPORTED_ATTACHMENT_TYPE_ATTACHMENT\x10\n\x1a\x02\x08\x01\x12\x1b\n\x13NO_ATTACHMENT_FOUND\x10\x0b\x1a\x02\x08\x01\x12\'\n\x1f\x46\x41ILED_NO_SHARE_TARGET_ENDPOINT\x10\x0c\x1a\x02\x08\x01\x12\"\n\x1a\x46\x41ILED_PAIRED_KEYHANDSHAKE\x10\r\x1a\x02\x08\x01\x12\x1e\n\x16\x46\x41ILED_NULL_CONNECTION\x10\x0e\x1a\x02\x08\x01\x12\x19\n\x11\x46\x41ILED_NO_PAYLOAD\x10\x0f\x1a\x02\x08\x01\x12!\n\x19\x46\x41ILED_WRITE_INTRODUCTION\x10\x10\x1a\x02\x08\x01\x12&\n\x1e\x46\x41ILED_UNKNOWN_REMOTE_RESPONSE\x10\x11\x1a\x02\x08\x01\x12(\n$FAILED_NULL_CONNECTION_INIT_OUTGOING\x10\x12\x12\'\n#FAILED_NULL_CONNECTION_DISCONNECTED\x10\x13\x12\x30\n(FAILED_NULL_CONNECTION_LOST_CONNECTIVITY\x10\x14\x1a\x02\x08\x01\x12&\n\x1e\x46\x41ILED_NULL_CONNECTION_FAILURE\x10\x15\x1a\x02\x08\x01\x12+\n\'REJECTED_ATTACHMENT_TRANSMISSION_STATUS\x10\x16\x12,\n(TIMED_OUT_ATTACHMENT_TRANSMISSION_STATUS\x10\x17\x12\x33\n/NOT_ENOUGH_SPACE_ATTACHMENT_TRANSMISSION_STATUS\x10\x18\x12>\n:UNSUPPORTED_ATTACHMENT_TYPE_ATTACHMENT_TRANSMISSION_STATUS\x10\x19\x12\x36\n2FAILED_UNKNOWN_REMOTE_RESPONSE_TRANSMISSION_STATUS\x10\x1a\x12Q\nINO_RESPONSE_FRAME_CONNECTION_CLOSED_LOST_CONNECTIVITY_TRANSMISSION_STATUS\x10\x1b\x1a\x02\x08\x01\x12;\n7NO_RESPONSE_FRAME_CONNECTION_CLOSED_TRANSMISSION_STATUS\x10\x1c\x12)\n%LOST_CONNECTIVITY_TRANSMISSION_STATUS\x10\x1d\x12\x1c\n\x18\x46\x41ILED_DISALLOWED_MEDIUM\x10\x1e*\xfb\x06\n\x15\x43onnectionLayerStatus\x12#\n\x1f\x43ONNECTION_LAYER_STATUS_UNKNOWN\x10\x00\x12#\n\x1f\x43ONNECTION_LAYER_STATUS_SUCCESS\x10\x01\x12!\n\x1d\x43ONNECTION_LAYER_STATUS_ERROR\x10\x02\x12\x31\n-CONNECTION_LAYER_STATUS_OUT_OF_ORDER_API_CALL\x10\x03\x12\x38\n4CONNECTION_LAYER_STATUS_ALREADY_HAVE_ACTIVE_STRATEGY\x10\x04\x12/\n+CONNECTION_LAYER_STATUS_ALREADY_ADVERTISING\x10\x05\x12/\n+CONNECTION_LAYER_STATUS_ALREADY_DISCOVERING\x10\x06\x12-\n)CONNECTION_LAYER_STATUS_ALREADY_LISTENING\x10\x07\x12.\n*CONNECTION_LAYER_STATUS_END_POINT_IO_ERROR\x10\x08\x12-\n)CONNECTION_LAYER_STATUS_END_POINT_UNKNOWN\x10\t\x12/\n+CONNECTION_LAYER_STATUS_CONNECTION_REJECTED\x10\n\x12:\n6CONNECTION_LAYER_STATUS_ALREADY_CONNECTED_TO_END_POINT\x10\x0b\x12\x36\n2CONNECTION_LAYER_STATUS_NOT_CONNECTED_TO_END_POINT\x10\x0c\x12+\n\'CONNECTION_LAYER_STATUS_BLUETOOTH_ERROR\x10\r\x12%\n!CONNECTION_LAYER_STATUS_BLE_ERROR\x10\x0e\x12*\n&CONNECTION_LAYER_STATUS_WIFI_LAN_ERROR\x10\x0f\x12+\n\'CONNECTION_LAYER_STATUS_PAYLOAD_UNKNOWN\x10\x10\x12!\n\x1d\x43ONNECTION_LAYER_STATUS_RESET\x10\x11\x12#\n\x1f\x43ONNECTION_LAYER_STATUS_TIMEOUT\x10\x12*\xb5\x02\n ProcessReceivedAttachmentsStatus\x12\x1d\n\x19PROCESSING_STATUS_UNKNOWN\x10\x00\x12\x35\n1PROCESSING_STATUS_COMPLETE_PROCESSING_ATTACHMENTS\x10\x01\x12)\n%PROCESSING_STATUS_FAILED_MOVING_FILES\x10\x02\x12*\n&PROCESSING_STATUS_FAILED_RECEIVING_APK\x10\x03\x12+\n\'PROCESSING_STATUS_FAILED_RECEIVING_TEXT\x10\x04\x12\x37\n3PROCESSING_STATUS_FAILED_RECEIVING_WIFI_CREDENTIALS\x10\x05*d\n\rSessionStatus\x12\x1a\n\x16UNKNOWN_SESSION_STATUS\x10\x00\x12\x1c\n\x18SUCCEEDED_SESSION_STATUS\x10\x01\x12\x19\n\x15\x46\x41ILED_SESSION_STATUS\x10\x02*\x87\x01\n\x16ResponseToIntroduction\x12$\n UNKNOWN_RESPONSE_TO_INTRODUCTION\x10\x00\x12\x17\n\x13\x41\x43\x43\x45PT_INTRODUCTION\x10\x01\x12\x17\n\x13REJECT_INTRODUCTION\x10\x02\x12\x15\n\x11\x46\x41IL_INTRODUCTION\x10\x03*g\n\nDeviceType\x12\x17\n\x13UNKNOWN_DEVICE_TYPE\x10\x00\x12\t\n\x05PHONE\x10\x01\x12\n\n\x06TABLET\x10\x02\x12\n\n\x06LAPTOP\x10\x03\x12\x07\n\x03\x43\x41R\x10\x04\x12\x0c\n\x08\x46OLDABLE\x10\x05\x12\x06\n\x02XR\x10\x06*Z\n\x06OSType\x12\x13\n\x0fUNKNOWN_OS_TYPE\x10\x00\x12\x0b\n\x07\x41NDROID\x10\x01\x12\r\n\tCHROME_OS\x10\x02\x12\x07\n\x03IOS\x10\x03\x12\x0b\n\x07WINDOWS\x10\x04\x12\t\n\x05MACOS\x10\x05*c\n\x12\x44\x65viceRelationship\x12\x1f\n\x1bUNKNOWN_DEVICE_RELATIONSHIP\x10\x00\x12\x0b\n\x07IS_SELF\x10\x01\x12\x0e\n\nIS_CONTACT\x10\x02\x12\x0f\n\x0bIS_STRANGER\x10\x03*\xfa\x01\n\tLogSource\x12\x16\n\x12UNSPECIFIED_SOURCE\x10\x00\x12\x0f\n\x0bLAB_DEVICES\x10\x01\x12\x14\n\x10INTERNAL_DEVICES\x10\x02\x12\x17\n\x13\x42\x45TA_TESTER_DEVICES\x10\x03\x12\x0f\n\x0bOEM_DEVICES\x10\x04\x12\x11\n\rDEBUG_DEVICES\x10\x05\x12\x1e\n\x1aNEARBY_MODULE_FOOD_DEVICES\x10\x06\x12\x18\n\x14\x42\x45TO_DOGFOOD_DEVICES\x10\x07\x12\x1a\n\x16NEARBY_DOGFOOD_DEVICES\x10\x08\x12\x1b\n\x17NEARBY_TEAMFOOD_DEVICES\x10\t*\xfe\x02\n\x10ServerActionName\x12\x19\n\x15UNKNOWN_SERVER_ACTION\x10\x00\x12\x17\n\x13UPLOAD_CERTIFICATES\x10\x01\x12\x19\n\x15\x44OWNLOAD_CERTIFICATES\x10\x02\x12\x16\n\x12\x43HECK_REACHABILITY\x10\x03\x12\x13\n\x0fUPLOAD_CONTACTS\x10\x04\x12\x16\n\x12UPDATE_DEVICE_NAME\x10\x05\x12\x1e\n\x1aUPLOAD_SENDER_CERTIFICATES\x10\x06\x12 \n\x1c\x44OWNLOAD_SENDER_CERTIFICATES\x10\x07\x12$\n UPLOAD_CONTACTS_AND_CERTIFICATES\x10\x08\x12 \n\x1cLIST_REACHABLE_PHONE_NUMBERS\x10\t\x12\x13\n\x0fLIST_MY_DEVICES\x10\n\x12\x17\n\x13LIST_CONTACT_PEOPLE\x10\x0b\x12\x1e\n\x1a\x44OWNLOAD_CERTIFICATES_INFO\x10\x0c*\xd9\x03\n\x13ServerResponseState\x12!\n\x1dUNKNOWN_SERVER_RESPONSE_STATE\x10\x00\x12\x1b\n\x17SERVER_RESPONSE_SUCCESS\x10\x01\x12#\n\x1fSERVER_RESPONSE_UNKNOWN_FAILURE\x10\x02\x12(\n$SERVER_RESPONSE_STATUS_OTHER_FAILURE\x10\x03\x12,\n(SERVER_RESPONSE_STATUS_DEADLINE_EXCEEDED\x10\x04\x12,\n(SERVER_RESPONSE_STATUS_PERMISSION_DENIED\x10\x05\x12&\n\"SERVER_RESPONSE_STATUS_UNAVAILABLE\x10\x06\x12*\n&SERVER_RESPONSE_STATUS_UNAUTHENTICATED\x10\x07\x12+\n\'SERVER_RESPONSE_STATUS_INVALID_ARGUMENT\x10\t\x12\'\n#SERVER_RESPONSE_GOOGLE_AUTH_FAILURE\x10\x08\x12-\n)SERVER_RESPONSE_NOT_CONNECTED_TO_INTERNET\x10\n*\xcc\x05\n\x0bSyncPurpose\x12\x18\n\x14SYNC_PURPOSE_UNKNOWN\x10\x00\x12\x1f\n\x1bSYNC_PURPOSE_ON_DEMAND_SYNC\x10\x01\x12#\n\x1fSYNC_PURPOSE_CHIME_NOTIFICATION\x10\x02\x12\x1b\n\x17SYNC_PURPOSE_DAILY_SYNC\x10\x03\x12\"\n\x1eSYNC_PURPOSE_OPT_IN_FIRST_SYNC\x10\x04\x12%\n!SYNC_PURPOSE_CHECK_DEFAULT_OPT_IN\x10\x05\x12%\n!SYNC_PURPOSE_NEARBY_SHARE_ENABLED\x10\x06\x12\"\n\x1eSYNC_PURPOSE_SYNC_AT_FAST_INIT\x10\x07\x12\"\n\x1eSYNC_PURPOSE_SYNC_AT_DISCOVERY\x10\x08\x12\x31\n-SYNC_PURPOSE_SYNC_AT_LOAD_PRIVATE_CERTIFICATE\x10\t\x12&\n\"SYNC_PURPOSE_SYNC_AT_ADVERTISEMENT\x10\n\x12$\n SYNC_PURPOSE_CONTACT_LIST_CHANGE\x10\x0b\x12\x1f\n\x1bSYNC_PURPOSE_SHOW_C11N_VIEW\x10\x0c\x12\x33\n/SYNC_PURPOSE_REGULAR_CHECK_CONTACT_REACHABILITY\x10\r\x12\x33\n/SYNC_PURPOSE_VISIBILITY_SELECTED_CONTACT_CHANGE\x10\x0e\x12\x1f\n\x1bSYNC_PURPOSE_ACCOUNT_CHANGE\x10\x0f\x12(\n$SYNC_PURPOSE_REGENERATE_CERTIFICATES\x10\x10\x12/\n+SYNC_PURPOSE_DEVICE_CONTACTS_CONSENT_CHANGE\x10\x11*W\n\nClientRole\x12\x17\n\x13\x43LIENT_ROLE_UNKNOWN\x10\x00\x12\x16\n\x12\x43LIENT_ROLE_SENDER\x10\x01\x12\x18\n\x14\x43LIENT_ROLE_RECEIVER\x10\x02*}\n\x08ScanType\x12\x15\n\x11UNKNOWN_SCAN_TYPE\x10\x00\x12\x13\n\x0f\x46OREGROUND_SCAN\x10\x01\x12\x19\n\x15\x46OREGROUND_RETRY_SCAN\x10\x02\x12\x15\n\x11\x44IRECT_SHARE_SCAN\x10\x03\x12\x13\n\x0f\x42\x41\x43KGROUND_SCAN\x10\x04*m\n\x11ParsingFailedType\x12\x17\n\x13\x46\x41ILED_UNKNOWN_TYPE\x10\x00\x12\x1e\n\x1a\x46\x41ILED_PARSE_ADVERTISEMENT\x10\x01\x12\x1f\n\x1b\x46\x41ILED_CONVERT_SHARE_TARGET\x10\x02*\xd2\x01\n\x0f\x41\x64vertisingMode\x12\x1c\n\x18UNKNOWN_ADVERTISING_MODE\x10\x00\x12\x1f\n\x1bSCREEN_OFF_ADVERTISING_MODE\x10\x01\x12\x1f\n\x1b\x42\x41\x43KGROUND_ADVERTISING_MODE\x10\x02\x12\x1e\n\x1aMIDGROUND_ADVERTISING_MODE\x10\x03\x12\x1f\n\x1b\x46OREGROUND_ADVERTISING_MODE\x10\x04\x12\x1e\n\x1aSUSPENDED_ADVERTISING_MODE\x10\x05*\xc4\x01\n\rDiscoveryMode\x12\x1a\n\x16UNKNOWN_DISCOVERY_MODE\x10\x00\x12\x1d\n\x19SCREEN_OFF_DISCOVERY_MODE\x10\x01\x12\x1d\n\x19\x42\x41\x43KGROUND_DISCOVERY_MODE\x10\x02\x12\x1c\n\x18MIDGROUND_DISCOVERY_MODE\x10\x03\x12\x1d\n\x19\x46OREGROUND_DISCOVERY_MODE\x10\x04\x12\x1c\n\x18SUSPENDED_DISCOVERY_MODE\x10\x05*\xf1\x02\n\x0c\x41\x63tivityName\x12\x14\n\x10UNKNOWN_ACTIVITY\x10\x00\x12\x18\n\x14SHARE_SHEET_ACTIVITY\x10\x01\x12\x15\n\x11SETTINGS_ACTIVITY\x10\x02\x12\x1c\n\x18RECEIVE_SURFACE_ACTIVITY\x10\x03\x12\x12\n\x0eSETUP_ACTIVITY\x10\x04\x12\x1e\n\x1a\x44\x45VICE_VISIBILITY_ACTIVITY\x10\x05\x12\x15\n\x11\x43ONSENTS_ACTIVITY\x10\x06\x12\x1a\n\x16SET_DEVICE_NAME_DIALOG\x10\x07\x12\x19\n\x15SET_DATA_USAGE_DIALOG\x10\x08\x12\x1b\n\x17QUICK_SETTINGS_ACTIVITY\x10\t\x12$\n REMOTE_COPY_SHARE_SHEET_ACTIVITY\x10\n\x12\x19\n\x15SETUP_WIZARD_ACTIVITY\x10\x0b\x12\x1c\n\x18SETTINGS_REVIEW_ACTIVITY\x10\x0c*_\n\x0b\x43onsentType\x12\x18\n\x14\x43ONSENT_TYPE_UNKNOWN\x10\x00\x12\x15\n\x11\x43ONSENT_TYPE_C11N\x10\x01\x12\x1f\n\x1b\x43ONSENT_TYPE_DEVICE_CONTACT\x10\x02*\x86\x01\n\x17\x43onsentAcceptanceStatus\x12!\n\x1d\x43ONSENT_UNKNOWN_ACCEPT_STATUS\x10\x00\x12\x14\n\x10\x43ONSENT_ACCEPTED\x10\x01\x12\x14\n\x10\x43ONSENT_DECLINED\x10\x02\x12\x1c\n\x18\x43ONSENT_UNABLE_TO_ENABLE\x10\x03*L\n\tApkSource\x12\x16\n\x12UNKNOWN_APK_SOURCE\x10\x00\x12\x14\n\x10\x41PK_FROM_SD_CARD\x10\x01\x12\x11\n\rINSTALLED_APP\x10\x02*c\n\x10InstallAPKStatus\x12\x1e\n\x1aUNKNOWN_INSTALL_APK_STATUS\x10\x00\x12\x15\n\x11\x46\x41IL_INSTALLATION\x10\x01\x12\x18\n\x14SUCCESS_INSTALLATION\x10\x02*m\n\x0fVerifyAPKStatus\x12\x1d\n\x19UNKNOWN_VERIFY_APK_STATUS\x10\x00\x12\x13\n\x0fNOT_INSTALLABLE\x10\x01\x12\x0f\n\x0bINSTALLABLE\x10\x02\x12\x15\n\x11\x41LREADY_INSTALLED\x10\x03*V\n\x16ShowNotificationStatus\x12$\n UNKNOWN_SHOW_NOTIFICATION_STATUS\x10\x00\x12\x08\n\x04SHOW\x10\x01\x12\x0c\n\x08NOT_SHOW\x10\x02*\x91\x01\n\x17PermissionRequestResult\x12%\n!PERMISSION_UNKNOWN_REQUEST_RESULT\x10\x00\x12\x16\n\x12PERMISSION_GRANTED\x10\x01\x12\x17\n\x13PERMISSION_REJECTED\x10\x02\x12\x1e\n\x1aPERMISSION_UNABLE_TO_GRANT\x10\x03*\xbb\x01\n\x15PermissionRequestType\x12\x1b\n\x17PERMISSION_UNKNOWN_TYPE\x10\x00\x12 \n\x1cPERMISSION_AIRPLANE_MODE_OFF\x10\x01\x12\x13\n\x0fPERMISSION_WIFI\x10\x02\x12\x18\n\x14PERMISSION_BLUETOOTH\x10\x03\x12\x17\n\x13PERMISSION_LOCATION\x10\x04\x12\x1b\n\x17PERMISSION_WIFI_HOTSPOT\x10\x05*\xb3\x02\n\x0eSharingUseCase\x12\x14\n\x10USE_CASE_UNKNOWN\x10\x00\x12\x19\n\x15USE_CASE_NEARBY_SHARE\x10\x01\x12\x1e\n\x1aUSE_CASE_REMOTE_COPY_PASTE\x10\x02\x12\x1c\n\x18USE_CASE_WIFI_CREDENTIAL\x10\x03\x12\x16\n\x12USE_CASE_APP_SHARE\x10\x04\x12%\n!USE_CASE_QUICK_SETTING_FILE_SHARE\x10\x05\x12\x19\n\x15USE_CASE_SETUP_WIZARD\x10\x06\x12*\n\"USE_CASE_NEARBY_SHARE_WITH_QR_CODE\x10\x07\x1a\x02\x08\x01\x12,\n(USE_CASE_REDIRECTED_FROM_BLUETOOTH_SHARE\x10\x08*.\n\x0e\x41ppCrashReason\x12\x1c\n\x18\x41PP_CRASH_REASON_UNKNOWN\x10\x00*\x9b\x02\n\x14\x41ttachmentSourceType\x12\x1d\n\x19\x41TTACHMENT_SOURCE_UNKNOWN\x10\x00\x12\"\n\x1e\x41TTACHMENT_SOURCE_CONTEXT_MENU\x10\x01\x12#\n\x1f\x41TTACHMENT_SOURCE_DRAG_AND_DROP\x10\x02\x12)\n%ATTACHMENT_SOURCE_SELECT_FILES_BUTTON\x10\x03\x12\x1b\n\x17\x41TTACHMENT_SOURCE_PASTE\x10\x04\x12+\n\'ATTACHMENT_SOURCE_SELECT_FOLDERS_BUTTON\x10\x05\x12&\n\"ATTACHMENT_SOURCE_SHARE_ACTIVATION\x10\x06*\xd7\x04\n\x11PreferencesAction\x12\x1e\n\x1aPREFERENCES_ACTION_UNKNOWN\x10\x00\x12 \n\x1cPREFERENCES_ACTION_NO_ACTION\x10\x01\x12\'\n#PREFERENCES_ACTION_LOAD_PREFERENCES\x10\x02\x12(\n$PREFERENCES_ACTION_SAVE_PREFERENCESS\x10\x03\x12#\n\x1fPREFERENCES_ACTION_ATTEMPT_LOAD\x10\x04\x12*\n&PREFERENCES_ACTION_RESTORE_FROM_BACKUP\x10\x05\x12.\n*PREFERENCES_ACTION_CREATE_PREFERENCES_PATH\x10\x06\x12\x33\n/PREFERENCES_ACTION_MAKE_PREFERENCES_BACKUP_FILE\x10\x07\x12\x37\n3PREFERENCES_ACTION_CHECK_IF_PREFERENCES_PATH_EXISTS\x10\x08\x12?\n;PREFERENCES_ACTION_CHECK_IF_PREFERENCES_INPUT_STREAM_STATUS\x10\t\x12=\n9PREFERENCES_ACTION_CHECK_IF_PREFERENCES_FILE_IS_CORRUPTED\x10\n\x12>\n:PREFERENCES_ACTION_CHECK_IF_PREFERENCES_BACKUP_FILE_EXISTS\x10\x0b*\x8b\x01\n\x17PreferencesActionStatus\x12%\n!PREFERENCES_ACTION_STATUS_UNKNOWN\x10\x00\x12%\n!PREFERENCES_ACTION_STATUS_SUCCESS\x10\x01\x12\"\n\x1ePREFERENCES_ACTION_STATUS_FAIL\x10\x02*z\n\rFastInitState\x12\x1b\n\x17\x46\x41ST_INIT_UNKNOWN_STATE\x10\x00\x12\x19\n\x15\x46\x41ST_INIT_CLOSE_STATE\x10\x01\x12\x17\n\x13\x46\x41ST_INIT_FAR_STATE\x10\x02\x12\x18\n\x14\x46\x41ST_INIT_LOST_STATE\x10\x03*`\n\x0c\x46\x61stInitType\x12\x1a\n\x16\x46\x41ST_INIT_UNKNOWN_TYPE\x10\x00\x12\x19\n\x15\x46\x41ST_INIT_NOTIFY_TYPE\x10\x01\x12\x19\n\x15\x46\x41ST_INIT_SILENT_TYPE\x10\x02*\xe3\x01\n\x13\x44\x65sktopNotification\x12 \n\x1c\x44\x45SKTOP_NOTIFICATION_UNKNOWN\x10\x00\x12#\n\x1f\x44\x45SKTOP_NOTIFICATION_CONNECTING\x10\x01\x12!\n\x1d\x44\x45SKTOP_NOTIFICATION_PROGRESS\x10\x02\x12\x1f\n\x1b\x44\x45SKTOP_NOTIFICATION_ACCEPT\x10\x03\x12!\n\x1d\x44\x45SKTOP_NOTIFICATION_RECEIVED\x10\x04\x12\x1e\n\x1a\x44\x45SKTOP_NOTIFICATION_ERROR\x10\x05*\xee\x03\n\x18\x44\x65sktopTransferEventType\x12\'\n#DESKTOP_TRANSFER_EVENT_TYPE_UNKNOWN\x10\x00\x12.\n*DESKTOP_TRANSFER_EVENT_RECEIVE_TYPE_ACCEPT\x10\x01\x12\x30\n,DESKTOP_TRANSFER_EVENT_RECEIVE_TYPE_PROGRESS\x10\x02\x12\x30\n,DESKTOP_TRANSFER_EVENT_RECEIVE_TYPE_RECEIVED\x10\x03\x12-\n)DESKTOP_TRANSFER_EVENT_RECEIVE_TYPE_ERROR\x10\x04\x12*\n&DESKTOP_TRANSFER_EVENT_SEND_TYPE_START\x10\x05\x12\x34\n0DESKTOP_TRANSFER_EVENT_SEND_TYPE_SELECT_A_DEVICE\x10\x06\x12-\n)DESKTOP_TRANSFER_EVENT_SEND_TYPE_PROGRESS\x10\x07\x12)\n%DESKTOP_TRANSFER_EVENT_SEND_TYPE_SENT\x10\x08\x12*\n&DESKTOP_TRANSFER_EVENT_SEND_TYPE_ERROR\x10\t*\xc8\x02\n\x1f\x44\x65\x63ryptCertificateFailureStatus\x12 \n\x1c\x44\x45\x43RYPT_CERT_UNKNOWN_FAILURE\x10\x00\x12*\n&DECRYPT_CERT_NO_SUCH_ALGORITHM_FAILURE\x10\x01\x12(\n$DECRYPT_CERT_NO_SUCH_PADDING_FAILURE\x10\x02\x12$\n DECRYPT_CERT_INVALID_KEY_FAILURE\x10\x03\x12\x34\n0DECRYPT_CERT_INVALID_ALGORITHM_PARAMETER_FAILURE\x10\x04\x12+\n\'DECRYPT_CERT_ILLEGAL_BLOCK_SIZE_FAILURE\x10\x05\x12$\n DECRYPT_CERT_BAD_PADDING_FAILURE\x10\x06*\xfb\x01\n\rContactAccess\x12\x1a\n\x16\x43ONTACT_ACCESS_UNKNOWN\x10\x00\x12&\n\"CONTACT_ACCESS_NO_CONTACT_UPLOADED\x10\x01\x12-\n)CONTACT_ACCESS_ONLY_UPLOAD_GOOGLE_CONTACT\x10\x02\x12<\n8CONTACT_ACCESS_UPLOAD_CONTACT_FOR_DEVICE_CONTACT_CONSENT\x10\x03\x12\x39\n5CONTACT_ACCESS_UPLOAD_CONTACT_FOR_QUICK_SHARE_CONSENT\x10\x04*\xf4\x01\n\x14IdentityVerification\x12!\n\x1dIDENTITY_VERIFICATION_UNKNOWN\x10\x00\x12\x32\n.IDENTITY_VERIFICATION_NO_PHONE_NUMBER_VERIFIED\x10\x01\x12\x42\n>IDENTITY_VERIFICATION_PHONE_NUMBER_VERIFIED_NOT_LINKED_TO_GAIA\x10\x02\x12\x41\n=IDENTITY_VERIFICATION_PHONE_NUMBER_VERIFIED_LINKED_TO_QS_GAIA\x10\x03*\x83\x01\n\x0c\x42uttonStatus\x12\x19\n\x15\x42UTTON_STATUS_UNKNOWN\x10\x00\x12\x1e\n\x1a\x42UTTON_STATUS_CLICK_ACCEPT\x10\x01\x12\x1e\n\x1a\x42UTTON_STATUS_CLICK_REJECT\x10\x02\x12\x18\n\x14\x42UTTON_STATUS_IGNORE\x10\x03\x42:\n com.google.location.nearby.protoB\x0cSharingEnumsH\x03\xa2\x02\x05GNSHP') + +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'sharing_enums_pb2', _globals) +if not _descriptor._USE_C_DESCRIPTORS: + _globals['DESCRIPTOR']._loaded_options = None + _globals['DESCRIPTOR']._serialized_options = b'\n com.google.location.nearby.protoB\014SharingEnumsH\003\242\002\005GNSHP' + _globals['_EVENTTYPE'].values_by_name["LAUNCH_SETUP_ACTIVITY"]._loaded_options = None + _globals['_EVENTTYPE'].values_by_name["LAUNCH_SETUP_ACTIVITY"]._serialized_options = b'\010\001' + _globals['_VISIBILITY'].values_by_name["SELECTED_CONTACTS_ONLY"]._loaded_options = None + _globals['_VISIBILITY'].values_by_name["SELECTED_CONTACTS_ONLY"]._serialized_options = b'\010\001' + _globals['_ATTACHMENTTRANSMISSIONSTATUS'].values_by_name["REJECTED_ATTACHMENT"]._loaded_options = None + _globals['_ATTACHMENTTRANSMISSIONSTATUS'].values_by_name["REJECTED_ATTACHMENT"]._serialized_options = b'\010\001' + _globals['_ATTACHMENTTRANSMISSIONSTATUS'].values_by_name["TIMED_OUT_ATTACHMENT"]._loaded_options = None + _globals['_ATTACHMENTTRANSMISSIONSTATUS'].values_by_name["TIMED_OUT_ATTACHMENT"]._serialized_options = b'\010\001' + _globals['_ATTACHMENTTRANSMISSIONSTATUS'].values_by_name["AWAITING_REMOTE_ACCEPTANCE_FAILED_ATTACHMENT"]._loaded_options = None + _globals['_ATTACHMENTTRANSMISSIONSTATUS'].values_by_name["AWAITING_REMOTE_ACCEPTANCE_FAILED_ATTACHMENT"]._serialized_options = b'\010\001' + _globals['_ATTACHMENTTRANSMISSIONSTATUS'].values_by_name["NOT_ENOUGH_SPACE_ATTACHMENT"]._loaded_options = None + _globals['_ATTACHMENTTRANSMISSIONSTATUS'].values_by_name["NOT_ENOUGH_SPACE_ATTACHMENT"]._serialized_options = b'\010\001' + _globals['_ATTACHMENTTRANSMISSIONSTATUS'].values_by_name["FAILED_NO_TRANSFER_UPDATE_CALLBACK"]._loaded_options = None + _globals['_ATTACHMENTTRANSMISSIONSTATUS'].values_by_name["FAILED_NO_TRANSFER_UPDATE_CALLBACK"]._serialized_options = b'\010\001' + _globals['_ATTACHMENTTRANSMISSIONSTATUS'].values_by_name["MEDIA_UNAVAILABLE_ATTACHMENT"]._loaded_options = None + _globals['_ATTACHMENTTRANSMISSIONSTATUS'].values_by_name["MEDIA_UNAVAILABLE_ATTACHMENT"]._serialized_options = b'\010\001' + _globals['_ATTACHMENTTRANSMISSIONSTATUS'].values_by_name["UNSUPPORTED_ATTACHMENT_TYPE_ATTACHMENT"]._loaded_options = None + _globals['_ATTACHMENTTRANSMISSIONSTATUS'].values_by_name["UNSUPPORTED_ATTACHMENT_TYPE_ATTACHMENT"]._serialized_options = b'\010\001' + _globals['_ATTACHMENTTRANSMISSIONSTATUS'].values_by_name["NO_ATTACHMENT_FOUND"]._loaded_options = None + _globals['_ATTACHMENTTRANSMISSIONSTATUS'].values_by_name["NO_ATTACHMENT_FOUND"]._serialized_options = b'\010\001' + _globals['_ATTACHMENTTRANSMISSIONSTATUS'].values_by_name["FAILED_NO_SHARE_TARGET_ENDPOINT"]._loaded_options = None + _globals['_ATTACHMENTTRANSMISSIONSTATUS'].values_by_name["FAILED_NO_SHARE_TARGET_ENDPOINT"]._serialized_options = b'\010\001' + _globals['_ATTACHMENTTRANSMISSIONSTATUS'].values_by_name["FAILED_PAIRED_KEYHANDSHAKE"]._loaded_options = None + _globals['_ATTACHMENTTRANSMISSIONSTATUS'].values_by_name["FAILED_PAIRED_KEYHANDSHAKE"]._serialized_options = b'\010\001' + _globals['_ATTACHMENTTRANSMISSIONSTATUS'].values_by_name["FAILED_NULL_CONNECTION"]._loaded_options = None + _globals['_ATTACHMENTTRANSMISSIONSTATUS'].values_by_name["FAILED_NULL_CONNECTION"]._serialized_options = b'\010\001' + _globals['_ATTACHMENTTRANSMISSIONSTATUS'].values_by_name["FAILED_NO_PAYLOAD"]._loaded_options = None + _globals['_ATTACHMENTTRANSMISSIONSTATUS'].values_by_name["FAILED_NO_PAYLOAD"]._serialized_options = b'\010\001' + _globals['_ATTACHMENTTRANSMISSIONSTATUS'].values_by_name["FAILED_WRITE_INTRODUCTION"]._loaded_options = None + _globals['_ATTACHMENTTRANSMISSIONSTATUS'].values_by_name["FAILED_WRITE_INTRODUCTION"]._serialized_options = b'\010\001' + _globals['_ATTACHMENTTRANSMISSIONSTATUS'].values_by_name["FAILED_UNKNOWN_REMOTE_RESPONSE"]._loaded_options = None + _globals['_ATTACHMENTTRANSMISSIONSTATUS'].values_by_name["FAILED_UNKNOWN_REMOTE_RESPONSE"]._serialized_options = b'\010\001' + _globals['_ATTACHMENTTRANSMISSIONSTATUS'].values_by_name["FAILED_NULL_CONNECTION_LOST_CONNECTIVITY"]._loaded_options = None + _globals['_ATTACHMENTTRANSMISSIONSTATUS'].values_by_name["FAILED_NULL_CONNECTION_LOST_CONNECTIVITY"]._serialized_options = b'\010\001' + _globals['_ATTACHMENTTRANSMISSIONSTATUS'].values_by_name["FAILED_NULL_CONNECTION_FAILURE"]._loaded_options = None + _globals['_ATTACHMENTTRANSMISSIONSTATUS'].values_by_name["FAILED_NULL_CONNECTION_FAILURE"]._serialized_options = b'\010\001' + _globals['_ATTACHMENTTRANSMISSIONSTATUS'].values_by_name["NO_RESPONSE_FRAME_CONNECTION_CLOSED_LOST_CONNECTIVITY_TRANSMISSION_STATUS"]._loaded_options = None + _globals['_ATTACHMENTTRANSMISSIONSTATUS'].values_by_name["NO_RESPONSE_FRAME_CONNECTION_CLOSED_LOST_CONNECTIVITY_TRANSMISSION_STATUS"]._serialized_options = b'\010\001' + _globals['_SHARINGUSECASE'].values_by_name["USE_CASE_NEARBY_SHARE_WITH_QR_CODE"]._loaded_options = None + _globals['_SHARINGUSECASE'].values_by_name["USE_CASE_NEARBY_SHARE_WITH_QR_CODE"]._serialized_options = b'\010\001' + _globals['_EVENTTYPE']._serialized_start=55 + _globals['_EVENTTYPE']._serialized_end=2054 + _globals['_EVENTCATEGORY']._serialized_start=2056 + _globals['_EVENTCATEGORY']._serialized_end=2174 + _globals['_NEARBYSHARINGSTATUS']._serialized_start=2176 + _globals['_NEARBYSHARINGSTATUS']._serialized_end=2249 + _globals['_VISIBILITY']._serialized_start=2252 + _globals['_VISIBILITY']._serialized_end=2381 + _globals['_DATAUSAGE']._serialized_start=2383 + _globals['_DATAUSAGE']._serialized_end=2458 + _globals['_ESTABLISHCONNECTIONSTATUS']._serialized_start=2461 + _globals['_ESTABLISHCONNECTIONSTATUS']._serialized_end=2958 + _globals['_ATTACHMENTTRANSMISSIONSTATUS']._serialized_start=2961 + _globals['_ATTACHMENTTRANSMISSIONSTATUS']._serialized_end=4342 + _globals['_CONNECTIONLAYERSTATUS']._serialized_start=4345 + _globals['_CONNECTIONLAYERSTATUS']._serialized_end=5236 + _globals['_PROCESSRECEIVEDATTACHMENTSSTATUS']._serialized_start=5239 + _globals['_PROCESSRECEIVEDATTACHMENTSSTATUS']._serialized_end=5548 + _globals['_SESSIONSTATUS']._serialized_start=5550 + _globals['_SESSIONSTATUS']._serialized_end=5650 + _globals['_RESPONSETOINTRODUCTION']._serialized_start=5653 + _globals['_RESPONSETOINTRODUCTION']._serialized_end=5788 + _globals['_DEVICETYPE']._serialized_start=5790 + _globals['_DEVICETYPE']._serialized_end=5893 + _globals['_OSTYPE']._serialized_start=5895 + _globals['_OSTYPE']._serialized_end=5985 + _globals['_DEVICERELATIONSHIP']._serialized_start=5987 + _globals['_DEVICERELATIONSHIP']._serialized_end=6086 + _globals['_LOGSOURCE']._serialized_start=6089 + _globals['_LOGSOURCE']._serialized_end=6339 + _globals['_SERVERACTIONNAME']._serialized_start=6342 + _globals['_SERVERACTIONNAME']._serialized_end=6724 + _globals['_SERVERRESPONSESTATE']._serialized_start=6727 + _globals['_SERVERRESPONSESTATE']._serialized_end=7200 + _globals['_SYNCPURPOSE']._serialized_start=7203 + _globals['_SYNCPURPOSE']._serialized_end=7919 + _globals['_CLIENTROLE']._serialized_start=7921 + _globals['_CLIENTROLE']._serialized_end=8008 + _globals['_SCANTYPE']._serialized_start=8010 + _globals['_SCANTYPE']._serialized_end=8135 + _globals['_PARSINGFAILEDTYPE']._serialized_start=8137 + _globals['_PARSINGFAILEDTYPE']._serialized_end=8246 + _globals['_ADVERTISINGMODE']._serialized_start=8249 + _globals['_ADVERTISINGMODE']._serialized_end=8459 + _globals['_DISCOVERYMODE']._serialized_start=8462 + _globals['_DISCOVERYMODE']._serialized_end=8658 + _globals['_ACTIVITYNAME']._serialized_start=8661 + _globals['_ACTIVITYNAME']._serialized_end=9030 + _globals['_CONSENTTYPE']._serialized_start=9032 + _globals['_CONSENTTYPE']._serialized_end=9127 + _globals['_CONSENTACCEPTANCESTATUS']._serialized_start=9130 + _globals['_CONSENTACCEPTANCESTATUS']._serialized_end=9264 + _globals['_APKSOURCE']._serialized_start=9266 + _globals['_APKSOURCE']._serialized_end=9342 + _globals['_INSTALLAPKSTATUS']._serialized_start=9344 + _globals['_INSTALLAPKSTATUS']._serialized_end=9443 + _globals['_VERIFYAPKSTATUS']._serialized_start=9445 + _globals['_VERIFYAPKSTATUS']._serialized_end=9554 + _globals['_SHOWNOTIFICATIONSTATUS']._serialized_start=9556 + _globals['_SHOWNOTIFICATIONSTATUS']._serialized_end=9642 + _globals['_PERMISSIONREQUESTRESULT']._serialized_start=9645 + _globals['_PERMISSIONREQUESTRESULT']._serialized_end=9790 + _globals['_PERMISSIONREQUESTTYPE']._serialized_start=9793 + _globals['_PERMISSIONREQUESTTYPE']._serialized_end=9980 + _globals['_SHARINGUSECASE']._serialized_start=9983 + _globals['_SHARINGUSECASE']._serialized_end=10290 + _globals['_APPCRASHREASON']._serialized_start=10292 + _globals['_APPCRASHREASON']._serialized_end=10338 + _globals['_ATTACHMENTSOURCETYPE']._serialized_start=10341 + _globals['_ATTACHMENTSOURCETYPE']._serialized_end=10624 + _globals['_PREFERENCESACTION']._serialized_start=10627 + _globals['_PREFERENCESACTION']._serialized_end=11226 + _globals['_PREFERENCESACTIONSTATUS']._serialized_start=11229 + _globals['_PREFERENCESACTIONSTATUS']._serialized_end=11368 + _globals['_FASTINITSTATE']._serialized_start=11370 + _globals['_FASTINITSTATE']._serialized_end=11492 + _globals['_FASTINITTYPE']._serialized_start=11494 + _globals['_FASTINITTYPE']._serialized_end=11590 + _globals['_DESKTOPNOTIFICATION']._serialized_start=11593 + _globals['_DESKTOPNOTIFICATION']._serialized_end=11820 + _globals['_DESKTOPTRANSFEREVENTTYPE']._serialized_start=11823 + _globals['_DESKTOPTRANSFEREVENTTYPE']._serialized_end=12317 + _globals['_DECRYPTCERTIFICATEFAILURESTATUS']._serialized_start=12320 + _globals['_DECRYPTCERTIFICATEFAILURESTATUS']._serialized_end=12648 + _globals['_CONTACTACCESS']._serialized_start=12651 + _globals['_CONTACTACCESS']._serialized_end=12902 + _globals['_IDENTITYVERIFICATION']._serialized_start=12905 + _globals['_IDENTITYVERIFICATION']._serialized_end=13149 + _globals['_BUTTONSTATUS']._serialized_start=13152 + _globals['_BUTTONSTATUS']._serialized_end=13283 +# @@protoc_insertion_point(module_scope) diff --git a/pyquickshare/protos/sharing_enums_pb2.pyi b/pyquickshare/protos/sharing_enums_pb2.pyi new file mode 100644 index 0000000..d562704 --- /dev/null +++ b/pyquickshare/protos/sharing_enums_pb2.pyi @@ -0,0 +1,892 @@ +from google.protobuf.internal import enum_type_wrapper as _enum_type_wrapper +from google.protobuf import descriptor as _descriptor +from typing import ClassVar as _ClassVar + +DESCRIPTOR: _descriptor.FileDescriptor + +class EventType(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = () + UNKNOWN_EVENT_TYPE: _ClassVar[EventType] + ACCEPT_AGREEMENTS: _ClassVar[EventType] + ENABLE_NEARBY_SHARING: _ClassVar[EventType] + SET_VISIBILITY: _ClassVar[EventType] + DESCRIBE_ATTACHMENTS: _ClassVar[EventType] + SCAN_FOR_SHARE_TARGETS_START: _ClassVar[EventType] + SCAN_FOR_SHARE_TARGETS_END: _ClassVar[EventType] + ADVERTISE_DEVICE_PRESENCE_START: _ClassVar[EventType] + ADVERTISE_DEVICE_PRESENCE_END: _ClassVar[EventType] + SEND_FAST_INITIALIZATION: _ClassVar[EventType] + RECEIVE_FAST_INITIALIZATION: _ClassVar[EventType] + DISCOVER_SHARE_TARGET: _ClassVar[EventType] + SEND_INTRODUCTION: _ClassVar[EventType] + RECEIVE_INTRODUCTION: _ClassVar[EventType] + RESPOND_TO_INTRODUCTION: _ClassVar[EventType] + SEND_ATTACHMENTS_START: _ClassVar[EventType] + SEND_ATTACHMENTS_END: _ClassVar[EventType] + RECEIVE_ATTACHMENTS_START: _ClassVar[EventType] + RECEIVE_ATTACHMENTS_END: _ClassVar[EventType] + CANCEL_SENDING_ATTACHMENTS: _ClassVar[EventType] + CANCEL_RECEIVING_ATTACHMENTS: _ClassVar[EventType] + OPEN_RECEIVED_ATTACHMENTS: _ClassVar[EventType] + LAUNCH_SETUP_ACTIVITY: _ClassVar[EventType] + ADD_CONTACT: _ClassVar[EventType] + REMOVE_CONTACT: _ClassVar[EventType] + FAST_SHARE_SERVER_RESPONSE: _ClassVar[EventType] + SEND_START: _ClassVar[EventType] + ACCEPT_FAST_INITIALIZATION: _ClassVar[EventType] + SET_DATA_USAGE: _ClassVar[EventType] + DISMISS_FAST_INITIALIZATION: _ClassVar[EventType] + CANCEL_CONNECTION: _ClassVar[EventType] + LAUNCH_ACTIVITY: _ClassVar[EventType] + DISMISS_PRIVACY_NOTIFICATION: _ClassVar[EventType] + TAP_PRIVACY_NOTIFICATION: _ClassVar[EventType] + TAP_HELP: _ClassVar[EventType] + TAP_FEEDBACK: _ClassVar[EventType] + ADD_QUICK_SETTINGS_TILE: _ClassVar[EventType] + REMOVE_QUICK_SETTINGS_TILE: _ClassVar[EventType] + LAUNCH_PHONE_CONSENT: _ClassVar[EventType] + DISPLAY_PHONE_CONSENT: _ClassVar[EventType] + TAP_QUICK_SETTINGS_TILE: _ClassVar[EventType] + INSTALL_APK: _ClassVar[EventType] + VERIFY_APK: _ClassVar[EventType] + LAUNCH_CONSENT: _ClassVar[EventType] + PROCESS_RECEIVED_ATTACHMENTS_END: _ClassVar[EventType] + TOGGLE_SHOW_NOTIFICATION: _ClassVar[EventType] + SET_DEVICE_NAME: _ClassVar[EventType] + DECLINE_AGREEMENTS: _ClassVar[EventType] + REQUEST_SETTING_PERMISSIONS: _ClassVar[EventType] + ESTABLISH_CONNECTION: _ClassVar[EventType] + DEVICE_SETTINGS: _ClassVar[EventType] + AUTO_DISMISS_FAST_INITIALIZATION: _ClassVar[EventType] + APP_CRASH: _ClassVar[EventType] + TAP_QUICK_SETTINGS_FILE_SHARE: _ClassVar[EventType] + DISPLAY_PRIVACY_NOTIFICATION: _ClassVar[EventType] + PREFERENCES_USAGE: _ClassVar[EventType] + DEFAULT_OPT_IN: _ClassVar[EventType] + SETUP_WIZARD: _ClassVar[EventType] + TAP_QR_CODE: _ClassVar[EventType] + QR_CODE_LINK_SHOWN: _ClassVar[EventType] + PARSING_FAILED_ENDPOINT_ID: _ClassVar[EventType] + FAST_INIT_DISCOVER_DEVICE: _ClassVar[EventType] + SEND_DESKTOP_NOTIFICATION: _ClassVar[EventType] + SET_ACCOUNT: _ClassVar[EventType] + DECRYPT_CERTIFICATE_FAILURE: _ClassVar[EventType] + SHOW_ALLOW_PERMISSION_AUTO_ACCESS: _ClassVar[EventType] + SEND_DESKTOP_TRANSFER_EVENT: _ClassVar[EventType] + WAITING_FOR_ACCEPT: _ClassVar[EventType] + HIGH_QUALITY_MEDIUM_SETUP: _ClassVar[EventType] + RPC_CALL_STATUS: _ClassVar[EventType] + START_QR_CODE_SESSION: _ClassVar[EventType] + QR_CODE_OPENED_IN_WEB_CLIENT: _ClassVar[EventType] + HATS_JOINT_EVENT: _ClassVar[EventType] + RECEIVE_PREVIEWS: _ClassVar[EventType] + +class EventCategory(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = () + UNKNOWN_EVENT_CATEGORY: _ClassVar[EventCategory] + SENDING_EVENT: _ClassVar[EventCategory] + RECEIVING_EVENT: _ClassVar[EventCategory] + SETTINGS_EVENT: _ClassVar[EventCategory] + RPC_EVENT: _ClassVar[EventCategory] + +class NearbySharingStatus(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = () + UNKNOWN_NEARBY_SHARING_STATUS: _ClassVar[NearbySharingStatus] + ON: _ClassVar[NearbySharingStatus] + OFF: _ClassVar[NearbySharingStatus] + +class Visibility(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = () + UNKNOWN_VISIBILITY: _ClassVar[Visibility] + CONTACTS_ONLY: _ClassVar[Visibility] + EVERYONE: _ClassVar[Visibility] + SELECTED_CONTACTS_ONLY: _ClassVar[Visibility] + HIDDEN: _ClassVar[Visibility] + SELF_SHARE: _ClassVar[Visibility] + +class DataUsage(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = () + UNKNOWN_DATA_USAGE: _ClassVar[DataUsage] + ONLINE: _ClassVar[DataUsage] + WIFI_ONLY: _ClassVar[DataUsage] + OFFLINE: _ClassVar[DataUsage] + +class EstablishConnectionStatus(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = () + CONNECTION_STATUS_UNKNOWN: _ClassVar[EstablishConnectionStatus] + CONNECTION_STATUS_SUCCESS: _ClassVar[EstablishConnectionStatus] + CONNECTION_STATUS_FAILURE: _ClassVar[EstablishConnectionStatus] + CONNECTION_STATUS_CANCELLATION: _ClassVar[EstablishConnectionStatus] + CONNECTION_STATUS_MEDIA_UNAVAILABLE_ATTACHMENT: _ClassVar[EstablishConnectionStatus] + CONNECTION_STATUS_FAILED_PAIRED_KEYHANDSHAKE: _ClassVar[EstablishConnectionStatus] + CONNECTION_STATUS_FAILED_WRITE_INTRODUCTION: _ClassVar[EstablishConnectionStatus] + CONNECTION_STATUS_FAILED_NULL_CONNECTION: _ClassVar[EstablishConnectionStatus] + CONNECTION_STATUS_FAILED_NO_TRANSFER_UPDATE_CALLBACK: _ClassVar[EstablishConnectionStatus] + CONNECTION_STATUS_LOST_CONNECTIVITY: _ClassVar[EstablishConnectionStatus] + CONNECTION_STATUS_INVALID_ADVERTISEMENT: _ClassVar[EstablishConnectionStatus] + +class AttachmentTransmissionStatus(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = () + UNKNOWN_ATTACHMENT_TRANSMISSION_STATUS: _ClassVar[AttachmentTransmissionStatus] + COMPLETE_ATTACHMENT_TRANSMISSION_STATUS: _ClassVar[AttachmentTransmissionStatus] + CANCELED_ATTACHMENT_TRANSMISSION_STATUS: _ClassVar[AttachmentTransmissionStatus] + FAILED_ATTACHMENT_TRANSMISSION_STATUS: _ClassVar[AttachmentTransmissionStatus] + REJECTED_ATTACHMENT: _ClassVar[AttachmentTransmissionStatus] + TIMED_OUT_ATTACHMENT: _ClassVar[AttachmentTransmissionStatus] + AWAITING_REMOTE_ACCEPTANCE_FAILED_ATTACHMENT: _ClassVar[AttachmentTransmissionStatus] + NOT_ENOUGH_SPACE_ATTACHMENT: _ClassVar[AttachmentTransmissionStatus] + FAILED_NO_TRANSFER_UPDATE_CALLBACK: _ClassVar[AttachmentTransmissionStatus] + MEDIA_UNAVAILABLE_ATTACHMENT: _ClassVar[AttachmentTransmissionStatus] + UNSUPPORTED_ATTACHMENT_TYPE_ATTACHMENT: _ClassVar[AttachmentTransmissionStatus] + NO_ATTACHMENT_FOUND: _ClassVar[AttachmentTransmissionStatus] + FAILED_NO_SHARE_TARGET_ENDPOINT: _ClassVar[AttachmentTransmissionStatus] + FAILED_PAIRED_KEYHANDSHAKE: _ClassVar[AttachmentTransmissionStatus] + FAILED_NULL_CONNECTION: _ClassVar[AttachmentTransmissionStatus] + FAILED_NO_PAYLOAD: _ClassVar[AttachmentTransmissionStatus] + FAILED_WRITE_INTRODUCTION: _ClassVar[AttachmentTransmissionStatus] + FAILED_UNKNOWN_REMOTE_RESPONSE: _ClassVar[AttachmentTransmissionStatus] + FAILED_NULL_CONNECTION_INIT_OUTGOING: _ClassVar[AttachmentTransmissionStatus] + FAILED_NULL_CONNECTION_DISCONNECTED: _ClassVar[AttachmentTransmissionStatus] + FAILED_NULL_CONNECTION_LOST_CONNECTIVITY: _ClassVar[AttachmentTransmissionStatus] + FAILED_NULL_CONNECTION_FAILURE: _ClassVar[AttachmentTransmissionStatus] + REJECTED_ATTACHMENT_TRANSMISSION_STATUS: _ClassVar[AttachmentTransmissionStatus] + TIMED_OUT_ATTACHMENT_TRANSMISSION_STATUS: _ClassVar[AttachmentTransmissionStatus] + NOT_ENOUGH_SPACE_ATTACHMENT_TRANSMISSION_STATUS: _ClassVar[AttachmentTransmissionStatus] + UNSUPPORTED_ATTACHMENT_TYPE_ATTACHMENT_TRANSMISSION_STATUS: _ClassVar[AttachmentTransmissionStatus] + FAILED_UNKNOWN_REMOTE_RESPONSE_TRANSMISSION_STATUS: _ClassVar[AttachmentTransmissionStatus] + NO_RESPONSE_FRAME_CONNECTION_CLOSED_LOST_CONNECTIVITY_TRANSMISSION_STATUS: _ClassVar[AttachmentTransmissionStatus] + NO_RESPONSE_FRAME_CONNECTION_CLOSED_TRANSMISSION_STATUS: _ClassVar[AttachmentTransmissionStatus] + LOST_CONNECTIVITY_TRANSMISSION_STATUS: _ClassVar[AttachmentTransmissionStatus] + FAILED_DISALLOWED_MEDIUM: _ClassVar[AttachmentTransmissionStatus] + +class ConnectionLayerStatus(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = () + CONNECTION_LAYER_STATUS_UNKNOWN: _ClassVar[ConnectionLayerStatus] + CONNECTION_LAYER_STATUS_SUCCESS: _ClassVar[ConnectionLayerStatus] + CONNECTION_LAYER_STATUS_ERROR: _ClassVar[ConnectionLayerStatus] + CONNECTION_LAYER_STATUS_OUT_OF_ORDER_API_CALL: _ClassVar[ConnectionLayerStatus] + CONNECTION_LAYER_STATUS_ALREADY_HAVE_ACTIVE_STRATEGY: _ClassVar[ConnectionLayerStatus] + CONNECTION_LAYER_STATUS_ALREADY_ADVERTISING: _ClassVar[ConnectionLayerStatus] + CONNECTION_LAYER_STATUS_ALREADY_DISCOVERING: _ClassVar[ConnectionLayerStatus] + CONNECTION_LAYER_STATUS_ALREADY_LISTENING: _ClassVar[ConnectionLayerStatus] + CONNECTION_LAYER_STATUS_END_POINT_IO_ERROR: _ClassVar[ConnectionLayerStatus] + CONNECTION_LAYER_STATUS_END_POINT_UNKNOWN: _ClassVar[ConnectionLayerStatus] + CONNECTION_LAYER_STATUS_CONNECTION_REJECTED: _ClassVar[ConnectionLayerStatus] + CONNECTION_LAYER_STATUS_ALREADY_CONNECTED_TO_END_POINT: _ClassVar[ConnectionLayerStatus] + CONNECTION_LAYER_STATUS_NOT_CONNECTED_TO_END_POINT: _ClassVar[ConnectionLayerStatus] + CONNECTION_LAYER_STATUS_BLUETOOTH_ERROR: _ClassVar[ConnectionLayerStatus] + CONNECTION_LAYER_STATUS_BLE_ERROR: _ClassVar[ConnectionLayerStatus] + CONNECTION_LAYER_STATUS_WIFI_LAN_ERROR: _ClassVar[ConnectionLayerStatus] + CONNECTION_LAYER_STATUS_PAYLOAD_UNKNOWN: _ClassVar[ConnectionLayerStatus] + CONNECTION_LAYER_STATUS_RESET: _ClassVar[ConnectionLayerStatus] + CONNECTION_LAYER_STATUS_TIMEOUT: _ClassVar[ConnectionLayerStatus] + +class ProcessReceivedAttachmentsStatus(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = () + PROCESSING_STATUS_UNKNOWN: _ClassVar[ProcessReceivedAttachmentsStatus] + PROCESSING_STATUS_COMPLETE_PROCESSING_ATTACHMENTS: _ClassVar[ProcessReceivedAttachmentsStatus] + PROCESSING_STATUS_FAILED_MOVING_FILES: _ClassVar[ProcessReceivedAttachmentsStatus] + PROCESSING_STATUS_FAILED_RECEIVING_APK: _ClassVar[ProcessReceivedAttachmentsStatus] + PROCESSING_STATUS_FAILED_RECEIVING_TEXT: _ClassVar[ProcessReceivedAttachmentsStatus] + PROCESSING_STATUS_FAILED_RECEIVING_WIFI_CREDENTIALS: _ClassVar[ProcessReceivedAttachmentsStatus] + +class SessionStatus(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = () + UNKNOWN_SESSION_STATUS: _ClassVar[SessionStatus] + SUCCEEDED_SESSION_STATUS: _ClassVar[SessionStatus] + FAILED_SESSION_STATUS: _ClassVar[SessionStatus] + +class ResponseToIntroduction(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = () + UNKNOWN_RESPONSE_TO_INTRODUCTION: _ClassVar[ResponseToIntroduction] + ACCEPT_INTRODUCTION: _ClassVar[ResponseToIntroduction] + REJECT_INTRODUCTION: _ClassVar[ResponseToIntroduction] + FAIL_INTRODUCTION: _ClassVar[ResponseToIntroduction] + +class DeviceType(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = () + UNKNOWN_DEVICE_TYPE: _ClassVar[DeviceType] + PHONE: _ClassVar[DeviceType] + TABLET: _ClassVar[DeviceType] + LAPTOP: _ClassVar[DeviceType] + CAR: _ClassVar[DeviceType] + FOLDABLE: _ClassVar[DeviceType] + XR: _ClassVar[DeviceType] + +class OSType(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = () + UNKNOWN_OS_TYPE: _ClassVar[OSType] + ANDROID: _ClassVar[OSType] + CHROME_OS: _ClassVar[OSType] + IOS: _ClassVar[OSType] + WINDOWS: _ClassVar[OSType] + MACOS: _ClassVar[OSType] + +class DeviceRelationship(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = () + UNKNOWN_DEVICE_RELATIONSHIP: _ClassVar[DeviceRelationship] + IS_SELF: _ClassVar[DeviceRelationship] + IS_CONTACT: _ClassVar[DeviceRelationship] + IS_STRANGER: _ClassVar[DeviceRelationship] + +class LogSource(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = () + UNSPECIFIED_SOURCE: _ClassVar[LogSource] + LAB_DEVICES: _ClassVar[LogSource] + INTERNAL_DEVICES: _ClassVar[LogSource] + BETA_TESTER_DEVICES: _ClassVar[LogSource] + OEM_DEVICES: _ClassVar[LogSource] + DEBUG_DEVICES: _ClassVar[LogSource] + NEARBY_MODULE_FOOD_DEVICES: _ClassVar[LogSource] + BETO_DOGFOOD_DEVICES: _ClassVar[LogSource] + NEARBY_DOGFOOD_DEVICES: _ClassVar[LogSource] + NEARBY_TEAMFOOD_DEVICES: _ClassVar[LogSource] + +class ServerActionName(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = () + UNKNOWN_SERVER_ACTION: _ClassVar[ServerActionName] + UPLOAD_CERTIFICATES: _ClassVar[ServerActionName] + DOWNLOAD_CERTIFICATES: _ClassVar[ServerActionName] + CHECK_REACHABILITY: _ClassVar[ServerActionName] + UPLOAD_CONTACTS: _ClassVar[ServerActionName] + UPDATE_DEVICE_NAME: _ClassVar[ServerActionName] + UPLOAD_SENDER_CERTIFICATES: _ClassVar[ServerActionName] + DOWNLOAD_SENDER_CERTIFICATES: _ClassVar[ServerActionName] + UPLOAD_CONTACTS_AND_CERTIFICATES: _ClassVar[ServerActionName] + LIST_REACHABLE_PHONE_NUMBERS: _ClassVar[ServerActionName] + LIST_MY_DEVICES: _ClassVar[ServerActionName] + LIST_CONTACT_PEOPLE: _ClassVar[ServerActionName] + DOWNLOAD_CERTIFICATES_INFO: _ClassVar[ServerActionName] + +class ServerResponseState(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = () + UNKNOWN_SERVER_RESPONSE_STATE: _ClassVar[ServerResponseState] + SERVER_RESPONSE_SUCCESS: _ClassVar[ServerResponseState] + SERVER_RESPONSE_UNKNOWN_FAILURE: _ClassVar[ServerResponseState] + SERVER_RESPONSE_STATUS_OTHER_FAILURE: _ClassVar[ServerResponseState] + SERVER_RESPONSE_STATUS_DEADLINE_EXCEEDED: _ClassVar[ServerResponseState] + SERVER_RESPONSE_STATUS_PERMISSION_DENIED: _ClassVar[ServerResponseState] + SERVER_RESPONSE_STATUS_UNAVAILABLE: _ClassVar[ServerResponseState] + SERVER_RESPONSE_STATUS_UNAUTHENTICATED: _ClassVar[ServerResponseState] + SERVER_RESPONSE_STATUS_INVALID_ARGUMENT: _ClassVar[ServerResponseState] + SERVER_RESPONSE_GOOGLE_AUTH_FAILURE: _ClassVar[ServerResponseState] + SERVER_RESPONSE_NOT_CONNECTED_TO_INTERNET: _ClassVar[ServerResponseState] + +class SyncPurpose(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = () + SYNC_PURPOSE_UNKNOWN: _ClassVar[SyncPurpose] + SYNC_PURPOSE_ON_DEMAND_SYNC: _ClassVar[SyncPurpose] + SYNC_PURPOSE_CHIME_NOTIFICATION: _ClassVar[SyncPurpose] + SYNC_PURPOSE_DAILY_SYNC: _ClassVar[SyncPurpose] + SYNC_PURPOSE_OPT_IN_FIRST_SYNC: _ClassVar[SyncPurpose] + SYNC_PURPOSE_CHECK_DEFAULT_OPT_IN: _ClassVar[SyncPurpose] + SYNC_PURPOSE_NEARBY_SHARE_ENABLED: _ClassVar[SyncPurpose] + SYNC_PURPOSE_SYNC_AT_FAST_INIT: _ClassVar[SyncPurpose] + SYNC_PURPOSE_SYNC_AT_DISCOVERY: _ClassVar[SyncPurpose] + SYNC_PURPOSE_SYNC_AT_LOAD_PRIVATE_CERTIFICATE: _ClassVar[SyncPurpose] + SYNC_PURPOSE_SYNC_AT_ADVERTISEMENT: _ClassVar[SyncPurpose] + SYNC_PURPOSE_CONTACT_LIST_CHANGE: _ClassVar[SyncPurpose] + SYNC_PURPOSE_SHOW_C11N_VIEW: _ClassVar[SyncPurpose] + SYNC_PURPOSE_REGULAR_CHECK_CONTACT_REACHABILITY: _ClassVar[SyncPurpose] + SYNC_PURPOSE_VISIBILITY_SELECTED_CONTACT_CHANGE: _ClassVar[SyncPurpose] + SYNC_PURPOSE_ACCOUNT_CHANGE: _ClassVar[SyncPurpose] + SYNC_PURPOSE_REGENERATE_CERTIFICATES: _ClassVar[SyncPurpose] + SYNC_PURPOSE_DEVICE_CONTACTS_CONSENT_CHANGE: _ClassVar[SyncPurpose] + +class ClientRole(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = () + CLIENT_ROLE_UNKNOWN: _ClassVar[ClientRole] + CLIENT_ROLE_SENDER: _ClassVar[ClientRole] + CLIENT_ROLE_RECEIVER: _ClassVar[ClientRole] + +class ScanType(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = () + UNKNOWN_SCAN_TYPE: _ClassVar[ScanType] + FOREGROUND_SCAN: _ClassVar[ScanType] + FOREGROUND_RETRY_SCAN: _ClassVar[ScanType] + DIRECT_SHARE_SCAN: _ClassVar[ScanType] + BACKGROUND_SCAN: _ClassVar[ScanType] + +class ParsingFailedType(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = () + FAILED_UNKNOWN_TYPE: _ClassVar[ParsingFailedType] + FAILED_PARSE_ADVERTISEMENT: _ClassVar[ParsingFailedType] + FAILED_CONVERT_SHARE_TARGET: _ClassVar[ParsingFailedType] + +class AdvertisingMode(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = () + UNKNOWN_ADVERTISING_MODE: _ClassVar[AdvertisingMode] + SCREEN_OFF_ADVERTISING_MODE: _ClassVar[AdvertisingMode] + BACKGROUND_ADVERTISING_MODE: _ClassVar[AdvertisingMode] + MIDGROUND_ADVERTISING_MODE: _ClassVar[AdvertisingMode] + FOREGROUND_ADVERTISING_MODE: _ClassVar[AdvertisingMode] + SUSPENDED_ADVERTISING_MODE: _ClassVar[AdvertisingMode] + +class DiscoveryMode(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = () + UNKNOWN_DISCOVERY_MODE: _ClassVar[DiscoveryMode] + SCREEN_OFF_DISCOVERY_MODE: _ClassVar[DiscoveryMode] + BACKGROUND_DISCOVERY_MODE: _ClassVar[DiscoveryMode] + MIDGROUND_DISCOVERY_MODE: _ClassVar[DiscoveryMode] + FOREGROUND_DISCOVERY_MODE: _ClassVar[DiscoveryMode] + SUSPENDED_DISCOVERY_MODE: _ClassVar[DiscoveryMode] + +class ActivityName(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = () + UNKNOWN_ACTIVITY: _ClassVar[ActivityName] + SHARE_SHEET_ACTIVITY: _ClassVar[ActivityName] + SETTINGS_ACTIVITY: _ClassVar[ActivityName] + RECEIVE_SURFACE_ACTIVITY: _ClassVar[ActivityName] + SETUP_ACTIVITY: _ClassVar[ActivityName] + DEVICE_VISIBILITY_ACTIVITY: _ClassVar[ActivityName] + CONSENTS_ACTIVITY: _ClassVar[ActivityName] + SET_DEVICE_NAME_DIALOG: _ClassVar[ActivityName] + SET_DATA_USAGE_DIALOG: _ClassVar[ActivityName] + QUICK_SETTINGS_ACTIVITY: _ClassVar[ActivityName] + REMOTE_COPY_SHARE_SHEET_ACTIVITY: _ClassVar[ActivityName] + SETUP_WIZARD_ACTIVITY: _ClassVar[ActivityName] + SETTINGS_REVIEW_ACTIVITY: _ClassVar[ActivityName] + +class ConsentType(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = () + CONSENT_TYPE_UNKNOWN: _ClassVar[ConsentType] + CONSENT_TYPE_C11N: _ClassVar[ConsentType] + CONSENT_TYPE_DEVICE_CONTACT: _ClassVar[ConsentType] + +class ConsentAcceptanceStatus(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = () + CONSENT_UNKNOWN_ACCEPT_STATUS: _ClassVar[ConsentAcceptanceStatus] + CONSENT_ACCEPTED: _ClassVar[ConsentAcceptanceStatus] + CONSENT_DECLINED: _ClassVar[ConsentAcceptanceStatus] + CONSENT_UNABLE_TO_ENABLE: _ClassVar[ConsentAcceptanceStatus] + +class ApkSource(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = () + UNKNOWN_APK_SOURCE: _ClassVar[ApkSource] + APK_FROM_SD_CARD: _ClassVar[ApkSource] + INSTALLED_APP: _ClassVar[ApkSource] + +class InstallAPKStatus(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = () + UNKNOWN_INSTALL_APK_STATUS: _ClassVar[InstallAPKStatus] + FAIL_INSTALLATION: _ClassVar[InstallAPKStatus] + SUCCESS_INSTALLATION: _ClassVar[InstallAPKStatus] + +class VerifyAPKStatus(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = () + UNKNOWN_VERIFY_APK_STATUS: _ClassVar[VerifyAPKStatus] + NOT_INSTALLABLE: _ClassVar[VerifyAPKStatus] + INSTALLABLE: _ClassVar[VerifyAPKStatus] + ALREADY_INSTALLED: _ClassVar[VerifyAPKStatus] + +class ShowNotificationStatus(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = () + UNKNOWN_SHOW_NOTIFICATION_STATUS: _ClassVar[ShowNotificationStatus] + SHOW: _ClassVar[ShowNotificationStatus] + NOT_SHOW: _ClassVar[ShowNotificationStatus] + +class PermissionRequestResult(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = () + PERMISSION_UNKNOWN_REQUEST_RESULT: _ClassVar[PermissionRequestResult] + PERMISSION_GRANTED: _ClassVar[PermissionRequestResult] + PERMISSION_REJECTED: _ClassVar[PermissionRequestResult] + PERMISSION_UNABLE_TO_GRANT: _ClassVar[PermissionRequestResult] + +class PermissionRequestType(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = () + PERMISSION_UNKNOWN_TYPE: _ClassVar[PermissionRequestType] + PERMISSION_AIRPLANE_MODE_OFF: _ClassVar[PermissionRequestType] + PERMISSION_WIFI: _ClassVar[PermissionRequestType] + PERMISSION_BLUETOOTH: _ClassVar[PermissionRequestType] + PERMISSION_LOCATION: _ClassVar[PermissionRequestType] + PERMISSION_WIFI_HOTSPOT: _ClassVar[PermissionRequestType] + +class SharingUseCase(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = () + USE_CASE_UNKNOWN: _ClassVar[SharingUseCase] + USE_CASE_NEARBY_SHARE: _ClassVar[SharingUseCase] + USE_CASE_REMOTE_COPY_PASTE: _ClassVar[SharingUseCase] + USE_CASE_WIFI_CREDENTIAL: _ClassVar[SharingUseCase] + USE_CASE_APP_SHARE: _ClassVar[SharingUseCase] + USE_CASE_QUICK_SETTING_FILE_SHARE: _ClassVar[SharingUseCase] + USE_CASE_SETUP_WIZARD: _ClassVar[SharingUseCase] + USE_CASE_NEARBY_SHARE_WITH_QR_CODE: _ClassVar[SharingUseCase] + USE_CASE_REDIRECTED_FROM_BLUETOOTH_SHARE: _ClassVar[SharingUseCase] + +class AppCrashReason(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = () + APP_CRASH_REASON_UNKNOWN: _ClassVar[AppCrashReason] + +class AttachmentSourceType(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = () + ATTACHMENT_SOURCE_UNKNOWN: _ClassVar[AttachmentSourceType] + ATTACHMENT_SOURCE_CONTEXT_MENU: _ClassVar[AttachmentSourceType] + ATTACHMENT_SOURCE_DRAG_AND_DROP: _ClassVar[AttachmentSourceType] + ATTACHMENT_SOURCE_SELECT_FILES_BUTTON: _ClassVar[AttachmentSourceType] + ATTACHMENT_SOURCE_PASTE: _ClassVar[AttachmentSourceType] + ATTACHMENT_SOURCE_SELECT_FOLDERS_BUTTON: _ClassVar[AttachmentSourceType] + ATTACHMENT_SOURCE_SHARE_ACTIVATION: _ClassVar[AttachmentSourceType] + +class PreferencesAction(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = () + PREFERENCES_ACTION_UNKNOWN: _ClassVar[PreferencesAction] + PREFERENCES_ACTION_NO_ACTION: _ClassVar[PreferencesAction] + PREFERENCES_ACTION_LOAD_PREFERENCES: _ClassVar[PreferencesAction] + PREFERENCES_ACTION_SAVE_PREFERENCESS: _ClassVar[PreferencesAction] + PREFERENCES_ACTION_ATTEMPT_LOAD: _ClassVar[PreferencesAction] + PREFERENCES_ACTION_RESTORE_FROM_BACKUP: _ClassVar[PreferencesAction] + PREFERENCES_ACTION_CREATE_PREFERENCES_PATH: _ClassVar[PreferencesAction] + PREFERENCES_ACTION_MAKE_PREFERENCES_BACKUP_FILE: _ClassVar[PreferencesAction] + PREFERENCES_ACTION_CHECK_IF_PREFERENCES_PATH_EXISTS: _ClassVar[PreferencesAction] + PREFERENCES_ACTION_CHECK_IF_PREFERENCES_INPUT_STREAM_STATUS: _ClassVar[PreferencesAction] + PREFERENCES_ACTION_CHECK_IF_PREFERENCES_FILE_IS_CORRUPTED: _ClassVar[PreferencesAction] + PREFERENCES_ACTION_CHECK_IF_PREFERENCES_BACKUP_FILE_EXISTS: _ClassVar[PreferencesAction] + +class PreferencesActionStatus(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = () + PREFERENCES_ACTION_STATUS_UNKNOWN: _ClassVar[PreferencesActionStatus] + PREFERENCES_ACTION_STATUS_SUCCESS: _ClassVar[PreferencesActionStatus] + PREFERENCES_ACTION_STATUS_FAIL: _ClassVar[PreferencesActionStatus] + +class FastInitState(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = () + FAST_INIT_UNKNOWN_STATE: _ClassVar[FastInitState] + FAST_INIT_CLOSE_STATE: _ClassVar[FastInitState] + FAST_INIT_FAR_STATE: _ClassVar[FastInitState] + FAST_INIT_LOST_STATE: _ClassVar[FastInitState] + +class FastInitType(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = () + FAST_INIT_UNKNOWN_TYPE: _ClassVar[FastInitType] + FAST_INIT_NOTIFY_TYPE: _ClassVar[FastInitType] + FAST_INIT_SILENT_TYPE: _ClassVar[FastInitType] + +class DesktopNotification(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = () + DESKTOP_NOTIFICATION_UNKNOWN: _ClassVar[DesktopNotification] + DESKTOP_NOTIFICATION_CONNECTING: _ClassVar[DesktopNotification] + DESKTOP_NOTIFICATION_PROGRESS: _ClassVar[DesktopNotification] + DESKTOP_NOTIFICATION_ACCEPT: _ClassVar[DesktopNotification] + DESKTOP_NOTIFICATION_RECEIVED: _ClassVar[DesktopNotification] + DESKTOP_NOTIFICATION_ERROR: _ClassVar[DesktopNotification] + +class DesktopTransferEventType(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = () + DESKTOP_TRANSFER_EVENT_TYPE_UNKNOWN: _ClassVar[DesktopTransferEventType] + DESKTOP_TRANSFER_EVENT_RECEIVE_TYPE_ACCEPT: _ClassVar[DesktopTransferEventType] + DESKTOP_TRANSFER_EVENT_RECEIVE_TYPE_PROGRESS: _ClassVar[DesktopTransferEventType] + DESKTOP_TRANSFER_EVENT_RECEIVE_TYPE_RECEIVED: _ClassVar[DesktopTransferEventType] + DESKTOP_TRANSFER_EVENT_RECEIVE_TYPE_ERROR: _ClassVar[DesktopTransferEventType] + DESKTOP_TRANSFER_EVENT_SEND_TYPE_START: _ClassVar[DesktopTransferEventType] + DESKTOP_TRANSFER_EVENT_SEND_TYPE_SELECT_A_DEVICE: _ClassVar[DesktopTransferEventType] + DESKTOP_TRANSFER_EVENT_SEND_TYPE_PROGRESS: _ClassVar[DesktopTransferEventType] + DESKTOP_TRANSFER_EVENT_SEND_TYPE_SENT: _ClassVar[DesktopTransferEventType] + DESKTOP_TRANSFER_EVENT_SEND_TYPE_ERROR: _ClassVar[DesktopTransferEventType] + +class DecryptCertificateFailureStatus(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = () + DECRYPT_CERT_UNKNOWN_FAILURE: _ClassVar[DecryptCertificateFailureStatus] + DECRYPT_CERT_NO_SUCH_ALGORITHM_FAILURE: _ClassVar[DecryptCertificateFailureStatus] + DECRYPT_CERT_NO_SUCH_PADDING_FAILURE: _ClassVar[DecryptCertificateFailureStatus] + DECRYPT_CERT_INVALID_KEY_FAILURE: _ClassVar[DecryptCertificateFailureStatus] + DECRYPT_CERT_INVALID_ALGORITHM_PARAMETER_FAILURE: _ClassVar[DecryptCertificateFailureStatus] + DECRYPT_CERT_ILLEGAL_BLOCK_SIZE_FAILURE: _ClassVar[DecryptCertificateFailureStatus] + DECRYPT_CERT_BAD_PADDING_FAILURE: _ClassVar[DecryptCertificateFailureStatus] + +class ContactAccess(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = () + CONTACT_ACCESS_UNKNOWN: _ClassVar[ContactAccess] + CONTACT_ACCESS_NO_CONTACT_UPLOADED: _ClassVar[ContactAccess] + CONTACT_ACCESS_ONLY_UPLOAD_GOOGLE_CONTACT: _ClassVar[ContactAccess] + CONTACT_ACCESS_UPLOAD_CONTACT_FOR_DEVICE_CONTACT_CONSENT: _ClassVar[ContactAccess] + CONTACT_ACCESS_UPLOAD_CONTACT_FOR_QUICK_SHARE_CONSENT: _ClassVar[ContactAccess] + +class IdentityVerification(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = () + IDENTITY_VERIFICATION_UNKNOWN: _ClassVar[IdentityVerification] + IDENTITY_VERIFICATION_NO_PHONE_NUMBER_VERIFIED: _ClassVar[IdentityVerification] + IDENTITY_VERIFICATION_PHONE_NUMBER_VERIFIED_NOT_LINKED_TO_GAIA: _ClassVar[IdentityVerification] + IDENTITY_VERIFICATION_PHONE_NUMBER_VERIFIED_LINKED_TO_QS_GAIA: _ClassVar[IdentityVerification] + +class ButtonStatus(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = () + BUTTON_STATUS_UNKNOWN: _ClassVar[ButtonStatus] + BUTTON_STATUS_CLICK_ACCEPT: _ClassVar[ButtonStatus] + BUTTON_STATUS_CLICK_REJECT: _ClassVar[ButtonStatus] + BUTTON_STATUS_IGNORE: _ClassVar[ButtonStatus] +UNKNOWN_EVENT_TYPE: EventType +ACCEPT_AGREEMENTS: EventType +ENABLE_NEARBY_SHARING: EventType +SET_VISIBILITY: EventType +DESCRIBE_ATTACHMENTS: EventType +SCAN_FOR_SHARE_TARGETS_START: EventType +SCAN_FOR_SHARE_TARGETS_END: EventType +ADVERTISE_DEVICE_PRESENCE_START: EventType +ADVERTISE_DEVICE_PRESENCE_END: EventType +SEND_FAST_INITIALIZATION: EventType +RECEIVE_FAST_INITIALIZATION: EventType +DISCOVER_SHARE_TARGET: EventType +SEND_INTRODUCTION: EventType +RECEIVE_INTRODUCTION: EventType +RESPOND_TO_INTRODUCTION: EventType +SEND_ATTACHMENTS_START: EventType +SEND_ATTACHMENTS_END: EventType +RECEIVE_ATTACHMENTS_START: EventType +RECEIVE_ATTACHMENTS_END: EventType +CANCEL_SENDING_ATTACHMENTS: EventType +CANCEL_RECEIVING_ATTACHMENTS: EventType +OPEN_RECEIVED_ATTACHMENTS: EventType +LAUNCH_SETUP_ACTIVITY: EventType +ADD_CONTACT: EventType +REMOVE_CONTACT: EventType +FAST_SHARE_SERVER_RESPONSE: EventType +SEND_START: EventType +ACCEPT_FAST_INITIALIZATION: EventType +SET_DATA_USAGE: EventType +DISMISS_FAST_INITIALIZATION: EventType +CANCEL_CONNECTION: EventType +LAUNCH_ACTIVITY: EventType +DISMISS_PRIVACY_NOTIFICATION: EventType +TAP_PRIVACY_NOTIFICATION: EventType +TAP_HELP: EventType +TAP_FEEDBACK: EventType +ADD_QUICK_SETTINGS_TILE: EventType +REMOVE_QUICK_SETTINGS_TILE: EventType +LAUNCH_PHONE_CONSENT: EventType +DISPLAY_PHONE_CONSENT: EventType +TAP_QUICK_SETTINGS_TILE: EventType +INSTALL_APK: EventType +VERIFY_APK: EventType +LAUNCH_CONSENT: EventType +PROCESS_RECEIVED_ATTACHMENTS_END: EventType +TOGGLE_SHOW_NOTIFICATION: EventType +SET_DEVICE_NAME: EventType +DECLINE_AGREEMENTS: EventType +REQUEST_SETTING_PERMISSIONS: EventType +ESTABLISH_CONNECTION: EventType +DEVICE_SETTINGS: EventType +AUTO_DISMISS_FAST_INITIALIZATION: EventType +APP_CRASH: EventType +TAP_QUICK_SETTINGS_FILE_SHARE: EventType +DISPLAY_PRIVACY_NOTIFICATION: EventType +PREFERENCES_USAGE: EventType +DEFAULT_OPT_IN: EventType +SETUP_WIZARD: EventType +TAP_QR_CODE: EventType +QR_CODE_LINK_SHOWN: EventType +PARSING_FAILED_ENDPOINT_ID: EventType +FAST_INIT_DISCOVER_DEVICE: EventType +SEND_DESKTOP_NOTIFICATION: EventType +SET_ACCOUNT: EventType +DECRYPT_CERTIFICATE_FAILURE: EventType +SHOW_ALLOW_PERMISSION_AUTO_ACCESS: EventType +SEND_DESKTOP_TRANSFER_EVENT: EventType +WAITING_FOR_ACCEPT: EventType +HIGH_QUALITY_MEDIUM_SETUP: EventType +RPC_CALL_STATUS: EventType +START_QR_CODE_SESSION: EventType +QR_CODE_OPENED_IN_WEB_CLIENT: EventType +HATS_JOINT_EVENT: EventType +RECEIVE_PREVIEWS: EventType +UNKNOWN_EVENT_CATEGORY: EventCategory +SENDING_EVENT: EventCategory +RECEIVING_EVENT: EventCategory +SETTINGS_EVENT: EventCategory +RPC_EVENT: EventCategory +UNKNOWN_NEARBY_SHARING_STATUS: NearbySharingStatus +ON: NearbySharingStatus +OFF: NearbySharingStatus +UNKNOWN_VISIBILITY: Visibility +CONTACTS_ONLY: Visibility +EVERYONE: Visibility +SELECTED_CONTACTS_ONLY: Visibility +HIDDEN: Visibility +SELF_SHARE: Visibility +UNKNOWN_DATA_USAGE: DataUsage +ONLINE: DataUsage +WIFI_ONLY: DataUsage +OFFLINE: DataUsage +CONNECTION_STATUS_UNKNOWN: EstablishConnectionStatus +CONNECTION_STATUS_SUCCESS: EstablishConnectionStatus +CONNECTION_STATUS_FAILURE: EstablishConnectionStatus +CONNECTION_STATUS_CANCELLATION: EstablishConnectionStatus +CONNECTION_STATUS_MEDIA_UNAVAILABLE_ATTACHMENT: EstablishConnectionStatus +CONNECTION_STATUS_FAILED_PAIRED_KEYHANDSHAKE: EstablishConnectionStatus +CONNECTION_STATUS_FAILED_WRITE_INTRODUCTION: EstablishConnectionStatus +CONNECTION_STATUS_FAILED_NULL_CONNECTION: EstablishConnectionStatus +CONNECTION_STATUS_FAILED_NO_TRANSFER_UPDATE_CALLBACK: EstablishConnectionStatus +CONNECTION_STATUS_LOST_CONNECTIVITY: EstablishConnectionStatus +CONNECTION_STATUS_INVALID_ADVERTISEMENT: EstablishConnectionStatus +UNKNOWN_ATTACHMENT_TRANSMISSION_STATUS: AttachmentTransmissionStatus +COMPLETE_ATTACHMENT_TRANSMISSION_STATUS: AttachmentTransmissionStatus +CANCELED_ATTACHMENT_TRANSMISSION_STATUS: AttachmentTransmissionStatus +FAILED_ATTACHMENT_TRANSMISSION_STATUS: AttachmentTransmissionStatus +REJECTED_ATTACHMENT: AttachmentTransmissionStatus +TIMED_OUT_ATTACHMENT: AttachmentTransmissionStatus +AWAITING_REMOTE_ACCEPTANCE_FAILED_ATTACHMENT: AttachmentTransmissionStatus +NOT_ENOUGH_SPACE_ATTACHMENT: AttachmentTransmissionStatus +FAILED_NO_TRANSFER_UPDATE_CALLBACK: AttachmentTransmissionStatus +MEDIA_UNAVAILABLE_ATTACHMENT: AttachmentTransmissionStatus +UNSUPPORTED_ATTACHMENT_TYPE_ATTACHMENT: AttachmentTransmissionStatus +NO_ATTACHMENT_FOUND: AttachmentTransmissionStatus +FAILED_NO_SHARE_TARGET_ENDPOINT: AttachmentTransmissionStatus +FAILED_PAIRED_KEYHANDSHAKE: AttachmentTransmissionStatus +FAILED_NULL_CONNECTION: AttachmentTransmissionStatus +FAILED_NO_PAYLOAD: AttachmentTransmissionStatus +FAILED_WRITE_INTRODUCTION: AttachmentTransmissionStatus +FAILED_UNKNOWN_REMOTE_RESPONSE: AttachmentTransmissionStatus +FAILED_NULL_CONNECTION_INIT_OUTGOING: AttachmentTransmissionStatus +FAILED_NULL_CONNECTION_DISCONNECTED: AttachmentTransmissionStatus +FAILED_NULL_CONNECTION_LOST_CONNECTIVITY: AttachmentTransmissionStatus +FAILED_NULL_CONNECTION_FAILURE: AttachmentTransmissionStatus +REJECTED_ATTACHMENT_TRANSMISSION_STATUS: AttachmentTransmissionStatus +TIMED_OUT_ATTACHMENT_TRANSMISSION_STATUS: AttachmentTransmissionStatus +NOT_ENOUGH_SPACE_ATTACHMENT_TRANSMISSION_STATUS: AttachmentTransmissionStatus +UNSUPPORTED_ATTACHMENT_TYPE_ATTACHMENT_TRANSMISSION_STATUS: AttachmentTransmissionStatus +FAILED_UNKNOWN_REMOTE_RESPONSE_TRANSMISSION_STATUS: AttachmentTransmissionStatus +NO_RESPONSE_FRAME_CONNECTION_CLOSED_LOST_CONNECTIVITY_TRANSMISSION_STATUS: AttachmentTransmissionStatus +NO_RESPONSE_FRAME_CONNECTION_CLOSED_TRANSMISSION_STATUS: AttachmentTransmissionStatus +LOST_CONNECTIVITY_TRANSMISSION_STATUS: AttachmentTransmissionStatus +FAILED_DISALLOWED_MEDIUM: AttachmentTransmissionStatus +CONNECTION_LAYER_STATUS_UNKNOWN: ConnectionLayerStatus +CONNECTION_LAYER_STATUS_SUCCESS: ConnectionLayerStatus +CONNECTION_LAYER_STATUS_ERROR: ConnectionLayerStatus +CONNECTION_LAYER_STATUS_OUT_OF_ORDER_API_CALL: ConnectionLayerStatus +CONNECTION_LAYER_STATUS_ALREADY_HAVE_ACTIVE_STRATEGY: ConnectionLayerStatus +CONNECTION_LAYER_STATUS_ALREADY_ADVERTISING: ConnectionLayerStatus +CONNECTION_LAYER_STATUS_ALREADY_DISCOVERING: ConnectionLayerStatus +CONNECTION_LAYER_STATUS_ALREADY_LISTENING: ConnectionLayerStatus +CONNECTION_LAYER_STATUS_END_POINT_IO_ERROR: ConnectionLayerStatus +CONNECTION_LAYER_STATUS_END_POINT_UNKNOWN: ConnectionLayerStatus +CONNECTION_LAYER_STATUS_CONNECTION_REJECTED: ConnectionLayerStatus +CONNECTION_LAYER_STATUS_ALREADY_CONNECTED_TO_END_POINT: ConnectionLayerStatus +CONNECTION_LAYER_STATUS_NOT_CONNECTED_TO_END_POINT: ConnectionLayerStatus +CONNECTION_LAYER_STATUS_BLUETOOTH_ERROR: ConnectionLayerStatus +CONNECTION_LAYER_STATUS_BLE_ERROR: ConnectionLayerStatus +CONNECTION_LAYER_STATUS_WIFI_LAN_ERROR: ConnectionLayerStatus +CONNECTION_LAYER_STATUS_PAYLOAD_UNKNOWN: ConnectionLayerStatus +CONNECTION_LAYER_STATUS_RESET: ConnectionLayerStatus +CONNECTION_LAYER_STATUS_TIMEOUT: ConnectionLayerStatus +PROCESSING_STATUS_UNKNOWN: ProcessReceivedAttachmentsStatus +PROCESSING_STATUS_COMPLETE_PROCESSING_ATTACHMENTS: ProcessReceivedAttachmentsStatus +PROCESSING_STATUS_FAILED_MOVING_FILES: ProcessReceivedAttachmentsStatus +PROCESSING_STATUS_FAILED_RECEIVING_APK: ProcessReceivedAttachmentsStatus +PROCESSING_STATUS_FAILED_RECEIVING_TEXT: ProcessReceivedAttachmentsStatus +PROCESSING_STATUS_FAILED_RECEIVING_WIFI_CREDENTIALS: ProcessReceivedAttachmentsStatus +UNKNOWN_SESSION_STATUS: SessionStatus +SUCCEEDED_SESSION_STATUS: SessionStatus +FAILED_SESSION_STATUS: SessionStatus +UNKNOWN_RESPONSE_TO_INTRODUCTION: ResponseToIntroduction +ACCEPT_INTRODUCTION: ResponseToIntroduction +REJECT_INTRODUCTION: ResponseToIntroduction +FAIL_INTRODUCTION: ResponseToIntroduction +UNKNOWN_DEVICE_TYPE: DeviceType +PHONE: DeviceType +TABLET: DeviceType +LAPTOP: DeviceType +CAR: DeviceType +FOLDABLE: DeviceType +XR: DeviceType +UNKNOWN_OS_TYPE: OSType +ANDROID: OSType +CHROME_OS: OSType +IOS: OSType +WINDOWS: OSType +MACOS: OSType +UNKNOWN_DEVICE_RELATIONSHIP: DeviceRelationship +IS_SELF: DeviceRelationship +IS_CONTACT: DeviceRelationship +IS_STRANGER: DeviceRelationship +UNSPECIFIED_SOURCE: LogSource +LAB_DEVICES: LogSource +INTERNAL_DEVICES: LogSource +BETA_TESTER_DEVICES: LogSource +OEM_DEVICES: LogSource +DEBUG_DEVICES: LogSource +NEARBY_MODULE_FOOD_DEVICES: LogSource +BETO_DOGFOOD_DEVICES: LogSource +NEARBY_DOGFOOD_DEVICES: LogSource +NEARBY_TEAMFOOD_DEVICES: LogSource +UNKNOWN_SERVER_ACTION: ServerActionName +UPLOAD_CERTIFICATES: ServerActionName +DOWNLOAD_CERTIFICATES: ServerActionName +CHECK_REACHABILITY: ServerActionName +UPLOAD_CONTACTS: ServerActionName +UPDATE_DEVICE_NAME: ServerActionName +UPLOAD_SENDER_CERTIFICATES: ServerActionName +DOWNLOAD_SENDER_CERTIFICATES: ServerActionName +UPLOAD_CONTACTS_AND_CERTIFICATES: ServerActionName +LIST_REACHABLE_PHONE_NUMBERS: ServerActionName +LIST_MY_DEVICES: ServerActionName +LIST_CONTACT_PEOPLE: ServerActionName +DOWNLOAD_CERTIFICATES_INFO: ServerActionName +UNKNOWN_SERVER_RESPONSE_STATE: ServerResponseState +SERVER_RESPONSE_SUCCESS: ServerResponseState +SERVER_RESPONSE_UNKNOWN_FAILURE: ServerResponseState +SERVER_RESPONSE_STATUS_OTHER_FAILURE: ServerResponseState +SERVER_RESPONSE_STATUS_DEADLINE_EXCEEDED: ServerResponseState +SERVER_RESPONSE_STATUS_PERMISSION_DENIED: ServerResponseState +SERVER_RESPONSE_STATUS_UNAVAILABLE: ServerResponseState +SERVER_RESPONSE_STATUS_UNAUTHENTICATED: ServerResponseState +SERVER_RESPONSE_STATUS_INVALID_ARGUMENT: ServerResponseState +SERVER_RESPONSE_GOOGLE_AUTH_FAILURE: ServerResponseState +SERVER_RESPONSE_NOT_CONNECTED_TO_INTERNET: ServerResponseState +SYNC_PURPOSE_UNKNOWN: SyncPurpose +SYNC_PURPOSE_ON_DEMAND_SYNC: SyncPurpose +SYNC_PURPOSE_CHIME_NOTIFICATION: SyncPurpose +SYNC_PURPOSE_DAILY_SYNC: SyncPurpose +SYNC_PURPOSE_OPT_IN_FIRST_SYNC: SyncPurpose +SYNC_PURPOSE_CHECK_DEFAULT_OPT_IN: SyncPurpose +SYNC_PURPOSE_NEARBY_SHARE_ENABLED: SyncPurpose +SYNC_PURPOSE_SYNC_AT_FAST_INIT: SyncPurpose +SYNC_PURPOSE_SYNC_AT_DISCOVERY: SyncPurpose +SYNC_PURPOSE_SYNC_AT_LOAD_PRIVATE_CERTIFICATE: SyncPurpose +SYNC_PURPOSE_SYNC_AT_ADVERTISEMENT: SyncPurpose +SYNC_PURPOSE_CONTACT_LIST_CHANGE: SyncPurpose +SYNC_PURPOSE_SHOW_C11N_VIEW: SyncPurpose +SYNC_PURPOSE_REGULAR_CHECK_CONTACT_REACHABILITY: SyncPurpose +SYNC_PURPOSE_VISIBILITY_SELECTED_CONTACT_CHANGE: SyncPurpose +SYNC_PURPOSE_ACCOUNT_CHANGE: SyncPurpose +SYNC_PURPOSE_REGENERATE_CERTIFICATES: SyncPurpose +SYNC_PURPOSE_DEVICE_CONTACTS_CONSENT_CHANGE: SyncPurpose +CLIENT_ROLE_UNKNOWN: ClientRole +CLIENT_ROLE_SENDER: ClientRole +CLIENT_ROLE_RECEIVER: ClientRole +UNKNOWN_SCAN_TYPE: ScanType +FOREGROUND_SCAN: ScanType +FOREGROUND_RETRY_SCAN: ScanType +DIRECT_SHARE_SCAN: ScanType +BACKGROUND_SCAN: ScanType +FAILED_UNKNOWN_TYPE: ParsingFailedType +FAILED_PARSE_ADVERTISEMENT: ParsingFailedType +FAILED_CONVERT_SHARE_TARGET: ParsingFailedType +UNKNOWN_ADVERTISING_MODE: AdvertisingMode +SCREEN_OFF_ADVERTISING_MODE: AdvertisingMode +BACKGROUND_ADVERTISING_MODE: AdvertisingMode +MIDGROUND_ADVERTISING_MODE: AdvertisingMode +FOREGROUND_ADVERTISING_MODE: AdvertisingMode +SUSPENDED_ADVERTISING_MODE: AdvertisingMode +UNKNOWN_DISCOVERY_MODE: DiscoveryMode +SCREEN_OFF_DISCOVERY_MODE: DiscoveryMode +BACKGROUND_DISCOVERY_MODE: DiscoveryMode +MIDGROUND_DISCOVERY_MODE: DiscoveryMode +FOREGROUND_DISCOVERY_MODE: DiscoveryMode +SUSPENDED_DISCOVERY_MODE: DiscoveryMode +UNKNOWN_ACTIVITY: ActivityName +SHARE_SHEET_ACTIVITY: ActivityName +SETTINGS_ACTIVITY: ActivityName +RECEIVE_SURFACE_ACTIVITY: ActivityName +SETUP_ACTIVITY: ActivityName +DEVICE_VISIBILITY_ACTIVITY: ActivityName +CONSENTS_ACTIVITY: ActivityName +SET_DEVICE_NAME_DIALOG: ActivityName +SET_DATA_USAGE_DIALOG: ActivityName +QUICK_SETTINGS_ACTIVITY: ActivityName +REMOTE_COPY_SHARE_SHEET_ACTIVITY: ActivityName +SETUP_WIZARD_ACTIVITY: ActivityName +SETTINGS_REVIEW_ACTIVITY: ActivityName +CONSENT_TYPE_UNKNOWN: ConsentType +CONSENT_TYPE_C11N: ConsentType +CONSENT_TYPE_DEVICE_CONTACT: ConsentType +CONSENT_UNKNOWN_ACCEPT_STATUS: ConsentAcceptanceStatus +CONSENT_ACCEPTED: ConsentAcceptanceStatus +CONSENT_DECLINED: ConsentAcceptanceStatus +CONSENT_UNABLE_TO_ENABLE: ConsentAcceptanceStatus +UNKNOWN_APK_SOURCE: ApkSource +APK_FROM_SD_CARD: ApkSource +INSTALLED_APP: ApkSource +UNKNOWN_INSTALL_APK_STATUS: InstallAPKStatus +FAIL_INSTALLATION: InstallAPKStatus +SUCCESS_INSTALLATION: InstallAPKStatus +UNKNOWN_VERIFY_APK_STATUS: VerifyAPKStatus +NOT_INSTALLABLE: VerifyAPKStatus +INSTALLABLE: VerifyAPKStatus +ALREADY_INSTALLED: VerifyAPKStatus +UNKNOWN_SHOW_NOTIFICATION_STATUS: ShowNotificationStatus +SHOW: ShowNotificationStatus +NOT_SHOW: ShowNotificationStatus +PERMISSION_UNKNOWN_REQUEST_RESULT: PermissionRequestResult +PERMISSION_GRANTED: PermissionRequestResult +PERMISSION_REJECTED: PermissionRequestResult +PERMISSION_UNABLE_TO_GRANT: PermissionRequestResult +PERMISSION_UNKNOWN_TYPE: PermissionRequestType +PERMISSION_AIRPLANE_MODE_OFF: PermissionRequestType +PERMISSION_WIFI: PermissionRequestType +PERMISSION_BLUETOOTH: PermissionRequestType +PERMISSION_LOCATION: PermissionRequestType +PERMISSION_WIFI_HOTSPOT: PermissionRequestType +USE_CASE_UNKNOWN: SharingUseCase +USE_CASE_NEARBY_SHARE: SharingUseCase +USE_CASE_REMOTE_COPY_PASTE: SharingUseCase +USE_CASE_WIFI_CREDENTIAL: SharingUseCase +USE_CASE_APP_SHARE: SharingUseCase +USE_CASE_QUICK_SETTING_FILE_SHARE: SharingUseCase +USE_CASE_SETUP_WIZARD: SharingUseCase +USE_CASE_NEARBY_SHARE_WITH_QR_CODE: SharingUseCase +USE_CASE_REDIRECTED_FROM_BLUETOOTH_SHARE: SharingUseCase +APP_CRASH_REASON_UNKNOWN: AppCrashReason +ATTACHMENT_SOURCE_UNKNOWN: AttachmentSourceType +ATTACHMENT_SOURCE_CONTEXT_MENU: AttachmentSourceType +ATTACHMENT_SOURCE_DRAG_AND_DROP: AttachmentSourceType +ATTACHMENT_SOURCE_SELECT_FILES_BUTTON: AttachmentSourceType +ATTACHMENT_SOURCE_PASTE: AttachmentSourceType +ATTACHMENT_SOURCE_SELECT_FOLDERS_BUTTON: AttachmentSourceType +ATTACHMENT_SOURCE_SHARE_ACTIVATION: AttachmentSourceType +PREFERENCES_ACTION_UNKNOWN: PreferencesAction +PREFERENCES_ACTION_NO_ACTION: PreferencesAction +PREFERENCES_ACTION_LOAD_PREFERENCES: PreferencesAction +PREFERENCES_ACTION_SAVE_PREFERENCESS: PreferencesAction +PREFERENCES_ACTION_ATTEMPT_LOAD: PreferencesAction +PREFERENCES_ACTION_RESTORE_FROM_BACKUP: PreferencesAction +PREFERENCES_ACTION_CREATE_PREFERENCES_PATH: PreferencesAction +PREFERENCES_ACTION_MAKE_PREFERENCES_BACKUP_FILE: PreferencesAction +PREFERENCES_ACTION_CHECK_IF_PREFERENCES_PATH_EXISTS: PreferencesAction +PREFERENCES_ACTION_CHECK_IF_PREFERENCES_INPUT_STREAM_STATUS: PreferencesAction +PREFERENCES_ACTION_CHECK_IF_PREFERENCES_FILE_IS_CORRUPTED: PreferencesAction +PREFERENCES_ACTION_CHECK_IF_PREFERENCES_BACKUP_FILE_EXISTS: PreferencesAction +PREFERENCES_ACTION_STATUS_UNKNOWN: PreferencesActionStatus +PREFERENCES_ACTION_STATUS_SUCCESS: PreferencesActionStatus +PREFERENCES_ACTION_STATUS_FAIL: PreferencesActionStatus +FAST_INIT_UNKNOWN_STATE: FastInitState +FAST_INIT_CLOSE_STATE: FastInitState +FAST_INIT_FAR_STATE: FastInitState +FAST_INIT_LOST_STATE: FastInitState +FAST_INIT_UNKNOWN_TYPE: FastInitType +FAST_INIT_NOTIFY_TYPE: FastInitType +FAST_INIT_SILENT_TYPE: FastInitType +DESKTOP_NOTIFICATION_UNKNOWN: DesktopNotification +DESKTOP_NOTIFICATION_CONNECTING: DesktopNotification +DESKTOP_NOTIFICATION_PROGRESS: DesktopNotification +DESKTOP_NOTIFICATION_ACCEPT: DesktopNotification +DESKTOP_NOTIFICATION_RECEIVED: DesktopNotification +DESKTOP_NOTIFICATION_ERROR: DesktopNotification +DESKTOP_TRANSFER_EVENT_TYPE_UNKNOWN: DesktopTransferEventType +DESKTOP_TRANSFER_EVENT_RECEIVE_TYPE_ACCEPT: DesktopTransferEventType +DESKTOP_TRANSFER_EVENT_RECEIVE_TYPE_PROGRESS: DesktopTransferEventType +DESKTOP_TRANSFER_EVENT_RECEIVE_TYPE_RECEIVED: DesktopTransferEventType +DESKTOP_TRANSFER_EVENT_RECEIVE_TYPE_ERROR: DesktopTransferEventType +DESKTOP_TRANSFER_EVENT_SEND_TYPE_START: DesktopTransferEventType +DESKTOP_TRANSFER_EVENT_SEND_TYPE_SELECT_A_DEVICE: DesktopTransferEventType +DESKTOP_TRANSFER_EVENT_SEND_TYPE_PROGRESS: DesktopTransferEventType +DESKTOP_TRANSFER_EVENT_SEND_TYPE_SENT: DesktopTransferEventType +DESKTOP_TRANSFER_EVENT_SEND_TYPE_ERROR: DesktopTransferEventType +DECRYPT_CERT_UNKNOWN_FAILURE: DecryptCertificateFailureStatus +DECRYPT_CERT_NO_SUCH_ALGORITHM_FAILURE: DecryptCertificateFailureStatus +DECRYPT_CERT_NO_SUCH_PADDING_FAILURE: DecryptCertificateFailureStatus +DECRYPT_CERT_INVALID_KEY_FAILURE: DecryptCertificateFailureStatus +DECRYPT_CERT_INVALID_ALGORITHM_PARAMETER_FAILURE: DecryptCertificateFailureStatus +DECRYPT_CERT_ILLEGAL_BLOCK_SIZE_FAILURE: DecryptCertificateFailureStatus +DECRYPT_CERT_BAD_PADDING_FAILURE: DecryptCertificateFailureStatus +CONTACT_ACCESS_UNKNOWN: ContactAccess +CONTACT_ACCESS_NO_CONTACT_UPLOADED: ContactAccess +CONTACT_ACCESS_ONLY_UPLOAD_GOOGLE_CONTACT: ContactAccess +CONTACT_ACCESS_UPLOAD_CONTACT_FOR_DEVICE_CONTACT_CONSENT: ContactAccess +CONTACT_ACCESS_UPLOAD_CONTACT_FOR_QUICK_SHARE_CONSENT: ContactAccess +IDENTITY_VERIFICATION_UNKNOWN: IdentityVerification +IDENTITY_VERIFICATION_NO_PHONE_NUMBER_VERIFIED: IdentityVerification +IDENTITY_VERIFICATION_PHONE_NUMBER_VERIFIED_NOT_LINKED_TO_GAIA: IdentityVerification +IDENTITY_VERIFICATION_PHONE_NUMBER_VERIFIED_LINKED_TO_QS_GAIA: IdentityVerification +BUTTON_STATUS_UNKNOWN: ButtonStatus +BUTTON_STATUS_CLICK_ACCEPT: ButtonStatus +BUTTON_STATUS_CLICK_REJECT: ButtonStatus +BUTTON_STATUS_IGNORE: ButtonStatus diff --git a/pyquickshare/protos/ukey_pb2.py b/pyquickshare/protos/ukey_pb2.py index 827c129..0878688 100644 --- a/pyquickshare/protos/ukey_pb2.py +++ b/pyquickshare/protos/ukey_pb2.py @@ -1,11 +1,22 @@ # -*- coding: utf-8 -*- # Generated by the protocol buffer compiler. DO NOT EDIT! +# NO CHECKED-IN PROTOBUF GENCODE # source: ukey.proto +# Protobuf Python Version: 6.32.0 """Generated protocol buffer code.""" -from google.protobuf.internal import builder as _builder from google.protobuf import descriptor as _descriptor from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database +from google.protobuf.internal import builder as _builder +_runtime_version.ValidateProtobufRuntimeVersion( + _runtime_version.Domain.PUBLIC, + 6, + 32, + 0, + '', + 'ukey.proto' +) # @@protoc_insertion_point(imports) _sym_db = _symbol_database.Default() @@ -15,28 +26,28 @@ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\nukey.proto\x12\tsecuregcm\"\xb8\x01\n\x0cUkey2Message\x12\x32\n\x0cmessage_type\x18\x01 \x01(\x0e\x32\x1c.securegcm.Ukey2Message.Type\x12\x14\n\x0cmessage_data\x18\x02 \x01(\x0c\"^\n\x04Type\x12\x16\n\x12UNKNOWN_DO_NOT_USE\x10\x00\x12\t\n\x05\x41LERT\x10\x01\x12\x0f\n\x0b\x43LIENT_INIT\x10\x02\x12\x0f\n\x0bSERVER_INIT\x10\x03\x12\x11\n\rCLIENT_FINISH\x10\x04\"\xaf\x02\n\nUkey2Alert\x12-\n\x04type\x18\x01 \x01(\x0e\x32\x1f.securegcm.Ukey2Alert.AlertType\x12\x15\n\rerror_message\x18\x02 \x01(\t\"\xda\x01\n\tAlertType\x12\x0f\n\x0b\x42\x41\x44_MESSAGE\x10\x01\x12\x14\n\x10\x42\x41\x44_MESSAGE_TYPE\x10\x02\x12\x15\n\x11INCORRECT_MESSAGE\x10\x03\x12\x14\n\x10\x42\x41\x44_MESSAGE_DATA\x10\x04\x12\x0f\n\x0b\x42\x41\x44_VERSION\x10\x64\x12\x0e\n\nBAD_RANDOM\x10\x65\x12\x18\n\x14\x42\x41\x44_HANDSHAKE_CIPHER\x10\x66\x12\x15\n\x11\x42\x41\x44_NEXT_PROTOCOL\x10g\x12\x12\n\x0e\x42\x41\x44_PUBLIC_KEY\x10h\x12\x13\n\x0eINTERNAL_ERROR\x10\xc8\x01\"\xf5\x01\n\x0fUkey2ClientInit\x12\x0f\n\x07version\x18\x01 \x01(\x05\x12\x0e\n\x06random\x18\x02 \x01(\x0c\x12G\n\x12\x63ipher_commitments\x18\x03 \x03(\x0b\x32+.securegcm.Ukey2ClientInit.CipherCommitment\x12\x15\n\rnext_protocol\x18\x04 \x01(\t\x1a\x61\n\x10\x43ipherCommitment\x12\x39\n\x10handshake_cipher\x18\x01 \x01(\x0e\x32\x1f.securegcm.Ukey2HandshakeCipher\x12\x12\n\ncommitment\x18\x02 \x01(\x0c\"\x81\x01\n\x0fUkey2ServerInit\x12\x0f\n\x07version\x18\x01 \x01(\x05\x12\x0e\n\x06random\x18\x02 \x01(\x0c\x12\x39\n\x10handshake_cipher\x18\x03 \x01(\x0e\x32\x1f.securegcm.Ukey2HandshakeCipher\x12\x12\n\npublic_key\x18\x04 \x01(\x0c\")\n\x13Ukey2ClientFinished\x12\x12\n\npublic_key\x18\x01 \x01(\x0c*M\n\x14Ukey2HandshakeCipher\x12\x0c\n\x08RESERVED\x10\x00\x12\x0f\n\x0bP256_SHA512\x10\x64\x12\x16\n\x11\x43URVE25519_SHA512\x10\xc8\x01\x42:\n+com.google.security.cryptauth.lib.securegcmB\tUkeyProtoH\x03') -_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, globals()) -_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'ukey_pb2', globals()) -if _descriptor._USE_C_DESCRIPTORS == False: - - DESCRIPTOR._options = None - DESCRIPTOR._serialized_options = b'\n+com.google.security.cryptauth.lib.securegcmB\tUkeyProtoH\003' - _UKEY2HANDSHAKECIPHER._serialized_start=941 - _UKEY2HANDSHAKECIPHER._serialized_end=1018 - _UKEY2MESSAGE._serialized_start=26 - _UKEY2MESSAGE._serialized_end=210 - _UKEY2MESSAGE_TYPE._serialized_start=116 - _UKEY2MESSAGE_TYPE._serialized_end=210 - _UKEY2ALERT._serialized_start=213 - _UKEY2ALERT._serialized_end=516 - _UKEY2ALERT_ALERTTYPE._serialized_start=298 - _UKEY2ALERT_ALERTTYPE._serialized_end=516 - _UKEY2CLIENTINIT._serialized_start=519 - _UKEY2CLIENTINIT._serialized_end=764 - _UKEY2CLIENTINIT_CIPHERCOMMITMENT._serialized_start=667 - _UKEY2CLIENTINIT_CIPHERCOMMITMENT._serialized_end=764 - _UKEY2SERVERINIT._serialized_start=767 - _UKEY2SERVERINIT._serialized_end=896 - _UKEY2CLIENTFINISHED._serialized_start=898 - _UKEY2CLIENTFINISHED._serialized_end=939 +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'ukey_pb2', _globals) +if not _descriptor._USE_C_DESCRIPTORS: + _globals['DESCRIPTOR']._loaded_options = None + _globals['DESCRIPTOR']._serialized_options = b'\n+com.google.security.cryptauth.lib.securegcmB\tUkeyProtoH\003' + _globals['_UKEY2HANDSHAKECIPHER']._serialized_start=941 + _globals['_UKEY2HANDSHAKECIPHER']._serialized_end=1018 + _globals['_UKEY2MESSAGE']._serialized_start=26 + _globals['_UKEY2MESSAGE']._serialized_end=210 + _globals['_UKEY2MESSAGE_TYPE']._serialized_start=116 + _globals['_UKEY2MESSAGE_TYPE']._serialized_end=210 + _globals['_UKEY2ALERT']._serialized_start=213 + _globals['_UKEY2ALERT']._serialized_end=516 + _globals['_UKEY2ALERT_ALERTTYPE']._serialized_start=298 + _globals['_UKEY2ALERT_ALERTTYPE']._serialized_end=516 + _globals['_UKEY2CLIENTINIT']._serialized_start=519 + _globals['_UKEY2CLIENTINIT']._serialized_end=764 + _globals['_UKEY2CLIENTINIT_CIPHERCOMMITMENT']._serialized_start=667 + _globals['_UKEY2CLIENTINIT_CIPHERCOMMITMENT']._serialized_end=764 + _globals['_UKEY2SERVERINIT']._serialized_start=767 + _globals['_UKEY2SERVERINIT']._serialized_end=896 + _globals['_UKEY2CLIENTFINISHED']._serialized_start=898 + _globals['_UKEY2CLIENTFINISHED']._serialized_end=939 # @@protoc_insertion_point(module_scope) diff --git a/pyquickshare/protos/ukey_pb2.pyi b/pyquickshare/protos/ukey_pb2.pyi index cc5537e..52c56d5 100644 --- a/pyquickshare/protos/ukey_pb2.pyi +++ b/pyquickshare/protos/ukey_pb2.pyi @@ -2,84 +2,103 @@ from google.protobuf.internal import containers as _containers from google.protobuf.internal import enum_type_wrapper as _enum_type_wrapper from google.protobuf import descriptor as _descriptor from google.protobuf import message as _message -from typing import ClassVar as _ClassVar, Iterable as _Iterable, Mapping as _Mapping, Optional as _Optional, Union as _Union +from collections.abc import Iterable as _Iterable, Mapping as _Mapping +from typing import ClassVar as _ClassVar, Optional as _Optional, Union as _Union -CURVE25519_SHA512: Ukey2HandshakeCipher DESCRIPTOR: _descriptor.FileDescriptor -P256_SHA512: Ukey2HandshakeCipher + +class Ukey2HandshakeCipher(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = () + RESERVED: _ClassVar[Ukey2HandshakeCipher] + P256_SHA512: _ClassVar[Ukey2HandshakeCipher] + CURVE25519_SHA512: _ClassVar[Ukey2HandshakeCipher] RESERVED: Ukey2HandshakeCipher +P256_SHA512: Ukey2HandshakeCipher +CURVE25519_SHA512: Ukey2HandshakeCipher + +class Ukey2Message(_message.Message): + __slots__ = ("message_type", "message_data") + class Type(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = () + UNKNOWN_DO_NOT_USE: _ClassVar[Ukey2Message.Type] + ALERT: _ClassVar[Ukey2Message.Type] + CLIENT_INIT: _ClassVar[Ukey2Message.Type] + SERVER_INIT: _ClassVar[Ukey2Message.Type] + CLIENT_FINISH: _ClassVar[Ukey2Message.Type] + UNKNOWN_DO_NOT_USE: Ukey2Message.Type + ALERT: Ukey2Message.Type + CLIENT_INIT: Ukey2Message.Type + SERVER_INIT: Ukey2Message.Type + CLIENT_FINISH: Ukey2Message.Type + MESSAGE_TYPE_FIELD_NUMBER: _ClassVar[int] + MESSAGE_DATA_FIELD_NUMBER: _ClassVar[int] + message_type: Ukey2Message.Type + message_data: bytes + def __init__(self, message_type: _Optional[_Union[Ukey2Message.Type, str]] = ..., message_data: _Optional[bytes] = ...) -> None: ... class Ukey2Alert(_message.Message): - __slots__ = ["error_message", "type"] + __slots__ = ("type", "error_message") class AlertType(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): - __slots__ = [] - BAD_HANDSHAKE_CIPHER: Ukey2Alert.AlertType + __slots__ = () + BAD_MESSAGE: _ClassVar[Ukey2Alert.AlertType] + BAD_MESSAGE_TYPE: _ClassVar[Ukey2Alert.AlertType] + INCORRECT_MESSAGE: _ClassVar[Ukey2Alert.AlertType] + BAD_MESSAGE_DATA: _ClassVar[Ukey2Alert.AlertType] + BAD_VERSION: _ClassVar[Ukey2Alert.AlertType] + BAD_RANDOM: _ClassVar[Ukey2Alert.AlertType] + BAD_HANDSHAKE_CIPHER: _ClassVar[Ukey2Alert.AlertType] + BAD_NEXT_PROTOCOL: _ClassVar[Ukey2Alert.AlertType] + BAD_PUBLIC_KEY: _ClassVar[Ukey2Alert.AlertType] + INTERNAL_ERROR: _ClassVar[Ukey2Alert.AlertType] BAD_MESSAGE: Ukey2Alert.AlertType - BAD_MESSAGE_DATA: Ukey2Alert.AlertType BAD_MESSAGE_TYPE: Ukey2Alert.AlertType + INCORRECT_MESSAGE: Ukey2Alert.AlertType + BAD_MESSAGE_DATA: Ukey2Alert.AlertType + BAD_VERSION: Ukey2Alert.AlertType + BAD_RANDOM: Ukey2Alert.AlertType + BAD_HANDSHAKE_CIPHER: Ukey2Alert.AlertType BAD_NEXT_PROTOCOL: Ukey2Alert.AlertType BAD_PUBLIC_KEY: Ukey2Alert.AlertType - BAD_RANDOM: Ukey2Alert.AlertType - BAD_VERSION: Ukey2Alert.AlertType - ERROR_MESSAGE_FIELD_NUMBER: _ClassVar[int] - INCORRECT_MESSAGE: Ukey2Alert.AlertType INTERNAL_ERROR: Ukey2Alert.AlertType TYPE_FIELD_NUMBER: _ClassVar[int] - error_message: str + ERROR_MESSAGE_FIELD_NUMBER: _ClassVar[int] type: Ukey2Alert.AlertType + error_message: str def __init__(self, type: _Optional[_Union[Ukey2Alert.AlertType, str]] = ..., error_message: _Optional[str] = ...) -> None: ... -class Ukey2ClientFinished(_message.Message): - __slots__ = ["public_key"] - PUBLIC_KEY_FIELD_NUMBER: _ClassVar[int] - public_key: bytes - def __init__(self, public_key: _Optional[bytes] = ...) -> None: ... - class Ukey2ClientInit(_message.Message): - __slots__ = ["cipher_commitments", "next_protocol", "random", "version"] + __slots__ = ("version", "random", "cipher_commitments", "next_protocol") class CipherCommitment(_message.Message): - __slots__ = ["commitment", "handshake_cipher"] - COMMITMENT_FIELD_NUMBER: _ClassVar[int] + __slots__ = ("handshake_cipher", "commitment") HANDSHAKE_CIPHER_FIELD_NUMBER: _ClassVar[int] - commitment: bytes + COMMITMENT_FIELD_NUMBER: _ClassVar[int] handshake_cipher: Ukey2HandshakeCipher + commitment: bytes def __init__(self, handshake_cipher: _Optional[_Union[Ukey2HandshakeCipher, str]] = ..., commitment: _Optional[bytes] = ...) -> None: ... + VERSION_FIELD_NUMBER: _ClassVar[int] + RANDOM_FIELD_NUMBER: _ClassVar[int] CIPHER_COMMITMENTS_FIELD_NUMBER: _ClassVar[int] NEXT_PROTOCOL_FIELD_NUMBER: _ClassVar[int] - RANDOM_FIELD_NUMBER: _ClassVar[int] - VERSION_FIELD_NUMBER: _ClassVar[int] + version: int + random: bytes cipher_commitments: _containers.RepeatedCompositeFieldContainer[Ukey2ClientInit.CipherCommitment] next_protocol: str - random: bytes - version: int def __init__(self, version: _Optional[int] = ..., random: _Optional[bytes] = ..., cipher_commitments: _Optional[_Iterable[_Union[Ukey2ClientInit.CipherCommitment, _Mapping]]] = ..., next_protocol: _Optional[str] = ...) -> None: ... -class Ukey2Message(_message.Message): - __slots__ = ["message_data", "message_type"] - class Type(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): - __slots__ = [] - ALERT: Ukey2Message.Type - CLIENT_FINISH: Ukey2Message.Type - CLIENT_INIT: Ukey2Message.Type - MESSAGE_DATA_FIELD_NUMBER: _ClassVar[int] - MESSAGE_TYPE_FIELD_NUMBER: _ClassVar[int] - SERVER_INIT: Ukey2Message.Type - UNKNOWN_DO_NOT_USE: Ukey2Message.Type - message_data: bytes - message_type: Ukey2Message.Type - def __init__(self, message_type: _Optional[_Union[Ukey2Message.Type, str]] = ..., message_data: _Optional[bytes] = ...) -> None: ... - class Ukey2ServerInit(_message.Message): - __slots__ = ["handshake_cipher", "public_key", "random", "version"] + __slots__ = ("version", "random", "handshake_cipher", "public_key") + VERSION_FIELD_NUMBER: _ClassVar[int] + RANDOM_FIELD_NUMBER: _ClassVar[int] HANDSHAKE_CIPHER_FIELD_NUMBER: _ClassVar[int] PUBLIC_KEY_FIELD_NUMBER: _ClassVar[int] - RANDOM_FIELD_NUMBER: _ClassVar[int] - VERSION_FIELD_NUMBER: _ClassVar[int] + version: int + random: bytes handshake_cipher: Ukey2HandshakeCipher public_key: bytes - random: bytes - version: int def __init__(self, version: _Optional[int] = ..., random: _Optional[bytes] = ..., handshake_cipher: _Optional[_Union[Ukey2HandshakeCipher, str]] = ..., public_key: _Optional[bytes] = ...) -> None: ... -class Ukey2HandshakeCipher(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): - __slots__ = [] +class Ukey2ClientFinished(_message.Message): + __slots__ = ("public_key",) + PUBLIC_KEY_FIELD_NUMBER: _ClassVar[int] + public_key: bytes + def __init__(self, public_key: _Optional[bytes] = ...) -> None: ... diff --git a/pyquickshare/protos/wire_format_pb2.py b/pyquickshare/protos/wire_format_pb2.py index 8757514..cfb172c 100644 --- a/pyquickshare/protos/wire_format_pb2.py +++ b/pyquickshare/protos/wire_format_pb2.py @@ -1,62 +1,110 @@ # -*- coding: utf-8 -*- # Generated by the protocol buffer compiler. DO NOT EDIT! +# NO CHECKED-IN PROTOBUF GENCODE # source: wire_format.proto +# Protobuf Python Version: 6.32.0 """Generated protocol buffer code.""" -from google.protobuf.internal import builder as _builder from google.protobuf import descriptor as _descriptor from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database +from google.protobuf.internal import builder as _builder +_runtime_version.ValidateProtobufRuntimeVersion( + _runtime_version.Domain.PUBLIC, + 6, + 32, + 0, + '', + 'wire_format.proto' +) # @@protoc_insertion_point(imports) _sym_db = _symbol_database.Default() +from . import sharing_enums_pb2 as sharing__enums__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x11wire_format.proto\x12\x0esharing.nearby\"\xf0\x01\n\x0c\x46ileMetadata\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x38\n\x04type\x18\x02 \x01(\x0e\x32!.sharing.nearby.FileMetadata.Type:\x07UNKNOWN\x12\x12\n\npayload_id\x18\x03 \x01(\x03\x12\x0c\n\x04size\x18\x04 \x01(\x03\x12+\n\tmime_type\x18\x05 \x01(\t:\x18\x61pplication/octet-stream\x12\n\n\x02id\x18\x06 \x01(\x03\"=\n\x04Type\x12\x0b\n\x07UNKNOWN\x10\x00\x12\t\n\x05IMAGE\x10\x01\x12\t\n\x05VIDEO\x10\x02\x12\x07\n\x03\x41PP\x10\x03\x12\t\n\x05\x41UDIO\x10\x04\"\xd1\x01\n\x0cTextMetadata\x12\x12\n\ntext_title\x18\x02 \x01(\t\x12\x38\n\x04type\x18\x03 \x01(\x0e\x32!.sharing.nearby.TextMetadata.Type:\x07UNKNOWN\x12\x12\n\npayload_id\x18\x04 \x01(\x03\x12\x0c\n\x04size\x18\x05 \x01(\x03\x12\n\n\x02id\x18\x06 \x01(\x03\"E\n\x04Type\x12\x0b\n\x07UNKNOWN\x10\x00\x12\x08\n\x04TEXT\x10\x01\x12\x07\n\x03URL\x10\x02\x12\x0b\n\x07\x41\x44\x44RESS\x10\x03\x12\x10\n\x0cPHONE_NUMBER\x10\x04\"\xf6\x01\n\x17WifiCredentialsMetadata\x12\x0c\n\x04ssid\x18\x02 \x01(\t\x12\x62\n\rsecurity_type\x18\x03 \x01(\x0e\x32\x34.sharing.nearby.WifiCredentialsMetadata.SecurityType:\x15UNKNOWN_SECURITY_TYPE\x12\x12\n\npayload_id\x18\x04 \x01(\x03\x12\n\n\x02id\x18\x05 \x01(\x03\"I\n\x0cSecurityType\x12\x19\n\x15UNKNOWN_SECURITY_TYPE\x10\x00\x12\x08\n\x04OPEN\x10\x01\x12\x0b\n\x07WPA_PSK\x10\x02\x12\x07\n\x03WEP\x10\x03\"\x84\x01\n\x05\x46rame\x12.\n\x07version\x18\x01 \x01(\x0e\x32\x1d.sharing.nearby.Frame.Version\x12#\n\x02v1\x18\x02 \x01(\x0b\x32\x17.sharing.nearby.V1Frame\"&\n\x07Version\x12\x13\n\x0fUNKNOWN_VERSION\x10\x00\x12\x06\n\x02V1\x10\x01\"\x9d\x04\n\x07V1Frame\x12/\n\x04type\x18\x01 \x01(\x0e\x32!.sharing.nearby.V1Frame.FrameType\x12\x37\n\x0cintroduction\x18\x02 \x01(\x0b\x32!.sharing.nearby.IntroductionFrame\x12\x44\n\x13\x63onnection_response\x18\x03 \x01(\x0b\x32\'.sharing.nearby.ConnectionResponseFrame\x12G\n\x15paired_key_encryption\x18\x04 \x01(\x0b\x32(.sharing.nearby.PairedKeyEncryptionFrame\x12?\n\x11paired_key_result\x18\x05 \x01(\x0b\x32$.sharing.nearby.PairedKeyResultFrame\x12>\n\x10\x63\x65rtificate_info\x18\x06 \x01(\x0b\x32$.sharing.nearby.CertificateInfoFrame\"\x97\x01\n\tFrameType\x12\x16\n\x12UNKNOWN_FRAME_TYPE\x10\x00\x12\x10\n\x0cINTRODUCTION\x10\x01\x12\x0c\n\x08RESPONSE\x10\x02\x12\x19\n\x15PAIRED_KEY_ENCRYPTION\x10\x03\x12\x15\n\x11PAIRED_KEY_RESULT\x10\x04\x12\x14\n\x10\x43\x45RTIFICATE_INFO\x10\x05\x12\n\n\x06\x43\x41NCEL\x10\x06\"\xe3\x01\n\x11IntroductionFrame\x12\x33\n\rfile_metadata\x18\x01 \x03(\x0b\x32\x1c.sharing.nearby.FileMetadata\x12\x33\n\rtext_metadata\x18\x02 \x03(\x0b\x32\x1c.sharing.nearby.TextMetadata\x12\x18\n\x10required_package\x18\x03 \x01(\t\x12J\n\x19wifi_credentials_metadata\x18\x04 \x03(\x0b\x32\'.sharing.nearby.WifiCredentialsMetadata\"\xce\x01\n\x17\x43onnectionResponseFrame\x12>\n\x06status\x18\x01 \x01(\x0e\x32..sharing.nearby.ConnectionResponseFrame.Status\"s\n\x06Status\x12\x0b\n\x07UNKNOWN\x10\x00\x12\n\n\x06\x41\x43\x43\x45PT\x10\x01\x12\n\n\x06REJECT\x10\x02\x12\x14\n\x10NOT_ENOUGH_SPACE\x10\x03\x12\x1f\n\x1bUNSUPPORTED_ATTACHMENT_TYPE\x10\x04\x12\r\n\tTIMED_OUT\x10\x05\"e\n\x18PairedKeyEncryptionFrame\x12\x13\n\x0bsigned_data\x18\x01 \x01(\x0c\x12\x16\n\x0esecret_id_hash\x18\x02 \x01(\x0c\x12\x1c\n\x14optional_signed_data\x18\x03 \x01(\x0c\"\x8d\x01\n\x14PairedKeyResultFrame\x12;\n\x06status\x18\x01 \x01(\x0e\x32+.sharing.nearby.PairedKeyResultFrame.Status\"8\n\x06Status\x12\x0b\n\x07UNKNOWN\x10\x00\x12\x0b\n\x07SUCCESS\x10\x01\x12\x08\n\x04\x46\x41IL\x10\x02\x12\n\n\x06UNABLE\x10\x03\"U\n\x14\x43\x65rtificateInfoFrame\x12=\n\x12public_certificate\x18\x01 \x03(\x0b\x32!.sharing.nearby.PublicCertificate\"\xc1\x01\n\x11PublicCertificate\x12\x11\n\tsecret_id\x18\x01 \x01(\x0c\x12\x18\n\x10\x61uthenticity_key\x18\x02 \x01(\x0c\x12\x12\n\npublic_key\x18\x03 \x01(\x0c\x12\x12\n\nstart_time\x18\x04 \x01(\x03\x12\x10\n\x08\x65nd_time\x18\x05 \x01(\x03\x12 \n\x18\x65ncrypted_metadata_bytes\x18\x06 \x01(\x0c\x12#\n\x1bmetadata_encryption_key_tag\x18\x07 \x01(\x0c\"?\n\x0fWifiCredentials\x12\x10\n\x08password\x18\x01 \x01(\t\x12\x1a\n\x0bhidden_ssid\x18\x02 \x01(\x08:\x05\x66\x61lseB\x02H\x03') - -_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, globals()) -_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'wire_format_pb2', globals()) -if _descriptor._USE_C_DESCRIPTORS == False: +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x11wire_format.proto\x12\x1cnearby.sharing.service.proto\x1a\x13sharing_enums.proto\"\xf4\x02\n\x0c\x46ileMetadata\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x46\n\x04type\x18\x02 \x01(\x0e\x32/.nearby.sharing.service.proto.FileMetadata.Type:\x07UNKNOWN\x12\x12\n\npayload_id\x18\x03 \x01(\x03\x12\x0c\n\x04size\x18\x04 \x01(\x03\x12+\n\tmime_type\x18\x05 \x01(\t:\x18\x61pplication/octet-stream\x12\n\n\x02id\x18\x06 \x01(\x03\x12\x15\n\rparent_folder\x18\x07 \x01(\t\x12\x17\n\x0f\x61ttachment_hash\x18\x08 \x01(\x03\x12\x1c\n\x14is_sensitive_content\x18\t \x01(\x08\"e\n\x04Type\x12\x0b\n\x07UNKNOWN\x10\x00\x12\t\n\x05IMAGE\x10\x01\x12\t\n\x05VIDEO\x10\x02\x12\x0f\n\x0b\x41NDROID_APP\x10\x03\x12\t\n\x05\x41UDIO\x10\x04\x12\x0c\n\x08\x44OCUMENT\x10\x05\x12\x10\n\x0c\x43ONTACT_CARD\x10\x06\"\xfa\x01\n\x0cTextMetadata\x12\x12\n\ntext_title\x18\x02 \x01(\t\x12\x46\n\x04type\x18\x03 \x01(\x0e\x32/.nearby.sharing.service.proto.TextMetadata.Type:\x07UNKNOWN\x12\x12\n\npayload_id\x18\x04 \x01(\x03\x12\x0c\n\x04size\x18\x05 \x01(\x03\x12\n\n\x02id\x18\x06 \x01(\x03\x12\x19\n\x11is_sensitive_text\x18\x07 \x01(\x08\"E\n\x04Type\x12\x0b\n\x07UNKNOWN\x10\x00\x12\x08\n\x04TEXT\x10\x01\x12\x07\n\x03URL\x10\x02\x12\x0b\n\x07\x41\x44\x44RESS\x10\x03\x12\x10\n\x0cPHONE_NUMBER\x10\x04\"\x8d\x02\n\x17WifiCredentialsMetadata\x12\x0c\n\x04ssid\x18\x02 \x01(\t\x12p\n\rsecurity_type\x18\x03 \x01(\x0e\x32\x42.nearby.sharing.service.proto.WifiCredentialsMetadata.SecurityType:\x15UNKNOWN_SECURITY_TYPE\x12\x12\n\npayload_id\x18\x04 \x01(\x03\x12\n\n\x02id\x18\x05 \x01(\x03\"R\n\x0cSecurityType\x12\x19\n\x15UNKNOWN_SECURITY_TYPE\x10\x00\x12\x08\n\x04OPEN\x10\x01\x12\x0b\n\x07WPA_PSK\x10\x02\x12\x07\n\x03WEP\x10\x03\x12\x07\n\x03SAE\x10\x04\"\x91\x01\n\x0b\x41ppMetadata\x12\x10\n\x08\x61pp_name\x18\x01 \x01(\t\x12\x0c\n\x04size\x18\x02 \x01(\x03\x12\x16\n\npayload_id\x18\x03 \x03(\x03\x42\x02\x10\x01\x12\n\n\x02id\x18\x04 \x01(\x03\x12\x11\n\tfile_name\x18\x05 \x03(\t\x12\x15\n\tfile_size\x18\x06 \x03(\x03\x42\x02\x10\x01\x12\x14\n\x0cpackage_name\x18\x07 \x01(\t\"l\n\x0eStreamMetadata\x12\x13\n\x0b\x64\x65scription\x18\x01 \x01(\t\x12\x14\n\x0cpackage_name\x18\x02 \x01(\t\x12\x12\n\npayload_id\x18\x03 \x01(\x03\x12\x1b\n\x13\x61ttributed_app_name\x18\x04 \x01(\t\"\xa0\x01\n\x05\x46rame\x12<\n\x07version\x18\x01 \x01(\x0e\x32+.nearby.sharing.service.proto.Frame.Version\x12\x31\n\x02v1\x18\x02 \x01(\x0b\x32%.nearby.sharing.service.proto.V1Frame\"&\n\x07Version\x12\x13\n\x0fUNKNOWN_VERSION\x10\x00\x12\x06\n\x02V1\x10\x01\"\xda\x05\n\x07V1Frame\x12=\n\x04type\x18\x01 \x01(\x0e\x32/.nearby.sharing.service.proto.V1Frame.FrameType\x12\x45\n\x0cintroduction\x18\x02 \x01(\x0b\x32/.nearby.sharing.service.proto.IntroductionFrame\x12R\n\x13\x63onnection_response\x18\x03 \x01(\x0b\x32\x35.nearby.sharing.service.proto.ConnectionResponseFrame\x12U\n\x15paired_key_encryption\x18\x04 \x01(\x0b\x32\x36.nearby.sharing.service.proto.PairedKeyEncryptionFrame\x12M\n\x11paired_key_result\x18\x05 \x01(\x0b\x32\x32.nearby.sharing.service.proto.PairedKeyResultFrame\x12P\n\x10\x63\x65rtificate_info\x18\x06 \x01(\x0b\x32\x32.nearby.sharing.service.proto.CertificateInfoFrameB\x02\x18\x01\x12N\n\x0fprogress_update\x18\x07 \x01(\x0b\x32\x31.nearby.sharing.service.proto.ProgressUpdateFrameB\x02\x18\x01\"\xac\x01\n\tFrameType\x12\x16\n\x12UNKNOWN_FRAME_TYPE\x10\x00\x12\x10\n\x0cINTRODUCTION\x10\x01\x12\x0c\n\x08RESPONSE\x10\x02\x12\x19\n\x15PAIRED_KEY_ENCRYPTION\x10\x03\x12\x15\n\x11PAIRED_KEY_RESULT\x10\x04\x12\x14\n\x10\x43\x45RTIFICATE_INFO\x10\x05\x12\n\n\x06\x43\x41NCEL\x10\x06\x12\x13\n\x0fPROGRESS_UPDATE\x10\x07\"\xde\x04\n\x11IntroductionFrame\x12\x41\n\rfile_metadata\x18\x01 \x03(\x0b\x32*.nearby.sharing.service.proto.FileMetadata\x12\x41\n\rtext_metadata\x18\x02 \x03(\x0b\x32*.nearby.sharing.service.proto.TextMetadata\x12\x18\n\x10required_package\x18\x03 \x01(\t\x12X\n\x19wifi_credentials_metadata\x18\x04 \x03(\x0b\x32\x35.nearby.sharing.service.proto.WifiCredentialsMetadata\x12?\n\x0c\x61pp_metadata\x18\x05 \x03(\x0b\x32).nearby.sharing.service.proto.AppMetadata\x12\x16\n\x0estart_transfer\x18\x06 \x01(\x08\x12\x45\n\x0fstream_metadata\x18\x07 \x03(\x0b\x32,.nearby.sharing.service.proto.StreamMetadata\x12P\n\x08use_case\x18\x08 \x01(\x0e\x32>.nearby.sharing.service.proto.IntroductionFrame.SharingUseCase\x12\x1b\n\x13preview_payload_ids\x18\t \x03(\x03\"@\n\x0eSharingUseCase\x12\x0b\n\x07UNKNOWN\x10\x00\x12\x10\n\x0cNEARBY_SHARE\x10\x01\x12\x0f\n\x0bREMOTE_COPY\x10\x02\"?\n\x13ProgressUpdateFrame\x12\x10\n\x08progress\x18\x01 \x01(\x02\x12\x16\n\x0estart_transfer\x18\x02 \x01(\x08\"\xf8\x03\n\x17\x43onnectionResponseFrame\x12L\n\x06status\x18\x01 \x01(\x0e\x32<.nearby.sharing.service.proto.ConnectionResponseFrame.Status\x12h\n\x12\x61ttachment_details\x18\x02 \x03(\x0b\x32L.nearby.sharing.service.proto.ConnectionResponseFrame.AttachmentDetailsEntry\x12\x45\n\x0fstream_metadata\x18\x03 \x03(\x0b\x32,.nearby.sharing.service.proto.StreamMetadata\x1ai\n\x16\x41ttachmentDetailsEntry\x12\x0b\n\x03key\x18\x01 \x01(\x03\x12>\n\x05value\x18\x02 \x01(\x0b\x32/.nearby.sharing.service.proto.AttachmentDetails:\x02\x38\x01\"s\n\x06Status\x12\x0b\n\x07UNKNOWN\x10\x00\x12\n\n\x06\x41\x43\x43\x45PT\x10\x01\x12\n\n\x06REJECT\x10\x02\x12\x14\n\x10NOT_ENOUGH_SPACE\x10\x03\x12\x1f\n\x1bUNSUPPORTED_ATTACHMENT_TYPE\x10\x04\x12\r\n\tTIMED_OUT\x10\x05\"\x81\x02\n\x11\x41ttachmentDetails\x12\x42\n\x04type\x18\x01 \x01(\x0e\x32\x34.nearby.sharing.service.proto.AttachmentDetails.Type\x12T\n\x17\x66ile_attachment_details\x18\x02 \x01(\x0b\x32\x33.nearby.sharing.service.proto.FileAttachmentDetails\"R\n\x04Type\x12\x0b\n\x07UNKNOWN\x10\x00\x12\x08\n\x04\x46ILE\x10\x01\x12\x08\n\x04TEXT\x10\x02\x12\x14\n\x10WIFI_CREDENTIALS\x10\x03\x12\x07\n\x03\x41PP\x10\x04\x12\n\n\x06STREAM\x10\x05\"\x9d\x02\n\x15\x46ileAttachmentDetails\x12#\n\x1breceiver_existing_file_size\x18\x01 \x01(\x03\x12q\n\x18\x61ttachment_hash_payloads\x18\x02 \x03(\x0b\x32O.nearby.sharing.service.proto.FileAttachmentDetails.AttachmentHashPayloadsEntry\x1al\n\x1b\x41ttachmentHashPayloadsEntry\x12\x0b\n\x03key\x18\x01 \x01(\x03\x12<\n\x05value\x18\x02 \x01(\x0b\x32-.nearby.sharing.service.proto.PayloadsDetails:\x02\x38\x01\"X\n\x0fPayloadsDetails\x12\x45\n\x0fpayload_details\x18\x01 \x03(\x0b\x32,.nearby.sharing.service.proto.PayloadDetails\"M\n\x0ePayloadDetails\x12\n\n\x02id\x18\x01 \x01(\x03\x12!\n\x19\x63reation_timestamp_millis\x18\x02 \x01(\x03\x12\x0c\n\x04size\x18\x03 \x01(\x03\"\x85\x01\n\x18PairedKeyEncryptionFrame\x12\x13\n\x0bsigned_data\x18\x01 \x01(\x0c\x12\x16\n\x0esecret_id_hash\x18\x02 \x01(\x0c\x12\x1c\n\x14optional_signed_data\x18\x03 \x01(\x0c\x12\x1e\n\x16qr_code_handshake_data\x18\x04 \x01(\x0c\"\xd3\x01\n\x14PairedKeyResultFrame\x12I\n\x06status\x18\x01 \x01(\x0e\x32\x39.nearby.sharing.service.proto.PairedKeyResultFrame.Status\x12\x36\n\x07os_type\x18\x02 \x01(\x0e\x32%.location.nearby.proto.sharing.OSType\"8\n\x06Status\x12\x0b\n\x07UNKNOWN\x10\x00\x12\x0b\n\x07SUCCESS\x10\x01\x12\x08\n\x04\x46\x41IL\x10\x02\x12\n\n\x06UNABLE\x10\x03\"c\n\x14\x43\x65rtificateInfoFrame\x12K\n\x12public_certificate\x18\x01 \x03(\x0b\x32/.nearby.sharing.service.proto.PublicCertificate\"\xc1\x01\n\x11PublicCertificate\x12\x11\n\tsecret_id\x18\x01 \x01(\x0c\x12\x18\n\x10\x61uthenticity_key\x18\x02 \x01(\x0c\x12\x12\n\npublic_key\x18\x03 \x01(\x0c\x12\x12\n\nstart_time\x18\x04 \x01(\x03\x12\x10\n\x08\x65nd_time\x18\x05 \x01(\x03\x12 \n\x18\x65ncrypted_metadata_bytes\x18\x06 \x01(\x0c\x12#\n\x1bmetadata_encryption_key_tag\x18\x07 \x01(\x0c\"?\n\x0fWifiCredentials\x12\x10\n\x08password\x18\x01 \x01(\t\x12\x1a\n\x0bhidden_ssid\x18\x02 \x01(\x08:\x05\x66\x61lse\"B\n\rStreamDetails\x12\x31\n)input_stream_parcel_file_descriptor_bytes\x18\x01 \x01(\x0c\x42;\n%com.google.android.gms.nearby.sharingB\x08ProtocolH\x03\xa2\x02\x05GNSHP') - DESCRIPTOR._options = None - DESCRIPTOR._serialized_options = b'H\003' - _FILEMETADATA._serialized_start=38 - _FILEMETADATA._serialized_end=278 - _FILEMETADATA_TYPE._serialized_start=217 - _FILEMETADATA_TYPE._serialized_end=278 - _TEXTMETADATA._serialized_start=281 - _TEXTMETADATA._serialized_end=490 - _TEXTMETADATA_TYPE._serialized_start=421 - _TEXTMETADATA_TYPE._serialized_end=490 - _WIFICREDENTIALSMETADATA._serialized_start=493 - _WIFICREDENTIALSMETADATA._serialized_end=739 - _WIFICREDENTIALSMETADATA_SECURITYTYPE._serialized_start=666 - _WIFICREDENTIALSMETADATA_SECURITYTYPE._serialized_end=739 - _FRAME._serialized_start=742 - _FRAME._serialized_end=874 - _FRAME_VERSION._serialized_start=836 - _FRAME_VERSION._serialized_end=874 - _V1FRAME._serialized_start=877 - _V1FRAME._serialized_end=1418 - _V1FRAME_FRAMETYPE._serialized_start=1267 - _V1FRAME_FRAMETYPE._serialized_end=1418 - _INTRODUCTIONFRAME._serialized_start=1421 - _INTRODUCTIONFRAME._serialized_end=1648 - _CONNECTIONRESPONSEFRAME._serialized_start=1651 - _CONNECTIONRESPONSEFRAME._serialized_end=1857 - _CONNECTIONRESPONSEFRAME_STATUS._serialized_start=1742 - _CONNECTIONRESPONSEFRAME_STATUS._serialized_end=1857 - _PAIREDKEYENCRYPTIONFRAME._serialized_start=1859 - _PAIREDKEYENCRYPTIONFRAME._serialized_end=1960 - _PAIREDKEYRESULTFRAME._serialized_start=1963 - _PAIREDKEYRESULTFRAME._serialized_end=2104 - _PAIREDKEYRESULTFRAME_STATUS._serialized_start=2048 - _PAIREDKEYRESULTFRAME_STATUS._serialized_end=2104 - _CERTIFICATEINFOFRAME._serialized_start=2106 - _CERTIFICATEINFOFRAME._serialized_end=2191 - _PUBLICCERTIFICATE._serialized_start=2194 - _PUBLICCERTIFICATE._serialized_end=2387 - _WIFICREDENTIALS._serialized_start=2389 - _WIFICREDENTIALS._serialized_end=2452 +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'wire_format_pb2', _globals) +if not _descriptor._USE_C_DESCRIPTORS: + _globals['DESCRIPTOR']._loaded_options = None + _globals['DESCRIPTOR']._serialized_options = b'\n%com.google.android.gms.nearby.sharingB\010ProtocolH\003\242\002\005GNSHP' + _globals['_APPMETADATA'].fields_by_name['payload_id']._loaded_options = None + _globals['_APPMETADATA'].fields_by_name['payload_id']._serialized_options = b'\020\001' + _globals['_APPMETADATA'].fields_by_name['file_size']._loaded_options = None + _globals['_APPMETADATA'].fields_by_name['file_size']._serialized_options = b'\020\001' + _globals['_V1FRAME'].fields_by_name['certificate_info']._loaded_options = None + _globals['_V1FRAME'].fields_by_name['certificate_info']._serialized_options = b'\030\001' + _globals['_V1FRAME'].fields_by_name['progress_update']._loaded_options = None + _globals['_V1FRAME'].fields_by_name['progress_update']._serialized_options = b'\030\001' + _globals['_CONNECTIONRESPONSEFRAME_ATTACHMENTDETAILSENTRY']._loaded_options = None + _globals['_CONNECTIONRESPONSEFRAME_ATTACHMENTDETAILSENTRY']._serialized_options = b'8\001' + _globals['_FILEATTACHMENTDETAILS_ATTACHMENTHASHPAYLOADSENTRY']._loaded_options = None + _globals['_FILEATTACHMENTDETAILS_ATTACHMENTHASHPAYLOADSENTRY']._serialized_options = b'8\001' + _globals['_FILEMETADATA']._serialized_start=73 + _globals['_FILEMETADATA']._serialized_end=445 + _globals['_FILEMETADATA_TYPE']._serialized_start=344 + _globals['_FILEMETADATA_TYPE']._serialized_end=445 + _globals['_TEXTMETADATA']._serialized_start=448 + _globals['_TEXTMETADATA']._serialized_end=698 + _globals['_TEXTMETADATA_TYPE']._serialized_start=629 + _globals['_TEXTMETADATA_TYPE']._serialized_end=698 + _globals['_WIFICREDENTIALSMETADATA']._serialized_start=701 + _globals['_WIFICREDENTIALSMETADATA']._serialized_end=970 + _globals['_WIFICREDENTIALSMETADATA_SECURITYTYPE']._serialized_start=888 + _globals['_WIFICREDENTIALSMETADATA_SECURITYTYPE']._serialized_end=970 + _globals['_APPMETADATA']._serialized_start=973 + _globals['_APPMETADATA']._serialized_end=1118 + _globals['_STREAMMETADATA']._serialized_start=1120 + _globals['_STREAMMETADATA']._serialized_end=1228 + _globals['_FRAME']._serialized_start=1231 + _globals['_FRAME']._serialized_end=1391 + _globals['_FRAME_VERSION']._serialized_start=1353 + _globals['_FRAME_VERSION']._serialized_end=1391 + _globals['_V1FRAME']._serialized_start=1394 + _globals['_V1FRAME']._serialized_end=2124 + _globals['_V1FRAME_FRAMETYPE']._serialized_start=1952 + _globals['_V1FRAME_FRAMETYPE']._serialized_end=2124 + _globals['_INTRODUCTIONFRAME']._serialized_start=2127 + _globals['_INTRODUCTIONFRAME']._serialized_end=2733 + _globals['_INTRODUCTIONFRAME_SHARINGUSECASE']._serialized_start=2669 + _globals['_INTRODUCTIONFRAME_SHARINGUSECASE']._serialized_end=2733 + _globals['_PROGRESSUPDATEFRAME']._serialized_start=2735 + _globals['_PROGRESSUPDATEFRAME']._serialized_end=2798 + _globals['_CONNECTIONRESPONSEFRAME']._serialized_start=2801 + _globals['_CONNECTIONRESPONSEFRAME']._serialized_end=3305 + _globals['_CONNECTIONRESPONSEFRAME_ATTACHMENTDETAILSENTRY']._serialized_start=3083 + _globals['_CONNECTIONRESPONSEFRAME_ATTACHMENTDETAILSENTRY']._serialized_end=3188 + _globals['_CONNECTIONRESPONSEFRAME_STATUS']._serialized_start=3190 + _globals['_CONNECTIONRESPONSEFRAME_STATUS']._serialized_end=3305 + _globals['_ATTACHMENTDETAILS']._serialized_start=3308 + _globals['_ATTACHMENTDETAILS']._serialized_end=3565 + _globals['_ATTACHMENTDETAILS_TYPE']._serialized_start=3483 + _globals['_ATTACHMENTDETAILS_TYPE']._serialized_end=3565 + _globals['_FILEATTACHMENTDETAILS']._serialized_start=3568 + _globals['_FILEATTACHMENTDETAILS']._serialized_end=3853 + _globals['_FILEATTACHMENTDETAILS_ATTACHMENTHASHPAYLOADSENTRY']._serialized_start=3745 + _globals['_FILEATTACHMENTDETAILS_ATTACHMENTHASHPAYLOADSENTRY']._serialized_end=3853 + _globals['_PAYLOADSDETAILS']._serialized_start=3855 + _globals['_PAYLOADSDETAILS']._serialized_end=3943 + _globals['_PAYLOADDETAILS']._serialized_start=3945 + _globals['_PAYLOADDETAILS']._serialized_end=4022 + _globals['_PAIREDKEYENCRYPTIONFRAME']._serialized_start=4025 + _globals['_PAIREDKEYENCRYPTIONFRAME']._serialized_end=4158 + _globals['_PAIREDKEYRESULTFRAME']._serialized_start=4161 + _globals['_PAIREDKEYRESULTFRAME']._serialized_end=4372 + _globals['_PAIREDKEYRESULTFRAME_STATUS']._serialized_start=4316 + _globals['_PAIREDKEYRESULTFRAME_STATUS']._serialized_end=4372 + _globals['_CERTIFICATEINFOFRAME']._serialized_start=4374 + _globals['_CERTIFICATEINFOFRAME']._serialized_end=4473 + _globals['_PUBLICCERTIFICATE']._serialized_start=4476 + _globals['_PUBLICCERTIFICATE']._serialized_end=4669 + _globals['_WIFICREDENTIALS']._serialized_start=4671 + _globals['_WIFICREDENTIALS']._serialized_end=4734 + _globals['_STREAMDETAILS']._serialized_start=4736 + _globals['_STREAMDETAILS']._serialized_end=4802 # @@protoc_insertion_point(module_scope) diff --git a/pyquickshare/protos/wire_format_pb2.pyi b/pyquickshare/protos/wire_format_pb2.pyi index 99cf3e2..f192d91 100644 --- a/pyquickshare/protos/wire_format_pb2.pyi +++ b/pyquickshare/protos/wire_format_pb2.pyi @@ -1,186 +1,369 @@ +import sharing_enums_pb2 as _sharing_enums_pb2 from google.protobuf.internal import containers as _containers from google.protobuf.internal import enum_type_wrapper as _enum_type_wrapper from google.protobuf import descriptor as _descriptor from google.protobuf import message as _message -from typing import ClassVar as _ClassVar, Iterable as _Iterable, Mapping as _Mapping, Optional as _Optional, Union as _Union +from collections.abc import Iterable as _Iterable, Mapping as _Mapping +from typing import ClassVar as _ClassVar, Optional as _Optional, Union as _Union DESCRIPTOR: _descriptor.FileDescriptor -class CertificateInfoFrame(_message.Message): - __slots__ = ["public_certificate"] - PUBLIC_CERTIFICATE_FIELD_NUMBER: _ClassVar[int] - public_certificate: _containers.RepeatedCompositeFieldContainer[PublicCertificate] - def __init__(self, public_certificate: _Optional[_Iterable[_Union[PublicCertificate, _Mapping]]] = ...) -> None: ... - -class ConnectionResponseFrame(_message.Message): - __slots__ = ["status"] - class Status(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): - __slots__ = [] - ACCEPT: ConnectionResponseFrame.Status - NOT_ENOUGH_SPACE: ConnectionResponseFrame.Status - REJECT: ConnectionResponseFrame.Status - STATUS_FIELD_NUMBER: _ClassVar[int] - TIMED_OUT: ConnectionResponseFrame.Status - UNKNOWN: ConnectionResponseFrame.Status - UNSUPPORTED_ATTACHMENT_TYPE: ConnectionResponseFrame.Status - status: ConnectionResponseFrame.Status - def __init__(self, status: _Optional[_Union[ConnectionResponseFrame.Status, str]] = ...) -> None: ... - class FileMetadata(_message.Message): - __slots__ = ["id", "mime_type", "name", "payload_id", "size", "type"] + __slots__ = ("name", "type", "payload_id", "size", "mime_type", "id", "parent_folder", "attachment_hash", "is_sensitive_content") class Type(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): - __slots__ = [] - APP: FileMetadata.Type - AUDIO: FileMetadata.Type - ID_FIELD_NUMBER: _ClassVar[int] + __slots__ = () + UNKNOWN: _ClassVar[FileMetadata.Type] + IMAGE: _ClassVar[FileMetadata.Type] + VIDEO: _ClassVar[FileMetadata.Type] + ANDROID_APP: _ClassVar[FileMetadata.Type] + AUDIO: _ClassVar[FileMetadata.Type] + DOCUMENT: _ClassVar[FileMetadata.Type] + CONTACT_CARD: _ClassVar[FileMetadata.Type] + UNKNOWN: FileMetadata.Type IMAGE: FileMetadata.Type - MIME_TYPE_FIELD_NUMBER: _ClassVar[int] + VIDEO: FileMetadata.Type + ANDROID_APP: FileMetadata.Type + AUDIO: FileMetadata.Type + DOCUMENT: FileMetadata.Type + CONTACT_CARD: FileMetadata.Type NAME_FIELD_NUMBER: _ClassVar[int] + TYPE_FIELD_NUMBER: _ClassVar[int] PAYLOAD_ID_FIELD_NUMBER: _ClassVar[int] SIZE_FIELD_NUMBER: _ClassVar[int] + MIME_TYPE_FIELD_NUMBER: _ClassVar[int] + ID_FIELD_NUMBER: _ClassVar[int] + PARENT_FOLDER_FIELD_NUMBER: _ClassVar[int] + ATTACHMENT_HASH_FIELD_NUMBER: _ClassVar[int] + IS_SENSITIVE_CONTENT_FIELD_NUMBER: _ClassVar[int] + name: str + type: FileMetadata.Type + payload_id: int + size: int + mime_type: str + id: int + parent_folder: str + attachment_hash: int + is_sensitive_content: bool + def __init__(self, name: _Optional[str] = ..., type: _Optional[_Union[FileMetadata.Type, str]] = ..., payload_id: _Optional[int] = ..., size: _Optional[int] = ..., mime_type: _Optional[str] = ..., id: _Optional[int] = ..., parent_folder: _Optional[str] = ..., attachment_hash: _Optional[int] = ..., is_sensitive_content: _Optional[bool] = ...) -> None: ... + +class TextMetadata(_message.Message): + __slots__ = ("text_title", "type", "payload_id", "size", "id", "is_sensitive_text") + class Type(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = () + UNKNOWN: _ClassVar[TextMetadata.Type] + TEXT: _ClassVar[TextMetadata.Type] + URL: _ClassVar[TextMetadata.Type] + ADDRESS: _ClassVar[TextMetadata.Type] + PHONE_NUMBER: _ClassVar[TextMetadata.Type] + UNKNOWN: TextMetadata.Type + TEXT: TextMetadata.Type + URL: TextMetadata.Type + ADDRESS: TextMetadata.Type + PHONE_NUMBER: TextMetadata.Type + TEXT_TITLE_FIELD_NUMBER: _ClassVar[int] TYPE_FIELD_NUMBER: _ClassVar[int] - UNKNOWN: FileMetadata.Type - VIDEO: FileMetadata.Type + PAYLOAD_ID_FIELD_NUMBER: _ClassVar[int] + SIZE_FIELD_NUMBER: _ClassVar[int] + ID_FIELD_NUMBER: _ClassVar[int] + IS_SENSITIVE_TEXT_FIELD_NUMBER: _ClassVar[int] + text_title: str + type: TextMetadata.Type + payload_id: int + size: int id: int - mime_type: str - name: str + is_sensitive_text: bool + def __init__(self, text_title: _Optional[str] = ..., type: _Optional[_Union[TextMetadata.Type, str]] = ..., payload_id: _Optional[int] = ..., size: _Optional[int] = ..., id: _Optional[int] = ..., is_sensitive_text: _Optional[bool] = ...) -> None: ... + +class WifiCredentialsMetadata(_message.Message): + __slots__ = ("ssid", "security_type", "payload_id", "id") + class SecurityType(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = () + UNKNOWN_SECURITY_TYPE: _ClassVar[WifiCredentialsMetadata.SecurityType] + OPEN: _ClassVar[WifiCredentialsMetadata.SecurityType] + WPA_PSK: _ClassVar[WifiCredentialsMetadata.SecurityType] + WEP: _ClassVar[WifiCredentialsMetadata.SecurityType] + SAE: _ClassVar[WifiCredentialsMetadata.SecurityType] + UNKNOWN_SECURITY_TYPE: WifiCredentialsMetadata.SecurityType + OPEN: WifiCredentialsMetadata.SecurityType + WPA_PSK: WifiCredentialsMetadata.SecurityType + WEP: WifiCredentialsMetadata.SecurityType + SAE: WifiCredentialsMetadata.SecurityType + SSID_FIELD_NUMBER: _ClassVar[int] + SECURITY_TYPE_FIELD_NUMBER: _ClassVar[int] + PAYLOAD_ID_FIELD_NUMBER: _ClassVar[int] + ID_FIELD_NUMBER: _ClassVar[int] + ssid: str + security_type: WifiCredentialsMetadata.SecurityType payload_id: int + id: int + def __init__(self, ssid: _Optional[str] = ..., security_type: _Optional[_Union[WifiCredentialsMetadata.SecurityType, str]] = ..., payload_id: _Optional[int] = ..., id: _Optional[int] = ...) -> None: ... + +class AppMetadata(_message.Message): + __slots__ = ("app_name", "size", "payload_id", "id", "file_name", "file_size", "package_name") + APP_NAME_FIELD_NUMBER: _ClassVar[int] + SIZE_FIELD_NUMBER: _ClassVar[int] + PAYLOAD_ID_FIELD_NUMBER: _ClassVar[int] + ID_FIELD_NUMBER: _ClassVar[int] + FILE_NAME_FIELD_NUMBER: _ClassVar[int] + FILE_SIZE_FIELD_NUMBER: _ClassVar[int] + PACKAGE_NAME_FIELD_NUMBER: _ClassVar[int] + app_name: str size: int - type: FileMetadata.Type - def __init__(self, name: _Optional[str] = ..., type: _Optional[_Union[FileMetadata.Type, str]] = ..., payload_id: _Optional[int] = ..., size: _Optional[int] = ..., mime_type: _Optional[str] = ..., id: _Optional[int] = ...) -> None: ... + payload_id: _containers.RepeatedScalarFieldContainer[int] + id: int + file_name: _containers.RepeatedScalarFieldContainer[str] + file_size: _containers.RepeatedScalarFieldContainer[int] + package_name: str + def __init__(self, app_name: _Optional[str] = ..., size: _Optional[int] = ..., payload_id: _Optional[_Iterable[int]] = ..., id: _Optional[int] = ..., file_name: _Optional[_Iterable[str]] = ..., file_size: _Optional[_Iterable[int]] = ..., package_name: _Optional[str] = ...) -> None: ... + +class StreamMetadata(_message.Message): + __slots__ = ("description", "package_name", "payload_id", "attributed_app_name") + DESCRIPTION_FIELD_NUMBER: _ClassVar[int] + PACKAGE_NAME_FIELD_NUMBER: _ClassVar[int] + PAYLOAD_ID_FIELD_NUMBER: _ClassVar[int] + ATTRIBUTED_APP_NAME_FIELD_NUMBER: _ClassVar[int] + description: str + package_name: str + payload_id: int + attributed_app_name: str + def __init__(self, description: _Optional[str] = ..., package_name: _Optional[str] = ..., payload_id: _Optional[int] = ..., attributed_app_name: _Optional[str] = ...) -> None: ... class Frame(_message.Message): - __slots__ = ["v1", "version"] + __slots__ = ("version", "v1") class Version(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): - __slots__ = [] + __slots__ = () + UNKNOWN_VERSION: _ClassVar[Frame.Version] + V1: _ClassVar[Frame.Version] UNKNOWN_VERSION: Frame.Version V1: Frame.Version - V1_FIELD_NUMBER: _ClassVar[int] VERSION_FIELD_NUMBER: _ClassVar[int] - v1: V1Frame + V1_FIELD_NUMBER: _ClassVar[int] version: Frame.Version + v1: V1Frame def __init__(self, version: _Optional[_Union[Frame.Version, str]] = ..., v1: _Optional[_Union[V1Frame, _Mapping]] = ...) -> None: ... +class V1Frame(_message.Message): + __slots__ = ("type", "introduction", "connection_response", "paired_key_encryption", "paired_key_result", "certificate_info", "progress_update") + class FrameType(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = () + UNKNOWN_FRAME_TYPE: _ClassVar[V1Frame.FrameType] + INTRODUCTION: _ClassVar[V1Frame.FrameType] + RESPONSE: _ClassVar[V1Frame.FrameType] + PAIRED_KEY_ENCRYPTION: _ClassVar[V1Frame.FrameType] + PAIRED_KEY_RESULT: _ClassVar[V1Frame.FrameType] + CERTIFICATE_INFO: _ClassVar[V1Frame.FrameType] + CANCEL: _ClassVar[V1Frame.FrameType] + PROGRESS_UPDATE: _ClassVar[V1Frame.FrameType] + UNKNOWN_FRAME_TYPE: V1Frame.FrameType + INTRODUCTION: V1Frame.FrameType + RESPONSE: V1Frame.FrameType + PAIRED_KEY_ENCRYPTION: V1Frame.FrameType + PAIRED_KEY_RESULT: V1Frame.FrameType + CERTIFICATE_INFO: V1Frame.FrameType + CANCEL: V1Frame.FrameType + PROGRESS_UPDATE: V1Frame.FrameType + TYPE_FIELD_NUMBER: _ClassVar[int] + INTRODUCTION_FIELD_NUMBER: _ClassVar[int] + CONNECTION_RESPONSE_FIELD_NUMBER: _ClassVar[int] + PAIRED_KEY_ENCRYPTION_FIELD_NUMBER: _ClassVar[int] + PAIRED_KEY_RESULT_FIELD_NUMBER: _ClassVar[int] + CERTIFICATE_INFO_FIELD_NUMBER: _ClassVar[int] + PROGRESS_UPDATE_FIELD_NUMBER: _ClassVar[int] + type: V1Frame.FrameType + introduction: IntroductionFrame + connection_response: ConnectionResponseFrame + paired_key_encryption: PairedKeyEncryptionFrame + paired_key_result: PairedKeyResultFrame + certificate_info: CertificateInfoFrame + progress_update: ProgressUpdateFrame + def __init__(self, type: _Optional[_Union[V1Frame.FrameType, str]] = ..., introduction: _Optional[_Union[IntroductionFrame, _Mapping]] = ..., connection_response: _Optional[_Union[ConnectionResponseFrame, _Mapping]] = ..., paired_key_encryption: _Optional[_Union[PairedKeyEncryptionFrame, _Mapping]] = ..., paired_key_result: _Optional[_Union[PairedKeyResultFrame, _Mapping]] = ..., certificate_info: _Optional[_Union[CertificateInfoFrame, _Mapping]] = ..., progress_update: _Optional[_Union[ProgressUpdateFrame, _Mapping]] = ...) -> None: ... + class IntroductionFrame(_message.Message): - __slots__ = ["file_metadata", "required_package", "text_metadata", "wifi_credentials_metadata"] + __slots__ = ("file_metadata", "text_metadata", "required_package", "wifi_credentials_metadata", "app_metadata", "start_transfer", "stream_metadata", "use_case", "preview_payload_ids") + class SharingUseCase(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = () + UNKNOWN: _ClassVar[IntroductionFrame.SharingUseCase] + NEARBY_SHARE: _ClassVar[IntroductionFrame.SharingUseCase] + REMOTE_COPY: _ClassVar[IntroductionFrame.SharingUseCase] + UNKNOWN: IntroductionFrame.SharingUseCase + NEARBY_SHARE: IntroductionFrame.SharingUseCase + REMOTE_COPY: IntroductionFrame.SharingUseCase FILE_METADATA_FIELD_NUMBER: _ClassVar[int] - REQUIRED_PACKAGE_FIELD_NUMBER: _ClassVar[int] TEXT_METADATA_FIELD_NUMBER: _ClassVar[int] + REQUIRED_PACKAGE_FIELD_NUMBER: _ClassVar[int] WIFI_CREDENTIALS_METADATA_FIELD_NUMBER: _ClassVar[int] + APP_METADATA_FIELD_NUMBER: _ClassVar[int] + START_TRANSFER_FIELD_NUMBER: _ClassVar[int] + STREAM_METADATA_FIELD_NUMBER: _ClassVar[int] + USE_CASE_FIELD_NUMBER: _ClassVar[int] + PREVIEW_PAYLOAD_IDS_FIELD_NUMBER: _ClassVar[int] file_metadata: _containers.RepeatedCompositeFieldContainer[FileMetadata] - required_package: str text_metadata: _containers.RepeatedCompositeFieldContainer[TextMetadata] + required_package: str wifi_credentials_metadata: _containers.RepeatedCompositeFieldContainer[WifiCredentialsMetadata] - def __init__(self, file_metadata: _Optional[_Iterable[_Union[FileMetadata, _Mapping]]] = ..., text_metadata: _Optional[_Iterable[_Union[TextMetadata, _Mapping]]] = ..., required_package: _Optional[str] = ..., wifi_credentials_metadata: _Optional[_Iterable[_Union[WifiCredentialsMetadata, _Mapping]]] = ...) -> None: ... + app_metadata: _containers.RepeatedCompositeFieldContainer[AppMetadata] + start_transfer: bool + stream_metadata: _containers.RepeatedCompositeFieldContainer[StreamMetadata] + use_case: IntroductionFrame.SharingUseCase + preview_payload_ids: _containers.RepeatedScalarFieldContainer[int] + def __init__(self, file_metadata: _Optional[_Iterable[_Union[FileMetadata, _Mapping]]] = ..., text_metadata: _Optional[_Iterable[_Union[TextMetadata, _Mapping]]] = ..., required_package: _Optional[str] = ..., wifi_credentials_metadata: _Optional[_Iterable[_Union[WifiCredentialsMetadata, _Mapping]]] = ..., app_metadata: _Optional[_Iterable[_Union[AppMetadata, _Mapping]]] = ..., start_transfer: _Optional[bool] = ..., stream_metadata: _Optional[_Iterable[_Union[StreamMetadata, _Mapping]]] = ..., use_case: _Optional[_Union[IntroductionFrame.SharingUseCase, str]] = ..., preview_payload_ids: _Optional[_Iterable[int]] = ...) -> None: ... + +class ProgressUpdateFrame(_message.Message): + __slots__ = ("progress", "start_transfer") + PROGRESS_FIELD_NUMBER: _ClassVar[int] + START_TRANSFER_FIELD_NUMBER: _ClassVar[int] + progress: float + start_transfer: bool + def __init__(self, progress: _Optional[float] = ..., start_transfer: _Optional[bool] = ...) -> None: ... + +class ConnectionResponseFrame(_message.Message): + __slots__ = ("status", "attachment_details", "stream_metadata") + class Status(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = () + UNKNOWN: _ClassVar[ConnectionResponseFrame.Status] + ACCEPT: _ClassVar[ConnectionResponseFrame.Status] + REJECT: _ClassVar[ConnectionResponseFrame.Status] + NOT_ENOUGH_SPACE: _ClassVar[ConnectionResponseFrame.Status] + UNSUPPORTED_ATTACHMENT_TYPE: _ClassVar[ConnectionResponseFrame.Status] + TIMED_OUT: _ClassVar[ConnectionResponseFrame.Status] + UNKNOWN: ConnectionResponseFrame.Status + ACCEPT: ConnectionResponseFrame.Status + REJECT: ConnectionResponseFrame.Status + NOT_ENOUGH_SPACE: ConnectionResponseFrame.Status + UNSUPPORTED_ATTACHMENT_TYPE: ConnectionResponseFrame.Status + TIMED_OUT: ConnectionResponseFrame.Status + class AttachmentDetailsEntry(_message.Message): + __slots__ = ("key", "value") + KEY_FIELD_NUMBER: _ClassVar[int] + VALUE_FIELD_NUMBER: _ClassVar[int] + key: int + value: AttachmentDetails + def __init__(self, key: _Optional[int] = ..., value: _Optional[_Union[AttachmentDetails, _Mapping]] = ...) -> None: ... + STATUS_FIELD_NUMBER: _ClassVar[int] + ATTACHMENT_DETAILS_FIELD_NUMBER: _ClassVar[int] + STREAM_METADATA_FIELD_NUMBER: _ClassVar[int] + status: ConnectionResponseFrame.Status + attachment_details: _containers.MessageMap[int, AttachmentDetails] + stream_metadata: _containers.RepeatedCompositeFieldContainer[StreamMetadata] + def __init__(self, status: _Optional[_Union[ConnectionResponseFrame.Status, str]] = ..., attachment_details: _Optional[_Mapping[int, AttachmentDetails]] = ..., stream_metadata: _Optional[_Iterable[_Union[StreamMetadata, _Mapping]]] = ...) -> None: ... + +class AttachmentDetails(_message.Message): + __slots__ = ("type", "file_attachment_details") + class Type(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = () + UNKNOWN: _ClassVar[AttachmentDetails.Type] + FILE: _ClassVar[AttachmentDetails.Type] + TEXT: _ClassVar[AttachmentDetails.Type] + WIFI_CREDENTIALS: _ClassVar[AttachmentDetails.Type] + APP: _ClassVar[AttachmentDetails.Type] + STREAM: _ClassVar[AttachmentDetails.Type] + UNKNOWN: AttachmentDetails.Type + FILE: AttachmentDetails.Type + TEXT: AttachmentDetails.Type + WIFI_CREDENTIALS: AttachmentDetails.Type + APP: AttachmentDetails.Type + STREAM: AttachmentDetails.Type + TYPE_FIELD_NUMBER: _ClassVar[int] + FILE_ATTACHMENT_DETAILS_FIELD_NUMBER: _ClassVar[int] + type: AttachmentDetails.Type + file_attachment_details: FileAttachmentDetails + def __init__(self, type: _Optional[_Union[AttachmentDetails.Type, str]] = ..., file_attachment_details: _Optional[_Union[FileAttachmentDetails, _Mapping]] = ...) -> None: ... + +class FileAttachmentDetails(_message.Message): + __slots__ = ("receiver_existing_file_size", "attachment_hash_payloads") + class AttachmentHashPayloadsEntry(_message.Message): + __slots__ = ("key", "value") + KEY_FIELD_NUMBER: _ClassVar[int] + VALUE_FIELD_NUMBER: _ClassVar[int] + key: int + value: PayloadsDetails + def __init__(self, key: _Optional[int] = ..., value: _Optional[_Union[PayloadsDetails, _Mapping]] = ...) -> None: ... + RECEIVER_EXISTING_FILE_SIZE_FIELD_NUMBER: _ClassVar[int] + ATTACHMENT_HASH_PAYLOADS_FIELD_NUMBER: _ClassVar[int] + receiver_existing_file_size: int + attachment_hash_payloads: _containers.MessageMap[int, PayloadsDetails] + def __init__(self, receiver_existing_file_size: _Optional[int] = ..., attachment_hash_payloads: _Optional[_Mapping[int, PayloadsDetails]] = ...) -> None: ... + +class PayloadsDetails(_message.Message): + __slots__ = ("payload_details",) + PAYLOAD_DETAILS_FIELD_NUMBER: _ClassVar[int] + payload_details: _containers.RepeatedCompositeFieldContainer[PayloadDetails] + def __init__(self, payload_details: _Optional[_Iterable[_Union[PayloadDetails, _Mapping]]] = ...) -> None: ... + +class PayloadDetails(_message.Message): + __slots__ = ("id", "creation_timestamp_millis", "size") + ID_FIELD_NUMBER: _ClassVar[int] + CREATION_TIMESTAMP_MILLIS_FIELD_NUMBER: _ClassVar[int] + SIZE_FIELD_NUMBER: _ClassVar[int] + id: int + creation_timestamp_millis: int + size: int + def __init__(self, id: _Optional[int] = ..., creation_timestamp_millis: _Optional[int] = ..., size: _Optional[int] = ...) -> None: ... class PairedKeyEncryptionFrame(_message.Message): - __slots__ = ["optional_signed_data", "secret_id_hash", "signed_data"] - OPTIONAL_SIGNED_DATA_FIELD_NUMBER: _ClassVar[int] - SECRET_ID_HASH_FIELD_NUMBER: _ClassVar[int] + __slots__ = ("signed_data", "secret_id_hash", "optional_signed_data", "qr_code_handshake_data") SIGNED_DATA_FIELD_NUMBER: _ClassVar[int] - optional_signed_data: bytes - secret_id_hash: bytes + SECRET_ID_HASH_FIELD_NUMBER: _ClassVar[int] + OPTIONAL_SIGNED_DATA_FIELD_NUMBER: _ClassVar[int] + QR_CODE_HANDSHAKE_DATA_FIELD_NUMBER: _ClassVar[int] signed_data: bytes - def __init__(self, signed_data: _Optional[bytes] = ..., secret_id_hash: _Optional[bytes] = ..., optional_signed_data: _Optional[bytes] = ...) -> None: ... + secret_id_hash: bytes + optional_signed_data: bytes + qr_code_handshake_data: bytes + def __init__(self, signed_data: _Optional[bytes] = ..., secret_id_hash: _Optional[bytes] = ..., optional_signed_data: _Optional[bytes] = ..., qr_code_handshake_data: _Optional[bytes] = ...) -> None: ... class PairedKeyResultFrame(_message.Message): - __slots__ = ["status"] + __slots__ = ("status", "os_type") class Status(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): - __slots__ = [] - FAIL: PairedKeyResultFrame.Status - STATUS_FIELD_NUMBER: _ClassVar[int] + __slots__ = () + UNKNOWN: _ClassVar[PairedKeyResultFrame.Status] + SUCCESS: _ClassVar[PairedKeyResultFrame.Status] + FAIL: _ClassVar[PairedKeyResultFrame.Status] + UNABLE: _ClassVar[PairedKeyResultFrame.Status] + UNKNOWN: PairedKeyResultFrame.Status SUCCESS: PairedKeyResultFrame.Status + FAIL: PairedKeyResultFrame.Status UNABLE: PairedKeyResultFrame.Status - UNKNOWN: PairedKeyResultFrame.Status + STATUS_FIELD_NUMBER: _ClassVar[int] + OS_TYPE_FIELD_NUMBER: _ClassVar[int] status: PairedKeyResultFrame.Status - def __init__(self, status: _Optional[_Union[PairedKeyResultFrame.Status, str]] = ...) -> None: ... + os_type: _sharing_enums_pb2.OSType + def __init__(self, status: _Optional[_Union[PairedKeyResultFrame.Status, str]] = ..., os_type: _Optional[_Union[_sharing_enums_pb2.OSType, str]] = ...) -> None: ... + +class CertificateInfoFrame(_message.Message): + __slots__ = ("public_certificate",) + PUBLIC_CERTIFICATE_FIELD_NUMBER: _ClassVar[int] + public_certificate: _containers.RepeatedCompositeFieldContainer[PublicCertificate] + def __init__(self, public_certificate: _Optional[_Iterable[_Union[PublicCertificate, _Mapping]]] = ...) -> None: ... class PublicCertificate(_message.Message): - __slots__ = ["authenticity_key", "encrypted_metadata_bytes", "end_time", "metadata_encryption_key_tag", "public_key", "secret_id", "start_time"] + __slots__ = ("secret_id", "authenticity_key", "public_key", "start_time", "end_time", "encrypted_metadata_bytes", "metadata_encryption_key_tag") + SECRET_ID_FIELD_NUMBER: _ClassVar[int] AUTHENTICITY_KEY_FIELD_NUMBER: _ClassVar[int] - ENCRYPTED_METADATA_BYTES_FIELD_NUMBER: _ClassVar[int] - END_TIME_FIELD_NUMBER: _ClassVar[int] - METADATA_ENCRYPTION_KEY_TAG_FIELD_NUMBER: _ClassVar[int] PUBLIC_KEY_FIELD_NUMBER: _ClassVar[int] - SECRET_ID_FIELD_NUMBER: _ClassVar[int] START_TIME_FIELD_NUMBER: _ClassVar[int] + END_TIME_FIELD_NUMBER: _ClassVar[int] + ENCRYPTED_METADATA_BYTES_FIELD_NUMBER: _ClassVar[int] + METADATA_ENCRYPTION_KEY_TAG_FIELD_NUMBER: _ClassVar[int] + secret_id: bytes authenticity_key: bytes - encrypted_metadata_bytes: bytes - end_time: int - metadata_encryption_key_tag: bytes public_key: bytes - secret_id: bytes start_time: int + end_time: int + encrypted_metadata_bytes: bytes + metadata_encryption_key_tag: bytes def __init__(self, secret_id: _Optional[bytes] = ..., authenticity_key: _Optional[bytes] = ..., public_key: _Optional[bytes] = ..., start_time: _Optional[int] = ..., end_time: _Optional[int] = ..., encrypted_metadata_bytes: _Optional[bytes] = ..., metadata_encryption_key_tag: _Optional[bytes] = ...) -> None: ... -class TextMetadata(_message.Message): - __slots__ = ["id", "payload_id", "size", "text_title", "type"] - class Type(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): - __slots__ = [] - ADDRESS: TextMetadata.Type - ID_FIELD_NUMBER: _ClassVar[int] - PAYLOAD_ID_FIELD_NUMBER: _ClassVar[int] - PHONE_NUMBER: TextMetadata.Type - SIZE_FIELD_NUMBER: _ClassVar[int] - TEXT: TextMetadata.Type - TEXT_TITLE_FIELD_NUMBER: _ClassVar[int] - TYPE_FIELD_NUMBER: _ClassVar[int] - UNKNOWN: TextMetadata.Type - URL: TextMetadata.Type - id: int - payload_id: int - size: int - text_title: str - type: TextMetadata.Type - def __init__(self, text_title: _Optional[str] = ..., type: _Optional[_Union[TextMetadata.Type, str]] = ..., payload_id: _Optional[int] = ..., size: _Optional[int] = ..., id: _Optional[int] = ...) -> None: ... - -class V1Frame(_message.Message): - __slots__ = ["certificate_info", "connection_response", "introduction", "paired_key_encryption", "paired_key_result", "type"] - class FrameType(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): - __slots__ = [] - CANCEL: V1Frame.FrameType - CERTIFICATE_INFO: V1Frame.FrameType - CERTIFICATE_INFO_FIELD_NUMBER: _ClassVar[int] - CONNECTION_RESPONSE_FIELD_NUMBER: _ClassVar[int] - INTRODUCTION: V1Frame.FrameType - INTRODUCTION_FIELD_NUMBER: _ClassVar[int] - PAIRED_KEY_ENCRYPTION: V1Frame.FrameType - PAIRED_KEY_ENCRYPTION_FIELD_NUMBER: _ClassVar[int] - PAIRED_KEY_RESULT: V1Frame.FrameType - PAIRED_KEY_RESULT_FIELD_NUMBER: _ClassVar[int] - RESPONSE: V1Frame.FrameType - TYPE_FIELD_NUMBER: _ClassVar[int] - UNKNOWN_FRAME_TYPE: V1Frame.FrameType - certificate_info: CertificateInfoFrame - connection_response: ConnectionResponseFrame - introduction: IntroductionFrame - paired_key_encryption: PairedKeyEncryptionFrame - paired_key_result: PairedKeyResultFrame - type: V1Frame.FrameType - def __init__(self, type: _Optional[_Union[V1Frame.FrameType, str]] = ..., introduction: _Optional[_Union[IntroductionFrame, _Mapping]] = ..., connection_response: _Optional[_Union[ConnectionResponseFrame, _Mapping]] = ..., paired_key_encryption: _Optional[_Union[PairedKeyEncryptionFrame, _Mapping]] = ..., paired_key_result: _Optional[_Union[PairedKeyResultFrame, _Mapping]] = ..., certificate_info: _Optional[_Union[CertificateInfoFrame, _Mapping]] = ...) -> None: ... - class WifiCredentials(_message.Message): - __slots__ = ["hidden_ssid", "password"] - HIDDEN_SSID_FIELD_NUMBER: _ClassVar[int] + __slots__ = ("password", "hidden_ssid") PASSWORD_FIELD_NUMBER: _ClassVar[int] - hidden_ssid: bool + HIDDEN_SSID_FIELD_NUMBER: _ClassVar[int] password: str - def __init__(self, password: _Optional[str] = ..., hidden_ssid: bool = ...) -> None: ... + hidden_ssid: bool + def __init__(self, password: _Optional[str] = ..., hidden_ssid: _Optional[bool] = ...) -> None: ... -class WifiCredentialsMetadata(_message.Message): - __slots__ = ["id", "payload_id", "security_type", "ssid"] - class SecurityType(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): - __slots__ = [] - ID_FIELD_NUMBER: _ClassVar[int] - OPEN: WifiCredentialsMetadata.SecurityType - PAYLOAD_ID_FIELD_NUMBER: _ClassVar[int] - SECURITY_TYPE_FIELD_NUMBER: _ClassVar[int] - SSID_FIELD_NUMBER: _ClassVar[int] - UNKNOWN_SECURITY_TYPE: WifiCredentialsMetadata.SecurityType - WEP: WifiCredentialsMetadata.SecurityType - WPA_PSK: WifiCredentialsMetadata.SecurityType - id: int - payload_id: int - security_type: WifiCredentialsMetadata.SecurityType - ssid: str - def __init__(self, ssid: _Optional[str] = ..., security_type: _Optional[_Union[WifiCredentialsMetadata.SecurityType, str]] = ..., payload_id: _Optional[int] = ..., id: _Optional[int] = ...) -> None: ... +class StreamDetails(_message.Message): + __slots__ = ("input_stream_parcel_file_descriptor_bytes",) + INPUT_STREAM_PARCEL_FILE_DESCRIPTOR_BYTES_FIELD_NUMBER: _ClassVar[int] + input_stream_parcel_file_descriptor_bytes: bytes + def __init__(self, input_stream_parcel_file_descriptor_bytes: _Optional[bytes] = ...) -> None: ... diff --git a/pyquickshare/qrcode.py b/pyquickshare/qrcode.py new file mode 100644 index 0000000..07d371a --- /dev/null +++ b/pyquickshare/qrcode.py @@ -0,0 +1,97 @@ +from __future__ import annotations + +import struct +import typing + +from cryptography.hazmat.primitives import hashes +from cryptography.hazmat.primitives.asymmetric import ec, utils +from cryptography.hazmat.primitives.ciphers import Cipher, algorithms, modes +from cryptography.hazmat.primitives.kdf.hkdf import HKDF + +from .common import to_url64 + + +class QRCode(typing.NamedTuple): + """A Quick Share QR code.""" + + url: str + key: bytes + private_key: ec.EllipticCurvePrivateKey + + def keychain(self) -> HiddenKeychain: + """Derive the hidden keychain from the QR code's key. Internal use only. + + Returns: + HiddenKeychain: The derived hidden keychain. + """ + advertising_token = HKDF( + algorithm=hashes.SHA256(), + length=16, + salt=None, + info=b"advertisingContext", + ).derive(self.key) + + name_encryption_token = HKDF( + algorithm=hashes.SHA256(), + length=16, + salt=None, + info=b"encryptionKey", + ).derive(self.key) + + return HiddenKeychain( + advertising_token=advertising_token, + name_encryption_token=name_encryption_token, + ) + + def print(self) -> None: + """Print the QR code to the terminal in ASCII art form. + + Requires the `qrcode` extra to be installed. + """ + import qrcode # noqa: PLC0415 + + qr = qrcode.QRCode(box_size=10, border=4) + qr.add_data(self.url) + qr.make(fit=True) + qr.print_ascii(invert=True) + + def qr_code_handshake_data(self, auth_key: bytes) -> bytes: + """Internal use only.""" + signature = self.private_key.sign( + auth_key, + ec.ECDSA(hashes.SHA256()), + ) + (r, s) = utils.decode_dss_signature(signature) + return r.to_bytes(32, byteorder="big") + s.to_bytes(32, byteorder="big") + + +class HiddenKeychain(typing.NamedTuple): + advertising_token: bytes + name_encryption_token: bytes + + +def generate_qr() -> QRCode: + private_key = ec.generate_private_key(ec.SECP256R1()) + public_key = private_key.public_key() + + x_value_bytes = public_key.public_numbers().x.to_bytes(32, "big") + + # 2-byte version number of 0, 1-byte version of 2, public key + qr_payload = struct.pack(">H", 0) + struct.pack("B", 2) + x_value_bytes + url = f"https://quickshare.google/qrcode#key={to_url64(qr_payload)}" + + return QRCode(url=url, key=qr_payload, private_key=private_key) + + +def decrypt_qrcode_record(buffer: bytes, keychain: HiddenKeychain) -> bytes: + iv = buffer[:12] + tag = buffer[-16:] + ciphertext = buffer[12:-16] + + decryptor = Cipher( + algorithms.AES(keychain.name_encryption_token), + modes.GCM(iv, tag), + ).decryptor() + + decryptor.authenticate_additional_data(keychain.advertising_token) + return decryptor.update(ciphertext) + decryptor.finalize() diff --git a/pyquickshare/receive.py b/pyquickshare/receive.py index 16a74a0..917d464 100644 --- a/pyquickshare/receive.py +++ b/pyquickshare/receive.py @@ -18,7 +18,6 @@ Type, create_task, derive_endpoint_id_from_mac, - from_url64, generate_connection_response, generate_paired_key_encryption, iter_payload_messages, @@ -100,15 +99,6 @@ class ReceiveMode(enum.Enum): TEXT = 3 -def parse_n(n: bytes) -> tuple[bool, Type, str]: - n = from_url64(n.decode("utf-8")) - flags = n[0] - visible = bool(flags & 0b00000001) - type = Type(flags >> 1 & 0b00000111) - name = n[18:].decode("utf-8") - return visible, type, name - - def _generate_accept() -> bytes: accept = wire_format_pb2.Frame() accept.v1.type = wire_format_pb2.V1Frame.RESPONSE diff --git a/pyquickshare/rfcomm/__init__.py b/pyquickshare/rfcomm/__init__.py new file mode 100644 index 0000000..5d2a80e --- /dev/null +++ b/pyquickshare/rfcomm/__init__.py @@ -0,0 +1,93 @@ +import socket as _socket + +from ._rfcomm import ( + AF_BLUETOOTH, + BT_SECURITY, + BT_SECURITY_FIPS, + BT_SECURITY_HIGH, + BT_SECURITY_LOW, + BT_SECURITY_MEDIUM, + BT_SECURITY_SDP, + BTPROTO_RFCOMM, + PF_BLUETOOTH, + RFCOMM_CONNINFO, + RFCOMM_DEFAULT_MTU, + RFCOMM_LM, + RFCOMM_LM_AUTH, + RFCOMM_LM_ENCRYPT, + RFCOMM_LM_MASTER, + RFCOMM_LM_RELIABLE, + RFCOMM_LM_SECURE, + RFCOMM_LM_TRUSTED, + RFCOMM_PSM, + SHUT_RD, + SHUT_RDWR, + SHUT_WR, + SOCK_SEQPACKET, + SOCK_STREAM, + SOL_BLUETOOTH, + SOL_RFCOMM, + ba2str, + bacmp, + bacpy, + bdaddr_t, + bind_rfcomm, + bt_security, + connect_rfcomm, + find_rfcomm_channel, + getsockopt_bytes, + make_rfcomm_socket, + rfcomm_conninfo, + setsockopt_bytes, + sockaddr_rc, + str2ba, +) + +__all__ = [ + "bdaddr_t", + "bt_security", + "rfcomm_conninfo", + "sockaddr_rc", + "ba2str", + "bacmp", + "bacpy", + "str2ba", + "bind_rfcomm", + "connect_rfcomm", + "getsockopt_bytes", + "make_rfcomm_socket", + "find_rfcomm_channel", + "open_rfcomm_socket", + "setsockopt_bytes", + "AF_BLUETOOTH", + "BTPROTO_RFCOMM", + "BT_SECURITY", + "BT_SECURITY_FIPS", + "BT_SECURITY_HIGH", + "BT_SECURITY_LOW", + "BT_SECURITY_MEDIUM", + "BT_SECURITY_SDP", + "PF_BLUETOOTH", + "RFCOMM_CONNINFO", + "RFCOMM_DEFAULT_MTU", + "RFCOMM_LM", + "RFCOMM_LM_AUTH", + "RFCOMM_LM_ENCRYPT", + "RFCOMM_LM_MASTER", + "RFCOMM_LM_RELIABLE", + "RFCOMM_LM_SECURE", + "RFCOMM_LM_TRUSTED", + "RFCOMM_PSM", + "SHUT_RD", + "SHUT_RDWR", + "SHUT_WR", + "SOCK_SEQPACKET", + "SOCK_STREAM", + "SOL_BLUETOOTH", + "SOL_RFCOMM", +] + + +def open_rfcomm_socket() -> _socket.socket: + fd = make_rfcomm_socket() + return _socket.socket(fileno=fd) diff --git a/pyquickshare/rfcomm/_rfcomm.cpp b/pyquickshare/rfcomm/_rfcomm.cpp new file mode 100644 index 0000000..77b849b --- /dev/null +++ b/pyquickshare/rfcomm/_rfcomm.cpp @@ -0,0 +1,311 @@ +#include +#include + +extern "C" { +#include +#include +#include +#include +} + +#include +#include +#include +#include +#include +#include +#include + +namespace py = pybind11; + +static void throw_errno(const char *what) { + throw std::system_error(errno, std::generic_category(), what); +} + +static uuid_t parse_uuid(const std::string &s) { + uuid_t u; + std::string t = s; + + if (t.size() >= 2 && (t.substr(0, 2) == "0x" || t.substr(0, 2) == "0X")) + t = t.substr(2); + + if (t.find('-') == std::string::npos) { + if (t.size() > 8) + throw std::invalid_argument("invalid UUID (too many hex digits): " + s); + uint32_t val = std::stoul(t, nullptr, 16); + if (val <= 0xFFFF) + sdp_uuid16_create(&u, static_cast(val)); + else + sdp_uuid32_create(&u, val); + return u; + } + + std::string hex; + for (char c : s) + if (c != '-') hex += c; + if (hex.size() != 32) + throw std::invalid_argument("invalid UUID (bad length): " + s); + uint8_t bytes[16]; + for (int i = 0; i < 16; i++) + bytes[i] = static_cast(std::stoul(hex.substr(i * 2, 2), nullptr, 16)); + sdp_uuid128_create(&u, bytes); + return u; +} + +PYBIND11_MODULE(_rfcomm, m) { + m.doc() = "pybind11 bindings for the BlueZ RFCOMM C API"; + + py::class_(m, "bdaddr_t") + .def(py::init([]() { + bdaddr_t addr; + memset(&addr, 0, sizeof(addr)); + return addr; + })) + .def_property( + "b", + [](const bdaddr_t &self) { + return py::bytes(reinterpret_cast(self.b), 6); + }, + [](bdaddr_t &self, py::bytes val) { + auto s = static_cast(val); + if (s.size() != 6) + throw std::invalid_argument("bdaddr_t.b must be exactly 6 bytes"); + memcpy(self.b, s.data(), 6); + }) + .def("__repr__", [](const bdaddr_t &self) { + char str[18]; + ba2str(&self, str); + return std::string("bdaddr_t('") + str + "')"; + }) + .def("__eq__", [](const bdaddr_t &a, const bdaddr_t &b) { + return bacmp(&a, &b) == 0; + }) + .def("__ne__", [](const bdaddr_t &a, const bdaddr_t &b) { + return bacmp(&a, &b) != 0; + }); + + py::class_(m, "sockaddr_rc") + .def(py::init([]() { + sockaddr_rc addr; + memset(&addr, 0, sizeof(addr)); + addr.rc_family = AF_BLUETOOTH; + return addr; + })) + .def_readwrite("rc_family", &sockaddr_rc::rc_family) + .def_readwrite("rc_bdaddr", &sockaddr_rc::rc_bdaddr) + .def_readwrite("rc_channel", &sockaddr_rc::rc_channel); + + + py::class_(m, "bt_security") + .def(py::init([]() { + bt_security sec; + sec.level = BT_SECURITY_LOW; + sec.key_size = 0; + return sec; + })) + .def(py::init([](uint8_t level, uint8_t key_size) { + bt_security sec; + sec.level = level; + sec.key_size = key_size; + return sec; + }), py::arg("level"), py::arg("key_size") = uint8_t(0)) + .def_readwrite("level", &bt_security::level) + .def_readwrite("key_size", &bt_security::key_size) + .def("pack", [](const bt_security &self) { + return py::bytes(reinterpret_cast(&self), sizeof(self)); + }); + + + py::class_(m, "rfcomm_conninfo") + .def(py::init([]() { + rfcomm_conninfo info; + memset(&info, 0, sizeof(info)); + return info; + })) + .def_readwrite("hci_handle", &rfcomm_conninfo::hci_handle) + .def_property( + "dev_class", + [](const rfcomm_conninfo &self) { + return py::bytes(reinterpret_cast(self.dev_class), 3); + }, + [](rfcomm_conninfo &self, py::bytes val) { + auto s = static_cast(val); + if (s.size() != 3) + throw std::invalid_argument("dev_class must be exactly 3 bytes"); + memcpy(self.dev_class, s.data(), 3); + }) + .def_static("unpack", [](py::bytes raw) { + auto s = static_cast(raw); + if (s.size() < sizeof(rfcomm_conninfo)) + throw std::invalid_argument("buffer too small for rfcomm_conninfo"); + rfcomm_conninfo info; + memcpy(&info, s.data(), sizeof(info)); + return info; + }, py::arg("raw")); + + m.def("str2ba", [](const std::string &str) { + bdaddr_t ba; + if (::str2ba(str.c_str(), &ba) != 0) + throw std::invalid_argument("invalid BD address: " + str); + return ba; + }, py::arg("str"), "Parse a colon-separated BD address string into a bdaddr_t."); + + m.def("ba2str", [](const bdaddr_t &ba) { + char str[18]; + if (::ba2str(&ba, str) < 0) + throw std::runtime_error("ba2str failed"); + return std::string(str); + }, py::arg("ba"), "Format a bdaddr_t as a colon-separated address string."); + + m.def("bacpy", [](bdaddr_t &dst, const bdaddr_t &src) { + ::bacpy(&dst, &src); + }, py::arg("dst"), py::arg("src"), "Copy src into dst (in-place mutation of dst)."); + + m.def("bacmp", [](const bdaddr_t &ba1, const bdaddr_t &ba2) { + return ::bacmp(&ba1, &ba2); + }, py::arg("ba1"), py::arg("ba2"), "Compare two bdaddr_t values; 0 if equal."); + + m.def("make_rfcomm_socket", []() { + int fd = ::socket(AF_BLUETOOTH, SOCK_STREAM, BTPROTO_RFCOMM); + if (fd < 0) + throw_errno("socket(AF_BLUETOOTH, SOCK_STREAM, BTPROTO_RFCOMM)"); + return fd; + }, "Create an RFCOMM socket; returns a raw file descriptor.\n" + "Wrap with socket.socket(fileno=fd) for asyncio use."); + + m.def("connect_rfcomm", [](int fd, const std::string &bdaddr_str, uint8_t channel) { + sockaddr_rc addr; + memset(&addr, 0, sizeof(addr)); + addr.rc_family = AF_BLUETOOTH; + addr.rc_channel = channel; + if (::str2ba(bdaddr_str.c_str(), &addr.rc_bdaddr) != 0) + throw std::invalid_argument("invalid BD address: " + bdaddr_str); + if (::connect(fd, reinterpret_cast(&addr), sizeof(addr)) < 0) + throw_errno("connect_rfcomm"); + }, py::arg("fd"), py::arg("bdaddr_str"), py::arg("channel"), + "Connect an RFCOMM socket fd to the given BD address and channel."); + + m.def("bind_rfcomm", [](int fd, const std::string &bdaddr_str, uint8_t channel) { + sockaddr_rc addr; + memset(&addr, 0, sizeof(addr)); + addr.rc_family = AF_BLUETOOTH; + addr.rc_channel = channel; + if (::str2ba(bdaddr_str.c_str(), &addr.rc_bdaddr) != 0) + throw std::invalid_argument("invalid BD address: " + bdaddr_str); + if (::bind(fd, reinterpret_cast(&addr), sizeof(addr)) < 0) + throw_errno("bind_rfcomm"); + }, py::arg("fd"), py::arg("bdaddr_str"), py::arg("channel"), + "Bind an RFCOMM socket fd to a local adapter address and channel."); + + m.def("setsockopt_bytes", + [](int fd, int level, int optname, py::bytes data) { + auto s = static_cast(data); + if (::setsockopt(fd, level, optname, s.data(), + static_cast(s.size())) < 0) + throw_errno("setsockopt"); + }, py::arg("fd"), py::arg("level"), py::arg("optname"), py::arg("data"), + "setsockopt wrapper that accepts raw bytes (e.g. bt_security.pack())."); + + m.def("getsockopt_bytes", + [](int fd, int level, int optname, socklen_t buflen) -> py::bytes { + std::string buf(buflen, '\0'); + socklen_t len = buflen; + if (::getsockopt(fd, level, optname, buf.data(), &len) < 0) + throw_errno("getsockopt"); + buf.resize(len); + return py::bytes(buf); + }, py::arg("fd"), py::arg("level"), py::arg("optname"), py::arg("buflen"), + "getsockopt wrapper that returns raw bytes (pass to rfcomm_conninfo.unpack())."); + + + m.def("find_rfcomm_channel", + [](const std::string &remote_str, const std::string &uuid_str) -> int { + bdaddr_t remote; + if (::str2ba(remote_str.c_str(), &remote) != 0) + throw std::invalid_argument("invalid BD address: " + remote_str); + + uuid_t svc_uuid = parse_uuid(uuid_str); + + bdaddr_t src = {}; + sdp_session_t *session = sdp_connect(&src, &remote, SDP_RETRY_IF_BUSY); + if (!session) + throw_errno("sdp_connect"); + + sdp_list_t *search = sdp_list_append(nullptr, &svc_uuid); + uint32_t range = 0x0000FFFF; + sdp_list_t *attrid = sdp_list_append(nullptr, &range); + sdp_list_t *records = nullptr; + + int ret = sdp_service_search_attr_req( + session, search, SDP_ATTR_REQ_RANGE, attrid, &records); + sdp_list_free(search, nullptr); + sdp_list_free(attrid, nullptr); + sdp_close(session); + + if (ret != 0) + throw_errno("sdp_service_search_attr_req"); + if (!records) + throw std::runtime_error("service not found via SDP"); + + int channel = -1; + for (sdp_list_t *r = records; r && channel < 0; r = r->next) { + sdp_record_t *rec = static_cast(r->data); + sdp_list_t *protos = nullptr; + if (sdp_get_access_protos(rec, &protos) == 0) { + channel = sdp_get_proto_port(protos, RFCOMM_UUID); + sdp_list_foreach(protos, + reinterpret_cast(sdp_list_free), nullptr); + sdp_list_free(protos, nullptr); + } + sdp_record_free(rec); + } + sdp_list_free(records, nullptr); + + if (channel < 0) + throw std::runtime_error("RFCOMM channel not found in SDP records"); + return channel; + }, + py::arg("remote_bdaddr"), py::arg("uuid"), + "Query a remote device's SDP server for the RFCOMM channel of a service.\n" + "\n" + "Args:\n" + " remote_bdaddr: BD address string, e.g. \"18:F0:E4:3C:07:8B\"\n" + " uuid: service UUID — short form (\"1101\", \"0x1101\") or full\n" + " 128-bit form (\"00001101-0000-1000-8000-00805f9b34fb\")\n" + "\n" + "Returns the RFCOMM channel number (int).\n" + "Raises OSError if the SDP connection fails, RuntimeError if not found.\n" + "This call blocks until the SDP query completes."); + + m.attr("AF_BLUETOOTH") = int(AF_BLUETOOTH); + m.attr("PF_BLUETOOTH") = int(PF_BLUETOOTH); + m.attr("BTPROTO_RFCOMM") = int(BTPROTO_RFCOMM); + m.attr("SOCK_STREAM") = int(SOCK_STREAM); + m.attr("SOCK_SEQPACKET") = int(SOCK_SEQPACKET); + + m.attr("SOL_BLUETOOTH") = int(SOL_BLUETOOTH); + m.attr("SOL_RFCOMM") = int(SOL_RFCOMM); + + m.attr("BT_SECURITY") = int(BT_SECURITY); + m.attr("BT_SECURITY_SDP") = int(BT_SECURITY_SDP); + m.attr("BT_SECURITY_LOW") = int(BT_SECURITY_LOW); + m.attr("BT_SECURITY_MEDIUM") = int(BT_SECURITY_MEDIUM); + m.attr("BT_SECURITY_HIGH") = int(BT_SECURITY_HIGH); + m.attr("BT_SECURITY_FIPS") = int(BT_SECURITY_FIPS); + + m.attr("RFCOMM_CONNINFO") = int(RFCOMM_CONNINFO); + m.attr("RFCOMM_LM") = int(RFCOMM_LM); + m.attr("RFCOMM_LM_MASTER") = int(RFCOMM_LM_MASTER); + m.attr("RFCOMM_LM_AUTH") = int(RFCOMM_LM_AUTH); + m.attr("RFCOMM_LM_ENCRYPT") = int(RFCOMM_LM_ENCRYPT); + m.attr("RFCOMM_LM_TRUSTED") = int(RFCOMM_LM_TRUSTED); + m.attr("RFCOMM_LM_RELIABLE") = int(RFCOMM_LM_RELIABLE); + m.attr("RFCOMM_LM_SECURE") = int(RFCOMM_LM_SECURE); + + m.attr("RFCOMM_DEFAULT_MTU") = int(RFCOMM_DEFAULT_MTU); + m.attr("RFCOMM_PSM") = int(RFCOMM_PSM); + + m.attr("SHUT_RD") = int(SHUT_RD); + m.attr("SHUT_WR") = int(SHUT_WR); + m.attr("SHUT_RDWR") = int(SHUT_RDWR); +} diff --git a/pyquickshare/send.py b/pyquickshare/send.py index 1578fc7..b86a587 100644 --- a/pyquickshare/send.py +++ b/pyquickshare/send.py @@ -1,20 +1,22 @@ from __future__ import annotations +import abc import asyncio import contextlib +import io import pathlib import random import socket import string import struct import time -from collections.abc import AsyncIterator from logging import getLogger -from typing import TYPE_CHECKING +from typing import TYPE_CHECKING, NamedTuple import aiofile import magic +from .bluetooth import BluetoothDevice, connect_bluetooth_device, find_receiving_devices from .common import ( Type, create_task, @@ -42,10 +44,11 @@ securemessage_pb2, wire_format_pb2, ) +from .qrcode import QRCode, decrypt_qrcode_record, generate_qr from .ukey2 import Keychain, do_client_key_exchange if TYPE_CHECKING: - from collections.abc import AsyncIterator, Callable + from collections.abc import Callable from zeroconf.asyncio import AsyncServiceInfo @@ -55,11 +58,83 @@ CHUNK_SIZE = 512 * 1024 +class Connectable(abc.ABC): + @abc.abstractmethod + async def connect(self) -> tuple[asyncio.StreamReader, asyncio.StreamWriter] | None: ... + + +class WifiConnectable(Connectable): + def __init__(self, *, service_info: AsyncServiceInfo, qr_code: QRCode) -> None: + self.service_info = service_info + self.qr_code = qr_code + + async def connect(self) -> tuple[asyncio.StreamReader, asyncio.StreamWriter] | None: + service = self.service_info + + name = service.name.split(".")[0].lstrip("_") + + decoded = from_url64(name) + peer_endpoint_id = decoded[1:5].decode("ascii") + + logger.debug("Discovered endpoint %r", peer_endpoint_id) + + n_raw = service.properties.get(b"n") + + if n_raw is None: + logger.debug("No n record found, aborting") + return None + + n = _parse_n(n_raw) + + if n.visible is False: + if 1 not in n.records: + logger.error( + "Tried to connect to a hidden endpoint without a QR code record, aborting" + ) + logger.error("Are you sure this is the right device?") + return None + + keychain = self.qr_code.keychain() + name_ = decrypt_qrcode_record(n.records[1], keychain).decode("utf-8") + n = n._replace(name=name_) + + logger.debug("Endpoint %r has name %r and type %r", peer_endpoint_id, n.name, n.type) + + address: str | None = None + for addr in service.addresses: + try: + address = socket.inet_ntoa(addr) + socket.gethostbyaddr(address) + break + except socket.herror: + logger.debug("Address %r is not resolvable", address) + + if address is None: + logger.error("No resolvable addresses found, aborting") + return None + + logger.debug("Connecting to %s:%d", address, service.port) + + return await asyncio.open_connection(address, service.port) + +class BluetoothConnectable(Connectable): + def __init__(self, device: BluetoothDevice) -> None: + self.device = device + + async def connect(self) -> tuple[asyncio.StreamReader, asyncio.StreamWriter] | None: + logger.debug("Connecting to Bluetooth device %r", self.device) + try: + sock = await connect_bluetooth_device(self.device) + except Exception: + logger.exception("Failed to connect to Bluetooth device: %s") + return None + + reader, writer = await asyncio.open_connection(sock=sock) + return reader, writer + def _mime_to_type(mime_type: str) -> wire_format_pb2.FileMetadata.Type: namespace = mime_type.split("/")[0] - if mime_type == "application/vnd.android.package-archive": - return wire_format_pb2.FileMetadata.APP if namespace == "audio": return wire_format_pb2.FileMetadata.AUDIO if namespace == "image": @@ -109,8 +184,39 @@ def generate_endpoint_id() -> bytes: ) -async def discover_services() -> AsyncIterator[AsyncServiceInfo]: - """Discover services on the network. +class _DiscoverIterator: + def __init__(self) -> None: + self.qr_code = generate_qr() + self.queue: asyncio.Queue[Connectable] | None = None + + async def start(self) -> None: + self.queue = asyncio.Queue() + + for task in [self._wifi(self.queue), self._bluetooth(self.queue)]: + create_task(task) + + async def _wifi(self, queue: asyncio.Queue[Connectable]) -> None: + local_queue = await _discover_services() + while True: + service_info = await local_queue.get() + connectable = WifiConnectable(service_info=service_info, qr_code=self.qr_code) + await queue.put(connectable) + + async def _bluetooth(self, queue: asyncio.Queue[Connectable]) -> None: + async for device in find_receiving_devices(): + connectable = BluetoothConnectable(device=device) + await queue.put(connectable) + + async def __anext__(self) -> Connectable: + assert self.queue is not None # noqa: S101 - escape hatch for the type checker + return await self.queue.get() + + def __aenter__(self) -> _DiscoverIterator: + return self + + +async def discover_services() -> _DiscoverIterator: + """Discover Quick Share devices. Example: .. code-block:: python @@ -118,9 +224,10 @@ async def discover_services() -> AsyncIterator[AsyncServiceInfo]: async for service in discover_services(): print(service) """ - queue = await _discover_services() - while True: - yield await queue.get() + iterator = _DiscoverIterator() + await iterator.start() + await asyncio.sleep(0) + return iterator async def _send_file( @@ -198,60 +305,64 @@ async def write_task(offset: int) -> None: ) -async def send_to(service: AsyncServiceInfo, *, file: str) -> None: - """Send a file to a service. +class DeviceMetadata(NamedTuple): + visible: bool + type: Type + name: str | None + records: dict[int, bytes] - Args: - service (AsyncServiceInfo): The service to send the file to - file (str): The file to send - """ - name = service.name.split(".")[0].lstrip("_") - - decoded = from_url64(name) - peer_endpoint_id = decoded[1:5].decode("ascii") - logger.debug("Discovered endpoint %r", peer_endpoint_id) +def _parse_n(n: bytes) -> DeviceMetadata: + n = from_url64(n.decode("utf-8")) + buffer = io.BytesIO(n) + flags = buffer.read(1)[0] + visible = bool(flags & 0b00000001) + device_type = Type(flags >> 1 & 0b00000111) + buffer.read(16) # skip the 16 bytes of ? + name = None + if visible: + length = buffer.read(1)[0] + name = n[18:].decode("utf-8") - n_raw = service.properties.get(b"n") + records: dict[int, bytes] = {} + while buffer.tell() < buffer.getbuffer().nbytes: + type_ = buffer.read(1)[0] + length = buffer.read(1)[0] + value = buffer.read(length) + records[type_] = value - if n_raw is None: - logger.debug("No n record found, aborting") - return None + return DeviceMetadata(visible, device_type, name, records) - n = from_url64(n_raw.decode("utf-8")) - flags = n[0] - _visible = bool(flags & 0b00000001) - type = Type(flags >> 1 & 0b00000111) +async def send_to(device: Connectable, *, file: str) -> None: + """Send a file to a device. - name = n[18:].decode("utf-8") - - logger.debug("Endpoint %r has name %r and type %r", peer_endpoint_id, name, type) + Args: + device (Device): The device to send to + file (str): The file to send + """ + maybe = await device.connect() - address: str | None = None - for addr in service.addresses: - try: - address = socket.inet_ntoa(addr) - socket.gethostbyaddr(address) - break - except socket.herror: - logger.debug("Address %r is not resolvable", address) - - if address is None: - logger.error("No resolvable addresses found, aborting") + if maybe is None: + logger.error("Failed to connect to the device") return None - logger.debug("Connecting to %s:%d", address, service.port) + reader, writer = maybe - reader, writer = await asyncio.open_connection(address, service.port) - return await _handle_target(file, reader, writer) + qr_code = None + if isinstance(device, WifiConnectable): + qr_code = device.qr_code + + return await _handle_target(file, reader, writer, qrcode=qr_code) async def _handle_target( # noqa: PLR0915 # TODO: refactor file: str, reader: asyncio.StreamReader, writer: asyncio.StreamWriter, + *, + qrcode: QRCode | None = None, ) -> None: endpoint_id = generate_endpoint_id() @@ -297,7 +408,10 @@ async def _handle_target( # noqa: PLR0915 # TODO: refactor sequence_number = make_sequence_number() send = make_send(writer, keychain, sequence_number) - paired_key_encryption = generate_paired_key_encryption() + qr_code_handshake_data = None + if qrcode: + qr_code_handshake_data = qrcode.qr_code_handshake_data(keychain.auth_string) + paired_key_encryption = generate_paired_key_encryption(qr_code_handshake_data) await send(paired_key_encryption.SerializeToString()) data = await read(reader) diff --git a/uv.lock b/uv.lock index c499b4c..adf3c9d 100644 --- a/uv.lock +++ b/uv.lock @@ -1,6 +1,10 @@ version = 1 revision = 3 requires-python = "==3.10.*" +resolution-markers = [ + "sys_platform != 'emscripten'", + "sys_platform == 'emscripten'", +] [[package]] name = "accessible-pygments" @@ -500,7 +504,7 @@ name = "pyobjc-framework-cocoa" version = "10.3.2" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "pyobjc-core" }, + { name = "pyobjc-core", marker = "sys_platform != 'emscripten'" }, ] sdist = { url = "https://files.pythonhosted.org/packages/39/41/4f09a5e9a6769b4dafb293ea597ed693cc0def0e07867ad0a42664f530b6/pyobjc_framework_cocoa-10.3.2.tar.gz", hash = "sha256:673968e5435845bef969bfe374f31a1a6dc660c98608d2b84d5cae6eafa5c39d", size = 4942530, upload-time = "2024-11-30T15:30:27.244Z" } wheels = [ @@ -512,8 +516,8 @@ name = "pyobjc-framework-corebluetooth" version = "10.3.2" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "pyobjc-core" }, - { name = "pyobjc-framework-cocoa" }, + { name = "pyobjc-core", marker = "sys_platform != 'emscripten'" }, + { name = "pyobjc-framework-cocoa", marker = "sys_platform != 'emscripten'" }, ] sdist = { url = "https://files.pythonhosted.org/packages/13/ca/35d205c3e153e7bc59a417560a45e27a2410439e6f78390f97c1a996c922/pyobjc_framework_corebluetooth-10.3.2.tar.gz", hash = "sha256:c0a077bc3a2466271efa382c1e024630bc43cc6f9ab8f3f97431ad08b1ad52bb", size = 50622, upload-time = "2024-11-30T15:32:18.741Z" } wheels = [ @@ -528,8 +532,8 @@ name = "pyobjc-framework-libdispatch" version = "10.3.2" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "pyobjc-core" }, - { name = "pyobjc-framework-cocoa" }, + { name = "pyobjc-core", marker = "sys_platform != 'emscripten'" }, + { name = "pyobjc-framework-cocoa", marker = "sys_platform != 'emscripten'" }, ] sdist = { url = "https://files.pythonhosted.org/packages/4d/12/a908f3f94952c8c9e3d6e6bd425613a79692e7d400557ede047992439edc/pyobjc_framework_libdispatch-10.3.2.tar.gz", hash = "sha256:e9f4311fbf8df602852557a98d2a64f37a9d363acf4d75634120251bbc7b7304", size = 45132, upload-time = "2024-11-30T17:09:47.135Z" } wheels = [ @@ -538,7 +542,7 @@ wheels = [ [[package]] name = "pyquickshare" -version = "0.1.0" +version = "0.1.0.post1" source = { editable = "." } dependencies = [ { name = "aiofile" }, @@ -551,6 +555,11 @@ dependencies = [ { name = "zeroconf" }, ] +[package.optional-dependencies] +extras = [ + { name = "qrcode" }, +] + [package.dev-dependencies] dev = [ { name = "pytest" }, @@ -571,10 +580,12 @@ requires-dist = [ { name = "bless", specifier = ">=0.2.6" }, { name = "cryptography", specifier = ">=44.0.1" }, { name = "dbus-next", specifier = ">=0.2.3" }, - { name = "protobuf", specifier = ">=5.29.3" }, + { name = "protobuf", specifier = ">=6.32.0" }, { name = "python-magic", specifier = ">=0.4.27" }, + { name = "qrcode", marker = "extra == 'extras'", specifier = ">=8.2" }, { name = "zeroconf", specifier = ">=0.145.1" }, ] +provides-extras = ["extras"] [package.metadata.requires-dev] dev = [ @@ -671,6 +682,18 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/b5/84/0fa4b06f6d6c958d207620fc60005e241ecedceee58931bb20138e1e5776/PyYAML-6.0.2-cp310-cp310-win_amd64.whl", hash = "sha256:a4d3091415f010369ae4ed1fc6b79def9416358877534caf6a0fdd2146c87a3e", size = 161774, upload-time = "2024-08-06T20:31:58.304Z" }, ] +[[package]] +name = "qrcode" +version = "8.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "colorama", marker = "sys_platform == 'win32'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/8f/b2/7fc2931bfae0af02d5f53b174e9cf701adbb35f39d69c2af63d4a39f81a9/qrcode-8.2.tar.gz", hash = "sha256:35c3f2a4172b33136ab9f6b3ef1c00260dd2f66f858f24d88418a015f446506c", size = 43317, upload-time = "2025-05-01T15:44:24.726Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/dd/b8/d2d6d731733f51684bbf76bf34dab3b70a9148e8f2cef2bb544fccec681a/qrcode-8.2-py3-none-any.whl", hash = "sha256:16e64e0716c14960108e85d853062c9e8bba5ca8252c0b4d0231b9df4060ff4f", size = 45986, upload-time = "2025-05-01T15:44:22.781Z" }, +] + [[package]] name = "requests" version = "2.32.5"