From 515136ccf7ff2f448afc8e608df6aa6b0dcac87f Mon Sep 17 00:00:00 2001 From: Grishka Date: Thu, 13 Apr 2023 19:52:04 +0300 Subject: [PATCH] Initial --- .gitignore | 3 + NearDrop.xcodeproj/project.pbxproj | 497 +++ .../contents.xcworkspacedata | 7 + .../xcshareddata/IDEWorkspaceChecks.plist | 8 + .../xcshareddata/swiftpm/Package.resolved | 41 + .../xcshareddata/xcschemes/NearDrop.xcscheme | 77 + NearDrop/AppDelegate.swift | 44 + .../AccentColor.colorset/Contents.json | 11 + .../AppIcon.appiconset/1024.png | Bin 0 -> 372936 bytes .../AppIcon.appiconset/128.png | Bin 0 -> 13198 bytes .../Assets.xcassets/AppIcon.appiconset/16.png | Bin 0 -> 1005 bytes .../AppIcon.appiconset/256 1.png | Bin 0 -> 37651 bytes .../AppIcon.appiconset/256.png | Bin 0 -> 37651 bytes .../AppIcon.appiconset/32 1.png | Bin 0 -> 2080 bytes .../Assets.xcassets/AppIcon.appiconset/32.png | Bin 0 -> 2080 bytes .../AppIcon.appiconset/512 1.png | Bin 0 -> 114066 bytes .../AppIcon.appiconset/512.png | Bin 0 -> 114066 bytes .../Assets.xcassets/AppIcon.appiconset/64.png | Bin 0 -> 4946 bytes .../AppIcon.appiconset/Contents.json | 68 + NearDrop/Assets.xcassets/Contents.json | 6 + .../MenuBarIcon.imageset/Contents.json | 25 + .../MenuBarIcon.imageset/NearbyShare.png | Bin 0 -> 2043 bytes .../MenuBarIcon.imageset/NearbyShare@2x.png | Bin 0 -> 2254 bytes NearDrop/Base.lproj/Localizable.strings | Bin 0 -> 1638 bytes NearDrop/Base.lproj/Localizable.stringsdict | 22 + NearDrop/Data+Extensions.swift | 31 + NearDrop/GenerateProtobuf.sh | 3 + NearDrop/InboundNearbyConnection.swift | 351 ++ NearDrop/MainMenu.xib | 18 + NearDrop/NDNotificationCenterHackery.h | 20 + NearDrop/NDNotificationCenterHackery.m | 49 + NearDrop/NearDrop-Bridging-Header.h | 5 + NearDrop/NearDrop.entitlements | 16 + NearDrop/NearbyConnection.swift | 458 +++ NearDrop/NearbyConnectionManager.swift | 134 + .../device_to_device_messages.pb.swift | 540 +++ .../Protobuf/offline_wire_formats.pb.swift | 3653 +++++++++++++++++ NearDrop/Protobuf/securegcm.pb.swift | 1522 +++++++ NearDrop/Protobuf/securemessage.pb.swift | 951 +++++ NearDrop/Protobuf/ukey.pb.swift | 735 ++++ NearDrop/Protobuf/wire_format.pb.swift | 1617 ++++++++ .../device_to_device_messages.proto | 81 + .../ProtobufSource/offline_wire_formats.proto | 403 ++ NearDrop/ProtobufSource/securegcm.proto | 308 ++ NearDrop/ProtobufSource/securemessage.proto | 126 + NearDrop/ProtobufSource/ukey.proto | 105 + NearDrop/ProtobufSource/wire_format.proto | 236 ++ NearDrop/ru.lproj/Localizable.strings | Bin 0 -> 1656 bytes NearDrop/ru.lproj/Localizable.stringsdict | 26 + PROTOCOL.md | 196 + README.md | 28 + images/YoDawg.jpg | Bin 0 -> 61303 bytes 52 files changed, 12421 insertions(+) create mode 100644 .gitignore create mode 100644 NearDrop.xcodeproj/project.pbxproj create mode 100644 NearDrop.xcodeproj/project.xcworkspace/contents.xcworkspacedata create mode 100644 NearDrop.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist create mode 100644 NearDrop.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved create mode 100644 NearDrop.xcodeproj/xcshareddata/xcschemes/NearDrop.xcscheme create mode 100644 NearDrop/AppDelegate.swift create mode 100644 NearDrop/Assets.xcassets/AccentColor.colorset/Contents.json create mode 100644 NearDrop/Assets.xcassets/AppIcon.appiconset/1024.png create mode 100644 NearDrop/Assets.xcassets/AppIcon.appiconset/128.png create mode 100644 NearDrop/Assets.xcassets/AppIcon.appiconset/16.png create mode 100644 NearDrop/Assets.xcassets/AppIcon.appiconset/256 1.png create mode 100644 NearDrop/Assets.xcassets/AppIcon.appiconset/256.png create mode 100644 NearDrop/Assets.xcassets/AppIcon.appiconset/32 1.png create mode 100644 NearDrop/Assets.xcassets/AppIcon.appiconset/32.png create mode 100644 NearDrop/Assets.xcassets/AppIcon.appiconset/512 1.png create mode 100644 NearDrop/Assets.xcassets/AppIcon.appiconset/512.png create mode 100644 NearDrop/Assets.xcassets/AppIcon.appiconset/64.png create mode 100644 NearDrop/Assets.xcassets/AppIcon.appiconset/Contents.json create mode 100644 NearDrop/Assets.xcassets/Contents.json create mode 100644 NearDrop/Assets.xcassets/MenuBarIcon.imageset/Contents.json create mode 100644 NearDrop/Assets.xcassets/MenuBarIcon.imageset/NearbyShare.png create mode 100644 NearDrop/Assets.xcassets/MenuBarIcon.imageset/NearbyShare@2x.png create mode 100644 NearDrop/Base.lproj/Localizable.strings create mode 100644 NearDrop/Base.lproj/Localizable.stringsdict create mode 100644 NearDrop/Data+Extensions.swift create mode 100755 NearDrop/GenerateProtobuf.sh create mode 100644 NearDrop/InboundNearbyConnection.swift create mode 100644 NearDrop/MainMenu.xib create mode 100644 NearDrop/NDNotificationCenterHackery.h create mode 100644 NearDrop/NDNotificationCenterHackery.m create mode 100644 NearDrop/NearDrop-Bridging-Header.h create mode 100644 NearDrop/NearDrop.entitlements create mode 100644 NearDrop/NearbyConnection.swift create mode 100644 NearDrop/NearbyConnectionManager.swift create mode 100644 NearDrop/Protobuf/device_to_device_messages.pb.swift create mode 100644 NearDrop/Protobuf/offline_wire_formats.pb.swift create mode 100644 NearDrop/Protobuf/securegcm.pb.swift create mode 100644 NearDrop/Protobuf/securemessage.pb.swift create mode 100644 NearDrop/Protobuf/ukey.pb.swift create mode 100644 NearDrop/Protobuf/wire_format.pb.swift create mode 100644 NearDrop/ProtobufSource/device_to_device_messages.proto create mode 100644 NearDrop/ProtobufSource/offline_wire_formats.proto create mode 100644 NearDrop/ProtobufSource/securegcm.proto create mode 100644 NearDrop/ProtobufSource/securemessage.proto create mode 100644 NearDrop/ProtobufSource/ukey.proto create mode 100644 NearDrop/ProtobufSource/wire_format.proto create mode 100644 NearDrop/ru.lproj/Localizable.strings create mode 100644 NearDrop/ru.lproj/Localizable.stringsdict create mode 100644 PROTOCOL.md create mode 100644 README.md create mode 100644 images/YoDawg.jpg diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..c76682f --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +DerivedData/ +.DS_Store +xcuserdata/ \ No newline at end of file diff --git a/NearDrop.xcodeproj/project.pbxproj b/NearDrop.xcodeproj/project.pbxproj new file mode 100644 index 0000000..f508cdb --- /dev/null +++ b/NearDrop.xcodeproj/project.pbxproj @@ -0,0 +1,497 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 56; + objects = { + +/* Begin PBXBuildFile section */ + 698DFAE629E2F91A0064F247 /* NearbyConnection.swift in Sources */ = {isa = PBXBuildFile; fileRef = 698DFAE529E2F91A0064F247 /* NearbyConnection.swift */; }; + 698DFB0329E362140064F247 /* NDNotificationCenterHackery.m in Sources */ = {isa = PBXBuildFile; fileRef = 698DFB0229E362140064F247 /* NDNotificationCenterHackery.m */; }; + 69D2C32D29E77F2200EC7E30 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 69D2C32B29E77F2200EC7E30 /* Localizable.strings */; }; + 69D2C32F29E7898C00EC7E30 /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 69D2C32E29E7898C00EC7E30 /* MainMenu.xib */; }; + 69D2C33829E78DF400EC7E30 /* Localizable.stringsdict in Resources */ = {isa = PBXBuildFile; fileRef = 69D2C33629E78DF400EC7E30 /* Localizable.stringsdict */; }; + 69DA9A1229E0BF5100A442DA /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 69DA9A1129E0BF5100A442DA /* AppDelegate.swift */; }; + 69DA9A1429E0BF5200A442DA /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 69DA9A1329E0BF5200A442DA /* Assets.xcassets */; }; + 69DA9A1F29E0C0B300A442DA /* NearbyConnectionManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 69DA9A1E29E0C0B300A442DA /* NearbyConnectionManager.swift */; }; + 69DA9A2129E0CC4E00A442DA /* Data+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 69DA9A2029E0CC4E00A442DA /* Data+Extensions.swift */; }; + 69DA9A2329E17F0400A442DA /* InboundNearbyConnection.swift in Sources */ = {isa = PBXBuildFile; fileRef = 69DA9A2229E17F0400A442DA /* InboundNearbyConnection.swift */; }; + 69DA9A2629E189EF00A442DA /* SwiftProtobuf in Frameworks */ = {isa = PBXBuildFile; productRef = 69DA9A2529E189EF00A442DA /* SwiftProtobuf */; }; + 69DA9A2E29E18CB500A442DA /* ukey.pb.swift in Sources */ = {isa = PBXBuildFile; fileRef = 69DA9A2829E18CB500A442DA /* ukey.pb.swift */; }; + 69DA9A2F29E18CB500A442DA /* wire_format.pb.swift in Sources */ = {isa = PBXBuildFile; fileRef = 69DA9A2929E18CB500A442DA /* wire_format.pb.swift */; }; + 69DA9A3029E18CB500A442DA /* device_to_device_messages.pb.swift in Sources */ = {isa = PBXBuildFile; fileRef = 69DA9A2A29E18CB500A442DA /* device_to_device_messages.pb.swift */; }; + 69DA9A3129E18CB500A442DA /* offline_wire_formats.pb.swift in Sources */ = {isa = PBXBuildFile; fileRef = 69DA9A2B29E18CB500A442DA /* offline_wire_formats.pb.swift */; }; + 69DA9A3229E18CB500A442DA /* securegcm.pb.swift in Sources */ = {isa = PBXBuildFile; fileRef = 69DA9A2C29E18CB500A442DA /* securegcm.pb.swift */; }; + 69DA9A3329E18CB500A442DA /* securemessage.pb.swift in Sources */ = {isa = PBXBuildFile; fileRef = 69DA9A2D29E18CB500A442DA /* securemessage.pb.swift */; }; + 69DA9A3629E1994C00A442DA /* SwiftECC in Frameworks */ = {isa = PBXBuildFile; productRef = 69DA9A3529E1994C00A442DA /* SwiftECC */; }; +/* End PBXBuildFile section */ + +/* Begin PBXCopyFilesBuildPhase section */ + 698DFAFF29E353220064F247 /* Embed Foundation Extensions */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 13; + files = ( + ); + name = "Embed Foundation Extensions"; + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXCopyFilesBuildPhase section */ + +/* Begin PBXFileReference section */ + 698DFAE529E2F91A0064F247 /* NearbyConnection.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NearbyConnection.swift; sourceTree = ""; }; + 698DFAED29E353220064F247 /* UserNotifications.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UserNotifications.framework; path = System/Library/Frameworks/UserNotifications.framework; sourceTree = SDKROOT; }; + 698DFAEF29E353220064F247 /* UserNotificationsUI.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UserNotificationsUI.framework; path = System/Library/Frameworks/UserNotificationsUI.framework; sourceTree = SDKROOT; }; + 698DFB0029E362140064F247 /* NearDrop-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "NearDrop-Bridging-Header.h"; sourceTree = ""; }; + 698DFB0129E362140064F247 /* NDNotificationCenterHackery.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = NDNotificationCenterHackery.h; sourceTree = ""; }; + 698DFB0229E362140064F247 /* NDNotificationCenterHackery.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = NDNotificationCenterHackery.m; sourceTree = ""; }; + 69D2C32C29E77F2200EC7E30 /* Base */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = Base; path = Base.lproj/Localizable.strings; sourceTree = ""; }; + 69D2C32E29E7898C00EC7E30 /* MainMenu.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = MainMenu.xib; sourceTree = ""; }; + 69D2C33029E789AF00EC7E30 /* ru */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ru; path = ru.lproj/Localizable.strings; sourceTree = ""; }; + 69D2C33729E78DF400EC7E30 /* Base */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = Base; path = Base.lproj/Localizable.stringsdict; sourceTree = ""; }; + 69D2C33929E78DFD00EC7E30 /* ru */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = ru; path = ru.lproj/Localizable.stringsdict; sourceTree = ""; }; + 69DA9A0E29E0BF5100A442DA /* NearDrop.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = NearDrop.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 69DA9A1129E0BF5100A442DA /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; + 69DA9A1329E0BF5200A442DA /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; + 69DA9A1829E0BF5200A442DA /* NearDrop.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = NearDrop.entitlements; sourceTree = ""; }; + 69DA9A1E29E0C0B300A442DA /* NearbyConnectionManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NearbyConnectionManager.swift; sourceTree = ""; }; + 69DA9A2029E0CC4E00A442DA /* Data+Extensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Data+Extensions.swift"; sourceTree = ""; }; + 69DA9A2229E17F0400A442DA /* InboundNearbyConnection.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InboundNearbyConnection.swift; sourceTree = ""; }; + 69DA9A2829E18CB500A442DA /* ukey.pb.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ukey.pb.swift; sourceTree = ""; }; + 69DA9A2929E18CB500A442DA /* wire_format.pb.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = wire_format.pb.swift; sourceTree = ""; }; + 69DA9A2A29E18CB500A442DA /* device_to_device_messages.pb.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = device_to_device_messages.pb.swift; sourceTree = ""; }; + 69DA9A2B29E18CB500A442DA /* offline_wire_formats.pb.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = offline_wire_formats.pb.swift; sourceTree = ""; }; + 69DA9A2C29E18CB500A442DA /* securegcm.pb.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = securegcm.pb.swift; sourceTree = ""; }; + 69DA9A2D29E18CB500A442DA /* securemessage.pb.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = securemessage.pb.swift; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 69DA9A0B29E0BF5100A442DA /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 69DA9A3629E1994C00A442DA /* SwiftECC in Frameworks */, + 69DA9A2629E189EF00A442DA /* SwiftProtobuf in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 698DFAEC29E353220064F247 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 698DFAED29E353220064F247 /* UserNotifications.framework */, + 698DFAEF29E353220064F247 /* UserNotificationsUI.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; + 69DA9A0529E0BF5100A442DA = { + isa = PBXGroup; + children = ( + 69DA9A1029E0BF5100A442DA /* NearDrop */, + 698DFAEC29E353220064F247 /* Frameworks */, + 69DA9A0F29E0BF5100A442DA /* Products */, + ); + sourceTree = ""; + }; + 69DA9A0F29E0BF5100A442DA /* Products */ = { + isa = PBXGroup; + children = ( + 69DA9A0E29E0BF5100A442DA /* NearDrop.app */, + ); + name = Products; + sourceTree = ""; + }; + 69DA9A1029E0BF5100A442DA /* NearDrop */ = { + isa = PBXGroup; + children = ( + 69DA9A2729E18CB500A442DA /* Protobuf */, + 69DA9A1129E0BF5100A442DA /* AppDelegate.swift */, + 69DA9A1329E0BF5200A442DA /* Assets.xcassets */, + 69DA9A1E29E0C0B300A442DA /* NearbyConnectionManager.swift */, + 69D2C33629E78DF400EC7E30 /* Localizable.stringsdict */, + 69D2C32B29E77F2200EC7E30 /* Localizable.strings */, + 69DA9A2229E17F0400A442DA /* InboundNearbyConnection.swift */, + 698DFB0129E362140064F247 /* NDNotificationCenterHackery.h */, + 698DFB0229E362140064F247 /* NDNotificationCenterHackery.m */, + 698DFAE529E2F91A0064F247 /* NearbyConnection.swift */, + 69DA9A2029E0CC4E00A442DA /* Data+Extensions.swift */, + 69DA9A1829E0BF5200A442DA /* NearDrop.entitlements */, + 698DFB0029E362140064F247 /* NearDrop-Bridging-Header.h */, + 69D2C32E29E7898C00EC7E30 /* MainMenu.xib */, + ); + path = NearDrop; + sourceTree = ""; + }; + 69DA9A2729E18CB500A442DA /* Protobuf */ = { + isa = PBXGroup; + children = ( + 69DA9A2829E18CB500A442DA /* ukey.pb.swift */, + 69DA9A2929E18CB500A442DA /* wire_format.pb.swift */, + 69DA9A2A29E18CB500A442DA /* device_to_device_messages.pb.swift */, + 69DA9A2B29E18CB500A442DA /* offline_wire_formats.pb.swift */, + 69DA9A2C29E18CB500A442DA /* securegcm.pb.swift */, + 69DA9A2D29E18CB500A442DA /* securemessage.pb.swift */, + ); + path = Protobuf; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 69DA9A0D29E0BF5100A442DA /* NearDrop */ = { + isa = PBXNativeTarget; + buildConfigurationList = 69DA9A1B29E0BF5200A442DA /* Build configuration list for PBXNativeTarget "NearDrop" */; + buildPhases = ( + 69DA9A0A29E0BF5100A442DA /* Sources */, + 69DA9A0B29E0BF5100A442DA /* Frameworks */, + 69DA9A0C29E0BF5100A442DA /* Resources */, + 698DFAFF29E353220064F247 /* Embed Foundation Extensions */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = NearDrop; + packageProductDependencies = ( + 69DA9A2529E189EF00A442DA /* SwiftProtobuf */, + 69DA9A3529E1994C00A442DA /* SwiftECC */, + ); + productName = NearDrop; + productReference = 69DA9A0E29E0BF5100A442DA /* NearDrop.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 69DA9A0629E0BF5100A442DA /* Project object */ = { + isa = PBXProject; + attributes = { + BuildIndependentTargetsInParallel = 1; + LastSwiftUpdateCheck = 1430; + LastUpgradeCheck = 1430; + TargetAttributes = { + 69DA9A0D29E0BF5100A442DA = { + CreatedOnToolsVersion = 14.3; + LastSwiftMigration = 1430; + }; + }; + }; + buildConfigurationList = 69DA9A0929E0BF5100A442DA /* Build configuration list for PBXProject "NearDrop" */; + compatibilityVersion = "Xcode 14.0"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ru, + ); + mainGroup = 69DA9A0529E0BF5100A442DA; + packageReferences = ( + 69DA9A2429E189EF00A442DA /* XCRemoteSwiftPackageReference "swift-protobuf" */, + 69DA9A3429E1994C00A442DA /* XCRemoteSwiftPackageReference "SwiftECC" */, + ); + productRefGroup = 69DA9A0F29E0BF5100A442DA /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 69DA9A0D29E0BF5100A442DA /* NearDrop */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 69DA9A0C29E0BF5100A442DA /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 69DA9A1429E0BF5200A442DA /* Assets.xcassets in Resources */, + 69D2C33829E78DF400EC7E30 /* Localizable.stringsdict in Resources */, + 69D2C32D29E77F2200EC7E30 /* Localizable.strings in Resources */, + 69D2C32F29E7898C00EC7E30 /* MainMenu.xib in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 69DA9A0A29E0BF5100A442DA /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 69DA9A2E29E18CB500A442DA /* ukey.pb.swift in Sources */, + 698DFB0329E362140064F247 /* NDNotificationCenterHackery.m in Sources */, + 69DA9A2329E17F0400A442DA /* InboundNearbyConnection.swift in Sources */, + 69DA9A1F29E0C0B300A442DA /* NearbyConnectionManager.swift in Sources */, + 69DA9A3029E18CB500A442DA /* device_to_device_messages.pb.swift in Sources */, + 69DA9A3129E18CB500A442DA /* offline_wire_formats.pb.swift in Sources */, + 69DA9A1229E0BF5100A442DA /* AppDelegate.swift in Sources */, + 69DA9A2F29E18CB500A442DA /* wire_format.pb.swift in Sources */, + 69DA9A3329E18CB500A442DA /* securemessage.pb.swift in Sources */, + 69DA9A2129E0CC4E00A442DA /* Data+Extensions.swift in Sources */, + 69DA9A3229E18CB500A442DA /* securegcm.pb.swift in Sources */, + 698DFAE629E2F91A0064F247 /* NearbyConnection.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ + 69D2C32B29E77F2200EC7E30 /* Localizable.strings */ = { + isa = PBXVariantGroup; + children = ( + 69D2C32C29E77F2200EC7E30 /* Base */, + 69D2C33029E789AF00EC7E30 /* ru */, + ); + name = Localizable.strings; + sourceTree = ""; + }; + 69D2C33629E78DF400EC7E30 /* Localizable.stringsdict */ = { + isa = PBXVariantGroup; + children = ( + 69D2C33729E78DF400EC7E30 /* Base */, + 69D2C33929E78DFD00EC7E30 /* ru */, + ); + name = Localizable.stringsdict; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + 69DA9A1929E0BF5200A442DA /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MACOSX_DEPLOYMENT_TARGET = 13.3; + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + MTL_FAST_MATH = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = macosx; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + }; + name = Debug; + }; + 69DA9A1A29E0BF5200A442DA /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MACOSX_DEPLOYMENT_TARGET = 13.3; + MTL_ENABLE_DEBUG_INFO = NO; + MTL_FAST_MATH = YES; + SDKROOT = macosx; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + }; + name = Release; + }; + 69DA9A1C29E0BF5200A442DA /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_ENTITLEMENTS = NearDrop/NearDrop.entitlements; + CODE_SIGN_STYLE = Automatic; + COMBINE_HIDPI_IMAGES = YES; + CURRENT_PROJECT_VERSION = 1; + GENERATE_INFOPLIST_FILE = YES; + INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.utilities"; + INFOPLIST_KEY_LSUIElement = YES; + INFOPLIST_KEY_NSHumanReadableCopyright = ""; + INFOPLIST_KEY_NSMainNibFile = MainMenu; + INFOPLIST_KEY_NSPrincipalClass = NSApplication; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/../Frameworks", + ); + MACOSX_DEPLOYMENT_TARGET = 11.0; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = me.grishka.NearDrop; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_EMIT_LOC_STRINGS = YES; + SWIFT_OBJC_BRIDGING_HEADER = "NearDrop/NearDrop-Bridging-Header.h"; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; + }; + name = Debug; + }; + 69DA9A1D29E0BF5200A442DA /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_ENTITLEMENTS = NearDrop/NearDrop.entitlements; + CODE_SIGN_STYLE = Automatic; + COMBINE_HIDPI_IMAGES = YES; + CURRENT_PROJECT_VERSION = 1; + GENERATE_INFOPLIST_FILE = YES; + INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.utilities"; + INFOPLIST_KEY_LSUIElement = YES; + INFOPLIST_KEY_NSHumanReadableCopyright = ""; + INFOPLIST_KEY_NSMainNibFile = MainMenu; + INFOPLIST_KEY_NSPrincipalClass = NSApplication; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/../Frameworks", + ); + MACOSX_DEPLOYMENT_TARGET = 11.0; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = me.grishka.NearDrop; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_EMIT_LOC_STRINGS = YES; + SWIFT_OBJC_BRIDGING_HEADER = "NearDrop/NearDrop-Bridging-Header.h"; + SWIFT_VERSION = 5.0; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 69DA9A0929E0BF5100A442DA /* Build configuration list for PBXProject "NearDrop" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 69DA9A1929E0BF5200A442DA /* Debug */, + 69DA9A1A29E0BF5200A442DA /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 69DA9A1B29E0BF5200A442DA /* Build configuration list for PBXNativeTarget "NearDrop" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 69DA9A1C29E0BF5200A442DA /* Debug */, + 69DA9A1D29E0BF5200A442DA /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + +/* Begin XCRemoteSwiftPackageReference section */ + 69DA9A2429E189EF00A442DA /* XCRemoteSwiftPackageReference "swift-protobuf" */ = { + isa = XCRemoteSwiftPackageReference; + repositoryURL = "https://github.com/apple/swift-protobuf.git"; + requirement = { + kind = upToNextMajorVersion; + minimumVersion = 1.0.0; + }; + }; + 69DA9A3429E1994C00A442DA /* XCRemoteSwiftPackageReference "SwiftECC" */ = { + isa = XCRemoteSwiftPackageReference; + repositoryURL = "https://github.com/leif-ibsen/SwiftECC"; + requirement = { + kind = upToNextMajorVersion; + minimumVersion = 3.0.0; + }; + }; +/* End XCRemoteSwiftPackageReference section */ + +/* Begin XCSwiftPackageProductDependency section */ + 69DA9A2529E189EF00A442DA /* SwiftProtobuf */ = { + isa = XCSwiftPackageProductDependency; + package = 69DA9A2429E189EF00A442DA /* XCRemoteSwiftPackageReference "swift-protobuf" */; + productName = SwiftProtobuf; + }; + 69DA9A3529E1994C00A442DA /* SwiftECC */ = { + isa = XCSwiftPackageProductDependency; + package = 69DA9A3429E1994C00A442DA /* XCRemoteSwiftPackageReference "SwiftECC" */; + productName = SwiftECC; + }; +/* End XCSwiftPackageProductDependency section */ + }; + rootObject = 69DA9A0629E0BF5100A442DA /* Project object */; +} diff --git a/NearDrop.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/NearDrop.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..919434a --- /dev/null +++ b/NearDrop.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/NearDrop.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/NearDrop.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/NearDrop.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/NearDrop.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved b/NearDrop.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved new file mode 100644 index 0000000..12467f6 --- /dev/null +++ b/NearDrop.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved @@ -0,0 +1,41 @@ +{ + "pins" : [ + { + "identity" : "asn1", + "kind" : "remoteSourceControl", + "location" : "https://github.com/leif-ibsen/ASN1", + "state" : { + "revision" : "555922e06f1835863d4c0143eb00d0097bcfc707", + "version" : "2.0.3" + } + }, + { + "identity" : "bigint", + "kind" : "remoteSourceControl", + "location" : "https://github.com/leif-ibsen/BigInt", + "state" : { + "revision" : "47903c6b2dd2cb3b4484d4524676a2ca8723a871", + "version" : "1.9.0" + } + }, + { + "identity" : "swift-protobuf", + "kind" : "remoteSourceControl", + "location" : "https://github.com/apple/swift-protobuf.git", + "state" : { + "revision" : "0af9125c4eae12a4973fb66574c53a54962a9e1e", + "version" : "1.21.0" + } + }, + { + "identity" : "swiftecc", + "kind" : "remoteSourceControl", + "location" : "https://github.com/leif-ibsen/SwiftECC", + "state" : { + "revision" : "55493f0609f07b24bf6cd52b90898ed1cefb268e", + "version" : "3.5.3" + } + } + ], + "version" : 2 +} diff --git a/NearDrop.xcodeproj/xcshareddata/xcschemes/NearDrop.xcscheme b/NearDrop.xcodeproj/xcshareddata/xcschemes/NearDrop.xcscheme new file mode 100644 index 0000000..3a735a3 --- /dev/null +++ b/NearDrop.xcodeproj/xcshareddata/xcschemes/NearDrop.xcscheme @@ -0,0 +1,77 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/NearDrop/AppDelegate.swift b/NearDrop/AppDelegate.swift new file mode 100644 index 0000000..35e3cdc --- /dev/null +++ b/NearDrop/AppDelegate.swift @@ -0,0 +1,44 @@ +// +// AppDelegate.swift +// NearDrop +// +// Created by Grishka on 08.04.2023. +// + +import Cocoa +import UserNotifications + +@main +class AppDelegate: NSObject, NSApplicationDelegate{ + + private var connectionManager:NearbyConnectionManager? + private var statusItem:NSStatusItem? + + func applicationDidFinishLaunching(_ aNotification: Notification) { + let menu=NSMenu() + menu.addItem(withTitle: NSLocalizedString("VisibleToEveryone", value: "Visible to everyone", comment: ""), action: nil, keyEquivalent: "") + menu.addItem(withTitle: String(format: NSLocalizedString("DeviceName", value: "Device name: %@", comment: ""), arguments: [Host.current().localizedName!]), action: nil, keyEquivalent: "") + menu.addItem(NSMenuItem.separator()) + menu.addItem(withTitle: NSLocalizedString("Quit", value: "Quit NearDrop", comment: ""), action: #selector(NSApplication.terminate(_:)), keyEquivalent: "") + statusItem=NSStatusBar.system.statusItem(withLength: NSStatusItem.variableLength) + statusItem?.button?.image=NSImage(named: "MenuBarIcon") + statusItem?.menu=menu + + let nc=UNUserNotificationCenter.current() + nc.requestAuthorization(options: [.alert, .sound]) { granted, err in + } + let incomingTransfersCategory=NDNotificationCenterHackery.hackedNotificationCategory() + let errorsCategory=UNNotificationCategory(identifier: "ERRORS", actions: [], intentIdentifiers: []) + nc.setNotificationCategories([incomingTransfersCategory, errorsCategory]) + connectionManager=NearbyConnectionManager() + } + + func applicationWillTerminate(_ aNotification: Notification) { + UNUserNotificationCenter.current().removeAllDeliveredNotifications() + } + + func applicationSupportsSecureRestorableState(_ app: NSApplication) -> Bool { + return true + } +} + diff --git a/NearDrop/Assets.xcassets/AccentColor.colorset/Contents.json b/NearDrop/Assets.xcassets/AccentColor.colorset/Contents.json new file mode 100644 index 0000000..eb87897 --- /dev/null +++ b/NearDrop/Assets.xcassets/AccentColor.colorset/Contents.json @@ -0,0 +1,11 @@ +{ + "colors" : [ + { + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/NearDrop/Assets.xcassets/AppIcon.appiconset/1024.png b/NearDrop/Assets.xcassets/AppIcon.appiconset/1024.png new file mode 100644 index 0000000000000000000000000000000000000000..54f8023fbd3384350c61626c2955c63fb2358da4 GIT binary patch literal 372936 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 z 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 z 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
fc$)Sl<6GZMzUymAwj>ASMTlEA`H45 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�DBVYF?-o3H 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

`J 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≪$~j~kkg-ATcuoiObY))VuU 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

OzeW`%NJh%V!&Hk{n-}W;0 z3!~T#!p!^I?Rl>68EY~wVb~)KcQ!_IDLRxk+sdL(2$+yg-C8ZOcs0K*Lq)YyD(=C`!e1Stys zvN{`Gd-XMZB(BHZ1UcFH^WnesJ($#pz6d9^%9{)<-rPWVvCi}i*-|p~TtlRyhBxZ} zZS?e1e9MKea?blP)NU(p{oUp8>vi?`&LAPW^~?CsZImJ+x8AOvssnDz5ukQ%Tl;Bp zN3$_(N7zW6$d8!nZSW5%dI&s$Ny+Jf@}l};G=~`B<4a`I`$eqDISfot+*{& z`%M0nlSoHAoEApR&VE6k{wbDMWZ(9kHUtMOlFs?*M>9gt7td;L=E{vttf8)kAJ|%$ z4-;!MG;Bd`=}L;8`4@L*4{reNft;x8B+call^X^TVtvJvSoz1oHvb5t8?kV1PT1$~ zwG2E~RRYq*`O*KB=Y~gGRl1BQdZ98(OZs^aBOP6z(16EFFoF3$klzYr=nynD>>rNO z<1r(1ss#auU(z5$w?#8Mgf1;@-{~JdhvK{bp}(jD;EjL0@QLU8y}bmr4|E;EkCd)t z?sNxq4?es8`>m`{KSq*eZtutMdk;NH4xREh8KhrnTFeRpZn*M=%I3Ud&6Stl(|H`w z=f5?)9U>(s$6FISOjvt&Lz2l|`i&;>Bj5uQz{;nlBV|~=;7zu2jeK1Qx$#7A`dwNj z_$%;Cw#l)5@6)uc?xzKAB~d0uM^5fr>MF%>Jx-vN8>9Cx^;y#QB$n8YxQ(@fXpTQ` zE07zLo<^{ue9_OoO4;e4ksu$XL*IqQ?|Te9`5=db?qNR^Q}JId+*j40_6t72!o3Q& zC6hX1`qr>E<_I0Lnr*KKNpLW9CzYQLi z@J&+dE>iD{+^~|#I7P`^@VnSilzv|{_Xh{f!@@jIB-G-~g*&8sUL64bt!XW^Zjb-s zIiqynkfkI*xY2?*xuj;h9bQw$J907k;yPW^R;Vk5A=mS*Pj9^PT)^(Ld}YJS zbH!j`A2-8T>|(ZoCNFW-(L&0RYkPJ+r}AKv{uuC!`LGd0Dk zZ3` zbD*{wfAjrqcis)4;@6QX1{q0pq|}5*VcFe7PDBE7sf1z<)37D3@pIp`Rr}0GzY;&B zGOdcH^GXByG8r%4FI48~SG=gtTR!_J_uiu{fAvdBP2z9mH~>|MrgN8eJFNY$&~+4i zv5gT9{%s}ul>QTIO-p7(X(rT`jQ9nUbl#whH$W9O z*y7|jLLZ@rAj1i)fKG>K0yXvmUczH^Y9$-CA)QE5$@#V8UvzLs=yTL= zSW$!BnuaSJKQ!Fzmn`C4=vACakUl>j2)p}QA&tOA?9=^Og z9y{%?n66?Aa7Cn0llSTvB`rSbYXfcscxZ9F}I zW1&U!W>s(F6U~dR5`Bj%W`GXI3_U0NUnUIUkzH8M&dY1R~>k%H{iJPdc*CrCX zT~=g9dV)+-?vO}k=(}Nm`3E%#qQ~E3EH?~p=%qf#glfyu0yn2j)s-J+5ie>brD(4X z%-Lh}^cp3vj>;#&Rb{LR7{GDrtjY^^;|wJ3~(qB;oJoeT*xQwDETz1xj_3&90NSE9rJZ3aW+6^DF#wIU^GG|UJ~o{w|7B| zy#HgJ8v2;v5p4HMQ|bJb!bA?~FTKNQ=g^)y`=EI%YZPW!rUJ_j#Vzuda*V==Oi#liUG6_pb@-JD)k&d(FJvOx@4dlqc0!^9NV8 zMBIJLWSWXZ@JQhb=G{Frj67Ti^CGfr-9#R00QP;e8Nb@K+ueP{B3NF=2*?bsyd0D# ziJDwavkOM@V(ucWKjY*8ebF~~08e@)KB$hV73H-yb`$>&l4ok_%|^WP;LTS4w-{KS zcs3bBEf2E}_UTU3nsTb$f@=e&Yo7mZQ3*cd0kjKt(L_{aNCtZ_1j6j@FNI zJhg>4Y<^iZ;1c{|vkON;m1a}rK~Vea%9p3wKXPIo$TuRqZY+S)7qd{wDBr1{my@1* zxUcOKJ6myQKUw{#<$mAJM#+YLWKRUexI8XEPoqihiVri|~Hr;;I;ycLR^ zYDCO#uW}Ox&)<0seSP(%x)-!Z;Px)6Z;x1MX#eXxOR9~8ks{fvR;c9ju`(!NMTthi7Bp=%{E=ANT&uztv{hSh|7;XEl>Rmh$&Ukv+9!=>YbE zv=3~vIeqyqtVJdr%H_&KCqS;kqr~Wi4+<}KA3aj z$dqgx<0I;bMy@vFAL`DkBM|{Mt1hq_He{l^%j(>8V(9s{PJCjO;Y)=F3YL@#ClL3w zX2d}8vewPSEl*g^QhXI*qf@nyM=2-mC+U$i`QKBH+xNT}mcJxA z&2Zcr+w_F(zedbZ-kwwy5D3-$*5$HIoi_C~#sph8v;-h-#BTpp%XGt*LDvpPuN634=vS~PpeQ{ujG-?+j_76C$>F6Z@~UiW^?&tTveq1FhjKnSP&ynawzGIlMu=Xjf>NwV@_}mc&N+ijj>`hS-4(BWOG<wIEw5UZ+#4H-_6E3+;W^G9RK{6MIk?fZEkx$!|!%huMsK?>)yX0F(LamIz^xA%& zvC&hHh|GSW{tnpG#U-=7V271%P!~3V`a=VgzpET&k|M8 zsDU8x%NZ%uW|^;wRH~L)eVpHDAvkzJb7Z7e7xUf-zI}#;jELQeT%0iN_988Po4q4t z6DTx>P7M~s+#Yv*8KNLCx^(i2)elZaVBVhJo+0^CT32<6OOg7&E<`;FK-#vS+bxm9 zPcC~F9Q9AKIUgr?z_K34)^WSzEn4Fl$^TkpaMNmI4dw zK`?bD={EC7f-ajfM9G~Bu;kZig7HY|7Z9D*6wawAmGJ5M6R-)xKvq9O1<5OC2(!yy zBrMiR8S{kt4ysPzTwap-9eTsKTLYiRn^`swi5LZ2vQX^EpP<952@uT0v!Fh|_pt#= z5fFyr!$gs!2%xI%@@UnH^wWDck2=p)O9~0nn#Z{5zMftYYh(&T3du;^2@iKDM7gb zPtoG$46J{UO*yR+*E!cjT4t1lO4awuRf8u`~O-1U!6;zp>&+G+Y6KW6tf;- zc51SG*bnN*(Y2t_5hZ(PFiMf5ts1EI&>oXxcabYA^y~!_IMwtbY8X_pPNE2Kv3An3g3+=IQW5Vb!1UT=PlJ ze!fFf$xh?*NAeWSbOv8B6aoVKs$}eAo?9LPKYpo>R$XhKQ=~u*>TfHb$Mw`IUFj?B zw}R(<%Sk@>)D2(BUpivI!f_G5)(~W4-4k9(DzRVJ^@1b(RLkUtdEf936Rc| zEwDaR9?(ZWn^47%8vt9%13HLFAyUn;4e<#N?bHv4XN%cTj4mdRFbuQw*xlEmeiK7& ziu!$lT*H3O?2+arP4S(N4%B6)P4;b{san#@HN;!dFUp9wsL9`u z^_OLi{*|+vzIh~v<nBIpdZ2MklI*9~Z3Pz4epfH~$qKvaE;` zd~tfOvMQ|8=Cl5K8bFlwt|I?_%gmh%_5SX^CRn>r?lEQUcDY8}Az4VK9H!x&kos~u zK)ta>CLm6dm48&mu2aXz+WsT19j!5U0nl1#f9N~I=ULwxh>kn>*~I5Xe4}wmLY%1W zXxM4V^WIG$3m{}%CG*N7z_2$*e#7w|bSMU`=rL`_#j!a(_)dHC>ZbODNk*tV+b^Vg z=H`cd2gzUQ!H4jj7tT?iu2L5?it=9^2g&IT(RV%PpE23#5=Zb0b4< zO&DT#=M3QSL<0q3hwpy4R_b!>6`eEcJlL2;D;yh{L300tlf3qZjkbcJ_<5lMV^hiw zX*u1G^lOXXIe5u`A+a4?<9d--w0_?s@uhVyWUCJyh3pl7dY^5}imT{>LI@XK6t${I zl_!bU{yq{oCMLqfY#GJrc=DI;2MVCI{a8Z&aGS|0P7ZMFVK*M@VRpjsrJLC8bxcHf zWQreWmE`$uL3k^>zw0mk_Zz2-b=21RwSW6v6>wRI<0&5m z?N(}*2^a(qkBOX&LFsR`_PULA~U$eZtV`B>I5~&?c;z!lPFq zLipIwcjpXB_rVYQw^{;=IaQdYbkp;fYM>cD&@<3K4C7Xy49l)R7tGenElGdy(x*J6mS*HKIkvjd4!XD>>S3 z>eyEu>X~QTmxk{ba^fzI(Zafavm)(lo1I9nrp3Z(IoX?GO%Nx78xSHg*40$uoI0Wq zQ+E2xi@PKr0md$_>%911wc8$zL6FhSl-5Td0^nc*^37ji5W(KBm$~TH$unvTm$4*@(=WMEOW;&K}LgeCpM-N>G6@l zZP}ZzF~*;p7r{KuJ&=i$hAryM_1{O4ZRX$jfAqwUxx$SLA7Nw$Ntz?;Uik-#PgF#* zJC25@0>9-t6_2hC>}>ACTKt!oN0vyAx+;qyrr|5j$30YS&Do1Cx+kh1C^%;sJplmy zz4|<>ZKVdC_c@igrnB1uC)B_o>@-sT~bWe>rZv+bo%3tIOIle4j(>ooIT}k_ls- zjA`I=V7@FyEvfVE*IOq&jO$mo@+M0oVoo`iq_Fu1ZcBCxGAv(bv9lPVBOh%|ed@36 z?z9&}Q_{+N;p86qdc*cLa=28;Gh?RQV_(#&=CcWo%0x7wSRt~-?<8*OWD6`pxb;da zH6O@7WuQ~?3j5vMEv0tO%NV%p&h@Q4fm%Hi?%{wm&rh(R%b8xMP03yM&eW40W1Wbp zL+T0bHr94vE8fDEhDl!J%!)C#<#7}l8k#z3+m2}V$2D8iNQP>m;D?T_CI-c;V1Mb& zVy9%UOM3slzl!I2C<1u0Mbz-Uu>kR6)OSHhv1LUAE7~jfE`j3HqGjR~i(e<~!5lBQ zSr@TK3itm@LzEAD>34Vb9=_ETK*p_&v!!@3FptiyU7lT%+6Z`wrte`V@MGRJ{*j3? zfbxZ+>c_y`=^;}00c-3-YL&sm7jD~o=onJGxa1JVTJI};Q(m_z3T)h9t*f9)G&4-%0yV&6K;&7D01i+Ebo2lc#t>`r0YmRYa&8_ z8T9=DMAdcwyvmzqV*h<_?g;~6-k_7Q#@I7$SyTN{m5d%}y-hxJXN*3|N-y_tgArgS zy6rJYFZ?+@Q@NyS_@mCHCif71yZztI?!RvvhFGC%^CX_#i_BBb?TFGvr7tcl#m`e< zN75!w)3(Q2@b#SV(bbz9v#*(Uaz@J}*2koTj(RG5UoSaa?7c>EkZ>ObcQpzQDStcY z6gCa~ASb&acNCu#QE!=%vP3UrHial2_6)3fxHdNnHe6Mef(G^Gv{usVu;uveo@odo zhSq9#SE0yVkE7%Dk=#WRbP47%>W6exvmMpPWe!I?VV>-3rILS@}90K z3F)q{piJA*a0B6#nEU=(@38%6r~ADlRXF&xW^lpDEoa3YhoILvsms6mgzRh~;hmhU z6b0J70?)fV2Whu#oM+MLWvSHw+b;9o<|%S@hC6<4mjk%GQvQTH4ZmRJcnXM0=JiR> z{8%9e*oPi`)3W%c&7);NLQ<3*!{Jsy`5E=`?E}QD_^tVlcu2I^yBlffko>U(;-<%7 z4>S4ERs0Ew6PZ73GK$DF2Ci2lz`xlIS==-93^cl-t;=erYBxLUve~&uWatcYa&Y&W zuI0va5Z!VYa~8mDhQNg24ic~IDDbM7b9%Dts%Nd=ZeHbq*-4-L2U+w>8QfVIaQYGZ z_p?`RAABQ}Fz@FvEgNU9z^UA$qKH-INA(cL?j{WQRjDz-1&FEXZ1mo{z7^H~=OV2)vCnjrU?cc@kXnk-lcrH(;-Au6CP^HDf!3t=)zWm$zs8wc z2d=k^pP%5xpOEN|%ZDTDDR&C)Gxv@Rk;7S6Mj;|WtDC`O5eH+kAv|SAJU2a1P@f%= ze-L1V%{`Ns(rr$GY2ym2!Xx6&+YXjT8mNA}&nf@mii4E>NJ{zt7O*~=RtqlmCDfNa z{~a-thg*!Sp>d0CVe6l#msA|W$cYc=CX!xq08X*#R{(sDJd9PZ--KXcVgV=-?NGwW;)mrI$}sea0kww#0GG#@cfpbXmln$C-E31AbXWfxT-Nk24gAdqL<6S#PEU?q|e z@aKiVgp8tFz)9eII^8b4cTEU`LSv3uZWEnF$!j0o;$-u0lqY|pyqt`%u@QrQB{!V$ z@nhge*M?M!AeND1SyC#F=Vrn{r;00c7gJUf2OiZYm}TnJ)aM2Z%|^YT&O3(V&W&|Z zC!W;Z@GGAxC1}nI5}Hc3>5`ZGZ$nD*CG@6$ivFGGKyU#E?|*To{PN%0Vy~*AqHNg9 z^UH;s(?U;pTF?N%>nSNX?5d#-3c+9%E{)q@yM zFUzz1-0OpRT74xwAf$3y*aOt5Qy%L}3h5~ov-n$erCAuG`@G(2{l~cIO;eTfvKmnT zzt{CN^1&)d^|t|rK(5IXyeuKMD5ZU5#9q@+_ZAGV()}ZIENQEYPa$&M+e67L#j$x{ z{$yY4(SwvfM4I-J~Pkcf|PBa^1=rP0*;x&>Di`|t8CdtD-Bcn4%xHdafqXIi}cZliaTaimn#Y}8Un+& z=Eo;<&N(rWNTD^QhDwd^g-J8+{Kv>tjqqs^=TkC{lKNVcLhytTXCluH5F{*>biOLW z9hq@Am+pTsQC4(Jq=}HjZM$5|0nLOqe@6%ZDmSEn{6Sv$p)+}irOr#g6CnDhO=4_6 z5eummBiI3!H)}e2C&2oTzRd|9JjZ8CkS75h)T=h~0KWb^!6U?1BzVVSw2WDd7%_7N zj8$a)?b!8(JbHQxEU*ENR7Pqy@@ez@zQJCo=Hk*M@zJeQfi=yx+3U&^Vgb{bo$gJR z3&;iYg#7$Jp$*$A|1hXa!}0pnvV~;g#Y48)+N1dPBJG!l_i|-86Yg4we0ID0cl}7p z#bWhf_d1FDM$VN-5k}L}SCgHN*2hS3J(Z5`N_7#?b`9h^ zF||_L@;UFYS*E%!gvl{1=FIz0)wBdERGwI(5@bDujMX@q7L#8ni&?|8zn zCigA{FW~#$5Su&cev~@Aty0U__#UFxz^7Y*+ZBcjO!(q|TT2)lHB1h}?pn!XUTEUZ zu1N`G`R;Yyvj-=tT}d@3Z~-$aJ=5(HI$@@`{tHHhgt{}1rZD>5nXn(zgLlGW>AkyW z4POTTt14Qb(F+;+=qPXLse~mR94e`cY5q{hlnZ<;mesZJ9}{4gW681?~goB`n>9_cEgK7Z-(cKW`lRrKvqdokL6h>hUOB8 z+;i+EI0xWpSc$XxOpUTnqXfX~?^xFl9+MIwNj*#do>SvE9@(h^!i@(%kgMzr2_||R z-oxI_<^~@ink#ZV&U-|$^V%4 z-DKfG=NAaM*gH$-7J^~!(tkuY-(u*~C%22IdF3DfjNli_l2ITRo2AOf;e8(UjCiu# z_y;!}Um))i@i`N_CNSYMDPl-r3(ApPu`9lQ;7;~LDXSwX9@Ap&!&{(WzO(E&`Fij5 zF|`}o;C4>x#mrjwTBf6L&V?1G}%|EM3H&< zJGQ{rQ>V929h=)Pa=J^PN#l>YG~14F)wqb>Rv`RwByJ>9^EhbVlcI2T!X^ zbiLqw3$&Fs^}hMHo7fhz(9pJySZt%&99jcs8rRfsWZRjZ?lnHRY$gtEHIE+n%%JIM zQd^yUYa_J+LvZq+3O&ZVPC2j2(&@!mxBIGrf{Gb~H~+O`>qGkNLJcMw{L1kGXsq%EO1!S+4Wi5u;^1GjBhQ)vZq?jzzs};r*>l$q_n%=^OT3Zfz`- zEOn|%$On_eiMFa+FQ-DlgMA`{Ge#z0UbPT%-cScImAntM&&i)7guJ0a(%i`hMzx`)*E!_N>`S zl5o6s&kKiY+!?a4eZRgPFAq6+<%pF(FP}ftt?@n-Sva#flou4BkrNN;=ibn_hO1^! zLibWw&qb(bOABGgG~fD&*7-Fs@YgcL1n`SBTD-ruEoAt$c72ht3yp7WG(cwp0E5U9 ztvMD%XgL4PAiFThBGtj5+=EI+UKxw4kDf4GTWyx;P=DUKGh!oUD$lngd400k9+IAP zV4tp(ap#Yfe!X36fT4bfd`)uCB~^!;?oZ7XwBcIM18jB`=V1Kw25?iI;$k8ZD$cC_M@K4oWs6LRtr>%0C6)gZOIAkmqSt>bN&#i2(Pj+jOL6 zbzm*XhKT>r%=Pe?-sqZ(|Eyq#EZyz>W_A4^{xZ?)g;0B@Kg85rjLaR zpp4OxfA%il!kxQvEL}6v?a@aCNp^roZ2v+7@UzCyMXA*Cao5gQ**OP8J-@d7b4v;~ z<3h^ zHqgoZ8Pl)p+$nvC8&WZHwOa@G@@rOE)`g>oU6-V`j15>tr2YO{EsY<&ogC(#s)zey zdA+S+4_1}Sk1&2RR^-UQg8l;Ew2xGGf)+flda)4AmN)QJaO~vJ(3ijRGNcu+6VNYp zePqF@P`RBeGh7H6fl^G2s{ez)e7IT}q%F*5*%GbO5Hiu@XMg~2qZ_DWd+lUR-QfLr z>XEhPgDDL4Tx3RTWeI)e7)dK<*#D>->G)3{A9Y)wa7~4@W2;_kF5>4jRU;Pax-(VV zeh5fnV-!%g~de5 z=W2$lkQqp<5fuO~wJkju<&x$}`sg5|yv?w6$r}tcUNCy8@N5)>n8gQPAM<3n2eKc# zP*B><_0}wwv-N(86Mf&Bmxr)R81iSdYw*x4S_zl5Iad$g)_kMBHS`k9_Jf@9w1Vs4)^Sf-oqK)vl(xe?=*yCi>&>XMH`oo!4)B>j?m+B^{Bvu3~jeN*cc|YfAyVY?zUVFa0NRf_M;n55tFxyN= z_Ge!%pP2qkr^haL*7NqCX8SZ>9T&hmroXKy$&hX>A*pHF5hiN~&*N@woyjnWj1u8a z<-P*&iV|cRF+-R+Im@FIcX-oPi~D;hmktlZ*YWm^%C#3~!Eswt^igKixp z$!H)aU-i0AS*|3rOt?iga#9tNF>M zS9iiS%y@bhvlCCLbEFgo#D*fLJ$;&$VX*dmA zF)Y~3zPGzXWX09zD~mX2llQ#=8KS2DLiJ6iq%Hw&rWvzZT{Sb%_qqDctyz*zPu?ym z^hUefD|Zh|m+A6u9{-H7Wz7c?Y+G)vZH57O`m_xwPn`Rl6TRcgD3O0N`JjI%Ctn#l z^w4tczI6}7X7xuojprY2J%+;Re5O7Noe*cyc9F?-Uk*F7<%t?O?RaQ1?B3dD&J}bR zCqX{f$I5^ZZo)PY{Y~t=Z|%N>=~_9z`BdA#JO>HH;gN87{LWj zbXTv-FM-dJz^`6Dvfjly04SnkgYyegm+8}e@wHfm1jKuT_{$KKe{ z=DaV~ffVoZb`~TY~#XQm351|9t3p)HxaCO!{BDe2{oA z^Pc=W#9~dpDVdKH9sA14aPdL@#% zVli+3pjVBLHWkH~TJ6H})FZ_`-%Hp7Iz*BvFZ_7oW(O=pg}jHL^#?XUL|`uQpLQeb zFsrEwFKuAr`nytoUlJa8pU?5#3-}(oVW(~TJOV-$*CpuZN>MPm6pKHp|LcqNwAT>9 zTyK(dbGj+z1^h&FPwP9@yuI!vw!FGVRu}i_HJkC^i>m;G#0Yu*{XoU#5w991798-l z$@tg9uqHYG9)L^ka_N|>@1vLpfT+N1Mt~)1TELm-zVRVG8s~+6b>L2S$)_2l9OG#J zY)P)BoAHy7aXb6)8l!-*HBbL<(_ac7ZLfoCllkO4S%hc#b4M**aH(ghix=*DP{1Za z>FJVQ1vZj)iH~XxTZGTd#66O9CcHf!p8KSZCiKWYWi6(hOuZVy-C#Gsm(%mN(-cM_ z4H~IelopJ3#c55H^nthk+GbScrrGDX+x9QN?!xnLl6|MDV!W=L5U0~+?Mn|dh*~@L zewS}*ys8V*Qj5fO3i(ksSykIt)_aU~<7t)4m~tW)IjBn+?AY)+7k2YwTq!Q%+GFW5 z5q;`J^8Bl#xv$PtC=}3wods$n@6{ZURJCw;UUEldOViq0=fVqRmK=YpYmYPEWHJHd zzQpnD$%T4MD=Ka=?V80rP>5Br4ZHg8WVQiny1Ku6v){@fc9Tujw0JpQvLvSfKG%0a zakB#AB8qdOC0Eb0CcxFtm!Rmg8I_t<-_6kTdQ4sd-gf2M!RXHQZ36voN%t-9aLQN^ zPH;m{P=0LDop3*{N!U|okDP|xyI)SsL-P|Y5*4U%tZBRb^Gb>L~1&YzY5kfSeB8g_s=CQa@`KpRi73@QNTN3 zlew)%r+4Sng(hFN;{wQ;gvzPyF-eWx>2dF;DOkrL4kUG-*dV0DaI7dNS*~aZWX!Le zZ@6*=J6%4wb;4D0QJOQ((^u?F>!l7)YkRbb9nu-homh!3pY#gZU zY)iOiI&HQTQFAt0YCT0RW4B$Z_I?|tnu1l+A=WOKg0sv@6;L(TvcQ}T}N6Z z>1Wg!eCV?_2K@O_mzx~hTgH{|dbtAgA?Fox5!XfM03GI0v}Py}93$&=X3_4w-nc|m zjeYD{ka@uhd=||+>9bxLf+^0t1w$AEe%XhX)9LYSxQ12hnq8SBBQ5z-A`b!LM zOhWp^_F`utd_@l}RD0R-`1LHf8&S)A5O0TEs&uZmP_S?^k{|anP}@gfYyi@((XRCs z1^PSIQa-+kG5REDs)Rh)7*0=m{X4tIY_aMoV1!uOG6WsMhQ!bPcS!bHNer5baK>YQr*99dw$ zS1J^H*1Xt!l3Ga0rk(zDbza!c>Wn$knjlt6FL2tKij#Nvx9m1cwEuX=w^Dcm!eR!l zRH)6yq0Q2vN;h<&dCShm>FjGEv3^pyowy`mU0QY9B$tUuA&vt?@5vY0q13>KjE8}X;I2l$6xAMC@xkA*EoN2?V1HR*h|V(Z6z#p|Sqgk2>^8?uAp?U*w7Pif_+ zv4nfMUnRKB+T>mh!tSK9DIR6V_WI6C!E;pP_C4TqVO^lAKaYn`-@Aqtr4N6016m~I z*^s;Hw;uo(QzGlHWKDb22lK$1?26krT2z-%!Mjk8=U`|TwDpd>Jx(AO+)dN^>A>bF zzU_y~;gQ7d2DN`~hLDk(RE%RJl}bsrIS+kO`H15oqv>5ceKqeQGTUmpHd_ryyraP{ zP!(pa+Cn7CwjH)p*<-eyD7U&5nq$@VRry(>(RNB#y-L2lqbW(_gg@H-8Dp(@cV**a zY$7M%R8hgcsNsIqClhAYfHarOL3#|-2jew02v_^N(q?badbdqEpvP7$cat+hKqjiv zL#LmkQZ+2O;t#p6I~H;b4=!t@yyo8&$Gi57CT^zZ7dcM1TlKcRvkg2SC2~o+%@i)q zyEWN0VkLE=39ZUFSlG84zsxo43g3nFv`=T#KXB*U?EM@>CM8ZajuW#d*;Y4`U-g1g zii8ZeouuyhOdkks&V~!NXY^awHWZO1OmNBeox!OEl_4TemyS{*gI2O|=jL;ffz+Bc zucK8F91*QavCUc_OjFNUvjuNHH|Dr4^*)i7?9#?7I?LGChKywCkfw*M8!nN%X!VKG zUZ-(1Z-Xq7Q&-+*%zRYM3wZLH?)p44p@|NVN;Y7KlBoFs7?D$BpFL4v1<3JrcejnN zPThy|IJg&P^@S$s+%C?~Os`c8H&d146L56=%nr@p|EHTN-n{Bx6o!=}z1Bc(c3zb5 zPrFkZLI(e0yVS4diUjA}%rjM!!FLk%5bVc>&aA`!txybaQV6s%ZAdP2;^DyU?x8Dmuy4lHs3y{5Gf}A4oJCCm(BU}dKsOSFq zKkD%R&w3jVDg$o3P(_wb& zMzwdh&;A>0sJ`tL+Vqf3Z+m~CZ7#M|^q1d-npNHN5CEwGFxvgFb*CM6_GOg1hZC%d z=$vNj9vkP9+!yF%RtpK?z#v2InLMTW0TS?HI>7IoxND5MpO$wY>E_lmCKdYSG65zf z-Y5SBTChDKDyK8df-DSN{*8g%jPFY;f{p{f`xHEX9+VdAMJg_m-?|6hPCUn$t~&S& z`vyO92H+JH-2#{9qX&8BkkdQK=sqs>abeCN@0$hiYg1eH zw_V?V|83O7S{GQn2?iR^g?aCB@_Poa!%A|5TK#?umk-y0Dmy`WMDm6wr@qc==BB5$ zQ%z2=&UpwTN+ew|Q8O!Lm=@Dqz%y~{nC=V=1pZ@>({75`CsV<=*VK(^cISOhp!vYT zUs$U#Me$%MHW))CA|-{o(=T-$)Ee4~UgTxtLw)lj8RP=S7O0EibQ{%7?=dw;(YVmP z&1~}elA^;2inf4T2@0okK){9^NQWy~f{m4=+-6xQmXjs%kp_pI{}!lz zb~r?zTL$UTym%}d%q7_+^RgNq8lsz)^ZN^4eVl)Mdo$2PY0UJBW&H!Uadi1*E4YD& zrEbgggL z$Gh(%fW7-aCV|9(HI?zNL#>}+@3L}+xq_^D!#+W8?pKYEY!P;T6`lYmP&y!Z{MsH6 zKYhNA6T(GK`|VIR5v1IMR79b#xo?E0u*gYo;c59ip_h8(i8y!ni(X{u!p3%`$z4Rq z{*q$0nMw(lzc>VBxM{&K1f;hfC4Jboi0o&l{$1I0KE_?4fe=>dlFs$3-^U!TKDkxY zJFD;u5cTV@j8Sv}AgX_-qc8ezS)|ivh?!m3s8liKn11BJFT}2GWOyg&s=w006VN@O z8#gVL4L`LV8zbw|kgW>5C-C=_EJ*`3h7bjmiPdTTq2 z=v88qZ>qyTI%@@!YL59Pw(unI_YpR3@k8J0Q(VN}1ars|sXQD_e|w3YZs`oJikM1Ut`!OgCA!Ez`f}k)(pm|bSR2zC^@+>Y@NX|0VCD{l_d@UX zSj;5H_=lpjYfPwG@Fb{|%hvjl`4d#_$*xq;>yB+Tr5lwGoW%u7S^A+*AFbG#7(FV0 z?EM?zlHR&nGB=ts99l5b1G#Cj+WSZ~$Ilho2XiTDcu)*X&lx&#Dimu^Rx%(vYRKP= zcmFMQB%-|#dX_cxw!klLOVE?eRzuisuI$SAHoMXl2xEAi!t2a2udfm{L%^6xsOp#Y1_m zFTW6hOe^sWv+K(`;3LiBP~*r=Bf$A5Koh5nrcGtl=>T;_z^3qox9#QkLw_b}qq1s0PAj~jGR(}$rAKT}a3jl1_MtqoLh;r)c3hX2DWg5PEBFRDU1-2j|eePN) z5h--CF^i)lN5#w~f!^T*V%(#kdrS;-8`taJmQndIw|D#`#||M1r)=lrwY^SV6PI$H zhrfIoa5>ue2>kLP@PbmlK``%dh(&|aD3B06EMToug}4Zch$d94+}01TK61U|kI|rf zly;tG58N0>d0jyt4yDB1DuId})|}m4f0yn1iap`fYAb6i>FCW2vO((XxV291NEV|$ zU^xc=v^T_?{-S@%<8xs}wJ=sK1xv%S_LtM!Ps`6m&ekKJ1H)G%zMYnmvlh=hsq4=0 zF%eDPH`0P8_a zVe78>Dly6Z-7rIHE|&MEiC*C1j7z=(;35~!>^PVflU1zOo+wI}C#gqgyU%$+kb@L+ z==N?t^~Tm{Ena`8@1#-S&8s2FIVPy^?=mWY_~djz7y{;Bx`N*8~emp**dzt;J$ZtlQ`87BKV zs6e0N_1=ylY9J}RT(|0k1~|ZW*8W3ks)go{WkcR)(iUT#jC#3L6*9dv-@vpU?Qi0u zpYhK{3%*|unNJo{4rq>*69&A_STo&>QB)45rs-hYPmRDt{pn+^3On1jw$UORE_5{T z0vJ1gCRsnJ=AFSt3+(p`pA34HDhaRypuP|KW(_(6Gudf3-?E&`vHXy}=kQKlAW@>x zwNr5%^7d1d%BHeVwvmj_Yg&xw?F$i>NKQ_^qme-e(~glV zs8=+Zhcq`-fR2KtX6q8CqqYX=klBoXz#T@P^LeSe*?G_v=kQ(sg~2xOnZ`q?vONy~ zPoL?emoF)28O8(n2K@P^^g19g9VZi&NUu62%;0q0TaCjG{nb+Rde&JC=WfAsRL8aR zDEv&2l%J%+Fg|vghCd%%Bo3s#R|wm}T%Nsu$2*Q|xsQTY5_{ag*jj~de8Unz@J@eN zeD&4VN7eP>;}Z6dFzuy;AK5eRh;^<;+ClqI;&5`Q-xl@ON2PY-iPKK#L+(E zCq1&Vg^D^F;FpoI=cZMP>89t2-^#azgVQ(J{$48h?1B~1`I1(VdE-62&h(r;@)^0K zu+5i>)D1f#7A&<_Uz0ABJMjE(FrYAaEqOKg$;USOv5qjUq;*G6KIFK~QZ#&JZ%zd3 zc(QFOgmvmDjZPd((!rY*SfqG&_C8vw%9;{cQcxY&i`VZ0#uH1`K(f123D@ zSU*TWMyawyPk_W8Ja4$K@u1W5x0D8M(jx$wrwy-f8nZp|y3uOJ%vo>#Z@7jl*4E@u zjQ^%ae5j#^sK|o98~olP#$jY6J1K}OaFp0POY;enpG*O0n|5pvWEYc;;)@&!CC$3FlcJAlH2}AT3BYju~zuY7jt(+ zk7Qdlu4(GF0EHbwy=j=#5;;&j*AZmIFU zG3AMu=6qv%-K+Wac@O(JM(;Q!%2$rj)s;FQEWx_Ba;hU1{Qo9b7wK1H z4j2GNrA?y7{o<^@zjmIc>1FpXrlY4rGHyLbw-5$8Qt&b8niEt9v@EyfO<8f^!DMwGSraUX2%i%c_z(-It(>e|lNmN4hbi1yxN zkp;hug$61JLG+X-`goj{(IhA&%PaD^|0_;N?v+bjl5F7i*Rmq>o}1isc6RtQJs3OP zK#lrR-+Jn$PE zOF%KonqGWo^kj)S)CriO$+~FojQk;X$;r+iV_IAu?;_8KoBZ-Ee)X%wGbhi`N{y<5 zC9Xy799b3{iypbM6BPmf9kRpS4_5a5pf3)Ipp(Osw1q`ABl6d8$!Wq%Kv_iS6WAh` zGymB$_IdvVNKF4+f~^|@UNLk_O7|$;6lVNM0Mu$1ntBGB84rnS5!&4@iXZt;9y_q_Yykro24pw5qbX(8_D5Ju4YoDS#mUqxks7$4_=wcn;~CxbKx z*r63|*n<7_CvFK0##gbAklX|%zwl>C6l4NK8CY+M3sdr#LR%wh^mx3j=u z>#;<4y}qUxDtR%8=M5N^vpWp-e8*S|oz$BWN1p`yzATur07u?W$G|KiN^H!#(B_B- zMIvL>BMUc`a=XqtNVZbp;8D}{q*Cvmpyg^q0k#Tr^gTRtrS_3D|5pLY$*{EK5J~mQ zArW2cT<2ub0PFMiC!dGvpN40!ZX52_PagbB#MpXlx5?gpuzi94hIj%>B4ItXR!-4(>mph3FfmqejZmpAMKZ?AK{k(PWI&`28; zuA?P?!_n;Ln|k$}HN#SR9^xH?4QGpIBQqn z3o5$@$Ey*ym^;SjnD)j0*kN(}XAJPvV@|mL}=&glH3(Vf1 zcA5^~ZGKJ&&tm?Gdbp!!7V;H&zdZtdBfa~mk4DmK-lI6B zToA+!%;sajppZ8CR%ynh-@CNx1XXc73#|zW)}mrgQrO#Y+O+tMPbU?)h;um5{Of^$ zZfL`j2sV+3qG2&eN+0vz1Er__w=Y^~2&#g(-AwnYY9^d-@ ze%E^czk8jv&RKh(z1OpU&vTx&&$IXbZI0n2GGSA)M!qO~%)3A(me{VFsif|ugEKq2 z)Y1FEBO+b0wgX3NHVcn1(a2+zdM^iN+iF|L-k5x&|I*7QrgAM8c2?ld zU=#QqXVi)`^e^lnvr)Ty{;F?&HV&8rGREA7)T=TP+NvuNf0of=7c$eo{@5diGGaGD zT-TVxEwp#60Mn2$(?(AJM70%{84^2l_9+UjZC*dD?R=uMZtpfkpr}2za|nQgk4=nN zT`Ksvk?+gu_Q@mJ`tQT}F$xTf=vF&he68KCoXfpsZ~;K@Y}`fMzSdl{Gn- z3eR|pJIf6ff)-f_JUlhtxZ((W>$h&7d| zyS!NX%s#<(D`gZ?OCuC6M?f@FLLsd30CvC}G2ycBE;#phRLwDC9813TFe@e~dNnOQ zMVv>oI_k6cQM^iFd$#|H5KlIJE%WOd0|=_Dt~*TA)7Q1_L_c}Nt7tk)U{lOw6*>S9 zF3XPuD^372Ec}87mw7yd9~8Yee9_2AYa7=;-LSUg26171M;~!8;dq3w8>Pj_7ZUg% zYb~ijTJpapdom;10x$Bd3R`4ZfHI`QSpvFq-E*bGdi9B@qQ@6AUU$9_4t|MDaeEbJ z@xjqe=Qd?1!%$7VD`Q}>ll&)3;AaKgS3@a6CY3&ZzHqU-$8|{sMhveWR#o4cE}mWT zY{AnJIU3_Wc7s+5eh7SEwnfjbxpSot*h7TyQ|?iJw8j#| zGc%d9)$!i&C{G}I#}qDKB7OHD=SsIA>*={#)fjMr9_@HXTzIqm2-W+><4hHIncfhh zWb>H<_+D9Xk@t;nCKCuHr;_IZbsLb0l)j0Nu6f5Tf^Xp99R%HKv+#3F^sf!WHt!BF zA>Ovn)}%RG1x&0}`{UJv?Fi54Q(F%#8La(8hhC7 z6p+mYXu55S^-ruEv8JLqpts+~hHj5n9$2frRV{n1oGZQhmy2^z5IFlnwoyCKdp#aT*K2fa&BOBP_3vv zY2~vzIjJJ^3iz){z6z{W5&{}K?*;5I^XIU6q0|0;^UkXu;y1jl_%F_-JDtHqm%(Cv z1^N1^WCTUfRIQ5Y4=quIK78@?eVkuI94-2lBS(BvsCA=@B(MoTo`Vv-K)W8Zj0oCw zYy-E@7mfNOdhN=W;2}ePKX>$KS$ZbE`rHq%k-^MVa^L%M(0QlF8N#PEay&!5i}_xu zJZOO)s@JyGDV=P3eL}eOC6ssauwOB6Q-Ja8s=e<+olZ$fH`7BIkzDsSf;j0yD=P@h zbyoCEfS;l7Y=v2H(}Hr=);v<&K96R@$%gt0=zl7InOkhMfy^pe=AU+6AaFFEERT3K zqZdA$iad!`-H0W=1sk!N(G!O8Xn$F!@rysvxh{4h1HWIqdw|+WQYq@sO1t^DUsq++VJ}Mt+jzk6R^o9&*zLOE95jPG7!wcI^kMOB=i{;Q}}K0dJln1%Um8bUTyO%#1NhfA=?i!Rz* zWEh{iP7`{@JFm#r<5!~6LWlQqO%lu9{5*rnH76k=S|y_p6rN~qMC>Pak5*6sQ$%4tw?&G}`cRQQbp zd&<`mu_z5#{e{!Zi#YV0&Xf(MFx0`srWxEA6Juq#x?^Imw=_G*LpT%0YtOwFYq9I! z%HFQ;@PzK}LZ0ibZKvsGrYuXfE z&*7~tpJG)i@HRMOEZz*amh}y;==7sGW0Np9jb^QG*VR1AAn7hLRCqUX6@5 z+;S+W9=YQnZsdTe#;Es?)4RYB7k}Uoi_bF77!w5fJ(+2c`Dbck2Xb~rx5!wrxdvDe=Ko) z8)BiM)SWjDY92wW-T%bThGuUQ#BJD4>u%u!k3VkcuH|&PjwC5UJ^UnXk`-O9K9h9Y zS~1-ok6}&=pOfWVb`vOi$GJ)eFpc5 zy~D<2VOmyu{OEb$bd*}Y0XV;ro>GacAEb6Pcus>mB{S>m`aZl@-9 z+`$o^5M+$k$)KAszX@&cvB?L|T8w*BPGo{@z7(-d9509eUTNJTI-XR4sv>1QXntpf zq)vDu$a9DvrMI9EhZCJ~V@`2F8OaZI?cw%+%T^3^sjq9oHgy2%rB?>CRNS5Z;_9@p z3k^AP`g%p-cL$QyPf@E!Fsk`0AW;zqlg5ovALwTG3THw35#=GrUsqNf3Edr!K+V?I z`a|*eq8%afIjP>x3KgjFVI#c1OZqIkdTC`Mf(S9vkR20&$XB3zfV+XgqGsFMl#_dU^Fw2ff<+hCojmP0yy3=G9ruBO2{E8O%y| zIt?TPiu0GWsa14IYi)P})3(8LL02XSy^kx74&IA8r$A^}9=FsM+lh~RkWZTrfm-phPlUF^rvRdQPAySvbrT5KhR%)^@fZXWcoc$e4i6X>Nt(z5?v zfa1f?J_`w{D~PsY9}}9900@W+6X7>stBeu%rrjFNUqo9$%l_~GfS%Zz(fgRrL@mjS ztY-o8U6Y5xlczs7mje_HO}vpNPD_f)=*rc|&6^}TW{<9FuCMG>KApQ_eNvO?Fq%U{m7w)?M-SP@us};#8PCq1Fa>M{;lZXjrzs17n-; z0D5J#cyEZ2RlQ-|S6Wpn4bVAWH`5TEEMC9O7efFE?)v-QdV>beGnNDfsih`T__^fA z&#O;gZ-^OO5i*xZ=oXY#r!icsRCj5vJdGKaN4nKI$&Q$5%_anxO9-g(ok+-R^Vbv1 zhMvaT)lA38U|jpRo#*vAX}o^cPi@d%AQ(Fm)u*Zj~FAdo$}^<1C!ifBt;hsH3_MN=Sf#S z<$blB-g@{%Ew@T_&lsDVzuXj286lsgt+D3+|JIVNoH5dvmGE(0s1*VPGXal{##a@( zZvGZ!6LvZJ(`<#UL;~Uxf0ZKC#IZ)^TRPfD^jo;rjN28h%(IOY-0WJ0ch)+cS;Evj zf&G&Q=p!A3U1(p`PmcZ(p#q%No>|Xfbf-0)l>nl!4|FV}EuaInr$y1m$Ab=i`Yj%X zJ=$7BN9;(0X^gMjSSW-)V(i=)di1w_GVD?ydSB-nUBh0Xc)wFCmyem%Z`(XyMUD~Xo$ za0-`Nf3p9XxXOWGt`T*SuWM$JlKHoZ6%_$?5(ze9hhl_h*4rR^3T_RY80`!;N`7Vx z69ZW6J9*8lx%GO6sAE7S`_Jf$g{D_AC1b+o_3edxcO*1pk(~R@Dxu%eqo(iCOw23s zOs#!z=-=LEjAw@VyW7tzueSSU&N(cJ#{E)Gh=T)V-`}p5noeoW89gMan5qH!!(yl6%~L0Pd7;CIA2c literal 0 HcmV?d00001 diff --git a/NearDrop/Assets.xcassets/AppIcon.appiconset/128.png b/NearDrop/Assets.xcassets/AppIcon.appiconset/128.png new file mode 100644 index 0000000000000000000000000000000000000000..d2158413750cd94da991bc8405146d7779ba01c9 GIT binary patch literal 13198 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 literal 0 HcmV?d00001 diff --git a/NearDrop/Assets.xcassets/AppIcon.appiconset/16.png b/NearDrop/Assets.xcassets/AppIcon.appiconset/16.png new file mode 100644 index 0000000000000000000000000000000000000000..b4a80273fd576aa24ede74d3a5d7e6b80eb398f1 GIT binary patch literal 1005 zcmVE_*(zH_iH%XIjF1TY^MKh~= zLCaZ2G!*pB#^-#sPgLW+vWJQJi-k zIe&Q{hTcTqC~N*bXj+5Qi?Wv7hO>2Oz1I^);zz0ycdIJA9D^qg%~w!AU+h_FpQAg7 zt;$zj!p<&q%K4^+Z&mAO-uhtzQvd(}32;bRa{vGf6951U69E94oEQKA0uo6?K~y-6 zrII^uQ$Y}gzrDUruoKCS^B{-{Q9w=2zep2=6w#sp1r|^cAp)Y{AwWTqXy}lVA3;Y2 zqNhVbLJE#eY-3+P@6Msv>pTi*SZTB~M>}U{&mQ>ClBSjbA^>_8*H#Kx;!$F#Ygl5` zRtf~%0-hMw@zhodkXUp`;Co_zyF-0#7T*=VC+cf6R9>~IY;~xw&EUJj5>dZ4%lvi+ z-`C-=@!ZSSnDl7ugS#c>p0+|^K;&@l2zSmw49#je9|JHnIwBibE$fO2BP_>g8CW0SqXTShx0-7I3rN&Ma7kFG$xdk zZZ>GYSpcB4UWZ)xn$oR0?X5*h)n7*%%wGT5#|JWUE@j=z{_3IN2%v$?98VQYrhC)No7)V2C3>pXxKtn?*SZjY5 zupA((efk(xE*H`CIi*pN6o(h2f>E}oLaCWXgPOH}yc>PFcVEf((Zt;j$Yl}z+r-#J bAwYisiF7vb>uM`q00000NkvXXu0mjfI@HKm literal 0 HcmV?d00001 diff --git a/NearDrop/Assets.xcassets/AppIcon.appiconset/256 1.png b/NearDrop/Assets.xcassets/AppIcon.appiconset/256 1.png new file mode 100644 index 0000000000000000000000000000000000000000..1d1bcc1f447de11489cedd2945ca3ba30f337484 GIT binary patch literal 37651 zcmd3Mg-;w#wDm5&xVyW<;_gzsNO9NV?(Po7U5dL?+}$beUTAS=@$dJ(T%(?fTJJDa2Wl<0b5di=Iirg0|H2?tk-xLTyfctOIcd4-aZxL)QDf!h^O;&*{0up7s=S34LToULut+kAgkqM(3b7UoL!vv$L zQs3@VQOd7_!=(iB`bV_?)3Qs zy~!eWq;~0TKZL*QhAzf7rEf(vyMOOl#gaLYt-|!IX6z;or9++3`YLL4u47$LEErWg zsbw%Y%j!1yTo&&5?aXTD#RN+IKTJSQUvyjn03@vc=|DhsE=)*YL_c@9}Q8 zkap*NtL~X|izNM9W?cq{ZSggXJRz!?gP*DB0G+s)U}^Yh=IB*q)Ndlk4}5B+SOg{{ zAV$Yg#R_#Tau$Py#lcSUF8lfK()TLs(QudSTlHgAYxQGC#Z!<_dH%^xb0nc=t*-jA z?l+>$Ql0GobIr(`s+5QY$EIF-j{C)Qr;;oRymShVukMlrAh;KGewi}s))-m#el}h zl&`j*5%kueLIZ#Y^jdh+8p=f*?_53O#4pH8MzFscQQ!FM^6|UH z^{8F$Ur|+WqNqA?9mDt=h$&&6pZjWG_k*v(Nw;rYXMd+k*=rHtT5(t8{O5C-XTYQQ z`r854yp1TScR=n$6AL%o0OJ)m!7xJXmBNFNrU;ySoVWWnW}U{fhA+cJ8Z`9;AeT-uv{wME)R&S@WClWxeYJKIi z`(L}A^U#@M*PR`@yRl;CA{r6Jv+|D0!gqZw%fYwK5By<<1vw1!lw&rki`rk^Vcca& z&pqemtOZ#OmmtN~DyzoSNj%%ct#GilID<+45~~;&p?}hg!qxiCYW=(2rvllD^`MPy zhgO-970?)vxs#$|ZU44=^{KRY(X*3z9(7t<86_ra7LqYsOYkLKsVC*(Z?}^Bln-?- zp{2p6%^lB!h1!lbnL1y}L+R;){n!fzQwm|9b}#<4lDFEsN_Gr0gsFaCEr&@)`~SgPLc z9ft|LJ1z?%pQv4@RORq}xc^q=0PHpEWo?0$>L;0Wz03b07vb8sJlX*hr@gw`(r=NC z?SLKCVu!G?U;(v8OW$7hV%xx<;(>Wy{V&HsJtO`>T*R@8$%5Pxg%kxrF^#L}ZXZi6fjl)&Zs>na1p)ml$uTt@~h zi^G$ORf3u_$MM2lf{GIi5t0FQn8DD{O9!ET`K5Y@#OmVkIrxI;6*l{Z10?#gUV=^IFyz^XIqyXVXfUU2Lmgj0|mSDGN;&-GWMyipk+Q-fL}@l_(CEBxuxUj3c-UwR3$HrmkrcPxq z15Zlt9bIy^>}LA+#z)!v2{b5ri>~(eHNRM&dzV&-zPVeKCG2*^GJ!%#Ked^o9JB^Y zHnq4^cUs?-+Jx+{JP!?NVJ=yqg0e(6@21I!7X_~8*|M4SVA$8O7w7)GVvCPvGFhgN zPS5reh;us4i@rs4X=XkDsNAs;d_I@__ja40zDm}sdN1*0s zhIbi6055z45p<3~d3C%4kq06y`VGCLQ`gg;FujwE>ry9*tjzuS!HP;YaCg^NRuG$}liVF<6Y^pp6|K(!?6j5tg$ogJr zo;!s<=w;9c+|-0(e^UVHtf^XPqP7zIaCxd6NTnu9dJU;g*>8L(ZedC3powDZF5LqH zMlW1=ZTxDCll)O{o4$fg$b`FPz{#KGM`+>RGyzJQ`-)|NfOXygD~aw2)XAIF=T>7H zSlh2CL$rixZ#qM4NMsMBw+3;f3?Y)ws6i8VJ)3C!zw}?mH+v&21>I*Bh3zBE&jMcU zbDD*JeQ>LO!3LZI?h5?iyqagCP7Ghwx%rZ#C=htGyOnC7zee{%?fZhXjNPL=N(sJH zp54R*fyGrWkK^a3*KNY~jc&k3nG87mm^S{OFf zFIJo=PZ6>)APZcQRiyl+1CW@TTV&R;uPu@mkl7(ysaFP})F7R;>oTRQw*!g>`S#!a z+EZ>SAi&{{3g?b1hUYuVEt7^?LFqT~sU?#WksAS>PCRYI0z=iL^9&BqA>0;H+p6pJD(%>V0W2M0{g+V`()sCcfQ2G8sFmfTgP8Ok> zv6#&G)f$R*uA~YTw?yA4Mu&TL@{1_-;>z)x#(O%ZrfMJx?gO1Q1rHhWZS)Jp3&Uo5 zndUstXH16}pl#fWx~7N?VB_WLlv_3fD$F&WXvLScOk}8!Zf8buHxshU~QN*S^ zR4t4CUk}RnlsQ|2RIDw8$fVi&(^N4V;#H(7P%G%BP(4Non+#qx!G%WUQT8c~a?bQ( zis!j)r8h)+ky4Ad?V5h^G9TOxsebp0T;);H16*IXKEAD9^-}6>L2e1L-YKKu$vrZU zOI)h$yR5%o&Nh^8#DPS-?HgYHP?kA&DDhaP+XPpd{2q*`r(2H)`_+`~zKBpjYv#54 zDN+n?tjwiIknXn+?=AOr3gLm*J6FWfCNpNAU+cNVS}gzNXF{0+HvaP&MtIBfw`ixl z4_1`k<~mtw+3G_{on>DLo<;tsC;UmXKt8w_;p+WZ{^KSTTBpZZfVf_qawMu(F`px_hSWc`!PLVDzd-Xsd7?QH+U zQTOTe^VLr~)~^aFWDy$>@JDpl<8QSsbZNBQ+&i7zWvWI3c$9jk=uFA_1b?7Rvx_@U zptMC={<~5Y-AY{z8;$@|N(;HE(|D!aWOw2~58=-R>iMHr?eFYg<8>JC`MCqYQ*^MN zry@M*n4@2I>=JA1!yXV6-6@pUxjmC2B|&V6W}26(Cvw_xYG*IS)!^8SEbJCr=Oagd!Nq zW6rz*4*v7U{rasxW7HSq1ZLSvv5cib9Yo7ec66DcLKD>owdppYO23%rpf5ohBp=b< zlk9UPZ@-_K3X~+AlMBCq8;Qr{ys72yu0G&f0hY5 zkzoVi#Cpe!@&jR-Rsw=Z*gv2d;R=)Aj3+&1AZqb(nJP0xYm_Uphj$R{Vb-;!fGdRSxK2 zF%o(fUFtqd<$n+S!>Pr(+5V>yAcA7dC9bd;y+$8peLId{Ub`o? zX~?-PH%F4LQx~Ujg04HWL1>9q5>;D72*Ht0O$ylG{2hV=Lk?Ym4wK!l6?Df3Fezv$ zj4I7ka8rwkM*-0$xzoW&UH5|OGJpI)&P8V)sLg+r`m4xTK<_`kxzj0ItP8JwhZd)3 zhPbyKSk?v^CtNH?FNT#m&t_jgQHbu-&cYw~%i~4@-ff$mdRBXnrg=APE8kyUZOSY2 zt_i@crhBNVoQvcAFi`q5J46~jq~;Pa%}38`1AVMz^3Yt=ExU8=gO^pH6s;}?Td5>mX9-`s zqoqxFkX^-KVmsSAD|1OkU2>z@Y`JpIOonBzmF^eH*>!Teh$kJ!|0&)Ri_)z~lig=m zTvL^7$H5#6sZ0_|8VxJeFvM9gSm5#A-LjXL>Fo7^auO!b;@9D1g~b~Wrnz) zqI*nyqh&j`14M*JGv%cuT)XDItkZO`F?vUXbWsn2qG(NGTnh`B`*dv)fR{=MYDEyq?IMQVrVBqcUOvF%H6=>*IBDgMqcN?eXwH`Yb5av_X}r$SbNhf!WK=q zJDfj_uX69oAl$<*!f?uOWZQeTdAu|THj4B&b&22}#jh98qB zjcE>9Ds4b6QLSF%P<%Y^rVsG&CQ*GZ5_z|Ic61d+ZFDcxQ@2Jo#7B<( zxge90kY1ZBQ~MvMlE`S>LeV1Dg!A^P*bBjzv5uk(S3#)Q`Z~5(e!K8)&SW~!y_0PBbh25BhKqA2owPVcUhseheUZv-3{yuZB1J6ko$AMA+|5Kdg#p0ub!@|Vc=j{QLU1MV+W zKc)E57^;VV1&wt;Ww27nSIDb2 z<@PRd>W5hy2&Gr<-XLBiYLq~w%osm#n*$1uj@6M$FVb!0%@4UA+l#=p;LJgZJ&hHB z?kkCp@%+v5`SF1t+#~k#QnzA8!M*Zq*PpJnq5{hAM!AD;q#^;U5hvr%rNpOWTk;yyq*i*UDaD zYfx^RLq=FApxlK$hwlU%>udqK)Lpg>>R(utMO#6q+Al`;Fj9#=74j|hvQcCs$RuOh z*9lbsv8lQH=u273kUlk`s@6TeD;m!6ENjb|PrX0~Q2iza`Ta}~jq>cBZ7OQ}dy{mU zRTui&e*tN#+f_uv)bgo;NDTcvd;H@Y3xCjS3e41WoHKUvHeM3TLLSI^U|e*Tz{Z$KL-H&eA|6^w zewjF2dzt~}Ni-s)ul6w)eQ)k=2JQ30aEHIiFX$oy;DjX8>r>cF&-8;#1ElKs8|y_S zs9Py-^Jq=Q(Z{j%W4wh;{tB46%Wg#PoUxAX$&P53$cZmet>)s3VrPwxzt~)yKRY&Ma?1dX;lewGh)^$FDwxHuw7A324?7qUE1Iny7XI?u&wiM! z)H~wBhdvnIR!gsC0Q`YmZc`<2SMREO*@oP{d$LGu&+0`fRIllEDb(;$I~VAJRx%SKuL2hGcOOa-VUq-&s1E&&?CK-m%mwPd34M2S=-N_Pk zkA??IhXMk}wCCz##ZV4LeW2>!4_J5&_BqT2W7rFBWdK?|WQ=mg+3Smp#4+}vw(~5Zn`CC1KdcXWqwtLm3c+kirv+q-`c{b-seI>pkmV9 zO!U1sfke^_?AqrhQz3PyQ<0IH6m26V>Ogil4Bg}_MqopkwSY5#_6#CeYeCtfo+gz? z-(s2aF!|!XjiJEWvB}I+!A<++o`U---CC`Wrm^I9G%U=zJpt6Cv7HiDeCb(}pG|{d zUHs3m52+^di=ZD%!ALhkcKUrQ>EUR2CtQ0@H}YHcgYVb+tVv#|GB7Ma{V2^%q`qtdvm%G20St60pfH!alAzy%tYym<0m2sYpfXxXmZtq}$rZX({XR&cNR9G51fa$UJG|cJ~ zocNIjy60SFbVU%C$?(Qo%B_EqJ(+w?j5$`=6h?}iL<)muft_q`>^+r} zQ^^6uod_(GYCm$CDFxp|`gG=;o^3juZ(SCvBk*E)C7U!S-ILF%u4#ys_uUI6XyJ&_ z(n7Ts%#YBj?HWLvQqTD=%f^V zCmKoyr5M}pLuH6+WB(n9`AFDHuVy$<{Yqe#Zv4cY!E)vVXJ2xvepPfqm&u0@U1cnv za7V3a-OtG|dTccDmi>sIUnp9Yuy#kC3j=tfKngx?!vHh%eut?V@^6bp%m>WJkUbJ8)}G!)^?$6cL

kADHF8f03a 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 w7C-mOaLC!pWLg&xUz=(aeER_G|D#psgD< literal 0 HcmV?d00001 diff --git a/NearDrop/Assets.xcassets/AppIcon.appiconset/256.png b/NearDrop/Assets.xcassets/AppIcon.appiconset/256.png new file mode 100644 index 0000000000000000000000000000000000000000..1d1bcc1f447de11489cedd2945ca3ba30f337484 GIT binary patch literal 37651 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

kADHF8f03a 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 w7C-mOaLC!pWLg&xUz=(aeER_G|D#psgD< literal 0 HcmV?d00001 diff --git a/NearDrop/Assets.xcassets/AppIcon.appiconset/32 1.png b/NearDrop/Assets.xcassets/AppIcon.appiconset/32 1.png new file mode 100644 index 0000000000000000000000000000000000000000..21f8b8fe43f2db276a199911dbd190f3dba99a17 GIT binary patch literal 2080 zcmV+*2;cXKP)E_*(zH_iH%XIjF1TY^MKh~= zLCaZ2G!*pB#^-#sPgLW+vWJQJi-k zIe&Q{hTcTqC~N*bXj+5Qi?Wv7hO>2Oz1I^);zz0ycdIJA9D^qg%~w!AU+h_FpQAg7 zt;$zj!p<&q%K4^+Z&mAO-uhtzQvd(}32;bRa{vGf6951U69E94oEQKA21Q9kK~z|U z<(GeqTvZjvKj*$Tv-4xyvhLEgsWuy|#>OT7g|yPRreG-&LkhJmTL?x;_(N2pNh|+? zF%ZSXKTPlkm`JJ8k`&V2Z2W@?g;JVm4A52@6@uNRw7a(3?#|AzX5gjpkBRv|ApJvETl9) zyVdlq{FPX57f!nk0;(BO7C;KH%cX>F00$ywCw(hC;H&A5R9sdc{_x9Y#lS>QPx4D* zg&oE+hPuGzmRp$LesTNoi-4vPFzVz!4Yjuiy=Yl5dAa|$WvawduFC=^Zxne3RLm-(y-qX!R1) zLfBN%P}wploZepM`=dS@I<%>1sO@*?xNVJL;!7pY?kIEi&N36Xl-N3KI_1-+>3De5 z=gggDwhT(lZ?+@W?gNpcs@T9#_265h1%`{lL$5Z#i*vzK<;R=**s;Dq7=g2~q75sB zUw)yFgMT&bdp*FWx#N_djg{EG-Y2wR15oRd0OSB@sHjtpz8mu3l;cM?SJ?R}A6y^b zemS7x!EbIWvvG~bd`+1+8*t!s2oA+>)uhbb7;ou$pY#0(|7cCDQu5*0a#`3_QX9A9# z4cRwV=J8_<1_YkFqsr)zVXkI*;DsfQf8a1hi4!!_f74i$Kk}0+OK5s_Km_WPks*&m z<5kwJGR(|7?)hzvGqV;vLA+$U)m9#Ue86yMyvoQmhM6mtJ^PpV%VmcYK#CF@7va)( zS5<&|I|6AF%2dE-hduW1uCS_XcxyW3YtJq*U2{l5;u1}li2+|fY}mi6!a&vV)=bEK z`9!m9D66=uAeXBB4zR${oMMALL7dV z0#>$O=kxr%RVqcpD`x`kdU6pBm5KZNx%oODtRj&@Q^|JR&Kyus3%jo`@PlntqR27% zX29MTY6KP@8mq8jwa=3~3cU7Slc(Nj0`T=4i+p~hNEkXM-wxROe2oD3&RCVteAMUZ zT?O_{F7e#kL2S|WNJ1i2oXQtRd>-9ep;mVsc)iYJzptZ4z$lMQ)u=a>J)270u-0eO z&H@0IPrOtI5yV#>omvES?AcV}hug|rn791l{jj4=wg9-ML#z-kIo`b( z^6c>jzdjxyesbO-I8`2>s`2uvfboq*My@S@!h5qJ2Tn9O`Hv`;_Y!%lJTkGw^jyTA zn@WTY3jyG@kDyfrE50|oC>En3Xz1db&43h5d~c=M9wzx>71g-mh#_uPz94CxCo_XK zU7UD^7+jwLqg;LB+RiGV=^Pk?QzX6FOq^h%DNX~%B|TkYx;iitgAj+{#WV%ffRXma zpg`zQ(=LNd650krKTc3d5GMgrn+hd~n($kzn;q}b_K`TysBt+}(gNTXFP$>g%Ez(;gl313 zW#+q6GS+{mu%d0L68G3#y>NSQ%x&0X#d-2qfR7*cmII$BD!VCgj11g64p!Rn;g8Gzw;2ZRU^m+{Dw(*LMF@>*wDA8u=qgmjFdz5Eueh zCf^?a+p<6tSODgLe-ih?R-N>m@QF{=W4S-0|NYX;V`<-?t@STz#6xw2qA}F~0000< KMNUMnLSTYSUi&Nn literal 0 HcmV?d00001 diff --git a/NearDrop/Assets.xcassets/AppIcon.appiconset/32.png b/NearDrop/Assets.xcassets/AppIcon.appiconset/32.png new file mode 100644 index 0000000000000000000000000000000000000000..21f8b8fe43f2db276a199911dbd190f3dba99a17 GIT binary patch literal 2080 zcmV+*2;cXKP)E_*(zH_iH%XIjF1TY^MKh~= zLCaZ2G!*pB#^-#sPgLW+vWJQJi-k zIe&Q{hTcTqC~N*bXj+5Qi?Wv7hO>2Oz1I^);zz0ycdIJA9D^qg%~w!AU+h_FpQAg7 zt;$zj!p<&q%K4^+Z&mAO-uhtzQvd(}32;bRa{vGf6951U69E94oEQKA21Q9kK~z|U z<(GeqTvZjvKj*$Tv-4xyvhLEgsWuy|#>OT7g|yPRreG-&LkhJmTL?x;_(N2pNh|+? zF%ZSXKTPlkm`JJ8k`&V2Z2W@?g;JVm4A52@6@uNRw7a(3?#|AzX5gjpkBRv|ApJvETl9) zyVdlq{FPX57f!nk0;(BO7C;KH%cX>F00$ywCw(hC;H&A5R9sdc{_x9Y#lS>QPx4D* zg&oE+hPuGzmRp$LesTNoi-4vPFzVz!4Yjuiy=Yl5dAa|$WvawduFC=^Zxne3RLm-(y-qX!R1) zLfBN%P}wploZepM`=dS@I<%>1sO@*?xNVJL;!7pY?kIEi&N36Xl-N3KI_1-+>3De5 z=gggDwhT(lZ?+@W?gNpcs@T9#_265h1%`{lL$5Z#i*vzK<;R=**s;Dq7=g2~q75sB zUw)yFgMT&bdp*FWx#N_djg{EG-Y2wR15oRd0OSB@sHjtpz8mu3l;cM?SJ?R}A6y^b zemS7x!EbIWvvG~bd`+1+8*t!s2oA+>)uhbb7;ou$pY#0(|7cCDQu5*0a#`3_QX9A9# z4cRwV=J8_<1_YkFqsr)zVXkI*;DsfQf8a1hi4!!_f74i$Kk}0+OK5s_Km_WPks*&m z<5kwJGR(|7?)hzvGqV;vLA+$U)m9#Ue86yMyvoQmhM6mtJ^PpV%VmcYK#CF@7va)( zS5<&|I|6AF%2dE-hduW1uCS_XcxyW3YtJq*U2{l5;u1}li2+|fY}mi6!a&vV)=bEK z`9!m9D66=uAeXBB4zR${oMMALL7dV z0#>$O=kxr%RVqcpD`x`kdU6pBm5KZNx%oODtRj&@Q^|JR&Kyus3%jo`@PlntqR27% zX29MTY6KP@8mq8jwa=3~3cU7Slc(Nj0`T=4i+p~hNEkXM-wxROe2oD3&RCVteAMUZ zT?O_{F7e#kL2S|WNJ1i2oXQtRd>-9ep;mVsc)iYJzptZ4z$lMQ)u=a>J)270u-0eO z&H@0IPrOtI5yV#>omvES?AcV}hug|rn791l{jj4=wg9-ML#z-kIo`b( z^6c>jzdjxyesbO-I8`2>s`2uvfboq*My@S@!h5qJ2Tn9O`Hv`;_Y!%lJTkGw^jyTA zn@WTY3jyG@kDyfrE50|oC>En3Xz1db&43h5d~c=M9wzx>71g-mh#_uPz94CxCo_XK zU7UD^7+jwLqg;LB+RiGV=^Pk?QzX6FOq^h%DNX~%B|TkYx;iitgAj+{#WV%ffRXma zpg`zQ(=LNd650krKTc3d5GMgrn+hd~n($kzn;q}b_K`TysBt+}(gNTXFP$>g%Ez(;gl313 zW#+q6GS+{mu%d0L68G3#y>NSQ%x&0X#d-2qfR7*cmII$BD!VCgj11g64p!Rn;g8Gzw;2ZRU^m+{Dw(*LMF@>*wDA8u=qgmjFdz5Eueh zCf^?a+p<6tSODgLe-ih?R-N>m@QF{=W4S-0|NYX;V`<-?t@STz#6xw2qA}F~0000< KMNUMnLSTYSUi&Nn literal 0 HcmV?d00001 diff --git a/NearDrop/Assets.xcassets/AppIcon.appiconset/512 1.png b/NearDrop/Assets.xcassets/AppIcon.appiconset/512 1.png new file mode 100644 index 0000000000000000000000000000000000000000..858de454af677b7de4d2f382d14eb8d391ade1cb GIT binary patch literal 114066 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 G;r|C~qYQ8W literal 0 HcmV?d00001 diff --git a/NearDrop/Assets.xcassets/AppIcon.appiconset/512.png b/NearDrop/Assets.xcassets/AppIcon.appiconset/512.png new file mode 100644 index 0000000000000000000000000000000000000000..858de454af677b7de4d2f382d14eb8d391ade1cb GIT binary patch literal 114066 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 G;r|C~qYQ8W literal 0 HcmV?d00001 diff --git a/NearDrop/Assets.xcassets/AppIcon.appiconset/64.png b/NearDrop/Assets.xcassets/AppIcon.appiconset/64.png new file mode 100644 index 0000000000000000000000000000000000000000..7b29321d20677a6db9cf26a827c6f8e6aba50c39 GIT binary patch literal 4946 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 QQvd(}07*qoM6N<$f}^aqzyJUM literal 0 HcmV?d00001 diff --git a/NearDrop/Assets.xcassets/AppIcon.appiconset/Contents.json b/NearDrop/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 0000000..f6b252f --- /dev/null +++ b/NearDrop/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,68 @@ +{ + "images" : [ + { + "filename" : "16.png", + "idiom" : "mac", + "scale" : "1x", + "size" : "16x16" + }, + { + "filename" : "32.png", + "idiom" : "mac", + "scale" : "2x", + "size" : "16x16" + }, + { + "filename" : "32 1.png", + "idiom" : "mac", + "scale" : "1x", + "size" : "32x32" + }, + { + "filename" : "64.png", + "idiom" : "mac", + "scale" : "2x", + "size" : "32x32" + }, + { + "filename" : "128.png", + "idiom" : "mac", + "scale" : "1x", + "size" : "128x128" + }, + { + "filename" : "256.png", + "idiom" : "mac", + "scale" : "2x", + "size" : "128x128" + }, + { + "filename" : "256 1.png", + "idiom" : "mac", + "scale" : "1x", + "size" : "256x256" + }, + { + "filename" : "512.png", + "idiom" : "mac", + "scale" : "2x", + "size" : "256x256" + }, + { + "filename" : "512 1.png", + "idiom" : "mac", + "scale" : "1x", + "size" : "512x512" + }, + { + "filename" : "1024.png", + "idiom" : "mac", + "scale" : "2x", + "size" : "512x512" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/NearDrop/Assets.xcassets/Contents.json b/NearDrop/Assets.xcassets/Contents.json new file mode 100644 index 0000000..73c0059 --- /dev/null +++ b/NearDrop/Assets.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/NearDrop/Assets.xcassets/MenuBarIcon.imageset/Contents.json b/NearDrop/Assets.xcassets/MenuBarIcon.imageset/Contents.json new file mode 100644 index 0000000..436623c --- /dev/null +++ b/NearDrop/Assets.xcassets/MenuBarIcon.imageset/Contents.json @@ -0,0 +1,25 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "NearbyShare.png", + "scale" : "1x" + }, + { + "idiom" : "universal", + "filename" : "NearbyShare@2x.png", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + }, + "properties" : { + "template-rendering-intent" : "template" + } +} \ No newline at end of file diff --git a/NearDrop/Assets.xcassets/MenuBarIcon.imageset/NearbyShare.png b/NearDrop/Assets.xcassets/MenuBarIcon.imageset/NearbyShare.png new file mode 100644 index 0000000000000000000000000000000000000000..fbac020a7caf4def52e3b779a5c1753f63cd3179 GIT binary patch literal 2043 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 literal 0 HcmV?d00001 diff --git a/NearDrop/Base.lproj/Localizable.strings b/NearDrop/Base.lproj/Localizable.strings new file mode 100644 index 0000000000000000000000000000000000000000..7a2a9e58859211f333fe8be20d25d8ff6b1eb522 GIT binary patch literal 1638 zcmchXL2rUU5QXRLuOOygJk;1@n1WxkkAR&;~4!>TkYNtr|Nzb7ZahN zYNeeRo&IBap(}jr{gs?&y}8pOI^hhJ*vZ`1t@74$OZHF5K~1(*k)4{mY%K6-`cJE( z8Vc~#>1Du=ShrUCuDafW`kWT;#ICtlb}}r97+Nmcf!bll(RkmtJ%jn>->B>h%v=SC literal 0 HcmV?d00001 diff --git a/NearDrop/Base.lproj/Localizable.stringsdict b/NearDrop/Base.lproj/Localizable.stringsdict new file mode 100644 index 0000000..57d2cd7 --- /dev/null +++ b/NearDrop/Base.lproj/Localizable.stringsdict @@ -0,0 +1,22 @@ + + + + + NFiles + + NSStringLocalizedFormatKey + %#@files@ + files + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + d + one + %d file + other + %d files + + + + diff --git a/NearDrop/Data+Extensions.swift b/NearDrop/Data+Extensions.swift new file mode 100644 index 0000000..94e3e18 --- /dev/null +++ b/NearDrop/Data+Extensions.swift @@ -0,0 +1,31 @@ +// +// Data+URLSafeBase64.swift +// NearDrop +// +// Created by Grishka on 08.04.2023. +// + +import Foundation +import CoreFoundation + +extension Data{ + func urlSafeBase64EncodedString() -> String { + return String(base64EncodedString().replacingOccurrences(of: "=", with: "").map { + if $0=="/"{ + return "_" + } else if $0=="+" { + return "-" + } else { + return $0 + } + }) + } + + static func randomData(length: Int) -> Data{ + var data=Data(count: length) + data.withUnsafeMutableBytes { + guard 0 == SecRandomCopyBytes(kSecRandomDefault, length, $0.baseAddress!) else { fatalError() } + } + return data + } +} diff --git a/NearDrop/GenerateProtobuf.sh b/NearDrop/GenerateProtobuf.sh new file mode 100755 index 0000000..964aa88 --- /dev/null +++ b/NearDrop/GenerateProtobuf.sh @@ -0,0 +1,3 @@ +#!/bin/bash + +ls ProtobufSource | xargs protoc --swift_out=Protobuf --proto_path=ProtobufSource diff --git a/NearDrop/InboundNearbyConnection.swift b/NearDrop/InboundNearbyConnection.swift new file mode 100644 index 0000000..5314b40 --- /dev/null +++ b/NearDrop/InboundNearbyConnection.swift @@ -0,0 +1,351 @@ +// +// InboundNearbyConnection.swift +// NearDrop +// +// Created by Grishka on 08.04.2023. +// + +import Foundation +import Network +import CryptoKit +import CommonCrypto +import System + +import SwiftECC +import BigInt + +class InboundNearbyConnection: NearbyConnection{ + + private var currentState:State = .initial + public var delegate:InboundNearbyConnectionDelegate? + private var cipherCommitment:Data? + + enum State{ + case initial, receivedConnectionRequest, sentUkeyServerInit, receivedUkeyClientFinish, sentConnectionResponse, sentPairedKeyResult, receivedPairedKeyResult, waitingForUserConsent, receivingFiles, disconnected + } + + override init(connection: NWConnection, id:String) { + super.init(connection: connection, id: id) + } + + override func handleConnectionClosure() { + super.handleConnectionClosure() + currentState = .disconnected + do{ + try deletePartiallyReceivedFiles() + }catch{ + print("Error deleting partially received files: \(error)") + } + DispatchQueue.main.async { + self.delegate?.connectionWasTerminated(connection: self, error: self.lastError) + } + } + + override internal func processReceivedFrame(frameData:Data){ + do{ + switch currentState { + case .initial: + let frame=try Location_Nearby_Connections_OfflineFrame(serializedData: frameData) + try processConnectionRequestFrame(frame) + case .receivedConnectionRequest: + let msg=try Securegcm_Ukey2Message(serializedData: frameData) + ukeyClientInitMsgData=frameData + try processUkey2ClientInit(msg) + case .sentUkeyServerInit: + let msg=try Securegcm_Ukey2Message(serializedData: frameData) + try processUkey2ClientFinish(msg, raw: frameData) + case .receivedUkeyClientFinish: + let frame=try Location_Nearby_Connections_OfflineFrame(serializedData: frameData) + try processConnectionResponseFrame(frame) + default: + let smsg=try Securemessage_SecureMessage(serializedData: frameData) + try decryptAndProcessReceivedSecureMessage(smsg) + } + }catch{ + lastError=error + print("Deserialization error: \(error)") + protocolError() + } + } + + override internal func processTransferSetupFrame(_ frame:Sharing_Nearby_Frame) throws{ + if frame.hasV1 && frame.v1.hasType, case .cancel = frame.v1.type { + print("Transfer canceled") + try sendDisconnectionAndDisconnect() + return + } + switch currentState{ + case .sentConnectionResponse: + try processPairedKeyEncryptionFrame(frame) + case .sentPairedKeyResult: + try processPairedKeyResultFrame(frame) + case .receivedPairedKeyResult: + try processIntroductionFrame(frame) + default: + print("Unexpected connection state in processTransferSetupFrame: \(currentState)") + print(frame) + } + } + + override func isServer() -> Bool { + return true + } + + override func processFileChunk(frame: Location_Nearby_Connections_PayloadTransferFrame) throws{ + let id=frame.payloadHeader.id + guard let fileInfo=transferredFiles[id] else { throw NearbyError.protocolError("File payload ID \(id) is not known") } + let currentOffset=fileInfo.bytesTransferred + guard frame.payloadChunk.offset==currentOffset else { throw NearbyError.protocolError("Invalid offset into file \(frame.payloadChunk.offset), expected \(currentOffset)") } + guard currentOffset+Int64(frame.payloadChunk.body.count)<=fileInfo.meta.size else { throw NearbyError.protocolError("Transferred file size exceeds previously specified value") } + if frame.payloadChunk.body.count>0{ + try fileInfo.fileHandle?.write(contentsOf: frame.payloadChunk.body) + transferredFiles[id]!.bytesTransferred+=Int64(frame.payloadChunk.body.count) + fileInfo.progress?.completedUnitCount=transferredFiles[id]!.bytesTransferred + }else if (frame.payloadChunk.flags & 1)==1{ + try fileInfo.fileHandle?.close() + transferredFiles[id]!.fileHandle=nil + fileInfo.progress?.unpublish() + transferredFiles.removeValue(forKey: id) + if transferredFiles.isEmpty{ + try sendDisconnectionAndDisconnect() + } + } + } + + private func processConnectionRequestFrame(_ frame:Location_Nearby_Connections_OfflineFrame) throws{ + guard frame.hasV1 && frame.v1.hasConnectionRequest && frame.v1.connectionRequest.hasEndpointInfo else { throw NearbyError.requiredFieldMissing } + guard case .connectionRequest = frame.v1.type else { throw NearbyError.protocolError("Unexpected frame type \(frame.v1.type)") } + let endpointInfo=frame.v1.connectionRequest.endpointInfo + guard endpointInfo.count>17 else { throw NearbyError.protocolError("Endpoint info too short") } + let deviceNameLength=Int(endpointInfo[17]) + guard endpointInfo.count>=deviceNameLength+18 else { throw NearbyError.protocolError("Endpoint info too short to contain the device name") } + guard let deviceName=String(data: endpointInfo[18..<(18+deviceNameLength)], encoding: .utf8) else { throw NearbyError.protocolError("Device name is not valid UTF-8") } + let rawDeviceType:Int=Int(endpointInfo[0] & 7) >> 1 + remoteDeviceInfo=RemoteDeviceInfo(name: deviceName, type: RemoteDeviceInfo.DeviceType.fromRawValue(value: rawDeviceType)) + currentState = .receivedConnectionRequest + } + + private func processUkey2ClientInit(_ msg:Securegcm_Ukey2Message) throws{ + guard msg.hasMessageType, msg.hasMessageData else { throw NearbyError.requiredFieldMissing } + guard case .clientInit = msg.messageType else{ + sendUkey2Alert(type: .badMessageType) + throw NearbyError.ukey2 + } + let clientInit:Securegcm_Ukey2ClientInit + do{ + clientInit=try Securegcm_Ukey2ClientInit(serializedData: msg.messageData) + }catch{ + sendUkey2Alert(type: .badMessageData) + throw NearbyError.ukey2 + } + guard clientInit.version==1 else{ + sendUkey2Alert(type: .badVersion) + throw NearbyError.ukey2 + } + guard clientInit.random.count==32 else{ + sendUkey2Alert(type: .badRandom) + throw NearbyError.ukey2 + } + var found=false + for commitment in clientInit.cipherCommitments{ + if case .p256Sha512 = commitment.handshakeCipher{ + found=true + cipherCommitment=commitment.commitment + break + } + } + guard found else{ + sendUkey2Alert(type: .badHandshakeCipher) + throw NearbyError.ukey2 + } + guard clientInit.nextProtocol=="AES_256_CBC-HMAC_SHA256" else{ + sendUkey2Alert(type: .badNextProtocol) + throw NearbyError.ukey2 + } + + let domain=Domain.instance(curve: .EC256r1) + let (pubKey, privKey)=domain.makeKeyPair() + publicKey=pubKey + privateKey=privKey + + var serverInit=Securegcm_Ukey2ServerInit() + serverInit.version=1 + serverInit.random=Data.randomData(length: 32) + serverInit.handshakeCipher = .p256Sha512 + + var pkey=Securemessage_GenericPublicKey() + pkey.type = .ecP256 + pkey.ecP256PublicKey=Securemessage_EcP256PublicKey() + pkey.ecP256PublicKey.x=Data(pubKey.w.x.asSignedBytes()) + pkey.ecP256PublicKey.y=Data(pubKey.w.y.asSignedBytes()) + serverInit.publicKey=try pkey.serializedData() + + var serverInitMsg=Securegcm_Ukey2Message() + serverInitMsg.messageType = .serverInit + serverInitMsg.messageData=try serverInit.serializedData() + let serverInitData=try serverInitMsg.serializedData() + ukeyServerInitMsgData=serverInitData + sendFrameAsync(serverInitData) + currentState = .sentUkeyServerInit + } + + private func processUkey2ClientFinish(_ msg:Securegcm_Ukey2Message, raw:Data) throws{ + guard msg.hasMessageType, msg.hasMessageData else { throw NearbyError.requiredFieldMissing } + guard case .clientFinish = msg.messageType else { throw NearbyError.ukey2 } + + var sha=SHA512() + sha.update(data: raw) + guard cipherCommitment==Data(sha.finalize()) else { throw NearbyError.ukey2 } + + let clientFinish=try Securegcm_Ukey2ClientFinished(serializedData: msg.messageData) + guard clientFinish.hasPublicKey else {throw NearbyError.requiredFieldMissing } + let clientKey=try Securemessage_GenericPublicKey(serializedData: clientFinish.publicKey) + + try finalizeKeyExchange(peerKey: clientKey) + + currentState = .receivedUkeyClientFinish + } + + private func processConnectionResponseFrame(_ frame:Location_Nearby_Connections_OfflineFrame) throws{ + guard frame.hasV1, frame.v1.hasType else { throw NearbyError.requiredFieldMissing } + if case .connectionResponse = frame.v1.type { + var resp=Location_Nearby_Connections_OfflineFrame() + resp.version = .v1 + resp.v1=Location_Nearby_Connections_V1Frame() + resp.v1.type = .connectionResponse + resp.v1.connectionResponse=Location_Nearby_Connections_ConnectionResponseFrame() + resp.v1.connectionResponse.response = .accept + resp.v1.connectionResponse.status=0 + resp.v1.connectionResponse.osInfo=Location_Nearby_Connections_OsInfo() + resp.v1.connectionResponse.osInfo.type = .apple + sendFrameAsync(try resp.serializedData()) + + encryptionDone=true + + var pairedEncryption=Sharing_Nearby_Frame() + pairedEncryption.version = .v1 + pairedEncryption.v1=Sharing_Nearby_V1Frame() + pairedEncryption.v1.type = .pairedKeyEncryption + pairedEncryption.v1.pairedKeyEncryption=Sharing_Nearby_PairedKeyEncryptionFrame() + // Presumably used for all the phone number stuff that no one needs anyway + pairedEncryption.v1.pairedKeyEncryption.secretIDHash=Data.randomData(length: 6) + pairedEncryption.v1.pairedKeyEncryption.signedData=Data.randomData(length: 72) + try sendTransferSetupFrame(pairedEncryption) + currentState = .sentConnectionResponse + } else { + print("Unhandled offline frame plaintext: \(frame)") + } + } + + private func processPairedKeyEncryptionFrame(_ frame:Sharing_Nearby_Frame) throws{ + guard frame.hasV1, frame.v1.hasPairedKeyEncryption else { throw NearbyError.requiredFieldMissing } + var pairedResult=Sharing_Nearby_Frame() + pairedResult.version = .v1 + pairedResult.v1=Sharing_Nearby_V1Frame() + pairedResult.v1.type = .pairedKeyResult + pairedResult.v1.pairedKeyResult=Sharing_Nearby_PairedKeyResultFrame() + pairedResult.v1.pairedKeyResult.status = .unable + try sendTransferSetupFrame(pairedResult) + currentState = .sentPairedKeyResult + } + + private func processPairedKeyResultFrame(_ frame:Sharing_Nearby_Frame) throws{ + guard frame.hasV1, frame.v1.hasPairedKeyResult else { throw NearbyError.requiredFieldMissing } + currentState = .receivedPairedKeyResult + } + + private func processIntroductionFrame(_ frame:Sharing_Nearby_Frame) throws{ + guard frame.hasV1, frame.v1.hasIntroduction else { throw NearbyError.requiredFieldMissing } + currentState = .waitingForUserConsent + let downloadsDirectory=(try FileManager.default.url(for: .downloadsDirectory, in: .userDomainMask, appropriateFor: nil, create: true)).resolvingSymlinksInPath() + for file in frame.v1.introduction.fileMetadata{ + var dest=downloadsDirectory.appendingPathComponent(file.name) + if FileManager.default.fileExists(atPath: dest.path){ + var counter=1 + var path:String + let ext=dest.pathExtension + let baseUrl=dest.deletingPathExtension() + repeat{ + path="\(baseUrl.path) (\(counter))" + if !ext.isEmpty{ + path+=".\(ext)" + } + counter+=1 + }while FileManager.default.fileExists(atPath: path) + dest=URL(fileURLWithPath: path) + } + let info=InternalFileInfo(meta: FileMetadata(name: file.name, size: file.size, mimeType: file.mimeType), + payloadID: file.payloadID, + destinationURL: dest) + transferredFiles[file.payloadID]=info + } + let metadata=TransferMetadata(files: transferredFiles.map({$0.value.meta})) + DispatchQueue.main.async { + self.delegate?.obtainUserConsent(for: metadata, from: self.remoteDeviceInfo!, connection: self) + } + } + + func submitUserConsent(accepted:Bool){ + DispatchQueue.global(qos: .utility).async { + if accepted{ + self.acceptTransfer() + }else{ + self.rejectTransfer() + } + } + } + + private func acceptTransfer(){ + do{ + for (id, file) in transferredFiles{ + FileManager.default.createFile(atPath: file.destinationURL.path, contents: nil) + let handle=try FileHandle(forWritingTo: file.destinationURL) + transferredFiles[id]!.fileHandle=handle + let progress=Progress() + progress.fileURL=file.destinationURL + progress.totalUnitCount=file.meta.size + progress.kind = .file + progress.isPausable=false + progress.publish() + transferredFiles[id]!.progress=progress + transferredFiles[id]!.created=true + } + + var frame=Sharing_Nearby_Frame() + frame.version = .v1 + frame.v1.type = .response + frame.v1.connectionResponse.status = .accept + currentState = .receivingFiles + try sendTransferSetupFrame(frame) + }catch{ + print("Error \(error)") + protocolError() + } + } + + private func rejectTransfer(){ + var frame=Sharing_Nearby_Frame() + frame.version = .v1 + frame.v1.type = .response + frame.v1.connectionResponse.status = .reject + do{ + try sendTransferSetupFrame(frame) + try sendDisconnectionAndDisconnect() + }catch{ + print("Error \(error)") + protocolError() + } + } + + private func deletePartiallyReceivedFiles() throws{ + for (_, file) in transferredFiles{ + guard file.created else { continue } + try FileManager.default.removeItem(at: file.destinationURL) + } + } +} + +protocol InboundNearbyConnectionDelegate{ + func obtainUserConsent(for transfer:TransferMetadata, from device:RemoteDeviceInfo, connection:InboundNearbyConnection) + func connectionWasTerminated(connection:InboundNearbyConnection, error:Error?) +} diff --git a/NearDrop/MainMenu.xib b/NearDrop/MainMenu.xib new file mode 100644 index 0000000..5e85612 --- /dev/null +++ b/NearDrop/MainMenu.xib @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/NearDrop/NDNotificationCenterHackery.h b/NearDrop/NDNotificationCenterHackery.h new file mode 100644 index 0000000..f108e91 --- /dev/null +++ b/NearDrop/NDNotificationCenterHackery.h @@ -0,0 +1,20 @@ +// +// NDNotificationCenterHackery.h +// NearDrop +// +// Created by Grishka on 10.04.2023. +// + +#import +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface NDNotificationCenterHackery : NSObject + ++ (UNNotificationCategory*)hackedNotificationCategory; ++ (void)removeDefaultAction:(UNMutableNotificationContent*) content; + +@end + +NS_ASSUME_NONNULL_END diff --git a/NearDrop/NDNotificationCenterHackery.m b/NearDrop/NDNotificationCenterHackery.m new file mode 100644 index 0000000..b9c2d0d --- /dev/null +++ b/NearDrop/NDNotificationCenterHackery.m @@ -0,0 +1,49 @@ +// +// NDNotificationCenterHackery.m +// NearDrop +// +// Created by Grishka on 10.04.2023. +// + +#import +#import +#import "NDNotificationCenterHackery.h" + +@interface UNMutableNotificationCategory : UNNotificationCategory +@property(copy) NSString *actionsMenuTitle; +@property(copy) UNNotificationAction *alternateAction; +@property(copy) NSArray *minimalActions; +@property unsigned long long backgroundStyle; +@property(copy) NSArray *actions; +@end + +@interface UNNotificationIcon : NSObject ++ (id)iconForApplicationIdentifier:(id)arg1; ++ (id)iconAtPath:(id)arg1; ++ (id)iconNamed:(id)arg1; +@end + +@interface UNMutableNotificationContent (NDPrivateAPIs) +@property BOOL hasDefaultAction; +@property(copy) NSString *defaultActionTitle; +@property(copy) NSString *header; +@property (assign,nonatomic) BOOL shouldDisplayActionsInline; +@property (assign,nonatomic) BOOL shouldShowSubordinateIcon; +@property (nonatomic,copy) NSString * accessoryImageName; +@property(copy) UNNotificationIcon *icon; +@end + +@implementation NDNotificationCenterHackery + ++ (UNNotificationCategory*)hackedNotificationCategory{ + UNNotificationAction *accept=[UNNotificationAction actionWithIdentifier:@"ACCEPT" title:NSLocalizedString(@"Accept", nil) options:0]; + UNNotificationAction *decline=[UNNotificationAction actionWithIdentifier:@"DECLINE" title:NSLocalizedString(@"Decline", nil) options:0]; + UNMutableNotificationCategory *category=[UNMutableNotificationCategory categoryWithIdentifier:@"INCOMING_TRANSFERS" actions:@[accept, decline] intentIdentifiers:@[] hiddenPreviewsBodyPlaceholder:@"" options: UNNotificationCategoryOptionCustomDismissAction]; + return category; +} + ++ (void)removeDefaultAction:(UNMutableNotificationContent*) content{ + content.hasDefaultAction=false; +} + +@end diff --git a/NearDrop/NearDrop-Bridging-Header.h b/NearDrop/NearDrop-Bridging-Header.h new file mode 100644 index 0000000..939f4a1 --- /dev/null +++ b/NearDrop/NearDrop-Bridging-Header.h @@ -0,0 +1,5 @@ +// +// Use this file to import your target's public headers that you would like to expose to Swift. +// + +#import "NDNotificationCenterHackery.h" diff --git a/NearDrop/NearDrop.entitlements b/NearDrop/NearDrop.entitlements new file mode 100644 index 0000000..0272206 --- /dev/null +++ b/NearDrop/NearDrop.entitlements @@ -0,0 +1,16 @@ + + + + + com.apple.security.app-sandbox + + com.apple.security.files.downloads.read-write + + com.apple.security.files.user-selected.read-only + + com.apple.security.network.client + + com.apple.security.network.server + + + diff --git a/NearDrop/NearbyConnection.swift b/NearDrop/NearbyConnection.swift new file mode 100644 index 0000000..2892b6e --- /dev/null +++ b/NearDrop/NearbyConnection.swift @@ -0,0 +1,458 @@ +// +// NearbyConnection.swift +// NearDrop +// +// Created by Grishka on 09.04.2023. +// + +import Foundation +import Network +import CommonCrypto +import CryptoKit +import System + +import SwiftECC +import BigInt + +class NearbyConnection{ + internal static let SANE_FRAME_LENGTH=5*1024*1024 + + internal let connection:NWConnection + internal var remoteDeviceInfo:RemoteDeviceInfo? + private var payloadBuffers:[Int64:NSMutableData]=[:] + internal var encryptionDone:Bool=false + internal var transferredFiles:[Int64:InternalFileInfo]=[:] + public let id:String + internal var lastError:Error? + private var connectionClosed:Bool=false + + // UKEY2-related state + internal var publicKey:ECPublicKey? + internal var privateKey:ECPrivateKey? + internal var ukeyClientInitMsgData:Data? + internal var ukeyServerInitMsgData:Data? + + // SecureMessage encryption keys + internal var decryptKey:[UInt8]? + internal var encryptKey:[UInt8]? + internal var recvHmacKey:SymmetricKey? + internal var sendHmacKey:SymmetricKey? + + // SecureMessage sequence numbers + private var serverSeq:Int32=0 + private var clientSeq:Int32=0 + + private(set) var pinCode:String? + + init(connection:NWConnection, id:String) { + self.connection=connection + self.id=id + } + + func start(){ + connection.stateUpdateHandler={state in + if case .ready = state { + self.receiveFrameAsync() + } else if case .failed(let err) = state { + self.lastError=err + print("Error opening socket: \(err)") + self.handleConnectionClosure() + } + } + connection.start(queue: .global(qos: .utility)) + } + + internal func handleConnectionClosure(){ + print("Connection closed") + } + + internal func protocolError(){ + disconnect() + } + + internal func processReceivedFrame(frameData:Data){ + fatalError() + } + + internal func processTransferSetupFrame(_ frame:Sharing_Nearby_Frame) throws{ + fatalError() + } + + internal func isServer() -> Bool{ + fatalError() + } + + internal func processFileChunk(frame:Location_Nearby_Connections_PayloadTransferFrame) throws{ + protocolError() + } + + private func receiveFrameAsync(){ + connection.receive(minimumIncompleteLength: 4, maximumLength: 4) { content, contentContext, isComplete, error in + if self.connectionClosed{ + return + } + if isComplete{ + self.handleConnectionClosure() + return + } + if !(error==nil){ + self.lastError=error + self.protocolError() + return + } + guard let content=content else { + assertionFailure() + return + } + let frameLength:UInt32=UInt32(content[0]) << 24 | UInt32(content[1]) << 16 | UInt32(content[2]) << 8 | UInt32(content[3]) + guard frameLength> 24), + UInt8(length >> 16), + UInt8(length >> 8), + UInt8(length) + ]) + lengthPrefixedData.append(frame) + connection.send(content: lengthPrefixedData, completion: .contentProcessed({ error in + + })) + } + + internal func encryptAndSendOfflineFrame(_ frame:Location_Nearby_Connections_OfflineFrame) throws{ + var d2dMsg=Securegcm_DeviceToDeviceMessage() + serverSeq+=1 + d2dMsg.sequenceNumber=serverSeq + d2dMsg.message=try frame.serializedData() + + let serializedMsg=[UInt8](try d2dMsg.serializedData()) + let iv=Data.randomData(length: 16) + var encryptedData=Data(count: serializedMsg.count+16) + var encryptedLength:size_t=0 + encryptedData.withUnsafeMutableBytes({ + let status=CCCrypt( + CCOperation(kCCEncrypt), + CCAlgorithm(kCCAlgorithmAES128), + CCOptions(kCCOptionPKCS7Padding), + encryptKey, kCCKeySizeAES256, + [UInt8](iv), + serializedMsg, serializedMsg.count, + $0.baseAddress, $0.count, + &encryptedLength + ) + guard status==kCCSuccess else { fatalError("CCCrypt error: \(status)") } + }) + + var hb=Securemessage_HeaderAndBody() + hb.body=encryptedData.prefix(encryptedLength) + hb.header=Securemessage_Header() + hb.header.encryptionScheme = .aes256Cbc + hb.header.signatureScheme = .hmacSha256 + hb.header.iv=iv + var md=Securegcm_GcmMetadata() + md.type = .deviceToDeviceMessage + md.version=1 + hb.header.publicMetadata=try md.serializedData() + + var smsg=Securemessage_SecureMessage() + smsg.headerAndBody=try hb.serializedData() + smsg.signature=Data(HMAC.authenticationCode(for: smsg.headerAndBody, using: sendHmacKey!)) + sendFrameAsync(try smsg.serializedData()) + } + + internal func sendTransferSetupFrame(_ frame:Sharing_Nearby_Frame) throws{ + var transfer=Location_Nearby_Connections_PayloadTransferFrame() + transfer.packetType = .data + transfer.payloadChunk.offset=0 + transfer.payloadChunk.flags=0 + transfer.payloadChunk.body=try frame.serializedData() + transfer.payloadHeader.id=Int64.random(in: Int64.min...Int64.max) + transfer.payloadHeader.type = .bytes + transfer.payloadHeader.totalSize=Int64(transfer.payloadChunk.body.count) + transfer.payloadHeader.isSensitive=false + + var wrapper=Location_Nearby_Connections_OfflineFrame() + wrapper.version = .v1 + wrapper.v1=Location_Nearby_Connections_V1Frame() + wrapper.v1.type = .payloadTransfer + wrapper.v1.payloadTransfer=transfer + try encryptAndSendOfflineFrame(wrapper) + + transfer.payloadChunk.flags=1 // .lastChunk + transfer.payloadChunk.offset=Int64(transfer.payloadChunk.body.count) + transfer.payloadChunk.clearBody() + wrapper.v1.payloadTransfer=transfer + try encryptAndSendOfflineFrame(wrapper) + } + + internal func decryptAndProcessReceivedSecureMessage(_ smsg:Securemessage_SecureMessage) throws{ + guard smsg.hasSignature, smsg.hasHeaderAndBody else { throw NearbyError.requiredFieldMissing } + let hmac=Data(HMAC.authenticationCode(for: smsg.headerAndBody, using: recvHmacKey!)) + guard hmac==smsg.signature else { throw NearbyError.protocolError("hmac!=signature") } + let headerAndBody=try Securemessage_HeaderAndBody(serializedData: smsg.headerAndBody) + var decryptedData=Data(count: headerAndBody.body.count) + + var decryptedLength:Int=0 + decryptedData.withUnsafeMutableBytes({ + let status=CCCrypt( + CCOperation(kCCDecrypt), + CCAlgorithm(kCCAlgorithmAES128), + CCOptions(kCCOptionPKCS7Padding), + decryptKey, kCCKeySizeAES256, + [UInt8](headerAndBody.header.iv), + [UInt8](headerAndBody.body), headerAndBody.body.count, + $0.baseAddress, $0.count, + &decryptedLength + ) + guard status==kCCSuccess else { fatalError("CCCrypt error: \(status)") } + }) + decryptedData=decryptedData.prefix(decryptedLength) + let d2dMsg=try Securegcm_DeviceToDeviceMessage(serializedData: decryptedData) + guard d2dMsg.hasMessage, d2dMsg.hasSequenceNumber else { throw NearbyError.requiredFieldMissing } + clientSeq+=1 + guard d2dMsg.sequenceNumber==clientSeq else { throw NearbyError.protocolError("Wrong sequence number. Expected \(clientSeq), got \(d2dMsg.sequenceNumber)") } + let offlineFrame=try Location_Nearby_Connections_OfflineFrame(serializedData: d2dMsg.message) + guard offlineFrame.hasV1, offlineFrame.v1.hasType else { throw NearbyError.requiredFieldMissing } + + if case .payloadTransfer = offlineFrame.v1.type { + guard offlineFrame.v1.hasPayloadTransfer else { throw NearbyError.requiredFieldMissing } + let payloadTransfer=offlineFrame.v1.payloadTransfer + let header=payloadTransfer.payloadHeader; + let chunk=payloadTransfer.payloadChunk; + guard header.hasType, header.hasID else { throw NearbyError.requiredFieldMissing } + guard payloadTransfer.hasPayloadChunk, chunk.hasOffset, chunk.hasFlags else { throw NearbyError.requiredFieldMissing } + if case .bytes = header.type{ + let payloadID=header.id + if header.totalSize>InboundNearbyConnection.SANE_FRAME_LENGTH{ + payloadBuffers.removeValue(forKey: payloadID) + throw NearbyError.protocolError("Payload too large (\(header.totalSize) bytes)") + } + if payloadBuffers[payloadID]==nil { + payloadBuffers[payloadID]=NSMutableData(capacity: Int(header.totalSize)) + } + let buffer=payloadBuffers[payloadID]! + guard chunk.offset==buffer.count else { + payloadBuffers.removeValue(forKey: payloadID) + throw NearbyError.protocolError("Unexpected chunk offset \(chunk.offset), expected \(buffer.count)") + } + if chunk.hasBody { + buffer.append(chunk.body) + } + if (chunk.flags & 1)==1 { + payloadBuffers.removeValue(forKey: payloadID) + let innerFrame=try Sharing_Nearby_Frame(serializedData: buffer as Data) + try processTransferSetupFrame(innerFrame) + } + }else if case .file = header.type{ + try processFileChunk(frame: payloadTransfer) + } + }else if case .keepAlive = offlineFrame.v1.type{ + sendKeepAlive(ack: true) + }else{ + print("Unhandled offline frame encrypted: \(offlineFrame)") + } + } + + internal static func pinCodeFromAuthKey(_ key:SymmetricKey) -> String{ + var hash:Int=0 + var multiplier:Int=1 + let keyBytes:[UInt8]=key.withUnsafeBytes({ + return [UInt8]($0) + }) + + for _byte in keyBytes { + let byte=Int(Int8(bitPattern: _byte)) + hash=(hash+byte*multiplier)%9973 + multiplier=(multiplier*31)%9973 + } + + return String(format: "%04d", abs(hash)) + } + + internal func finalizeKeyExchange(peerKey:Securemessage_GenericPublicKey) throws{ + guard peerKey.hasEcP256PublicKey else { throw NearbyError.requiredFieldMissing } + + let domain=Domain.instance(curve: .EC256r1) + var clientX=peerKey.ecP256PublicKey.x + var clientY=peerKey.ecP256PublicKey.y + if clientX.count>32{ + clientX=clientX.suffix(32) + } + if clientY.count>32{ + clientY=clientY.suffix(32) + } + let key=try ECPublicKey(domain: domain, w: Point(BInt(magnitude: [UInt8](clientX)), BInt(magnitude: [UInt8](clientY)))) + + let dhs=(try privateKey?.domain.multiplyPoint(key.w, privateKey!.s).x.asMagnitudeBytes())! + var sha=SHA256() + sha.update(data: dhs) + let derivedSecretKey=Data(sha.finalize()) + + var ukeyInfo=Data() + ukeyInfo.append(ukeyClientInitMsgData!) + ukeyInfo.append(ukeyServerInitMsgData!) + let authString=HKDF.deriveKey(inputKeyMaterial: SymmetricKey(data: derivedSecretKey), salt: "UKEY2 v1 auth".data(using: .utf8)!, info: ukeyInfo, outputByteCount: 32) + let nextSecret=HKDF.deriveKey(inputKeyMaterial: SymmetricKey(data: derivedSecretKey), salt: "UKEY2 v1 next".data(using: .utf8)!, info: ukeyInfo, outputByteCount: 32) + + pinCode=NearbyConnection.pinCodeFromAuthKey(authString) + + let salt:Data=Data([0x82, 0xAA, 0x55, 0xA0, 0xD3, 0x97, 0xF8, 0x83, 0x46, 0xCA, 0x1C, + 0xEE, 0x8D, 0x39, 0x09, 0xB9, 0x5F, 0x13, 0xFA, 0x7D, 0xEB, 0x1D, + 0x4A, 0xB3, 0x83, 0x76, 0xB8, 0x25, 0x6D, 0xA8, 0x55, 0x10]) + + let d2dClientKey=HKDF.deriveKey(inputKeyMaterial: nextSecret, salt: salt, info: "client".data(using: .utf8)!, outputByteCount: 32) + let d2dServerKey=HKDF.deriveKey(inputKeyMaterial: nextSecret, salt: salt, info: "server".data(using: .utf8)!, outputByteCount: 32) + + sha=SHA256() + sha.update(data: "SecureMessage".data(using: .utf8)!) + let smsgSalt=Data(sha.finalize()) + + let clientKey=HKDF.deriveKey(inputKeyMaterial: d2dClientKey, salt: smsgSalt, info: "ENC:2".data(using: .utf8)!, outputByteCount: 32).withUnsafeBytes({return [UInt8]($0)}) + let clientHmacKey=HKDF.deriveKey(inputKeyMaterial: d2dClientKey, salt: smsgSalt, info: "SIG:1".data(using: .utf8)!, outputByteCount: 32) + let serverKey=HKDF.deriveKey(inputKeyMaterial: d2dServerKey, salt: smsgSalt, info: "ENC:2".data(using: .utf8)!, outputByteCount: 32).withUnsafeBytes({return [UInt8]($0)}) + let serverHmacKey=HKDF.deriveKey(inputKeyMaterial: d2dServerKey, salt: smsgSalt, info: "SIG:1".data(using: .utf8)!, outputByteCount: 32) + + if isServer(){ + decryptKey=clientKey + recvHmacKey=clientHmacKey + encryptKey=serverKey + sendHmacKey=serverHmacKey + }else{ + decryptKey=serverKey + recvHmacKey=serverHmacKey + encryptKey=clientKey + sendHmacKey=clientHmacKey + } + } + + internal func disconnect(){ + connection.send(content: nil, isComplete: true, completion: .contentProcessed({ error in + self.handleConnectionClosure() + })) + connectionClosed=true + } + + internal func sendDisconnectionAndDisconnect() throws{ + var offlineFrame=Location_Nearby_Connections_OfflineFrame() + offlineFrame.version = .v1 + offlineFrame.v1.type = .disconnection + offlineFrame.v1.disconnection=Location_Nearby_Connections_DisconnectionFrame() + + if encryptionDone{ + try encryptAndSendOfflineFrame(offlineFrame) + }else{ + sendFrameAsync(try offlineFrame.serializedData()) + } + disconnect() + } + + internal func sendUkey2Alert(type:Securegcm_Ukey2Alert.AlertType){ + var alert=Securegcm_Ukey2Alert() + alert.type=type + var msg=Securegcm_Ukey2Message() + msg.messageType = .alert + msg.messageData = try! alert.serializedData() + sendFrameAsync(try! msg.serializedData()) + disconnect() + } + + internal func sendKeepAlive(ack:Bool){ + var offlineFrame=Location_Nearby_Connections_OfflineFrame() + offlineFrame.version = .v1 + offlineFrame.v1.type = .keepAlive + offlineFrame.v1.keepAlive.ack=ack + + do{ + if encryptionDone{ + try encryptAndSendOfflineFrame(offlineFrame) + }else{ + sendFrameAsync(try offlineFrame.serializedData()) + } + }catch{ + print("Error sending KEEP_ALIVE: \(error)") + } + } +} + +enum NearbyError:Error{ + case protocolError(_ message:String) + case requiredFieldMissing + case ukey2 + case inputOutput(cause:Errno) +} + + +struct RemoteDeviceInfo{ + let name:String + let type:DeviceType + + enum DeviceType{ + case unknown + case phone + case tablet + case computer + + static func fromRawValue(value:Int) -> DeviceType{ + switch value { + case 0: + return .unknown + case 1: + return .phone + case 2: + return .tablet + case 3: + return .computer + default: + return .unknown + } + } + } +} + +struct TransferMetadata{ + let files:[FileMetadata] +} + +struct FileMetadata{ + let name:String + let size:Int64 + let mimeType:String +} + +struct InternalFileInfo{ + let meta:FileMetadata + let payloadID:Int64 + let destinationURL:URL + var bytesTransferred:Int64=0 + var fileHandle:FileHandle? + var progress:Progress? + var created:Bool=false +} diff --git a/NearDrop/NearbyConnectionManager.swift b/NearDrop/NearbyConnectionManager.swift new file mode 100644 index 0000000..aedd0d3 --- /dev/null +++ b/NearDrop/NearbyConnectionManager.swift @@ -0,0 +1,134 @@ +// +// NearbyConnectionManager.swift +// NearDrop +// +// Created by Grishka on 08.04.2023. +// + +import Foundation +import Network +import UserNotifications + +class NearbyConnectionManager : NSObject, NetServiceDelegate, InboundNearbyConnectionDelegate, UNUserNotificationCenterDelegate{ + + private var tcpListener:NWListener; + private let endpointID:[UInt8]=generateEndpointID() + private var mdnsService:NetService? + private var activeConnections:[String:InboundNearbyConnection]=[:] + + override init() { + tcpListener=try! NWListener(using: NWParameters(tls: .none)) + super.init() + UNUserNotificationCenter.current().delegate=self + startTCPListener() + } + + private func startTCPListener(){ + tcpListener.stateUpdateHandler={(state:NWListener.State) in + if case .ready = state { + self.initMDNS() + } + } + tcpListener.newConnectionHandler={(connection:NWConnection) in + let id=UUID().uuidString + let conn=InboundNearbyConnection(connection: connection, id: id) + self.activeConnections[id]=conn + conn.delegate=self + conn.start() + } + tcpListener.start(queue: .global(qos: .utility)) + } + + private static func generateEndpointID()->[UInt8]{ + var id:[UInt8]=[] + let alphabet="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ".compactMap {UInt8($0.asciiValue!)} + for _ in 0...3{ + id.append(alphabet[Int.random(in: 0.. Void) { + activeConnections[response.notification.request.content.userInfo["transferID"]! as! String]?.submitUserConsent(accepted: response.actionIdentifier=="ACCEPT") + completionHandler() + } +} + diff --git a/NearDrop/Protobuf/device_to_device_messages.pb.swift b/NearDrop/Protobuf/device_to_device_messages.pb.swift new file mode 100644 index 0000000..61ccd84 --- /dev/null +++ b/NearDrop/Protobuf/device_to_device_messages.pb.swift @@ -0,0 +1,540 @@ +// DO NOT EDIT. +// swift-format-ignore-file +// +// Generated by the Swift generator plugin for the protocol buffer compiler. +// Source: device_to_device_messages.proto +// +// For information on using the generated types, please see the documentation: +// https://github.com/apple/swift-protobuf/ + +// Copyright 2020 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +import Foundation +import SwiftProtobuf + +// If the compiler emits an error on this type, it is because this file +// was generated by a version of the `protoc` Swift plug-in that is +// incompatible with the version of SwiftProtobuf to which you are linking. +// Please ensure that you are building against the same version of the API +// that was used to generate this file. +fileprivate struct _GeneratedWithProtocGenSwiftVersion: SwiftProtobuf.ProtobufAPIVersionCheck { + struct _2: SwiftProtobuf.ProtobufAPIVersion_2 {} + typealias Version = _2 +} + +/// Type of curve +enum Securegcm_Curve: SwiftProtobuf.Enum { + typealias RawValue = Int + case ed25519 // = 1 + + init() { + self = .ed25519 + } + + init?(rawValue: Int) { + switch rawValue { + case 1: self = .ed25519 + default: return nil + } + } + + var rawValue: Int { + switch self { + case .ed25519: return 1 + } + } + +} + +#if swift(>=4.2) + +extension Securegcm_Curve: CaseIterable { + // Support synthesized by the compiler. +} + +#endif // swift(>=4.2) + +/// Used by protocols between devices +struct Securegcm_DeviceToDeviceMessage { + // SwiftProtobuf.Message conformance is added in an extension below. See the + // `Message` and `Message+*Additions` files in the SwiftProtobuf library for + // methods supported on all messages. + + /// the payload of the message + var message: Data { + get {return _message ?? Data()} + set {_message = newValue} + } + /// Returns true if `message` has been explicitly set. + var hasMessage: Bool {return self._message != nil} + /// Clears the value of `message`. Subsequent reads from it will return its default value. + mutating func clearMessage() {self._message = nil} + + /// the sequence number of the message - must be increasing. + var sequenceNumber: Int32 { + get {return _sequenceNumber ?? 0} + set {_sequenceNumber = newValue} + } + /// Returns true if `sequenceNumber` has been explicitly set. + var hasSequenceNumber: Bool {return self._sequenceNumber != nil} + /// Clears the value of `sequenceNumber`. Subsequent reads from it will return its default value. + mutating func clearSequenceNumber() {self._sequenceNumber = nil} + + var unknownFields = SwiftProtobuf.UnknownStorage() + + init() {} + + fileprivate var _message: Data? = nil + fileprivate var _sequenceNumber: Int32? = nil +} + +/// sent as the first message from initiator to responder +/// in an unauthenticated Diffie-Hellman Key Exchange +struct Securegcm_InitiatorHello { + // SwiftProtobuf.Message conformance is added in an extension below. See the + // `Message` and `Message+*Additions` files in the SwiftProtobuf library for + // methods supported on all messages. + + /// The session public key to send to the responder + var publicDhKey: Securemessage_GenericPublicKey { + get {return _publicDhKey ?? Securemessage_GenericPublicKey()} + set {_publicDhKey = newValue} + } + /// Returns true if `publicDhKey` has been explicitly set. + var hasPublicDhKey: Bool {return self._publicDhKey != nil} + /// Clears the value of `publicDhKey`. Subsequent reads from it will return its default value. + mutating func clearPublicDhKey() {self._publicDhKey = nil} + + /// The protocol version + var protocolVersion: Int32 { + get {return _protocolVersion ?? 0} + set {_protocolVersion = newValue} + } + /// Returns true if `protocolVersion` has been explicitly set. + var hasProtocolVersion: Bool {return self._protocolVersion != nil} + /// Clears the value of `protocolVersion`. Subsequent reads from it will return its default value. + mutating func clearProtocolVersion() {self._protocolVersion = nil} + + var unknownFields = SwiftProtobuf.UnknownStorage() + + init() {} + + fileprivate var _publicDhKey: Securemessage_GenericPublicKey? = nil + fileprivate var _protocolVersion: Int32? = nil +} + +/// sent inside the header of the first message from the responder to the +/// initiator in an unauthenticated Diffie-Hellman Key Exchange +struct Securegcm_ResponderHello { + // SwiftProtobuf.Message conformance is added in an extension below. See the + // `Message` and `Message+*Additions` files in the SwiftProtobuf library for + // methods supported on all messages. + + /// The session public key to send to the initiator + var publicDhKey: Securemessage_GenericPublicKey { + get {return _publicDhKey ?? Securemessage_GenericPublicKey()} + set {_publicDhKey = newValue} + } + /// Returns true if `publicDhKey` has been explicitly set. + var hasPublicDhKey: Bool {return self._publicDhKey != nil} + /// Clears the value of `publicDhKey`. Subsequent reads from it will return its default value. + mutating func clearPublicDhKey() {self._publicDhKey = nil} + + /// The protocol version + var protocolVersion: Int32 { + get {return _protocolVersion ?? 0} + set {_protocolVersion = newValue} + } + /// Returns true if `protocolVersion` has been explicitly set. + var hasProtocolVersion: Bool {return self._protocolVersion != nil} + /// Clears the value of `protocolVersion`. Subsequent reads from it will return its default value. + mutating func clearProtocolVersion() {self._protocolVersion = nil} + + var unknownFields = SwiftProtobuf.UnknownStorage() + + init() {} + + fileprivate var _publicDhKey: Securemessage_GenericPublicKey? = nil + fileprivate var _protocolVersion: Int32? = nil +} + +/// A convenience proto for encoding curve points in affine representation +struct Securegcm_EcPoint { + // SwiftProtobuf.Message conformance is added in an extension below. See the + // `Message` and `Message+*Additions` files in the SwiftProtobuf library for + // methods supported on all messages. + + var curve: Securegcm_Curve { + get {return _curve ?? .ed25519} + set {_curve = newValue} + } + /// Returns true if `curve` has been explicitly set. + var hasCurve: Bool {return self._curve != nil} + /// Clears the value of `curve`. Subsequent reads from it will return its default value. + mutating func clearCurve() {self._curve = nil} + + /// x and y are encoded in big-endian two's complement + /// client MUST verify (x,y) is a valid point on the specified curve + var x: Data { + get {return _x ?? Data()} + set {_x = newValue} + } + /// Returns true if `x` has been explicitly set. + var hasX: Bool {return self._x != nil} + /// Clears the value of `x`. Subsequent reads from it will return its default value. + mutating func clearX() {self._x = nil} + + var y: Data { + get {return _y ?? Data()} + set {_y = newValue} + } + /// Returns true if `y` has been explicitly set. + var hasY: Bool {return self._y != nil} + /// Clears the value of `y`. Subsequent reads from it will return its default value. + mutating func clearY() {self._y = nil} + + var unknownFields = SwiftProtobuf.UnknownStorage() + + init() {} + + fileprivate var _curve: Securegcm_Curve? = nil + fileprivate var _x: Data? = nil + fileprivate var _y: Data? = nil +} + +struct Securegcm_SpakeHandshakeMessage { + // SwiftProtobuf.Message conformance is added in an extension below. See the + // `Message` and `Message+*Additions` files in the SwiftProtobuf library for + // methods supported on all messages. + + /// Each flow in the protocol bumps this counter + var flowNumber: Int32 { + get {return _flowNumber ?? 0} + set {_flowNumber = newValue} + } + /// Returns true if `flowNumber` has been explicitly set. + var hasFlowNumber: Bool {return self._flowNumber != nil} + /// Clears the value of `flowNumber`. Subsequent reads from it will return its default value. + mutating func clearFlowNumber() {self._flowNumber = nil} + + /// Some (but not all) SPAKE flows send a point on an elliptic curve + var ecPoint: Securegcm_EcPoint { + get {return _ecPoint ?? Securegcm_EcPoint()} + set {_ecPoint = newValue} + } + /// Returns true if `ecPoint` has been explicitly set. + var hasEcPoint: Bool {return self._ecPoint != nil} + /// Clears the value of `ecPoint`. Subsequent reads from it will return its default value. + mutating func clearEcPoint() {self._ecPoint = nil} + + /// Some (but not all) SPAKE flows send a hash value + var hashValue_p: Data { + get {return _hashValue_p ?? Data()} + set {_hashValue_p = newValue} + } + /// Returns true if `hashValue_p` has been explicitly set. + var hasHashValue_p: Bool {return self._hashValue_p != nil} + /// Clears the value of `hashValue_p`. Subsequent reads from it will return its default value. + mutating func clearHashValue_p() {self._hashValue_p = nil} + + /// The last flow of a SPAKE protocol can send an optional payload, + /// since the key exchange is already complete on the sender's side. + var payload: Data { + get {return _payload ?? Data()} + set {_payload = newValue} + } + /// Returns true if `payload` has been explicitly set. + var hasPayload: Bool {return self._payload != nil} + /// Clears the value of `payload`. Subsequent reads from it will return its default value. + mutating func clearPayload() {self._payload = nil} + + var unknownFields = SwiftProtobuf.UnknownStorage() + + init() {} + + fileprivate var _flowNumber: Int32? = nil + fileprivate var _ecPoint: Securegcm_EcPoint? = nil + fileprivate var _hashValue_p: Data? = nil + fileprivate var _payload: Data? = nil +} + +#if swift(>=5.5) && canImport(_Concurrency) +extension Securegcm_Curve: @unchecked Sendable {} +extension Securegcm_DeviceToDeviceMessage: @unchecked Sendable {} +extension Securegcm_InitiatorHello: @unchecked Sendable {} +extension Securegcm_ResponderHello: @unchecked Sendable {} +extension Securegcm_EcPoint: @unchecked Sendable {} +extension Securegcm_SpakeHandshakeMessage: @unchecked Sendable {} +#endif // swift(>=5.5) && canImport(_Concurrency) + +// MARK: - Code below here is support for the SwiftProtobuf runtime. + +fileprivate let _protobuf_package = "securegcm" + +extension Securegcm_Curve: SwiftProtobuf._ProtoNameProviding { + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 1: .same(proto: "ED_25519"), + ] +} + +extension Securegcm_DeviceToDeviceMessage: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let protoMessageName: String = _protobuf_package + ".DeviceToDeviceMessage" + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 1: .same(proto: "message"), + 2: .standard(proto: "sequence_number"), + ] + + mutating func decodeMessage(decoder: inout D) throws { + while let fieldNumber = try decoder.nextFieldNumber() { + // The use of inline closures is to circumvent an issue where the compiler + // allocates stack space for every case branch when no optimizations are + // enabled. https://github.com/apple/swift-protobuf/issues/1034 + switch fieldNumber { + case 1: try { try decoder.decodeSingularBytesField(value: &self._message) }() + case 2: try { try decoder.decodeSingularInt32Field(value: &self._sequenceNumber) }() + default: break + } + } + } + + func traverse(visitor: inout V) throws { + // The use of inline closures is to circumvent an issue where the compiler + // allocates stack space for every if/case branch local when no optimizations + // are enabled. https://github.com/apple/swift-protobuf/issues/1034 and + // https://github.com/apple/swift-protobuf/issues/1182 + try { if let v = self._message { + try visitor.visitSingularBytesField(value: v, fieldNumber: 1) + } }() + try { if let v = self._sequenceNumber { + try visitor.visitSingularInt32Field(value: v, fieldNumber: 2) + } }() + try unknownFields.traverse(visitor: &visitor) + } + + static func ==(lhs: Securegcm_DeviceToDeviceMessage, rhs: Securegcm_DeviceToDeviceMessage) -> Bool { + if lhs._message != rhs._message {return false} + if lhs._sequenceNumber != rhs._sequenceNumber {return false} + if lhs.unknownFields != rhs.unknownFields {return false} + return true + } +} + +extension Securegcm_InitiatorHello: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let protoMessageName: String = _protobuf_package + ".InitiatorHello" + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 1: .standard(proto: "public_dh_key"), + 2: .standard(proto: "protocol_version"), + ] + + public var isInitialized: Bool { + if let v = self._publicDhKey, !v.isInitialized {return false} + return true + } + + mutating func decodeMessage(decoder: inout D) throws { + while let fieldNumber = try decoder.nextFieldNumber() { + // The use of inline closures is to circumvent an issue where the compiler + // allocates stack space for every case branch when no optimizations are + // enabled. https://github.com/apple/swift-protobuf/issues/1034 + switch fieldNumber { + case 1: try { try decoder.decodeSingularMessageField(value: &self._publicDhKey) }() + case 2: try { try decoder.decodeSingularInt32Field(value: &self._protocolVersion) }() + default: break + } + } + } + + func traverse(visitor: inout V) throws { + // The use of inline closures is to circumvent an issue where the compiler + // allocates stack space for every if/case branch local when no optimizations + // are enabled. https://github.com/apple/swift-protobuf/issues/1034 and + // https://github.com/apple/swift-protobuf/issues/1182 + try { if let v = self._publicDhKey { + try visitor.visitSingularMessageField(value: v, fieldNumber: 1) + } }() + try { if let v = self._protocolVersion { + try visitor.visitSingularInt32Field(value: v, fieldNumber: 2) + } }() + try unknownFields.traverse(visitor: &visitor) + } + + static func ==(lhs: Securegcm_InitiatorHello, rhs: Securegcm_InitiatorHello) -> Bool { + if lhs._publicDhKey != rhs._publicDhKey {return false} + if lhs._protocolVersion != rhs._protocolVersion {return false} + if lhs.unknownFields != rhs.unknownFields {return false} + return true + } +} + +extension Securegcm_ResponderHello: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let protoMessageName: String = _protobuf_package + ".ResponderHello" + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 1: .standard(proto: "public_dh_key"), + 2: .standard(proto: "protocol_version"), + ] + + public var isInitialized: Bool { + if let v = self._publicDhKey, !v.isInitialized {return false} + return true + } + + mutating func decodeMessage(decoder: inout D) throws { + while let fieldNumber = try decoder.nextFieldNumber() { + // The use of inline closures is to circumvent an issue where the compiler + // allocates stack space for every case branch when no optimizations are + // enabled. https://github.com/apple/swift-protobuf/issues/1034 + switch fieldNumber { + case 1: try { try decoder.decodeSingularMessageField(value: &self._publicDhKey) }() + case 2: try { try decoder.decodeSingularInt32Field(value: &self._protocolVersion) }() + default: break + } + } + } + + func traverse(visitor: inout V) throws { + // The use of inline closures is to circumvent an issue where the compiler + // allocates stack space for every if/case branch local when no optimizations + // are enabled. https://github.com/apple/swift-protobuf/issues/1034 and + // https://github.com/apple/swift-protobuf/issues/1182 + try { if let v = self._publicDhKey { + try visitor.visitSingularMessageField(value: v, fieldNumber: 1) + } }() + try { if let v = self._protocolVersion { + try visitor.visitSingularInt32Field(value: v, fieldNumber: 2) + } }() + try unknownFields.traverse(visitor: &visitor) + } + + static func ==(lhs: Securegcm_ResponderHello, rhs: Securegcm_ResponderHello) -> Bool { + if lhs._publicDhKey != rhs._publicDhKey {return false} + if lhs._protocolVersion != rhs._protocolVersion {return false} + if lhs.unknownFields != rhs.unknownFields {return false} + return true + } +} + +extension Securegcm_EcPoint: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let protoMessageName: String = _protobuf_package + ".EcPoint" + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 1: .same(proto: "curve"), + 2: .same(proto: "x"), + 3: .same(proto: "y"), + ] + + public var isInitialized: Bool { + if self._curve == nil {return false} + if self._x == nil {return false} + if self._y == nil {return false} + return true + } + + mutating func decodeMessage(decoder: inout D) throws { + while let fieldNumber = try decoder.nextFieldNumber() { + // The use of inline closures is to circumvent an issue where the compiler + // allocates stack space for every case branch when no optimizations are + // enabled. https://github.com/apple/swift-protobuf/issues/1034 + switch fieldNumber { + case 1: try { try decoder.decodeSingularEnumField(value: &self._curve) }() + case 2: try { try decoder.decodeSingularBytesField(value: &self._x) }() + case 3: try { try decoder.decodeSingularBytesField(value: &self._y) }() + default: break + } + } + } + + func traverse(visitor: inout V) throws { + // The use of inline closures is to circumvent an issue where the compiler + // allocates stack space for every if/case branch local when no optimizations + // are enabled. https://github.com/apple/swift-protobuf/issues/1034 and + // https://github.com/apple/swift-protobuf/issues/1182 + try { if let v = self._curve { + try visitor.visitSingularEnumField(value: v, fieldNumber: 1) + } }() + try { if let v = self._x { + try visitor.visitSingularBytesField(value: v, fieldNumber: 2) + } }() + try { if let v = self._y { + try visitor.visitSingularBytesField(value: v, fieldNumber: 3) + } }() + try unknownFields.traverse(visitor: &visitor) + } + + static func ==(lhs: Securegcm_EcPoint, rhs: Securegcm_EcPoint) -> Bool { + if lhs._curve != rhs._curve {return false} + if lhs._x != rhs._x {return false} + if lhs._y != rhs._y {return false} + if lhs.unknownFields != rhs.unknownFields {return false} + return true + } +} + +extension Securegcm_SpakeHandshakeMessage: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let protoMessageName: String = _protobuf_package + ".SpakeHandshakeMessage" + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 1: .standard(proto: "flow_number"), + 2: .standard(proto: "ec_point"), + 3: .standard(proto: "hash_value"), + 4: .same(proto: "payload"), + ] + + public var isInitialized: Bool { + if let v = self._ecPoint, !v.isInitialized {return false} + return true + } + + mutating func decodeMessage(decoder: inout D) throws { + while let fieldNumber = try decoder.nextFieldNumber() { + // The use of inline closures is to circumvent an issue where the compiler + // allocates stack space for every case branch when no optimizations are + // enabled. https://github.com/apple/swift-protobuf/issues/1034 + switch fieldNumber { + case 1: try { try decoder.decodeSingularInt32Field(value: &self._flowNumber) }() + case 2: try { try decoder.decodeSingularMessageField(value: &self._ecPoint) }() + case 3: try { try decoder.decodeSingularBytesField(value: &self._hashValue_p) }() + case 4: try { try decoder.decodeSingularBytesField(value: &self._payload) }() + default: break + } + } + } + + func traverse(visitor: inout V) throws { + // The use of inline closures is to circumvent an issue where the compiler + // allocates stack space for every if/case branch local when no optimizations + // are enabled. https://github.com/apple/swift-protobuf/issues/1034 and + // https://github.com/apple/swift-protobuf/issues/1182 + try { if let v = self._flowNumber { + try visitor.visitSingularInt32Field(value: v, fieldNumber: 1) + } }() + try { if let v = self._ecPoint { + try visitor.visitSingularMessageField(value: v, fieldNumber: 2) + } }() + try { if let v = self._hashValue_p { + try visitor.visitSingularBytesField(value: v, fieldNumber: 3) + } }() + try { if let v = self._payload { + try visitor.visitSingularBytesField(value: v, fieldNumber: 4) + } }() + try unknownFields.traverse(visitor: &visitor) + } + + static func ==(lhs: Securegcm_SpakeHandshakeMessage, rhs: Securegcm_SpakeHandshakeMessage) -> Bool { + if lhs._flowNumber != rhs._flowNumber {return false} + if lhs._ecPoint != rhs._ecPoint {return false} + if lhs._hashValue_p != rhs._hashValue_p {return false} + if lhs._payload != rhs._payload {return false} + if lhs.unknownFields != rhs.unknownFields {return false} + return true + } +} diff --git a/NearDrop/Protobuf/offline_wire_formats.pb.swift b/NearDrop/Protobuf/offline_wire_formats.pb.swift new file mode 100644 index 0000000..7524b1c --- /dev/null +++ b/NearDrop/Protobuf/offline_wire_formats.pb.swift @@ -0,0 +1,3653 @@ +// DO NOT EDIT. +// swift-format-ignore-file +// +// Generated by the Swift generator plugin for the protocol buffer compiler. +// Source: offline_wire_formats.proto +// +// For information on using the generated types, please see the documentation: +// https://github.com/apple/swift-protobuf/ + +// Copyright 2020 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +import Foundation +import SwiftProtobuf + +// If the compiler emits an error on this type, it is because this file +// was generated by a version of the `protoc` Swift plug-in that is +// incompatible with the version of SwiftProtobuf to which you are linking. +// Please ensure that you are building against the same version of the API +// that was used to generate this file. +fileprivate struct _GeneratedWithProtocGenSwiftVersion: SwiftProtobuf.ProtobufAPIVersionCheck { + struct _2: SwiftProtobuf.ProtobufAPIVersion_2 {} + typealias Version = _2 +} + +struct Location_Nearby_Connections_OfflineFrame { + // SwiftProtobuf.Message conformance is added in an extension below. See the + // `Message` and `Message+*Additions` files in the SwiftProtobuf library for + // methods supported on all messages. + + var version: Location_Nearby_Connections_OfflineFrame.Version { + get {return _version ?? .unknownVersion} + set {_version = newValue} + } + /// Returns true if `version` has been explicitly set. + var hasVersion: Bool {return self._version != nil} + /// Clears the value of `version`. Subsequent reads from it will return its default value. + mutating func clearVersion() {self._version = nil} + + /// Right now there's only 1 version, but if there are more, exactly one of + /// the following fields will be set. + var v1: Location_Nearby_Connections_V1Frame { + get {return _v1 ?? Location_Nearby_Connections_V1Frame()} + set {_v1 = newValue} + } + /// Returns true if `v1` has been explicitly set. + var hasV1: Bool {return self._v1 != nil} + /// Clears the value of `v1`. Subsequent reads from it will return its default value. + mutating func clearV1() {self._v1 = nil} + + var unknownFields = SwiftProtobuf.UnknownStorage() + + enum Version: SwiftProtobuf.Enum { + typealias RawValue = Int + case unknownVersion // = 0 + case v1 // = 1 + + init() { + self = .unknownVersion + } + + init?(rawValue: Int) { + switch rawValue { + case 0: self = .unknownVersion + case 1: self = .v1 + default: return nil + } + } + + var rawValue: Int { + switch self { + case .unknownVersion: return 0 + case .v1: return 1 + } + } + + } + + init() {} + + fileprivate var _version: Location_Nearby_Connections_OfflineFrame.Version? = nil + fileprivate var _v1: Location_Nearby_Connections_V1Frame? = nil +} + +#if swift(>=4.2) + +extension Location_Nearby_Connections_OfflineFrame.Version: CaseIterable { + // Support synthesized by the compiler. +} + +#endif // swift(>=4.2) + +struct Location_Nearby_Connections_V1Frame { + // SwiftProtobuf.Message conformance is added in an extension below. See the + // `Message` and `Message+*Additions` files in the SwiftProtobuf library for + // methods supported on all messages. + + var type: Location_Nearby_Connections_V1Frame.FrameType { + get {return _storage._type ?? .unknownFrameType} + set {_uniqueStorage()._type = newValue} + } + /// Returns true if `type` has been explicitly set. + var hasType: Bool {return _storage._type != nil} + /// Clears the value of `type`. Subsequent reads from it will return its default value. + mutating func clearType() {_uniqueStorage()._type = nil} + + /// Exactly one of the following fields will be set. + var connectionRequest: Location_Nearby_Connections_ConnectionRequestFrame { + get {return _storage._connectionRequest ?? Location_Nearby_Connections_ConnectionRequestFrame()} + set {_uniqueStorage()._connectionRequest = newValue} + } + /// Returns true if `connectionRequest` has been explicitly set. + var hasConnectionRequest: Bool {return _storage._connectionRequest != nil} + /// Clears the value of `connectionRequest`. Subsequent reads from it will return its default value. + mutating func clearConnectionRequest() {_uniqueStorage()._connectionRequest = nil} + + var connectionResponse: Location_Nearby_Connections_ConnectionResponseFrame { + get {return _storage._connectionResponse ?? Location_Nearby_Connections_ConnectionResponseFrame()} + set {_uniqueStorage()._connectionResponse = newValue} + } + /// Returns true if `connectionResponse` has been explicitly set. + var hasConnectionResponse: Bool {return _storage._connectionResponse != nil} + /// Clears the value of `connectionResponse`. Subsequent reads from it will return its default value. + mutating func clearConnectionResponse() {_uniqueStorage()._connectionResponse = nil} + + var payloadTransfer: Location_Nearby_Connections_PayloadTransferFrame { + get {return _storage._payloadTransfer ?? Location_Nearby_Connections_PayloadTransferFrame()} + set {_uniqueStorage()._payloadTransfer = newValue} + } + /// Returns true if `payloadTransfer` has been explicitly set. + var hasPayloadTransfer: Bool {return _storage._payloadTransfer != nil} + /// Clears the value of `payloadTransfer`. Subsequent reads from it will return its default value. + mutating func clearPayloadTransfer() {_uniqueStorage()._payloadTransfer = nil} + + var bandwidthUpgradeNegotiation: Location_Nearby_Connections_BandwidthUpgradeNegotiationFrame { + get {return _storage._bandwidthUpgradeNegotiation ?? Location_Nearby_Connections_BandwidthUpgradeNegotiationFrame()} + set {_uniqueStorage()._bandwidthUpgradeNegotiation = newValue} + } + /// Returns true if `bandwidthUpgradeNegotiation` has been explicitly set. + var hasBandwidthUpgradeNegotiation: Bool {return _storage._bandwidthUpgradeNegotiation != nil} + /// Clears the value of `bandwidthUpgradeNegotiation`. Subsequent reads from it will return its default value. + mutating func clearBandwidthUpgradeNegotiation() {_uniqueStorage()._bandwidthUpgradeNegotiation = nil} + + var keepAlive: Location_Nearby_Connections_KeepAliveFrame { + get {return _storage._keepAlive ?? Location_Nearby_Connections_KeepAliveFrame()} + set {_uniqueStorage()._keepAlive = newValue} + } + /// Returns true if `keepAlive` has been explicitly set. + var hasKeepAlive: Bool {return _storage._keepAlive != nil} + /// Clears the value of `keepAlive`. Subsequent reads from it will return its default value. + mutating func clearKeepAlive() {_uniqueStorage()._keepAlive = nil} + + var disconnection: Location_Nearby_Connections_DisconnectionFrame { + get {return _storage._disconnection ?? Location_Nearby_Connections_DisconnectionFrame()} + set {_uniqueStorage()._disconnection = newValue} + } + /// Returns true if `disconnection` has been explicitly set. + var hasDisconnection: Bool {return _storage._disconnection != nil} + /// Clears the value of `disconnection`. Subsequent reads from it will return its default value. + mutating func clearDisconnection() {_uniqueStorage()._disconnection = nil} + + var pairedKeyEncryption: Location_Nearby_Connections_PairedKeyEncryptionFrame { + get {return _storage._pairedKeyEncryption ?? Location_Nearby_Connections_PairedKeyEncryptionFrame()} + set {_uniqueStorage()._pairedKeyEncryption = newValue} + } + /// Returns true if `pairedKeyEncryption` has been explicitly set. + var hasPairedKeyEncryption: Bool {return _storage._pairedKeyEncryption != nil} + /// Clears the value of `pairedKeyEncryption`. Subsequent reads from it will return its default value. + mutating func clearPairedKeyEncryption() {_uniqueStorage()._pairedKeyEncryption = nil} + + var unknownFields = SwiftProtobuf.UnknownStorage() + + enum FrameType: SwiftProtobuf.Enum { + typealias RawValue = Int + case unknownFrameType // = 0 + case connectionRequest // = 1 + case connectionResponse // = 2 + case payloadTransfer // = 3 + case bandwidthUpgradeNegotiation // = 4 + case keepAlive // = 5 + case disconnection // = 6 + case pairedKeyEncryption // = 7 + + init() { + self = .unknownFrameType + } + + init?(rawValue: Int) { + switch rawValue { + case 0: self = .unknownFrameType + case 1: self = .connectionRequest + case 2: self = .connectionResponse + case 3: self = .payloadTransfer + case 4: self = .bandwidthUpgradeNegotiation + case 5: self = .keepAlive + case 6: self = .disconnection + case 7: self = .pairedKeyEncryption + default: return nil + } + } + + var rawValue: Int { + switch self { + case .unknownFrameType: return 0 + case .connectionRequest: return 1 + case .connectionResponse: return 2 + case .payloadTransfer: return 3 + case .bandwidthUpgradeNegotiation: return 4 + case .keepAlive: return 5 + case .disconnection: return 6 + case .pairedKeyEncryption: return 7 + } + } + + } + + init() {} + + fileprivate var _storage = _StorageClass.defaultInstance +} + +#if swift(>=4.2) + +extension Location_Nearby_Connections_V1Frame.FrameType: CaseIterable { + // Support synthesized by the compiler. +} + +#endif // swift(>=4.2) + +struct Location_Nearby_Connections_ConnectionRequestFrame { + // SwiftProtobuf.Message conformance is added in an extension below. See the + // `Message` and `Message+*Additions` files in the SwiftProtobuf library for + // methods supported on all messages. + + var endpointID: String { + get {return _storage._endpointID ?? String()} + set {_uniqueStorage()._endpointID = newValue} + } + /// Returns true if `endpointID` has been explicitly set. + var hasEndpointID: Bool {return _storage._endpointID != nil} + /// Clears the value of `endpointID`. Subsequent reads from it will return its default value. + mutating func clearEndpointID() {_uniqueStorage()._endpointID = nil} + + var endpointName: String { + get {return _storage._endpointName ?? String()} + set {_uniqueStorage()._endpointName = newValue} + } + /// Returns true if `endpointName` has been explicitly set. + var hasEndpointName: Bool {return _storage._endpointName != nil} + /// Clears the value of `endpointName`. Subsequent reads from it will return its default value. + mutating func clearEndpointName() {_uniqueStorage()._endpointName = nil} + + var handshakeData: Data { + get {return _storage._handshakeData ?? Data()} + set {_uniqueStorage()._handshakeData = newValue} + } + /// Returns true if `handshakeData` has been explicitly set. + var hasHandshakeData: Bool {return _storage._handshakeData != nil} + /// Clears the value of `handshakeData`. Subsequent reads from it will return its default value. + mutating func clearHandshakeData() {_uniqueStorage()._handshakeData = nil} + + /// A random number generated for each outgoing connection that is presently + /// used to act as a tiebreaker when 2 devices connect to each other + /// simultaneously; this can also be used for other initialization-scoped + /// things in the future. + var nonce: Int32 { + get {return _storage._nonce ?? 0} + set {_uniqueStorage()._nonce = newValue} + } + /// Returns true if `nonce` has been explicitly set. + var hasNonce: Bool {return _storage._nonce != nil} + /// Clears the value of `nonce`. Subsequent reads from it will return its default value. + mutating func clearNonce() {_uniqueStorage()._nonce = nil} + + /// The mediums this device supports upgrading to. This list should be filtered + /// by both the strategy and this device's individual limitations. + var mediums: [Location_Nearby_Connections_ConnectionRequestFrame.Medium] { + get {return _storage._mediums} + set {_uniqueStorage()._mediums = newValue} + } + + var endpointInfo: Data { + get {return _storage._endpointInfo ?? Data()} + set {_uniqueStorage()._endpointInfo = newValue} + } + /// Returns true if `endpointInfo` has been explicitly set. + var hasEndpointInfo: Bool {return _storage._endpointInfo != nil} + /// Clears the value of `endpointInfo`. Subsequent reads from it will return its default value. + mutating func clearEndpointInfo() {_uniqueStorage()._endpointInfo = nil} + + var mediumMetadata: Location_Nearby_Connections_MediumMetadata { + get {return _storage._mediumMetadata ?? Location_Nearby_Connections_MediumMetadata()} + set {_uniqueStorage()._mediumMetadata = newValue} + } + /// Returns true if `mediumMetadata` has been explicitly set. + var hasMediumMetadata: Bool {return _storage._mediumMetadata != nil} + /// Clears the value of `mediumMetadata`. Subsequent reads from it will return its default value. + mutating func clearMediumMetadata() {_uniqueStorage()._mediumMetadata = nil} + + var keepAliveIntervalMillis: Int32 { + get {return _storage._keepAliveIntervalMillis ?? 0} + set {_uniqueStorage()._keepAliveIntervalMillis = newValue} + } + /// Returns true if `keepAliveIntervalMillis` has been explicitly set. + var hasKeepAliveIntervalMillis: Bool {return _storage._keepAliveIntervalMillis != nil} + /// Clears the value of `keepAliveIntervalMillis`. Subsequent reads from it will return its default value. + mutating func clearKeepAliveIntervalMillis() {_uniqueStorage()._keepAliveIntervalMillis = nil} + + var keepAliveTimeoutMillis: Int32 { + get {return _storage._keepAliveTimeoutMillis ?? 0} + set {_uniqueStorage()._keepAliveTimeoutMillis = newValue} + } + /// Returns true if `keepAliveTimeoutMillis` has been explicitly set. + var hasKeepAliveTimeoutMillis: Bool {return _storage._keepAliveTimeoutMillis != nil} + /// Clears the value of `keepAliveTimeoutMillis`. Subsequent reads from it will return its default value. + mutating func clearKeepAliveTimeoutMillis() {_uniqueStorage()._keepAliveTimeoutMillis = nil} + + /// The type of {@link Device} object. + var deviceType: Int32 { + get {return _storage._deviceType ?? 0} + set {_uniqueStorage()._deviceType = newValue} + } + /// Returns true if `deviceType` has been explicitly set. + var hasDeviceType: Bool {return _storage._deviceType != nil} + /// Clears the value of `deviceType`. Subsequent reads from it will return its default value. + mutating func clearDeviceType() {_uniqueStorage()._deviceType = nil} + + /// The bytes of serialized {@link Device} object. + var deviceInfo: Data { + get {return _storage._deviceInfo ?? Data()} + set {_uniqueStorage()._deviceInfo = newValue} + } + /// Returns true if `deviceInfo` has been explicitly set. + var hasDeviceInfo: Bool {return _storage._deviceInfo != nil} + /// Clears the value of `deviceInfo`. Subsequent reads from it will return its default value. + mutating func clearDeviceInfo() {_uniqueStorage()._deviceInfo = nil} + + var unknownFields = SwiftProtobuf.UnknownStorage() + + /// Should always match cs/symbol:location.nearby.proto.connections.Medium + /// LINT.IfChange + enum Medium: SwiftProtobuf.Enum { + typealias RawValue = Int + case unknownMedium // = 0 + case mdns // = 1 + case bluetooth // = 2 + case wifiHotspot // = 3 + case ble // = 4 + case wifiLan // = 5 + case wifiAware // = 6 + case nfc // = 7 + case wifiDirect // = 8 + case webRtc // = 9 + case bleL2Cap // = 10 + case usb // = 11 + + init() { + self = .unknownMedium + } + + init?(rawValue: Int) { + switch rawValue { + case 0: self = .unknownMedium + case 1: self = .mdns + case 2: self = .bluetooth + case 3: self = .wifiHotspot + case 4: self = .ble + case 5: self = .wifiLan + case 6: self = .wifiAware + case 7: self = .nfc + case 8: self = .wifiDirect + case 9: self = .webRtc + case 10: self = .bleL2Cap + case 11: self = .usb + default: return nil + } + } + + var rawValue: Int { + switch self { + case .unknownMedium: return 0 + case .mdns: return 1 + case .bluetooth: return 2 + case .wifiHotspot: return 3 + case .ble: return 4 + case .wifiLan: return 5 + case .wifiAware: return 6 + case .nfc: return 7 + case .wifiDirect: return 8 + case .webRtc: return 9 + case .bleL2Cap: return 10 + case .usb: return 11 + } + } + + } + + init() {} + + fileprivate var _storage = _StorageClass.defaultInstance +} + +#if swift(>=4.2) + +extension Location_Nearby_Connections_ConnectionRequestFrame.Medium: CaseIterable { + // Support synthesized by the compiler. +} + +#endif // swift(>=4.2) + +/// This doesn't need to send back endpoint_id and endpoint_name (like +/// the ConnectionRequestFrame does) because those have already been +/// transmitted out-of-band, at the time this endpoint was discovered. +struct Location_Nearby_Connections_ConnectionResponseFrame { + // SwiftProtobuf.Message conformance is added in an extension below. See the + // `Message` and `Message+*Additions` files in the SwiftProtobuf library for + // methods supported on all messages. + + /// One of: + /// + /// - ConnectionsStatusCodes.STATUS_OK + /// - ConnectionsStatusCodes.STATUS_CONNECTION_REJECTED. + var status: Int32 { + get {return _status ?? 0} + set {_status = newValue} + } + /// Returns true if `status` has been explicitly set. + var hasStatus: Bool {return self._status != nil} + /// Clears the value of `status`. Subsequent reads from it will return its default value. + mutating func clearStatus() {self._status = nil} + + var handshakeData: Data { + get {return _handshakeData ?? Data()} + set {_handshakeData = newValue} + } + /// Returns true if `handshakeData` has been explicitly set. + var hasHandshakeData: Bool {return self._handshakeData != nil} + /// Clears the value of `handshakeData`. Subsequent reads from it will return its default value. + mutating func clearHandshakeData() {self._handshakeData = nil} + + var response: Location_Nearby_Connections_ConnectionResponseFrame.ResponseStatus { + get {return _response ?? .unknownResponseStatus} + set {_response = newValue} + } + /// Returns true if `response` has been explicitly set. + var hasResponse: Bool {return self._response != nil} + /// Clears the value of `response`. Subsequent reads from it will return its default value. + mutating func clearResponse() {self._response = nil} + + var osInfo: Location_Nearby_Connections_OsInfo { + get {return _osInfo ?? Location_Nearby_Connections_OsInfo()} + set {_osInfo = newValue} + } + /// Returns true if `osInfo` has been explicitly set. + var hasOsInfo: Bool {return self._osInfo != nil} + /// Clears the value of `osInfo`. Subsequent reads from it will return its default value. + mutating func clearOsInfo() {self._osInfo = nil} + + /// A bitmask value to indicate which medium supports Multiplex transmission + /// feature. Each supporting medium could utilize one bit starting from the + /// least significant bit in this field. eq. BT utilizes the LSB bit which 0x01 + /// means bt supports multiplex while 0x00 means not. Refer to ClientProxy.java + /// for the bit usages. + var multiplexSocketBitmask: Int32 { + get {return _multiplexSocketBitmask ?? 0} + set {_multiplexSocketBitmask = newValue} + } + /// Returns true if `multiplexSocketBitmask` has been explicitly set. + var hasMultiplexSocketBitmask: Bool {return self._multiplexSocketBitmask != nil} + /// Clears the value of `multiplexSocketBitmask`. Subsequent reads from it will return its default value. + mutating func clearMultiplexSocketBitmask() {self._multiplexSocketBitmask = nil} + + var nearbyConnectionsVersion: Int32 { + get {return _nearbyConnectionsVersion ?? 0} + set {_nearbyConnectionsVersion = newValue} + } + /// Returns true if `nearbyConnectionsVersion` has been explicitly set. + var hasNearbyConnectionsVersion: Bool {return self._nearbyConnectionsVersion != nil} + /// Clears the value of `nearbyConnectionsVersion`. Subsequent reads from it will return its default value. + mutating func clearNearbyConnectionsVersion() {self._nearbyConnectionsVersion = nil} + + var unknownFields = SwiftProtobuf.UnknownStorage() + + /// Used to replace the status integer parameter with a meaningful enum item. + /// Map ConnectionsStatusCodes.STATUS_OK to ACCEPT and + /// ConnectionsStatusCodes.STATUS_CONNECTION_REJECTED to REJECT. + /// Flag: connection_replace_status_with_response_connectionResponseFrame + enum ResponseStatus: SwiftProtobuf.Enum { + typealias RawValue = Int + case unknownResponseStatus // = 0 + case accept // = 1 + case reject // = 2 + + init() { + self = .unknownResponseStatus + } + + init?(rawValue: Int) { + switch rawValue { + case 0: self = .unknownResponseStatus + case 1: self = .accept + case 2: self = .reject + default: return nil + } + } + + var rawValue: Int { + switch self { + case .unknownResponseStatus: return 0 + case .accept: return 1 + case .reject: return 2 + } + } + + } + + init() {} + + fileprivate var _status: Int32? = nil + fileprivate var _handshakeData: Data? = nil + fileprivate var _response: Location_Nearby_Connections_ConnectionResponseFrame.ResponseStatus? = nil + fileprivate var _osInfo: Location_Nearby_Connections_OsInfo? = nil + fileprivate var _multiplexSocketBitmask: Int32? = nil + fileprivate var _nearbyConnectionsVersion: Int32? = nil +} + +#if swift(>=4.2) + +extension Location_Nearby_Connections_ConnectionResponseFrame.ResponseStatus: CaseIterable { + // Support synthesized by the compiler. +} + +#endif // swift(>=4.2) + +struct Location_Nearby_Connections_PayloadTransferFrame { + // SwiftProtobuf.Message conformance is added in an extension below. See the + // `Message` and `Message+*Additions` files in the SwiftProtobuf library for + // methods supported on all messages. + + var packetType: Location_Nearby_Connections_PayloadTransferFrame.PacketType { + get {return _packetType ?? .unknownPacketType} + set {_packetType = newValue} + } + /// Returns true if `packetType` has been explicitly set. + var hasPacketType: Bool {return self._packetType != nil} + /// Clears the value of `packetType`. Subsequent reads from it will return its default value. + mutating func clearPacketType() {self._packetType = nil} + + var payloadHeader: Location_Nearby_Connections_PayloadTransferFrame.PayloadHeader { + get {return _payloadHeader ?? Location_Nearby_Connections_PayloadTransferFrame.PayloadHeader()} + set {_payloadHeader = newValue} + } + /// Returns true if `payloadHeader` has been explicitly set. + var hasPayloadHeader: Bool {return self._payloadHeader != nil} + /// Clears the value of `payloadHeader`. Subsequent reads from it will return its default value. + mutating func clearPayloadHeader() {self._payloadHeader = nil} + + /// Exactly one of the following fields will be set, depending on the type. + var payloadChunk: Location_Nearby_Connections_PayloadTransferFrame.PayloadChunk { + get {return _payloadChunk ?? Location_Nearby_Connections_PayloadTransferFrame.PayloadChunk()} + set {_payloadChunk = newValue} + } + /// Returns true if `payloadChunk` has been explicitly set. + var hasPayloadChunk: Bool {return self._payloadChunk != nil} + /// Clears the value of `payloadChunk`. Subsequent reads from it will return its default value. + mutating func clearPayloadChunk() {self._payloadChunk = nil} + + var controlMessage: Location_Nearby_Connections_PayloadTransferFrame.ControlMessage { + get {return _controlMessage ?? Location_Nearby_Connections_PayloadTransferFrame.ControlMessage()} + set {_controlMessage = newValue} + } + /// Returns true if `controlMessage` has been explicitly set. + var hasControlMessage: Bool {return self._controlMessage != nil} + /// Clears the value of `controlMessage`. Subsequent reads from it will return its default value. + mutating func clearControlMessage() {self._controlMessage = nil} + + var unknownFields = SwiftProtobuf.UnknownStorage() + + enum PacketType: SwiftProtobuf.Enum { + typealias RawValue = Int + case unknownPacketType // = 0 + case data // = 1 + case control // = 2 + + init() { + self = .unknownPacketType + } + + init?(rawValue: Int) { + switch rawValue { + case 0: self = .unknownPacketType + case 1: self = .data + case 2: self = .control + default: return nil + } + } + + var rawValue: Int { + switch self { + case .unknownPacketType: return 0 + case .data: return 1 + case .control: return 2 + } + } + + } + + struct PayloadHeader { + // SwiftProtobuf.Message conformance is added in an extension below. See the + // `Message` and `Message+*Additions` files in the SwiftProtobuf library for + // methods supported on all messages. + + var id: Int64 { + get {return _id ?? 0} + set {_id = newValue} + } + /// Returns true if `id` has been explicitly set. + var hasID: Bool {return self._id != nil} + /// Clears the value of `id`. Subsequent reads from it will return its default value. + mutating func clearID() {self._id = nil} + + var type: Location_Nearby_Connections_PayloadTransferFrame.PayloadHeader.PayloadType { + get {return _type ?? .unknownPayloadType} + set {_type = newValue} + } + /// Returns true if `type` has been explicitly set. + var hasType: Bool {return self._type != nil} + /// Clears the value of `type`. Subsequent reads from it will return its default value. + mutating func clearType() {self._type = nil} + + var totalSize: Int64 { + get {return _totalSize ?? 0} + set {_totalSize = newValue} + } + /// Returns true if `totalSize` has been explicitly set. + var hasTotalSize: Bool {return self._totalSize != nil} + /// Clears the value of `totalSize`. Subsequent reads from it will return its default value. + mutating func clearTotalSize() {self._totalSize = nil} + + var isSensitive: Bool { + get {return _isSensitive ?? false} + set {_isSensitive = newValue} + } + /// Returns true if `isSensitive` has been explicitly set. + var hasIsSensitive: Bool {return self._isSensitive != nil} + /// Clears the value of `isSensitive`. Subsequent reads from it will return its default value. + mutating func clearIsSensitive() {self._isSensitive = nil} + + var fileName: String { + get {return _fileName ?? String()} + set {_fileName = newValue} + } + /// Returns true if `fileName` has been explicitly set. + var hasFileName: Bool {return self._fileName != nil} + /// Clears the value of `fileName`. Subsequent reads from it will return its default value. + mutating func clearFileName() {self._fileName = nil} + + var parentFolder: String { + get {return _parentFolder ?? String()} + set {_parentFolder = newValue} + } + /// Returns true if `parentFolder` has been explicitly set. + var hasParentFolder: Bool {return self._parentFolder != nil} + /// Clears the value of `parentFolder`. Subsequent reads from it will return its default value. + mutating func clearParentFolder() {self._parentFolder = nil} + + var unknownFields = SwiftProtobuf.UnknownStorage() + + enum PayloadType: SwiftProtobuf.Enum { + typealias RawValue = Int + case unknownPayloadType // = 0 + case bytes // = 1 + case file // = 2 + case stream // = 3 + + init() { + self = .unknownPayloadType + } + + init?(rawValue: Int) { + switch rawValue { + case 0: self = .unknownPayloadType + case 1: self = .bytes + case 2: self = .file + case 3: self = .stream + default: return nil + } + } + + var rawValue: Int { + switch self { + case .unknownPayloadType: return 0 + case .bytes: return 1 + case .file: return 2 + case .stream: return 3 + } + } + + } + + init() {} + + fileprivate var _id: Int64? = nil + fileprivate var _type: Location_Nearby_Connections_PayloadTransferFrame.PayloadHeader.PayloadType? = nil + fileprivate var _totalSize: Int64? = nil + fileprivate var _isSensitive: Bool? = nil + fileprivate var _fileName: String? = nil + fileprivate var _parentFolder: String? = nil + } + + /// Accompanies DATA packets. + struct PayloadChunk { + // SwiftProtobuf.Message conformance is added in an extension below. See the + // `Message` and `Message+*Additions` files in the SwiftProtobuf library for + // methods supported on all messages. + + var flags: Int32 { + get {return _flags ?? 0} + set {_flags = newValue} + } + /// Returns true if `flags` has been explicitly set. + var hasFlags: Bool {return self._flags != nil} + /// Clears the value of `flags`. Subsequent reads from it will return its default value. + mutating func clearFlags() {self._flags = nil} + + var offset: Int64 { + get {return _offset ?? 0} + set {_offset = newValue} + } + /// Returns true if `offset` has been explicitly set. + var hasOffset: Bool {return self._offset != nil} + /// Clears the value of `offset`. Subsequent reads from it will return its default value. + mutating func clearOffset() {self._offset = nil} + + var body: Data { + get {return _body ?? Data()} + set {_body = newValue} + } + /// Returns true if `body` has been explicitly set. + var hasBody: Bool {return self._body != nil} + /// Clears the value of `body`. Subsequent reads from it will return its default value. + mutating func clearBody() {self._body = nil} + + var unknownFields = SwiftProtobuf.UnknownStorage() + + enum Flags: SwiftProtobuf.Enum { + typealias RawValue = Int + case lastChunk // = 1 + + init() { + self = .lastChunk + } + + init?(rawValue: Int) { + switch rawValue { + case 1: self = .lastChunk + default: return nil + } + } + + var rawValue: Int { + switch self { + case .lastChunk: return 1 + } + } + + } + + init() {} + + fileprivate var _flags: Int32? = nil + fileprivate var _offset: Int64? = nil + fileprivate var _body: Data? = nil + } + + /// Accompanies CONTROL packets. + struct ControlMessage { + // SwiftProtobuf.Message conformance is added in an extension below. See the + // `Message` and `Message+*Additions` files in the SwiftProtobuf library for + // methods supported on all messages. + + var event: Location_Nearby_Connections_PayloadTransferFrame.ControlMessage.EventType { + get {return _event ?? .unknownEventType} + set {_event = newValue} + } + /// Returns true if `event` has been explicitly set. + var hasEvent: Bool {return self._event != nil} + /// Clears the value of `event`. Subsequent reads from it will return its default value. + mutating func clearEvent() {self._event = nil} + + var offset: Int64 { + get {return _offset ?? 0} + set {_offset = newValue} + } + /// Returns true if `offset` has been explicitly set. + var hasOffset: Bool {return self._offset != nil} + /// Clears the value of `offset`. Subsequent reads from it will return its default value. + mutating func clearOffset() {self._offset = nil} + + var unknownFields = SwiftProtobuf.UnknownStorage() + + enum EventType: SwiftProtobuf.Enum { + typealias RawValue = Int + case unknownEventType // = 0 + case payloadError // = 1 + case payloadCanceled // = 2 + case payloadReceivedAck // = 3 + + init() { + self = .unknownEventType + } + + init?(rawValue: Int) { + switch rawValue { + case 0: self = .unknownEventType + case 1: self = .payloadError + case 2: self = .payloadCanceled + case 3: self = .payloadReceivedAck + default: return nil + } + } + + var rawValue: Int { + switch self { + case .unknownEventType: return 0 + case .payloadError: return 1 + case .payloadCanceled: return 2 + case .payloadReceivedAck: return 3 + } + } + + } + + init() {} + + fileprivate var _event: Location_Nearby_Connections_PayloadTransferFrame.ControlMessage.EventType? = nil + fileprivate var _offset: Int64? = nil + } + + init() {} + + fileprivate var _packetType: Location_Nearby_Connections_PayloadTransferFrame.PacketType? = nil + fileprivate var _payloadHeader: Location_Nearby_Connections_PayloadTransferFrame.PayloadHeader? = nil + fileprivate var _payloadChunk: Location_Nearby_Connections_PayloadTransferFrame.PayloadChunk? = nil + fileprivate var _controlMessage: Location_Nearby_Connections_PayloadTransferFrame.ControlMessage? = nil +} + +#if swift(>=4.2) + +extension Location_Nearby_Connections_PayloadTransferFrame.PacketType: CaseIterable { + // Support synthesized by the compiler. +} + +extension Location_Nearby_Connections_PayloadTransferFrame.PayloadHeader.PayloadType: CaseIterable { + // Support synthesized by the compiler. +} + +extension Location_Nearby_Connections_PayloadTransferFrame.PayloadChunk.Flags: CaseIterable { + // Support synthesized by the compiler. +} + +extension Location_Nearby_Connections_PayloadTransferFrame.ControlMessage.EventType: CaseIterable { + // Support synthesized by the compiler. +} + +#endif // swift(>=4.2) + +struct Location_Nearby_Connections_BandwidthUpgradeNegotiationFrame { + // SwiftProtobuf.Message conformance is added in an extension below. See the + // `Message` and `Message+*Additions` files in the SwiftProtobuf library for + // methods supported on all messages. + + var eventType: Location_Nearby_Connections_BandwidthUpgradeNegotiationFrame.EventType { + get {return _eventType ?? .unknownEventType} + set {_eventType = newValue} + } + /// Returns true if `eventType` has been explicitly set. + var hasEventType: Bool {return self._eventType != nil} + /// Clears the value of `eventType`. Subsequent reads from it will return its default value. + mutating func clearEventType() {self._eventType = nil} + + /// Exactly one of the following fields will be set. + var upgradePathInfo: Location_Nearby_Connections_BandwidthUpgradeNegotiationFrame.UpgradePathInfo { + get {return _upgradePathInfo ?? Location_Nearby_Connections_BandwidthUpgradeNegotiationFrame.UpgradePathInfo()} + set {_upgradePathInfo = newValue} + } + /// Returns true if `upgradePathInfo` has been explicitly set. + var hasUpgradePathInfo: Bool {return self._upgradePathInfo != nil} + /// Clears the value of `upgradePathInfo`. Subsequent reads from it will return its default value. + mutating func clearUpgradePathInfo() {self._upgradePathInfo = nil} + + var clientIntroduction: Location_Nearby_Connections_BandwidthUpgradeNegotiationFrame.ClientIntroduction { + get {return _clientIntroduction ?? Location_Nearby_Connections_BandwidthUpgradeNegotiationFrame.ClientIntroduction()} + set {_clientIntroduction = newValue} + } + /// Returns true if `clientIntroduction` has been explicitly set. + var hasClientIntroduction: Bool {return self._clientIntroduction != nil} + /// Clears the value of `clientIntroduction`. Subsequent reads from it will return its default value. + mutating func clearClientIntroduction() {self._clientIntroduction = nil} + + var clientIntroductionAck: Location_Nearby_Connections_BandwidthUpgradeNegotiationFrame.ClientIntroductionAck { + get {return _clientIntroductionAck ?? Location_Nearby_Connections_BandwidthUpgradeNegotiationFrame.ClientIntroductionAck()} + set {_clientIntroductionAck = newValue} + } + /// Returns true if `clientIntroductionAck` has been explicitly set. + var hasClientIntroductionAck: Bool {return self._clientIntroductionAck != nil} + /// Clears the value of `clientIntroductionAck`. Subsequent reads from it will return its default value. + mutating func clearClientIntroductionAck() {self._clientIntroductionAck = nil} + + var unknownFields = SwiftProtobuf.UnknownStorage() + + enum EventType: SwiftProtobuf.Enum { + typealias RawValue = Int + case unknownEventType // = 0 + case upgradePathAvailable // = 1 + case lastWriteToPriorChannel // = 2 + case safeToClosePriorChannel // = 3 + case clientIntroduction // = 4 + case upgradeFailure // = 5 + case clientIntroductionAck // = 6 + + init() { + self = .unknownEventType + } + + init?(rawValue: Int) { + switch rawValue { + case 0: self = .unknownEventType + case 1: self = .upgradePathAvailable + case 2: self = .lastWriteToPriorChannel + case 3: self = .safeToClosePriorChannel + case 4: self = .clientIntroduction + case 5: self = .upgradeFailure + case 6: self = .clientIntroductionAck + default: return nil + } + } + + var rawValue: Int { + switch self { + case .unknownEventType: return 0 + case .upgradePathAvailable: return 1 + case .lastWriteToPriorChannel: return 2 + case .safeToClosePriorChannel: return 3 + case .clientIntroduction: return 4 + case .upgradeFailure: return 5 + case .clientIntroductionAck: return 6 + } + } + + } + + /// Accompanies UPGRADE_PATH_AVAILABLE and UPGRADE_FAILURE events. + struct UpgradePathInfo { + // SwiftProtobuf.Message conformance is added in an extension below. See the + // `Message` and `Message+*Additions` files in the SwiftProtobuf library for + // methods supported on all messages. + + var medium: Location_Nearby_Connections_BandwidthUpgradeNegotiationFrame.UpgradePathInfo.Medium { + get {return _storage._medium ?? .unknownMedium} + set {_uniqueStorage()._medium = newValue} + } + /// Returns true if `medium` has been explicitly set. + var hasMedium: Bool {return _storage._medium != nil} + /// Clears the value of `medium`. Subsequent reads from it will return its default value. + mutating func clearMedium() {_uniqueStorage()._medium = nil} + + /// Exactly one of the following fields will be set. + var wifiHotspotCredentials: Location_Nearby_Connections_BandwidthUpgradeNegotiationFrame.UpgradePathInfo.WifiHotspotCredentials { + get {return _storage._wifiHotspotCredentials ?? Location_Nearby_Connections_BandwidthUpgradeNegotiationFrame.UpgradePathInfo.WifiHotspotCredentials()} + set {_uniqueStorage()._wifiHotspotCredentials = newValue} + } + /// Returns true if `wifiHotspotCredentials` has been explicitly set. + var hasWifiHotspotCredentials: Bool {return _storage._wifiHotspotCredentials != nil} + /// Clears the value of `wifiHotspotCredentials`. Subsequent reads from it will return its default value. + mutating func clearWifiHotspotCredentials() {_uniqueStorage()._wifiHotspotCredentials = nil} + + var wifiLanSocket: Location_Nearby_Connections_BandwidthUpgradeNegotiationFrame.UpgradePathInfo.WifiLanSocket { + get {return _storage._wifiLanSocket ?? Location_Nearby_Connections_BandwidthUpgradeNegotiationFrame.UpgradePathInfo.WifiLanSocket()} + set {_uniqueStorage()._wifiLanSocket = newValue} + } + /// Returns true if `wifiLanSocket` has been explicitly set. + var hasWifiLanSocket: Bool {return _storage._wifiLanSocket != nil} + /// Clears the value of `wifiLanSocket`. Subsequent reads from it will return its default value. + mutating func clearWifiLanSocket() {_uniqueStorage()._wifiLanSocket = nil} + + var bluetoothCredentials: Location_Nearby_Connections_BandwidthUpgradeNegotiationFrame.UpgradePathInfo.BluetoothCredentials { + get {return _storage._bluetoothCredentials ?? Location_Nearby_Connections_BandwidthUpgradeNegotiationFrame.UpgradePathInfo.BluetoothCredentials()} + set {_uniqueStorage()._bluetoothCredentials = newValue} + } + /// Returns true if `bluetoothCredentials` has been explicitly set. + var hasBluetoothCredentials: Bool {return _storage._bluetoothCredentials != nil} + /// Clears the value of `bluetoothCredentials`. Subsequent reads from it will return its default value. + mutating func clearBluetoothCredentials() {_uniqueStorage()._bluetoothCredentials = nil} + + var wifiAwareCredentials: Location_Nearby_Connections_BandwidthUpgradeNegotiationFrame.UpgradePathInfo.WifiAwareCredentials { + get {return _storage._wifiAwareCredentials ?? Location_Nearby_Connections_BandwidthUpgradeNegotiationFrame.UpgradePathInfo.WifiAwareCredentials()} + set {_uniqueStorage()._wifiAwareCredentials = newValue} + } + /// Returns true if `wifiAwareCredentials` has been explicitly set. + var hasWifiAwareCredentials: Bool {return _storage._wifiAwareCredentials != nil} + /// Clears the value of `wifiAwareCredentials`. Subsequent reads from it will return its default value. + mutating func clearWifiAwareCredentials() {_uniqueStorage()._wifiAwareCredentials = nil} + + var wifiDirectCredentials: Location_Nearby_Connections_BandwidthUpgradeNegotiationFrame.UpgradePathInfo.WifiDirectCredentials { + get {return _storage._wifiDirectCredentials ?? Location_Nearby_Connections_BandwidthUpgradeNegotiationFrame.UpgradePathInfo.WifiDirectCredentials()} + set {_uniqueStorage()._wifiDirectCredentials = newValue} + } + /// Returns true if `wifiDirectCredentials` has been explicitly set. + var hasWifiDirectCredentials: Bool {return _storage._wifiDirectCredentials != nil} + /// Clears the value of `wifiDirectCredentials`. Subsequent reads from it will return its default value. + mutating func clearWifiDirectCredentials() {_uniqueStorage()._wifiDirectCredentials = nil} + + var webRtcCredentials: Location_Nearby_Connections_BandwidthUpgradeNegotiationFrame.UpgradePathInfo.WebRtcCredentials { + get {return _storage._webRtcCredentials ?? Location_Nearby_Connections_BandwidthUpgradeNegotiationFrame.UpgradePathInfo.WebRtcCredentials()} + set {_uniqueStorage()._webRtcCredentials = newValue} + } + /// Returns true if `webRtcCredentials` has been explicitly set. + var hasWebRtcCredentials: Bool {return _storage._webRtcCredentials != nil} + /// Clears the value of `webRtcCredentials`. Subsequent reads from it will return its default value. + mutating func clearWebRtcCredentials() {_uniqueStorage()._webRtcCredentials = nil} + + /// Disable Encryption for this upgrade medium to improve throughput. + var supportsDisablingEncryption: Bool { + get {return _storage._supportsDisablingEncryption ?? false} + set {_uniqueStorage()._supportsDisablingEncryption = newValue} + } + /// Returns true if `supportsDisablingEncryption` has been explicitly set. + var hasSupportsDisablingEncryption: Bool {return _storage._supportsDisablingEncryption != nil} + /// Clears the value of `supportsDisablingEncryption`. Subsequent reads from it will return its default value. + mutating func clearSupportsDisablingEncryption() {_uniqueStorage()._supportsDisablingEncryption = nil} + + /// An ack will be sent after the CLIENT_INTRODUCTION frame. + var supportsClientIntroductionAck: Bool { + get {return _storage._supportsClientIntroductionAck ?? false} + set {_uniqueStorage()._supportsClientIntroductionAck = newValue} + } + /// Returns true if `supportsClientIntroductionAck` has been explicitly set. + var hasSupportsClientIntroductionAck: Bool {return _storage._supportsClientIntroductionAck != nil} + /// Clears the value of `supportsClientIntroductionAck`. Subsequent reads from it will return its default value. + mutating func clearSupportsClientIntroductionAck() {_uniqueStorage()._supportsClientIntroductionAck = nil} + + var unknownFields = SwiftProtobuf.UnknownStorage() + + /// Should always match cs/symbol:location.nearby.proto.connections.Medium + enum Medium: SwiftProtobuf.Enum { + typealias RawValue = Int + case unknownMedium // = 0 + case mdns // = 1 + case bluetooth // = 2 + case wifiHotspot // = 3 + case ble // = 4 + case wifiLan // = 5 + case wifiAware // = 6 + case nfc // = 7 + case wifiDirect // = 8 + case webRtc // = 9 + + /// 10 is reserved. + case usb // = 11 + + init() { + self = .unknownMedium + } + + init?(rawValue: Int) { + switch rawValue { + case 0: self = .unknownMedium + case 1: self = .mdns + case 2: self = .bluetooth + case 3: self = .wifiHotspot + case 4: self = .ble + case 5: self = .wifiLan + case 6: self = .wifiAware + case 7: self = .nfc + case 8: self = .wifiDirect + case 9: self = .webRtc + case 11: self = .usb + default: return nil + } + } + + var rawValue: Int { + switch self { + case .unknownMedium: return 0 + case .mdns: return 1 + case .bluetooth: return 2 + case .wifiHotspot: return 3 + case .ble: return 4 + case .wifiLan: return 5 + case .wifiAware: return 6 + case .nfc: return 7 + case .wifiDirect: return 8 + case .webRtc: return 9 + case .usb: return 11 + } + } + + } + + /// Accompanies Medium.WIFI_HOTSPOT. + struct WifiHotspotCredentials { + // SwiftProtobuf.Message conformance is added in an extension below. See the + // `Message` and `Message+*Additions` files in the SwiftProtobuf library for + // methods supported on all messages. + + var ssid: String { + get {return _ssid ?? String()} + set {_ssid = newValue} + } + /// Returns true if `ssid` has been explicitly set. + var hasSsid: Bool {return self._ssid != nil} + /// Clears the value of `ssid`. Subsequent reads from it will return its default value. + mutating func clearSsid() {self._ssid = nil} + + var password: String { + get {return _password ?? String()} + set {_password = newValue} + } + /// Returns true if `password` has been explicitly set. + var hasPassword: Bool {return self._password != nil} + /// Clears the value of `password`. Subsequent reads from it will return its default value. + mutating func clearPassword() {self._password = nil} + + var port: Int32 { + get {return _port ?? 0} + set {_port = newValue} + } + /// Returns true if `port` has been explicitly set. + var hasPort: Bool {return self._port != nil} + /// Clears the value of `port`. Subsequent reads from it will return its default value. + mutating func clearPort() {self._port = nil} + + var gateway: String { + get {return _gateway ?? "0.0.0.0"} + set {_gateway = newValue} + } + /// Returns true if `gateway` has been explicitly set. + var hasGateway: Bool {return self._gateway != nil} + /// Clears the value of `gateway`. Subsequent reads from it will return its default value. + mutating func clearGateway() {self._gateway = nil} + + /// This field can be a band or frequency + var frequency: Int32 { + get {return _frequency ?? -1} + set {_frequency = newValue} + } + /// Returns true if `frequency` has been explicitly set. + var hasFrequency: Bool {return self._frequency != nil} + /// Clears the value of `frequency`. Subsequent reads from it will return its default value. + mutating func clearFrequency() {self._frequency = nil} + + var unknownFields = SwiftProtobuf.UnknownStorage() + + init() {} + + fileprivate var _ssid: String? = nil + fileprivate var _password: String? = nil + fileprivate var _port: Int32? = nil + fileprivate var _gateway: String? = nil + fileprivate var _frequency: Int32? = nil + } + + /// Accompanies Medium.WIFI_LAN. + struct WifiLanSocket { + // SwiftProtobuf.Message conformance is added in an extension below. See the + // `Message` and `Message+*Additions` files in the SwiftProtobuf library for + // methods supported on all messages. + + var ipAddress: Data { + get {return _ipAddress ?? Data()} + set {_ipAddress = newValue} + } + /// Returns true if `ipAddress` has been explicitly set. + var hasIpAddress: Bool {return self._ipAddress != nil} + /// Clears the value of `ipAddress`. Subsequent reads from it will return its default value. + mutating func clearIpAddress() {self._ipAddress = nil} + + var wifiPort: Int32 { + get {return _wifiPort ?? 0} + set {_wifiPort = newValue} + } + /// Returns true if `wifiPort` has been explicitly set. + var hasWifiPort: Bool {return self._wifiPort != nil} + /// Clears the value of `wifiPort`. Subsequent reads from it will return its default value. + mutating func clearWifiPort() {self._wifiPort = nil} + + var unknownFields = SwiftProtobuf.UnknownStorage() + + init() {} + + fileprivate var _ipAddress: Data? = nil + fileprivate var _wifiPort: Int32? = nil + } + + /// Accompanies Medium.BLUETOOTH. + struct BluetoothCredentials { + // SwiftProtobuf.Message conformance is added in an extension below. See the + // `Message` and `Message+*Additions` files in the SwiftProtobuf library for + // methods supported on all messages. + + var serviceName: String { + get {return _serviceName ?? String()} + set {_serviceName = newValue} + } + /// Returns true if `serviceName` has been explicitly set. + var hasServiceName: Bool {return self._serviceName != nil} + /// Clears the value of `serviceName`. Subsequent reads from it will return its default value. + mutating func clearServiceName() {self._serviceName = nil} + + var macAddress: String { + get {return _macAddress ?? String()} + set {_macAddress = newValue} + } + /// Returns true if `macAddress` has been explicitly set. + var hasMacAddress: Bool {return self._macAddress != nil} + /// Clears the value of `macAddress`. Subsequent reads from it will return its default value. + mutating func clearMacAddress() {self._macAddress = nil} + + var unknownFields = SwiftProtobuf.UnknownStorage() + + init() {} + + fileprivate var _serviceName: String? = nil + fileprivate var _macAddress: String? = nil + } + + /// Accompanies Medium.WIFI_AWARE. + struct WifiAwareCredentials { + // SwiftProtobuf.Message conformance is added in an extension below. See the + // `Message` and `Message+*Additions` files in the SwiftProtobuf library for + // methods supported on all messages. + + var serviceID: String { + get {return _serviceID ?? String()} + set {_serviceID = newValue} + } + /// Returns true if `serviceID` has been explicitly set. + var hasServiceID: Bool {return self._serviceID != nil} + /// Clears the value of `serviceID`. Subsequent reads from it will return its default value. + mutating func clearServiceID() {self._serviceID = nil} + + var serviceInfo: Data { + get {return _serviceInfo ?? Data()} + set {_serviceInfo = newValue} + } + /// Returns true if `serviceInfo` has been explicitly set. + var hasServiceInfo: Bool {return self._serviceInfo != nil} + /// Clears the value of `serviceInfo`. Subsequent reads from it will return its default value. + mutating func clearServiceInfo() {self._serviceInfo = nil} + + var password: String { + get {return _password ?? String()} + set {_password = newValue} + } + /// Returns true if `password` has been explicitly set. + var hasPassword: Bool {return self._password != nil} + /// Clears the value of `password`. Subsequent reads from it will return its default value. + mutating func clearPassword() {self._password = nil} + + var unknownFields = SwiftProtobuf.UnknownStorage() + + init() {} + + fileprivate var _serviceID: String? = nil + fileprivate var _serviceInfo: Data? = nil + fileprivate var _password: String? = nil + } + + /// Accompanies Medium.WIFI_DIRECT. + struct WifiDirectCredentials { + // SwiftProtobuf.Message conformance is added in an extension below. See the + // `Message` and `Message+*Additions` files in the SwiftProtobuf library for + // methods supported on all messages. + + var ssid: String { + get {return _ssid ?? String()} + set {_ssid = newValue} + } + /// Returns true if `ssid` has been explicitly set. + var hasSsid: Bool {return self._ssid != nil} + /// Clears the value of `ssid`. Subsequent reads from it will return its default value. + mutating func clearSsid() {self._ssid = nil} + + var password: String { + get {return _password ?? String()} + set {_password = newValue} + } + /// Returns true if `password` has been explicitly set. + var hasPassword: Bool {return self._password != nil} + /// Clears the value of `password`. Subsequent reads from it will return its default value. + mutating func clearPassword() {self._password = nil} + + var port: Int32 { + get {return _port ?? 0} + set {_port = newValue} + } + /// Returns true if `port` has been explicitly set. + var hasPort: Bool {return self._port != nil} + /// Clears the value of `port`. Subsequent reads from it will return its default value. + mutating func clearPort() {self._port = nil} + + var frequency: Int32 { + get {return _frequency ?? 0} + set {_frequency = newValue} + } + /// Returns true if `frequency` has been explicitly set. + var hasFrequency: Bool {return self._frequency != nil} + /// Clears the value of `frequency`. Subsequent reads from it will return its default value. + mutating func clearFrequency() {self._frequency = nil} + + var gateway: String { + get {return _gateway ?? "0.0.0.0"} + set {_gateway = newValue} + } + /// Returns true if `gateway` has been explicitly set. + var hasGateway: Bool {return self._gateway != nil} + /// Clears the value of `gateway`. Subsequent reads from it will return its default value. + mutating func clearGateway() {self._gateway = nil} + + var unknownFields = SwiftProtobuf.UnknownStorage() + + init() {} + + fileprivate var _ssid: String? = nil + fileprivate var _password: String? = nil + fileprivate var _port: Int32? = nil + fileprivate var _frequency: Int32? = nil + fileprivate var _gateway: String? = nil + } + + /// Accompanies Medium.WEB_RTC + struct WebRtcCredentials { + // SwiftProtobuf.Message conformance is added in an extension below. See the + // `Message` and `Message+*Additions` files in the SwiftProtobuf library for + // methods supported on all messages. + + var peerID: String { + get {return _peerID ?? String()} + set {_peerID = newValue} + } + /// Returns true if `peerID` has been explicitly set. + var hasPeerID: Bool {return self._peerID != nil} + /// Clears the value of `peerID`. Subsequent reads from it will return its default value. + mutating func clearPeerID() {self._peerID = nil} + + var locationHint: Location_Nearby_Connections_LocationHint { + get {return _locationHint ?? Location_Nearby_Connections_LocationHint()} + set {_locationHint = newValue} + } + /// Returns true if `locationHint` has been explicitly set. + var hasLocationHint: Bool {return self._locationHint != nil} + /// Clears the value of `locationHint`. Subsequent reads from it will return its default value. + mutating func clearLocationHint() {self._locationHint = nil} + + var unknownFields = SwiftProtobuf.UnknownStorage() + + init() {} + + fileprivate var _peerID: String? = nil + fileprivate var _locationHint: Location_Nearby_Connections_LocationHint? = nil + } + + init() {} + + fileprivate var _storage = _StorageClass.defaultInstance + } + + /// Accompanies CLIENT_INTRODUCTION events. + struct ClientIntroduction { + // SwiftProtobuf.Message conformance is added in an extension below. See the + // `Message` and `Message+*Additions` files in the SwiftProtobuf library for + // methods supported on all messages. + + var endpointID: String { + get {return _endpointID ?? String()} + set {_endpointID = newValue} + } + /// Returns true if `endpointID` has been explicitly set. + var hasEndpointID: Bool {return self._endpointID != nil} + /// Clears the value of `endpointID`. Subsequent reads from it will return its default value. + mutating func clearEndpointID() {self._endpointID = nil} + + var supportsDisablingEncryption: Bool { + get {return _supportsDisablingEncryption ?? false} + set {_supportsDisablingEncryption = newValue} + } + /// Returns true if `supportsDisablingEncryption` has been explicitly set. + var hasSupportsDisablingEncryption: Bool {return self._supportsDisablingEncryption != nil} + /// Clears the value of `supportsDisablingEncryption`. Subsequent reads from it will return its default value. + mutating func clearSupportsDisablingEncryption() {self._supportsDisablingEncryption = nil} + + var unknownFields = SwiftProtobuf.UnknownStorage() + + init() {} + + fileprivate var _endpointID: String? = nil + fileprivate var _supportsDisablingEncryption: Bool? = nil + } + + /// Accompanies CLIENT_INTRODUCTION_ACK events. + struct ClientIntroductionAck { + // SwiftProtobuf.Message conformance is added in an extension below. See the + // `Message` and `Message+*Additions` files in the SwiftProtobuf library for + // methods supported on all messages. + + var unknownFields = SwiftProtobuf.UnknownStorage() + + init() {} + } + + init() {} + + fileprivate var _eventType: Location_Nearby_Connections_BandwidthUpgradeNegotiationFrame.EventType? = nil + fileprivate var _upgradePathInfo: Location_Nearby_Connections_BandwidthUpgradeNegotiationFrame.UpgradePathInfo? = nil + fileprivate var _clientIntroduction: Location_Nearby_Connections_BandwidthUpgradeNegotiationFrame.ClientIntroduction? = nil + fileprivate var _clientIntroductionAck: Location_Nearby_Connections_BandwidthUpgradeNegotiationFrame.ClientIntroductionAck? = nil +} + +#if swift(>=4.2) + +extension Location_Nearby_Connections_BandwidthUpgradeNegotiationFrame.EventType: CaseIterable { + // Support synthesized by the compiler. +} + +extension Location_Nearby_Connections_BandwidthUpgradeNegotiationFrame.UpgradePathInfo.Medium: CaseIterable { + // Support synthesized by the compiler. +} + +#endif // swift(>=4.2) + +struct Location_Nearby_Connections_KeepAliveFrame { + // SwiftProtobuf.Message conformance is added in an extension below. See the + // `Message` and `Message+*Additions` files in the SwiftProtobuf library for + // methods supported on all messages. + + /// And ack will be sent after receiving KEEP_ALIVE frame. + var ack: Bool { + get {return _ack ?? false} + set {_ack = newValue} + } + /// Returns true if `ack` has been explicitly set. + var hasAck: Bool {return self._ack != nil} + /// Clears the value of `ack`. Subsequent reads from it will return its default value. + mutating func clearAck() {self._ack = nil} + + var unknownFields = SwiftProtobuf.UnknownStorage() + + init() {} + + fileprivate var _ack: Bool? = nil +} + +/// Informs the remote side to immediately severe the socket connection. +/// Used in bandwidth upgrades to get around a race condition, but may be used +/// in other situations to trigger a faster disconnection event than waiting for +/// socket closed on the remote side. +struct Location_Nearby_Connections_DisconnectionFrame { + // SwiftProtobuf.Message conformance is added in an extension below. See the + // `Message` and `Message+*Additions` files in the SwiftProtobuf library for + // methods supported on all messages. + + /// Apply safe-to-disconnect protocol if true. + var requestSafeToDisconnect: Bool { + get {return _requestSafeToDisconnect ?? false} + set {_requestSafeToDisconnect = newValue} + } + /// Returns true if `requestSafeToDisconnect` has been explicitly set. + var hasRequestSafeToDisconnect: Bool {return self._requestSafeToDisconnect != nil} + /// Clears the value of `requestSafeToDisconnect`. Subsequent reads from it will return its default value. + mutating func clearRequestSafeToDisconnect() {self._requestSafeToDisconnect = nil} + + /// Ack of receiving Disconnection frame will be sent to the sender + /// frame. + var ackSafeToDisconnect: Bool { + get {return _ackSafeToDisconnect ?? false} + set {_ackSafeToDisconnect = newValue} + } + /// Returns true if `ackSafeToDisconnect` has been explicitly set. + var hasAckSafeToDisconnect: Bool {return self._ackSafeToDisconnect != nil} + /// Clears the value of `ackSafeToDisconnect`. Subsequent reads from it will return its default value. + mutating func clearAckSafeToDisconnect() {self._ackSafeToDisconnect = nil} + + var unknownFields = SwiftProtobuf.UnknownStorage() + + init() {} + + fileprivate var _requestSafeToDisconnect: Bool? = nil + fileprivate var _ackSafeToDisconnect: Bool? = nil +} + +/// A paired key encryption packet sent between devices, contains signed data. +struct Location_Nearby_Connections_PairedKeyEncryptionFrame { + // SwiftProtobuf.Message conformance is added in an extension below. See the + // `Message` and `Message+*Additions` files in the SwiftProtobuf library for + // methods supported on all messages. + + /// The encrypted data (raw authentication token for the established + /// connection) in byte array format. + var signedData: Data { + get {return _signedData ?? Data()} + set {_signedData = newValue} + } + /// Returns true if `signedData` has been explicitly set. + var hasSignedData: Bool {return self._signedData != nil} + /// Clears the value of `signedData`. Subsequent reads from it will return its default value. + mutating func clearSignedData() {self._signedData = nil} + + var unknownFields = SwiftProtobuf.UnknownStorage() + + init() {} + + fileprivate var _signedData: Data? = nil +} + +struct Location_Nearby_Connections_MediumMetadata { + // SwiftProtobuf.Message conformance is added in an extension below. See the + // `Message` and `Message+*Additions` files in the SwiftProtobuf library for + // methods supported on all messages. + + /// True if local device supports 5GHz. + var supports5Ghz: Bool { + get {return _supports5Ghz ?? false} + set {_supports5Ghz = newValue} + } + /// Returns true if `supports5Ghz` has been explicitly set. + var hasSupports5Ghz: Bool {return self._supports5Ghz != nil} + /// Clears the value of `supports5Ghz`. Subsequent reads from it will return its default value. + mutating func clearSupports5Ghz() {self._supports5Ghz = nil} + + /// WiFi LAN BSSID, in the form of a six-byte MAC address: XX:XX:XX:XX:XX:XX + var bssid: String { + get {return _bssid ?? String()} + set {_bssid = newValue} + } + /// Returns true if `bssid` has been explicitly set. + var hasBssid: Bool {return self._bssid != nil} + /// Clears the value of `bssid`. Subsequent reads from it will return its default value. + mutating func clearBssid() {self._bssid = nil} + + /// IP address, in network byte order: the highest order byte of the address is + /// in byte[0]. + var ipAddress: Data { + get {return _ipAddress ?? Data()} + set {_ipAddress = newValue} + } + /// Returns true if `ipAddress` has been explicitly set. + var hasIpAddress: Bool {return self._ipAddress != nil} + /// Clears the value of `ipAddress`. Subsequent reads from it will return its default value. + mutating func clearIpAddress() {self._ipAddress = nil} + + /// True if local device supports 6GHz. + var supports6Ghz: Bool { + get {return _supports6Ghz ?? false} + set {_supports6Ghz = newValue} + } + /// Returns true if `supports6Ghz` has been explicitly set. + var hasSupports6Ghz: Bool {return self._supports6Ghz != nil} + /// Clears the value of `supports6Ghz`. Subsequent reads from it will return its default value. + mutating func clearSupports6Ghz() {self._supports6Ghz = nil} + + /// True if local device has mobile radio. + var mobileRadio: Bool { + get {return _mobileRadio ?? false} + set {_mobileRadio = newValue} + } + /// Returns true if `mobileRadio` has been explicitly set. + var hasMobileRadio: Bool {return self._mobileRadio != nil} + /// Clears the value of `mobileRadio`. Subsequent reads from it will return its default value. + mutating func clearMobileRadio() {self._mobileRadio = nil} + + /// The frequency of the WiFi LAN AP(in MHz). Or -1 is not associated with an + /// AP over WiFi, -2 represents the active network uses an Ethernet transport. + var apFrequency: Int32 { + get {return _apFrequency ?? -1} + set {_apFrequency = newValue} + } + /// Returns true if `apFrequency` has been explicitly set. + var hasApFrequency: Bool {return self._apFrequency != nil} + /// Clears the value of `apFrequency`. Subsequent reads from it will return its default value. + mutating func clearApFrequency() {self._apFrequency = nil} + + /// Available channels on the local device. + var availableChannels: Location_Nearby_Connections_AvailableChannels { + get {return _availableChannels ?? Location_Nearby_Connections_AvailableChannels()} + set {_availableChannels = newValue} + } + /// Returns true if `availableChannels` has been explicitly set. + var hasAvailableChannels: Bool {return self._availableChannels != nil} + /// Clears the value of `availableChannels`. Subsequent reads from it will return its default value. + mutating func clearAvailableChannels() {self._availableChannels = nil} + + /// Usable WiFi Direct client channels on the local device. + var wifiDirectCliUsableChannels: Location_Nearby_Connections_WifiDirectCliUsableChannels { + get {return _wifiDirectCliUsableChannels ?? Location_Nearby_Connections_WifiDirectCliUsableChannels()} + set {_wifiDirectCliUsableChannels = newValue} + } + /// Returns true if `wifiDirectCliUsableChannels` has been explicitly set. + var hasWifiDirectCliUsableChannels: Bool {return self._wifiDirectCliUsableChannels != nil} + /// Clears the value of `wifiDirectCliUsableChannels`. Subsequent reads from it will return its default value. + mutating func clearWifiDirectCliUsableChannels() {self._wifiDirectCliUsableChannels = nil} + + /// Usable WiFi LAN channels on the local device. + var wifiLanUsableChannels: Location_Nearby_Connections_WifiLanUsableChannels { + get {return _wifiLanUsableChannels ?? Location_Nearby_Connections_WifiLanUsableChannels()} + set {_wifiLanUsableChannels = newValue} + } + /// Returns true if `wifiLanUsableChannels` has been explicitly set. + var hasWifiLanUsableChannels: Bool {return self._wifiLanUsableChannels != nil} + /// Clears the value of `wifiLanUsableChannels`. Subsequent reads from it will return its default value. + mutating func clearWifiLanUsableChannels() {self._wifiLanUsableChannels = nil} + + /// Usable WiFi Aware channels on the local device. + var wifiAwareUsableChannels: Location_Nearby_Connections_WifiAwareUsableChannels { + get {return _wifiAwareUsableChannels ?? Location_Nearby_Connections_WifiAwareUsableChannels()} + set {_wifiAwareUsableChannels = newValue} + } + /// Returns true if `wifiAwareUsableChannels` has been explicitly set. + var hasWifiAwareUsableChannels: Bool {return self._wifiAwareUsableChannels != nil} + /// Clears the value of `wifiAwareUsableChannels`. Subsequent reads from it will return its default value. + mutating func clearWifiAwareUsableChannels() {self._wifiAwareUsableChannels = nil} + + /// Usable WiFi Hotspot STA channels on the local device. + var wifiHotspotStaUsableChannels: Location_Nearby_Connections_WifiHotspotStaUsableChannels { + get {return _wifiHotspotStaUsableChannels ?? Location_Nearby_Connections_WifiHotspotStaUsableChannels()} + set {_wifiHotspotStaUsableChannels = newValue} + } + /// Returns true if `wifiHotspotStaUsableChannels` has been explicitly set. + var hasWifiHotspotStaUsableChannels: Bool {return self._wifiHotspotStaUsableChannels != nil} + /// Clears the value of `wifiHotspotStaUsableChannels`. Subsequent reads from it will return its default value. + mutating func clearWifiHotspotStaUsableChannels() {self._wifiHotspotStaUsableChannels = nil} + + var unknownFields = SwiftProtobuf.UnknownStorage() + + init() {} + + fileprivate var _supports5Ghz: Bool? = nil + fileprivate var _bssid: String? = nil + fileprivate var _ipAddress: Data? = nil + fileprivate var _supports6Ghz: Bool? = nil + fileprivate var _mobileRadio: Bool? = nil + fileprivate var _apFrequency: Int32? = nil + fileprivate var _availableChannels: Location_Nearby_Connections_AvailableChannels? = nil + fileprivate var _wifiDirectCliUsableChannels: Location_Nearby_Connections_WifiDirectCliUsableChannels? = nil + fileprivate var _wifiLanUsableChannels: Location_Nearby_Connections_WifiLanUsableChannels? = nil + fileprivate var _wifiAwareUsableChannels: Location_Nearby_Connections_WifiAwareUsableChannels? = nil + fileprivate var _wifiHotspotStaUsableChannels: Location_Nearby_Connections_WifiHotspotStaUsableChannels? = nil +} + +/// Available channels on the local device. +struct Location_Nearby_Connections_AvailableChannels { + // SwiftProtobuf.Message conformance is added in an extension below. See the + // `Message` and `Message+*Additions` files in the SwiftProtobuf library for + // methods supported on all messages. + + var channels: [Int32] = [] + + var unknownFields = SwiftProtobuf.UnknownStorage() + + init() {} +} + +/// Usable WiFi Direct client channels on the local device. +struct Location_Nearby_Connections_WifiDirectCliUsableChannels { + // SwiftProtobuf.Message conformance is added in an extension below. See the + // `Message` and `Message+*Additions` files in the SwiftProtobuf library for + // methods supported on all messages. + + var channels: [Int32] = [] + + var unknownFields = SwiftProtobuf.UnknownStorage() + + init() {} +} + +/// Usable WiFi LAN channels on the local device. +struct Location_Nearby_Connections_WifiLanUsableChannels { + // SwiftProtobuf.Message conformance is added in an extension below. See the + // `Message` and `Message+*Additions` files in the SwiftProtobuf library for + // methods supported on all messages. + + var channels: [Int32] = [] + + var unknownFields = SwiftProtobuf.UnknownStorage() + + init() {} +} + +/// Usable WiFi Aware channels on the local device. +struct Location_Nearby_Connections_WifiAwareUsableChannels { + // SwiftProtobuf.Message conformance is added in an extension below. See the + // `Message` and `Message+*Additions` files in the SwiftProtobuf library for + // methods supported on all messages. + + var channels: [Int32] = [] + + var unknownFields = SwiftProtobuf.UnknownStorage() + + init() {} +} + +/// Usable WiFi Hotspot STA channels on the local device. +struct Location_Nearby_Connections_WifiHotspotStaUsableChannels { + // SwiftProtobuf.Message conformance is added in an extension below. See the + // `Message` and `Message+*Additions` files in the SwiftProtobuf library for + // methods supported on all messages. + + var channels: [Int32] = [] + + var unknownFields = SwiftProtobuf.UnknownStorage() + + init() {} +} + +/// LocationHint is used to specify a location as well as format. +struct Location_Nearby_Connections_LocationHint { + // SwiftProtobuf.Message conformance is added in an extension below. See the + // `Message` and `Message+*Additions` files in the SwiftProtobuf library for + // methods supported on all messages. + + /// Location is the location, provided in the format specified by format. + var location: String { + get {return _location ?? String()} + set {_location = newValue} + } + /// Returns true if `location` has been explicitly set. + var hasLocation: Bool {return self._location != nil} + /// Clears the value of `location`. Subsequent reads from it will return its default value. + mutating func clearLocation() {self._location = nil} + + /// the format of location. + var format: Location_Nearby_Connections_LocationStandard.Format { + get {return _format ?? .unknown} + set {_format = newValue} + } + /// Returns true if `format` has been explicitly set. + var hasFormat: Bool {return self._format != nil} + /// Clears the value of `format`. Subsequent reads from it will return its default value. + mutating func clearFormat() {self._format = nil} + + var unknownFields = SwiftProtobuf.UnknownStorage() + + init() {} + + fileprivate var _location: String? = nil + fileprivate var _format: Location_Nearby_Connections_LocationStandard.Format? = nil +} + +struct Location_Nearby_Connections_LocationStandard { + // SwiftProtobuf.Message conformance is added in an extension below. See the + // `Message` and `Message+*Additions` files in the SwiftProtobuf library for + // methods supported on all messages. + + var unknownFields = SwiftProtobuf.UnknownStorage() + + enum Format: SwiftProtobuf.Enum { + typealias RawValue = Int + case unknown // = 0 + + /// E164 country codes: + /// https://en.wikipedia.org/wiki/List_of_country_calling_codes + /// e.g. +1 for USA + case e164Calling // = 1 + + /// ISO 3166-1 alpha-2 country codes: + /// https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2 + case iso31661Alpha2 // = 2 + + init() { + self = .unknown + } + + init?(rawValue: Int) { + switch rawValue { + case 0: self = .unknown + case 1: self = .e164Calling + case 2: self = .iso31661Alpha2 + default: return nil + } + } + + var rawValue: Int { + switch self { + case .unknown: return 0 + case .e164Calling: return 1 + case .iso31661Alpha2: return 2 + } + } + + } + + init() {} +} + +#if swift(>=4.2) + +extension Location_Nearby_Connections_LocationStandard.Format: CaseIterable { + // Support synthesized by the compiler. +} + +#endif // swift(>=4.2) + +/// Device capability for OS information. +struct Location_Nearby_Connections_OsInfo { + // SwiftProtobuf.Message conformance is added in an extension below. See the + // `Message` and `Message+*Additions` files in the SwiftProtobuf library for + // methods supported on all messages. + + var type: Location_Nearby_Connections_OsInfo.OsType { + get {return _type ?? .unknownOsType} + set {_type = newValue} + } + /// Returns true if `type` has been explicitly set. + var hasType: Bool {return self._type != nil} + /// Clears the value of `type`. Subsequent reads from it will return its default value. + mutating func clearType() {self._type = nil} + + var unknownFields = SwiftProtobuf.UnknownStorage() + + enum OsType: SwiftProtobuf.Enum { + typealias RawValue = Int + case unknownOsType // = 0 + case android // = 1 + case chromeOs // = 2 + case windows // = 3 + case apple // = 4 + + /// g3 test environment + case linux // = 100 + + init() { + self = .unknownOsType + } + + init?(rawValue: Int) { + switch rawValue { + case 0: self = .unknownOsType + case 1: self = .android + case 2: self = .chromeOs + case 3: self = .windows + case 4: self = .apple + case 100: self = .linux + default: return nil + } + } + + var rawValue: Int { + switch self { + case .unknownOsType: return 0 + case .android: return 1 + case .chromeOs: return 2 + case .windows: return 3 + case .apple: return 4 + case .linux: return 100 + } + } + + } + + init() {} + + fileprivate var _type: Location_Nearby_Connections_OsInfo.OsType? = nil +} + +#if swift(>=4.2) + +extension Location_Nearby_Connections_OsInfo.OsType: CaseIterable { + // Support synthesized by the compiler. +} + +#endif // swift(>=4.2) + +#if swift(>=5.5) && canImport(_Concurrency) +extension Location_Nearby_Connections_OfflineFrame: @unchecked Sendable {} +extension Location_Nearby_Connections_OfflineFrame.Version: @unchecked Sendable {} +extension Location_Nearby_Connections_V1Frame: @unchecked Sendable {} +extension Location_Nearby_Connections_V1Frame.FrameType: @unchecked Sendable {} +extension Location_Nearby_Connections_ConnectionRequestFrame: @unchecked Sendable {} +extension Location_Nearby_Connections_ConnectionRequestFrame.Medium: @unchecked Sendable {} +extension Location_Nearby_Connections_ConnectionResponseFrame: @unchecked Sendable {} +extension Location_Nearby_Connections_ConnectionResponseFrame.ResponseStatus: @unchecked Sendable {} +extension Location_Nearby_Connections_PayloadTransferFrame: @unchecked Sendable {} +extension Location_Nearby_Connections_PayloadTransferFrame.PacketType: @unchecked Sendable {} +extension Location_Nearby_Connections_PayloadTransferFrame.PayloadHeader: @unchecked Sendable {} +extension Location_Nearby_Connections_PayloadTransferFrame.PayloadHeader.PayloadType: @unchecked Sendable {} +extension Location_Nearby_Connections_PayloadTransferFrame.PayloadChunk: @unchecked Sendable {} +extension Location_Nearby_Connections_PayloadTransferFrame.PayloadChunk.Flags: @unchecked Sendable {} +extension Location_Nearby_Connections_PayloadTransferFrame.ControlMessage: @unchecked Sendable {} +extension Location_Nearby_Connections_PayloadTransferFrame.ControlMessage.EventType: @unchecked Sendable {} +extension Location_Nearby_Connections_BandwidthUpgradeNegotiationFrame: @unchecked Sendable {} +extension Location_Nearby_Connections_BandwidthUpgradeNegotiationFrame.EventType: @unchecked Sendable {} +extension Location_Nearby_Connections_BandwidthUpgradeNegotiationFrame.UpgradePathInfo: @unchecked Sendable {} +extension Location_Nearby_Connections_BandwidthUpgradeNegotiationFrame.UpgradePathInfo.Medium: @unchecked Sendable {} +extension Location_Nearby_Connections_BandwidthUpgradeNegotiationFrame.UpgradePathInfo.WifiHotspotCredentials: @unchecked Sendable {} +extension Location_Nearby_Connections_BandwidthUpgradeNegotiationFrame.UpgradePathInfo.WifiLanSocket: @unchecked Sendable {} +extension Location_Nearby_Connections_BandwidthUpgradeNegotiationFrame.UpgradePathInfo.BluetoothCredentials: @unchecked Sendable {} +extension Location_Nearby_Connections_BandwidthUpgradeNegotiationFrame.UpgradePathInfo.WifiAwareCredentials: @unchecked Sendable {} +extension Location_Nearby_Connections_BandwidthUpgradeNegotiationFrame.UpgradePathInfo.WifiDirectCredentials: @unchecked Sendable {} +extension Location_Nearby_Connections_BandwidthUpgradeNegotiationFrame.UpgradePathInfo.WebRtcCredentials: @unchecked Sendable {} +extension Location_Nearby_Connections_BandwidthUpgradeNegotiationFrame.ClientIntroduction: @unchecked Sendable {} +extension Location_Nearby_Connections_BandwidthUpgradeNegotiationFrame.ClientIntroductionAck: @unchecked Sendable {} +extension Location_Nearby_Connections_KeepAliveFrame: @unchecked Sendable {} +extension Location_Nearby_Connections_DisconnectionFrame: @unchecked Sendable {} +extension Location_Nearby_Connections_PairedKeyEncryptionFrame: @unchecked Sendable {} +extension Location_Nearby_Connections_MediumMetadata: @unchecked Sendable {} +extension Location_Nearby_Connections_AvailableChannels: @unchecked Sendable {} +extension Location_Nearby_Connections_WifiDirectCliUsableChannels: @unchecked Sendable {} +extension Location_Nearby_Connections_WifiLanUsableChannels: @unchecked Sendable {} +extension Location_Nearby_Connections_WifiAwareUsableChannels: @unchecked Sendable {} +extension Location_Nearby_Connections_WifiHotspotStaUsableChannels: @unchecked Sendable {} +extension Location_Nearby_Connections_LocationHint: @unchecked Sendable {} +extension Location_Nearby_Connections_LocationStandard: @unchecked Sendable {} +extension Location_Nearby_Connections_LocationStandard.Format: @unchecked Sendable {} +extension Location_Nearby_Connections_OsInfo: @unchecked Sendable {} +extension Location_Nearby_Connections_OsInfo.OsType: @unchecked Sendable {} +#endif // swift(>=5.5) && canImport(_Concurrency) + +// MARK: - Code below here is support for the SwiftProtobuf runtime. + +fileprivate let _protobuf_package = "location.nearby.connections" + +extension Location_Nearby_Connections_OfflineFrame: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let protoMessageName: String = _protobuf_package + ".OfflineFrame" + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 1: .same(proto: "version"), + 2: .same(proto: "v1"), + ] + + mutating func decodeMessage(decoder: inout D) throws { + while let fieldNumber = try decoder.nextFieldNumber() { + // The use of inline closures is to circumvent an issue where the compiler + // allocates stack space for every case branch when no optimizations are + // enabled. https://github.com/apple/swift-protobuf/issues/1034 + switch fieldNumber { + case 1: try { try decoder.decodeSingularEnumField(value: &self._version) }() + case 2: try { try decoder.decodeSingularMessageField(value: &self._v1) }() + default: break + } + } + } + + func traverse(visitor: inout V) throws { + // The use of inline closures is to circumvent an issue where the compiler + // allocates stack space for every if/case branch local when no optimizations + // are enabled. https://github.com/apple/swift-protobuf/issues/1034 and + // https://github.com/apple/swift-protobuf/issues/1182 + try { if let v = self._version { + try visitor.visitSingularEnumField(value: v, fieldNumber: 1) + } }() + try { if let v = self._v1 { + try visitor.visitSingularMessageField(value: v, fieldNumber: 2) + } }() + try unknownFields.traverse(visitor: &visitor) + } + + static func ==(lhs: Location_Nearby_Connections_OfflineFrame, rhs: Location_Nearby_Connections_OfflineFrame) -> Bool { + if lhs._version != rhs._version {return false} + if lhs._v1 != rhs._v1 {return false} + if lhs.unknownFields != rhs.unknownFields {return false} + return true + } +} + +extension Location_Nearby_Connections_OfflineFrame.Version: SwiftProtobuf._ProtoNameProviding { + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 0: .same(proto: "UNKNOWN_VERSION"), + 1: .same(proto: "V1"), + ] +} + +extension Location_Nearby_Connections_V1Frame: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let protoMessageName: String = _protobuf_package + ".V1Frame" + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 1: .same(proto: "type"), + 2: .standard(proto: "connection_request"), + 3: .standard(proto: "connection_response"), + 4: .standard(proto: "payload_transfer"), + 5: .standard(proto: "bandwidth_upgrade_negotiation"), + 6: .standard(proto: "keep_alive"), + 7: .same(proto: "disconnection"), + 8: .standard(proto: "paired_key_encryption"), + ] + + fileprivate class _StorageClass { + var _type: Location_Nearby_Connections_V1Frame.FrameType? = nil + var _connectionRequest: Location_Nearby_Connections_ConnectionRequestFrame? = nil + var _connectionResponse: Location_Nearby_Connections_ConnectionResponseFrame? = nil + var _payloadTransfer: Location_Nearby_Connections_PayloadTransferFrame? = nil + var _bandwidthUpgradeNegotiation: Location_Nearby_Connections_BandwidthUpgradeNegotiationFrame? = nil + var _keepAlive: Location_Nearby_Connections_KeepAliveFrame? = nil + var _disconnection: Location_Nearby_Connections_DisconnectionFrame? = nil + var _pairedKeyEncryption: Location_Nearby_Connections_PairedKeyEncryptionFrame? = nil + + static let defaultInstance = _StorageClass() + + private init() {} + + init(copying source: _StorageClass) { + _type = source._type + _connectionRequest = source._connectionRequest + _connectionResponse = source._connectionResponse + _payloadTransfer = source._payloadTransfer + _bandwidthUpgradeNegotiation = source._bandwidthUpgradeNegotiation + _keepAlive = source._keepAlive + _disconnection = source._disconnection + _pairedKeyEncryption = source._pairedKeyEncryption + } + } + + fileprivate mutating func _uniqueStorage() -> _StorageClass { + if !isKnownUniquelyReferenced(&_storage) { + _storage = _StorageClass(copying: _storage) + } + return _storage + } + + mutating func decodeMessage(decoder: inout D) throws { + _ = _uniqueStorage() + try withExtendedLifetime(_storage) { (_storage: _StorageClass) in + while let fieldNumber = try decoder.nextFieldNumber() { + // The use of inline closures is to circumvent an issue where the compiler + // allocates stack space for every case branch when no optimizations are + // enabled. https://github.com/apple/swift-protobuf/issues/1034 + switch fieldNumber { + case 1: try { try decoder.decodeSingularEnumField(value: &_storage._type) }() + case 2: try { try decoder.decodeSingularMessageField(value: &_storage._connectionRequest) }() + case 3: try { try decoder.decodeSingularMessageField(value: &_storage._connectionResponse) }() + case 4: try { try decoder.decodeSingularMessageField(value: &_storage._payloadTransfer) }() + case 5: try { try decoder.decodeSingularMessageField(value: &_storage._bandwidthUpgradeNegotiation) }() + case 6: try { try decoder.decodeSingularMessageField(value: &_storage._keepAlive) }() + case 7: try { try decoder.decodeSingularMessageField(value: &_storage._disconnection) }() + case 8: try { try decoder.decodeSingularMessageField(value: &_storage._pairedKeyEncryption) }() + default: break + } + } + } + } + + func traverse(visitor: inout V) throws { + try withExtendedLifetime(_storage) { (_storage: _StorageClass) in + // The use of inline closures is to circumvent an issue where the compiler + // allocates stack space for every if/case branch local when no optimizations + // are enabled. https://github.com/apple/swift-protobuf/issues/1034 and + // https://github.com/apple/swift-protobuf/issues/1182 + try { if let v = _storage._type { + try visitor.visitSingularEnumField(value: v, fieldNumber: 1) + } }() + try { if let v = _storage._connectionRequest { + try visitor.visitSingularMessageField(value: v, fieldNumber: 2) + } }() + try { if let v = _storage._connectionResponse { + try visitor.visitSingularMessageField(value: v, fieldNumber: 3) + } }() + try { if let v = _storage._payloadTransfer { + try visitor.visitSingularMessageField(value: v, fieldNumber: 4) + } }() + try { if let v = _storage._bandwidthUpgradeNegotiation { + try visitor.visitSingularMessageField(value: v, fieldNumber: 5) + } }() + try { if let v = _storage._keepAlive { + try visitor.visitSingularMessageField(value: v, fieldNumber: 6) + } }() + try { if let v = _storage._disconnection { + try visitor.visitSingularMessageField(value: v, fieldNumber: 7) + } }() + try { if let v = _storage._pairedKeyEncryption { + try visitor.visitSingularMessageField(value: v, fieldNumber: 8) + } }() + } + try unknownFields.traverse(visitor: &visitor) + } + + static func ==(lhs: Location_Nearby_Connections_V1Frame, rhs: Location_Nearby_Connections_V1Frame) -> Bool { + if lhs._storage !== rhs._storage { + let storagesAreEqual: Bool = withExtendedLifetime((lhs._storage, rhs._storage)) { (_args: (_StorageClass, _StorageClass)) in + let _storage = _args.0 + let rhs_storage = _args.1 + if _storage._type != rhs_storage._type {return false} + if _storage._connectionRequest != rhs_storage._connectionRequest {return false} + if _storage._connectionResponse != rhs_storage._connectionResponse {return false} + if _storage._payloadTransfer != rhs_storage._payloadTransfer {return false} + if _storage._bandwidthUpgradeNegotiation != rhs_storage._bandwidthUpgradeNegotiation {return false} + if _storage._keepAlive != rhs_storage._keepAlive {return false} + if _storage._disconnection != rhs_storage._disconnection {return false} + if _storage._pairedKeyEncryption != rhs_storage._pairedKeyEncryption {return false} + return true + } + if !storagesAreEqual {return false} + } + if lhs.unknownFields != rhs.unknownFields {return false} + return true + } +} + +extension Location_Nearby_Connections_V1Frame.FrameType: SwiftProtobuf._ProtoNameProviding { + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 0: .same(proto: "UNKNOWN_FRAME_TYPE"), + 1: .same(proto: "CONNECTION_REQUEST"), + 2: .same(proto: "CONNECTION_RESPONSE"), + 3: .same(proto: "PAYLOAD_TRANSFER"), + 4: .same(proto: "BANDWIDTH_UPGRADE_NEGOTIATION"), + 5: .same(proto: "KEEP_ALIVE"), + 6: .same(proto: "DISCONNECTION"), + 7: .same(proto: "PAIRED_KEY_ENCRYPTION"), + ] +} + +extension Location_Nearby_Connections_ConnectionRequestFrame: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let protoMessageName: String = _protobuf_package + ".ConnectionRequestFrame" + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 1: .standard(proto: "endpoint_id"), + 2: .standard(proto: "endpoint_name"), + 3: .standard(proto: "handshake_data"), + 4: .same(proto: "nonce"), + 5: .same(proto: "mediums"), + 6: .standard(proto: "endpoint_info"), + 7: .standard(proto: "medium_metadata"), + 8: .standard(proto: "keep_alive_interval_millis"), + 9: .standard(proto: "keep_alive_timeout_millis"), + 10: .standard(proto: "device_type"), + 11: .standard(proto: "device_info"), + ] + + fileprivate class _StorageClass { + var _endpointID: String? = nil + var _endpointName: String? = nil + var _handshakeData: Data? = nil + var _nonce: Int32? = nil + var _mediums: [Location_Nearby_Connections_ConnectionRequestFrame.Medium] = [] + var _endpointInfo: Data? = nil + var _mediumMetadata: Location_Nearby_Connections_MediumMetadata? = nil + var _keepAliveIntervalMillis: Int32? = nil + var _keepAliveTimeoutMillis: Int32? = nil + var _deviceType: Int32? = nil + var _deviceInfo: Data? = nil + + static let defaultInstance = _StorageClass() + + private init() {} + + init(copying source: _StorageClass) { + _endpointID = source._endpointID + _endpointName = source._endpointName + _handshakeData = source._handshakeData + _nonce = source._nonce + _mediums = source._mediums + _endpointInfo = source._endpointInfo + _mediumMetadata = source._mediumMetadata + _keepAliveIntervalMillis = source._keepAliveIntervalMillis + _keepAliveTimeoutMillis = source._keepAliveTimeoutMillis + _deviceType = source._deviceType + _deviceInfo = source._deviceInfo + } + } + + fileprivate mutating func _uniqueStorage() -> _StorageClass { + if !isKnownUniquelyReferenced(&_storage) { + _storage = _StorageClass(copying: _storage) + } + return _storage + } + + mutating func decodeMessage(decoder: inout D) throws { + _ = _uniqueStorage() + try withExtendedLifetime(_storage) { (_storage: _StorageClass) in + while let fieldNumber = try decoder.nextFieldNumber() { + // The use of inline closures is to circumvent an issue where the compiler + // allocates stack space for every case branch when no optimizations are + // enabled. https://github.com/apple/swift-protobuf/issues/1034 + switch fieldNumber { + case 1: try { try decoder.decodeSingularStringField(value: &_storage._endpointID) }() + case 2: try { try decoder.decodeSingularStringField(value: &_storage._endpointName) }() + case 3: try { try decoder.decodeSingularBytesField(value: &_storage._handshakeData) }() + case 4: try { try decoder.decodeSingularInt32Field(value: &_storage._nonce) }() + case 5: try { try decoder.decodeRepeatedEnumField(value: &_storage._mediums) }() + case 6: try { try decoder.decodeSingularBytesField(value: &_storage._endpointInfo) }() + case 7: try { try decoder.decodeSingularMessageField(value: &_storage._mediumMetadata) }() + case 8: try { try decoder.decodeSingularInt32Field(value: &_storage._keepAliveIntervalMillis) }() + case 9: try { try decoder.decodeSingularInt32Field(value: &_storage._keepAliveTimeoutMillis) }() + case 10: try { try decoder.decodeSingularInt32Field(value: &_storage._deviceType) }() + case 11: try { try decoder.decodeSingularBytesField(value: &_storage._deviceInfo) }() + default: break + } + } + } + } + + func traverse(visitor: inout V) throws { + try withExtendedLifetime(_storage) { (_storage: _StorageClass) in + // The use of inline closures is to circumvent an issue where the compiler + // allocates stack space for every if/case branch local when no optimizations + // are enabled. https://github.com/apple/swift-protobuf/issues/1034 and + // https://github.com/apple/swift-protobuf/issues/1182 + try { if let v = _storage._endpointID { + try visitor.visitSingularStringField(value: v, fieldNumber: 1) + } }() + try { if let v = _storage._endpointName { + try visitor.visitSingularStringField(value: v, fieldNumber: 2) + } }() + try { if let v = _storage._handshakeData { + try visitor.visitSingularBytesField(value: v, fieldNumber: 3) + } }() + try { if let v = _storage._nonce { + try visitor.visitSingularInt32Field(value: v, fieldNumber: 4) + } }() + if !_storage._mediums.isEmpty { + try visitor.visitRepeatedEnumField(value: _storage._mediums, fieldNumber: 5) + } + try { if let v = _storage._endpointInfo { + try visitor.visitSingularBytesField(value: v, fieldNumber: 6) + } }() + try { if let v = _storage._mediumMetadata { + try visitor.visitSingularMessageField(value: v, fieldNumber: 7) + } }() + try { if let v = _storage._keepAliveIntervalMillis { + try visitor.visitSingularInt32Field(value: v, fieldNumber: 8) + } }() + try { if let v = _storage._keepAliveTimeoutMillis { + try visitor.visitSingularInt32Field(value: v, fieldNumber: 9) + } }() + try { if let v = _storage._deviceType { + try visitor.visitSingularInt32Field(value: v, fieldNumber: 10) + } }() + try { if let v = _storage._deviceInfo { + try visitor.visitSingularBytesField(value: v, fieldNumber: 11) + } }() + } + try unknownFields.traverse(visitor: &visitor) + } + + static func ==(lhs: Location_Nearby_Connections_ConnectionRequestFrame, rhs: Location_Nearby_Connections_ConnectionRequestFrame) -> Bool { + if lhs._storage !== rhs._storage { + let storagesAreEqual: Bool = withExtendedLifetime((lhs._storage, rhs._storage)) { (_args: (_StorageClass, _StorageClass)) in + let _storage = _args.0 + let rhs_storage = _args.1 + if _storage._endpointID != rhs_storage._endpointID {return false} + if _storage._endpointName != rhs_storage._endpointName {return false} + if _storage._handshakeData != rhs_storage._handshakeData {return false} + if _storage._nonce != rhs_storage._nonce {return false} + if _storage._mediums != rhs_storage._mediums {return false} + if _storage._endpointInfo != rhs_storage._endpointInfo {return false} + if _storage._mediumMetadata != rhs_storage._mediumMetadata {return false} + if _storage._keepAliveIntervalMillis != rhs_storage._keepAliveIntervalMillis {return false} + if _storage._keepAliveTimeoutMillis != rhs_storage._keepAliveTimeoutMillis {return false} + if _storage._deviceType != rhs_storage._deviceType {return false} + if _storage._deviceInfo != rhs_storage._deviceInfo {return false} + return true + } + if !storagesAreEqual {return false} + } + if lhs.unknownFields != rhs.unknownFields {return false} + return true + } +} + +extension Location_Nearby_Connections_ConnectionRequestFrame.Medium: SwiftProtobuf._ProtoNameProviding { + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 0: .same(proto: "UNKNOWN_MEDIUM"), + 1: .same(proto: "MDNS"), + 2: .same(proto: "BLUETOOTH"), + 3: .same(proto: "WIFI_HOTSPOT"), + 4: .same(proto: "BLE"), + 5: .same(proto: "WIFI_LAN"), + 6: .same(proto: "WIFI_AWARE"), + 7: .same(proto: "NFC"), + 8: .same(proto: "WIFI_DIRECT"), + 9: .same(proto: "WEB_RTC"), + 10: .same(proto: "BLE_L2CAP"), + 11: .same(proto: "USB"), + ] +} + +extension Location_Nearby_Connections_ConnectionResponseFrame: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let protoMessageName: String = _protobuf_package + ".ConnectionResponseFrame" + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 1: .same(proto: "status"), + 2: .standard(proto: "handshake_data"), + 3: .same(proto: "response"), + 4: .standard(proto: "os_info"), + 5: .standard(proto: "multiplex_socket_bitmask"), + 6: .standard(proto: "nearby_connections_version"), + ] + + mutating func decodeMessage(decoder: inout D) throws { + while let fieldNumber = try decoder.nextFieldNumber() { + // The use of inline closures is to circumvent an issue where the compiler + // allocates stack space for every case branch when no optimizations are + // enabled. https://github.com/apple/swift-protobuf/issues/1034 + switch fieldNumber { + case 1: try { try decoder.decodeSingularInt32Field(value: &self._status) }() + case 2: try { try decoder.decodeSingularBytesField(value: &self._handshakeData) }() + case 3: try { try decoder.decodeSingularEnumField(value: &self._response) }() + case 4: try { try decoder.decodeSingularMessageField(value: &self._osInfo) }() + case 5: try { try decoder.decodeSingularInt32Field(value: &self._multiplexSocketBitmask) }() + case 6: try { try decoder.decodeSingularInt32Field(value: &self._nearbyConnectionsVersion) }() + default: break + } + } + } + + func traverse(visitor: inout V) throws { + // The use of inline closures is to circumvent an issue where the compiler + // allocates stack space for every if/case branch local when no optimizations + // are enabled. https://github.com/apple/swift-protobuf/issues/1034 and + // https://github.com/apple/swift-protobuf/issues/1182 + try { if let v = self._status { + try visitor.visitSingularInt32Field(value: v, fieldNumber: 1) + } }() + try { if let v = self._handshakeData { + try visitor.visitSingularBytesField(value: v, fieldNumber: 2) + } }() + try { if let v = self._response { + try visitor.visitSingularEnumField(value: v, fieldNumber: 3) + } }() + try { if let v = self._osInfo { + try visitor.visitSingularMessageField(value: v, fieldNumber: 4) + } }() + try { if let v = self._multiplexSocketBitmask { + try visitor.visitSingularInt32Field(value: v, fieldNumber: 5) + } }() + try { if let v = self._nearbyConnectionsVersion { + try visitor.visitSingularInt32Field(value: v, fieldNumber: 6) + } }() + try unknownFields.traverse(visitor: &visitor) + } + + static func ==(lhs: Location_Nearby_Connections_ConnectionResponseFrame, rhs: Location_Nearby_Connections_ConnectionResponseFrame) -> Bool { + if lhs._status != rhs._status {return false} + if lhs._handshakeData != rhs._handshakeData {return false} + if lhs._response != rhs._response {return false} + if lhs._osInfo != rhs._osInfo {return false} + if lhs._multiplexSocketBitmask != rhs._multiplexSocketBitmask {return false} + if lhs._nearbyConnectionsVersion != rhs._nearbyConnectionsVersion {return false} + if lhs.unknownFields != rhs.unknownFields {return false} + return true + } +} + +extension Location_Nearby_Connections_ConnectionResponseFrame.ResponseStatus: SwiftProtobuf._ProtoNameProviding { + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 0: .same(proto: "UNKNOWN_RESPONSE_STATUS"), + 1: .same(proto: "ACCEPT"), + 2: .same(proto: "REJECT"), + ] +} + +extension Location_Nearby_Connections_PayloadTransferFrame: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let protoMessageName: String = _protobuf_package + ".PayloadTransferFrame" + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 1: .standard(proto: "packet_type"), + 2: .standard(proto: "payload_header"), + 3: .standard(proto: "payload_chunk"), + 4: .standard(proto: "control_message"), + ] + + mutating func decodeMessage(decoder: inout D) throws { + while let fieldNumber = try decoder.nextFieldNumber() { + // The use of inline closures is to circumvent an issue where the compiler + // allocates stack space for every case branch when no optimizations are + // enabled. https://github.com/apple/swift-protobuf/issues/1034 + switch fieldNumber { + case 1: try { try decoder.decodeSingularEnumField(value: &self._packetType) }() + case 2: try { try decoder.decodeSingularMessageField(value: &self._payloadHeader) }() + case 3: try { try decoder.decodeSingularMessageField(value: &self._payloadChunk) }() + case 4: try { try decoder.decodeSingularMessageField(value: &self._controlMessage) }() + default: break + } + } + } + + func traverse(visitor: inout V) throws { + // The use of inline closures is to circumvent an issue where the compiler + // allocates stack space for every if/case branch local when no optimizations + // are enabled. https://github.com/apple/swift-protobuf/issues/1034 and + // https://github.com/apple/swift-protobuf/issues/1182 + try { if let v = self._packetType { + try visitor.visitSingularEnumField(value: v, fieldNumber: 1) + } }() + try { if let v = self._payloadHeader { + try visitor.visitSingularMessageField(value: v, fieldNumber: 2) + } }() + try { if let v = self._payloadChunk { + try visitor.visitSingularMessageField(value: v, fieldNumber: 3) + } }() + try { if let v = self._controlMessage { + try visitor.visitSingularMessageField(value: v, fieldNumber: 4) + } }() + try unknownFields.traverse(visitor: &visitor) + } + + static func ==(lhs: Location_Nearby_Connections_PayloadTransferFrame, rhs: Location_Nearby_Connections_PayloadTransferFrame) -> Bool { + if lhs._packetType != rhs._packetType {return false} + if lhs._payloadHeader != rhs._payloadHeader {return false} + if lhs._payloadChunk != rhs._payloadChunk {return false} + if lhs._controlMessage != rhs._controlMessage {return false} + if lhs.unknownFields != rhs.unknownFields {return false} + return true + } +} + +extension Location_Nearby_Connections_PayloadTransferFrame.PacketType: SwiftProtobuf._ProtoNameProviding { + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 0: .same(proto: "UNKNOWN_PACKET_TYPE"), + 1: .same(proto: "DATA"), + 2: .same(proto: "CONTROL"), + ] +} + +extension Location_Nearby_Connections_PayloadTransferFrame.PayloadHeader: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let protoMessageName: String = Location_Nearby_Connections_PayloadTransferFrame.protoMessageName + ".PayloadHeader" + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 1: .same(proto: "id"), + 2: .same(proto: "type"), + 3: .standard(proto: "total_size"), + 4: .standard(proto: "is_sensitive"), + 5: .standard(proto: "file_name"), + 6: .standard(proto: "parent_folder"), + ] + + mutating func decodeMessage(decoder: inout D) throws { + while let fieldNumber = try decoder.nextFieldNumber() { + // The use of inline closures is to circumvent an issue where the compiler + // allocates stack space for every case branch when no optimizations are + // enabled. https://github.com/apple/swift-protobuf/issues/1034 + switch fieldNumber { + case 1: try { try decoder.decodeSingularInt64Field(value: &self._id) }() + case 2: try { try decoder.decodeSingularEnumField(value: &self._type) }() + case 3: try { try decoder.decodeSingularInt64Field(value: &self._totalSize) }() + case 4: try { try decoder.decodeSingularBoolField(value: &self._isSensitive) }() + case 5: try { try decoder.decodeSingularStringField(value: &self._fileName) }() + case 6: try { try decoder.decodeSingularStringField(value: &self._parentFolder) }() + default: break + } + } + } + + func traverse(visitor: inout V) throws { + // The use of inline closures is to circumvent an issue where the compiler + // allocates stack space for every if/case branch local when no optimizations + // are enabled. https://github.com/apple/swift-protobuf/issues/1034 and + // https://github.com/apple/swift-protobuf/issues/1182 + try { if let v = self._id { + try visitor.visitSingularInt64Field(value: v, fieldNumber: 1) + } }() + try { if let v = self._type { + try visitor.visitSingularEnumField(value: v, fieldNumber: 2) + } }() + try { if let v = self._totalSize { + try visitor.visitSingularInt64Field(value: v, fieldNumber: 3) + } }() + try { if let v = self._isSensitive { + try visitor.visitSingularBoolField(value: v, fieldNumber: 4) + } }() + try { if let v = self._fileName { + try visitor.visitSingularStringField(value: v, fieldNumber: 5) + } }() + try { if let v = self._parentFolder { + try visitor.visitSingularStringField(value: v, fieldNumber: 6) + } }() + try unknownFields.traverse(visitor: &visitor) + } + + static func ==(lhs: Location_Nearby_Connections_PayloadTransferFrame.PayloadHeader, rhs: Location_Nearby_Connections_PayloadTransferFrame.PayloadHeader) -> Bool { + if lhs._id != rhs._id {return false} + if lhs._type != rhs._type {return false} + if lhs._totalSize != rhs._totalSize {return false} + if lhs._isSensitive != rhs._isSensitive {return false} + if lhs._fileName != rhs._fileName {return false} + if lhs._parentFolder != rhs._parentFolder {return false} + if lhs.unknownFields != rhs.unknownFields {return false} + return true + } +} + +extension Location_Nearby_Connections_PayloadTransferFrame.PayloadHeader.PayloadType: SwiftProtobuf._ProtoNameProviding { + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 0: .same(proto: "UNKNOWN_PAYLOAD_TYPE"), + 1: .same(proto: "BYTES"), + 2: .same(proto: "FILE"), + 3: .same(proto: "STREAM"), + ] +} + +extension Location_Nearby_Connections_PayloadTransferFrame.PayloadChunk: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let protoMessageName: String = Location_Nearby_Connections_PayloadTransferFrame.protoMessageName + ".PayloadChunk" + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 1: .same(proto: "flags"), + 2: .same(proto: "offset"), + 3: .same(proto: "body"), + ] + + mutating func decodeMessage(decoder: inout D) throws { + while let fieldNumber = try decoder.nextFieldNumber() { + // The use of inline closures is to circumvent an issue where the compiler + // allocates stack space for every case branch when no optimizations are + // enabled. https://github.com/apple/swift-protobuf/issues/1034 + switch fieldNumber { + case 1: try { try decoder.decodeSingularInt32Field(value: &self._flags) }() + case 2: try { try decoder.decodeSingularInt64Field(value: &self._offset) }() + case 3: try { try decoder.decodeSingularBytesField(value: &self._body) }() + default: break + } + } + } + + func traverse(visitor: inout V) throws { + // The use of inline closures is to circumvent an issue where the compiler + // allocates stack space for every if/case branch local when no optimizations + // are enabled. https://github.com/apple/swift-protobuf/issues/1034 and + // https://github.com/apple/swift-protobuf/issues/1182 + try { if let v = self._flags { + try visitor.visitSingularInt32Field(value: v, fieldNumber: 1) + } }() + try { if let v = self._offset { + try visitor.visitSingularInt64Field(value: v, fieldNumber: 2) + } }() + try { if let v = self._body { + try visitor.visitSingularBytesField(value: v, fieldNumber: 3) + } }() + try unknownFields.traverse(visitor: &visitor) + } + + static func ==(lhs: Location_Nearby_Connections_PayloadTransferFrame.PayloadChunk, rhs: Location_Nearby_Connections_PayloadTransferFrame.PayloadChunk) -> Bool { + if lhs._flags != rhs._flags {return false} + if lhs._offset != rhs._offset {return false} + if lhs._body != rhs._body {return false} + if lhs.unknownFields != rhs.unknownFields {return false} + return true + } +} + +extension Location_Nearby_Connections_PayloadTransferFrame.PayloadChunk.Flags: SwiftProtobuf._ProtoNameProviding { + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 1: .same(proto: "LAST_CHUNK"), + ] +} + +extension Location_Nearby_Connections_PayloadTransferFrame.ControlMessage: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let protoMessageName: String = Location_Nearby_Connections_PayloadTransferFrame.protoMessageName + ".ControlMessage" + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 1: .same(proto: "event"), + 2: .same(proto: "offset"), + ] + + mutating func decodeMessage(decoder: inout D) throws { + while let fieldNumber = try decoder.nextFieldNumber() { + // The use of inline closures is to circumvent an issue where the compiler + // allocates stack space for every case branch when no optimizations are + // enabled. https://github.com/apple/swift-protobuf/issues/1034 + switch fieldNumber { + case 1: try { try decoder.decodeSingularEnumField(value: &self._event) }() + case 2: try { try decoder.decodeSingularInt64Field(value: &self._offset) }() + default: break + } + } + } + + func traverse(visitor: inout V) throws { + // The use of inline closures is to circumvent an issue where the compiler + // allocates stack space for every if/case branch local when no optimizations + // are enabled. https://github.com/apple/swift-protobuf/issues/1034 and + // https://github.com/apple/swift-protobuf/issues/1182 + try { if let v = self._event { + try visitor.visitSingularEnumField(value: v, fieldNumber: 1) + } }() + try { if let v = self._offset { + try visitor.visitSingularInt64Field(value: v, fieldNumber: 2) + } }() + try unknownFields.traverse(visitor: &visitor) + } + + static func ==(lhs: Location_Nearby_Connections_PayloadTransferFrame.ControlMessage, rhs: Location_Nearby_Connections_PayloadTransferFrame.ControlMessage) -> Bool { + if lhs._event != rhs._event {return false} + if lhs._offset != rhs._offset {return false} + if lhs.unknownFields != rhs.unknownFields {return false} + return true + } +} + +extension Location_Nearby_Connections_PayloadTransferFrame.ControlMessage.EventType: SwiftProtobuf._ProtoNameProviding { + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 0: .same(proto: "UNKNOWN_EVENT_TYPE"), + 1: .same(proto: "PAYLOAD_ERROR"), + 2: .same(proto: "PAYLOAD_CANCELED"), + 3: .same(proto: "PAYLOAD_RECEIVED_ACK"), + ] +} + +extension Location_Nearby_Connections_BandwidthUpgradeNegotiationFrame: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let protoMessageName: String = _protobuf_package + ".BandwidthUpgradeNegotiationFrame" + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 1: .standard(proto: "event_type"), + 2: .standard(proto: "upgrade_path_info"), + 3: .standard(proto: "client_introduction"), + 4: .standard(proto: "client_introduction_ack"), + ] + + mutating func decodeMessage(decoder: inout D) throws { + while let fieldNumber = try decoder.nextFieldNumber() { + // The use of inline closures is to circumvent an issue where the compiler + // allocates stack space for every case branch when no optimizations are + // enabled. https://github.com/apple/swift-protobuf/issues/1034 + switch fieldNumber { + case 1: try { try decoder.decodeSingularEnumField(value: &self._eventType) }() + case 2: try { try decoder.decodeSingularMessageField(value: &self._upgradePathInfo) }() + case 3: try { try decoder.decodeSingularMessageField(value: &self._clientIntroduction) }() + case 4: try { try decoder.decodeSingularMessageField(value: &self._clientIntroductionAck) }() + default: break + } + } + } + + func traverse(visitor: inout V) throws { + // The use of inline closures is to circumvent an issue where the compiler + // allocates stack space for every if/case branch local when no optimizations + // are enabled. https://github.com/apple/swift-protobuf/issues/1034 and + // https://github.com/apple/swift-protobuf/issues/1182 + try { if let v = self._eventType { + try visitor.visitSingularEnumField(value: v, fieldNumber: 1) + } }() + try { if let v = self._upgradePathInfo { + try visitor.visitSingularMessageField(value: v, fieldNumber: 2) + } }() + try { if let v = self._clientIntroduction { + try visitor.visitSingularMessageField(value: v, fieldNumber: 3) + } }() + try { if let v = self._clientIntroductionAck { + try visitor.visitSingularMessageField(value: v, fieldNumber: 4) + } }() + try unknownFields.traverse(visitor: &visitor) + } + + static func ==(lhs: Location_Nearby_Connections_BandwidthUpgradeNegotiationFrame, rhs: Location_Nearby_Connections_BandwidthUpgradeNegotiationFrame) -> Bool { + if lhs._eventType != rhs._eventType {return false} + if lhs._upgradePathInfo != rhs._upgradePathInfo {return false} + if lhs._clientIntroduction != rhs._clientIntroduction {return false} + if lhs._clientIntroductionAck != rhs._clientIntroductionAck {return false} + if lhs.unknownFields != rhs.unknownFields {return false} + return true + } +} + +extension Location_Nearby_Connections_BandwidthUpgradeNegotiationFrame.EventType: SwiftProtobuf._ProtoNameProviding { + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 0: .same(proto: "UNKNOWN_EVENT_TYPE"), + 1: .same(proto: "UPGRADE_PATH_AVAILABLE"), + 2: .same(proto: "LAST_WRITE_TO_PRIOR_CHANNEL"), + 3: .same(proto: "SAFE_TO_CLOSE_PRIOR_CHANNEL"), + 4: .same(proto: "CLIENT_INTRODUCTION"), + 5: .same(proto: "UPGRADE_FAILURE"), + 6: .same(proto: "CLIENT_INTRODUCTION_ACK"), + ] +} + +extension Location_Nearby_Connections_BandwidthUpgradeNegotiationFrame.UpgradePathInfo: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let protoMessageName: String = Location_Nearby_Connections_BandwidthUpgradeNegotiationFrame.protoMessageName + ".UpgradePathInfo" + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 1: .same(proto: "medium"), + 2: .standard(proto: "wifi_hotspot_credentials"), + 3: .standard(proto: "wifi_lan_socket"), + 4: .standard(proto: "bluetooth_credentials"), + 5: .standard(proto: "wifi_aware_credentials"), + 6: .standard(proto: "wifi_direct_credentials"), + 8: .standard(proto: "web_rtc_credentials"), + 7: .standard(proto: "supports_disabling_encryption"), + 9: .standard(proto: "supports_client_introduction_ack"), + ] + + fileprivate class _StorageClass { + var _medium: Location_Nearby_Connections_BandwidthUpgradeNegotiationFrame.UpgradePathInfo.Medium? = nil + var _wifiHotspotCredentials: Location_Nearby_Connections_BandwidthUpgradeNegotiationFrame.UpgradePathInfo.WifiHotspotCredentials? = nil + var _wifiLanSocket: Location_Nearby_Connections_BandwidthUpgradeNegotiationFrame.UpgradePathInfo.WifiLanSocket? = nil + var _bluetoothCredentials: Location_Nearby_Connections_BandwidthUpgradeNegotiationFrame.UpgradePathInfo.BluetoothCredentials? = nil + var _wifiAwareCredentials: Location_Nearby_Connections_BandwidthUpgradeNegotiationFrame.UpgradePathInfo.WifiAwareCredentials? = nil + var _wifiDirectCredentials: Location_Nearby_Connections_BandwidthUpgradeNegotiationFrame.UpgradePathInfo.WifiDirectCredentials? = nil + var _webRtcCredentials: Location_Nearby_Connections_BandwidthUpgradeNegotiationFrame.UpgradePathInfo.WebRtcCredentials? = nil + var _supportsDisablingEncryption: Bool? = nil + var _supportsClientIntroductionAck: Bool? = nil + + static let defaultInstance = _StorageClass() + + private init() {} + + init(copying source: _StorageClass) { + _medium = source._medium + _wifiHotspotCredentials = source._wifiHotspotCredentials + _wifiLanSocket = source._wifiLanSocket + _bluetoothCredentials = source._bluetoothCredentials + _wifiAwareCredentials = source._wifiAwareCredentials + _wifiDirectCredentials = source._wifiDirectCredentials + _webRtcCredentials = source._webRtcCredentials + _supportsDisablingEncryption = source._supportsDisablingEncryption + _supportsClientIntroductionAck = source._supportsClientIntroductionAck + } + } + + fileprivate mutating func _uniqueStorage() -> _StorageClass { + if !isKnownUniquelyReferenced(&_storage) { + _storage = _StorageClass(copying: _storage) + } + return _storage + } + + mutating func decodeMessage(decoder: inout D) throws { + _ = _uniqueStorage() + try withExtendedLifetime(_storage) { (_storage: _StorageClass) in + while let fieldNumber = try decoder.nextFieldNumber() { + // The use of inline closures is to circumvent an issue where the compiler + // allocates stack space for every case branch when no optimizations are + // enabled. https://github.com/apple/swift-protobuf/issues/1034 + switch fieldNumber { + case 1: try { try decoder.decodeSingularEnumField(value: &_storage._medium) }() + case 2: try { try decoder.decodeSingularMessageField(value: &_storage._wifiHotspotCredentials) }() + case 3: try { try decoder.decodeSingularMessageField(value: &_storage._wifiLanSocket) }() + case 4: try { try decoder.decodeSingularMessageField(value: &_storage._bluetoothCredentials) }() + case 5: try { try decoder.decodeSingularMessageField(value: &_storage._wifiAwareCredentials) }() + case 6: try { try decoder.decodeSingularMessageField(value: &_storage._wifiDirectCredentials) }() + case 7: try { try decoder.decodeSingularBoolField(value: &_storage._supportsDisablingEncryption) }() + case 8: try { try decoder.decodeSingularMessageField(value: &_storage._webRtcCredentials) }() + case 9: try { try decoder.decodeSingularBoolField(value: &_storage._supportsClientIntroductionAck) }() + default: break + } + } + } + } + + func traverse(visitor: inout V) throws { + try withExtendedLifetime(_storage) { (_storage: _StorageClass) in + // The use of inline closures is to circumvent an issue where the compiler + // allocates stack space for every if/case branch local when no optimizations + // are enabled. https://github.com/apple/swift-protobuf/issues/1034 and + // https://github.com/apple/swift-protobuf/issues/1182 + try { if let v = _storage._medium { + try visitor.visitSingularEnumField(value: v, fieldNumber: 1) + } }() + try { if let v = _storage._wifiHotspotCredentials { + try visitor.visitSingularMessageField(value: v, fieldNumber: 2) + } }() + try { if let v = _storage._wifiLanSocket { + try visitor.visitSingularMessageField(value: v, fieldNumber: 3) + } }() + try { if let v = _storage._bluetoothCredentials { + try visitor.visitSingularMessageField(value: v, fieldNumber: 4) + } }() + try { if let v = _storage._wifiAwareCredentials { + try visitor.visitSingularMessageField(value: v, fieldNumber: 5) + } }() + try { if let v = _storage._wifiDirectCredentials { + try visitor.visitSingularMessageField(value: v, fieldNumber: 6) + } }() + try { if let v = _storage._supportsDisablingEncryption { + try visitor.visitSingularBoolField(value: v, fieldNumber: 7) + } }() + try { if let v = _storage._webRtcCredentials { + try visitor.visitSingularMessageField(value: v, fieldNumber: 8) + } }() + try { if let v = _storage._supportsClientIntroductionAck { + try visitor.visitSingularBoolField(value: v, fieldNumber: 9) + } }() + } + try unknownFields.traverse(visitor: &visitor) + } + + static func ==(lhs: Location_Nearby_Connections_BandwidthUpgradeNegotiationFrame.UpgradePathInfo, rhs: Location_Nearby_Connections_BandwidthUpgradeNegotiationFrame.UpgradePathInfo) -> Bool { + if lhs._storage !== rhs._storage { + let storagesAreEqual: Bool = withExtendedLifetime((lhs._storage, rhs._storage)) { (_args: (_StorageClass, _StorageClass)) in + let _storage = _args.0 + let rhs_storage = _args.1 + if _storage._medium != rhs_storage._medium {return false} + if _storage._wifiHotspotCredentials != rhs_storage._wifiHotspotCredentials {return false} + if _storage._wifiLanSocket != rhs_storage._wifiLanSocket {return false} + if _storage._bluetoothCredentials != rhs_storage._bluetoothCredentials {return false} + if _storage._wifiAwareCredentials != rhs_storage._wifiAwareCredentials {return false} + if _storage._wifiDirectCredentials != rhs_storage._wifiDirectCredentials {return false} + if _storage._webRtcCredentials != rhs_storage._webRtcCredentials {return false} + if _storage._supportsDisablingEncryption != rhs_storage._supportsDisablingEncryption {return false} + if _storage._supportsClientIntroductionAck != rhs_storage._supportsClientIntroductionAck {return false} + return true + } + if !storagesAreEqual {return false} + } + if lhs.unknownFields != rhs.unknownFields {return false} + return true + } +} + +extension Location_Nearby_Connections_BandwidthUpgradeNegotiationFrame.UpgradePathInfo.Medium: SwiftProtobuf._ProtoNameProviding { + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 0: .same(proto: "UNKNOWN_MEDIUM"), + 1: .same(proto: "MDNS"), + 2: .same(proto: "BLUETOOTH"), + 3: .same(proto: "WIFI_HOTSPOT"), + 4: .same(proto: "BLE"), + 5: .same(proto: "WIFI_LAN"), + 6: .same(proto: "WIFI_AWARE"), + 7: .same(proto: "NFC"), + 8: .same(proto: "WIFI_DIRECT"), + 9: .same(proto: "WEB_RTC"), + 11: .same(proto: "USB"), + ] +} + +extension Location_Nearby_Connections_BandwidthUpgradeNegotiationFrame.UpgradePathInfo.WifiHotspotCredentials: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let protoMessageName: String = Location_Nearby_Connections_BandwidthUpgradeNegotiationFrame.UpgradePathInfo.protoMessageName + ".WifiHotspotCredentials" + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 1: .same(proto: "ssid"), + 2: .same(proto: "password"), + 3: .same(proto: "port"), + 4: .same(proto: "gateway"), + 5: .same(proto: "frequency"), + ] + + mutating func decodeMessage(decoder: inout D) throws { + while let fieldNumber = try decoder.nextFieldNumber() { + // The use of inline closures is to circumvent an issue where the compiler + // allocates stack space for every case branch when no optimizations are + // enabled. https://github.com/apple/swift-protobuf/issues/1034 + switch fieldNumber { + case 1: try { try decoder.decodeSingularStringField(value: &self._ssid) }() + case 2: try { try decoder.decodeSingularStringField(value: &self._password) }() + case 3: try { try decoder.decodeSingularInt32Field(value: &self._port) }() + case 4: try { try decoder.decodeSingularStringField(value: &self._gateway) }() + case 5: try { try decoder.decodeSingularInt32Field(value: &self._frequency) }() + default: break + } + } + } + + func traverse(visitor: inout V) throws { + // The use of inline closures is to circumvent an issue where the compiler + // allocates stack space for every if/case branch local when no optimizations + // are enabled. https://github.com/apple/swift-protobuf/issues/1034 and + // https://github.com/apple/swift-protobuf/issues/1182 + try { if let v = self._ssid { + try visitor.visitSingularStringField(value: v, fieldNumber: 1) + } }() + try { if let v = self._password { + try visitor.visitSingularStringField(value: v, fieldNumber: 2) + } }() + try { if let v = self._port { + try visitor.visitSingularInt32Field(value: v, fieldNumber: 3) + } }() + try { if let v = self._gateway { + try visitor.visitSingularStringField(value: v, fieldNumber: 4) + } }() + try { if let v = self._frequency { + try visitor.visitSingularInt32Field(value: v, fieldNumber: 5) + } }() + try unknownFields.traverse(visitor: &visitor) + } + + static func ==(lhs: Location_Nearby_Connections_BandwidthUpgradeNegotiationFrame.UpgradePathInfo.WifiHotspotCredentials, rhs: Location_Nearby_Connections_BandwidthUpgradeNegotiationFrame.UpgradePathInfo.WifiHotspotCredentials) -> Bool { + if lhs._ssid != rhs._ssid {return false} + if lhs._password != rhs._password {return false} + if lhs._port != rhs._port {return false} + if lhs._gateway != rhs._gateway {return false} + if lhs._frequency != rhs._frequency {return false} + if lhs.unknownFields != rhs.unknownFields {return false} + return true + } +} + +extension Location_Nearby_Connections_BandwidthUpgradeNegotiationFrame.UpgradePathInfo.WifiLanSocket: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let protoMessageName: String = Location_Nearby_Connections_BandwidthUpgradeNegotiationFrame.UpgradePathInfo.protoMessageName + ".WifiLanSocket" + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 1: .standard(proto: "ip_address"), + 2: .standard(proto: "wifi_port"), + ] + + mutating func decodeMessage(decoder: inout D) throws { + while let fieldNumber = try decoder.nextFieldNumber() { + // The use of inline closures is to circumvent an issue where the compiler + // allocates stack space for every case branch when no optimizations are + // enabled. https://github.com/apple/swift-protobuf/issues/1034 + switch fieldNumber { + case 1: try { try decoder.decodeSingularBytesField(value: &self._ipAddress) }() + case 2: try { try decoder.decodeSingularInt32Field(value: &self._wifiPort) }() + default: break + } + } + } + + func traverse(visitor: inout V) throws { + // The use of inline closures is to circumvent an issue where the compiler + // allocates stack space for every if/case branch local when no optimizations + // are enabled. https://github.com/apple/swift-protobuf/issues/1034 and + // https://github.com/apple/swift-protobuf/issues/1182 + try { if let v = self._ipAddress { + try visitor.visitSingularBytesField(value: v, fieldNumber: 1) + } }() + try { if let v = self._wifiPort { + try visitor.visitSingularInt32Field(value: v, fieldNumber: 2) + } }() + try unknownFields.traverse(visitor: &visitor) + } + + static func ==(lhs: Location_Nearby_Connections_BandwidthUpgradeNegotiationFrame.UpgradePathInfo.WifiLanSocket, rhs: Location_Nearby_Connections_BandwidthUpgradeNegotiationFrame.UpgradePathInfo.WifiLanSocket) -> Bool { + if lhs._ipAddress != rhs._ipAddress {return false} + if lhs._wifiPort != rhs._wifiPort {return false} + if lhs.unknownFields != rhs.unknownFields {return false} + return true + } +} + +extension Location_Nearby_Connections_BandwidthUpgradeNegotiationFrame.UpgradePathInfo.BluetoothCredentials: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let protoMessageName: String = Location_Nearby_Connections_BandwidthUpgradeNegotiationFrame.UpgradePathInfo.protoMessageName + ".BluetoothCredentials" + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 1: .standard(proto: "service_name"), + 2: .standard(proto: "mac_address"), + ] + + mutating func decodeMessage(decoder: inout D) throws { + while let fieldNumber = try decoder.nextFieldNumber() { + // The use of inline closures is to circumvent an issue where the compiler + // allocates stack space for every case branch when no optimizations are + // enabled. https://github.com/apple/swift-protobuf/issues/1034 + switch fieldNumber { + case 1: try { try decoder.decodeSingularStringField(value: &self._serviceName) }() + case 2: try { try decoder.decodeSingularStringField(value: &self._macAddress) }() + default: break + } + } + } + + func traverse(visitor: inout V) throws { + // The use of inline closures is to circumvent an issue where the compiler + // allocates stack space for every if/case branch local when no optimizations + // are enabled. https://github.com/apple/swift-protobuf/issues/1034 and + // https://github.com/apple/swift-protobuf/issues/1182 + try { if let v = self._serviceName { + try visitor.visitSingularStringField(value: v, fieldNumber: 1) + } }() + try { if let v = self._macAddress { + try visitor.visitSingularStringField(value: v, fieldNumber: 2) + } }() + try unknownFields.traverse(visitor: &visitor) + } + + static func ==(lhs: Location_Nearby_Connections_BandwidthUpgradeNegotiationFrame.UpgradePathInfo.BluetoothCredentials, rhs: Location_Nearby_Connections_BandwidthUpgradeNegotiationFrame.UpgradePathInfo.BluetoothCredentials) -> Bool { + if lhs._serviceName != rhs._serviceName {return false} + if lhs._macAddress != rhs._macAddress {return false} + if lhs.unknownFields != rhs.unknownFields {return false} + return true + } +} + +extension Location_Nearby_Connections_BandwidthUpgradeNegotiationFrame.UpgradePathInfo.WifiAwareCredentials: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let protoMessageName: String = Location_Nearby_Connections_BandwidthUpgradeNegotiationFrame.UpgradePathInfo.protoMessageName + ".WifiAwareCredentials" + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 1: .standard(proto: "service_id"), + 2: .standard(proto: "service_info"), + 3: .same(proto: "password"), + ] + + mutating func decodeMessage(decoder: inout D) throws { + while let fieldNumber = try decoder.nextFieldNumber() { + // The use of inline closures is to circumvent an issue where the compiler + // allocates stack space for every case branch when no optimizations are + // enabled. https://github.com/apple/swift-protobuf/issues/1034 + switch fieldNumber { + case 1: try { try decoder.decodeSingularStringField(value: &self._serviceID) }() + case 2: try { try decoder.decodeSingularBytesField(value: &self._serviceInfo) }() + case 3: try { try decoder.decodeSingularStringField(value: &self._password) }() + default: break + } + } + } + + func traverse(visitor: inout V) throws { + // The use of inline closures is to circumvent an issue where the compiler + // allocates stack space for every if/case branch local when no optimizations + // are enabled. https://github.com/apple/swift-protobuf/issues/1034 and + // https://github.com/apple/swift-protobuf/issues/1182 + try { if let v = self._serviceID { + try visitor.visitSingularStringField(value: v, fieldNumber: 1) + } }() + try { if let v = self._serviceInfo { + try visitor.visitSingularBytesField(value: v, fieldNumber: 2) + } }() + try { if let v = self._password { + try visitor.visitSingularStringField(value: v, fieldNumber: 3) + } }() + try unknownFields.traverse(visitor: &visitor) + } + + static func ==(lhs: Location_Nearby_Connections_BandwidthUpgradeNegotiationFrame.UpgradePathInfo.WifiAwareCredentials, rhs: Location_Nearby_Connections_BandwidthUpgradeNegotiationFrame.UpgradePathInfo.WifiAwareCredentials) -> Bool { + if lhs._serviceID != rhs._serviceID {return false} + if lhs._serviceInfo != rhs._serviceInfo {return false} + if lhs._password != rhs._password {return false} + if lhs.unknownFields != rhs.unknownFields {return false} + return true + } +} + +extension Location_Nearby_Connections_BandwidthUpgradeNegotiationFrame.UpgradePathInfo.WifiDirectCredentials: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let protoMessageName: String = Location_Nearby_Connections_BandwidthUpgradeNegotiationFrame.UpgradePathInfo.protoMessageName + ".WifiDirectCredentials" + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 1: .same(proto: "ssid"), + 2: .same(proto: "password"), + 3: .same(proto: "port"), + 4: .same(proto: "frequency"), + 5: .same(proto: "gateway"), + ] + + mutating func decodeMessage(decoder: inout D) throws { + while let fieldNumber = try decoder.nextFieldNumber() { + // The use of inline closures is to circumvent an issue where the compiler + // allocates stack space for every case branch when no optimizations are + // enabled. https://github.com/apple/swift-protobuf/issues/1034 + switch fieldNumber { + case 1: try { try decoder.decodeSingularStringField(value: &self._ssid) }() + case 2: try { try decoder.decodeSingularStringField(value: &self._password) }() + case 3: try { try decoder.decodeSingularInt32Field(value: &self._port) }() + case 4: try { try decoder.decodeSingularInt32Field(value: &self._frequency) }() + case 5: try { try decoder.decodeSingularStringField(value: &self._gateway) }() + default: break + } + } + } + + func traverse(visitor: inout V) throws { + // The use of inline closures is to circumvent an issue where the compiler + // allocates stack space for every if/case branch local when no optimizations + // are enabled. https://github.com/apple/swift-protobuf/issues/1034 and + // https://github.com/apple/swift-protobuf/issues/1182 + try { if let v = self._ssid { + try visitor.visitSingularStringField(value: v, fieldNumber: 1) + } }() + try { if let v = self._password { + try visitor.visitSingularStringField(value: v, fieldNumber: 2) + } }() + try { if let v = self._port { + try visitor.visitSingularInt32Field(value: v, fieldNumber: 3) + } }() + try { if let v = self._frequency { + try visitor.visitSingularInt32Field(value: v, fieldNumber: 4) + } }() + try { if let v = self._gateway { + try visitor.visitSingularStringField(value: v, fieldNumber: 5) + } }() + try unknownFields.traverse(visitor: &visitor) + } + + static func ==(lhs: Location_Nearby_Connections_BandwidthUpgradeNegotiationFrame.UpgradePathInfo.WifiDirectCredentials, rhs: Location_Nearby_Connections_BandwidthUpgradeNegotiationFrame.UpgradePathInfo.WifiDirectCredentials) -> Bool { + if lhs._ssid != rhs._ssid {return false} + if lhs._password != rhs._password {return false} + if lhs._port != rhs._port {return false} + if lhs._frequency != rhs._frequency {return false} + if lhs._gateway != rhs._gateway {return false} + if lhs.unknownFields != rhs.unknownFields {return false} + return true + } +} + +extension Location_Nearby_Connections_BandwidthUpgradeNegotiationFrame.UpgradePathInfo.WebRtcCredentials: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let protoMessageName: String = Location_Nearby_Connections_BandwidthUpgradeNegotiationFrame.UpgradePathInfo.protoMessageName + ".WebRtcCredentials" + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 1: .standard(proto: "peer_id"), + 2: .standard(proto: "location_hint"), + ] + + mutating func decodeMessage(decoder: inout D) throws { + while let fieldNumber = try decoder.nextFieldNumber() { + // The use of inline closures is to circumvent an issue where the compiler + // allocates stack space for every case branch when no optimizations are + // enabled. https://github.com/apple/swift-protobuf/issues/1034 + switch fieldNumber { + case 1: try { try decoder.decodeSingularStringField(value: &self._peerID) }() + case 2: try { try decoder.decodeSingularMessageField(value: &self._locationHint) }() + default: break + } + } + } + + func traverse(visitor: inout V) throws { + // The use of inline closures is to circumvent an issue where the compiler + // allocates stack space for every if/case branch local when no optimizations + // are enabled. https://github.com/apple/swift-protobuf/issues/1034 and + // https://github.com/apple/swift-protobuf/issues/1182 + try { if let v = self._peerID { + try visitor.visitSingularStringField(value: v, fieldNumber: 1) + } }() + try { if let v = self._locationHint { + try visitor.visitSingularMessageField(value: v, fieldNumber: 2) + } }() + try unknownFields.traverse(visitor: &visitor) + } + + static func ==(lhs: Location_Nearby_Connections_BandwidthUpgradeNegotiationFrame.UpgradePathInfo.WebRtcCredentials, rhs: Location_Nearby_Connections_BandwidthUpgradeNegotiationFrame.UpgradePathInfo.WebRtcCredentials) -> Bool { + if lhs._peerID != rhs._peerID {return false} + if lhs._locationHint != rhs._locationHint {return false} + if lhs.unknownFields != rhs.unknownFields {return false} + return true + } +} + +extension Location_Nearby_Connections_BandwidthUpgradeNegotiationFrame.ClientIntroduction: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let protoMessageName: String = Location_Nearby_Connections_BandwidthUpgradeNegotiationFrame.protoMessageName + ".ClientIntroduction" + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 1: .standard(proto: "endpoint_id"), + 2: .standard(proto: "supports_disabling_encryption"), + ] + + mutating func decodeMessage(decoder: inout D) throws { + while let fieldNumber = try decoder.nextFieldNumber() { + // The use of inline closures is to circumvent an issue where the compiler + // allocates stack space for every case branch when no optimizations are + // enabled. https://github.com/apple/swift-protobuf/issues/1034 + switch fieldNumber { + case 1: try { try decoder.decodeSingularStringField(value: &self._endpointID) }() + case 2: try { try decoder.decodeSingularBoolField(value: &self._supportsDisablingEncryption) }() + default: break + } + } + } + + func traverse(visitor: inout V) throws { + // The use of inline closures is to circumvent an issue where the compiler + // allocates stack space for every if/case branch local when no optimizations + // are enabled. https://github.com/apple/swift-protobuf/issues/1034 and + // https://github.com/apple/swift-protobuf/issues/1182 + try { if let v = self._endpointID { + try visitor.visitSingularStringField(value: v, fieldNumber: 1) + } }() + try { if let v = self._supportsDisablingEncryption { + try visitor.visitSingularBoolField(value: v, fieldNumber: 2) + } }() + try unknownFields.traverse(visitor: &visitor) + } + + static func ==(lhs: Location_Nearby_Connections_BandwidthUpgradeNegotiationFrame.ClientIntroduction, rhs: Location_Nearby_Connections_BandwidthUpgradeNegotiationFrame.ClientIntroduction) -> Bool { + if lhs._endpointID != rhs._endpointID {return false} + if lhs._supportsDisablingEncryption != rhs._supportsDisablingEncryption {return false} + if lhs.unknownFields != rhs.unknownFields {return false} + return true + } +} + +extension Location_Nearby_Connections_BandwidthUpgradeNegotiationFrame.ClientIntroductionAck: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let protoMessageName: String = Location_Nearby_Connections_BandwidthUpgradeNegotiationFrame.protoMessageName + ".ClientIntroductionAck" + static let _protobuf_nameMap = SwiftProtobuf._NameMap() + + mutating func decodeMessage(decoder: inout D) throws { + while let _ = try decoder.nextFieldNumber() { + } + } + + func traverse(visitor: inout V) throws { + try unknownFields.traverse(visitor: &visitor) + } + + static func ==(lhs: Location_Nearby_Connections_BandwidthUpgradeNegotiationFrame.ClientIntroductionAck, rhs: Location_Nearby_Connections_BandwidthUpgradeNegotiationFrame.ClientIntroductionAck) -> Bool { + if lhs.unknownFields != rhs.unknownFields {return false} + return true + } +} + +extension Location_Nearby_Connections_KeepAliveFrame: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let protoMessageName: String = _protobuf_package + ".KeepAliveFrame" + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 1: .same(proto: "ack"), + ] + + mutating func decodeMessage(decoder: inout D) throws { + while let fieldNumber = try decoder.nextFieldNumber() { + // The use of inline closures is to circumvent an issue where the compiler + // allocates stack space for every case branch when no optimizations are + // enabled. https://github.com/apple/swift-protobuf/issues/1034 + switch fieldNumber { + case 1: try { try decoder.decodeSingularBoolField(value: &self._ack) }() + default: break + } + } + } + + func traverse(visitor: inout V) throws { + // The use of inline closures is to circumvent an issue where the compiler + // allocates stack space for every if/case branch local when no optimizations + // are enabled. https://github.com/apple/swift-protobuf/issues/1034 and + // https://github.com/apple/swift-protobuf/issues/1182 + try { if let v = self._ack { + try visitor.visitSingularBoolField(value: v, fieldNumber: 1) + } }() + try unknownFields.traverse(visitor: &visitor) + } + + static func ==(lhs: Location_Nearby_Connections_KeepAliveFrame, rhs: Location_Nearby_Connections_KeepAliveFrame) -> Bool { + if lhs._ack != rhs._ack {return false} + if lhs.unknownFields != rhs.unknownFields {return false} + return true + } +} + +extension Location_Nearby_Connections_DisconnectionFrame: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let protoMessageName: String = _protobuf_package + ".DisconnectionFrame" + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 1: .standard(proto: "request_safe_to_disconnect"), + 2: .standard(proto: "ack_safe_to_disconnect"), + ] + + mutating func decodeMessage(decoder: inout D) throws { + while let fieldNumber = try decoder.nextFieldNumber() { + // The use of inline closures is to circumvent an issue where the compiler + // allocates stack space for every case branch when no optimizations are + // enabled. https://github.com/apple/swift-protobuf/issues/1034 + switch fieldNumber { + case 1: try { try decoder.decodeSingularBoolField(value: &self._requestSafeToDisconnect) }() + case 2: try { try decoder.decodeSingularBoolField(value: &self._ackSafeToDisconnect) }() + default: break + } + } + } + + func traverse(visitor: inout V) throws { + // The use of inline closures is to circumvent an issue where the compiler + // allocates stack space for every if/case branch local when no optimizations + // are enabled. https://github.com/apple/swift-protobuf/issues/1034 and + // https://github.com/apple/swift-protobuf/issues/1182 + try { if let v = self._requestSafeToDisconnect { + try visitor.visitSingularBoolField(value: v, fieldNumber: 1) + } }() + try { if let v = self._ackSafeToDisconnect { + try visitor.visitSingularBoolField(value: v, fieldNumber: 2) + } }() + try unknownFields.traverse(visitor: &visitor) + } + + static func ==(lhs: Location_Nearby_Connections_DisconnectionFrame, rhs: Location_Nearby_Connections_DisconnectionFrame) -> Bool { + if lhs._requestSafeToDisconnect != rhs._requestSafeToDisconnect {return false} + if lhs._ackSafeToDisconnect != rhs._ackSafeToDisconnect {return false} + if lhs.unknownFields != rhs.unknownFields {return false} + return true + } +} + +extension Location_Nearby_Connections_PairedKeyEncryptionFrame: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let protoMessageName: String = _protobuf_package + ".PairedKeyEncryptionFrame" + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 1: .standard(proto: "signed_data"), + ] + + mutating func decodeMessage(decoder: inout D) throws { + while let fieldNumber = try decoder.nextFieldNumber() { + // The use of inline closures is to circumvent an issue where the compiler + // allocates stack space for every case branch when no optimizations are + // enabled. https://github.com/apple/swift-protobuf/issues/1034 + switch fieldNumber { + case 1: try { try decoder.decodeSingularBytesField(value: &self._signedData) }() + default: break + } + } + } + + func traverse(visitor: inout V) throws { + // The use of inline closures is to circumvent an issue where the compiler + // allocates stack space for every if/case branch local when no optimizations + // are enabled. https://github.com/apple/swift-protobuf/issues/1034 and + // https://github.com/apple/swift-protobuf/issues/1182 + try { if let v = self._signedData { + try visitor.visitSingularBytesField(value: v, fieldNumber: 1) + } }() + try unknownFields.traverse(visitor: &visitor) + } + + static func ==(lhs: Location_Nearby_Connections_PairedKeyEncryptionFrame, rhs: Location_Nearby_Connections_PairedKeyEncryptionFrame) -> Bool { + if lhs._signedData != rhs._signedData {return false} + if lhs.unknownFields != rhs.unknownFields {return false} + return true + } +} + +extension Location_Nearby_Connections_MediumMetadata: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let protoMessageName: String = _protobuf_package + ".MediumMetadata" + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 1: .standard(proto: "supports_5_ghz"), + 2: .same(proto: "bssid"), + 3: .standard(proto: "ip_address"), + 4: .standard(proto: "supports_6_ghz"), + 5: .standard(proto: "mobile_radio"), + 6: .standard(proto: "ap_frequency"), + 7: .standard(proto: "available_channels"), + 8: .standard(proto: "wifi_direct_cli_usable_channels"), + 9: .standard(proto: "wifi_lan_usable_channels"), + 10: .standard(proto: "wifi_aware_usable_channels"), + 11: .standard(proto: "wifi_hotspot_sta_usable_channels"), + ] + + mutating func decodeMessage(decoder: inout D) throws { + while let fieldNumber = try decoder.nextFieldNumber() { + // The use of inline closures is to circumvent an issue where the compiler + // allocates stack space for every case branch when no optimizations are + // enabled. https://github.com/apple/swift-protobuf/issues/1034 + switch fieldNumber { + case 1: try { try decoder.decodeSingularBoolField(value: &self._supports5Ghz) }() + case 2: try { try decoder.decodeSingularStringField(value: &self._bssid) }() + case 3: try { try decoder.decodeSingularBytesField(value: &self._ipAddress) }() + case 4: try { try decoder.decodeSingularBoolField(value: &self._supports6Ghz) }() + case 5: try { try decoder.decodeSingularBoolField(value: &self._mobileRadio) }() + case 6: try { try decoder.decodeSingularInt32Field(value: &self._apFrequency) }() + case 7: try { try decoder.decodeSingularMessageField(value: &self._availableChannels) }() + case 8: try { try decoder.decodeSingularMessageField(value: &self._wifiDirectCliUsableChannels) }() + case 9: try { try decoder.decodeSingularMessageField(value: &self._wifiLanUsableChannels) }() + case 10: try { try decoder.decodeSingularMessageField(value: &self._wifiAwareUsableChannels) }() + case 11: try { try decoder.decodeSingularMessageField(value: &self._wifiHotspotStaUsableChannels) }() + default: break + } + } + } + + func traverse(visitor: inout V) throws { + // The use of inline closures is to circumvent an issue where the compiler + // allocates stack space for every if/case branch local when no optimizations + // are enabled. https://github.com/apple/swift-protobuf/issues/1034 and + // https://github.com/apple/swift-protobuf/issues/1182 + try { if let v = self._supports5Ghz { + try visitor.visitSingularBoolField(value: v, fieldNumber: 1) + } }() + try { if let v = self._bssid { + try visitor.visitSingularStringField(value: v, fieldNumber: 2) + } }() + try { if let v = self._ipAddress { + try visitor.visitSingularBytesField(value: v, fieldNumber: 3) + } }() + try { if let v = self._supports6Ghz { + try visitor.visitSingularBoolField(value: v, fieldNumber: 4) + } }() + try { if let v = self._mobileRadio { + try visitor.visitSingularBoolField(value: v, fieldNumber: 5) + } }() + try { if let v = self._apFrequency { + try visitor.visitSingularInt32Field(value: v, fieldNumber: 6) + } }() + try { if let v = self._availableChannels { + try visitor.visitSingularMessageField(value: v, fieldNumber: 7) + } }() + try { if let v = self._wifiDirectCliUsableChannels { + try visitor.visitSingularMessageField(value: v, fieldNumber: 8) + } }() + try { if let v = self._wifiLanUsableChannels { + try visitor.visitSingularMessageField(value: v, fieldNumber: 9) + } }() + try { if let v = self._wifiAwareUsableChannels { + try visitor.visitSingularMessageField(value: v, fieldNumber: 10) + } }() + try { if let v = self._wifiHotspotStaUsableChannels { + try visitor.visitSingularMessageField(value: v, fieldNumber: 11) + } }() + try unknownFields.traverse(visitor: &visitor) + } + + static func ==(lhs: Location_Nearby_Connections_MediumMetadata, rhs: Location_Nearby_Connections_MediumMetadata) -> Bool { + if lhs._supports5Ghz != rhs._supports5Ghz {return false} + if lhs._bssid != rhs._bssid {return false} + if lhs._ipAddress != rhs._ipAddress {return false} + if lhs._supports6Ghz != rhs._supports6Ghz {return false} + if lhs._mobileRadio != rhs._mobileRadio {return false} + if lhs._apFrequency != rhs._apFrequency {return false} + if lhs._availableChannels != rhs._availableChannels {return false} + if lhs._wifiDirectCliUsableChannels != rhs._wifiDirectCliUsableChannels {return false} + if lhs._wifiLanUsableChannels != rhs._wifiLanUsableChannels {return false} + if lhs._wifiAwareUsableChannels != rhs._wifiAwareUsableChannels {return false} + if lhs._wifiHotspotStaUsableChannels != rhs._wifiHotspotStaUsableChannels {return false} + if lhs.unknownFields != rhs.unknownFields {return false} + return true + } +} + +extension Location_Nearby_Connections_AvailableChannels: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let protoMessageName: String = _protobuf_package + ".AvailableChannels" + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 1: .same(proto: "channels"), + ] + + mutating func decodeMessage(decoder: inout D) throws { + while let fieldNumber = try decoder.nextFieldNumber() { + // The use of inline closures is to circumvent an issue where the compiler + // allocates stack space for every case branch when no optimizations are + // enabled. https://github.com/apple/swift-protobuf/issues/1034 + switch fieldNumber { + case 1: try { try decoder.decodeRepeatedInt32Field(value: &self.channels) }() + default: break + } + } + } + + func traverse(visitor: inout V) throws { + if !self.channels.isEmpty { + try visitor.visitPackedInt32Field(value: self.channels, fieldNumber: 1) + } + try unknownFields.traverse(visitor: &visitor) + } + + static func ==(lhs: Location_Nearby_Connections_AvailableChannels, rhs: Location_Nearby_Connections_AvailableChannels) -> Bool { + if lhs.channels != rhs.channels {return false} + if lhs.unknownFields != rhs.unknownFields {return false} + return true + } +} + +extension Location_Nearby_Connections_WifiDirectCliUsableChannels: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let protoMessageName: String = _protobuf_package + ".WifiDirectCliUsableChannels" + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 1: .same(proto: "channels"), + ] + + mutating func decodeMessage(decoder: inout D) throws { + while let fieldNumber = try decoder.nextFieldNumber() { + // The use of inline closures is to circumvent an issue where the compiler + // allocates stack space for every case branch when no optimizations are + // enabled. https://github.com/apple/swift-protobuf/issues/1034 + switch fieldNumber { + case 1: try { try decoder.decodeRepeatedInt32Field(value: &self.channels) }() + default: break + } + } + } + + func traverse(visitor: inout V) throws { + if !self.channels.isEmpty { + try visitor.visitPackedInt32Field(value: self.channels, fieldNumber: 1) + } + try unknownFields.traverse(visitor: &visitor) + } + + static func ==(lhs: Location_Nearby_Connections_WifiDirectCliUsableChannels, rhs: Location_Nearby_Connections_WifiDirectCliUsableChannels) -> Bool { + if lhs.channels != rhs.channels {return false} + if lhs.unknownFields != rhs.unknownFields {return false} + return true + } +} + +extension Location_Nearby_Connections_WifiLanUsableChannels: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let protoMessageName: String = _protobuf_package + ".WifiLanUsableChannels" + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 1: .same(proto: "channels"), + ] + + mutating func decodeMessage(decoder: inout D) throws { + while let fieldNumber = try decoder.nextFieldNumber() { + // The use of inline closures is to circumvent an issue where the compiler + // allocates stack space for every case branch when no optimizations are + // enabled. https://github.com/apple/swift-protobuf/issues/1034 + switch fieldNumber { + case 1: try { try decoder.decodeRepeatedInt32Field(value: &self.channels) }() + default: break + } + } + } + + func traverse(visitor: inout V) throws { + if !self.channels.isEmpty { + try visitor.visitPackedInt32Field(value: self.channels, fieldNumber: 1) + } + try unknownFields.traverse(visitor: &visitor) + } + + static func ==(lhs: Location_Nearby_Connections_WifiLanUsableChannels, rhs: Location_Nearby_Connections_WifiLanUsableChannels) -> Bool { + if lhs.channels != rhs.channels {return false} + if lhs.unknownFields != rhs.unknownFields {return false} + return true + } +} + +extension Location_Nearby_Connections_WifiAwareUsableChannels: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let protoMessageName: String = _protobuf_package + ".WifiAwareUsableChannels" + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 1: .same(proto: "channels"), + ] + + mutating func decodeMessage(decoder: inout D) throws { + while let fieldNumber = try decoder.nextFieldNumber() { + // The use of inline closures is to circumvent an issue where the compiler + // allocates stack space for every case branch when no optimizations are + // enabled. https://github.com/apple/swift-protobuf/issues/1034 + switch fieldNumber { + case 1: try { try decoder.decodeRepeatedInt32Field(value: &self.channels) }() + default: break + } + } + } + + func traverse(visitor: inout V) throws { + if !self.channels.isEmpty { + try visitor.visitPackedInt32Field(value: self.channels, fieldNumber: 1) + } + try unknownFields.traverse(visitor: &visitor) + } + + static func ==(lhs: Location_Nearby_Connections_WifiAwareUsableChannels, rhs: Location_Nearby_Connections_WifiAwareUsableChannels) -> Bool { + if lhs.channels != rhs.channels {return false} + if lhs.unknownFields != rhs.unknownFields {return false} + return true + } +} + +extension Location_Nearby_Connections_WifiHotspotStaUsableChannels: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let protoMessageName: String = _protobuf_package + ".WifiHotspotStaUsableChannels" + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 1: .same(proto: "channels"), + ] + + mutating func decodeMessage(decoder: inout D) throws { + while let fieldNumber = try decoder.nextFieldNumber() { + // The use of inline closures is to circumvent an issue where the compiler + // allocates stack space for every case branch when no optimizations are + // enabled. https://github.com/apple/swift-protobuf/issues/1034 + switch fieldNumber { + case 1: try { try decoder.decodeRepeatedInt32Field(value: &self.channels) }() + default: break + } + } + } + + func traverse(visitor: inout V) throws { + if !self.channels.isEmpty { + try visitor.visitPackedInt32Field(value: self.channels, fieldNumber: 1) + } + try unknownFields.traverse(visitor: &visitor) + } + + static func ==(lhs: Location_Nearby_Connections_WifiHotspotStaUsableChannels, rhs: Location_Nearby_Connections_WifiHotspotStaUsableChannels) -> Bool { + if lhs.channels != rhs.channels {return false} + if lhs.unknownFields != rhs.unknownFields {return false} + return true + } +} + +extension Location_Nearby_Connections_LocationHint: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let protoMessageName: String = _protobuf_package + ".LocationHint" + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 1: .same(proto: "location"), + 2: .same(proto: "format"), + ] + + mutating func decodeMessage(decoder: inout D) throws { + while let fieldNumber = try decoder.nextFieldNumber() { + // The use of inline closures is to circumvent an issue where the compiler + // allocates stack space for every case branch when no optimizations are + // enabled. https://github.com/apple/swift-protobuf/issues/1034 + switch fieldNumber { + case 1: try { try decoder.decodeSingularStringField(value: &self._location) }() + case 2: try { try decoder.decodeSingularEnumField(value: &self._format) }() + default: break + } + } + } + + func traverse(visitor: inout V) throws { + // The use of inline closures is to circumvent an issue where the compiler + // allocates stack space for every if/case branch local when no optimizations + // are enabled. https://github.com/apple/swift-protobuf/issues/1034 and + // https://github.com/apple/swift-protobuf/issues/1182 + try { if let v = self._location { + try visitor.visitSingularStringField(value: v, fieldNumber: 1) + } }() + try { if let v = self._format { + try visitor.visitSingularEnumField(value: v, fieldNumber: 2) + } }() + try unknownFields.traverse(visitor: &visitor) + } + + static func ==(lhs: Location_Nearby_Connections_LocationHint, rhs: Location_Nearby_Connections_LocationHint) -> Bool { + if lhs._location != rhs._location {return false} + if lhs._format != rhs._format {return false} + if lhs.unknownFields != rhs.unknownFields {return false} + return true + } +} + +extension Location_Nearby_Connections_LocationStandard: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let protoMessageName: String = _protobuf_package + ".LocationStandard" + static let _protobuf_nameMap = SwiftProtobuf._NameMap() + + mutating func decodeMessage(decoder: inout D) throws { + while let _ = try decoder.nextFieldNumber() { + } + } + + func traverse(visitor: inout V) throws { + try unknownFields.traverse(visitor: &visitor) + } + + static func ==(lhs: Location_Nearby_Connections_LocationStandard, rhs: Location_Nearby_Connections_LocationStandard) -> Bool { + if lhs.unknownFields != rhs.unknownFields {return false} + return true + } +} + +extension Location_Nearby_Connections_LocationStandard.Format: SwiftProtobuf._ProtoNameProviding { + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 0: .same(proto: "UNKNOWN"), + 1: .same(proto: "E164_CALLING"), + 2: .same(proto: "ISO_3166_1_ALPHA_2"), + ] +} + +extension Location_Nearby_Connections_OsInfo: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let protoMessageName: String = _protobuf_package + ".OsInfo" + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 1: .same(proto: "type"), + ] + + mutating func decodeMessage(decoder: inout D) throws { + while let fieldNumber = try decoder.nextFieldNumber() { + // The use of inline closures is to circumvent an issue where the compiler + // allocates stack space for every case branch when no optimizations are + // enabled. https://github.com/apple/swift-protobuf/issues/1034 + switch fieldNumber { + case 1: try { try decoder.decodeSingularEnumField(value: &self._type) }() + default: break + } + } + } + + func traverse(visitor: inout V) throws { + // The use of inline closures is to circumvent an issue where the compiler + // allocates stack space for every if/case branch local when no optimizations + // are enabled. https://github.com/apple/swift-protobuf/issues/1034 and + // https://github.com/apple/swift-protobuf/issues/1182 + try { if let v = self._type { + try visitor.visitSingularEnumField(value: v, fieldNumber: 1) + } }() + try unknownFields.traverse(visitor: &visitor) + } + + static func ==(lhs: Location_Nearby_Connections_OsInfo, rhs: Location_Nearby_Connections_OsInfo) -> Bool { + if lhs._type != rhs._type {return false} + if lhs.unknownFields != rhs.unknownFields {return false} + return true + } +} + +extension Location_Nearby_Connections_OsInfo.OsType: SwiftProtobuf._ProtoNameProviding { + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 0: .same(proto: "UNKNOWN_OS_TYPE"), + 1: .same(proto: "ANDROID"), + 2: .same(proto: "CHROME_OS"), + 3: .same(proto: "WINDOWS"), + 4: .same(proto: "APPLE"), + 100: .same(proto: "LINUX"), + ] +} diff --git a/NearDrop/Protobuf/securegcm.pb.swift b/NearDrop/Protobuf/securegcm.pb.swift new file mode 100644 index 0000000..5da7ecc --- /dev/null +++ b/NearDrop/Protobuf/securegcm.pb.swift @@ -0,0 +1,1522 @@ +// DO NOT EDIT. +// swift-format-ignore-file +// +// Generated by the Swift generator plugin for the protocol buffer compiler. +// Source: securegcm.proto +// +// For information on using the generated types, please see the documentation: +// https://github.com/apple/swift-protobuf/ + +// Copyright 2020 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +import Foundation +import SwiftProtobuf + +// If the compiler emits an error on this type, it is because this file +// was generated by a version of the `protoc` Swift plug-in that is +// incompatible with the version of SwiftProtobuf to which you are linking. +// Please ensure that you are building against the same version of the API +// that was used to generate this file. +fileprivate struct _GeneratedWithProtocGenSwiftVersion: SwiftProtobuf.ProtobufAPIVersionCheck { + struct _2: SwiftProtobuf.ProtobufAPIVersion_2 {} + typealias Version = _2 +} + +/// This enum is used by iOS devices as values for device_display_diagonal_mils +/// in GcmDeviceInfo. There is no good way to calculate it on those devices. +enum Securegcm_AppleDeviceDiagonalMils: SwiftProtobuf.Enum { + typealias RawValue = Int + + /// This is the mils diagonal on an iPhone 5. + case applePhone // = 4000 + + /// This is the mils diagonal on an iPad mini. + case applePad // = 7900 + + init() { + self = .applePhone + } + + init?(rawValue: Int) { + switch rawValue { + case 4000: self = .applePhone + case 7900: self = .applePad + default: return nil + } + } + + var rawValue: Int { + switch self { + case .applePhone: return 4000 + case .applePad: return 7900 + } + } + +} + +#if swift(>=4.2) + +extension Securegcm_AppleDeviceDiagonalMils: CaseIterable { + // Support synthesized by the compiler. +} + +#endif // swift(>=4.2) + +/// This should be kept in sync with DeviceType in: +/// java/com/google/security/cryptauth/backend/services/common/common_enums.proto +enum Securegcm_DeviceType: SwiftProtobuf.Enum { + typealias RawValue = Int + case unknown // = 0 + case android // = 1 + case chrome // = 2 + case ios // = 3 + case browser // = 4 + case osx // = 5 + + init() { + self = .unknown + } + + init?(rawValue: Int) { + switch rawValue { + case 0: self = .unknown + case 1: self = .android + case 2: self = .chrome + case 3: self = .ios + case 4: self = .browser + case 5: self = .osx + default: return nil + } + } + + var rawValue: Int { + switch self { + case .unknown: return 0 + case .android: return 1 + case .chrome: return 2 + case .ios: return 3 + case .browser: return 4 + case .osx: return 5 + } + } + +} + +#if swift(>=4.2) + +extension Securegcm_DeviceType: CaseIterable { + // Support synthesized by the compiler. +} + +#endif // swift(>=4.2) + +/// MultiDevice features which may be supported and enabled on a device. See +enum Securegcm_SoftwareFeature: SwiftProtobuf.Enum { + typealias RawValue = Int + case unknownFeature // = 0 + case betterTogetherHost // = 1 + case betterTogetherClient // = 2 + case easyUnlockHost // = 3 + case easyUnlockClient // = 4 + case magicTetherHost // = 5 + case magicTetherClient // = 6 + case smsConnectHost // = 7 + case smsConnectClient // = 8 + + init() { + self = .unknownFeature + } + + init?(rawValue: Int) { + switch rawValue { + case 0: self = .unknownFeature + case 1: self = .betterTogetherHost + case 2: self = .betterTogetherClient + case 3: self = .easyUnlockHost + case 4: self = .easyUnlockClient + case 5: self = .magicTetherHost + case 6: self = .magicTetherClient + case 7: self = .smsConnectHost + case 8: self = .smsConnectClient + default: return nil + } + } + + var rawValue: Int { + switch self { + case .unknownFeature: return 0 + case .betterTogetherHost: return 1 + case .betterTogetherClient: return 2 + case .easyUnlockHost: return 3 + case .easyUnlockClient: return 4 + case .magicTetherHost: return 5 + case .magicTetherClient: return 6 + case .smsConnectHost: return 7 + case .smsConnectClient: return 8 + } + } + +} + +#if swift(>=4.2) + +extension Securegcm_SoftwareFeature: CaseIterable { + // Support synthesized by the compiler. +} + +#endif // swift(>=4.2) + +/// A list of "reasons" that can be provided for calling server-side APIs. +/// This is particularly important for calls that can be triggered by different +/// kinds of events. Please try to keep reasons as generic as possible, so that +/// codes can be re-used by various callers in a sensible fashion. +enum Securegcm_InvocationReason: SwiftProtobuf.Enum { + typealias RawValue = Int + case reasonUnknown // = 0 + + /// First run of the software package invoking this call + case reasonInitialization // = 1 + + /// Ordinary periodic actions (e.g. monthly master key rotation) + case reasonPeriodic // = 2 + + /// Slow-cycle periodic action (e.g. yearly keypair rotation???) + case reasonSlowPeriodic // = 3 + + /// Fast-cycle periodic action (e.g. daily sync for Smart Lock users) + case reasonFastPeriodic // = 4 + + /// Expired state (e.g. expired credentials, or cached entries) was detected + case reasonExpiration // = 5 + + /// An unexpected protocol failure occurred (so attempting to repair state) + case reasonFailureRecovery // = 6 + + /// A new account has been added to the device + case reasonNewAccount // = 7 + + /// An existing account on the device has been changed + case reasonChangedAccount // = 8 + + /// The user toggled the state of a feature (e.g. Smart Lock enabled via BT) + case reasonFeatureToggled // = 9 + + /// A "push" from the server caused this action (e.g. a sync tickle) + case reasonServerInitiated // = 10 + + /// A local address change triggered this (e.g. GCM registration id changed) + case reasonAddressChange // = 11 + + /// A software update has triggered this + case reasonSoftwareUpdate // = 12 + + /// A manual action by the user triggered this (e.g. commands sent via adb) + case reasonManual // = 13 + + /// A custom key has been invalidated on the device (e.g. screen lock is + /// disabled). + case reasonCustomKeyInvalidation // = 14 + + /// Periodic action triggered by auth_proximity + case reasonProximityPeriodic // = 15 + + init() { + self = .reasonUnknown + } + + init?(rawValue: Int) { + switch rawValue { + case 0: self = .reasonUnknown + case 1: self = .reasonInitialization + case 2: self = .reasonPeriodic + case 3: self = .reasonSlowPeriodic + case 4: self = .reasonFastPeriodic + case 5: self = .reasonExpiration + case 6: self = .reasonFailureRecovery + case 7: self = .reasonNewAccount + case 8: self = .reasonChangedAccount + case 9: self = .reasonFeatureToggled + case 10: self = .reasonServerInitiated + case 11: self = .reasonAddressChange + case 12: self = .reasonSoftwareUpdate + case 13: self = .reasonManual + case 14: self = .reasonCustomKeyInvalidation + case 15: self = .reasonProximityPeriodic + default: return nil + } + } + + var rawValue: Int { + switch self { + case .reasonUnknown: return 0 + case .reasonInitialization: return 1 + case .reasonPeriodic: return 2 + case .reasonSlowPeriodic: return 3 + case .reasonFastPeriodic: return 4 + case .reasonExpiration: return 5 + case .reasonFailureRecovery: return 6 + case .reasonNewAccount: return 7 + case .reasonChangedAccount: return 8 + case .reasonFeatureToggled: return 9 + case .reasonServerInitiated: return 10 + case .reasonAddressChange: return 11 + case .reasonSoftwareUpdate: return 12 + case .reasonManual: return 13 + case .reasonCustomKeyInvalidation: return 14 + case .reasonProximityPeriodic: return 15 + } + } + +} + +#if swift(>=4.2) + +extension Securegcm_InvocationReason: CaseIterable { + // Support synthesized by the compiler. +} + +#endif // swift(>=4.2) + +enum Securegcm_Type: SwiftProtobuf.Enum { + typealias RawValue = Int + case enrollment // = 0 + case tickle // = 1 + case txRequest // = 2 + case txReply // = 3 + case txSyncRequest // = 4 + case txSyncResponse // = 5 + case txPing // = 6 + case deviceInfoUpdate // = 7 + case txCancelRequest // = 8 + + /// DEPRECATED (can be re-used after Aug 2015) + case proximityauthPairing // = 10 + + /// The kind of identity assertion generated by a "GCM V1" device (i.e., + /// an Android phone that has registered with us a public and a symmetric + /// key) + case gcmv1IdentityAssertion // = 11 + + /// Device-to-device communications are protected by an unauthenticated + /// Diffie-Hellman exchange. The InitiatorHello message is simply the + /// initiator's public DH key, and is not encoded as a SecureMessage, so + /// it doesn't have a tag. + /// The ResponderHello message (which is sent by the responder + /// to the initiator), on the other hand, carries a payload that is protected + /// by the derived shared key. It also contains the responder's + /// public DH key. ResponderHelloAndPayload messages have the + /// DEVICE_TO_DEVICE_RESPONDER_HELLO tag. + case deviceToDeviceResponderHelloPayload // = 12 + + /// Device-to-device communications are protected by an unauthenticated + /// Diffie-Hellman exchange. Once the initiator and responder + /// agree on a shared key (through Diffie-Hellman), they will use messages + /// tagged with DEVICE_TO_DEVICE_MESSAGE to exchange data. + case deviceToDeviceMessage // = 13 + + /// Notification to let a device know it should contact a nearby device. + case deviceProximityCallback // = 14 + + /// Device-to-device communications are protected by an unauthenticated + /// Diffie-Hellman exchange. During device-to-device authentication, the first + /// message from initiator (the challenge) is signed and put into the payload + /// of the message sent back to the initiator. + case unlockKeySignedChallenge // = 15 + + /// Specialty (corp only) features + case loginNotification // = 101 + + init() { + self = .enrollment + } + + init?(rawValue: Int) { + switch rawValue { + case 0: self = .enrollment + case 1: self = .tickle + case 2: self = .txRequest + case 3: self = .txReply + case 4: self = .txSyncRequest + case 5: self = .txSyncResponse + case 6: self = .txPing + case 7: self = .deviceInfoUpdate + case 8: self = .txCancelRequest + case 10: self = .proximityauthPairing + case 11: self = .gcmv1IdentityAssertion + case 12: self = .deviceToDeviceResponderHelloPayload + case 13: self = .deviceToDeviceMessage + case 14: self = .deviceProximityCallback + case 15: self = .unlockKeySignedChallenge + case 101: self = .loginNotification + default: return nil + } + } + + var rawValue: Int { + switch self { + case .enrollment: return 0 + case .tickle: return 1 + case .txRequest: return 2 + case .txReply: return 3 + case .txSyncRequest: return 4 + case .txSyncResponse: return 5 + case .txPing: return 6 + case .deviceInfoUpdate: return 7 + case .txCancelRequest: return 8 + case .proximityauthPairing: return 10 + case .gcmv1IdentityAssertion: return 11 + case .deviceToDeviceResponderHelloPayload: return 12 + case .deviceToDeviceMessage: return 13 + case .deviceProximityCallback: return 14 + case .unlockKeySignedChallenge: return 15 + case .loginNotification: return 101 + } + } + +} + +#if swift(>=4.2) + +extension Securegcm_Type: CaseIterable { + // Support synthesized by the compiler. +} + +#endif // swift(>=4.2) + +/// Message used only during enrollment +/// Field numbers should be kept in sync with DeviceInfo in: +/// java/com/google/security/cryptauth/backend/services/common/common.proto +struct Securegcm_GcmDeviceInfo { + // SwiftProtobuf.Message conformance is added in an extension below. See the + // `Message` and `Message+*Additions` files in the SwiftProtobuf library for + // methods supported on all messages. + + /// This field's name does not match the one in DeviceInfo for legacy reasons. + /// Consider using long_device_id and device_type instead when enrolling + /// non-android devices. + var androidDeviceID: UInt64 { + get {return _storage._androidDeviceID ?? 0} + set {_uniqueStorage()._androidDeviceID = newValue} + } + /// Returns true if `androidDeviceID` has been explicitly set. + var hasAndroidDeviceID: Bool {return _storage._androidDeviceID != nil} + /// Clears the value of `androidDeviceID`. Subsequent reads from it will return its default value. + mutating func clearAndroidDeviceID() {_uniqueStorage()._androidDeviceID = nil} + + /// Used for device_address of DeviceInfo field 2, but for GCM capable devices. + var gcmRegistrationID: Data { + get {return _storage._gcmRegistrationID ?? Data()} + set {_uniqueStorage()._gcmRegistrationID = newValue} + } + /// Returns true if `gcmRegistrationID` has been explicitly set. + var hasGcmRegistrationID: Bool {return _storage._gcmRegistrationID != nil} + /// Clears the value of `gcmRegistrationID`. Subsequent reads from it will return its default value. + mutating func clearGcmRegistrationID() {_uniqueStorage()._gcmRegistrationID = nil} + + /// Used for device_address of DeviceInfo field 2, but for iOS devices. + var apnRegistrationID: Data { + get {return _storage._apnRegistrationID ?? Data()} + set {_uniqueStorage()._apnRegistrationID = newValue} + } + /// Returns true if `apnRegistrationID` has been explicitly set. + var hasApnRegistrationID: Bool {return _storage._apnRegistrationID != nil} + /// Clears the value of `apnRegistrationID`. Subsequent reads from it will return its default value. + mutating func clearApnRegistrationID() {_uniqueStorage()._apnRegistrationID = nil} + + /// Does the user have notifications enabled for the given device address. + var notificationEnabled: Bool { + get {return _storage._notificationEnabled ?? true} + set {_uniqueStorage()._notificationEnabled = newValue} + } + /// Returns true if `notificationEnabled` has been explicitly set. + var hasNotificationEnabled: Bool {return _storage._notificationEnabled != nil} + /// Clears the value of `notificationEnabled`. Subsequent reads from it will return its default value. + mutating func clearNotificationEnabled() {_uniqueStorage()._notificationEnabled = nil} + + /// Used for device_address of DeviceInfo field 2, a Bluetooth Mac address for + /// the device (e.g., to be used with EasyUnlock) + var bluetoothMacAddress: String { + get {return _storage._bluetoothMacAddress ?? String()} + set {_uniqueStorage()._bluetoothMacAddress = newValue} + } + /// Returns true if `bluetoothMacAddress` has been explicitly set. + var hasBluetoothMacAddress: Bool {return _storage._bluetoothMacAddress != nil} + /// Clears the value of `bluetoothMacAddress`. Subsequent reads from it will return its default value. + mutating func clearBluetoothMacAddress() {_uniqueStorage()._bluetoothMacAddress = nil} + + /// SHA-256 hash of the device master key (from the key exchange). + /// Differs from DeviceInfo field 3, which contains the actual master key. + var deviceMasterKeyHash: Data { + get {return _storage._deviceMasterKeyHash ?? Data()} + set {_uniqueStorage()._deviceMasterKeyHash = newValue} + } + /// Returns true if `deviceMasterKeyHash` has been explicitly set. + var hasDeviceMasterKeyHash: Bool {return _storage._deviceMasterKeyHash != nil} + /// Clears the value of `deviceMasterKeyHash`. Subsequent reads from it will return its default value. + mutating func clearDeviceMasterKeyHash() {_uniqueStorage()._deviceMasterKeyHash = nil} + + /// A SecureMessage.EcP256PublicKey + var userPublicKey: Data { + get {return _storage._userPublicKey ?? Data()} + set {_uniqueStorage()._userPublicKey = newValue} + } + /// Returns true if `userPublicKey` has been explicitly set. + var hasUserPublicKey: Bool {return _storage._userPublicKey != nil} + /// Clears the value of `userPublicKey`. Subsequent reads from it will return its default value. + mutating func clearUserPublicKey() {_uniqueStorage()._userPublicKey = nil} + + /// device's model name + /// (e.g., an android.os.Build.MODEL or UIDevice.model) + var deviceModel: String { + get {return _storage._deviceModel ?? String()} + set {_uniqueStorage()._deviceModel = newValue} + } + /// Returns true if `deviceModel` has been explicitly set. + var hasDeviceModel: Bool {return _storage._deviceModel != nil} + /// Clears the value of `deviceModel`. Subsequent reads from it will return its default value. + mutating func clearDeviceModel() {_uniqueStorage()._deviceModel = nil} + + /// device's locale + var locale: String { + get {return _storage._locale ?? String()} + set {_uniqueStorage()._locale = newValue} + } + /// Returns true if `locale` has been explicitly set. + var hasLocale: Bool {return _storage._locale != nil} + /// Clears the value of `locale`. Subsequent reads from it will return its default value. + mutating func clearLocale() {_uniqueStorage()._locale = nil} + + /// The handle for user_public_key (and implicitly, a master key) + var keyHandle: Data { + get {return _storage._keyHandle ?? Data()} + set {_uniqueStorage()._keyHandle = newValue} + } + /// Returns true if `keyHandle` has been explicitly set. + var hasKeyHandle: Bool {return _storage._keyHandle != nil} + /// Clears the value of `keyHandle`. Subsequent reads from it will return its default value. + mutating func clearKeyHandle() {_uniqueStorage()._keyHandle = nil} + + /// The initial counter value for the device, sent by the device + var counter: Int64 { + get {return _storage._counter ?? 0} + set {_uniqueStorage()._counter = newValue} + } + /// Returns true if `counter` has been explicitly set. + var hasCounter: Bool {return _storage._counter != nil} + /// Clears the value of `counter`. Subsequent reads from it will return its default value. + mutating func clearCounter() {_uniqueStorage()._counter = nil} + + /// The Operating System version on the device + /// (e.g., an android.os.Build.DISPLAY or UIDevice.systemVersion) + var deviceOsVersion: String { + get {return _storage._deviceOsVersion ?? String()} + set {_uniqueStorage()._deviceOsVersion = newValue} + } + /// Returns true if `deviceOsVersion` has been explicitly set. + var hasDeviceOsVersion: Bool {return _storage._deviceOsVersion != nil} + /// Clears the value of `deviceOsVersion`. Subsequent reads from it will return its default value. + mutating func clearDeviceOsVersion() {_uniqueStorage()._deviceOsVersion = nil} + + /// The Operating System version number on the device + /// (e.g., an android.os.Build.VERSION.SDK_INT) + var deviceOsVersionCode: Int64 { + get {return _storage._deviceOsVersionCode ?? 0} + set {_uniqueStorage()._deviceOsVersionCode = newValue} + } + /// Returns true if `deviceOsVersionCode` has been explicitly set. + var hasDeviceOsVersionCode: Bool {return _storage._deviceOsVersionCode != nil} + /// Clears the value of `deviceOsVersionCode`. Subsequent reads from it will return its default value. + mutating func clearDeviceOsVersionCode() {_uniqueStorage()._deviceOsVersionCode = nil} + + /// The Operating System release on the device + /// (e.g., an android.os.Build.VERSION.RELEASE) + var deviceOsRelease: String { + get {return _storage._deviceOsRelease ?? String()} + set {_uniqueStorage()._deviceOsRelease = newValue} + } + /// Returns true if `deviceOsRelease` has been explicitly set. + var hasDeviceOsRelease: Bool {return _storage._deviceOsRelease != nil} + /// Clears the value of `deviceOsRelease`. Subsequent reads from it will return its default value. + mutating func clearDeviceOsRelease() {_uniqueStorage()._deviceOsRelease = nil} + + /// The Operating System codename on the device + /// (e.g., an android.os.Build.VERSION.CODENAME or UIDevice.systemName) + var deviceOsCodename: String { + get {return _storage._deviceOsCodename ?? String()} + set {_uniqueStorage()._deviceOsCodename = newValue} + } + /// Returns true if `deviceOsCodename` has been explicitly set. + var hasDeviceOsCodename: Bool {return _storage._deviceOsCodename != nil} + /// Clears the value of `deviceOsCodename`. Subsequent reads from it will return its default value. + mutating func clearDeviceOsCodename() {_uniqueStorage()._deviceOsCodename = nil} + + /// The software version running on the device + /// (e.g., Authenticator app version string) + var deviceSoftwareVersion: String { + get {return _storage._deviceSoftwareVersion ?? String()} + set {_uniqueStorage()._deviceSoftwareVersion = newValue} + } + /// Returns true if `deviceSoftwareVersion` has been explicitly set. + var hasDeviceSoftwareVersion: Bool {return _storage._deviceSoftwareVersion != nil} + /// Clears the value of `deviceSoftwareVersion`. Subsequent reads from it will return its default value. + mutating func clearDeviceSoftwareVersion() {_uniqueStorage()._deviceSoftwareVersion = nil} + + /// The software version number running on the device + /// (e.g., Authenticator app version code) + var deviceSoftwareVersionCode: Int64 { + get {return _storage._deviceSoftwareVersionCode ?? 0} + set {_uniqueStorage()._deviceSoftwareVersionCode = newValue} + } + /// Returns true if `deviceSoftwareVersionCode` has been explicitly set. + var hasDeviceSoftwareVersionCode: Bool {return _storage._deviceSoftwareVersionCode != nil} + /// Clears the value of `deviceSoftwareVersionCode`. Subsequent reads from it will return its default value. + mutating func clearDeviceSoftwareVersionCode() {_uniqueStorage()._deviceSoftwareVersionCode = nil} + + /// Software package information if applicable + /// (e.g., com.google.android.apps.authenticator2) + var deviceSoftwarePackage: String { + get {return _storage._deviceSoftwarePackage ?? String()} + set {_uniqueStorage()._deviceSoftwarePackage = newValue} + } + /// Returns true if `deviceSoftwarePackage` has been explicitly set. + var hasDeviceSoftwarePackage: Bool {return _storage._deviceSoftwarePackage != nil} + /// Clears the value of `deviceSoftwarePackage`. Subsequent reads from it will return its default value. + mutating func clearDeviceSoftwarePackage() {_uniqueStorage()._deviceSoftwarePackage = nil} + + /// Size of the display in thousandths of an inch (e.g., 7000 mils = 7 in) + var deviceDisplayDiagonalMils: Int32 { + get {return _storage._deviceDisplayDiagonalMils ?? 0} + set {_uniqueStorage()._deviceDisplayDiagonalMils = newValue} + } + /// Returns true if `deviceDisplayDiagonalMils` has been explicitly set. + var hasDeviceDisplayDiagonalMils: Bool {return _storage._deviceDisplayDiagonalMils != nil} + /// Clears the value of `deviceDisplayDiagonalMils`. Subsequent reads from it will return its default value. + mutating func clearDeviceDisplayDiagonalMils() {_uniqueStorage()._deviceDisplayDiagonalMils = nil} + + /// For Authzen capable devices, their Authzen protocol version + var deviceAuthzenVersion: Int32 { + get {return _storage._deviceAuthzenVersion ?? 0} + set {_uniqueStorage()._deviceAuthzenVersion = newValue} + } + /// Returns true if `deviceAuthzenVersion` has been explicitly set. + var hasDeviceAuthzenVersion: Bool {return _storage._deviceAuthzenVersion != nil} + /// Clears the value of `deviceAuthzenVersion`. Subsequent reads from it will return its default value. + mutating func clearDeviceAuthzenVersion() {_uniqueStorage()._deviceAuthzenVersion = nil} + + /// Not all devices have device identifiers that fit in 64 bits. + var longDeviceID: Data { + get {return _storage._longDeviceID ?? Data()} + set {_uniqueStorage()._longDeviceID = newValue} + } + /// Returns true if `longDeviceID` has been explicitly set. + var hasLongDeviceID: Bool {return _storage._longDeviceID != nil} + /// Clears the value of `longDeviceID`. Subsequent reads from it will return its default value. + mutating func clearLongDeviceID() {_uniqueStorage()._longDeviceID = nil} + + /// The device manufacturer name + /// (e.g., android.os.Build.MANUFACTURER) + var deviceManufacturer: String { + get {return _storage._deviceManufacturer ?? String()} + set {_uniqueStorage()._deviceManufacturer = newValue} + } + /// Returns true if `deviceManufacturer` has been explicitly set. + var hasDeviceManufacturer: Bool {return _storage._deviceManufacturer != nil} + /// Clears the value of `deviceManufacturer`. Subsequent reads from it will return its default value. + mutating func clearDeviceManufacturer() {_uniqueStorage()._deviceManufacturer = nil} + + /// Used to indicate which type of device this is. + var deviceType: Securegcm_DeviceType { + get {return _storage._deviceType ?? .android} + set {_uniqueStorage()._deviceType = newValue} + } + /// Returns true if `deviceType` has been explicitly set. + var hasDeviceType: Bool {return _storage._deviceType != nil} + /// Clears the value of `deviceType`. Subsequent reads from it will return its default value. + mutating func clearDeviceType() {_uniqueStorage()._deviceType = nil} + + /// Is this device using a secure screenlock (e.g., pattern or pin unlock) + var usingSecureScreenlock: Bool { + get {return _storage._usingSecureScreenlock ?? false} + set {_uniqueStorage()._usingSecureScreenlock = newValue} + } + /// Returns true if `usingSecureScreenlock` has been explicitly set. + var hasUsingSecureScreenlock: Bool {return _storage._usingSecureScreenlock != nil} + /// Clears the value of `usingSecureScreenlock`. Subsequent reads from it will return its default value. + mutating func clearUsingSecureScreenlock() {_uniqueStorage()._usingSecureScreenlock = nil} + + /// Is auto-unlocking the screenlock (e.g., when at "home") supported? + var autoUnlockScreenlockSupported: Bool { + get {return _storage._autoUnlockScreenlockSupported ?? false} + set {_uniqueStorage()._autoUnlockScreenlockSupported = newValue} + } + /// Returns true if `autoUnlockScreenlockSupported` has been explicitly set. + var hasAutoUnlockScreenlockSupported: Bool {return _storage._autoUnlockScreenlockSupported != nil} + /// Clears the value of `autoUnlockScreenlockSupported`. Subsequent reads from it will return its default value. + mutating func clearAutoUnlockScreenlockSupported() {_uniqueStorage()._autoUnlockScreenlockSupported = nil} + + /// Is auto-unlocking the screenlock (e.g., when at "home") enabled? + var autoUnlockScreenlockEnabled: Bool { + get {return _storage._autoUnlockScreenlockEnabled ?? false} + set {_uniqueStorage()._autoUnlockScreenlockEnabled = newValue} + } + /// Returns true if `autoUnlockScreenlockEnabled` has been explicitly set. + var hasAutoUnlockScreenlockEnabled: Bool {return _storage._autoUnlockScreenlockEnabled != nil} + /// Clears the value of `autoUnlockScreenlockEnabled`. Subsequent reads from it will return its default value. + mutating func clearAutoUnlockScreenlockEnabled() {_uniqueStorage()._autoUnlockScreenlockEnabled = nil} + + /// Does the device have a Bluetooth (classic) radio? + var bluetoothRadioSupported: Bool { + get {return _storage._bluetoothRadioSupported ?? false} + set {_uniqueStorage()._bluetoothRadioSupported = newValue} + } + /// Returns true if `bluetoothRadioSupported` has been explicitly set. + var hasBluetoothRadioSupported: Bool {return _storage._bluetoothRadioSupported != nil} + /// Clears the value of `bluetoothRadioSupported`. Subsequent reads from it will return its default value. + mutating func clearBluetoothRadioSupported() {_uniqueStorage()._bluetoothRadioSupported = nil} + + /// Is the Bluetooth (classic) radio on? + var bluetoothRadioEnabled: Bool { + get {return _storage._bluetoothRadioEnabled ?? false} + set {_uniqueStorage()._bluetoothRadioEnabled = newValue} + } + /// Returns true if `bluetoothRadioEnabled` has been explicitly set. + var hasBluetoothRadioEnabled: Bool {return _storage._bluetoothRadioEnabled != nil} + /// Clears the value of `bluetoothRadioEnabled`. Subsequent reads from it will return its default value. + mutating func clearBluetoothRadioEnabled() {_uniqueStorage()._bluetoothRadioEnabled = nil} + + /// Does the device hardware support a mobile data connection? + var mobileDataSupported: Bool { + get {return _storage._mobileDataSupported ?? false} + set {_uniqueStorage()._mobileDataSupported = newValue} + } + /// Returns true if `mobileDataSupported` has been explicitly set. + var hasMobileDataSupported: Bool {return _storage._mobileDataSupported != nil} + /// Clears the value of `mobileDataSupported`. Subsequent reads from it will return its default value. + mutating func clearMobileDataSupported() {_uniqueStorage()._mobileDataSupported = nil} + + /// Does the device support tethering? + var tetheringSupported: Bool { + get {return _storage._tetheringSupported ?? false} + set {_uniqueStorage()._tetheringSupported = newValue} + } + /// Returns true if `tetheringSupported` has been explicitly set. + var hasTetheringSupported: Bool {return _storage._tetheringSupported != nil} + /// Clears the value of `tetheringSupported`. Subsequent reads from it will return its default value. + mutating func clearTetheringSupported() {_uniqueStorage()._tetheringSupported = nil} + + /// Does the device have a BLE radio? + var bleRadioSupported: Bool { + get {return _storage._bleRadioSupported ?? false} + set {_uniqueStorage()._bleRadioSupported = newValue} + } + /// Returns true if `bleRadioSupported` has been explicitly set. + var hasBleRadioSupported: Bool {return _storage._bleRadioSupported != nil} + /// Clears the value of `bleRadioSupported`. Subsequent reads from it will return its default value. + mutating func clearBleRadioSupported() {_uniqueStorage()._bleRadioSupported = nil} + + /// Is the device a "Pixel Experience" Android device? + var pixelExperience: Bool { + get {return _storage._pixelExperience ?? false} + set {_uniqueStorage()._pixelExperience = newValue} + } + /// Returns true if `pixelExperience` has been explicitly set. + var hasPixelExperience: Bool {return _storage._pixelExperience != nil} + /// Clears the value of `pixelExperience`. Subsequent reads from it will return its default value. + mutating func clearPixelExperience() {_uniqueStorage()._pixelExperience = nil} + + /// Is the device running in the ARC++ container on a chromebook? + var arcPlusPlus: Bool { + get {return _storage._arcPlusPlus ?? false} + set {_uniqueStorage()._arcPlusPlus = newValue} + } + /// Returns true if `arcPlusPlus` has been explicitly set. + var hasArcPlusPlus: Bool {return _storage._arcPlusPlus != nil} + /// Clears the value of `arcPlusPlus`. Subsequent reads from it will return its default value. + mutating func clearArcPlusPlus() {_uniqueStorage()._arcPlusPlus = nil} + + /// Is the value set in |using_secure_screenlock| reliable? On some Android + /// devices, the platform API to get the screenlock state is not trustworthy. + /// See b/32212161. + var isScreenlockStateFlaky: Bool { + get {return _storage._isScreenlockStateFlaky ?? false} + set {_uniqueStorage()._isScreenlockStateFlaky = newValue} + } + /// Returns true if `isScreenlockStateFlaky` has been explicitly set. + var hasIsScreenlockStateFlaky: Bool {return _storage._isScreenlockStateFlaky != nil} + /// Clears the value of `isScreenlockStateFlaky`. Subsequent reads from it will return its default value. + mutating func clearIsScreenlockStateFlaky() {_uniqueStorage()._isScreenlockStateFlaky = nil} + + /// A list of multi-device software features supported by the device. + var supportedSoftwareFeatures: [Securegcm_SoftwareFeature] { + get {return _storage._supportedSoftwareFeatures} + set {_uniqueStorage()._supportedSoftwareFeatures = newValue} + } + + /// A list of multi-device software features currently enabled (active) on the + /// device. + var enabledSoftwareFeatures: [Securegcm_SoftwareFeature] { + get {return _storage._enabledSoftwareFeatures} + set {_uniqueStorage()._enabledSoftwareFeatures = newValue} + } + + /// The enrollment session id this is sent with + var enrollmentSessionID: Data { + get {return _storage._enrollmentSessionID ?? Data()} + set {_uniqueStorage()._enrollmentSessionID = newValue} + } + /// Returns true if `enrollmentSessionID` has been explicitly set. + var hasEnrollmentSessionID: Bool {return _storage._enrollmentSessionID != nil} + /// Clears the value of `enrollmentSessionID`. Subsequent reads from it will return its default value. + mutating func clearEnrollmentSessionID() {_uniqueStorage()._enrollmentSessionID = nil} + + /// A copy of the user's OAuth token + var oauthToken: String { + get {return _storage._oauthToken ?? String()} + set {_uniqueStorage()._oauthToken = newValue} + } + /// Returns true if `oauthToken` has been explicitly set. + var hasOauthToken: Bool {return _storage._oauthToken != nil} + /// Clears the value of `oauthToken`. Subsequent reads from it will return its default value. + mutating func clearOauthToken() {_uniqueStorage()._oauthToken = nil} + + var unknownFields = SwiftProtobuf.UnknownStorage() + + init() {} + + fileprivate var _storage = _StorageClass.defaultInstance +} + +struct Securegcm_GcmMetadata { + // SwiftProtobuf.Message conformance is added in an extension below. See the + // `Message` and `Message+*Additions` files in the SwiftProtobuf library for + // methods supported on all messages. + + var type: Securegcm_Type { + get {return _type ?? .enrollment} + set {_type = newValue} + } + /// Returns true if `type` has been explicitly set. + var hasType: Bool {return self._type != nil} + /// Clears the value of `type`. Subsequent reads from it will return its default value. + mutating func clearType() {self._type = nil} + + var version: Int32 { + get {return _version ?? 0} + set {_version = newValue} + } + /// Returns true if `version` has been explicitly set. + var hasVersion: Bool {return self._version != nil} + /// Clears the value of `version`. Subsequent reads from it will return its default value. + mutating func clearVersion() {self._version = nil} + + var unknownFields = SwiftProtobuf.UnknownStorage() + + init() {} + + fileprivate var _type: Securegcm_Type? = nil + fileprivate var _version: Int32? = nil +} + +struct Securegcm_Tickle { + // SwiftProtobuf.Message conformance is added in an extension below. See the + // `Message` and `Message+*Additions` files in the SwiftProtobuf library for + // methods supported on all messages. + + /// Time after which this tickle should expire + var expiryTime: UInt64 { + get {return _expiryTime ?? 0} + set {_expiryTime = newValue} + } + /// Returns true if `expiryTime` has been explicitly set. + var hasExpiryTime: Bool {return self._expiryTime != nil} + /// Clears the value of `expiryTime`. Subsequent reads from it will return its default value. + mutating func clearExpiryTime() {self._expiryTime = nil} + + var unknownFields = SwiftProtobuf.UnknownStorage() + + init() {} + + fileprivate var _expiryTime: UInt64? = nil +} + +struct Securegcm_LoginNotificationInfo { + // SwiftProtobuf.Message conformance is added in an extension below. See the + // `Message` and `Message+*Additions` files in the SwiftProtobuf library for + // methods supported on all messages. + + /// Time at which the server received the login notification request. + var creationTime: UInt64 { + get {return _creationTime ?? 0} + set {_creationTime = newValue} + } + /// Returns true if `creationTime` has been explicitly set. + var hasCreationTime: Bool {return self._creationTime != nil} + /// Clears the value of `creationTime`. Subsequent reads from it will return its default value. + mutating func clearCreationTime() {self._creationTime = nil} + + /// Must correspond to user_id in LoginNotificationRequest, if set. + var email: String { + get {return _email ?? String()} + set {_email = newValue} + } + /// Returns true if `email` has been explicitly set. + var hasEmail: Bool {return self._email != nil} + /// Clears the value of `email`. Subsequent reads from it will return its default value. + mutating func clearEmail() {self._email = nil} + + /// Host where the user's credentials were used to login, if meaningful. + var host: String { + get {return _host ?? String()} + set {_host = newValue} + } + /// Returns true if `host` has been explicitly set. + var hasHost: Bool {return self._host != nil} + /// Clears the value of `host`. Subsequent reads from it will return its default value. + mutating func clearHost() {self._host = nil} + + /// Location from where the user's credentials were used, if meaningful. + var source: String { + get {return _source ?? String()} + set {_source = newValue} + } + /// Returns true if `source` has been explicitly set. + var hasSource: Bool {return self._source != nil} + /// Clears the value of `source`. Subsequent reads from it will return its default value. + mutating func clearSource() {self._source = nil} + + /// Type of login, e.g. ssh, gnome-screensaver, or web. + var eventType: String { + get {return _eventType ?? String()} + set {_eventType = newValue} + } + /// Returns true if `eventType` has been explicitly set. + var hasEventType: Bool {return self._eventType != nil} + /// Clears the value of `eventType`. Subsequent reads from it will return its default value. + mutating func clearEventType() {self._eventType = nil} + + var unknownFields = SwiftProtobuf.UnknownStorage() + + init() {} + + fileprivate var _creationTime: UInt64? = nil + fileprivate var _email: String? = nil + fileprivate var _host: String? = nil + fileprivate var _source: String? = nil + fileprivate var _eventType: String? = nil +} + +#if swift(>=5.5) && canImport(_Concurrency) +extension Securegcm_AppleDeviceDiagonalMils: @unchecked Sendable {} +extension Securegcm_DeviceType: @unchecked Sendable {} +extension Securegcm_SoftwareFeature: @unchecked Sendable {} +extension Securegcm_InvocationReason: @unchecked Sendable {} +extension Securegcm_Type: @unchecked Sendable {} +extension Securegcm_GcmDeviceInfo: @unchecked Sendable {} +extension Securegcm_GcmMetadata: @unchecked Sendable {} +extension Securegcm_Tickle: @unchecked Sendable {} +extension Securegcm_LoginNotificationInfo: @unchecked Sendable {} +#endif // swift(>=5.5) && canImport(_Concurrency) + +// MARK: - Code below here is support for the SwiftProtobuf runtime. + +fileprivate let _protobuf_package = "securegcm" + +extension Securegcm_AppleDeviceDiagonalMils: SwiftProtobuf._ProtoNameProviding { + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 4000: .same(proto: "APPLE_PHONE"), + 7900: .same(proto: "APPLE_PAD"), + ] +} + +extension Securegcm_DeviceType: SwiftProtobuf._ProtoNameProviding { + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 0: .same(proto: "UNKNOWN"), + 1: .same(proto: "ANDROID"), + 2: .same(proto: "CHROME"), + 3: .same(proto: "IOS"), + 4: .same(proto: "BROWSER"), + 5: .same(proto: "OSX"), + ] +} + +extension Securegcm_SoftwareFeature: SwiftProtobuf._ProtoNameProviding { + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 0: .same(proto: "UNKNOWN_FEATURE"), + 1: .same(proto: "BETTER_TOGETHER_HOST"), + 2: .same(proto: "BETTER_TOGETHER_CLIENT"), + 3: .same(proto: "EASY_UNLOCK_HOST"), + 4: .same(proto: "EASY_UNLOCK_CLIENT"), + 5: .same(proto: "MAGIC_TETHER_HOST"), + 6: .same(proto: "MAGIC_TETHER_CLIENT"), + 7: .same(proto: "SMS_CONNECT_HOST"), + 8: .same(proto: "SMS_CONNECT_CLIENT"), + ] +} + +extension Securegcm_InvocationReason: SwiftProtobuf._ProtoNameProviding { + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 0: .same(proto: "REASON_UNKNOWN"), + 1: .same(proto: "REASON_INITIALIZATION"), + 2: .same(proto: "REASON_PERIODIC"), + 3: .same(proto: "REASON_SLOW_PERIODIC"), + 4: .same(proto: "REASON_FAST_PERIODIC"), + 5: .same(proto: "REASON_EXPIRATION"), + 6: .same(proto: "REASON_FAILURE_RECOVERY"), + 7: .same(proto: "REASON_NEW_ACCOUNT"), + 8: .same(proto: "REASON_CHANGED_ACCOUNT"), + 9: .same(proto: "REASON_FEATURE_TOGGLED"), + 10: .same(proto: "REASON_SERVER_INITIATED"), + 11: .same(proto: "REASON_ADDRESS_CHANGE"), + 12: .same(proto: "REASON_SOFTWARE_UPDATE"), + 13: .same(proto: "REASON_MANUAL"), + 14: .same(proto: "REASON_CUSTOM_KEY_INVALIDATION"), + 15: .same(proto: "REASON_PROXIMITY_PERIODIC"), + ] +} + +extension Securegcm_Type: SwiftProtobuf._ProtoNameProviding { + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 0: .same(proto: "ENROLLMENT"), + 1: .same(proto: "TICKLE"), + 2: .same(proto: "TX_REQUEST"), + 3: .same(proto: "TX_REPLY"), + 4: .same(proto: "TX_SYNC_REQUEST"), + 5: .same(proto: "TX_SYNC_RESPONSE"), + 6: .same(proto: "TX_PING"), + 7: .same(proto: "DEVICE_INFO_UPDATE"), + 8: .same(proto: "TX_CANCEL_REQUEST"), + 10: .same(proto: "PROXIMITYAUTH_PAIRING"), + 11: .same(proto: "GCMV1_IDENTITY_ASSERTION"), + 12: .same(proto: "DEVICE_TO_DEVICE_RESPONDER_HELLO_PAYLOAD"), + 13: .same(proto: "DEVICE_TO_DEVICE_MESSAGE"), + 14: .same(proto: "DEVICE_PROXIMITY_CALLBACK"), + 15: .same(proto: "UNLOCK_KEY_SIGNED_CHALLENGE"), + 101: .same(proto: "LOGIN_NOTIFICATION"), + ] +} + +extension Securegcm_GcmDeviceInfo: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let protoMessageName: String = _protobuf_package + ".GcmDeviceInfo" + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 1: .standard(proto: "android_device_id"), + 102: .standard(proto: "gcm_registration_id"), + 202: .standard(proto: "apn_registration_id"), + 203: .standard(proto: "notification_enabled"), + 302: .standard(proto: "bluetooth_mac_address"), + 103: .standard(proto: "device_master_key_hash"), + 4: .standard(proto: "user_public_key"), + 7: .standard(proto: "device_model"), + 8: .same(proto: "locale"), + 9: .standard(proto: "key_handle"), + 12: .same(proto: "counter"), + 13: .standard(proto: "device_os_version"), + 14: .standard(proto: "device_os_version_code"), + 15: .standard(proto: "device_os_release"), + 16: .standard(proto: "device_os_codename"), + 17: .standard(proto: "device_software_version"), + 18: .standard(proto: "device_software_version_code"), + 19: .standard(proto: "device_software_package"), + 22: .standard(proto: "device_display_diagonal_mils"), + 24: .standard(proto: "device_authzen_version"), + 29: .standard(proto: "long_device_id"), + 31: .standard(proto: "device_manufacturer"), + 32: .standard(proto: "device_type"), + 400: .standard(proto: "using_secure_screenlock"), + 401: .standard(proto: "auto_unlock_screenlock_supported"), + 402: .standard(proto: "auto_unlock_screenlock_enabled"), + 403: .standard(proto: "bluetooth_radio_supported"), + 404: .standard(proto: "bluetooth_radio_enabled"), + 405: .standard(proto: "mobile_data_supported"), + 406: .standard(proto: "tethering_supported"), + 407: .standard(proto: "ble_radio_supported"), + 408: .standard(proto: "pixel_experience"), + 409: .standard(proto: "arc_plus_plus"), + 410: .standard(proto: "is_screenlock_state_flaky"), + 411: .standard(proto: "supported_software_features"), + 412: .standard(proto: "enabled_software_features"), + 1000: .standard(proto: "enrollment_session_id"), + 1001: .standard(proto: "oauth_token"), + ] + + fileprivate class _StorageClass { + var _androidDeviceID: UInt64? = nil + var _gcmRegistrationID: Data? = nil + var _apnRegistrationID: Data? = nil + var _notificationEnabled: Bool? = nil + var _bluetoothMacAddress: String? = nil + var _deviceMasterKeyHash: Data? = nil + var _userPublicKey: Data? = nil + var _deviceModel: String? = nil + var _locale: String? = nil + var _keyHandle: Data? = nil + var _counter: Int64? = nil + var _deviceOsVersion: String? = nil + var _deviceOsVersionCode: Int64? = nil + var _deviceOsRelease: String? = nil + var _deviceOsCodename: String? = nil + var _deviceSoftwareVersion: String? = nil + var _deviceSoftwareVersionCode: Int64? = nil + var _deviceSoftwarePackage: String? = nil + var _deviceDisplayDiagonalMils: Int32? = nil + var _deviceAuthzenVersion: Int32? = nil + var _longDeviceID: Data? = nil + var _deviceManufacturer: String? = nil + var _deviceType: Securegcm_DeviceType? = nil + var _usingSecureScreenlock: Bool? = nil + var _autoUnlockScreenlockSupported: Bool? = nil + var _autoUnlockScreenlockEnabled: Bool? = nil + var _bluetoothRadioSupported: Bool? = nil + var _bluetoothRadioEnabled: Bool? = nil + var _mobileDataSupported: Bool? = nil + var _tetheringSupported: Bool? = nil + var _bleRadioSupported: Bool? = nil + var _pixelExperience: Bool? = nil + var _arcPlusPlus: Bool? = nil + var _isScreenlockStateFlaky: Bool? = nil + var _supportedSoftwareFeatures: [Securegcm_SoftwareFeature] = [] + var _enabledSoftwareFeatures: [Securegcm_SoftwareFeature] = [] + var _enrollmentSessionID: Data? = nil + var _oauthToken: String? = nil + + static let defaultInstance = _StorageClass() + + private init() {} + + init(copying source: _StorageClass) { + _androidDeviceID = source._androidDeviceID + _gcmRegistrationID = source._gcmRegistrationID + _apnRegistrationID = source._apnRegistrationID + _notificationEnabled = source._notificationEnabled + _bluetoothMacAddress = source._bluetoothMacAddress + _deviceMasterKeyHash = source._deviceMasterKeyHash + _userPublicKey = source._userPublicKey + _deviceModel = source._deviceModel + _locale = source._locale + _keyHandle = source._keyHandle + _counter = source._counter + _deviceOsVersion = source._deviceOsVersion + _deviceOsVersionCode = source._deviceOsVersionCode + _deviceOsRelease = source._deviceOsRelease + _deviceOsCodename = source._deviceOsCodename + _deviceSoftwareVersion = source._deviceSoftwareVersion + _deviceSoftwareVersionCode = source._deviceSoftwareVersionCode + _deviceSoftwarePackage = source._deviceSoftwarePackage + _deviceDisplayDiagonalMils = source._deviceDisplayDiagonalMils + _deviceAuthzenVersion = source._deviceAuthzenVersion + _longDeviceID = source._longDeviceID + _deviceManufacturer = source._deviceManufacturer + _deviceType = source._deviceType + _usingSecureScreenlock = source._usingSecureScreenlock + _autoUnlockScreenlockSupported = source._autoUnlockScreenlockSupported + _autoUnlockScreenlockEnabled = source._autoUnlockScreenlockEnabled + _bluetoothRadioSupported = source._bluetoothRadioSupported + _bluetoothRadioEnabled = source._bluetoothRadioEnabled + _mobileDataSupported = source._mobileDataSupported + _tetheringSupported = source._tetheringSupported + _bleRadioSupported = source._bleRadioSupported + _pixelExperience = source._pixelExperience + _arcPlusPlus = source._arcPlusPlus + _isScreenlockStateFlaky = source._isScreenlockStateFlaky + _supportedSoftwareFeatures = source._supportedSoftwareFeatures + _enabledSoftwareFeatures = source._enabledSoftwareFeatures + _enrollmentSessionID = source._enrollmentSessionID + _oauthToken = source._oauthToken + } + } + + fileprivate mutating func _uniqueStorage() -> _StorageClass { + if !isKnownUniquelyReferenced(&_storage) { + _storage = _StorageClass(copying: _storage) + } + return _storage + } + + public var isInitialized: Bool { + return withExtendedLifetime(_storage) { (_storage: _StorageClass) in + if _storage._userPublicKey == nil {return false} + return true + } + } + + mutating func decodeMessage(decoder: inout D) throws { + _ = _uniqueStorage() + try withExtendedLifetime(_storage) { (_storage: _StorageClass) in + while let fieldNumber = try decoder.nextFieldNumber() { + // The use of inline closures is to circumvent an issue where the compiler + // allocates stack space for every case branch when no optimizations are + // enabled. https://github.com/apple/swift-protobuf/issues/1034 + switch fieldNumber { + case 1: try { try decoder.decodeSingularFixed64Field(value: &_storage._androidDeviceID) }() + case 4: try { try decoder.decodeSingularBytesField(value: &_storage._userPublicKey) }() + case 7: try { try decoder.decodeSingularStringField(value: &_storage._deviceModel) }() + case 8: try { try decoder.decodeSingularStringField(value: &_storage._locale) }() + case 9: try { try decoder.decodeSingularBytesField(value: &_storage._keyHandle) }() + case 12: try { try decoder.decodeSingularInt64Field(value: &_storage._counter) }() + case 13: try { try decoder.decodeSingularStringField(value: &_storage._deviceOsVersion) }() + case 14: try { try decoder.decodeSingularInt64Field(value: &_storage._deviceOsVersionCode) }() + case 15: try { try decoder.decodeSingularStringField(value: &_storage._deviceOsRelease) }() + case 16: try { try decoder.decodeSingularStringField(value: &_storage._deviceOsCodename) }() + case 17: try { try decoder.decodeSingularStringField(value: &_storage._deviceSoftwareVersion) }() + case 18: try { try decoder.decodeSingularInt64Field(value: &_storage._deviceSoftwareVersionCode) }() + case 19: try { try decoder.decodeSingularStringField(value: &_storage._deviceSoftwarePackage) }() + case 22: try { try decoder.decodeSingularInt32Field(value: &_storage._deviceDisplayDiagonalMils) }() + case 24: try { try decoder.decodeSingularInt32Field(value: &_storage._deviceAuthzenVersion) }() + case 29: try { try decoder.decodeSingularBytesField(value: &_storage._longDeviceID) }() + case 31: try { try decoder.decodeSingularStringField(value: &_storage._deviceManufacturer) }() + case 32: try { try decoder.decodeSingularEnumField(value: &_storage._deviceType) }() + case 102: try { try decoder.decodeSingularBytesField(value: &_storage._gcmRegistrationID) }() + case 103: try { try decoder.decodeSingularBytesField(value: &_storage._deviceMasterKeyHash) }() + case 202: try { try decoder.decodeSingularBytesField(value: &_storage._apnRegistrationID) }() + case 203: try { try decoder.decodeSingularBoolField(value: &_storage._notificationEnabled) }() + case 302: try { try decoder.decodeSingularStringField(value: &_storage._bluetoothMacAddress) }() + case 400: try { try decoder.decodeSingularBoolField(value: &_storage._usingSecureScreenlock) }() + case 401: try { try decoder.decodeSingularBoolField(value: &_storage._autoUnlockScreenlockSupported) }() + case 402: try { try decoder.decodeSingularBoolField(value: &_storage._autoUnlockScreenlockEnabled) }() + case 403: try { try decoder.decodeSingularBoolField(value: &_storage._bluetoothRadioSupported) }() + case 404: try { try decoder.decodeSingularBoolField(value: &_storage._bluetoothRadioEnabled) }() + case 405: try { try decoder.decodeSingularBoolField(value: &_storage._mobileDataSupported) }() + case 406: try { try decoder.decodeSingularBoolField(value: &_storage._tetheringSupported) }() + case 407: try { try decoder.decodeSingularBoolField(value: &_storage._bleRadioSupported) }() + case 408: try { try decoder.decodeSingularBoolField(value: &_storage._pixelExperience) }() + case 409: try { try decoder.decodeSingularBoolField(value: &_storage._arcPlusPlus) }() + case 410: try { try decoder.decodeSingularBoolField(value: &_storage._isScreenlockStateFlaky) }() + case 411: try { try decoder.decodeRepeatedEnumField(value: &_storage._supportedSoftwareFeatures) }() + case 412: try { try decoder.decodeRepeatedEnumField(value: &_storage._enabledSoftwareFeatures) }() + case 1000: try { try decoder.decodeSingularBytesField(value: &_storage._enrollmentSessionID) }() + case 1001: try { try decoder.decodeSingularStringField(value: &_storage._oauthToken) }() + default: break + } + } + } + } + + func traverse(visitor: inout V) throws { + try withExtendedLifetime(_storage) { (_storage: _StorageClass) in + // The use of inline closures is to circumvent an issue where the compiler + // allocates stack space for every if/case branch local when no optimizations + // are enabled. https://github.com/apple/swift-protobuf/issues/1034 and + // https://github.com/apple/swift-protobuf/issues/1182 + try { if let v = _storage._androidDeviceID { + try visitor.visitSingularFixed64Field(value: v, fieldNumber: 1) + } }() + try { if let v = _storage._userPublicKey { + try visitor.visitSingularBytesField(value: v, fieldNumber: 4) + } }() + try { if let v = _storage._deviceModel { + try visitor.visitSingularStringField(value: v, fieldNumber: 7) + } }() + try { if let v = _storage._locale { + try visitor.visitSingularStringField(value: v, fieldNumber: 8) + } }() + try { if let v = _storage._keyHandle { + try visitor.visitSingularBytesField(value: v, fieldNumber: 9) + } }() + try { if let v = _storage._counter { + try visitor.visitSingularInt64Field(value: v, fieldNumber: 12) + } }() + try { if let v = _storage._deviceOsVersion { + try visitor.visitSingularStringField(value: v, fieldNumber: 13) + } }() + try { if let v = _storage._deviceOsVersionCode { + try visitor.visitSingularInt64Field(value: v, fieldNumber: 14) + } }() + try { if let v = _storage._deviceOsRelease { + try visitor.visitSingularStringField(value: v, fieldNumber: 15) + } }() + try { if let v = _storage._deviceOsCodename { + try visitor.visitSingularStringField(value: v, fieldNumber: 16) + } }() + try { if let v = _storage._deviceSoftwareVersion { + try visitor.visitSingularStringField(value: v, fieldNumber: 17) + } }() + try { if let v = _storage._deviceSoftwareVersionCode { + try visitor.visitSingularInt64Field(value: v, fieldNumber: 18) + } }() + try { if let v = _storage._deviceSoftwarePackage { + try visitor.visitSingularStringField(value: v, fieldNumber: 19) + } }() + try { if let v = _storage._deviceDisplayDiagonalMils { + try visitor.visitSingularInt32Field(value: v, fieldNumber: 22) + } }() + try { if let v = _storage._deviceAuthzenVersion { + try visitor.visitSingularInt32Field(value: v, fieldNumber: 24) + } }() + try { if let v = _storage._longDeviceID { + try visitor.visitSingularBytesField(value: v, fieldNumber: 29) + } }() + try { if let v = _storage._deviceManufacturer { + try visitor.visitSingularStringField(value: v, fieldNumber: 31) + } }() + try { if let v = _storage._deviceType { + try visitor.visitSingularEnumField(value: v, fieldNumber: 32) + } }() + try { if let v = _storage._gcmRegistrationID { + try visitor.visitSingularBytesField(value: v, fieldNumber: 102) + } }() + try { if let v = _storage._deviceMasterKeyHash { + try visitor.visitSingularBytesField(value: v, fieldNumber: 103) + } }() + try { if let v = _storage._apnRegistrationID { + try visitor.visitSingularBytesField(value: v, fieldNumber: 202) + } }() + try { if let v = _storage._notificationEnabled { + try visitor.visitSingularBoolField(value: v, fieldNumber: 203) + } }() + try { if let v = _storage._bluetoothMacAddress { + try visitor.visitSingularStringField(value: v, fieldNumber: 302) + } }() + try { if let v = _storage._usingSecureScreenlock { + try visitor.visitSingularBoolField(value: v, fieldNumber: 400) + } }() + try { if let v = _storage._autoUnlockScreenlockSupported { + try visitor.visitSingularBoolField(value: v, fieldNumber: 401) + } }() + try { if let v = _storage._autoUnlockScreenlockEnabled { + try visitor.visitSingularBoolField(value: v, fieldNumber: 402) + } }() + try { if let v = _storage._bluetoothRadioSupported { + try visitor.visitSingularBoolField(value: v, fieldNumber: 403) + } }() + try { if let v = _storage._bluetoothRadioEnabled { + try visitor.visitSingularBoolField(value: v, fieldNumber: 404) + } }() + try { if let v = _storage._mobileDataSupported { + try visitor.visitSingularBoolField(value: v, fieldNumber: 405) + } }() + try { if let v = _storage._tetheringSupported { + try visitor.visitSingularBoolField(value: v, fieldNumber: 406) + } }() + try { if let v = _storage._bleRadioSupported { + try visitor.visitSingularBoolField(value: v, fieldNumber: 407) + } }() + try { if let v = _storage._pixelExperience { + try visitor.visitSingularBoolField(value: v, fieldNumber: 408) + } }() + try { if let v = _storage._arcPlusPlus { + try visitor.visitSingularBoolField(value: v, fieldNumber: 409) + } }() + try { if let v = _storage._isScreenlockStateFlaky { + try visitor.visitSingularBoolField(value: v, fieldNumber: 410) + } }() + if !_storage._supportedSoftwareFeatures.isEmpty { + try visitor.visitRepeatedEnumField(value: _storage._supportedSoftwareFeatures, fieldNumber: 411) + } + if !_storage._enabledSoftwareFeatures.isEmpty { + try visitor.visitRepeatedEnumField(value: _storage._enabledSoftwareFeatures, fieldNumber: 412) + } + try { if let v = _storage._enrollmentSessionID { + try visitor.visitSingularBytesField(value: v, fieldNumber: 1000) + } }() + try { if let v = _storage._oauthToken { + try visitor.visitSingularStringField(value: v, fieldNumber: 1001) + } }() + } + try unknownFields.traverse(visitor: &visitor) + } + + static func ==(lhs: Securegcm_GcmDeviceInfo, rhs: Securegcm_GcmDeviceInfo) -> Bool { + if lhs._storage !== rhs._storage { + let storagesAreEqual: Bool = withExtendedLifetime((lhs._storage, rhs._storage)) { (_args: (_StorageClass, _StorageClass)) in + let _storage = _args.0 + let rhs_storage = _args.1 + if _storage._androidDeviceID != rhs_storage._androidDeviceID {return false} + if _storage._gcmRegistrationID != rhs_storage._gcmRegistrationID {return false} + if _storage._apnRegistrationID != rhs_storage._apnRegistrationID {return false} + if _storage._notificationEnabled != rhs_storage._notificationEnabled {return false} + if _storage._bluetoothMacAddress != rhs_storage._bluetoothMacAddress {return false} + if _storage._deviceMasterKeyHash != rhs_storage._deviceMasterKeyHash {return false} + if _storage._userPublicKey != rhs_storage._userPublicKey {return false} + if _storage._deviceModel != rhs_storage._deviceModel {return false} + if _storage._locale != rhs_storage._locale {return false} + if _storage._keyHandle != rhs_storage._keyHandle {return false} + if _storage._counter != rhs_storage._counter {return false} + if _storage._deviceOsVersion != rhs_storage._deviceOsVersion {return false} + if _storage._deviceOsVersionCode != rhs_storage._deviceOsVersionCode {return false} + if _storage._deviceOsRelease != rhs_storage._deviceOsRelease {return false} + if _storage._deviceOsCodename != rhs_storage._deviceOsCodename {return false} + if _storage._deviceSoftwareVersion != rhs_storage._deviceSoftwareVersion {return false} + if _storage._deviceSoftwareVersionCode != rhs_storage._deviceSoftwareVersionCode {return false} + if _storage._deviceSoftwarePackage != rhs_storage._deviceSoftwarePackage {return false} + if _storage._deviceDisplayDiagonalMils != rhs_storage._deviceDisplayDiagonalMils {return false} + if _storage._deviceAuthzenVersion != rhs_storage._deviceAuthzenVersion {return false} + if _storage._longDeviceID != rhs_storage._longDeviceID {return false} + if _storage._deviceManufacturer != rhs_storage._deviceManufacturer {return false} + if _storage._deviceType != rhs_storage._deviceType {return false} + if _storage._usingSecureScreenlock != rhs_storage._usingSecureScreenlock {return false} + if _storage._autoUnlockScreenlockSupported != rhs_storage._autoUnlockScreenlockSupported {return false} + if _storage._autoUnlockScreenlockEnabled != rhs_storage._autoUnlockScreenlockEnabled {return false} + if _storage._bluetoothRadioSupported != rhs_storage._bluetoothRadioSupported {return false} + if _storage._bluetoothRadioEnabled != rhs_storage._bluetoothRadioEnabled {return false} + if _storage._mobileDataSupported != rhs_storage._mobileDataSupported {return false} + if _storage._tetheringSupported != rhs_storage._tetheringSupported {return false} + if _storage._bleRadioSupported != rhs_storage._bleRadioSupported {return false} + if _storage._pixelExperience != rhs_storage._pixelExperience {return false} + if _storage._arcPlusPlus != rhs_storage._arcPlusPlus {return false} + if _storage._isScreenlockStateFlaky != rhs_storage._isScreenlockStateFlaky {return false} + if _storage._supportedSoftwareFeatures != rhs_storage._supportedSoftwareFeatures {return false} + if _storage._enabledSoftwareFeatures != rhs_storage._enabledSoftwareFeatures {return false} + if _storage._enrollmentSessionID != rhs_storage._enrollmentSessionID {return false} + if _storage._oauthToken != rhs_storage._oauthToken {return false} + return true + } + if !storagesAreEqual {return false} + } + if lhs.unknownFields != rhs.unknownFields {return false} + return true + } +} + +extension Securegcm_GcmMetadata: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let protoMessageName: String = _protobuf_package + ".GcmMetadata" + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 1: .same(proto: "type"), + 2: .same(proto: "version"), + ] + + public var isInitialized: Bool { + if self._type == nil {return false} + return true + } + + mutating func decodeMessage(decoder: inout D) throws { + while let fieldNumber = try decoder.nextFieldNumber() { + // The use of inline closures is to circumvent an issue where the compiler + // allocates stack space for every case branch when no optimizations are + // enabled. https://github.com/apple/swift-protobuf/issues/1034 + switch fieldNumber { + case 1: try { try decoder.decodeSingularEnumField(value: &self._type) }() + case 2: try { try decoder.decodeSingularInt32Field(value: &self._version) }() + default: break + } + } + } + + func traverse(visitor: inout V) throws { + // The use of inline closures is to circumvent an issue where the compiler + // allocates stack space for every if/case branch local when no optimizations + // are enabled. https://github.com/apple/swift-protobuf/issues/1034 and + // https://github.com/apple/swift-protobuf/issues/1182 + try { if let v = self._type { + try visitor.visitSingularEnumField(value: v, fieldNumber: 1) + } }() + try { if let v = self._version { + try visitor.visitSingularInt32Field(value: v, fieldNumber: 2) + } }() + try unknownFields.traverse(visitor: &visitor) + } + + static func ==(lhs: Securegcm_GcmMetadata, rhs: Securegcm_GcmMetadata) -> Bool { + if lhs._type != rhs._type {return false} + if lhs._version != rhs._version {return false} + if lhs.unknownFields != rhs.unknownFields {return false} + return true + } +} + +extension Securegcm_Tickle: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let protoMessageName: String = _protobuf_package + ".Tickle" + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 1: .standard(proto: "expiry_time"), + ] + + mutating func decodeMessage(decoder: inout D) throws { + while let fieldNumber = try decoder.nextFieldNumber() { + // The use of inline closures is to circumvent an issue where the compiler + // allocates stack space for every case branch when no optimizations are + // enabled. https://github.com/apple/swift-protobuf/issues/1034 + switch fieldNumber { + case 1: try { try decoder.decodeSingularFixed64Field(value: &self._expiryTime) }() + default: break + } + } + } + + func traverse(visitor: inout V) throws { + // The use of inline closures is to circumvent an issue where the compiler + // allocates stack space for every if/case branch local when no optimizations + // are enabled. https://github.com/apple/swift-protobuf/issues/1034 and + // https://github.com/apple/swift-protobuf/issues/1182 + try { if let v = self._expiryTime { + try visitor.visitSingularFixed64Field(value: v, fieldNumber: 1) + } }() + try unknownFields.traverse(visitor: &visitor) + } + + static func ==(lhs: Securegcm_Tickle, rhs: Securegcm_Tickle) -> Bool { + if lhs._expiryTime != rhs._expiryTime {return false} + if lhs.unknownFields != rhs.unknownFields {return false} + return true + } +} + +extension Securegcm_LoginNotificationInfo: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let protoMessageName: String = _protobuf_package + ".LoginNotificationInfo" + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 2: .standard(proto: "creation_time"), + 3: .same(proto: "email"), + 4: .same(proto: "host"), + 5: .same(proto: "source"), + 6: .standard(proto: "event_type"), + ] + + mutating func decodeMessage(decoder: inout D) throws { + while let fieldNumber = try decoder.nextFieldNumber() { + // The use of inline closures is to circumvent an issue where the compiler + // allocates stack space for every case branch when no optimizations are + // enabled. https://github.com/apple/swift-protobuf/issues/1034 + switch fieldNumber { + case 2: try { try decoder.decodeSingularFixed64Field(value: &self._creationTime) }() + case 3: try { try decoder.decodeSingularStringField(value: &self._email) }() + case 4: try { try decoder.decodeSingularStringField(value: &self._host) }() + case 5: try { try decoder.decodeSingularStringField(value: &self._source) }() + case 6: try { try decoder.decodeSingularStringField(value: &self._eventType) }() + default: break + } + } + } + + func traverse(visitor: inout V) throws { + // The use of inline closures is to circumvent an issue where the compiler + // allocates stack space for every if/case branch local when no optimizations + // are enabled. https://github.com/apple/swift-protobuf/issues/1034 and + // https://github.com/apple/swift-protobuf/issues/1182 + try { if let v = self._creationTime { + try visitor.visitSingularFixed64Field(value: v, fieldNumber: 2) + } }() + try { if let v = self._email { + try visitor.visitSingularStringField(value: v, fieldNumber: 3) + } }() + try { if let v = self._host { + try visitor.visitSingularStringField(value: v, fieldNumber: 4) + } }() + try { if let v = self._source { + try visitor.visitSingularStringField(value: v, fieldNumber: 5) + } }() + try { if let v = self._eventType { + try visitor.visitSingularStringField(value: v, fieldNumber: 6) + } }() + try unknownFields.traverse(visitor: &visitor) + } + + static func ==(lhs: Securegcm_LoginNotificationInfo, rhs: Securegcm_LoginNotificationInfo) -> Bool { + if lhs._creationTime != rhs._creationTime {return false} + if lhs._email != rhs._email {return false} + if lhs._host != rhs._host {return false} + if lhs._source != rhs._source {return false} + if lhs._eventType != rhs._eventType {return false} + if lhs.unknownFields != rhs.unknownFields {return false} + return true + } +} diff --git a/NearDrop/Protobuf/securemessage.pb.swift b/NearDrop/Protobuf/securemessage.pb.swift new file mode 100644 index 0000000..eae8d01 --- /dev/null +++ b/NearDrop/Protobuf/securemessage.pb.swift @@ -0,0 +1,951 @@ +// DO NOT EDIT. +// swift-format-ignore-file +// +// Generated by the Swift generator plugin for the protocol buffer compiler. +// Source: securemessage.proto +// +// For information on using the generated types, please see the documentation: +// https://github.com/apple/swift-protobuf/ + +// Copyright 2020 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Proto definitions for SecureMessage format + +import Foundation +import SwiftProtobuf + +// If the compiler emits an error on this type, it is because this file +// was generated by a version of the `protoc` Swift plug-in that is +// incompatible with the version of SwiftProtobuf to which you are linking. +// Please ensure that you are building against the same version of the API +// that was used to generate this file. +fileprivate struct _GeneratedWithProtocGenSwiftVersion: SwiftProtobuf.ProtobufAPIVersionCheck { + struct _2: SwiftProtobuf.ProtobufAPIVersion_2 {} + typealias Version = _2 +} + +/// Supported "signature" schemes (both symmetric key and public key based) +enum Securemessage_SigScheme: SwiftProtobuf.Enum { + typealias RawValue = Int + case hmacSha256 // = 1 + case ecdsaP256Sha256 // = 2 + + /// Not recommended -- use ECDSA_P256_SHA256 instead + case rsa2048Sha256 // = 3 + + init() { + self = .hmacSha256 + } + + init?(rawValue: Int) { + switch rawValue { + case 1: self = .hmacSha256 + case 2: self = .ecdsaP256Sha256 + case 3: self = .rsa2048Sha256 + default: return nil + } + } + + var rawValue: Int { + switch self { + case .hmacSha256: return 1 + case .ecdsaP256Sha256: return 2 + case .rsa2048Sha256: return 3 + } + } + +} + +#if swift(>=4.2) + +extension Securemessage_SigScheme: CaseIterable { + // Support synthesized by the compiler. +} + +#endif // swift(>=4.2) + +/// Supported encryption schemes +enum Securemessage_EncScheme: SwiftProtobuf.Enum { + typealias RawValue = Int + + /// No encryption + case none // = 1 + case aes256Cbc // = 2 + + init() { + self = .none + } + + init?(rawValue: Int) { + switch rawValue { + case 1: self = .none + case 2: self = .aes256Cbc + default: return nil + } + } + + var rawValue: Int { + switch self { + case .none: return 1 + case .aes256Cbc: return 2 + } + } + +} + +#if swift(>=4.2) + +extension Securemessage_EncScheme: CaseIterable { + // Support synthesized by the compiler. +} + +#endif // swift(>=4.2) + +/// A list of supported public key types +enum Securemessage_PublicKeyType: SwiftProtobuf.Enum { + typealias RawValue = Int + case ecP256 // = 1 + case rsa2048 // = 2 + + /// 2048-bit MODP group 14, from RFC 3526 + case dh2048Modp // = 3 + + init() { + self = .ecP256 + } + + init?(rawValue: Int) { + switch rawValue { + case 1: self = .ecP256 + case 2: self = .rsa2048 + case 3: self = .dh2048Modp + default: return nil + } + } + + var rawValue: Int { + switch self { + case .ecP256: return 1 + case .rsa2048: return 2 + case .dh2048Modp: return 3 + } + } + +} + +#if swift(>=4.2) + +extension Securemessage_PublicKeyType: CaseIterable { + // Support synthesized by the compiler. +} + +#endif // swift(>=4.2) + +struct Securemessage_SecureMessage { + // SwiftProtobuf.Message conformance is added in an extension below. See the + // `Message` and `Message+*Additions` files in the SwiftProtobuf library for + // methods supported on all messages. + + /// Must contain a HeaderAndBody message + var headerAndBody: Data { + get {return _headerAndBody ?? Data()} + set {_headerAndBody = newValue} + } + /// Returns true if `headerAndBody` has been explicitly set. + var hasHeaderAndBody: Bool {return self._headerAndBody != nil} + /// Clears the value of `headerAndBody`. Subsequent reads from it will return its default value. + mutating func clearHeaderAndBody() {self._headerAndBody = nil} + + /// Signature of header_and_body + var signature: Data { + get {return _signature ?? Data()} + set {_signature = newValue} + } + /// Returns true if `signature` has been explicitly set. + var hasSignature: Bool {return self._signature != nil} + /// Clears the value of `signature`. Subsequent reads from it will return its default value. + mutating func clearSignature() {self._signature = nil} + + var unknownFields = SwiftProtobuf.UnknownStorage() + + init() {} + + fileprivate var _headerAndBody: Data? = nil + fileprivate var _signature: Data? = nil +} + +struct Securemessage_Header { + // SwiftProtobuf.Message conformance is added in an extension below. See the + // `Message` and `Message+*Additions` files in the SwiftProtobuf library for + // methods supported on all messages. + + var signatureScheme: Securemessage_SigScheme { + get {return _signatureScheme ?? .hmacSha256} + set {_signatureScheme = newValue} + } + /// Returns true if `signatureScheme` has been explicitly set. + var hasSignatureScheme: Bool {return self._signatureScheme != nil} + /// Clears the value of `signatureScheme`. Subsequent reads from it will return its default value. + mutating func clearSignatureScheme() {self._signatureScheme = nil} + + var encryptionScheme: Securemessage_EncScheme { + get {return _encryptionScheme ?? .none} + set {_encryptionScheme = newValue} + } + /// Returns true if `encryptionScheme` has been explicitly set. + var hasEncryptionScheme: Bool {return self._encryptionScheme != nil} + /// Clears the value of `encryptionScheme`. Subsequent reads from it will return its default value. + mutating func clearEncryptionScheme() {self._encryptionScheme = nil} + + /// Identifies the verification key + var verificationKeyID: Data { + get {return _verificationKeyID ?? Data()} + set {_verificationKeyID = newValue} + } + /// Returns true if `verificationKeyID` has been explicitly set. + var hasVerificationKeyID: Bool {return self._verificationKeyID != nil} + /// Clears the value of `verificationKeyID`. Subsequent reads from it will return its default value. + mutating func clearVerificationKeyID() {self._verificationKeyID = nil} + + /// Identifies the decryption key + var decryptionKeyID: Data { + get {return _decryptionKeyID ?? Data()} + set {_decryptionKeyID = newValue} + } + /// Returns true if `decryptionKeyID` has been explicitly set. + var hasDecryptionKeyID: Bool {return self._decryptionKeyID != nil} + /// Clears the value of `decryptionKeyID`. Subsequent reads from it will return its default value. + mutating func clearDecryptionKeyID() {self._decryptionKeyID = nil} + + /// Encryption may use an IV + var iv: Data { + get {return _iv ?? Data()} + set {_iv = newValue} + } + /// Returns true if `iv` has been explicitly set. + var hasIv: Bool {return self._iv != nil} + /// Clears the value of `iv`. Subsequent reads from it will return its default value. + mutating func clearIv() {self._iv = nil} + + /// Arbitrary per-protocol public data, to be sent with the plain-text header + var publicMetadata: Data { + get {return _publicMetadata ?? Data()} + set {_publicMetadata = newValue} + } + /// Returns true if `publicMetadata` has been explicitly set. + var hasPublicMetadata: Bool {return self._publicMetadata != nil} + /// Clears the value of `publicMetadata`. Subsequent reads from it will return its default value. + mutating func clearPublicMetadata() {self._publicMetadata = nil} + + /// The length of some associated data this is not sent in this SecureMessage, + /// but which will be bound to the signature. + var associatedDataLength: UInt32 { + get {return _associatedDataLength ?? 0} + set {_associatedDataLength = newValue} + } + /// Returns true if `associatedDataLength` has been explicitly set. + var hasAssociatedDataLength: Bool {return self._associatedDataLength != nil} + /// Clears the value of `associatedDataLength`. Subsequent reads from it will return its default value. + mutating func clearAssociatedDataLength() {self._associatedDataLength = nil} + + var unknownFields = SwiftProtobuf.UnknownStorage() + + init() {} + + fileprivate var _signatureScheme: Securemessage_SigScheme? = nil + fileprivate var _encryptionScheme: Securemessage_EncScheme? = nil + fileprivate var _verificationKeyID: Data? = nil + fileprivate var _decryptionKeyID: Data? = nil + fileprivate var _iv: Data? = nil + fileprivate var _publicMetadata: Data? = nil + fileprivate var _associatedDataLength: UInt32? = nil +} + +struct Securemessage_HeaderAndBody { + // SwiftProtobuf.Message conformance is added in an extension below. See the + // `Message` and `Message+*Additions` files in the SwiftProtobuf library for + // methods supported on all messages. + + /// Public data about this message (to be bound in the signature) + var header: Securemessage_Header { + get {return _header ?? Securemessage_Header()} + set {_header = newValue} + } + /// Returns true if `header` has been explicitly set. + var hasHeader: Bool {return self._header != nil} + /// Clears the value of `header`. Subsequent reads from it will return its default value. + mutating func clearHeader() {self._header = nil} + + /// Payload data + var body: Data { + get {return _body ?? Data()} + set {_body = newValue} + } + /// Returns true if `body` has been explicitly set. + var hasBody: Bool {return self._body != nil} + /// Clears the value of `body`. Subsequent reads from it will return its default value. + mutating func clearBody() {self._body = nil} + + var unknownFields = SwiftProtobuf.UnknownStorage() + + init() {} + + fileprivate var _header: Securemessage_Header? = nil + fileprivate var _body: Data? = nil +} + +/// Must be kept wire-format compatible with HeaderAndBody. Provides the +/// SecureMessage code with a consistent wire-format representation that +/// remains stable irrespective of protobuf implementation choices. This +/// low-level representation of a HeaderAndBody should not be used by +/// any code outside of the SecureMessage library implementation/tests. +struct Securemessage_HeaderAndBodyInternal { + // SwiftProtobuf.Message conformance is added in an extension below. See the + // `Message` and `Message+*Additions` files in the SwiftProtobuf library for + // methods supported on all messages. + + /// A raw (wire-format) byte encoding of a Header, suitable for hashing + var header: Data { + get {return _header ?? Data()} + set {_header = newValue} + } + /// Returns true if `header` has been explicitly set. + var hasHeader: Bool {return self._header != nil} + /// Clears the value of `header`. Subsequent reads from it will return its default value. + mutating func clearHeader() {self._header = nil} + + /// Payload data + var body: Data { + get {return _body ?? Data()} + set {_body = newValue} + } + /// Returns true if `body` has been explicitly set. + var hasBody: Bool {return self._body != nil} + /// Clears the value of `body`. Subsequent reads from it will return its default value. + mutating func clearBody() {self._body = nil} + + var unknownFields = SwiftProtobuf.UnknownStorage() + + init() {} + + fileprivate var _header: Data? = nil + fileprivate var _body: Data? = nil +} + +/// A convenience proto for encoding NIST P-256 elliptic curve public keys +struct Securemessage_EcP256PublicKey { + // SwiftProtobuf.Message conformance is added in an extension below. See the + // `Message` and `Message+*Additions` files in the SwiftProtobuf library for + // methods supported on all messages. + + /// x and y are encoded in big-endian two's complement (slightly wasteful) + /// Client MUST verify (x,y) is a valid point on NIST P256 + var x: Data { + get {return _x ?? Data()} + set {_x = newValue} + } + /// Returns true if `x` has been explicitly set. + var hasX: Bool {return self._x != nil} + /// Clears the value of `x`. Subsequent reads from it will return its default value. + mutating func clearX() {self._x = nil} + + var y: Data { + get {return _y ?? Data()} + set {_y = newValue} + } + /// Returns true if `y` has been explicitly set. + var hasY: Bool {return self._y != nil} + /// Clears the value of `y`. Subsequent reads from it will return its default value. + mutating func clearY() {self._y = nil} + + var unknownFields = SwiftProtobuf.UnknownStorage() + + init() {} + + fileprivate var _x: Data? = nil + fileprivate var _y: Data? = nil +} + +/// A convenience proto for encoding RSA public keys with small exponents +struct Securemessage_SimpleRsaPublicKey { + // SwiftProtobuf.Message conformance is added in an extension below. See the + // `Message` and `Message+*Additions` files in the SwiftProtobuf library for + // methods supported on all messages. + + /// Encoded in big-endian two's complement + var n: Data { + get {return _n ?? Data()} + set {_n = newValue} + } + /// Returns true if `n` has been explicitly set. + var hasN: Bool {return self._n != nil} + /// Clears the value of `n`. Subsequent reads from it will return its default value. + mutating func clearN() {self._n = nil} + + var e: Int32 { + get {return _e ?? 65537} + set {_e = newValue} + } + /// Returns true if `e` has been explicitly set. + var hasE: Bool {return self._e != nil} + /// Clears the value of `e`. Subsequent reads from it will return its default value. + mutating func clearE() {self._e = nil} + + var unknownFields = SwiftProtobuf.UnknownStorage() + + init() {} + + fileprivate var _n: Data? = nil + fileprivate var _e: Int32? = nil +} + +/// A convenience proto for encoding Diffie-Hellman public keys, +/// for use only when Elliptic Curve based key exchanges are not possible. +/// (Note that the group parameters must be specified separately) +struct Securemessage_DhPublicKey { + // SwiftProtobuf.Message conformance is added in an extension below. See the + // `Message` and `Message+*Additions` files in the SwiftProtobuf library for + // methods supported on all messages. + + /// Big-endian two's complement encoded group element + var y: Data { + get {return _y ?? Data()} + set {_y = newValue} + } + /// Returns true if `y` has been explicitly set. + var hasY: Bool {return self._y != nil} + /// Clears the value of `y`. Subsequent reads from it will return its default value. + mutating func clearY() {self._y = nil} + + var unknownFields = SwiftProtobuf.UnknownStorage() + + init() {} + + fileprivate var _y: Data? = nil +} + +struct Securemessage_GenericPublicKey { + // SwiftProtobuf.Message conformance is added in an extension below. See the + // `Message` and `Message+*Additions` files in the SwiftProtobuf library for + // methods supported on all messages. + + var type: Securemessage_PublicKeyType { + get {return _type ?? .ecP256} + set {_type = newValue} + } + /// Returns true if `type` has been explicitly set. + var hasType: Bool {return self._type != nil} + /// Clears the value of `type`. Subsequent reads from it will return its default value. + mutating func clearType() {self._type = nil} + + var ecP256PublicKey: Securemessage_EcP256PublicKey { + get {return _ecP256PublicKey ?? Securemessage_EcP256PublicKey()} + set {_ecP256PublicKey = newValue} + } + /// Returns true if `ecP256PublicKey` has been explicitly set. + var hasEcP256PublicKey: Bool {return self._ecP256PublicKey != nil} + /// Clears the value of `ecP256PublicKey`. Subsequent reads from it will return its default value. + mutating func clearEcP256PublicKey() {self._ecP256PublicKey = nil} + + var rsa2048PublicKey: Securemessage_SimpleRsaPublicKey { + get {return _rsa2048PublicKey ?? Securemessage_SimpleRsaPublicKey()} + set {_rsa2048PublicKey = newValue} + } + /// Returns true if `rsa2048PublicKey` has been explicitly set. + var hasRsa2048PublicKey: Bool {return self._rsa2048PublicKey != nil} + /// Clears the value of `rsa2048PublicKey`. Subsequent reads from it will return its default value. + mutating func clearRsa2048PublicKey() {self._rsa2048PublicKey = nil} + + /// Use only as a last resort + var dh2048PublicKey: Securemessage_DhPublicKey { + get {return _dh2048PublicKey ?? Securemessage_DhPublicKey()} + set {_dh2048PublicKey = newValue} + } + /// Returns true if `dh2048PublicKey` has been explicitly set. + var hasDh2048PublicKey: Bool {return self._dh2048PublicKey != nil} + /// Clears the value of `dh2048PublicKey`. Subsequent reads from it will return its default value. + mutating func clearDh2048PublicKey() {self._dh2048PublicKey = nil} + + var unknownFields = SwiftProtobuf.UnknownStorage() + + init() {} + + fileprivate var _type: Securemessage_PublicKeyType? = nil + fileprivate var _ecP256PublicKey: Securemessage_EcP256PublicKey? = nil + fileprivate var _rsa2048PublicKey: Securemessage_SimpleRsaPublicKey? = nil + fileprivate var _dh2048PublicKey: Securemessage_DhPublicKey? = nil +} + +#if swift(>=5.5) && canImport(_Concurrency) +extension Securemessage_SigScheme: @unchecked Sendable {} +extension Securemessage_EncScheme: @unchecked Sendable {} +extension Securemessage_PublicKeyType: @unchecked Sendable {} +extension Securemessage_SecureMessage: @unchecked Sendable {} +extension Securemessage_Header: @unchecked Sendable {} +extension Securemessage_HeaderAndBody: @unchecked Sendable {} +extension Securemessage_HeaderAndBodyInternal: @unchecked Sendable {} +extension Securemessage_EcP256PublicKey: @unchecked Sendable {} +extension Securemessage_SimpleRsaPublicKey: @unchecked Sendable {} +extension Securemessage_DhPublicKey: @unchecked Sendable {} +extension Securemessage_GenericPublicKey: @unchecked Sendable {} +#endif // swift(>=5.5) && canImport(_Concurrency) + +// MARK: - Code below here is support for the SwiftProtobuf runtime. + +fileprivate let _protobuf_package = "securemessage" + +extension Securemessage_SigScheme: SwiftProtobuf._ProtoNameProviding { + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 1: .same(proto: "HMAC_SHA256"), + 2: .same(proto: "ECDSA_P256_SHA256"), + 3: .same(proto: "RSA2048_SHA256"), + ] +} + +extension Securemessage_EncScheme: SwiftProtobuf._ProtoNameProviding { + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 1: .same(proto: "NONE"), + 2: .same(proto: "AES_256_CBC"), + ] +} + +extension Securemessage_PublicKeyType: SwiftProtobuf._ProtoNameProviding { + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 1: .same(proto: "EC_P256"), + 2: .same(proto: "RSA2048"), + 3: .same(proto: "DH2048_MODP"), + ] +} + +extension Securemessage_SecureMessage: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let protoMessageName: String = _protobuf_package + ".SecureMessage" + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 1: .standard(proto: "header_and_body"), + 2: .same(proto: "signature"), + ] + + public var isInitialized: Bool { + if self._headerAndBody == nil {return false} + if self._signature == nil {return false} + return true + } + + mutating func decodeMessage(decoder: inout D) throws { + while let fieldNumber = try decoder.nextFieldNumber() { + // The use of inline closures is to circumvent an issue where the compiler + // allocates stack space for every case branch when no optimizations are + // enabled. https://github.com/apple/swift-protobuf/issues/1034 + switch fieldNumber { + case 1: try { try decoder.decodeSingularBytesField(value: &self._headerAndBody) }() + case 2: try { try decoder.decodeSingularBytesField(value: &self._signature) }() + default: break + } + } + } + + func traverse(visitor: inout V) throws { + // The use of inline closures is to circumvent an issue where the compiler + // allocates stack space for every if/case branch local when no optimizations + // are enabled. https://github.com/apple/swift-protobuf/issues/1034 and + // https://github.com/apple/swift-protobuf/issues/1182 + try { if let v = self._headerAndBody { + try visitor.visitSingularBytesField(value: v, fieldNumber: 1) + } }() + try { if let v = self._signature { + try visitor.visitSingularBytesField(value: v, fieldNumber: 2) + } }() + try unknownFields.traverse(visitor: &visitor) + } + + static func ==(lhs: Securemessage_SecureMessage, rhs: Securemessage_SecureMessage) -> Bool { + if lhs._headerAndBody != rhs._headerAndBody {return false} + if lhs._signature != rhs._signature {return false} + if lhs.unknownFields != rhs.unknownFields {return false} + return true + } +} + +extension Securemessage_Header: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let protoMessageName: String = _protobuf_package + ".Header" + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 1: .standard(proto: "signature_scheme"), + 2: .standard(proto: "encryption_scheme"), + 3: .standard(proto: "verification_key_id"), + 4: .standard(proto: "decryption_key_id"), + 5: .same(proto: "iv"), + 6: .standard(proto: "public_metadata"), + 7: .standard(proto: "associated_data_length"), + ] + + public var isInitialized: Bool { + if self._signatureScheme == nil {return false} + if self._encryptionScheme == nil {return false} + return true + } + + mutating func decodeMessage(decoder: inout D) throws { + while let fieldNumber = try decoder.nextFieldNumber() { + // The use of inline closures is to circumvent an issue where the compiler + // allocates stack space for every case branch when no optimizations are + // enabled. https://github.com/apple/swift-protobuf/issues/1034 + switch fieldNumber { + case 1: try { try decoder.decodeSingularEnumField(value: &self._signatureScheme) }() + case 2: try { try decoder.decodeSingularEnumField(value: &self._encryptionScheme) }() + case 3: try { try decoder.decodeSingularBytesField(value: &self._verificationKeyID) }() + case 4: try { try decoder.decodeSingularBytesField(value: &self._decryptionKeyID) }() + case 5: try { try decoder.decodeSingularBytesField(value: &self._iv) }() + case 6: try { try decoder.decodeSingularBytesField(value: &self._publicMetadata) }() + case 7: try { try decoder.decodeSingularUInt32Field(value: &self._associatedDataLength) }() + default: break + } + } + } + + func traverse(visitor: inout V) throws { + // The use of inline closures is to circumvent an issue where the compiler + // allocates stack space for every if/case branch local when no optimizations + // are enabled. https://github.com/apple/swift-protobuf/issues/1034 and + // https://github.com/apple/swift-protobuf/issues/1182 + try { if let v = self._signatureScheme { + try visitor.visitSingularEnumField(value: v, fieldNumber: 1) + } }() + try { if let v = self._encryptionScheme { + try visitor.visitSingularEnumField(value: v, fieldNumber: 2) + } }() + try { if let v = self._verificationKeyID { + try visitor.visitSingularBytesField(value: v, fieldNumber: 3) + } }() + try { if let v = self._decryptionKeyID { + try visitor.visitSingularBytesField(value: v, fieldNumber: 4) + } }() + try { if let v = self._iv { + try visitor.visitSingularBytesField(value: v, fieldNumber: 5) + } }() + try { if let v = self._publicMetadata { + try visitor.visitSingularBytesField(value: v, fieldNumber: 6) + } }() + try { if let v = self._associatedDataLength { + try visitor.visitSingularUInt32Field(value: v, fieldNumber: 7) + } }() + try unknownFields.traverse(visitor: &visitor) + } + + static func ==(lhs: Securemessage_Header, rhs: Securemessage_Header) -> Bool { + if lhs._signatureScheme != rhs._signatureScheme {return false} + if lhs._encryptionScheme != rhs._encryptionScheme {return false} + if lhs._verificationKeyID != rhs._verificationKeyID {return false} + if lhs._decryptionKeyID != rhs._decryptionKeyID {return false} + if lhs._iv != rhs._iv {return false} + if lhs._publicMetadata != rhs._publicMetadata {return false} + if lhs._associatedDataLength != rhs._associatedDataLength {return false} + if lhs.unknownFields != rhs.unknownFields {return false} + return true + } +} + +extension Securemessage_HeaderAndBody: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let protoMessageName: String = _protobuf_package + ".HeaderAndBody" + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 1: .same(proto: "header"), + 2: .same(proto: "body"), + ] + + public var isInitialized: Bool { + if self._header == nil {return false} + if self._body == nil {return false} + if let v = self._header, !v.isInitialized {return false} + return true + } + + mutating func decodeMessage(decoder: inout D) throws { + while let fieldNumber = try decoder.nextFieldNumber() { + // The use of inline closures is to circumvent an issue where the compiler + // allocates stack space for every case branch when no optimizations are + // enabled. https://github.com/apple/swift-protobuf/issues/1034 + switch fieldNumber { + case 1: try { try decoder.decodeSingularMessageField(value: &self._header) }() + case 2: try { try decoder.decodeSingularBytesField(value: &self._body) }() + default: break + } + } + } + + func traverse(visitor: inout V) throws { + // The use of inline closures is to circumvent an issue where the compiler + // allocates stack space for every if/case branch local when no optimizations + // are enabled. https://github.com/apple/swift-protobuf/issues/1034 and + // https://github.com/apple/swift-protobuf/issues/1182 + try { if let v = self._header { + try visitor.visitSingularMessageField(value: v, fieldNumber: 1) + } }() + try { if let v = self._body { + try visitor.visitSingularBytesField(value: v, fieldNumber: 2) + } }() + try unknownFields.traverse(visitor: &visitor) + } + + static func ==(lhs: Securemessage_HeaderAndBody, rhs: Securemessage_HeaderAndBody) -> Bool { + if lhs._header != rhs._header {return false} + if lhs._body != rhs._body {return false} + if lhs.unknownFields != rhs.unknownFields {return false} + return true + } +} + +extension Securemessage_HeaderAndBodyInternal: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let protoMessageName: String = _protobuf_package + ".HeaderAndBodyInternal" + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 1: .same(proto: "header"), + 2: .same(proto: "body"), + ] + + public var isInitialized: Bool { + if self._header == nil {return false} + if self._body == nil {return false} + return true + } + + mutating func decodeMessage(decoder: inout D) throws { + while let fieldNumber = try decoder.nextFieldNumber() { + // The use of inline closures is to circumvent an issue where the compiler + // allocates stack space for every case branch when no optimizations are + // enabled. https://github.com/apple/swift-protobuf/issues/1034 + switch fieldNumber { + case 1: try { try decoder.decodeSingularBytesField(value: &self._header) }() + case 2: try { try decoder.decodeSingularBytesField(value: &self._body) }() + default: break + } + } + } + + func traverse(visitor: inout V) throws { + // The use of inline closures is to circumvent an issue where the compiler + // allocates stack space for every if/case branch local when no optimizations + // are enabled. https://github.com/apple/swift-protobuf/issues/1034 and + // https://github.com/apple/swift-protobuf/issues/1182 + try { if let v = self._header { + try visitor.visitSingularBytesField(value: v, fieldNumber: 1) + } }() + try { if let v = self._body { + try visitor.visitSingularBytesField(value: v, fieldNumber: 2) + } }() + try unknownFields.traverse(visitor: &visitor) + } + + static func ==(lhs: Securemessage_HeaderAndBodyInternal, rhs: Securemessage_HeaderAndBodyInternal) -> Bool { + if lhs._header != rhs._header {return false} + if lhs._body != rhs._body {return false} + if lhs.unknownFields != rhs.unknownFields {return false} + return true + } +} + +extension Securemessage_EcP256PublicKey: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let protoMessageName: String = _protobuf_package + ".EcP256PublicKey" + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 1: .same(proto: "x"), + 2: .same(proto: "y"), + ] + + public var isInitialized: Bool { + if self._x == nil {return false} + if self._y == nil {return false} + return true + } + + mutating func decodeMessage(decoder: inout D) throws { + while let fieldNumber = try decoder.nextFieldNumber() { + // The use of inline closures is to circumvent an issue where the compiler + // allocates stack space for every case branch when no optimizations are + // enabled. https://github.com/apple/swift-protobuf/issues/1034 + switch fieldNumber { + case 1: try { try decoder.decodeSingularBytesField(value: &self._x) }() + case 2: try { try decoder.decodeSingularBytesField(value: &self._y) }() + default: break + } + } + } + + func traverse(visitor: inout V) throws { + // The use of inline closures is to circumvent an issue where the compiler + // allocates stack space for every if/case branch local when no optimizations + // are enabled. https://github.com/apple/swift-protobuf/issues/1034 and + // https://github.com/apple/swift-protobuf/issues/1182 + try { if let v = self._x { + try visitor.visitSingularBytesField(value: v, fieldNumber: 1) + } }() + try { if let v = self._y { + try visitor.visitSingularBytesField(value: v, fieldNumber: 2) + } }() + try unknownFields.traverse(visitor: &visitor) + } + + static func ==(lhs: Securemessage_EcP256PublicKey, rhs: Securemessage_EcP256PublicKey) -> Bool { + if lhs._x != rhs._x {return false} + if lhs._y != rhs._y {return false} + if lhs.unknownFields != rhs.unknownFields {return false} + return true + } +} + +extension Securemessage_SimpleRsaPublicKey: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let protoMessageName: String = _protobuf_package + ".SimpleRsaPublicKey" + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 1: .same(proto: "n"), + 2: .same(proto: "e"), + ] + + public var isInitialized: Bool { + if self._n == nil {return false} + return true + } + + mutating func decodeMessage(decoder: inout D) throws { + while let fieldNumber = try decoder.nextFieldNumber() { + // The use of inline closures is to circumvent an issue where the compiler + // allocates stack space for every case branch when no optimizations are + // enabled. https://github.com/apple/swift-protobuf/issues/1034 + switch fieldNumber { + case 1: try { try decoder.decodeSingularBytesField(value: &self._n) }() + case 2: try { try decoder.decodeSingularInt32Field(value: &self._e) }() + default: break + } + } + } + + func traverse(visitor: inout V) throws { + // The use of inline closures is to circumvent an issue where the compiler + // allocates stack space for every if/case branch local when no optimizations + // are enabled. https://github.com/apple/swift-protobuf/issues/1034 and + // https://github.com/apple/swift-protobuf/issues/1182 + try { if let v = self._n { + try visitor.visitSingularBytesField(value: v, fieldNumber: 1) + } }() + try { if let v = self._e { + try visitor.visitSingularInt32Field(value: v, fieldNumber: 2) + } }() + try unknownFields.traverse(visitor: &visitor) + } + + static func ==(lhs: Securemessage_SimpleRsaPublicKey, rhs: Securemessage_SimpleRsaPublicKey) -> Bool { + if lhs._n != rhs._n {return false} + if lhs._e != rhs._e {return false} + if lhs.unknownFields != rhs.unknownFields {return false} + return true + } +} + +extension Securemessage_DhPublicKey: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let protoMessageName: String = _protobuf_package + ".DhPublicKey" + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 1: .same(proto: "y"), + ] + + public var isInitialized: Bool { + if self._y == nil {return false} + return true + } + + mutating func decodeMessage(decoder: inout D) throws { + while let fieldNumber = try decoder.nextFieldNumber() { + // The use of inline closures is to circumvent an issue where the compiler + // allocates stack space for every case branch when no optimizations are + // enabled. https://github.com/apple/swift-protobuf/issues/1034 + switch fieldNumber { + case 1: try { try decoder.decodeSingularBytesField(value: &self._y) }() + default: break + } + } + } + + func traverse(visitor: inout V) throws { + // The use of inline closures is to circumvent an issue where the compiler + // allocates stack space for every if/case branch local when no optimizations + // are enabled. https://github.com/apple/swift-protobuf/issues/1034 and + // https://github.com/apple/swift-protobuf/issues/1182 + try { if let v = self._y { + try visitor.visitSingularBytesField(value: v, fieldNumber: 1) + } }() + try unknownFields.traverse(visitor: &visitor) + } + + static func ==(lhs: Securemessage_DhPublicKey, rhs: Securemessage_DhPublicKey) -> Bool { + if lhs._y != rhs._y {return false} + if lhs.unknownFields != rhs.unknownFields {return false} + return true + } +} + +extension Securemessage_GenericPublicKey: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let protoMessageName: String = _protobuf_package + ".GenericPublicKey" + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 1: .same(proto: "type"), + 2: .standard(proto: "ec_p256_public_key"), + 3: .standard(proto: "rsa2048_public_key"), + 4: .standard(proto: "dh2048_public_key"), + ] + + public var isInitialized: Bool { + if self._type == nil {return false} + if let v = self._ecP256PublicKey, !v.isInitialized {return false} + if let v = self._rsa2048PublicKey, !v.isInitialized {return false} + if let v = self._dh2048PublicKey, !v.isInitialized {return false} + return true + } + + mutating func decodeMessage(decoder: inout D) throws { + while let fieldNumber = try decoder.nextFieldNumber() { + // The use of inline closures is to circumvent an issue where the compiler + // allocates stack space for every case branch when no optimizations are + // enabled. https://github.com/apple/swift-protobuf/issues/1034 + switch fieldNumber { + case 1: try { try decoder.decodeSingularEnumField(value: &self._type) }() + case 2: try { try decoder.decodeSingularMessageField(value: &self._ecP256PublicKey) }() + case 3: try { try decoder.decodeSingularMessageField(value: &self._rsa2048PublicKey) }() + case 4: try { try decoder.decodeSingularMessageField(value: &self._dh2048PublicKey) }() + default: break + } + } + } + + func traverse(visitor: inout V) throws { + // The use of inline closures is to circumvent an issue where the compiler + // allocates stack space for every if/case branch local when no optimizations + // are enabled. https://github.com/apple/swift-protobuf/issues/1034 and + // https://github.com/apple/swift-protobuf/issues/1182 + try { if let v = self._type { + try visitor.visitSingularEnumField(value: v, fieldNumber: 1) + } }() + try { if let v = self._ecP256PublicKey { + try visitor.visitSingularMessageField(value: v, fieldNumber: 2) + } }() + try { if let v = self._rsa2048PublicKey { + try visitor.visitSingularMessageField(value: v, fieldNumber: 3) + } }() + try { if let v = self._dh2048PublicKey { + try visitor.visitSingularMessageField(value: v, fieldNumber: 4) + } }() + try unknownFields.traverse(visitor: &visitor) + } + + static func ==(lhs: Securemessage_GenericPublicKey, rhs: Securemessage_GenericPublicKey) -> Bool { + if lhs._type != rhs._type {return false} + if lhs._ecP256PublicKey != rhs._ecP256PublicKey {return false} + if lhs._rsa2048PublicKey != rhs._rsa2048PublicKey {return false} + if lhs._dh2048PublicKey != rhs._dh2048PublicKey {return false} + if lhs.unknownFields != rhs.unknownFields {return false} + return true + } +} diff --git a/NearDrop/Protobuf/ukey.pb.swift b/NearDrop/Protobuf/ukey.pb.swift new file mode 100644 index 0000000..3cbbf2b --- /dev/null +++ b/NearDrop/Protobuf/ukey.pb.swift @@ -0,0 +1,735 @@ +// DO NOT EDIT. +// swift-format-ignore-file +// +// Generated by the Swift generator plugin for the protocol buffer compiler. +// Source: ukey.proto +// +// For information on using the generated types, please see the documentation: +// https://github.com/apple/swift-protobuf/ + +// Copyright 2020 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +import Foundation +import SwiftProtobuf + +// If the compiler emits an error on this type, it is because this file +// was generated by a version of the `protoc` Swift plug-in that is +// incompatible with the version of SwiftProtobuf to which you are linking. +// Please ensure that you are building against the same version of the API +// that was used to generate this file. +fileprivate struct _GeneratedWithProtocGenSwiftVersion: SwiftProtobuf.ProtobufAPIVersionCheck { + struct _2: SwiftProtobuf.ProtobufAPIVersion_2 {} + typealias Version = _2 +} + +enum Securegcm_Ukey2HandshakeCipher: SwiftProtobuf.Enum { + typealias RawValue = Int + case reserved // = 0 + + /// NIST P-256 used for ECDH, SHA512 used for + case p256Sha512 // = 100 + + /// commitment + case curve25519Sha512 // = 200 + + init() { + self = .reserved + } + + init?(rawValue: Int) { + switch rawValue { + case 0: self = .reserved + case 100: self = .p256Sha512 + case 200: self = .curve25519Sha512 + default: return nil + } + } + + var rawValue: Int { + switch self { + case .reserved: return 0 + case .p256Sha512: return 100 + case .curve25519Sha512: return 200 + } + } + +} + +#if swift(>=4.2) + +extension Securegcm_Ukey2HandshakeCipher: CaseIterable { + // Support synthesized by the compiler. +} + +#endif // swift(>=4.2) + +struct Securegcm_Ukey2Message { + // SwiftProtobuf.Message conformance is added in an extension below. See the + // `Message` and `Message+*Additions` files in the SwiftProtobuf library for + // methods supported on all messages. + + /// Identifies message type + var messageType: Securegcm_Ukey2Message.TypeEnum { + get {return _messageType ?? .unknownDoNotUse} + set {_messageType = newValue} + } + /// Returns true if `messageType` has been explicitly set. + var hasMessageType: Bool {return self._messageType != nil} + /// Clears the value of `messageType`. Subsequent reads from it will return its default value. + mutating func clearMessageType() {self._messageType = nil} + + /// Actual message, to be parsed according to + var messageData: Data { + get {return _messageData ?? Data()} + set {_messageData = newValue} + } + /// Returns true if `messageData` has been explicitly set. + var hasMessageData: Bool {return self._messageData != nil} + /// Clears the value of `messageData`. Subsequent reads from it will return its default value. + mutating func clearMessageData() {self._messageData = nil} + + var unknownFields = SwiftProtobuf.UnknownStorage() + + enum TypeEnum: SwiftProtobuf.Enum { + typealias RawValue = Int + case unknownDoNotUse // = 0 + case alert // = 1 + case clientInit // = 2 + case serverInit // = 3 + case clientFinish // = 4 + + init() { + self = .unknownDoNotUse + } + + init?(rawValue: Int) { + switch rawValue { + case 0: self = .unknownDoNotUse + case 1: self = .alert + case 2: self = .clientInit + case 3: self = .serverInit + case 4: self = .clientFinish + default: return nil + } + } + + var rawValue: Int { + switch self { + case .unknownDoNotUse: return 0 + case .alert: return 1 + case .clientInit: return 2 + case .serverInit: return 3 + case .clientFinish: return 4 + } + } + + } + + init() {} + + fileprivate var _messageType: Securegcm_Ukey2Message.TypeEnum? = nil + fileprivate var _messageData: Data? = nil +} + +#if swift(>=4.2) + +extension Securegcm_Ukey2Message.TypeEnum: CaseIterable { + // Support synthesized by the compiler. +} + +#endif // swift(>=4.2) + +struct Securegcm_Ukey2Alert { + // SwiftProtobuf.Message conformance is added in an extension below. See the + // `Message` and `Message+*Additions` files in the SwiftProtobuf library for + // methods supported on all messages. + + var type: Securegcm_Ukey2Alert.AlertType { + get {return _type ?? .badMessage} + set {_type = newValue} + } + /// Returns true if `type` has been explicitly set. + var hasType: Bool {return self._type != nil} + /// Clears the value of `type`. Subsequent reads from it will return its default value. + mutating func clearType() {self._type = nil} + + var errorMessage: String { + get {return _errorMessage ?? String()} + set {_errorMessage = newValue} + } + /// Returns true if `errorMessage` has been explicitly set. + var hasErrorMessage: Bool {return self._errorMessage != nil} + /// Clears the value of `errorMessage`. Subsequent reads from it will return its default value. + mutating func clearErrorMessage() {self._errorMessage = nil} + + var unknownFields = SwiftProtobuf.UnknownStorage() + + enum AlertType: SwiftProtobuf.Enum { + typealias RawValue = Int + + /// Framing errors + case badMessage // = 1 + + /// message_type has an undefined value + case badMessageType // = 2 + + /// message_type received does not correspond to + case incorrectMessage // = 3 + + /// expected type at this stage of the protocol + case badMessageData // = 4 + + /// ClientInit and ServerInit errors + case badVersion // = 100 + + /// suitable version to speak with client. + case badRandom // = 101 + + /// length + case badHandshakeCipher // = 102 + + /// The next protocol is missing, unknown, or + case badNextProtocol // = 103 + + /// unsupported + case badPublicKey // = 104 + + /// Other errors + case internalError // = 200 + + init() { + self = .badMessage + } + + init?(rawValue: Int) { + switch rawValue { + case 1: self = .badMessage + case 2: self = .badMessageType + case 3: self = .incorrectMessage + case 4: self = .badMessageData + case 100: self = .badVersion + case 101: self = .badRandom + case 102: self = .badHandshakeCipher + case 103: self = .badNextProtocol + case 104: self = .badPublicKey + case 200: self = .internalError + default: return nil + } + } + + var rawValue: Int { + switch self { + case .badMessage: return 1 + case .badMessageType: return 2 + case .incorrectMessage: return 3 + case .badMessageData: return 4 + case .badVersion: return 100 + case .badRandom: return 101 + case .badHandshakeCipher: return 102 + case .badNextProtocol: return 103 + case .badPublicKey: return 104 + case .internalError: return 200 + } + } + + } + + init() {} + + fileprivate var _type: Securegcm_Ukey2Alert.AlertType? = nil + fileprivate var _errorMessage: String? = nil +} + +#if swift(>=4.2) + +extension Securegcm_Ukey2Alert.AlertType: CaseIterable { + // Support synthesized by the compiler. +} + +#endif // swift(>=4.2) + +struct Securegcm_Ukey2ClientInit { + // SwiftProtobuf.Message conformance is added in an extension below. See the + // `Message` and `Message+*Additions` files in the SwiftProtobuf library for + // methods supported on all messages. + + /// highest supported version for rollback + var version: Int32 { + get {return _version ?? 0} + set {_version = newValue} + } + /// Returns true if `version` has been explicitly set. + var hasVersion: Bool {return self._version != nil} + /// Clears the value of `version`. Subsequent reads from it will return its default value. + mutating func clearVersion() {self._version = nil} + + /// protection + var random: Data { + get {return _random ?? Data()} + set {_random = newValue} + } + /// Returns true if `random` has been explicitly set. + var hasRandom: Bool {return self._random != nil} + /// Clears the value of `random`. Subsequent reads from it will return its default value. + mutating func clearRandom() {self._random = nil} + + var cipherCommitments: [Securegcm_Ukey2ClientInit.CipherCommitment] = [] + + /// Next protocol that the client wants to speak. + var nextProtocol: String { + get {return _nextProtocol ?? String()} + set {_nextProtocol = newValue} + } + /// Returns true if `nextProtocol` has been explicitly set. + var hasNextProtocol: Bool {return self._nextProtocol != nil} + /// Clears the value of `nextProtocol`. Subsequent reads from it will return its default value. + mutating func clearNextProtocol() {self._nextProtocol = nil} + + var unknownFields = SwiftProtobuf.UnknownStorage() + + /// One commitment (hash of ClientFinished containing public key) per supported + /// cipher + struct CipherCommitment { + // SwiftProtobuf.Message conformance is added in an extension below. See the + // `Message` and `Message+*Additions` files in the SwiftProtobuf library for + // methods supported on all messages. + + var handshakeCipher: Securegcm_Ukey2HandshakeCipher { + get {return _handshakeCipher ?? .reserved} + set {_handshakeCipher = newValue} + } + /// Returns true if `handshakeCipher` has been explicitly set. + var hasHandshakeCipher: Bool {return self._handshakeCipher != nil} + /// Clears the value of `handshakeCipher`. Subsequent reads from it will return its default value. + mutating func clearHandshakeCipher() {self._handshakeCipher = nil} + + var commitment: Data { + get {return _commitment ?? Data()} + set {_commitment = newValue} + } + /// Returns true if `commitment` has been explicitly set. + var hasCommitment: Bool {return self._commitment != nil} + /// Clears the value of `commitment`. Subsequent reads from it will return its default value. + mutating func clearCommitment() {self._commitment = nil} + + var unknownFields = SwiftProtobuf.UnknownStorage() + + init() {} + + fileprivate var _handshakeCipher: Securegcm_Ukey2HandshakeCipher? = nil + fileprivate var _commitment: Data? = nil + } + + init() {} + + fileprivate var _version: Int32? = nil + fileprivate var _random: Data? = nil + fileprivate var _nextProtocol: String? = nil +} + +struct Securegcm_Ukey2ServerInit { + // SwiftProtobuf.Message conformance is added in an extension below. See the + // `Message` and `Message+*Additions` files in the SwiftProtobuf library for + // methods supported on all messages. + + /// highest supported version for rollback + var version: Int32 { + get {return _version ?? 0} + set {_version = newValue} + } + /// Returns true if `version` has been explicitly set. + var hasVersion: Bool {return self._version != nil} + /// Clears the value of `version`. Subsequent reads from it will return its default value. + mutating func clearVersion() {self._version = nil} + + /// protection + var random: Data { + get {return _random ?? Data()} + set {_random = newValue} + } + /// Returns true if `random` has been explicitly set. + var hasRandom: Bool {return self._random != nil} + /// Clears the value of `random`. Subsequent reads from it will return its default value. + mutating func clearRandom() {self._random = nil} + + /// Selected Cipher and corresponding public key + var handshakeCipher: Securegcm_Ukey2HandshakeCipher { + get {return _handshakeCipher ?? .reserved} + set {_handshakeCipher = newValue} + } + /// Returns true if `handshakeCipher` has been explicitly set. + var hasHandshakeCipher: Bool {return self._handshakeCipher != nil} + /// Clears the value of `handshakeCipher`. Subsequent reads from it will return its default value. + mutating func clearHandshakeCipher() {self._handshakeCipher = nil} + + var publicKey: Data { + get {return _publicKey ?? Data()} + set {_publicKey = newValue} + } + /// Returns true if `publicKey` has been explicitly set. + var hasPublicKey: Bool {return self._publicKey != nil} + /// Clears the value of `publicKey`. Subsequent reads from it will return its default value. + mutating func clearPublicKey() {self._publicKey = nil} + + var unknownFields = SwiftProtobuf.UnknownStorage() + + init() {} + + fileprivate var _version: Int32? = nil + fileprivate var _random: Data? = nil + fileprivate var _handshakeCipher: Securegcm_Ukey2HandshakeCipher? = nil + fileprivate var _publicKey: Data? = nil +} + +struct Securegcm_Ukey2ClientFinished { + // SwiftProtobuf.Message conformance is added in an extension below. See the + // `Message` and `Message+*Additions` files in the SwiftProtobuf library for + // methods supported on all messages. + + /// public key matching selected handshake + var publicKey: Data { + get {return _publicKey ?? Data()} + set {_publicKey = newValue} + } + /// Returns true if `publicKey` has been explicitly set. + var hasPublicKey: Bool {return self._publicKey != nil} + /// Clears the value of `publicKey`. Subsequent reads from it will return its default value. + mutating func clearPublicKey() {self._publicKey = nil} + + var unknownFields = SwiftProtobuf.UnknownStorage() + + init() {} + + fileprivate var _publicKey: Data? = nil +} + +#if swift(>=5.5) && canImport(_Concurrency) +extension Securegcm_Ukey2HandshakeCipher: @unchecked Sendable {} +extension Securegcm_Ukey2Message: @unchecked Sendable {} +extension Securegcm_Ukey2Message.TypeEnum: @unchecked Sendable {} +extension Securegcm_Ukey2Alert: @unchecked Sendable {} +extension Securegcm_Ukey2Alert.AlertType: @unchecked Sendable {} +extension Securegcm_Ukey2ClientInit: @unchecked Sendable {} +extension Securegcm_Ukey2ClientInit.CipherCommitment: @unchecked Sendable {} +extension Securegcm_Ukey2ServerInit: @unchecked Sendable {} +extension Securegcm_Ukey2ClientFinished: @unchecked Sendable {} +#endif // swift(>=5.5) && canImport(_Concurrency) + +// MARK: - Code below here is support for the SwiftProtobuf runtime. + +fileprivate let _protobuf_package = "securegcm" + +extension Securegcm_Ukey2HandshakeCipher: SwiftProtobuf._ProtoNameProviding { + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 0: .same(proto: "RESERVED"), + 100: .same(proto: "P256_SHA512"), + 200: .same(proto: "CURVE25519_SHA512"), + ] +} + +extension Securegcm_Ukey2Message: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let protoMessageName: String = _protobuf_package + ".Ukey2Message" + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 1: .standard(proto: "message_type"), + 2: .standard(proto: "message_data"), + ] + + mutating func decodeMessage(decoder: inout D) throws { + while let fieldNumber = try decoder.nextFieldNumber() { + // The use of inline closures is to circumvent an issue where the compiler + // allocates stack space for every case branch when no optimizations are + // enabled. https://github.com/apple/swift-protobuf/issues/1034 + switch fieldNumber { + case 1: try { try decoder.decodeSingularEnumField(value: &self._messageType) }() + case 2: try { try decoder.decodeSingularBytesField(value: &self._messageData) }() + default: break + } + } + } + + func traverse(visitor: inout V) throws { + // The use of inline closures is to circumvent an issue where the compiler + // allocates stack space for every if/case branch local when no optimizations + // are enabled. https://github.com/apple/swift-protobuf/issues/1034 and + // https://github.com/apple/swift-protobuf/issues/1182 + try { if let v = self._messageType { + try visitor.visitSingularEnumField(value: v, fieldNumber: 1) + } }() + try { if let v = self._messageData { + try visitor.visitSingularBytesField(value: v, fieldNumber: 2) + } }() + try unknownFields.traverse(visitor: &visitor) + } + + static func ==(lhs: Securegcm_Ukey2Message, rhs: Securegcm_Ukey2Message) -> Bool { + if lhs._messageType != rhs._messageType {return false} + if lhs._messageData != rhs._messageData {return false} + if lhs.unknownFields != rhs.unknownFields {return false} + return true + } +} + +extension Securegcm_Ukey2Message.TypeEnum: SwiftProtobuf._ProtoNameProviding { + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 0: .same(proto: "UNKNOWN_DO_NOT_USE"), + 1: .same(proto: "ALERT"), + 2: .same(proto: "CLIENT_INIT"), + 3: .same(proto: "SERVER_INIT"), + 4: .same(proto: "CLIENT_FINISH"), + ] +} + +extension Securegcm_Ukey2Alert: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let protoMessageName: String = _protobuf_package + ".Ukey2Alert" + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 1: .same(proto: "type"), + 2: .standard(proto: "error_message"), + ] + + mutating func decodeMessage(decoder: inout D) throws { + while let fieldNumber = try decoder.nextFieldNumber() { + // The use of inline closures is to circumvent an issue where the compiler + // allocates stack space for every case branch when no optimizations are + // enabled. https://github.com/apple/swift-protobuf/issues/1034 + switch fieldNumber { + case 1: try { try decoder.decodeSingularEnumField(value: &self._type) }() + case 2: try { try decoder.decodeSingularStringField(value: &self._errorMessage) }() + default: break + } + } + } + + func traverse(visitor: inout V) throws { + // The use of inline closures is to circumvent an issue where the compiler + // allocates stack space for every if/case branch local when no optimizations + // are enabled. https://github.com/apple/swift-protobuf/issues/1034 and + // https://github.com/apple/swift-protobuf/issues/1182 + try { if let v = self._type { + try visitor.visitSingularEnumField(value: v, fieldNumber: 1) + } }() + try { if let v = self._errorMessage { + try visitor.visitSingularStringField(value: v, fieldNumber: 2) + } }() + try unknownFields.traverse(visitor: &visitor) + } + + static func ==(lhs: Securegcm_Ukey2Alert, rhs: Securegcm_Ukey2Alert) -> Bool { + if lhs._type != rhs._type {return false} + if lhs._errorMessage != rhs._errorMessage {return false} + if lhs.unknownFields != rhs.unknownFields {return false} + return true + } +} + +extension Securegcm_Ukey2Alert.AlertType: SwiftProtobuf._ProtoNameProviding { + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 1: .same(proto: "BAD_MESSAGE"), + 2: .same(proto: "BAD_MESSAGE_TYPE"), + 3: .same(proto: "INCORRECT_MESSAGE"), + 4: .same(proto: "BAD_MESSAGE_DATA"), + 100: .same(proto: "BAD_VERSION"), + 101: .same(proto: "BAD_RANDOM"), + 102: .same(proto: "BAD_HANDSHAKE_CIPHER"), + 103: .same(proto: "BAD_NEXT_PROTOCOL"), + 104: .same(proto: "BAD_PUBLIC_KEY"), + 200: .same(proto: "INTERNAL_ERROR"), + ] +} + +extension Securegcm_Ukey2ClientInit: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let protoMessageName: String = _protobuf_package + ".Ukey2ClientInit" + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 1: .same(proto: "version"), + 2: .same(proto: "random"), + 3: .standard(proto: "cipher_commitments"), + 4: .standard(proto: "next_protocol"), + ] + + mutating func decodeMessage(decoder: inout D) throws { + while let fieldNumber = try decoder.nextFieldNumber() { + // The use of inline closures is to circumvent an issue where the compiler + // allocates stack space for every case branch when no optimizations are + // enabled. https://github.com/apple/swift-protobuf/issues/1034 + switch fieldNumber { + case 1: try { try decoder.decodeSingularInt32Field(value: &self._version) }() + case 2: try { try decoder.decodeSingularBytesField(value: &self._random) }() + case 3: try { try decoder.decodeRepeatedMessageField(value: &self.cipherCommitments) }() + case 4: try { try decoder.decodeSingularStringField(value: &self._nextProtocol) }() + default: break + } + } + } + + func traverse(visitor: inout V) throws { + // The use of inline closures is to circumvent an issue where the compiler + // allocates stack space for every if/case branch local when no optimizations + // are enabled. https://github.com/apple/swift-protobuf/issues/1034 and + // https://github.com/apple/swift-protobuf/issues/1182 + try { if let v = self._version { + try visitor.visitSingularInt32Field(value: v, fieldNumber: 1) + } }() + try { if let v = self._random { + try visitor.visitSingularBytesField(value: v, fieldNumber: 2) + } }() + if !self.cipherCommitments.isEmpty { + try visitor.visitRepeatedMessageField(value: self.cipherCommitments, fieldNumber: 3) + } + try { if let v = self._nextProtocol { + try visitor.visitSingularStringField(value: v, fieldNumber: 4) + } }() + try unknownFields.traverse(visitor: &visitor) + } + + static func ==(lhs: Securegcm_Ukey2ClientInit, rhs: Securegcm_Ukey2ClientInit) -> Bool { + if lhs._version != rhs._version {return false} + if lhs._random != rhs._random {return false} + if lhs.cipherCommitments != rhs.cipherCommitments {return false} + if lhs._nextProtocol != rhs._nextProtocol {return false} + if lhs.unknownFields != rhs.unknownFields {return false} + return true + } +} + +extension Securegcm_Ukey2ClientInit.CipherCommitment: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let protoMessageName: String = Securegcm_Ukey2ClientInit.protoMessageName + ".CipherCommitment" + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 1: .standard(proto: "handshake_cipher"), + 2: .same(proto: "commitment"), + ] + + mutating func decodeMessage(decoder: inout D) throws { + while let fieldNumber = try decoder.nextFieldNumber() { + // The use of inline closures is to circumvent an issue where the compiler + // allocates stack space for every case branch when no optimizations are + // enabled. https://github.com/apple/swift-protobuf/issues/1034 + switch fieldNumber { + case 1: try { try decoder.decodeSingularEnumField(value: &self._handshakeCipher) }() + case 2: try { try decoder.decodeSingularBytesField(value: &self._commitment) }() + default: break + } + } + } + + func traverse(visitor: inout V) throws { + // The use of inline closures is to circumvent an issue where the compiler + // allocates stack space for every if/case branch local when no optimizations + // are enabled. https://github.com/apple/swift-protobuf/issues/1034 and + // https://github.com/apple/swift-protobuf/issues/1182 + try { if let v = self._handshakeCipher { + try visitor.visitSingularEnumField(value: v, fieldNumber: 1) + } }() + try { if let v = self._commitment { + try visitor.visitSingularBytesField(value: v, fieldNumber: 2) + } }() + try unknownFields.traverse(visitor: &visitor) + } + + static func ==(lhs: Securegcm_Ukey2ClientInit.CipherCommitment, rhs: Securegcm_Ukey2ClientInit.CipherCommitment) -> Bool { + if lhs._handshakeCipher != rhs._handshakeCipher {return false} + if lhs._commitment != rhs._commitment {return false} + if lhs.unknownFields != rhs.unknownFields {return false} + return true + } +} + +extension Securegcm_Ukey2ServerInit: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let protoMessageName: String = _protobuf_package + ".Ukey2ServerInit" + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 1: .same(proto: "version"), + 2: .same(proto: "random"), + 3: .standard(proto: "handshake_cipher"), + 4: .standard(proto: "public_key"), + ] + + mutating func decodeMessage(decoder: inout D) throws { + while let fieldNumber = try decoder.nextFieldNumber() { + // The use of inline closures is to circumvent an issue where the compiler + // allocates stack space for every case branch when no optimizations are + // enabled. https://github.com/apple/swift-protobuf/issues/1034 + switch fieldNumber { + case 1: try { try decoder.decodeSingularInt32Field(value: &self._version) }() + case 2: try { try decoder.decodeSingularBytesField(value: &self._random) }() + case 3: try { try decoder.decodeSingularEnumField(value: &self._handshakeCipher) }() + case 4: try { try decoder.decodeSingularBytesField(value: &self._publicKey) }() + default: break + } + } + } + + func traverse(visitor: inout V) throws { + // The use of inline closures is to circumvent an issue where the compiler + // allocates stack space for every if/case branch local when no optimizations + // are enabled. https://github.com/apple/swift-protobuf/issues/1034 and + // https://github.com/apple/swift-protobuf/issues/1182 + try { if let v = self._version { + try visitor.visitSingularInt32Field(value: v, fieldNumber: 1) + } }() + try { if let v = self._random { + try visitor.visitSingularBytesField(value: v, fieldNumber: 2) + } }() + try { if let v = self._handshakeCipher { + try visitor.visitSingularEnumField(value: v, fieldNumber: 3) + } }() + try { if let v = self._publicKey { + try visitor.visitSingularBytesField(value: v, fieldNumber: 4) + } }() + try unknownFields.traverse(visitor: &visitor) + } + + static func ==(lhs: Securegcm_Ukey2ServerInit, rhs: Securegcm_Ukey2ServerInit) -> Bool { + if lhs._version != rhs._version {return false} + if lhs._random != rhs._random {return false} + if lhs._handshakeCipher != rhs._handshakeCipher {return false} + if lhs._publicKey != rhs._publicKey {return false} + if lhs.unknownFields != rhs.unknownFields {return false} + return true + } +} + +extension Securegcm_Ukey2ClientFinished: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let protoMessageName: String = _protobuf_package + ".Ukey2ClientFinished" + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 1: .standard(proto: "public_key"), + ] + + mutating func decodeMessage(decoder: inout D) throws { + while let fieldNumber = try decoder.nextFieldNumber() { + // The use of inline closures is to circumvent an issue where the compiler + // allocates stack space for every case branch when no optimizations are + // enabled. https://github.com/apple/swift-protobuf/issues/1034 + switch fieldNumber { + case 1: try { try decoder.decodeSingularBytesField(value: &self._publicKey) }() + default: break + } + } + } + + func traverse(visitor: inout V) throws { + // The use of inline closures is to circumvent an issue where the compiler + // allocates stack space for every if/case branch local when no optimizations + // are enabled. https://github.com/apple/swift-protobuf/issues/1034 and + // https://github.com/apple/swift-protobuf/issues/1182 + try { if let v = self._publicKey { + try visitor.visitSingularBytesField(value: v, fieldNumber: 1) + } }() + try unknownFields.traverse(visitor: &visitor) + } + + static func ==(lhs: Securegcm_Ukey2ClientFinished, rhs: Securegcm_Ukey2ClientFinished) -> Bool { + if lhs._publicKey != rhs._publicKey {return false} + if lhs.unknownFields != rhs.unknownFields {return false} + return true + } +} diff --git a/NearDrop/Protobuf/wire_format.pb.swift b/NearDrop/Protobuf/wire_format.pb.swift new file mode 100644 index 0000000..d8c5bd0 --- /dev/null +++ b/NearDrop/Protobuf/wire_format.pb.swift @@ -0,0 +1,1617 @@ +// DO NOT EDIT. +// swift-format-ignore-file +// +// Generated by the Swift generator plugin for the protocol buffer compiler. +// Source: wire_format.proto +// +// For information on using the generated types, please see the documentation: +// https://github.com/apple/swift-protobuf/ + +// Copyright 2020 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Brought from: //depot/google3/location/nearby/sharing/proto/wire_format.proto +// At CL 317565061 + +import Foundation +import SwiftProtobuf + +// If the compiler emits an error on this type, it is because this file +// was generated by a version of the `protoc` Swift plug-in that is +// incompatible with the version of SwiftProtobuf to which you are linking. +// Please ensure that you are building against the same version of the API +// that was used to generate this file. +fileprivate struct _GeneratedWithProtocGenSwiftVersion: SwiftProtobuf.ProtobufAPIVersionCheck { + struct _2: SwiftProtobuf.ProtobufAPIVersion_2 {} + typealias Version = _2 +} + +/// File metadata. Does not include the actual bytes of the file. +/// NEXT_ID=6 +struct Sharing_Nearby_FileMetadata { + // SwiftProtobuf.Message conformance is added in an extension below. See the + // `Message` and `Message+*Additions` files in the SwiftProtobuf library for + // methods supported on all messages. + + /// The human readable name of this file (eg. 'Cookbook.pdf'). + var name: String { + get {return _name ?? String()} + set {_name = newValue} + } + /// Returns true if `name` has been explicitly set. + var hasName: Bool {return self._name != nil} + /// Clears the value of `name`. Subsequent reads from it will return its default value. + mutating func clearName() {self._name = nil} + + /// The type of file (eg. 'IMAGE' from 'dog.jpg'). Specifying a type helps + /// provide a richer experience on the receiving side. + var type: Sharing_Nearby_FileMetadata.TypeEnum { + get {return _type ?? .unknown} + set {_type = newValue} + } + /// Returns true if `type` has been explicitly set. + var hasType: Bool {return self._type != nil} + /// Clears the value of `type`. Subsequent reads from it will return its default value. + mutating func clearType() {self._type = nil} + + /// The FILE payload id that will be sent as a follow up containing the actual + /// bytes of the file. + var payloadID: Int64 { + get {return _payloadID ?? 0} + set {_payloadID = newValue} + } + /// Returns true if `payloadID` has been explicitly set. + var hasPayloadID: Bool {return self._payloadID != nil} + /// Clears the value of `payloadID`. Subsequent reads from it will return its default value. + mutating func clearPayloadID() {self._payloadID = nil} + + /// The total size of the file. + var size: Int64 { + get {return _size ?? 0} + set {_size = newValue} + } + /// Returns true if `size` has been explicitly set. + var hasSize: Bool {return self._size != nil} + /// Clears the value of `size`. Subsequent reads from it will return its default value. + mutating func clearSize() {self._size = nil} + + /// The mimeType of file (eg. 'image/jpeg' from 'dog.jpg'). Specifying a + /// mimeType helps provide a richer experience on receiving side. + var mimeType: String { + get {return _mimeType ?? "application/octet-stream"} + set {_mimeType = newValue} + } + /// Returns true if `mimeType` has been explicitly set. + var hasMimeType: Bool {return self._mimeType != nil} + /// Clears the value of `mimeType`. Subsequent reads from it will return its default value. + mutating func clearMimeType() {self._mimeType = nil} + + /// A uuid for the attachment. Should be unique across all attachments. + var id: Int64 { + get {return _id ?? 0} + set {_id = newValue} + } + /// Returns true if `id` has been explicitly set. + var hasID: Bool {return self._id != nil} + /// Clears the value of `id`. Subsequent reads from it will return its default value. + mutating func clearID() {self._id = nil} + + var unknownFields = SwiftProtobuf.UnknownStorage() + + enum TypeEnum: SwiftProtobuf.Enum { + typealias RawValue = Int + case unknown // = 0 + case image // = 1 + case video // = 2 + case app // = 3 + case audio // = 4 + + init() { + self = .unknown + } + + init?(rawValue: Int) { + switch rawValue { + case 0: self = .unknown + case 1: self = .image + case 2: self = .video + case 3: self = .app + case 4: self = .audio + default: return nil + } + } + + var rawValue: Int { + switch self { + case .unknown: return 0 + case .image: return 1 + case .video: return 2 + case .app: return 3 + case .audio: return 4 + } + } + + } + + init() {} + + fileprivate var _name: String? = nil + fileprivate var _type: Sharing_Nearby_FileMetadata.TypeEnum? = nil + fileprivate var _payloadID: Int64? = nil + fileprivate var _size: Int64? = nil + fileprivate var _mimeType: String? = nil + fileprivate var _id: Int64? = nil +} + +#if swift(>=4.2) + +extension Sharing_Nearby_FileMetadata.TypeEnum: CaseIterable { + // Support synthesized by the compiler. +} + +#endif // swift(>=4.2) + +/// NEXT_ID=5 +struct Sharing_Nearby_TextMetadata { + // SwiftProtobuf.Message conformance is added in an extension below. See the + // `Message` and `Message+*Additions` files in the SwiftProtobuf library for + // methods supported on all messages. + + /// The title of the text content. + var textTitle: String { + get {return _textTitle ?? String()} + set {_textTitle = newValue} + } + /// Returns true if `textTitle` has been explicitly set. + var hasTextTitle: Bool {return self._textTitle != nil} + /// Clears the value of `textTitle`. Subsequent reads from it will return its default value. + mutating func clearTextTitle() {self._textTitle = nil} + + /// The type of text (phone number, url, address, or plain text). + var type: Sharing_Nearby_TextMetadata.TypeEnum { + get {return _type ?? .unknown} + set {_type = newValue} + } + /// Returns true if `type` has been explicitly set. + var hasType: Bool {return self._type != nil} + /// Clears the value of `type`. Subsequent reads from it will return its default value. + mutating func clearType() {self._type = nil} + + /// The BYTE payload id that will be sent as a follow up containing the actual + /// bytes of the text. + var payloadID: Int64 { + get {return _payloadID ?? 0} + set {_payloadID = newValue} + } + /// Returns true if `payloadID` has been explicitly set. + var hasPayloadID: Bool {return self._payloadID != nil} + /// Clears the value of `payloadID`. Subsequent reads from it will return its default value. + mutating func clearPayloadID() {self._payloadID = nil} + + /// The size of the text content. + var size: Int64 { + get {return _size ?? 0} + set {_size = newValue} + } + /// Returns true if `size` has been explicitly set. + var hasSize: Bool {return self._size != nil} + /// Clears the value of `size`. Subsequent reads from it will return its default value. + mutating func clearSize() {self._size = nil} + + /// A uuid for the attachment. Should be unique across all attachments. + var id: Int64 { + get {return _id ?? 0} + set {_id = newValue} + } + /// Returns true if `id` has been explicitly set. + var hasID: Bool {return self._id != nil} + /// Clears the value of `id`. Subsequent reads from it will return its default value. + mutating func clearID() {self._id = nil} + + var unknownFields = SwiftProtobuf.UnknownStorage() + + enum TypeEnum: SwiftProtobuf.Enum { + typealias RawValue = Int + case unknown // = 0 + case text // = 1 + + /// Open with browsers. + case url // = 2 + + /// Open with map apps. + case address // = 3 + + /// Dial. + case phoneNumber // = 4 + + init() { + self = .unknown + } + + init?(rawValue: Int) { + switch rawValue { + case 0: self = .unknown + case 1: self = .text + case 2: self = .url + case 3: self = .address + case 4: self = .phoneNumber + default: return nil + } + } + + var rawValue: Int { + switch self { + case .unknown: return 0 + case .text: return 1 + case .url: return 2 + case .address: return 3 + case .phoneNumber: return 4 + } + } + + } + + init() {} + + fileprivate var _textTitle: String? = nil + fileprivate var _type: Sharing_Nearby_TextMetadata.TypeEnum? = nil + fileprivate var _payloadID: Int64? = nil + fileprivate var _size: Int64? = nil + fileprivate var _id: Int64? = nil +} + +#if swift(>=4.2) + +extension Sharing_Nearby_TextMetadata.TypeEnum: CaseIterable { + // Support synthesized by the compiler. +} + +#endif // swift(>=4.2) + +/// NEXT_ID=5 +struct Sharing_Nearby_WifiCredentialsMetadata { + // SwiftProtobuf.Message conformance is added in an extension below. See the + // `Message` and `Message+*Additions` files in the SwiftProtobuf library for + // methods supported on all messages. + + /// The Wifi network name. This will be sent in introduction. + var ssid: String { + get {return _ssid ?? String()} + set {_ssid = newValue} + } + /// Returns true if `ssid` has been explicitly set. + var hasSsid: Bool {return self._ssid != nil} + /// Clears the value of `ssid`. Subsequent reads from it will return its default value. + mutating func clearSsid() {self._ssid = nil} + + /// The security type of network (OPEN, WPA_PSK, WEP). + var securityType: Sharing_Nearby_WifiCredentialsMetadata.SecurityType { + get {return _securityType ?? .unknownSecurityType} + set {_securityType = newValue} + } + /// Returns true if `securityType` has been explicitly set. + var hasSecurityType: Bool {return self._securityType != nil} + /// Clears the value of `securityType`. Subsequent reads from it will return its default value. + mutating func clearSecurityType() {self._securityType = nil} + + /// The BYTE payload id that will be sent as a follow up containing the + /// password. + var payloadID: Int64 { + get {return _payloadID ?? 0} + set {_payloadID = newValue} + } + /// Returns true if `payloadID` has been explicitly set. + var hasPayloadID: Bool {return self._payloadID != nil} + /// Clears the value of `payloadID`. Subsequent reads from it will return its default value. + mutating func clearPayloadID() {self._payloadID = nil} + + /// A uuid for the attachment. Should be unique across all attachments. + var id: Int64 { + get {return _id ?? 0} + set {_id = newValue} + } + /// Returns true if `id` has been explicitly set. + var hasID: Bool {return self._id != nil} + /// Clears the value of `id`. Subsequent reads from it will return its default value. + mutating func clearID() {self._id = nil} + + var unknownFields = SwiftProtobuf.UnknownStorage() + + enum SecurityType: SwiftProtobuf.Enum { + typealias RawValue = Int + case unknownSecurityType // = 0 + case `open` // = 1 + case wpaPsk // = 2 + case wep // = 3 + + init() { + self = .unknownSecurityType + } + + init?(rawValue: Int) { + switch rawValue { + case 0: self = .unknownSecurityType + case 1: self = .open + case 2: self = .wpaPsk + case 3: self = .wep + default: return nil + } + } + + var rawValue: Int { + switch self { + case .unknownSecurityType: return 0 + case .open: return 1 + case .wpaPsk: return 2 + case .wep: return 3 + } + } + + } + + init() {} + + fileprivate var _ssid: String? = nil + fileprivate var _securityType: Sharing_Nearby_WifiCredentialsMetadata.SecurityType? = nil + fileprivate var _payloadID: Int64? = nil + fileprivate var _id: Int64? = nil +} + +#if swift(>=4.2) + +extension Sharing_Nearby_WifiCredentialsMetadata.SecurityType: CaseIterable { + // Support synthesized by the compiler. +} + +#endif // swift(>=4.2) + +/// A frame used when sending messages over the wire. +/// NEXT_ID=3 +struct Sharing_Nearby_Frame { + // SwiftProtobuf.Message conformance is added in an extension below. See the + // `Message` and `Message+*Additions` files in the SwiftProtobuf library for + // methods supported on all messages. + + var version: Sharing_Nearby_Frame.Version { + get {return _version ?? .unknownVersion} + set {_version = newValue} + } + /// Returns true if `version` has been explicitly set. + var hasVersion: Bool {return self._version != nil} + /// Clears the value of `version`. Subsequent reads from it will return its default value. + mutating func clearVersion() {self._version = nil} + + /// Right now there's only 1 version, but if there are more, exactly one of + /// the following fields will be set. + var v1: Sharing_Nearby_V1Frame { + get {return _v1 ?? Sharing_Nearby_V1Frame()} + set {_v1 = newValue} + } + /// Returns true if `v1` has been explicitly set. + var hasV1: Bool {return self._v1 != nil} + /// Clears the value of `v1`. Subsequent reads from it will return its default value. + mutating func clearV1() {self._v1 = nil} + + var unknownFields = SwiftProtobuf.UnknownStorage() + + enum Version: SwiftProtobuf.Enum { + typealias RawValue = Int + case unknownVersion // = 0 + case v1 // = 1 + + init() { + self = .unknownVersion + } + + init?(rawValue: Int) { + switch rawValue { + case 0: self = .unknownVersion + case 1: self = .v1 + default: return nil + } + } + + var rawValue: Int { + switch self { + case .unknownVersion: return 0 + case .v1: return 1 + } + } + + } + + init() {} + + fileprivate var _version: Sharing_Nearby_Frame.Version? = nil + fileprivate var _v1: Sharing_Nearby_V1Frame? = nil +} + +#if swift(>=4.2) + +extension Sharing_Nearby_Frame.Version: CaseIterable { + // Support synthesized by the compiler. +} + +#endif // swift(>=4.2) + +/// NEXT_ID=7 +struct Sharing_Nearby_V1Frame { + // SwiftProtobuf.Message conformance is added in an extension below. See the + // `Message` and `Message+*Additions` files in the SwiftProtobuf library for + // methods supported on all messages. + + var type: Sharing_Nearby_V1Frame.FrameType { + get {return _type ?? .unknownFrameType} + set {_type = newValue} + } + /// Returns true if `type` has been explicitly set. + var hasType: Bool {return self._type != nil} + /// Clears the value of `type`. Subsequent reads from it will return its default value. + mutating func clearType() {self._type = nil} + + /// Exactly one of the following fields will be set. + var introduction: Sharing_Nearby_IntroductionFrame { + get {return _introduction ?? Sharing_Nearby_IntroductionFrame()} + set {_introduction = newValue} + } + /// Returns true if `introduction` has been explicitly set. + var hasIntroduction: Bool {return self._introduction != nil} + /// Clears the value of `introduction`. Subsequent reads from it will return its default value. + mutating func clearIntroduction() {self._introduction = nil} + + var connectionResponse: Sharing_Nearby_ConnectionResponseFrame { + get {return _connectionResponse ?? Sharing_Nearby_ConnectionResponseFrame()} + set {_connectionResponse = newValue} + } + /// Returns true if `connectionResponse` has been explicitly set. + var hasConnectionResponse: Bool {return self._connectionResponse != nil} + /// Clears the value of `connectionResponse`. Subsequent reads from it will return its default value. + mutating func clearConnectionResponse() {self._connectionResponse = nil} + + var pairedKeyEncryption: Sharing_Nearby_PairedKeyEncryptionFrame { + get {return _pairedKeyEncryption ?? Sharing_Nearby_PairedKeyEncryptionFrame()} + set {_pairedKeyEncryption = newValue} + } + /// Returns true if `pairedKeyEncryption` has been explicitly set. + var hasPairedKeyEncryption: Bool {return self._pairedKeyEncryption != nil} + /// Clears the value of `pairedKeyEncryption`. Subsequent reads from it will return its default value. + mutating func clearPairedKeyEncryption() {self._pairedKeyEncryption = nil} + + var pairedKeyResult: Sharing_Nearby_PairedKeyResultFrame { + get {return _pairedKeyResult ?? Sharing_Nearby_PairedKeyResultFrame()} + set {_pairedKeyResult = newValue} + } + /// Returns true if `pairedKeyResult` has been explicitly set. + var hasPairedKeyResult: Bool {return self._pairedKeyResult != nil} + /// Clears the value of `pairedKeyResult`. Subsequent reads from it will return its default value. + mutating func clearPairedKeyResult() {self._pairedKeyResult = nil} + + var certificateInfo: Sharing_Nearby_CertificateInfoFrame { + get {return _certificateInfo ?? Sharing_Nearby_CertificateInfoFrame()} + set {_certificateInfo = newValue} + } + /// Returns true if `certificateInfo` has been explicitly set. + var hasCertificateInfo: Bool {return self._certificateInfo != nil} + /// Clears the value of `certificateInfo`. Subsequent reads from it will return its default value. + mutating func clearCertificateInfo() {self._certificateInfo = nil} + + var unknownFields = SwiftProtobuf.UnknownStorage() + + enum FrameType: SwiftProtobuf.Enum { + typealias RawValue = Int + case unknownFrameType // = 0 + case introduction // = 1 + case response // = 2 + case pairedKeyEncryption // = 3 + case pairedKeyResult // = 4 + case certificateInfo // = 5 + case cancel // = 6 + + init() { + self = .unknownFrameType + } + + init?(rawValue: Int) { + switch rawValue { + case 0: self = .unknownFrameType + case 1: self = .introduction + case 2: self = .response + case 3: self = .pairedKeyEncryption + case 4: self = .pairedKeyResult + case 5: self = .certificateInfo + case 6: self = .cancel + default: return nil + } + } + + var rawValue: Int { + switch self { + case .unknownFrameType: return 0 + case .introduction: return 1 + case .response: return 2 + case .pairedKeyEncryption: return 3 + case .pairedKeyResult: return 4 + case .certificateInfo: return 5 + case .cancel: return 6 + } + } + + } + + init() {} + + fileprivate var _type: Sharing_Nearby_V1Frame.FrameType? = nil + fileprivate var _introduction: Sharing_Nearby_IntroductionFrame? = nil + fileprivate var _connectionResponse: Sharing_Nearby_ConnectionResponseFrame? = nil + fileprivate var _pairedKeyEncryption: Sharing_Nearby_PairedKeyEncryptionFrame? = nil + fileprivate var _pairedKeyResult: Sharing_Nearby_PairedKeyResultFrame? = nil + fileprivate var _certificateInfo: Sharing_Nearby_CertificateInfoFrame? = nil +} + +#if swift(>=4.2) + +extension Sharing_Nearby_V1Frame.FrameType: CaseIterable { + // Support synthesized by the compiler. +} + +#endif // swift(>=4.2) + +/// An introduction packet sent by the sending side. Contains a list of files +/// they'd like to share. +/// NEXT_ID=4 +struct Sharing_Nearby_IntroductionFrame { + // SwiftProtobuf.Message conformance is added in an extension below. See the + // `Message` and `Message+*Additions` files in the SwiftProtobuf library for + // methods supported on all messages. + + var fileMetadata: [Sharing_Nearby_FileMetadata] = [] + + var textMetadata: [Sharing_Nearby_TextMetadata] = [] + + /// The required app package to open the content. May be null. + var requiredPackage: String { + get {return _requiredPackage ?? String()} + set {_requiredPackage = newValue} + } + /// Returns true if `requiredPackage` has been explicitly set. + var hasRequiredPackage: Bool {return self._requiredPackage != nil} + /// Clears the value of `requiredPackage`. Subsequent reads from it will return its default value. + mutating func clearRequiredPackage() {self._requiredPackage = nil} + + var wifiCredentialsMetadata: [Sharing_Nearby_WifiCredentialsMetadata] = [] + + var unknownFields = SwiftProtobuf.UnknownStorage() + + init() {} + + fileprivate var _requiredPackage: String? = nil +} + +/// A response packet sent by the receiving side. Accepts or rejects the list of +/// files. +/// NEXT_ID=2 +struct Sharing_Nearby_ConnectionResponseFrame { + // SwiftProtobuf.Message conformance is added in an extension below. See the + // `Message` and `Message+*Additions` files in the SwiftProtobuf library for + // methods supported on all messages. + + /// The receiving side's response. + var status: Sharing_Nearby_ConnectionResponseFrame.Status { + get {return _status ?? .unknown} + set {_status = newValue} + } + /// Returns true if `status` has been explicitly set. + var hasStatus: Bool {return self._status != nil} + /// Clears the value of `status`. Subsequent reads from it will return its default value. + mutating func clearStatus() {self._status = nil} + + var unknownFields = SwiftProtobuf.UnknownStorage() + + enum Status: SwiftProtobuf.Enum { + typealias RawValue = Int + case unknown // = 0 + case accept // = 1 + case reject // = 2 + case notEnoughSpace // = 3 + case unsupportedAttachmentType // = 4 + case timedOut // = 5 + + init() { + self = .unknown + } + + init?(rawValue: Int) { + switch rawValue { + case 0: self = .unknown + case 1: self = .accept + case 2: self = .reject + case 3: self = .notEnoughSpace + case 4: self = .unsupportedAttachmentType + case 5: self = .timedOut + default: return nil + } + } + + var rawValue: Int { + switch self { + case .unknown: return 0 + case .accept: return 1 + case .reject: return 2 + case .notEnoughSpace: return 3 + case .unsupportedAttachmentType: return 4 + case .timedOut: return 5 + } + } + + } + + init() {} + + fileprivate var _status: Sharing_Nearby_ConnectionResponseFrame.Status? = nil +} + +#if swift(>=4.2) + +extension Sharing_Nearby_ConnectionResponseFrame.Status: CaseIterable { + // Support synthesized by the compiler. +} + +#endif // swift(>=4.2) + +/// A paired key encryption packet sent between devices, contains signed data. +/// NEXT_ID=3 +struct Sharing_Nearby_PairedKeyEncryptionFrame { + // SwiftProtobuf.Message conformance is added in an extension below. See the + // `Message` and `Message+*Additions` files in the SwiftProtobuf library for + // methods supported on all messages. + + /// The encrypted data in byte array format. + var signedData: Data { + get {return _signedData ?? Data()} + set {_signedData = newValue} + } + /// Returns true if `signedData` has been explicitly set. + var hasSignedData: Bool {return self._signedData != nil} + /// Clears the value of `signedData`. Subsequent reads from it will return its default value. + mutating func clearSignedData() {self._signedData = nil} + + /// The hash of a certificate id. + var secretIDHash: Data { + get {return _secretIDHash ?? Data()} + set {_secretIDHash = newValue} + } + /// Returns true if `secretIDHash` has been explicitly set. + var hasSecretIDHash: Bool {return self._secretIDHash != nil} + /// Clears the value of `secretIDHash`. Subsequent reads from it will return its default value. + mutating func clearSecretIDHash() {self._secretIDHash = nil} + + /// An optional encrypted data in byte array format. + var optionalSignedData: Data { + get {return _optionalSignedData ?? Data()} + set {_optionalSignedData = newValue} + } + /// Returns true if `optionalSignedData` has been explicitly set. + var hasOptionalSignedData: Bool {return self._optionalSignedData != nil} + /// Clears the value of `optionalSignedData`. Subsequent reads from it will return its default value. + mutating func clearOptionalSignedData() {self._optionalSignedData = nil} + + var unknownFields = SwiftProtobuf.UnknownStorage() + + init() {} + + fileprivate var _signedData: Data? = nil + fileprivate var _secretIDHash: Data? = nil + fileprivate var _optionalSignedData: Data? = nil +} + +/// A paired key verification result packet sent between devices. +/// NEXT_ID=2 +struct Sharing_Nearby_PairedKeyResultFrame { + // SwiftProtobuf.Message conformance is added in an extension below. See the + // `Message` and `Message+*Additions` files in the SwiftProtobuf library for + // methods supported on all messages. + + /// The verification result. + var status: Sharing_Nearby_PairedKeyResultFrame.Status { + get {return _status ?? .unknown} + set {_status = newValue} + } + /// Returns true if `status` has been explicitly set. + var hasStatus: Bool {return self._status != nil} + /// Clears the value of `status`. Subsequent reads from it will return its default value. + mutating func clearStatus() {self._status = nil} + + var unknownFields = SwiftProtobuf.UnknownStorage() + + enum Status: SwiftProtobuf.Enum { + typealias RawValue = Int + case unknown // = 0 + case success // = 1 + case fail // = 2 + case unable // = 3 + + init() { + self = .unknown + } + + init?(rawValue: Int) { + switch rawValue { + case 0: self = .unknown + case 1: self = .success + case 2: self = .fail + case 3: self = .unable + default: return nil + } + } + + var rawValue: Int { + switch self { + case .unknown: return 0 + case .success: return 1 + case .fail: return 2 + case .unable: return 3 + } + } + + } + + init() {} + + fileprivate var _status: Sharing_Nearby_PairedKeyResultFrame.Status? = nil +} + +#if swift(>=4.2) + +extension Sharing_Nearby_PairedKeyResultFrame.Status: CaseIterable { + // Support synthesized by the compiler. +} + +#endif // swift(>=4.2) + +/// A package containing certificate info to be shared to remote device offline. +/// NEXT_ID=2 +struct Sharing_Nearby_CertificateInfoFrame { + // SwiftProtobuf.Message conformance is added in an extension below. See the + // `Message` and `Message+*Additions` files in the SwiftProtobuf library for + // methods supported on all messages. + + /// The public certificates to be shared with remote devices. + var publicCertificate: [Sharing_Nearby_PublicCertificate] = [] + + var unknownFields = SwiftProtobuf.UnknownStorage() + + init() {} +} + +/// A public certificate from the local device. +/// NEXT_ID=8 +struct Sharing_Nearby_PublicCertificate { + // SwiftProtobuf.Message conformance is added in an extension below. See the + // `Message` and `Message+*Additions` files in the SwiftProtobuf library for + // methods supported on all messages. + + /// The unique id of the public certificate. + var secretID: Data { + get {return _secretID ?? Data()} + set {_secretID = newValue} + } + /// Returns true if `secretID` has been explicitly set. + var hasSecretID: Bool {return self._secretID != nil} + /// Clears the value of `secretID`. Subsequent reads from it will return its default value. + mutating func clearSecretID() {self._secretID = nil} + + /// A bytes representation of a Secret Key owned by contact, to decrypt the + /// metadata_key stored within the advertisement. + var authenticityKey: Data { + get {return _authenticityKey ?? Data()} + set {_authenticityKey = newValue} + } + /// Returns true if `authenticityKey` has been explicitly set. + var hasAuthenticityKey: Bool {return self._authenticityKey != nil} + /// Clears the value of `authenticityKey`. Subsequent reads from it will return its default value. + mutating func clearAuthenticityKey() {self._authenticityKey = nil} + + /// A bytes representation a public key of X509Certificate, owned by contact, + /// to decrypt encrypted UKEY2 (from Nearby Connections API) as a hand shake in + /// contact verification phase. + var publicKey: Data { + get {return _publicKey ?? Data()} + set {_publicKey = newValue} + } + /// Returns true if `publicKey` has been explicitly set. + var hasPublicKey: Bool {return self._publicKey != nil} + /// Clears the value of `publicKey`. Subsequent reads from it will return its default value. + mutating func clearPublicKey() {self._publicKey = nil} + + /// The time in millis from epoch when this certificate becomes effective. + var startTime: Int64 { + get {return _startTime ?? 0} + set {_startTime = newValue} + } + /// Returns true if `startTime` has been explicitly set. + var hasStartTime: Bool {return self._startTime != nil} + /// Clears the value of `startTime`. Subsequent reads from it will return its default value. + mutating func clearStartTime() {self._startTime = nil} + + /// The time in millis from epoch when this certificate expires. + var endTime: Int64 { + get {return _endTime ?? 0} + set {_endTime = newValue} + } + /// Returns true if `endTime` has been explicitly set. + var hasEndTime: Bool {return self._endTime != nil} + /// Clears the value of `endTime`. Subsequent reads from it will return its default value. + mutating func clearEndTime() {self._endTime = nil} + + /// The encrypted metadata in bytes, contains personal information of the + /// device/user who created this certificate. Needs to be decrypted into bytes, + /// and converted back to EncryptedMetadata object to access fields. + var encryptedMetadataBytes: Data { + get {return _encryptedMetadataBytes ?? Data()} + set {_encryptedMetadataBytes = newValue} + } + /// Returns true if `encryptedMetadataBytes` has been explicitly set. + var hasEncryptedMetadataBytes: Bool {return self._encryptedMetadataBytes != nil} + /// Clears the value of `encryptedMetadataBytes`. Subsequent reads from it will return its default value. + mutating func clearEncryptedMetadataBytes() {self._encryptedMetadataBytes = nil} + + /// The tag for verifying metadata_encryption_key. + var metadataEncryptionKeyTag: Data { + get {return _metadataEncryptionKeyTag ?? Data()} + set {_metadataEncryptionKeyTag = newValue} + } + /// Returns true if `metadataEncryptionKeyTag` has been explicitly set. + var hasMetadataEncryptionKeyTag: Bool {return self._metadataEncryptionKeyTag != nil} + /// Clears the value of `metadataEncryptionKeyTag`. Subsequent reads from it will return its default value. + mutating func clearMetadataEncryptionKeyTag() {self._metadataEncryptionKeyTag = nil} + + var unknownFields = SwiftProtobuf.UnknownStorage() + + init() {} + + fileprivate var _secretID: Data? = nil + fileprivate var _authenticityKey: Data? = nil + fileprivate var _publicKey: Data? = nil + fileprivate var _startTime: Int64? = nil + fileprivate var _endTime: Int64? = nil + fileprivate var _encryptedMetadataBytes: Data? = nil + fileprivate var _metadataEncryptionKeyTag: Data? = nil +} + +/// NEXT_ID=3 +struct Sharing_Nearby_WifiCredentials { + // SwiftProtobuf.Message conformance is added in an extension below. See the + // `Message` and `Message+*Additions` files in the SwiftProtobuf library for + // methods supported on all messages. + + /// Wi-Fi password. + var password: String { + get {return _password ?? String()} + set {_password = newValue} + } + /// Returns true if `password` has been explicitly set. + var hasPassword: Bool {return self._password != nil} + /// Clears the value of `password`. Subsequent reads from it will return its default value. + mutating func clearPassword() {self._password = nil} + + /// True if the network is a hidden network that is not broadcasting its SSID. + /// Default is false. + var hiddenSsid: Bool { + get {return _hiddenSsid ?? false} + set {_hiddenSsid = newValue} + } + /// Returns true if `hiddenSsid` has been explicitly set. + var hasHiddenSsid: Bool {return self._hiddenSsid != nil} + /// Clears the value of `hiddenSsid`. Subsequent reads from it will return its default value. + mutating func clearHiddenSsid() {self._hiddenSsid = nil} + + var unknownFields = SwiftProtobuf.UnknownStorage() + + init() {} + + fileprivate var _password: String? = nil + fileprivate var _hiddenSsid: Bool? = nil +} + +#if swift(>=5.5) && canImport(_Concurrency) +extension Sharing_Nearby_FileMetadata: @unchecked Sendable {} +extension Sharing_Nearby_FileMetadata.TypeEnum: @unchecked Sendable {} +extension Sharing_Nearby_TextMetadata: @unchecked Sendable {} +extension Sharing_Nearby_TextMetadata.TypeEnum: @unchecked Sendable {} +extension Sharing_Nearby_WifiCredentialsMetadata: @unchecked Sendable {} +extension Sharing_Nearby_WifiCredentialsMetadata.SecurityType: @unchecked Sendable {} +extension Sharing_Nearby_Frame: @unchecked Sendable {} +extension Sharing_Nearby_Frame.Version: @unchecked Sendable {} +extension Sharing_Nearby_V1Frame: @unchecked Sendable {} +extension Sharing_Nearby_V1Frame.FrameType: @unchecked Sendable {} +extension Sharing_Nearby_IntroductionFrame: @unchecked Sendable {} +extension Sharing_Nearby_ConnectionResponseFrame: @unchecked Sendable {} +extension Sharing_Nearby_ConnectionResponseFrame.Status: @unchecked Sendable {} +extension Sharing_Nearby_PairedKeyEncryptionFrame: @unchecked Sendable {} +extension Sharing_Nearby_PairedKeyResultFrame: @unchecked Sendable {} +extension Sharing_Nearby_PairedKeyResultFrame.Status: @unchecked Sendable {} +extension Sharing_Nearby_CertificateInfoFrame: @unchecked Sendable {} +extension Sharing_Nearby_PublicCertificate: @unchecked Sendable {} +extension Sharing_Nearby_WifiCredentials: @unchecked Sendable {} +#endif // swift(>=5.5) && canImport(_Concurrency) + +// MARK: - Code below here is support for the SwiftProtobuf runtime. + +fileprivate let _protobuf_package = "sharing.nearby" + +extension Sharing_Nearby_FileMetadata: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let protoMessageName: String = _protobuf_package + ".FileMetadata" + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 1: .same(proto: "name"), + 2: .same(proto: "type"), + 3: .standard(proto: "payload_id"), + 4: .same(proto: "size"), + 5: .standard(proto: "mime_type"), + 6: .same(proto: "id"), + ] + + mutating func decodeMessage(decoder: inout D) throws { + while let fieldNumber = try decoder.nextFieldNumber() { + // The use of inline closures is to circumvent an issue where the compiler + // allocates stack space for every case branch when no optimizations are + // enabled. https://github.com/apple/swift-protobuf/issues/1034 + switch fieldNumber { + case 1: try { try decoder.decodeSingularStringField(value: &self._name) }() + case 2: try { try decoder.decodeSingularEnumField(value: &self._type) }() + case 3: try { try decoder.decodeSingularInt64Field(value: &self._payloadID) }() + case 4: try { try decoder.decodeSingularInt64Field(value: &self._size) }() + case 5: try { try decoder.decodeSingularStringField(value: &self._mimeType) }() + case 6: try { try decoder.decodeSingularInt64Field(value: &self._id) }() + default: break + } + } + } + + func traverse(visitor: inout V) throws { + // The use of inline closures is to circumvent an issue where the compiler + // allocates stack space for every if/case branch local when no optimizations + // are enabled. https://github.com/apple/swift-protobuf/issues/1034 and + // https://github.com/apple/swift-protobuf/issues/1182 + try { if let v = self._name { + try visitor.visitSingularStringField(value: v, fieldNumber: 1) + } }() + try { if let v = self._type { + try visitor.visitSingularEnumField(value: v, fieldNumber: 2) + } }() + try { if let v = self._payloadID { + try visitor.visitSingularInt64Field(value: v, fieldNumber: 3) + } }() + try { if let v = self._size { + try visitor.visitSingularInt64Field(value: v, fieldNumber: 4) + } }() + try { if let v = self._mimeType { + try visitor.visitSingularStringField(value: v, fieldNumber: 5) + } }() + try { if let v = self._id { + try visitor.visitSingularInt64Field(value: v, fieldNumber: 6) + } }() + try unknownFields.traverse(visitor: &visitor) + } + + static func ==(lhs: Sharing_Nearby_FileMetadata, rhs: Sharing_Nearby_FileMetadata) -> Bool { + if lhs._name != rhs._name {return false} + if lhs._type != rhs._type {return false} + if lhs._payloadID != rhs._payloadID {return false} + if lhs._size != rhs._size {return false} + if lhs._mimeType != rhs._mimeType {return false} + if lhs._id != rhs._id {return false} + if lhs.unknownFields != rhs.unknownFields {return false} + return true + } +} + +extension Sharing_Nearby_FileMetadata.TypeEnum: SwiftProtobuf._ProtoNameProviding { + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 0: .same(proto: "UNKNOWN"), + 1: .same(proto: "IMAGE"), + 2: .same(proto: "VIDEO"), + 3: .same(proto: "APP"), + 4: .same(proto: "AUDIO"), + ] +} + +extension Sharing_Nearby_TextMetadata: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let protoMessageName: String = _protobuf_package + ".TextMetadata" + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 2: .standard(proto: "text_title"), + 3: .same(proto: "type"), + 4: .standard(proto: "payload_id"), + 5: .same(proto: "size"), + 6: .same(proto: "id"), + ] + + mutating func decodeMessage(decoder: inout D) throws { + while let fieldNumber = try decoder.nextFieldNumber() { + // The use of inline closures is to circumvent an issue where the compiler + // allocates stack space for every case branch when no optimizations are + // enabled. https://github.com/apple/swift-protobuf/issues/1034 + switch fieldNumber { + case 2: try { try decoder.decodeSingularStringField(value: &self._textTitle) }() + case 3: try { try decoder.decodeSingularEnumField(value: &self._type) }() + case 4: try { try decoder.decodeSingularInt64Field(value: &self._payloadID) }() + case 5: try { try decoder.decodeSingularInt64Field(value: &self._size) }() + case 6: try { try decoder.decodeSingularInt64Field(value: &self._id) }() + default: break + } + } + } + + func traverse(visitor: inout V) throws { + // The use of inline closures is to circumvent an issue where the compiler + // allocates stack space for every if/case branch local when no optimizations + // are enabled. https://github.com/apple/swift-protobuf/issues/1034 and + // https://github.com/apple/swift-protobuf/issues/1182 + try { if let v = self._textTitle { + try visitor.visitSingularStringField(value: v, fieldNumber: 2) + } }() + try { if let v = self._type { + try visitor.visitSingularEnumField(value: v, fieldNumber: 3) + } }() + try { if let v = self._payloadID { + try visitor.visitSingularInt64Field(value: v, fieldNumber: 4) + } }() + try { if let v = self._size { + try visitor.visitSingularInt64Field(value: v, fieldNumber: 5) + } }() + try { if let v = self._id { + try visitor.visitSingularInt64Field(value: v, fieldNumber: 6) + } }() + try unknownFields.traverse(visitor: &visitor) + } + + static func ==(lhs: Sharing_Nearby_TextMetadata, rhs: Sharing_Nearby_TextMetadata) -> Bool { + if lhs._textTitle != rhs._textTitle {return false} + if lhs._type != rhs._type {return false} + if lhs._payloadID != rhs._payloadID {return false} + if lhs._size != rhs._size {return false} + if lhs._id != rhs._id {return false} + if lhs.unknownFields != rhs.unknownFields {return false} + return true + } +} + +extension Sharing_Nearby_TextMetadata.TypeEnum: SwiftProtobuf._ProtoNameProviding { + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 0: .same(proto: "UNKNOWN"), + 1: .same(proto: "TEXT"), + 2: .same(proto: "URL"), + 3: .same(proto: "ADDRESS"), + 4: .same(proto: "PHONE_NUMBER"), + ] +} + +extension Sharing_Nearby_WifiCredentialsMetadata: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let protoMessageName: String = _protobuf_package + ".WifiCredentialsMetadata" + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 2: .same(proto: "ssid"), + 3: .standard(proto: "security_type"), + 4: .standard(proto: "payload_id"), + 5: .same(proto: "id"), + ] + + mutating func decodeMessage(decoder: inout D) throws { + while let fieldNumber = try decoder.nextFieldNumber() { + // The use of inline closures is to circumvent an issue where the compiler + // allocates stack space for every case branch when no optimizations are + // enabled. https://github.com/apple/swift-protobuf/issues/1034 + switch fieldNumber { + case 2: try { try decoder.decodeSingularStringField(value: &self._ssid) }() + case 3: try { try decoder.decodeSingularEnumField(value: &self._securityType) }() + case 4: try { try decoder.decodeSingularInt64Field(value: &self._payloadID) }() + case 5: try { try decoder.decodeSingularInt64Field(value: &self._id) }() + default: break + } + } + } + + func traverse(visitor: inout V) throws { + // The use of inline closures is to circumvent an issue where the compiler + // allocates stack space for every if/case branch local when no optimizations + // are enabled. https://github.com/apple/swift-protobuf/issues/1034 and + // https://github.com/apple/swift-protobuf/issues/1182 + try { if let v = self._ssid { + try visitor.visitSingularStringField(value: v, fieldNumber: 2) + } }() + try { if let v = self._securityType { + try visitor.visitSingularEnumField(value: v, fieldNumber: 3) + } }() + try { if let v = self._payloadID { + try visitor.visitSingularInt64Field(value: v, fieldNumber: 4) + } }() + try { if let v = self._id { + try visitor.visitSingularInt64Field(value: v, fieldNumber: 5) + } }() + try unknownFields.traverse(visitor: &visitor) + } + + static func ==(lhs: Sharing_Nearby_WifiCredentialsMetadata, rhs: Sharing_Nearby_WifiCredentialsMetadata) -> Bool { + if lhs._ssid != rhs._ssid {return false} + if lhs._securityType != rhs._securityType {return false} + if lhs._payloadID != rhs._payloadID {return false} + if lhs._id != rhs._id {return false} + if lhs.unknownFields != rhs.unknownFields {return false} + return true + } +} + +extension Sharing_Nearby_WifiCredentialsMetadata.SecurityType: SwiftProtobuf._ProtoNameProviding { + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 0: .same(proto: "UNKNOWN_SECURITY_TYPE"), + 1: .same(proto: "OPEN"), + 2: .same(proto: "WPA_PSK"), + 3: .same(proto: "WEP"), + ] +} + +extension Sharing_Nearby_Frame: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let protoMessageName: String = _protobuf_package + ".Frame" + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 1: .same(proto: "version"), + 2: .same(proto: "v1"), + ] + + mutating func decodeMessage(decoder: inout D) throws { + while let fieldNumber = try decoder.nextFieldNumber() { + // The use of inline closures is to circumvent an issue where the compiler + // allocates stack space for every case branch when no optimizations are + // enabled. https://github.com/apple/swift-protobuf/issues/1034 + switch fieldNumber { + case 1: try { try decoder.decodeSingularEnumField(value: &self._version) }() + case 2: try { try decoder.decodeSingularMessageField(value: &self._v1) }() + default: break + } + } + } + + func traverse(visitor: inout V) throws { + // The use of inline closures is to circumvent an issue where the compiler + // allocates stack space for every if/case branch local when no optimizations + // are enabled. https://github.com/apple/swift-protobuf/issues/1034 and + // https://github.com/apple/swift-protobuf/issues/1182 + try { if let v = self._version { + try visitor.visitSingularEnumField(value: v, fieldNumber: 1) + } }() + try { if let v = self._v1 { + try visitor.visitSingularMessageField(value: v, fieldNumber: 2) + } }() + try unknownFields.traverse(visitor: &visitor) + } + + static func ==(lhs: Sharing_Nearby_Frame, rhs: Sharing_Nearby_Frame) -> Bool { + if lhs._version != rhs._version {return false} + if lhs._v1 != rhs._v1 {return false} + if lhs.unknownFields != rhs.unknownFields {return false} + return true + } +} + +extension Sharing_Nearby_Frame.Version: SwiftProtobuf._ProtoNameProviding { + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 0: .same(proto: "UNKNOWN_VERSION"), + 1: .same(proto: "V1"), + ] +} + +extension Sharing_Nearby_V1Frame: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let protoMessageName: String = _protobuf_package + ".V1Frame" + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 1: .same(proto: "type"), + 2: .same(proto: "introduction"), + 3: .standard(proto: "connection_response"), + 4: .standard(proto: "paired_key_encryption"), + 5: .standard(proto: "paired_key_result"), + 6: .standard(proto: "certificate_info"), + ] + + mutating func decodeMessage(decoder: inout D) throws { + while let fieldNumber = try decoder.nextFieldNumber() { + // The use of inline closures is to circumvent an issue where the compiler + // allocates stack space for every case branch when no optimizations are + // enabled. https://github.com/apple/swift-protobuf/issues/1034 + switch fieldNumber { + case 1: try { try decoder.decodeSingularEnumField(value: &self._type) }() + case 2: try { try decoder.decodeSingularMessageField(value: &self._introduction) }() + case 3: try { try decoder.decodeSingularMessageField(value: &self._connectionResponse) }() + case 4: try { try decoder.decodeSingularMessageField(value: &self._pairedKeyEncryption) }() + case 5: try { try decoder.decodeSingularMessageField(value: &self._pairedKeyResult) }() + case 6: try { try decoder.decodeSingularMessageField(value: &self._certificateInfo) }() + default: break + } + } + } + + func traverse(visitor: inout V) throws { + // The use of inline closures is to circumvent an issue where the compiler + // allocates stack space for every if/case branch local when no optimizations + // are enabled. https://github.com/apple/swift-protobuf/issues/1034 and + // https://github.com/apple/swift-protobuf/issues/1182 + try { if let v = self._type { + try visitor.visitSingularEnumField(value: v, fieldNumber: 1) + } }() + try { if let v = self._introduction { + try visitor.visitSingularMessageField(value: v, fieldNumber: 2) + } }() + try { if let v = self._connectionResponse { + try visitor.visitSingularMessageField(value: v, fieldNumber: 3) + } }() + try { if let v = self._pairedKeyEncryption { + try visitor.visitSingularMessageField(value: v, fieldNumber: 4) + } }() + try { if let v = self._pairedKeyResult { + try visitor.visitSingularMessageField(value: v, fieldNumber: 5) + } }() + try { if let v = self._certificateInfo { + try visitor.visitSingularMessageField(value: v, fieldNumber: 6) + } }() + try unknownFields.traverse(visitor: &visitor) + } + + static func ==(lhs: Sharing_Nearby_V1Frame, rhs: Sharing_Nearby_V1Frame) -> Bool { + if lhs._type != rhs._type {return false} + if lhs._introduction != rhs._introduction {return false} + if lhs._connectionResponse != rhs._connectionResponse {return false} + if lhs._pairedKeyEncryption != rhs._pairedKeyEncryption {return false} + if lhs._pairedKeyResult != rhs._pairedKeyResult {return false} + if lhs._certificateInfo != rhs._certificateInfo {return false} + if lhs.unknownFields != rhs.unknownFields {return false} + return true + } +} + +extension Sharing_Nearby_V1Frame.FrameType: SwiftProtobuf._ProtoNameProviding { + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 0: .same(proto: "UNKNOWN_FRAME_TYPE"), + 1: .same(proto: "INTRODUCTION"), + 2: .same(proto: "RESPONSE"), + 3: .same(proto: "PAIRED_KEY_ENCRYPTION"), + 4: .same(proto: "PAIRED_KEY_RESULT"), + 5: .same(proto: "CERTIFICATE_INFO"), + 6: .same(proto: "CANCEL"), + ] +} + +extension Sharing_Nearby_IntroductionFrame: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let protoMessageName: String = _protobuf_package + ".IntroductionFrame" + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 1: .standard(proto: "file_metadata"), + 2: .standard(proto: "text_metadata"), + 3: .standard(proto: "required_package"), + 4: .standard(proto: "wifi_credentials_metadata"), + ] + + mutating func decodeMessage(decoder: inout D) throws { + while let fieldNumber = try decoder.nextFieldNumber() { + // The use of inline closures is to circumvent an issue where the compiler + // allocates stack space for every case branch when no optimizations are + // enabled. https://github.com/apple/swift-protobuf/issues/1034 + switch fieldNumber { + case 1: try { try decoder.decodeRepeatedMessageField(value: &self.fileMetadata) }() + case 2: try { try decoder.decodeRepeatedMessageField(value: &self.textMetadata) }() + case 3: try { try decoder.decodeSingularStringField(value: &self._requiredPackage) }() + case 4: try { try decoder.decodeRepeatedMessageField(value: &self.wifiCredentialsMetadata) }() + default: break + } + } + } + + func traverse(visitor: inout V) throws { + // The use of inline closures is to circumvent an issue where the compiler + // allocates stack space for every if/case branch local when no optimizations + // are enabled. https://github.com/apple/swift-protobuf/issues/1034 and + // https://github.com/apple/swift-protobuf/issues/1182 + if !self.fileMetadata.isEmpty { + try visitor.visitRepeatedMessageField(value: self.fileMetadata, fieldNumber: 1) + } + if !self.textMetadata.isEmpty { + try visitor.visitRepeatedMessageField(value: self.textMetadata, fieldNumber: 2) + } + try { if let v = self._requiredPackage { + try visitor.visitSingularStringField(value: v, fieldNumber: 3) + } }() + if !self.wifiCredentialsMetadata.isEmpty { + try visitor.visitRepeatedMessageField(value: self.wifiCredentialsMetadata, fieldNumber: 4) + } + try unknownFields.traverse(visitor: &visitor) + } + + static func ==(lhs: Sharing_Nearby_IntroductionFrame, rhs: Sharing_Nearby_IntroductionFrame) -> Bool { + if lhs.fileMetadata != rhs.fileMetadata {return false} + if lhs.textMetadata != rhs.textMetadata {return false} + if lhs._requiredPackage != rhs._requiredPackage {return false} + if lhs.wifiCredentialsMetadata != rhs.wifiCredentialsMetadata {return false} + if lhs.unknownFields != rhs.unknownFields {return false} + return true + } +} + +extension Sharing_Nearby_ConnectionResponseFrame: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let protoMessageName: String = _protobuf_package + ".ConnectionResponseFrame" + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 1: .same(proto: "status"), + ] + + mutating func decodeMessage(decoder: inout D) throws { + while let fieldNumber = try decoder.nextFieldNumber() { + // The use of inline closures is to circumvent an issue where the compiler + // allocates stack space for every case branch when no optimizations are + // enabled. https://github.com/apple/swift-protobuf/issues/1034 + switch fieldNumber { + case 1: try { try decoder.decodeSingularEnumField(value: &self._status) }() + default: break + } + } + } + + func traverse(visitor: inout V) throws { + // The use of inline closures is to circumvent an issue where the compiler + // allocates stack space for every if/case branch local when no optimizations + // are enabled. https://github.com/apple/swift-protobuf/issues/1034 and + // https://github.com/apple/swift-protobuf/issues/1182 + try { if let v = self._status { + try visitor.visitSingularEnumField(value: v, fieldNumber: 1) + } }() + try unknownFields.traverse(visitor: &visitor) + } + + static func ==(lhs: Sharing_Nearby_ConnectionResponseFrame, rhs: Sharing_Nearby_ConnectionResponseFrame) -> Bool { + if lhs._status != rhs._status {return false} + if lhs.unknownFields != rhs.unknownFields {return false} + return true + } +} + +extension Sharing_Nearby_ConnectionResponseFrame.Status: SwiftProtobuf._ProtoNameProviding { + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 0: .same(proto: "UNKNOWN"), + 1: .same(proto: "ACCEPT"), + 2: .same(proto: "REJECT"), + 3: .same(proto: "NOT_ENOUGH_SPACE"), + 4: .same(proto: "UNSUPPORTED_ATTACHMENT_TYPE"), + 5: .same(proto: "TIMED_OUT"), + ] +} + +extension Sharing_Nearby_PairedKeyEncryptionFrame: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let protoMessageName: String = _protobuf_package + ".PairedKeyEncryptionFrame" + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 1: .standard(proto: "signed_data"), + 2: .standard(proto: "secret_id_hash"), + 3: .standard(proto: "optional_signed_data"), + ] + + mutating func decodeMessage(decoder: inout D) throws { + while let fieldNumber = try decoder.nextFieldNumber() { + // The use of inline closures is to circumvent an issue where the compiler + // allocates stack space for every case branch when no optimizations are + // enabled. https://github.com/apple/swift-protobuf/issues/1034 + switch fieldNumber { + case 1: try { try decoder.decodeSingularBytesField(value: &self._signedData) }() + case 2: try { try decoder.decodeSingularBytesField(value: &self._secretIDHash) }() + case 3: try { try decoder.decodeSingularBytesField(value: &self._optionalSignedData) }() + default: break + } + } + } + + func traverse(visitor: inout V) throws { + // The use of inline closures is to circumvent an issue where the compiler + // allocates stack space for every if/case branch local when no optimizations + // are enabled. https://github.com/apple/swift-protobuf/issues/1034 and + // https://github.com/apple/swift-protobuf/issues/1182 + try { if let v = self._signedData { + try visitor.visitSingularBytesField(value: v, fieldNumber: 1) + } }() + try { if let v = self._secretIDHash { + try visitor.visitSingularBytesField(value: v, fieldNumber: 2) + } }() + try { if let v = self._optionalSignedData { + try visitor.visitSingularBytesField(value: v, fieldNumber: 3) + } }() + try unknownFields.traverse(visitor: &visitor) + } + + static func ==(lhs: Sharing_Nearby_PairedKeyEncryptionFrame, rhs: Sharing_Nearby_PairedKeyEncryptionFrame) -> Bool { + if lhs._signedData != rhs._signedData {return false} + if lhs._secretIDHash != rhs._secretIDHash {return false} + if lhs._optionalSignedData != rhs._optionalSignedData {return false} + if lhs.unknownFields != rhs.unknownFields {return false} + return true + } +} + +extension Sharing_Nearby_PairedKeyResultFrame: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let protoMessageName: String = _protobuf_package + ".PairedKeyResultFrame" + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 1: .same(proto: "status"), + ] + + mutating func decodeMessage(decoder: inout D) throws { + while let fieldNumber = try decoder.nextFieldNumber() { + // The use of inline closures is to circumvent an issue where the compiler + // allocates stack space for every case branch when no optimizations are + // enabled. https://github.com/apple/swift-protobuf/issues/1034 + switch fieldNumber { + case 1: try { try decoder.decodeSingularEnumField(value: &self._status) }() + default: break + } + } + } + + func traverse(visitor: inout V) throws { + // The use of inline closures is to circumvent an issue where the compiler + // allocates stack space for every if/case branch local when no optimizations + // are enabled. https://github.com/apple/swift-protobuf/issues/1034 and + // https://github.com/apple/swift-protobuf/issues/1182 + try { if let v = self._status { + try visitor.visitSingularEnumField(value: v, fieldNumber: 1) + } }() + try unknownFields.traverse(visitor: &visitor) + } + + static func ==(lhs: Sharing_Nearby_PairedKeyResultFrame, rhs: Sharing_Nearby_PairedKeyResultFrame) -> Bool { + if lhs._status != rhs._status {return false} + if lhs.unknownFields != rhs.unknownFields {return false} + return true + } +} + +extension Sharing_Nearby_PairedKeyResultFrame.Status: SwiftProtobuf._ProtoNameProviding { + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 0: .same(proto: "UNKNOWN"), + 1: .same(proto: "SUCCESS"), + 2: .same(proto: "FAIL"), + 3: .same(proto: "UNABLE"), + ] +} + +extension Sharing_Nearby_CertificateInfoFrame: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let protoMessageName: String = _protobuf_package + ".CertificateInfoFrame" + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 1: .standard(proto: "public_certificate"), + ] + + mutating func decodeMessage(decoder: inout D) throws { + while let fieldNumber = try decoder.nextFieldNumber() { + // The use of inline closures is to circumvent an issue where the compiler + // allocates stack space for every case branch when no optimizations are + // enabled. https://github.com/apple/swift-protobuf/issues/1034 + switch fieldNumber { + case 1: try { try decoder.decodeRepeatedMessageField(value: &self.publicCertificate) }() + default: break + } + } + } + + func traverse(visitor: inout V) throws { + if !self.publicCertificate.isEmpty { + try visitor.visitRepeatedMessageField(value: self.publicCertificate, fieldNumber: 1) + } + try unknownFields.traverse(visitor: &visitor) + } + + static func ==(lhs: Sharing_Nearby_CertificateInfoFrame, rhs: Sharing_Nearby_CertificateInfoFrame) -> Bool { + if lhs.publicCertificate != rhs.publicCertificate {return false} + if lhs.unknownFields != rhs.unknownFields {return false} + return true + } +} + +extension Sharing_Nearby_PublicCertificate: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let protoMessageName: String = _protobuf_package + ".PublicCertificate" + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 1: .standard(proto: "secret_id"), + 2: .standard(proto: "authenticity_key"), + 3: .standard(proto: "public_key"), + 4: .standard(proto: "start_time"), + 5: .standard(proto: "end_time"), + 6: .standard(proto: "encrypted_metadata_bytes"), + 7: .standard(proto: "metadata_encryption_key_tag"), + ] + + mutating func decodeMessage(decoder: inout D) throws { + while let fieldNumber = try decoder.nextFieldNumber() { + // The use of inline closures is to circumvent an issue where the compiler + // allocates stack space for every case branch when no optimizations are + // enabled. https://github.com/apple/swift-protobuf/issues/1034 + switch fieldNumber { + case 1: try { try decoder.decodeSingularBytesField(value: &self._secretID) }() + case 2: try { try decoder.decodeSingularBytesField(value: &self._authenticityKey) }() + case 3: try { try decoder.decodeSingularBytesField(value: &self._publicKey) }() + case 4: try { try decoder.decodeSingularInt64Field(value: &self._startTime) }() + case 5: try { try decoder.decodeSingularInt64Field(value: &self._endTime) }() + case 6: try { try decoder.decodeSingularBytesField(value: &self._encryptedMetadataBytes) }() + case 7: try { try decoder.decodeSingularBytesField(value: &self._metadataEncryptionKeyTag) }() + default: break + } + } + } + + func traverse(visitor: inout V) throws { + // The use of inline closures is to circumvent an issue where the compiler + // allocates stack space for every if/case branch local when no optimizations + // are enabled. https://github.com/apple/swift-protobuf/issues/1034 and + // https://github.com/apple/swift-protobuf/issues/1182 + try { if let v = self._secretID { + try visitor.visitSingularBytesField(value: v, fieldNumber: 1) + } }() + try { if let v = self._authenticityKey { + try visitor.visitSingularBytesField(value: v, fieldNumber: 2) + } }() + try { if let v = self._publicKey { + try visitor.visitSingularBytesField(value: v, fieldNumber: 3) + } }() + try { if let v = self._startTime { + try visitor.visitSingularInt64Field(value: v, fieldNumber: 4) + } }() + try { if let v = self._endTime { + try visitor.visitSingularInt64Field(value: v, fieldNumber: 5) + } }() + try { if let v = self._encryptedMetadataBytes { + try visitor.visitSingularBytesField(value: v, fieldNumber: 6) + } }() + try { if let v = self._metadataEncryptionKeyTag { + try visitor.visitSingularBytesField(value: v, fieldNumber: 7) + } }() + try unknownFields.traverse(visitor: &visitor) + } + + static func ==(lhs: Sharing_Nearby_PublicCertificate, rhs: Sharing_Nearby_PublicCertificate) -> Bool { + if lhs._secretID != rhs._secretID {return false} + if lhs._authenticityKey != rhs._authenticityKey {return false} + if lhs._publicKey != rhs._publicKey {return false} + if lhs._startTime != rhs._startTime {return false} + if lhs._endTime != rhs._endTime {return false} + if lhs._encryptedMetadataBytes != rhs._encryptedMetadataBytes {return false} + if lhs._metadataEncryptionKeyTag != rhs._metadataEncryptionKeyTag {return false} + if lhs.unknownFields != rhs.unknownFields {return false} + return true + } +} + +extension Sharing_Nearby_WifiCredentials: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let protoMessageName: String = _protobuf_package + ".WifiCredentials" + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 1: .same(proto: "password"), + 2: .standard(proto: "hidden_ssid"), + ] + + mutating func decodeMessage(decoder: inout D) throws { + while let fieldNumber = try decoder.nextFieldNumber() { + // The use of inline closures is to circumvent an issue where the compiler + // allocates stack space for every case branch when no optimizations are + // enabled. https://github.com/apple/swift-protobuf/issues/1034 + switch fieldNumber { + case 1: try { try decoder.decodeSingularStringField(value: &self._password) }() + case 2: try { try decoder.decodeSingularBoolField(value: &self._hiddenSsid) }() + default: break + } + } + } + + func traverse(visitor: inout V) throws { + // The use of inline closures is to circumvent an issue where the compiler + // allocates stack space for every if/case branch local when no optimizations + // are enabled. https://github.com/apple/swift-protobuf/issues/1034 and + // https://github.com/apple/swift-protobuf/issues/1182 + try { if let v = self._password { + try visitor.visitSingularStringField(value: v, fieldNumber: 1) + } }() + try { if let v = self._hiddenSsid { + try visitor.visitSingularBoolField(value: v, fieldNumber: 2) + } }() + try unknownFields.traverse(visitor: &visitor) + } + + static func ==(lhs: Sharing_Nearby_WifiCredentials, rhs: Sharing_Nearby_WifiCredentials) -> Bool { + if lhs._password != rhs._password {return false} + if lhs._hiddenSsid != rhs._hiddenSsid {return false} + if lhs.unknownFields != rhs.unknownFields {return false} + return true + } +} diff --git a/NearDrop/ProtobufSource/device_to_device_messages.proto b/NearDrop/ProtobufSource/device_to_device_messages.proto new file mode 100644 index 0000000..5600373 --- /dev/null +++ b/NearDrop/ProtobufSource/device_to_device_messages.proto @@ -0,0 +1,81 @@ +// Copyright 2020 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +syntax = "proto2"; + +package securegcm; + +import "securemessage.proto"; + +option optimize_for = LITE_RUNTIME; +option java_package = "com.google.security.cryptauth.lib.securegcm"; +option java_outer_classname = "DeviceToDeviceMessagesProto"; +option objc_class_prefix = "SGCM"; + +// Used by protocols between devices +message DeviceToDeviceMessage { + // the payload of the message + optional bytes message = 1; + + // the sequence number of the message - must be increasing. + optional int32 sequence_number = 2; +} + +// sent as the first message from initiator to responder +// in an unauthenticated Diffie-Hellman Key Exchange +message InitiatorHello { + // The session public key to send to the responder + optional securemessage.GenericPublicKey public_dh_key = 1; + + // The protocol version + optional int32 protocol_version = 2 [default = 0]; +} + +// sent inside the header of the first message from the responder to the +// initiator in an unauthenticated Diffie-Hellman Key Exchange +message ResponderHello { + // The session public key to send to the initiator + optional securemessage.GenericPublicKey public_dh_key = 1; + + // The protocol version + optional int32 protocol_version = 2 [default = 0]; +} + +// Type of curve +enum Curve { ED_25519 = 1; } + +// A convenience proto for encoding curve points in affine representation +message EcPoint { + required Curve curve = 1; + + // x and y are encoded in big-endian two's complement + // client MUST verify (x,y) is a valid point on the specified curve + required bytes x = 2; + required bytes y = 3; +} + +message SpakeHandshakeMessage { + // Each flow in the protocol bumps this counter + optional int32 flow_number = 1; + + // Some (but not all) SPAKE flows send a point on an elliptic curve + optional EcPoint ec_point = 2; + + // Some (but not all) SPAKE flows send a hash value + optional bytes hash_value = 3; + + // The last flow of a SPAKE protocol can send an optional payload, + // since the key exchange is already complete on the sender's side. + optional bytes payload = 4; +} diff --git a/NearDrop/ProtobufSource/offline_wire_formats.proto b/NearDrop/ProtobufSource/offline_wire_formats.proto new file mode 100644 index 0000000..c112004 --- /dev/null +++ b/NearDrop/ProtobufSource/offline_wire_formats.proto @@ -0,0 +1,403 @@ +// Copyright 2020 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +syntax = "proto2"; + +package location.nearby.connections; + +option optimize_for = LITE_RUNTIME; +option java_outer_classname = "OfflineWireFormatsProto"; +option java_package = "com.google.location.nearby.connections.proto"; +option objc_class_prefix = "GNCP"; + +message OfflineFrame { + enum Version { + UNKNOWN_VERSION = 0; + V1 = 1; + } + optional Version version = 1; + + // Right now there's only 1 version, but if there are more, exactly one of + // the following fields will be set. + optional V1Frame v1 = 2; +} + +message V1Frame { + enum FrameType { + UNKNOWN_FRAME_TYPE = 0; + CONNECTION_REQUEST = 1; + CONNECTION_RESPONSE = 2; + PAYLOAD_TRANSFER = 3; + BANDWIDTH_UPGRADE_NEGOTIATION = 4; + KEEP_ALIVE = 5; + DISCONNECTION = 6; + PAIRED_KEY_ENCRYPTION = 7; + } + optional FrameType type = 1; + + // Exactly one of the following fields will be set. + optional ConnectionRequestFrame connection_request = 2; + optional ConnectionResponseFrame connection_response = 3; + optional PayloadTransferFrame payload_transfer = 4; + optional BandwidthUpgradeNegotiationFrame bandwidth_upgrade_negotiation = 5; + optional KeepAliveFrame keep_alive = 6; + optional DisconnectionFrame disconnection = 7; + optional PairedKeyEncryptionFrame paired_key_encryption = 8; +} + +message ConnectionRequestFrame { + // Should always match cs/symbol:location.nearby.proto.connections.Medium + // LINT.IfChange + enum Medium { + UNKNOWN_MEDIUM = 0; + MDNS = 1 [deprecated = true]; + BLUETOOTH = 2; + WIFI_HOTSPOT = 3; + BLE = 4; + WIFI_LAN = 5; + WIFI_AWARE = 6; + NFC = 7; + WIFI_DIRECT = 8; + WEB_RTC = 9; + BLE_L2CAP = 10; + USB = 11; + } + // LINT.ThenChange(//depot/google3/third_party/nearby/proto/connections_enums.proto) + + optional string endpoint_id = 1; + optional string endpoint_name = 2; + optional bytes handshake_data = 3; + // A random number generated for each outgoing connection that is presently + // used to act as a tiebreaker when 2 devices connect to each other + // simultaneously; this can also be used for other initialization-scoped + // things in the future. + optional int32 nonce = 4; + // The mediums this device supports upgrading to. This list should be filtered + // by both the strategy and this device's individual limitations. + repeated Medium mediums = 5; + optional bytes endpoint_info = 6; + optional MediumMetadata medium_metadata = 7; + optional int32 keep_alive_interval_millis = 8; + optional int32 keep_alive_timeout_millis = 9; + // The type of {@link Device} object. + optional int32 device_type = 10 [default = 0]; + // The bytes of serialized {@link Device} object. + optional bytes device_info = 11; +} + +message ConnectionResponseFrame { + // This doesn't need to send back endpoint_id and endpoint_name (like + // the ConnectionRequestFrame does) because those have already been + // transmitted out-of-band, at the time this endpoint was discovered. + + // One of: + // + // - ConnectionsStatusCodes.STATUS_OK + // - ConnectionsStatusCodes.STATUS_CONNECTION_REJECTED. + optional int32 status = 1 [deprecated = true]; + optional bytes handshake_data = 2; + + // Used to replace the status integer parameter with a meaningful enum item. + // Map ConnectionsStatusCodes.STATUS_OK to ACCEPT and + // ConnectionsStatusCodes.STATUS_CONNECTION_REJECTED to REJECT. + // Flag: connection_replace_status_with_response_connectionResponseFrame + enum ResponseStatus { + UNKNOWN_RESPONSE_STATUS = 0; + ACCEPT = 1; + REJECT = 2; + } + optional ResponseStatus response = 3; + optional OsInfo os_info = 4; + // A bitmask value to indicate which medium supports Multiplex transmission + // feature. Each supporting medium could utilize one bit starting from the + // least significant bit in this field. eq. BT utilizes the LSB bit which 0x01 + // means bt supports multiplex while 0x00 means not. Refer to ClientProxy.java + // for the bit usages. + optional int32 multiplex_socket_bitmask = 5; + optional int32 nearby_connections_version = 6; +} + +message PayloadTransferFrame { + enum PacketType { + UNKNOWN_PACKET_TYPE = 0; + DATA = 1; + CONTROL = 2; + } + + message PayloadHeader { + enum PayloadType { + UNKNOWN_PAYLOAD_TYPE = 0; + BYTES = 1; + FILE = 2; + STREAM = 3; + } + optional int64 id = 1; + optional PayloadType type = 2; + optional int64 total_size = 3; + optional bool is_sensitive = 4; + optional string file_name = 5; + optional string parent_folder = 6; + } + + // Accompanies DATA packets. + message PayloadChunk { + enum Flags { + LAST_CHUNK = 0x1; + } + optional int32 flags = 1; + optional int64 offset = 2; + optional bytes body = 3; + } + + // Accompanies CONTROL packets. + message ControlMessage { + enum EventType { + UNKNOWN_EVENT_TYPE = 0; + PAYLOAD_ERROR = 1; + PAYLOAD_CANCELED = 2; + PAYLOAD_RECEIVED_ACK = 3; + } + + optional EventType event = 1; + optional int64 offset = 2; + } + + optional PacketType packet_type = 1; + optional PayloadHeader payload_header = 2; + + // Exactly one of the following fields will be set, depending on the type. + optional PayloadChunk payload_chunk = 3; + optional ControlMessage control_message = 4; +} + +message BandwidthUpgradeNegotiationFrame { + enum EventType { + UNKNOWN_EVENT_TYPE = 0; + UPGRADE_PATH_AVAILABLE = 1; + LAST_WRITE_TO_PRIOR_CHANNEL = 2; + SAFE_TO_CLOSE_PRIOR_CHANNEL = 3; + CLIENT_INTRODUCTION = 4; + UPGRADE_FAILURE = 5; + CLIENT_INTRODUCTION_ACK = 6; + } + + // Accompanies UPGRADE_PATH_AVAILABLE and UPGRADE_FAILURE events. + message UpgradePathInfo { + // Should always match cs/symbol:location.nearby.proto.connections.Medium + enum Medium { + UNKNOWN_MEDIUM = 0; + MDNS = 1 [deprecated = true]; + BLUETOOTH = 2; + WIFI_HOTSPOT = 3; + BLE = 4; + WIFI_LAN = 5; + WIFI_AWARE = 6; + NFC = 7; + WIFI_DIRECT = 8; + WEB_RTC = 9; + // 10 is reserved. + USB = 11; + } + + // Accompanies Medium.WIFI_HOTSPOT. + message WifiHotspotCredentials { + optional string ssid = 1; + optional string password = 2; + optional int32 port = 3; + optional string gateway = 4 [default = "0.0.0.0"]; + // This field can be a band or frequency + optional int32 frequency = 5 [default = -1]; + } + + // Accompanies Medium.WIFI_LAN. + message WifiLanSocket { + optional bytes ip_address = 1; + optional int32 wifi_port = 2; + } + + // Accompanies Medium.BLUETOOTH. + message BluetoothCredentials { + optional string service_name = 1; + optional string mac_address = 2; + } + + // Accompanies Medium.WIFI_AWARE. + message WifiAwareCredentials { + optional string service_id = 1; + optional bytes service_info = 2; + optional string password = 3; + } + + // Accompanies Medium.WIFI_DIRECT. + message WifiDirectCredentials { + optional string ssid = 1; + optional string password = 2; + optional int32 port = 3; + optional int32 frequency = 4; + optional string gateway = 5 [default = "0.0.0.0"]; + } + + // Accompanies Medium.WEB_RTC + message WebRtcCredentials { + optional string peer_id = 1; + optional LocationHint location_hint = 2; + } + + optional Medium medium = 1; + + // Exactly one of the following fields will be set. + optional WifiHotspotCredentials wifi_hotspot_credentials = 2; + optional WifiLanSocket wifi_lan_socket = 3; + optional BluetoothCredentials bluetooth_credentials = 4; + optional WifiAwareCredentials wifi_aware_credentials = 5; + optional WifiDirectCredentials wifi_direct_credentials = 6; + optional WebRtcCredentials web_rtc_credentials = 8; + + // Disable Encryption for this upgrade medium to improve throughput. + optional bool supports_disabling_encryption = 7; + + // An ack will be sent after the CLIENT_INTRODUCTION frame. + optional bool supports_client_introduction_ack = 9; + } + + // Accompanies CLIENT_INTRODUCTION events. + message ClientIntroduction { + optional string endpoint_id = 1; + optional bool supports_disabling_encryption = 2; + } + + // Accompanies CLIENT_INTRODUCTION_ACK events. + message ClientIntroductionAck {} + + optional EventType event_type = 1; + + // Exactly one of the following fields will be set. + optional UpgradePathInfo upgrade_path_info = 2; + optional ClientIntroduction client_introduction = 3; + optional ClientIntroductionAck client_introduction_ack = 4; +} + +message KeepAliveFrame { + // And ack will be sent after receiving KEEP_ALIVE frame. + optional bool ack = 1; +} + +// Informs the remote side to immediately severe the socket connection. +// Used in bandwidth upgrades to get around a race condition, but may be used +// in other situations to trigger a faster disconnection event than waiting for +// socket closed on the remote side. +message DisconnectionFrame { + // Apply safe-to-disconnect protocol if true. + optional bool request_safe_to_disconnect = 1; + + // Ack of receiving Disconnection frame will be sent to the sender + // frame. + optional bool ack_safe_to_disconnect = 2; +} + +// A paired key encryption packet sent between devices, contains signed data. +message PairedKeyEncryptionFrame { + // The encrypted data (raw authentication token for the established + // connection) in byte array format. + optional bytes signed_data = 1; +} + +message MediumMetadata { + // True if local device supports 5GHz. + optional bool supports_5_ghz = 1; + // WiFi LAN BSSID, in the form of a six-byte MAC address: XX:XX:XX:XX:XX:XX + optional string bssid = 2; + // IP address, in network byte order: the highest order byte of the address is + // in byte[0]. + optional bytes ip_address = 3; + // True if local device supports 6GHz. + optional bool supports_6_ghz = 4; + // True if local device has mobile radio. + optional bool mobile_radio = 5; + // The frequency of the WiFi LAN AP(in MHz). Or -1 is not associated with an + // AP over WiFi, -2 represents the active network uses an Ethernet transport. + optional int32 ap_frequency = 6 [default = -1]; + // Available channels on the local device. + optional AvailableChannels available_channels = 7; + // Usable WiFi Direct client channels on the local device. + optional WifiDirectCliUsableChannels wifi_direct_cli_usable_channels = 8; + // Usable WiFi LAN channels on the local device. + optional WifiLanUsableChannels wifi_lan_usable_channels = 9; + // Usable WiFi Aware channels on the local device. + optional WifiAwareUsableChannels wifi_aware_usable_channels = 10; + // Usable WiFi Hotspot STA channels on the local device. + optional WifiHotspotStaUsableChannels wifi_hotspot_sta_usable_channels = 11; +} + +// Available channels on the local device. +message AvailableChannels { + repeated int32 channels = 1 [packed = true]; +} + +// Usable WiFi Direct client channels on the local device. +message WifiDirectCliUsableChannels { + repeated int32 channels = 1 [packed = true]; +} + +// Usable WiFi LAN channels on the local device. +message WifiLanUsableChannels { + repeated int32 channels = 1 [packed = true]; +} + +// Usable WiFi Aware channels on the local device. +message WifiAwareUsableChannels { + repeated int32 channels = 1 [packed = true]; +} + +// Usable WiFi Hotspot STA channels on the local device. +message WifiHotspotStaUsableChannels { + repeated int32 channels = 1 [packed = true]; +} + +// LocationHint is used to specify a location as well as format. +message LocationHint { + // Location is the location, provided in the format specified by format. + optional string location = 1; + + // the format of location. + optional LocationStandard.Format format = 2; +} + +message LocationStandard { + enum Format { + UNKNOWN = 0; + // E164 country codes: + // https://en.wikipedia.org/wiki/List_of_country_calling_codes + // e.g. +1 for USA + E164_CALLING = 1; + + // ISO 3166-1 alpha-2 country codes: + // https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2 + ISO_3166_1_ALPHA_2 = 2; + } +} + +// Device capability for OS information. +message OsInfo { + enum OsType { + UNKNOWN_OS_TYPE = 0; + ANDROID = 1; + CHROME_OS = 2; + WINDOWS = 3; + APPLE = 4; + LINUX = 100; // g3 test environment + } + + optional OsType type = 1; +} diff --git a/NearDrop/ProtobufSource/securegcm.proto b/NearDrop/ProtobufSource/securegcm.proto new file mode 100644 index 0000000..0325f06 --- /dev/null +++ b/NearDrop/ProtobufSource/securegcm.proto @@ -0,0 +1,308 @@ +// Copyright 2020 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +syntax = "proto2"; + +package securegcm; + +option optimize_for = LITE_RUNTIME; +option java_package = "com.google.security.cryptauth.lib.securegcm"; +option java_outer_classname = "SecureGcmProto"; +option objc_class_prefix = "SGCM"; + +// Message used only during enrollment +// Field numbers should be kept in sync with DeviceInfo in: +// java/com/google/security/cryptauth/backend/services/common/common.proto +message GcmDeviceInfo { + // This field's name does not match the one in DeviceInfo for legacy reasons. + // Consider using long_device_id and device_type instead when enrolling + // non-android devices. + optional fixed64 android_device_id = 1; + + // Used for device_address of DeviceInfo field 2, but for GCM capable devices. + optional bytes gcm_registration_id = 102; + + // Used for device_address of DeviceInfo field 2, but for iOS devices. + optional bytes apn_registration_id = 202; + + // Does the user have notifications enabled for the given device address. + optional bool notification_enabled = 203 [default = true]; + + // Used for device_address of DeviceInfo field 2, a Bluetooth Mac address for + // the device (e.g., to be used with EasyUnlock) + optional string bluetooth_mac_address = 302; + + // SHA-256 hash of the device master key (from the key exchange). + // Differs from DeviceInfo field 3, which contains the actual master key. + optional bytes device_master_key_hash = 103; + + // A SecureMessage.EcP256PublicKey + required bytes user_public_key = 4; + + // device's model name + // (e.g., an android.os.Build.MODEL or UIDevice.model) + optional string device_model = 7; + + // device's locale + optional string locale = 8; + + // The handle for user_public_key (and implicitly, a master key) + optional bytes key_handle = 9; + + // The initial counter value for the device, sent by the device + optional int64 counter = 12 [default = 0]; + + // The Operating System version on the device + // (e.g., an android.os.Build.DISPLAY or UIDevice.systemVersion) + optional string device_os_version = 13; + + // The Operating System version number on the device + // (e.g., an android.os.Build.VERSION.SDK_INT) + optional int64 device_os_version_code = 14; + + // The Operating System release on the device + // (e.g., an android.os.Build.VERSION.RELEASE) + optional string device_os_release = 15; + + // The Operating System codename on the device + // (e.g., an android.os.Build.VERSION.CODENAME or UIDevice.systemName) + optional string device_os_codename = 16; + + // The software version running on the device + // (e.g., Authenticator app version string) + optional string device_software_version = 17; + + // The software version number running on the device + // (e.g., Authenticator app version code) + optional int64 device_software_version_code = 18; + + // Software package information if applicable + // (e.g., com.google.android.apps.authenticator2) + optional string device_software_package = 19; + + // Size of the display in thousandths of an inch (e.g., 7000 mils = 7 in) + optional int32 device_display_diagonal_mils = 22; + + // For Authzen capable devices, their Authzen protocol version + optional int32 device_authzen_version = 24; + + // Not all devices have device identifiers that fit in 64 bits. + optional bytes long_device_id = 29; + + // The device manufacturer name + // (e.g., android.os.Build.MANUFACTURER) + optional string device_manufacturer = 31; + + // Used to indicate which type of device this is. + optional DeviceType device_type = 32 [default = ANDROID]; + + // Fields corresponding to screenlock type/features and hardware features + // should be numbered in the 400 range. + + // Is this device using a secure screenlock (e.g., pattern or pin unlock) + optional bool using_secure_screenlock = 400 [default = false]; + + // Is auto-unlocking the screenlock (e.g., when at "home") supported? + optional bool auto_unlock_screenlock_supported = 401 [default = false]; + + // Is auto-unlocking the screenlock (e.g., when at "home") enabled? + optional bool auto_unlock_screenlock_enabled = 402 [default = false]; + + // Does the device have a Bluetooth (classic) radio? + optional bool bluetooth_radio_supported = 403 [default = false]; + + // Is the Bluetooth (classic) radio on? + optional bool bluetooth_radio_enabled = 404 [default = false]; + + // Does the device hardware support a mobile data connection? + optional bool mobile_data_supported = 405 [default = false]; + + // Does the device support tethering? + optional bool tethering_supported = 406 [default = false]; + + // Does the device have a BLE radio? + optional bool ble_radio_supported = 407 [default = false]; + + // Is the device a "Pixel Experience" Android device? + optional bool pixel_experience = 408 [default = false]; + + // Is the device running in the ARC++ container on a chromebook? + optional bool arc_plus_plus = 409 [default = false]; + + // Is the value set in |using_secure_screenlock| reliable? On some Android + // devices, the platform API to get the screenlock state is not trustworthy. + // See b/32212161. + optional bool is_screenlock_state_flaky = 410 [default = false]; + + // A list of multi-device software features supported by the device. + repeated SoftwareFeature supported_software_features = 411; + + // A list of multi-device software features currently enabled (active) on the + // device. + repeated SoftwareFeature enabled_software_features = 412; + + // The enrollment session id this is sent with + optional bytes enrollment_session_id = 1000; + + // A copy of the user's OAuth token + optional string oauth_token = 1001; +} + +// This enum is used by iOS devices as values for device_display_diagonal_mils +// in GcmDeviceInfo. There is no good way to calculate it on those devices. +enum AppleDeviceDiagonalMils { + // This is the mils diagonal on an iPhone 5. + APPLE_PHONE = 4000; + // This is the mils diagonal on an iPad mini. + APPLE_PAD = 7900; +} + +// This should be kept in sync with DeviceType in: +// java/com/google/security/cryptauth/backend/services/common/common_enums.proto +enum DeviceType { + UNKNOWN = 0; + ANDROID = 1; + CHROME = 2; + IOS = 3; + BROWSER = 4; + OSX = 5; +} + +// MultiDevice features which may be supported and enabled on a device. See +enum SoftwareFeature { + UNKNOWN_FEATURE = 0; + BETTER_TOGETHER_HOST = 1; + BETTER_TOGETHER_CLIENT = 2; + EASY_UNLOCK_HOST = 3; + EASY_UNLOCK_CLIENT = 4; + MAGIC_TETHER_HOST = 5; + MAGIC_TETHER_CLIENT = 6; + SMS_CONNECT_HOST = 7; + SMS_CONNECT_CLIENT = 8; +} + +// A list of "reasons" that can be provided for calling server-side APIs. +// This is particularly important for calls that can be triggered by different +// kinds of events. Please try to keep reasons as generic as possible, so that +// codes can be re-used by various callers in a sensible fashion. +enum InvocationReason { + REASON_UNKNOWN = 0; + // First run of the software package invoking this call + REASON_INITIALIZATION = 1; + // Ordinary periodic actions (e.g. monthly master key rotation) + REASON_PERIODIC = 2; + // Slow-cycle periodic action (e.g. yearly keypair rotation???) + REASON_SLOW_PERIODIC = 3; + // Fast-cycle periodic action (e.g. daily sync for Smart Lock users) + REASON_FAST_PERIODIC = 4; + // Expired state (e.g. expired credentials, or cached entries) was detected + REASON_EXPIRATION = 5; + // An unexpected protocol failure occurred (so attempting to repair state) + REASON_FAILURE_RECOVERY = 6; + // A new account has been added to the device + REASON_NEW_ACCOUNT = 7; + // An existing account on the device has been changed + REASON_CHANGED_ACCOUNT = 8; + // The user toggled the state of a feature (e.g. Smart Lock enabled via BT) + REASON_FEATURE_TOGGLED = 9; + // A "push" from the server caused this action (e.g. a sync tickle) + REASON_SERVER_INITIATED = 10; + // A local address change triggered this (e.g. GCM registration id changed) + REASON_ADDRESS_CHANGE = 11; + // A software update has triggered this + REASON_SOFTWARE_UPDATE = 12; + // A manual action by the user triggered this (e.g. commands sent via adb) + REASON_MANUAL = 13; + // A custom key has been invalidated on the device (e.g. screen lock is + // disabled). + REASON_CUSTOM_KEY_INVALIDATION = 14; + // Periodic action triggered by auth_proximity + REASON_PROXIMITY_PERIODIC = 15; +} + +enum Type { + ENROLLMENT = 0; + TICKLE = 1; + TX_REQUEST = 2; + TX_REPLY = 3; + TX_SYNC_REQUEST = 4; + TX_SYNC_RESPONSE = 5; + TX_PING = 6; + DEVICE_INFO_UPDATE = 7; + TX_CANCEL_REQUEST = 8; + + // DEPRECATED (can be re-used after Aug 2015) + PROXIMITYAUTH_PAIRING = 10; + + // The kind of identity assertion generated by a "GCM V1" device (i.e., + // an Android phone that has registered with us a public and a symmetric + // key) + GCMV1_IDENTITY_ASSERTION = 11; + + // Device-to-device communications are protected by an unauthenticated + // Diffie-Hellman exchange. The InitiatorHello message is simply the + // initiator's public DH key, and is not encoded as a SecureMessage, so + // it doesn't have a tag. + // The ResponderHello message (which is sent by the responder + // to the initiator), on the other hand, carries a payload that is protected + // by the derived shared key. It also contains the responder's + // public DH key. ResponderHelloAndPayload messages have the + // DEVICE_TO_DEVICE_RESPONDER_HELLO tag. + DEVICE_TO_DEVICE_RESPONDER_HELLO_PAYLOAD = 12; + + // Device-to-device communications are protected by an unauthenticated + // Diffie-Hellman exchange. Once the initiator and responder + // agree on a shared key (through Diffie-Hellman), they will use messages + // tagged with DEVICE_TO_DEVICE_MESSAGE to exchange data. + DEVICE_TO_DEVICE_MESSAGE = 13; + + // Notification to let a device know it should contact a nearby device. + DEVICE_PROXIMITY_CALLBACK = 14; + + // Device-to-device communications are protected by an unauthenticated + // Diffie-Hellman exchange. During device-to-device authentication, the first + // message from initiator (the challenge) is signed and put into the payload + // of the message sent back to the initiator. + UNLOCK_KEY_SIGNED_CHALLENGE = 15; + + // Specialty (corp only) features + LOGIN_NOTIFICATION = 101; +} + +message GcmMetadata { + required Type type = 1; + optional int32 version = 2 [default = 0]; +} + +message Tickle { + // Time after which this tickle should expire + optional fixed64 expiry_time = 1; +} + +message LoginNotificationInfo { + // Time at which the server received the login notification request. + optional fixed64 creation_time = 2; + + // Must correspond to user_id in LoginNotificationRequest, if set. + optional string email = 3; + + // Host where the user's credentials were used to login, if meaningful. + optional string host = 4; + + // Location from where the user's credentials were used, if meaningful. + optional string source = 5; + + // Type of login, e.g. ssh, gnome-screensaver, or web. + optional string event_type = 6; +} diff --git a/NearDrop/ProtobufSource/securemessage.proto b/NearDrop/ProtobufSource/securemessage.proto new file mode 100644 index 0000000..5118d35 --- /dev/null +++ b/NearDrop/ProtobufSource/securemessage.proto @@ -0,0 +1,126 @@ +// Copyright 2020 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Proto definitions for SecureMessage format + +syntax = "proto2"; + +package securemessage; + +option optimize_for = LITE_RUNTIME; +option java_package = "com.google.security.cryptauth.lib.securemessage"; +option java_outer_classname = "SecureMessageProto"; +option objc_class_prefix = "SMSG"; + +message SecureMessage { + // Must contain a HeaderAndBody message + required bytes header_and_body = 1; + // Signature of header_and_body + required bytes signature = 2; +} + +// Supported "signature" schemes (both symmetric key and public key based) +enum SigScheme { + HMAC_SHA256 = 1; + ECDSA_P256_SHA256 = 2; + // Not recommended -- use ECDSA_P256_SHA256 instead + RSA2048_SHA256 = 3; +} + +// Supported encryption schemes +enum EncScheme { + // No encryption + NONE = 1; + AES_256_CBC = 2; +} + +message Header { + required SigScheme signature_scheme = 1; + required EncScheme encryption_scheme = 2; + // Identifies the verification key + optional bytes verification_key_id = 3; + // Identifies the decryption key + optional bytes decryption_key_id = 4; + // Encryption may use an IV + optional bytes iv = 5; + // Arbitrary per-protocol public data, to be sent with the plain-text header + optional bytes public_metadata = 6; + // The length of some associated data this is not sent in this SecureMessage, + // but which will be bound to the signature. + optional uint32 associated_data_length = 7 [default = 0]; +} + +message HeaderAndBody { + // Public data about this message (to be bound in the signature) + required Header header = 1; + // Payload data + required bytes body = 2; +} + +// Must be kept wire-format compatible with HeaderAndBody. Provides the +// SecureMessage code with a consistent wire-format representation that +// remains stable irrespective of protobuf implementation choices. This +// low-level representation of a HeaderAndBody should not be used by +// any code outside of the SecureMessage library implementation/tests. +message HeaderAndBodyInternal { + // A raw (wire-format) byte encoding of a Header, suitable for hashing + required bytes header = 1; + // Payload data + required bytes body = 2; +} + +// ------- +// The remainder of the messages defined here are provided only for +// convenience. They are not needed for SecureMessage proper, but are +// commonly useful wherever SecureMessage might be applied. +// ------- + +// A list of supported public key types +enum PublicKeyType { + EC_P256 = 1; + RSA2048 = 2; + // 2048-bit MODP group 14, from RFC 3526 + DH2048_MODP = 3; +} + +// A convenience proto for encoding NIST P-256 elliptic curve public keys +message EcP256PublicKey { + // x and y are encoded in big-endian two's complement (slightly wasteful) + // Client MUST verify (x,y) is a valid point on NIST P256 + required bytes x = 1; + required bytes y = 2; +} + +// A convenience proto for encoding RSA public keys with small exponents +message SimpleRsaPublicKey { + // Encoded in big-endian two's complement + required bytes n = 1; + optional int32 e = 2 [default = 65537]; +} + +// A convenience proto for encoding Diffie-Hellman public keys, +// for use only when Elliptic Curve based key exchanges are not possible. +// (Note that the group parameters must be specified separately) +message DhPublicKey { + // Big-endian two's complement encoded group element + required bytes y = 1; +} + +message GenericPublicKey { + required PublicKeyType type = 1; + optional EcP256PublicKey ec_p256_public_key = 2; + optional SimpleRsaPublicKey rsa2048_public_key = 3; + // Use only as a last resort + optional DhPublicKey dh2048_public_key = 4; +} diff --git a/NearDrop/ProtobufSource/ukey.proto b/NearDrop/ProtobufSource/ukey.proto new file mode 100644 index 0000000..327d8d3 --- /dev/null +++ b/NearDrop/ProtobufSource/ukey.proto @@ -0,0 +1,105 @@ +// Copyright 2020 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +syntax = "proto2"; + +package securegcm; + +option optimize_for = LITE_RUNTIME; +option java_package = "com.google.security.cryptauth.lib.securegcm"; +option java_outer_classname = "UkeyProto"; + +message Ukey2Message { + enum Type { + UNKNOWN_DO_NOT_USE = 0; + ALERT = 1; + CLIENT_INIT = 2; + SERVER_INIT = 3; + CLIENT_FINISH = 4; + } + + optional Type message_type = 1; // Identifies message type + optional bytes message_data = 2; // Actual message, to be parsed according to + // message_type +} + +message Ukey2Alert { + enum AlertType { + // Framing errors + BAD_MESSAGE = 1; // The message could not be deserialized + BAD_MESSAGE_TYPE = 2; // message_type has an undefined value + INCORRECT_MESSAGE = 3; // message_type received does not correspond to + // expected type at this stage of the protocol + BAD_MESSAGE_DATA = 4; // Could not deserialize message_data as per + // value inmessage_type + + // ClientInit and ServerInit errors + BAD_VERSION = 100; // version is invalid; server cannot find + // suitable version to speak with client. + BAD_RANDOM = 101; // Random data is missing or of incorrect + // length + BAD_HANDSHAKE_CIPHER = 102; // No suitable handshake ciphers were found + BAD_NEXT_PROTOCOL = 103; // The next protocol is missing, unknown, or + // unsupported + BAD_PUBLIC_KEY = 104; // The public key could not be parsed + + // Other errors + INTERNAL_ERROR = 200; // An internal error has occurred. error_message + // may contain additional details for logging + // and debugging. + } + + optional AlertType type = 1; + optional string error_message = 2; +} + +enum Ukey2HandshakeCipher { + RESERVED = 0; + P256_SHA512 = 100; // NIST P-256 used for ECDH, SHA512 used for + // commitment + CURVE25519_SHA512 = 200; // Curve 25519 used for ECDH, SHA512 used for + // commitment +} + +message Ukey2ClientInit { + optional int32 version = 1; // highest supported version for rollback + // protection + optional bytes random = 2; // random bytes for replay/reuse protection + + // One commitment (hash of ClientFinished containing public key) per supported + // cipher + message CipherCommitment { + optional Ukey2HandshakeCipher handshake_cipher = 1; + optional bytes commitment = 2; + } + repeated CipherCommitment cipher_commitments = 3; + + // Next protocol that the client wants to speak. + optional string next_protocol = 4; +} + +message Ukey2ServerInit { + optional int32 version = 1; // highest supported version for rollback + // protection + optional bytes random = 2; // random bytes for replay/reuse protection + + // Selected Cipher and corresponding public key + optional Ukey2HandshakeCipher handshake_cipher = 3; + optional bytes public_key = 4; +} + +message Ukey2ClientFinished { + optional bytes public_key = 1; // public key matching selected handshake + // cipher +} diff --git a/NearDrop/ProtobufSource/wire_format.proto b/NearDrop/ProtobufSource/wire_format.proto new file mode 100644 index 0000000..6853e22 --- /dev/null +++ b/NearDrop/ProtobufSource/wire_format.proto @@ -0,0 +1,236 @@ +// Copyright 2020 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Brought from: //depot/google3/location/nearby/sharing/proto/wire_format.proto +// At CL 317565061 + +syntax = "proto2"; + +package sharing.nearby; + +// Required in Chrome. +option optimize_for = LITE_RUNTIME; + +// File metadata. Does not include the actual bytes of the file. +// NEXT_ID=6 +message FileMetadata { + enum Type { + UNKNOWN = 0; + IMAGE = 1; + VIDEO = 2; + APP = 3; + AUDIO = 4; + } + + // The human readable name of this file (eg. 'Cookbook.pdf'). + optional string name = 1; + + // The type of file (eg. 'IMAGE' from 'dog.jpg'). Specifying a type helps + // provide a richer experience on the receiving side. + optional Type type = 2 [default = UNKNOWN]; + + // The FILE payload id that will be sent as a follow up containing the actual + // bytes of the file. + optional int64 payload_id = 3; + + // The total size of the file. + optional int64 size = 4; + + // The mimeType of file (eg. 'image/jpeg' from 'dog.jpg'). Specifying a + // mimeType helps provide a richer experience on receiving side. + optional string mime_type = 5 [default = "application/octet-stream"]; + + // A uuid for the attachment. Should be unique across all attachments. + optional int64 id = 6; +} + +// NEXT_ID=5 +message TextMetadata { + enum Type { + UNKNOWN = 0; + TEXT = 1; + // Open with browsers. + URL = 2; + // Open with map apps. + ADDRESS = 3; + // Dial. + PHONE_NUMBER = 4; + } + + // The title of the text content. + optional string text_title = 2; + + // The type of text (phone number, url, address, or plain text). + optional Type type = 3 [default = UNKNOWN]; + + // The BYTE payload id that will be sent as a follow up containing the actual + // bytes of the text. + optional int64 payload_id = 4; + + // The size of the text content. + optional int64 size = 5; + + // A uuid for the attachment. Should be unique across all attachments. + optional int64 id = 6; +} + +// NEXT_ID=5 +message WifiCredentialsMetadata { + enum SecurityType { + UNKNOWN_SECURITY_TYPE = 0; + OPEN = 1; + WPA_PSK = 2; + WEP = 3; + } + + // The Wifi network name. This will be sent in introduction. + optional string ssid = 2; + + // The security type of network (OPEN, WPA_PSK, WEP). + optional SecurityType security_type = 3 [default = UNKNOWN_SECURITY_TYPE]; + + // The BYTE payload id that will be sent as a follow up containing the + // password. + optional int64 payload_id = 4; + + // A uuid for the attachment. Should be unique across all attachments. + optional int64 id = 5; +} + +// A frame used when sending messages over the wire. +// NEXT_ID=3 +message Frame { + enum Version { + UNKNOWN_VERSION = 0; + V1 = 1; + } + optional Version version = 1; + + // Right now there's only 1 version, but if there are more, exactly one of + // the following fields will be set. + optional V1Frame v1 = 2; +} + +// NEXT_ID=7 +message V1Frame { + enum FrameType { + UNKNOWN_FRAME_TYPE = 0; + INTRODUCTION = 1; + RESPONSE = 2; + PAIRED_KEY_ENCRYPTION = 3; + PAIRED_KEY_RESULT = 4; + CERTIFICATE_INFO = 5; + CANCEL = 6; + } + + optional FrameType type = 1; + + // Exactly one of the following fields will be set. + optional IntroductionFrame introduction = 2; + optional ConnectionResponseFrame connection_response = 3; + optional PairedKeyEncryptionFrame paired_key_encryption = 4; + optional PairedKeyResultFrame paired_key_result = 5; + optional CertificateInfoFrame certificate_info = 6; +} + +// An introduction packet sent by the sending side. Contains a list of files +// they'd like to share. +// NEXT_ID=4 +message IntroductionFrame { + repeated FileMetadata file_metadata = 1; + repeated TextMetadata text_metadata = 2; + // The required app package to open the content. May be null. + optional string required_package = 3; + repeated WifiCredentialsMetadata wifi_credentials_metadata = 4; +} + +// A response packet sent by the receiving side. Accepts or rejects the list of +// files. +// NEXT_ID=2 +message ConnectionResponseFrame { + enum Status { + UNKNOWN = 0; + ACCEPT = 1; + REJECT = 2; + NOT_ENOUGH_SPACE = 3; + UNSUPPORTED_ATTACHMENT_TYPE = 4; + TIMED_OUT = 5; + } + + // The receiving side's response. + optional Status status = 1; +} + +// A paired key encryption packet sent between devices, contains signed data. +// NEXT_ID=3 +message PairedKeyEncryptionFrame { + // The encrypted data in byte array format. + optional bytes signed_data = 1; + + // The hash of a certificate id. + optional bytes secret_id_hash = 2; + + // An optional encrypted data in byte array format. + optional bytes optional_signed_data = 3; +} + +// A paired key verification result packet sent between devices. +// NEXT_ID=2 +message PairedKeyResultFrame { + enum Status { + UNKNOWN = 0; + SUCCESS = 1; + FAIL = 2; + UNABLE = 3; + } + + // The verification result. + optional Status status = 1; +} + +// A package containing certificate info to be shared to remote device offline. +// NEXT_ID=2 +message CertificateInfoFrame { + // The public certificates to be shared with remote devices. + repeated PublicCertificate public_certificate = 1; +} + +// A public certificate from the local device. +// NEXT_ID=8 +message PublicCertificate { + // The unique id of the public certificate. + optional bytes secret_id = 1; + + // A bytes representation of a Secret Key owned by contact, to decrypt the + // metadata_key stored within the advertisement. + optional bytes authenticity_key = 2; + + // A bytes representation a public key of X509Certificate, owned by contact, + // to decrypt encrypted UKEY2 (from Nearby Connections API) as a hand shake in + // contact verification phase. + optional bytes public_key = 3; + + // The time in millis from epoch when this certificate becomes effective. + optional int64 start_time = 4; + + // The time in millis from epoch when this certificate expires. + optional int64 end_time = 5; + + // The encrypted metadata in bytes, contains personal information of the + // device/user who created this certificate. Needs to be decrypted into bytes, + // and converted back to EncryptedMetadata object to access fields. + optional bytes encrypted_metadata_bytes = 6; + + // The tag for verifying metadata_encryption_key. + optional bytes metadata_encryption_key_tag = 7; +} + +// NEXT_ID=3 +message WifiCredentials { + // Wi-Fi password. + optional string password = 1; + // True if the network is a hidden network that is not broadcasting its SSID. + // Default is false. + optional bool hidden_ssid = 2 [default = false]; +} \ No newline at end of file diff --git a/NearDrop/ru.lproj/Localizable.strings b/NearDrop/ru.lproj/Localizable.strings new file mode 100644 index 0000000000000000000000000000000000000000..c943dae4d10b2aec3b8ec01329bee57ba0cb9e35 GIT binary patch literal 1656 zcmcJQO;5r=5QgWlCy!k8A~ua&I7n$A;jcQIAeNVc z9EmF}-ZCb-;tekGCWk9$CNve(G(B@=?u{#To;~6phg~~j-LcGn$l}$rtXea56F^W& zoj~ehU*6BocQ*+w5U6{OFgI_YcuYwua*hYthphlMe^&x zqw~lrtD0)Id#SlC$=0`&TS&Er=Ku1klB#F`Z-Aa&N_1LTE)M)Vw_3>&YgcVe_?F?j zeh*)hee1F|s%Q_1YoRZ<@TKkg2YF-tWG6ai-##u5t#7m&Y4@8_t80mD7FSTFQ-cHE zKcwb1^2~~Bi5(Q{atfPvh!ULIv9wbtqdF(!(cK9yn a9(K(2I}q<6180e&v8UH8`|PB=cl#Hvi1X?I literal 0 HcmV?d00001 diff --git a/NearDrop/ru.lproj/Localizable.stringsdict b/NearDrop/ru.lproj/Localizable.stringsdict new file mode 100644 index 0000000..2cdb428 --- /dev/null +++ b/NearDrop/ru.lproj/Localizable.stringsdict @@ -0,0 +1,26 @@ + + + + + NFiles + + NSStringLocalizedFormatKey + %#@files@ + files + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + d + one + %d файл + few + %d файла + many + %d файлов + other + %d файлов + + + + diff --git a/PROTOCOL.md b/PROTOCOL.md new file mode 100644 index 0000000..38728ec --- /dev/null +++ b/PROTOCOL.md @@ -0,0 +1,196 @@ +# Google's Nearby Share protocol + +This document describes the Nearby Share protocol as understood by me (@grishka) from Chromium sources (that are way too convoluted) and decompiled Google Services Framework apk (that, despite being a decompilation of obfuscated code, is still more helpful than Chromium sources). + +The protocol is peer-to-peer, end-to-end encrypted. Overall, it appears like it was mostly designed to run over an unreliable medium like UDP, but I've only observed it over TCP. + +Only the WiFi LAN protocol is described here because that's what I reverse engineered, but the data running over other mediums (Bluetooth, WiFi Direct, ...) is most probably largely the same. + +If you want to build your own Nearby Share *thing*, you will need: + +1. An implementation of multicast DNS (most modern OSes have it built-in) +2. A cryptography library that is capable of ECDSA key exchange, AES-CBC, HMAC, and SHA256. OpenSSL will do but is definitely an overkill. +3. A Protobuf library +4. [These Protobuf files](/NearDrop/ProtobufSource) I collected from the Chromium sources so you don't have to + +It is also very helpful to read logcat on your Android device if you're having any trouble. The logging of the Android implementation of Nearby Share is very verbose. + +### Device roles + +Since a file transfer is unidirectional, the peers are assigned roles: + +* The receiving side is the **server**. It listens on a TCP port and advertises an MDNS service. +* The sending side is the **client**. It discovers the MDNS service and connects to the server's TCP port. + +### How devices find each other + +To become visible in the sheet on Android devices, a *server* advertises an MDNS service. The **domain** is empty. The **type** is `_FC9F5ED42C8A._tcp.`. The **port** is an arbitrary TCP port on which the server accepts incoming connections. + +The **name** is the following 10 bytes encoded in URL-safe base64: + +* `0x23`, Google calls this "PCP" but I have no idea what it is +* 4-byte **endpoint ID** +* 3-byte **service ID**: `0xFC, 0x9F, 0x5E` +* 2 zero bytes that serve an unknown purpose + +The **endpoint ID** is 4 random alphanumeric characters. It identifies devices to each other. Android uses it in its logs quite extensively. + +The service also needs to have a TXT record with key `n` and the value of the following encoded in URL-safe base64 ("endpoint info"): + +* 1 byte: bit field + * 3 bits: version, set to 0 + * 1 bit: visibility, 0 = visible + * 3 bits: device type. Android uses this to pick an icon. 0 = unknown, 1 = phone, 2 = tablet, 3 = laptop + * 1 bit: reserved, set to 0 +* 16 bytes of unknown purpose. I set them to random. +* User-visible device name in UTF-8, prefixed with 1-byte length. + +Android does not advertise the MDNS service all the time regardless of the visibility setting. It waits for some kind of signal to start it and also show the "A device nearby is sharing" notification. As of now, it is unknown what exactly is it that it's waiting for. Probably a broadcast packet of some kind over either WiFi or Bluetooth. + +The service ID (FC9F...) comes from SHA256("NearbySharing") = `fc9f5ed42c8a5e9e94684076ef3bf938a809c60ad354992b0435aebbdc58b97b`. + +### High-level diagram + +```mermaid +sequenceDiagram + Client-->>Server: (Connects to advertised TCP port) + Client->>Server: Connection request + Client->>Server: UKEY2 ClientInit + Server->>Client: UKEY2 ServerInit + Client->>Server: UKEY2 ClientFinish + Client->>Server: Connection response + Note over Server, Client: All following packets are encrypted + Server->>Client: Paired key encryption + Client->>Server: Paired key encryption + Server->>Client: Paired key result + Client->>Server: Paired key result + Client->>Server: Introduction (transfer metadata) + Note over Server: Asks the user + Server->>Client: Response (accept/reject) + Client->>Server: File chunks + Client-->>Server: + Client-->>Server: + Client->>Server: Disconnection + Client-->Server: (Close TCP connection) +``` + +From the Google point of view, the "Nearby connections" part is a separate universal transport layer, over which the "Share" runs. This may explain some bizarre arrangements where you have protobuf inside protobuf inside encrypted protobuf inside protobuf. + +### Frame/packet/message types + +There are three types of packets that can appear directly ~~on the wire~~ in the air: + +1. **Offline frames.** These are the basic uint of the nearby protocol. They are used to control the connection. +2. **UKEY2 messages.** These are used for the encryption key exchange (UKEY2 is Google's bespoke algorithm for that). +3. **Secure messages.** These are used exclusively after the initial negotiation and carry other packets inside them in the encrypted form. + +Keep the protobuf files open to follow along. + +### TCP framing + +Each protobuf message sent over the TCP connection is prefixed with 4-byte big-endian (MSB first) length. + +### Initial handshake & key exchange + +(described from the server/recipient point of view) + +After the client connects to the server, it sends two packets: a "connection request" and a "UKEY2 client init". + +#### Connection request + +This is a subtype of "offline frame". +The client wants to connect to the server and tells it about itself. The only field of interest here is `endpointInfo`. It contains the device type and name. It has the same format as the `n` TXT record described above, just without the base64 encoding. + +#### UKEY2 client init + +This is a subtype of "UKEY2 message". Google's UKEY2 reference implementation [is open source](https://github.com/google/ukey2) and comes with documentation. Please refer to that repo for details on the key exchange. +This is the initial step of the key exchange for end-to-end encryption. Upon receiving this, the server generates a ECDSA key pair and sends its public key in a "server init". The server also needs to remember the raw serialized client init message for the final key derivation step. The outgoing server init message is also needed for the next step. The bytes include the entire protobuf message but do not include the int32 length prefix. + +After receiving the server init, the client completes the key derivation and sends a "client finish", containing its public key. + +#### UKEY2 client finish + +This is where the server completes the key derivation. This step is described in detail [in the Google readme](https://github.com/google/ukey2#deriving-the-authentication-string-and-the-next-protocol-secret). + +The result of the key exchange is two values: the authentication string and the next protocol secret. + +The **next protocol secret** is further processed to obtain the two 32-byte AES and two 32-byte HMAC keys used for encryption and authentication of further communications ([relevant Chromium code](https://source.chromium.org/chromium/chromium/src/+/main:third_party/securemessage/src/cpp/src/securemessage/crypto_ops.cc) and [this as well](https://source.chromium.org/chromium/chromium/src/+/refs/heads/main:third_party/ukey2/src/src/main/cpp/src/securegcm/d2d_crypto_ops.cc)): + +Derive two 32-byte "device to device" keys using HKDF-SHA256: + +* **D2D client key**, using the **next protocol secret** for input key material, `82AA55A0D397F88346CA1CEE8D3909B95F13FA7DEB1D4AB38376B8256DA85510` for salt, and the string `client` for info +* **D2D cerver key**, using the same parameters, except **info** is `server` + +Next, derive the four keys you will use for the actual encryption. All four use the same value of salt, which is `SHA256("SecureMessage")`, or `BF9D2A53C63616D75DB0A7165B91C1EF73E537F2427405FA23610A4BE657642E`. These keys are from the server POV; if you're the client, they need to be swapped around (decrypt/receive shoud use the server key and vice versa). + +* **Decrypt key**: IKM = D2D client key, info = `ENC:2` +* **Receive HMAC key**: IKM = D2D client key, info = `SIG:1` +* **Encrypt key**: IKM = D2D server key, info = `ENC:2` +* **Send HMAC key**: IKM = D2D server key, info = `SIG:1` + +The key exchange is now complete. + +The **authentication string** is used for out-of-band key verification. Nearby Share doesn't use the algorithm specified by UKEY2. Instead, a 4-digit PIN code is generated using [this algorithm](https://source.chromium.org/chromium/chromium/src/+/main:chrome/browser/nearby_sharing/nearby_sharing_service_impl.cc;l=215-230;drc=9468ba955b5794fdfaa7301fce4fb70940830c88). + +#### Connection response + +After the key exchange is complete, the client sends one last plaintext message to the server: a connection response. It's a subtype of offline frame saying that the client has accepted the connection (the connection it itself initiated... whatever). All the following communication is encrypted and wrapped in the payload layer. + +### The encryption layer + +The message type on the wire is always the "secure message". A secure message has two fields: header and body, and the signature. + +Header and body is a serialized `HeaderAndBody` message. Inside, there are two fields, that are (what a surprise!) header and body. The body contains the encrypted payload. The header contains the encryption scheme (must be set to `AES256_CBC`), the signature scheme (must be set to `HMAC_SHA256`), the IV (initialization vector) for AES-CBC consisting of 16 random bytes, and the public metadata. Public metadata is needed because the protocol is extensible af. It contains two fields with constant values: version that is always 1 and type that is always `DEVICE_TO_DEVICE_MESSAGE`. + +The signature is a HMAC-SHA256 of the header-and-body fields using one of the keys derived above. + +The body inside header-and-body is encrypted using AES-CBC with PKCS7 padding. After decryption it should be a valid device to device message (see securegcm.proto). If it isn't, you did something wrong. Go back and debug your key exchange code. Cryptography is messy, don't worry, no one gets it right on the first try ¯\\\_(ツ)_/¯ + +The device to device message contains a sequence number and a message. The message is always a serialized offline frame. The sequence number starts at 0 and is incremented with each message. Client and server have their own independent sequence numbers. + +### The payload layer + +![yo dawg, I heard you like protobuf...](/images/YoDawg.jpg) + +This layer allows the transfer of arbitrarily large payloads in chunks. Payloads come in two types: bytes and files. All negotiation uses bytes payloads with protobuf messages inside. The file payloads are used for actual files. + +Payload transfer frames are wrapped into offline frames of type `PAYLOAD_TRANSFER`. These are then encrypted as described above. Meaning of the important payload transfer frame fields is as follows: + +* **header**: the metadata + * **id**: the payload identifier within the connection. Allows transferring multiple payloads in parallel. You use it to keep track of multiple transfers, associate buffers and files to it, etc. + * **type**: either `BYTES` or `FILE` + * **totalSize**: self-explanatory +* **chunk**: the data itself + * **offset**: the offset at which this chunk needs to be written into the buffer or file + * **flags**: if `LAST_CHUNK` (bit 0) is set, the transfer is complete and this is the last chunk + * **body**: the data bytes themselves + +Android does this thing where it sends 2 payload transfer frames in succession for each negotiation message: the first contains the entire message, the second contains 0 bytes but has the `LAST_CHUNK` flag set. I replicated this behavior in NearDrop. + +### The "paired key encryption", whatever that is + +The client and the server send each other a "paired key encryption" frame, wrapped into the payload layer. *Presumably*, this is used for all the visibility-restriction phone number stuff. Also presumably getting the data contained within involves talking to Google servers. I set `secretIDHash` to 6 random bytes and `signedData` to 72 random bytes in the ones I send. It works fine. + +After that, the client and the server send each other a "paired key result" frame. Both have `status` set to `UNABLE`. Whatever. + +These and following protobuf messages are specific to Nearby Share and [are defined here](/NearDrop/ProtobufSource/wire_format.proto). + +### The transfer metadata aka introduction + +After the successful exchange of the meaningless paired key encryption frames, the client sends an "introduction" frame to the server. This contains the list of files that the client is about to send to the server. The fields should be self-explanatory. The `payload_id` will be used in the payload layer for transferring that particluar file. + +At this point, Android shows that the connection was successful and displays the PIN code. The server would prompt the user to accept the transfer. + +### The file transfer + +#### Accepting the transfer + +To accept the transfer, the server sends a "response" frame with `status` set to `ACCEPT`. The client will then start sending file chunks over the payload layer. You did it 🎉 + +#### Rejecting the transfer + +Do the same but set `status` to `REJECT`. There are also other status codes, like `NOT_ENOUGH_SPACE`, that result in Android showing a different error. + +### Keep-alive frames + +Android sends offline frames of type `KEEP_ALIVE` every 10 seconds and expects the server to do the same. If you don't, it will terminate the connection after a while thinking your app crashed or something. This especially comes into play when sending large files. No, TCP's built-in acknowledgements are not enough. There are so many abstraction layers that whoever came up with this forgot about them. diff --git a/README.md b/README.md new file mode 100644 index 0000000..ec937d3 --- /dev/null +++ b/README.md @@ -0,0 +1,28 @@ +**NearDrop** is a partial implementation of [Google's Nearby Share](https://blog.google/products/android/nearby-share/) for macOS. + +[Protocol documentation](/PROTOCOL.md) is available separately. + +The app lives in your menu bar and saves files to your downloads folder. It's that simple, really. + +## Limitations + +* **Receive only**. For now. I haven't yet figured out how to make Android turn on the MDNS service and/or show the "a device nearby is sharing" notification. +* **Wi-Fi LAN only**. Your Android device and your Mac need to be on the same network for this app to work. Google's implementation supports multiple mediums, including Wi-Fi Direct, Wi-Fi hotspot, Bluetooth, some kind of 5G peer-to-peer connection, and even a WebRTC-based protocol that goes over the internet through Google servers. Wi-Fi direct isn't supported on macOS (Apple has their own, incompatible, AWDL thing, used in AirDrop). Bluetooth needs further reverse engineering. + +## Installation + +Download the latest build from the releases section, unzip, move to your applications folder. Do the usual Gatekeeper thing to run an Apple-untrusted app for the first time. If you want the app to start on boot, add it manually to login objects in System Preferences. + +## FAQ + +#### Why is the app not notarized? + +Because I don't want to pay Apple $99 a year for the privilege of developing macOS apps and oppose their idea of security. + +#### Why is this not on the app store? + +Because I don't want to pay Apple $99 a year for the privilege of developing macOS apps. I also don't want to have to go through the review process. + +#### Why not the other way around, i.e. AirDrop on Android? + +While I am an Android developer, and I have looked into this, this is nigh-impossible. AirDrop uses [AWDL](https://stackoverflow.com/questions/19587701/what-is-awdl-apple-wireless-direct-link-and-how-does-it-work), Apple's own proprietary take on peer-to-peer Wi-Fi. This works on top of 802.11 itself, the low-level Wi-Fi protocol, and thus can not be implemented without messing around with the Wi-Fi adapter drivers and raw packets and all that. It might be possible on Android, but it would at the very least require root and possibly a custom kernel. There is [an open-source implementation of AWDL and AirDrop for Linux](https://owlink.org/code/). diff --git a/images/YoDawg.jpg b/images/YoDawg.jpg new file mode 100644 index 0000000000000000000000000000000000000000..b7e34bfe7d3814e70ec97da099054e88bfeca24e GIT binary patch literal 61303 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