GithubHelp home page GithubHelp logo

openziti / ziti-sdk-swift Goto Github PK

View Code? Open in Web Editor NEW
44.0 11.0 2.0 7.76 MB

An OpenZiti SDK for Swift

Home Page: https://docs.openziti.io/ziti-sdk-swift/

License: Apache License 2.0

Swift 90.54% C 1.64% Objective-C 5.84% Shell 1.98%
ziti-sdk swift urlprotocol objective-c nsurlprotocol ziti end-to-end-encryption zero-trust appsec netsec

ziti-sdk-swift's Introduction

Ziggy using the ziti-sdk-swift

Ziti SDK for Swift

Build Status

An SDK for accessing Ziti from macOS and iOS applications using the Swift programming language.

This SDK provides a Swift-friendly wrapper of the Ziti Tunnel C SDK, an implementation of URLProtocol for intercepting HTTP and HTTPS traffic, and examples of using the SDK in an application.

Usage

The Ziti class is the main entry point for accessing Ziti networks. An instance of Ziti requires a ZitiIdentity at time of initialization.

Use Ziti.createConnection() to create instances of ZitiConnection to ZitiConnection.dial(_:_:_:) services or ZitiConnection.listen(_:_:_:) for service connections.

Use ZitiUrlProtocol to intercept HTTP and HTTPS connections and route them over a Ziti network.

Enrollment

A ZitiIdentity is created as part of the enrollment process with a Ziti network. Ziti support enrollment using a one-time JWT supplied by your Ziti network administror.

The Ziti.enroll(_:_:) method validates the JWT is properly signed, creates a private key and stores it in the keychain, initiates a Certificate Signing Request (CSR) with the controller, and stores the resultant certificate in the keychain.

Swift

import CZiti

let jwtFile = <...>
let outFile = <...>

Ziti.enroll(jwtFile) { zid, zErr in
    guard let zid = zid else {
        fputs("Invalid enrollment response, \(String(describing: zErr))\n", stderr)
        exit(-1)
    }
    guard zid.save(outFile) else {
        fputs("Unable to save to file \(outFile)\n", stderr)
        exit(-1)
    }
    
    print("Successfully enrolled id \"\(zid.id)\" with controller \"\(zid.ztAPI)\"")
}

Objective-C

#import "CZiti-Swift.h"

NSString *jwtFile = <...>
NSString *outFile = <...>

[Ziti enroll:jwtFile : ^(ZitiIdentity *zid, ZitiError *zErr) {
    if (zErr != NULL) {
        // Handle error
        return;
    }

    if (![zid save:outFile]) {
        // Handle error
        return;
    }
}];

The identity file saved to outfile in the example code above contains information for contacting the Ziti controller and locally accessing the private key and certificate in the keychain.

Running Ziti

A typical application flow would:

  1. Check a well-known location for a stored identity file
  2. If not present, initiate an enrollment (e.g., prompt the user for location of a one-time JWT enrollment file, or scan in a QR code)
  3. When identity file is available, use it to create and run an instance of Ziti

Ziti executes on a loop, similar to Foundation's Runloop. The Ziti.run(_:) method essentially enters an infinite loop processing Ziti events, and will only exit after Ziti is shut down.

The Ziti.runAsync(_:) method is provided as a convenience to spawn a new thread and call Ziti.run(_:).

Swift

let zidFile = <...>

guard let ziti = Ziti(fromFile: zidFile) else {
    print("Unable to create Ziti identity from file \(zidFile)")
    return
}

ziti.runAsync { zErr in
    guard zErr == nil else {
        print("Unable to run Ziti: \(String(describing: zErr!))")
        return
    }
    print("Successfully initialized Ziti!")
}

Objective-C

NSString *zidFile = <...>

Ziti *ziti = [[Ziti alloc] initFromFile:[self zidFile]];
    
if (ziti != NULL) {
    [ziti runAsync: ^(ZitiError *zErr) {
        if (zErr != NULL) {
            // Handle error
            return;
        }
        [ZitiUrlProtocol register:ziti :10000];
    }];
}

To execute code on the thread running Ziti use the perform(_:) method.

Using ZitiUrlProtocol

The SDK also includes ZitiUrlProtocol, which implements a URLProtocol that interceptes HTTP and HTTPS requests for Ziti services and routes them over a Ziti network.

ZitiUrlProtocol should be instantiated as part of the Ziti.InitCallback of Ziti.run(_:) to ensure Ziti is initialized before starting to intercept services.

Swift

ziti.runAsync { zErr in
    guard zErr == nil else {
        // Handle error
        return
    }
    ZitiUrlProtocol.register(ziti)
}

Objective-C

[ziti runAsync: ^(ZitiError *zErr) {
    if (zErr != NULL) {
        // Handle error
        return;
    }
    [ZitiUrlProtocol register:ziti :10000];
}];

If using your own URLSession insteal of URLSession.shared, ZitiUrlProtocol will need to be configured in your URLSession's configuration:

    let configuration = URLSessionConfiguration.default
    configuration.protocolClasses?.insert(ZitiUrlProtocol.self, at: 0)
    urlSession = URLSession(configuration:configuration)

See also the documentation included in the CZiti module available in the Xcode Quick Help pane.

Adding CZiti as a Dependency

CZiti is built into an XCFramework (CZiti.xcframework) that includes a static library (libCZiti.a) for each platform and architecture.

Note that that CZiti is not built for Bitcode, and when building for a device the Build Settings - Build Options should set Enable Bitcode to No.

Note that CZiti depends on libresolv.9.tbd, and requires access to outbound network connections and the Apple Keychain.

Via Swift Package Manager

See ziti-sdk-swift-dist for access to CZiti.xcframework built from this repository and made available as a .binaryTarget.

Using a locally built CZiti

To exercise modifications to the CZiti framework in your application, first add the CZiti module as a dependency to your app as described above, then override the CZiti framework with a local package. See Editing a package dependency as a local package for an overview of this process.

I used the following steps to override CZiti with a local build in the ziti-tunnel-apple project:

  1. Build the CZiti framework. You may want to build for debugging:

    $ CONFIGURATION=Debug ./build_all.sh

    When complete, the build will be located in ./dist/CZiti.xcframework.

  2. Create a Package.swift for the local CZiti framework:

    cat > ./dist/Package.swift <<EOF
    // swift-tools-version: 5.7
    import PackageDescription
    
    let package = Package(
        name: "CZiti",
        platforms: [ .macOS(.v10_14), .iOS(.v13) ],
        products: [ .library( name: "CZiti", targets: ["CZiti"]) ],
        targets: [
            .binaryTarget(
                name: "CZiti",
                path: "./CZiti.xcframework")
        ]
     )
    EOF
  3. Move or copy the ./dist directory into your application's top-level source directory, renaming it to 'ziti-sdk-swift-dist'. The final directory structure should look like this:

     - YourApplication/
       - ziti-sdk-swift-dist/
         - Package.swift
         - CZiti.xcframework/
    

    The apple documentation doesn't mention this, but I was unable to get Xcode to recognize that the local package overrides the released CZiti framework unless the parent directory of the local CZiti framework was named 'ziti-sdk-swift-dist' (to match the github repo the CZiti releases come from), and local CZiti framework was in the application's directory.

  4. Add the local package to your application. This can be done by clicking "Add Local..." while adding a package dependency to your application. Select the 'ziti-sdk-swift-dist` directory in the dialog.

    You should see the CZiti entry disappear from your project's Package Dependencies in the project navigator when the local CZiti package is referenced.

Via CocoaPods

DEPECATED AS OF v0.30.11, please convert to use of Swift Package Manager

If you are using Cocoapods, update your Podfile:

target 'Some-macOS-Target'
  use_frameworks!
  platform :macos, '10.15'
  pod 'CZiti-macOS', '~> 0.1'
end

target 'SomeTarget-iOS-Target'
  use_frameworks!
  platform :ios, '13.4'
  pod 'CZiti-iOS', '~> 0.1'
end

For further information on Cocoapods, check their official documentation.

Via libCZiti.a

  • Follow the build steps below to create libCZiti.a
  • Add libCZiti.a library to your project's Frameworks and Libraries, and ensure it is listed in your project's Build Phases under Link Binary with Libraries.
  • Your Library Search Path and Swift Compiler Seatch Paths - Import Paths should include the directory containing libCZiti.a and CZiti.swiftmodule/
  • When this project is built from Xcode, the CZiti-Swift.h file is copied to $(PROJECT_ROOT)/include/$(PLATFORM) (e.g., ./include/iphoneos). CZiti-Swift.h can also be found the the DerivedSources directory under ./DerivedData following a build from either Xcode or via build_all.sh. This file is needed to use CZiti from Objective-C. Your Search Paths - Header Search Paths must include the directory containing CZiti-Swift.h.
  • Inspect the sample apps' configurations in this repository for relevant build settings for libraries and paths

Examples

This repository includes a few examples of using the library:

  • ziti-mac-enroller is a utility that will enroll an identity using a supplied one-time JWT token. It can optionally update the keychain to trust for the CA pool used by the Ziti controller
  • sample-mac-host is a command-line utility that can operate as either a client or a server for a specified Ziti server
  • sample-ios exercises ZitiUrlProtocol to intercept URLSesson requests, route them over Ziti, and display the results
  • sample-ios-objc demonstrates using Objective-C to exercise ZitiUrlProtocol

Building

Update xcconfig Settings

Create a file called Configs/workspace-settings-overrides.xcconfig and populate with appropriate values. See Configs/workplace-settings.xcconfig for all possible values.

DEVELOPMENT_TEAM = XXXXXXXXXX
ORGANIZATION_PREFIX = ...

Execute Build Script

The project depends on the Ziti Tunnel C SDK, which is built directly into the library. It is maintained as a submodule at ./deps/ziti-tunnel-sdk-c. Be sure to follow the vcpkg setup steps in deps/ziti-tunnel-sdk-c/BUILD.md. This project expects builds to be built in ./deps/ziti-tunnel-sdk-c/build-macosx-x86_64 and ./deps/ziti-tunnel-sdk-c/build-macosx-arm64 for macOS and ./deps/ziti-sdk-c/build-iphoneos-arm64 for iOS (or build-iphonesimulator-x86_64or build-iphonesimulator-arm64 for the simulator).

This project contains the buid_all.sh script that will build the project from the command-line for macosx, iphoneos, and iphonesimulator platforms.

Once the static libraries are built, the build_all.sh script executes make_dist.sh, creating an XCFramework called CZiti.xcframework, under the project's ./dist directory.

The scripts require the following executables to be on the caller's path:

  • xcodebuild used to build CZiti-* schemes in CZiti.xcodeproj, avaialble as part of your Xcode installation
  • xcpretty also used to build CZiti-* schemes in CZiti.xcodeproj. (Can be installed via gem install xcpretty)
  • cmake used for building the Ziti Tunnel C SDK dependency. (Can be installed via brew install cmake)
$ git clone --recurse-submodules https://github.com/openziti/ziti-sdk-swift.git
$ cd ziti-sdk-swift
$ /bin/sh build_all.sh

By default, the scripts build for Release configuration. To build for Debug, execute

$ CONFIGURATION=Debug /bin/sh build_all.sh

The resultant libCZiti.a and CZiti.swiftmodule are available in the appropriate sub-directory of ./DerivedData.

Getting Help

Please use these community resources for getting help.

  • Read the docs
  • Participate in discussion on Discourse
  • Use GitHub issues for tracking bugs and feature requests.

Copyright NetFoundry Inc.

ziti-sdk-swift's People

Contributors

dovholuknf avatar gajrajgchouhan avatar scareything avatar smilindave26 avatar ziti-ci avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

ziti-sdk-swift's Issues

Whether to change hosts

In an Intranet environment, MacOS and Windows need to configure hosts and resolve the hosts address before connecting to the controller and routing. Is this correct? If so, how to configure iOS and Android

[email protected] "hardcoded", I don't think I can "Build Manually"

I am not a big time git user and don't expect a git tutorial here either, but I was surprised to find that, despite getting the code anonymously with the typical https access, I wasn't able to go any further with recursively fetching your submodules, since they revert to git@github . I'm following your Build Manually instructions, sadly only up to step 3 :) I guess this raises the questions
a) did you really mean this [email protected] or you simply copied some internal guideline that is not the most typical way of doing things for public projects
b) is there some magic that can force anonymous "cloners" like me to stay off the repo, or is it some unfortunate "hardcoding" as I put it? Without delving in I'd expect this behaviour from private repos/submodules, but I don't think that's what's going on here.
Thanks!

TLS handshake error on iPhone device

The simulator is running smoothly. But I run it on iPhone and take this error
Error Domain=ZitiError Code=-53 "unexpected error"

On TLS handshake error getting a negative response code (-53)

Please help

some error after import CZiti.xcframework

Adding CZiti as a Dependency Via CocoaPods

Undefined symbols for architecture arm64:
"OBJC_CLASS$__TtC5CZiti15ZitiUrlProtocol", referenced from:
objc-class-ref in YCBusiness.o
"OBJC_CLASS$__TtC5CZiti4Ziti", referenced from:
objc-class-ref in YCBusiness.o
ld: symbol(s) not found for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)


Adding CZiti as a Dependency Via Swift Package Manager

Undefined symbols for architecture arm64:
"$s10ObjectiveC15autoreleasepool8invokingxxyKXE_tKlF", referenced from:
$s5CZiti11NetifDriverC8write_cbySis13OpaquePointerVSg_SVSgSitXCvpZfiSiAG_AHSitcfU in libCZiti.a(NetifDriver.o)
"
$s10ObjectiveC8ObjCBoolVMn", referenced from:
symbolic ____So8NSStringCAaC_____ACSgSo7NSArrayCSgIeyByyyyy_IeyByyy 5CZiti18ZitiPostureContextC 10ObjectiveC8ObjCBoolV in libCZiti.a(ZitiPostureChecks.o)
symbolic ____So8NSStringC_____ACSgSo7NSArrayCSgIeyByyyyy 5CZiti18ZitiPostureContextC 10ObjectiveC8ObjCBoolV in libCZiti.a(ZitiPostureChecks.o)
"
$s14CoreFoundation9_CFObjectMp", referenced from:
l_got.$s14CoreFoundation9_CFObjectMp in libCZiti.a(ZitiKeychain.o)
"
$s14CoreFoundation9_CFObjectPAAE2eeoiySbx_xtFZ", referenced from:
_$sSo11CFStringRefaSQSCSQ2eeoiySbx_xtFZTW in libCZiti.a(ZitiKeychain.o)
$ss22__RawDictionaryStorageC4find_9hashValues10_HashTableV6BucketV6bucket_Sb5foundtx_SitSHRzlFSo11CFStringRefa_Tg5 in libCZiti.a(ZitiKeychain.o)
"
$s14CoreFoundation9_CFObjectPAAE4hash4intoys6HasherVz_tF", referenced from:
_$ss17_NativeDictionaryV20_copyOrMoveAndResize8capacity12moveElementsySi_SbtFSo11CFStringRefa_ypTg5 in libCZiti.a(ZitiTunnel.o)
$sSo11CFStringRefaSHSCSH4hash4intoys6HasherVz_tFTW in libCZiti.a(ZitiKeychain.o)
$sSo11CFStringRefaSHSCSH13_rawHashValue4seedS2i_tFTW in libCZiti.a(ZitiKeychain.o)
$ss22__RawDictionaryStorageC4findys10_HashTableV6BucketV6bucket_Sb5foundtxSHRzlFSo11CFStringRefa_Tg5 in libCZiti.a(ZitiKeychain.o)
$ss17_NativeDictionaryV7_delete2atys10_HashTableV6BucketV_tFSo11CFStringRefa_ypTg5 in libCZiti.a(ZitiKeychain.o)
"
$s14CoreFoundation9_CFObjectPAAE9hashValueSivg", referenced from:
$sSo11CFStringRefaSHSCSH9hashValueSivgTW in libCZiti.a(ZitiKeychain.o)
"
$s14CoreFoundation9_CFObjectPSHTb", referenced from:
l_got.$s14CoreFoundation9_CFObjectPSHTb in libCZiti.a(ZitiKeychain.o)
"
$s6Darwin6stderrSpySo7__sFILEVGvg", referenced from:
$s5CZiti7ZitiLogC3log33_9F85B61D985DE98AAF711DD4475B373ALLyyAC0C5LevelO_SSs12StaticStringVAISutF in libCZiti.a(ZitiLog.o)
"
$s8Dispatch0A13TimeoutResultO2eeoiySbAC_ACtFZ", referenced from:
$s5CZiti10ZitiTunnelC08shutdownB0yyyycFyycfU0 in libCZiti.a(ZitiTunnel.o)
"
$s8Dispatch0A13TimeoutResultON", referenced from:
$s5CZiti10ZitiTunnelC08shutdownB0yyyycFyycfU0 in libCZiti.a(ZitiTunnel.o)
"
$s8Dispatch0A13WorkItemFlagsVMa", referenced from:
_$s5CZiti10ZitiTunnelC010loadAndRunB0yyAC0F4ArgsCF in libCZiti.a(ZitiTunnel.o)
_$s5CZiti10ZitiTunnelC08shutdownB0yyyycF in libCZiti.a(ZitiTunnel.o)
$sSay8Dispatch0A13WorkItemFlagsVGMa in libCZiti.a(ZitiTunnel.o)
"
$s8Dispatch0A13WorkItemFlagsVMn", referenced from:
symbolic Say_____G 8Dispatch0A13WorkItemFlagsV in libCZiti.a(ZitiTunnel.o)
"
$s8Dispatch0A13WorkItemFlagsVs10SetAlgebraAAMc", referenced from:
_$s5CZiti10ZitiTunnelC010loadAndRunB0yyAC0F4ArgsCF in libCZiti.a(ZitiTunnel.o)
$s5CZiti10ZitiTunnelC08shutdownB0yyyycF in libCZiti.a(ZitiTunnel.o)
"
$s8Dispatch0A3QoSV0B6SClassO7defaultyA2EmFWC", referenced from:
$s5CZiti10ZitiTunnelC010loadAndRunB0yyAC0F4ArgsCF in libCZiti.a(ZitiTunnel.o)
$s5CZiti10ZitiTunnelC08shutdownB0yyyycF in libCZiti.a(ZitiTunnel.o)
"
$s8Dispatch0A3QoSV0B6SClassOMa", referenced from:
$s5CZiti10ZitiTunnelC010loadAndRunB0yyAC0F4ArgsCF in libCZiti.a(ZitiTunnel.o)
$s5CZiti10ZitiTunnelC08shutdownB0yyyycF in libCZiti.a(ZitiTunnel.o)
"
$s8Dispatch0A3QoSV11unspecifiedACvgZ", referenced from:
$s5CZiti10ZitiTunnelC010loadAndRunB0yyAC0F4ArgsCF in libCZiti.a(ZitiTunnel.o)
$s5CZiti10ZitiTunnelC08shutdownB0yyyycF in libCZiti.a(ZitiTunnel.o)
"
$s8Dispatch0A3QoSVMa", referenced from:
$s5CZiti10ZitiTunnelC010loadAndRunB0yyAC0F4ArgsCF in libCZiti.a(ZitiTunnel.o)
$s5CZiti10ZitiTunnelC08shutdownB0yyyycF in libCZiti.a(ZitiTunnel.o)
"
$s8Dispatch0A4TimeV3nowACyFZ", referenced from:
$s5CZiti10ZitiTunnelC08shutdownB0yyyycFyycfU0 in libCZiti.a(ZitiTunnel.o)
"
$s8Dispatch0A4TimeVMa", referenced from:
$s5CZiti10ZitiTunnelC08shutdownB0yyyycFyycfU0 in libCZiti.a(ZitiTunnel.o)
"
$s8Dispatch1poiyAA0A4TimeVAD_SdtF", referenced from:
$s5CZiti10ZitiTunnelC08shutdownB0yyyycFyycfU0 in libCZiti.a(ZitiTunnel.o)
"
$s8RawValueSYTl", referenced from:
l_got.$s8RawValueSYTl in libCZiti.a(ZitiService.o)
l_got.$s8RawValueSYTl in libCZiti.a(ZitiLog.o)
l_got.$s8RawValueSYTl in libCZiti.a(ZitiEvent.o)
l_got.$s8RawValueSYTl in libCZiti.a(ZitiHostConfigV1.o)
l_got.$s8RawValueSYTl in libCZiti.a(ZitiTunnelServerConfigV1.o)
"
$sBOWV", referenced from:
_$s5CZiti15ZitiUrlProtocolCMf in libCZiti.a(ZitiUrlProtocol.o)
_$s5CZiti4ZitiCMf in libCZiti.a(Ziti-7a36ed41efcb2113d1fced1819416e55.o)
_$s5CZiti4ZitiC0B7RunloopCMf in libCZiti.a(Ziti-7a36ed41efcb2113d1fced1819416e55.o)
_$s5CZiti4ZitiC11SelectorArgCMf in libCZiti.a(Ziti-7a36ed41efcb2113d1fced1819416e55.o)
_$s5CZiti4ZitiC9TimerDataCMf in libCZiti.a(Ziti-7a36ed41efcb2113d1fced1819416e55.o)
_$s5CZiti11ZitiServiceCMf in libCZiti.a(ZitiService.o)
$s5CZiti10ZitiClaimsCMf in libCZiti.a(ZitiClaims.o)
...
"
$sBi32_WV", referenced from:
_$sSo10cfg_type_eaMf in libCZiti.a(ZitiKeychain.o)
_$sSo9rate_typeaMf in libCZiti.a(ZitiKeychain.o)
_$sSo18http_request_stateVMf in libCZiti.a(ZitiKeychain.o)
_$sSo17ziti_session_typeVMf in libCZiti.a(ZitiKeychain.o)
_$sSo14uv_handle_typeaMf in libCZiti.a(ZitiKeychain.o)
_$sSo15ziti_event_typeaMf in libCZiti.a(ZitiKeychain.o)
$sSo9hash_algoVMf in libCZiti.a(ZitiKeychain.o)
...
"
$sBi64_WV", referenced from:
_$sSo16tlsuv_http_req_sV22__Unnamed_struct__nextVMf in libCZiti.a(ZitiKeychain.o)
$sSo8hdr_listVMf in libCZiti.a(ZitiKeychain.o)
$sSo9model_mapVMf in libCZiti.a(ZitiKeychain.o)
$sSo9uv_loop_sV27__Unnamed_union_active_reqsVMf in libCZiti.a(ZitiKeychain.o)
$sSo14ziti_process_sVMf in libCZiti.a(ZitiKeychain.o)
"
$sBoWV", referenced from:
$s5CZiti12ZitiEnrollerC18EnrollmentResponseC8IdentityCMf in libCZiti.a(ZitiEnroller.o)
$s5CZiti14ZitiConnectionC12WriteRequestCMf in libCZiti.a(ZitiConnection.o)
$s5CZiti7ZitiLogCMf in libCZiti.a(ZitiLog.o)
$s5CZiti16ZitiHostConfigV1CMf in libCZiti.a(ZitiHostConfigV1.o)
$s5CZiti16ZitiHostConfigV1C9PortRangeCMf in libCZiti.a(ZitiHostConfigV1.o)
$s5CZiti16ZitiHostConfigV1C13ListenOptionsCMf in libCZiti.a(ZitiHostConfigV1.o)
$s5CZiti21ZitiInterceptConfigV1CMf in libCZiti.a(ZitiInterceptConfigV1.o)
...
"
$sSDMa", referenced from:
$sSDyS2SGMa in libCZiti.a(ZitiUrlClientConfigV1.o)
"
$sSDyxq_GSEsSERzSER_rlMc", referenced from:
$s5CZiti21ZitiUrlClientConfigV1C6encode2toys7Encoder_p_tKF in libCZiti.a(ZitiUrlClientConfigV1.o)
"
$sSDyxq_GSesSeRzSeR_rlMc", referenced from:
$s5CZiti21ZitiUrlClientConfigV1C4fromACs7Decoder_p_tKcfc in libCZiti.a(ZitiUrlClientConfigV1.o)
"
$sSE6encode2toys7Encoder_p_tKFTq", referenced from:
l_got.$sSE6encode2toys7Encoder_p_tKFTq in libCZiti.a(ZitiService.o)
l_got.$sSE6encode2toys7Encoder_p_tKFTq in libCZiti.a(ZitiClaims.o)
l_got.$sSE6encode2toys7Encoder_p_tKFTq in libCZiti.a(ZitiEnroller.o)
l_got.$sSE6encode2toys7Encoder_p_tKFTq in libCZiti.a(ZitiIdentity.o)
l_got.$sSE6encode2toys7Encoder_p_tKFTq in libCZiti.a(ZitiPostureQuery.o)
l_got.$sSE6encode2toys7Encoder_p_tKFTq in libCZiti.a(ZitiMfaEnrollment.o)
l_got.$sSE6encode2toys7Encoder_p_tKFTq in libCZiti.a(ZitiPostureQuerySet.o)
...
"
$sSEMp", referenced from:
l_got.$sSEMp in libCZiti.a(ZitiService.o)
l_got.$sSEMp in libCZiti.a(ZitiClaims.o)
l_got.$sSEMp in libCZiti.a(ZitiEnroller.o)
l_got.$sSEMp in libCZiti.a(ZitiIdentity.o)
l_got.$sSEMp in libCZiti.a(ZitiPostureQuery.o)
l_got.$sSEMp in libCZiti.a(ZitiMfaEnrollment.o)
l_got.$sSEMp in libCZiti.a(ZitiPostureQuerySet.o)
...
"
$sSH13_rawHashValue4seedS2i_tFTq", referenced from:
l_got.$sSH13_rawHashValue4seedS2i_tFTq in libCZiti.a(ZitiService.o)
l_got.$sSH13_rawHashValue4seedS2i_tFTq in libCZiti.a(ZitiClaims.o)
l_got.$sSH13_rawHashValue4seedS2i_tFTq in libCZiti.a(ZitiEnroller.o)
l_got.$sSH13_rawHashValue4seedS2i_tFTq in libCZiti.a(ZitiKeychain.o)
l_got.$sSH13_rawHashValue4seedS2i_tFTq in libCZiti.a(ZitiIdentity.o)
l_got.$sSH13_rawHashValue4seedS2i_tFTq in libCZiti.a(ZitiPostureQuery.o)
l_got.$sSH13_rawHashValue4seedS2i_tFTq in libCZiti.a(ZitiMfaEnrollment.o)
...
"
$sSH4hash4intoys6HasherVz_tFTq", referenced from:
l_got.$sSH4hash4intoys6HasherVz_tFTq in libCZiti.a(ZitiService.o)
l_got.$sSH4hash4intoys6HasherVz_tFTq in libCZiti.a(ZitiClaims.o)
l_got.$sSH4hash4intoys6HasherVz_tFTq in libCZiti.a(ZitiEnroller.o)
l_got.$sSH4hash4intoys6HasherVz_tFTq in libCZiti.a(ZitiKeychain.o)
l_got.$sSH4hash4intoys6HasherVz_tFTq in libCZiti.a(ZitiIdentity.o)
l_got.$sSH4hash4intoys6HasherVz_tFTq in libCZiti.a(ZitiPostureQuery.o)
l_got.$sSH4hash4intoys6HasherVz_tFTq in libCZiti.a(ZitiMfaEnrollment.o)
...
"
$sSH9hashValueSivgTq", referenced from:
l_got.$sSH9hashValueSivgTq in libCZiti.a(ZitiService.o)
l_got.$sSH9hashValueSivgTq in libCZiti.a(ZitiClaims.o)
l_got.$sSH9hashValueSivgTq in libCZiti.a(ZitiEnroller.o)
l_got.$sSH9hashValueSivgTq in libCZiti.a(ZitiKeychain.o)
l_got.$sSH9hashValueSivgTq in libCZiti.a(ZitiIdentity.o)
l_got.$sSH9hashValueSivgTq in libCZiti.a(ZitiPostureQuery.o)
l_got.$sSH9hashValueSivgTq in libCZiti.a(ZitiMfaEnrollment.o)
...
"
$sSHMp", referenced from:
l_got.$sSHMp in libCZiti.a(ZitiService.o)
l_got.$sSHMp in libCZiti.a(ZitiClaims.o)
l_got.$sSHMp in libCZiti.a(ZitiEnroller.o)
l_got.$sSHMp in libCZiti.a(ZitiKeychain.o)
l_got.$sSHMp in libCZiti.a(ZitiIdentity.o)
l_got.$sSHMp in libCZiti.a(ZitiPostureQuery.o)
l_got.$sSHMp in libCZiti.a(ZitiMfaEnrollment.o)
...
"
$sSHSQTb", referenced from:
l_got.$sSHSQTb in libCZiti.a(ZitiService.o)
l_got.$sSHSQTb in libCZiti.a(ZitiClaims.o)
l_got.$sSHSQTb in libCZiti.a(ZitiEnroller.o)
l_got.$sSHSQTb in libCZiti.a(ZitiKeychain.o)
l_got.$sSHSQTb in libCZiti.a(ZitiIdentity.o)
l_got.$sSHSQTb in libCZiti.a(ZitiPostureQuery.o)
l_got.$sSHSQTb in libCZiti.a(ZitiMfaEnrollment.o)
...
"
$sSQ2eeoiySbx_xtFZTq", referenced from:
l_got.$sSQ2eeoiySbx_xtFZTq in libCZiti.a(ZitiService.o)
l_got.$sSQ2eeoiySbx_xtFZTq in libCZiti.a(ZitiClaims.o)
l_got.$sSQ2eeoiySbx_xtFZTq in libCZiti.a(ZitiEnroller.o)
l_got.$sSQ2eeoiySbx_xtFZTq in libCZiti.a(ZitiKeychain.o)
l_got.$sSQ2eeoiySbx_xtFZTq in libCZiti.a(ZitiIdentity.o)
l_got.$sSQ2eeoiySbx_xtFZTq in libCZiti.a(ZitiPostureQuery.o)
l_got.$sSQ2eeoiySbx_xtFZTq in libCZiti.a(ZitiMfaEnrollment.o)
...
"
$sSQMp", referenced from:
l_got.$sSQMp in libCZiti.a(ZitiService.o)
l_got.$sSQMp in libCZiti.a(ZitiClaims.o)
l_got.$sSQMp in libCZiti.a(ZitiEnroller.o)
l_got.$sSQMp in libCZiti.a(ZitiKeychain.o)
l_got.$sSQMp in libCZiti.a(ZitiIdentity.o)
l_got.$sSQMp in libCZiti.a(ZitiPostureQuery.o)
l_got.$sSQMp in libCZiti.a(ZitiMfaEnrollment.o)
...
"
$sSS10describingSSx_tclufC", referenced from:
_$s5CZiti15ZitiUrlProtocolCfD in libCZiti.a(ZitiUrlProtocol.o)
_$s5CZiti15ZitiUrlProtocolC7request14cachedResponse6clientAC10Foundation10URLRequestV_So19NSCachedURLResponseCSgSo19NSURLProtocolClient_pSgtcfcTf4nggn_n in libCZiti.a(ZitiUrlProtocol.o)
_$s5CZiti4ZitiC6enrollyySS_yAA0B8IdentityCSg_AA0B5ErrorCSgtctFZ in libCZiti.a(Ziti-7a36ed41efcb2113d1fced1819416e55.o)
_$s5CZiti4ZitiC6enrollyySS_yAA0B8IdentityCSg_AA0B5ErrorCSgtctFZyAA0B8EnrollerC18EnrollmentResponseCSg_SSSgAJtcfU_Tf4ndndnnn_n in libCZiti.a(Ziti-7a36ed41efcb2113d1fced1819416e55.o)
_$s5CZiti4ZitiC6enrollyySS_yAA0B8IdentityCSg_AA0B5ErrorCSgtctFZ010$s5CZiti12bd8CSgAA0B5eH18IeyByy_AdGIeggg_TRAgJIeyByy_Tf1ncn_nTf4nng_n in libCZiti.a(Ziti-7a36ed41efcb2113d1fced1819416e55.o)
_$s5CZiti10ZitiTunnelC010loadAndRunB0yyAC0F4ArgsCF in libCZiti.a(ZitiTunnel.o)
$s5CZiti12ZitiEnrollerC6enroll8withLoop10privatePem2cbySpySo9uv_loop_sVGSg_SSyAC18EnrollmentResponseCSg_SSSgAA0B5ErrorCSgtctF09$s5CZiti4b31C6enrollyySS_yAA0B8IdentityCSg_s2B5n9CSgtctFZystc3C18lmV12_SSSgAJtcfU_AA0B0CXMTAA0bU0CSgARIeggg_AA0B8KeychainCSSTf1nncn_n0o7CZiti12buvswnV18IeyByy_AdGIeggg_TRAxRIeyByy_Tf1nnnncnn_nTf4nnnnggg_n in libCZiti.a(ZitiEnroller.o)
...
"
$sSS11utf8CStrings15ContiguousArrayVys4Int8VGvg", referenced from:
_$s5CZiti13ZitiInterceptC13createRequestySpySo16tlsuv_http_req_sVGSgAA0B11UrlProtocolC_SSySpySo0f1_G7_resp_sVGSg_SvSgtXCyAH_SPys4Int8VGSgSitXCSvtF in libCZiti.a(ZitiIntercept.o)
$s5CZiti7ZitiLogC3log33_9F85B61D985DE98AAF711DD4475B373ALLyyAC0C5LevelO_SSs12StaticStringVAISutF in libCZiti.a(ZitiLog.o)
"
$sSS14_fromSubstringySSSshFZ", referenced from:
_$s5CZiti4ZitiC6enrollyySS_yAA0B8IdentityCSg_AA0B5ErrorCSgtctFZyAA0B8EnrollerC18EnrollmentResponseCSg_SSSgAJtcfU_Tf4ndndnnn_n in libCZiti.a(Ziti-7a36ed41efcb2113d1fced1819416e55.o)
_$s5CZiti10ZitiTunnelC14setUpstreamDnsys5Int32VSSF in libCZiti.a(ZitiTunnel.o)
$s5CZiti12ZitiKeychainC11extractPEMsySaySSGSSFySsXEfU in libCZiti.a(ZitiKeychain.o)
_$s5CZiti12ZitiKeychainC11PEMstoCertsySaySo17SecCertificateRefaGSaySSGFTf4nd_n in libCZiti.a(ZitiKeychain.o)
$s5CZiti12ZitiKeychainC12convertToDERy10Foundation4DataVSSFTf4nd_n in libCZiti.a(ZitiKeychain.o)
"
$sSS14removeSubrangeyySnySS5IndexVGF", referenced from:
$s5CZiti7ZitiLogC3log33_9F85B61D985DE98AAF711DD4475B373ALLyyAC0C5LevelO_SSs12StaticStringVAISutF in libCZiti.a(ZitiLog.o)
"
$sSS18_uncheckedFromUTF8ySSSRys5UInt8VGFZ", referenced from:
_$s5CZiti10ZitiTunnelC14setUpstreamDnsys5Int32VSSF in libCZiti.a(ZitiTunnel.o)
_$sSlsE5split9maxSplits25omittingEmptySubsequences14whereSeparatorSay11SubSequenceQzGSi_S2b7ElementQzKXEtKFSS_Tg5 in libCZiti.a(ZitiTunnel.o)
_$sSS8_copyingySSSsFZ in libCZiti.a(ZitiTunnel.o)
$sSS8_copyingySSSsFZSSSRys5UInt8VGXEfU0 in libCZiti.a(ZitiTunnel.o)
_$s5CZiti12ZitiKeychainC12convertToPEM_3derS2S_10Foundation4DataVtFTf4nnd_n in libCZiti.a(ZitiKeychain.o)
_$s5CZiti12ZitiKeychainC11PEMstoCertsySaySo17SecCertificateRefaGSaySSGFTf4nd_n in libCZiti.a(ZitiKeychain.o)
$s5CZiti12ZitiKeychainC12convertToDERy10Foundation4DataVSSFTf4nd_n in libCZiti.a(ZitiKeychain.o)
...
"
$sSS4hash4intoys6HasherVz_tF", referenced from:
_$sSD6filterySDyxq_GSbx3key_q_5valuet_tKXEKFSS_5CZiti13ZitiInterceptCTg5010$s5CZiti15e52UrlProtocolC13removeServiceyyAA0bF0CFZSbSS3key_AA0B9F15C5valuet_tXEfU_SSTf1cn_nTf4gg_n in libCZiti.a(ZitiUrlProtocol.o)
_$s5CZiti11ZitiServiceC10CodingKeysOSHAASH4hash4intoys6HasherVz_tFTW in libCZiti.a(ZitiService.o)
_$s5CZiti11ZitiServiceC10CodingKeysOSHAASH13_rawHashValue4seedS2i_tFTW in libCZiti.a(ZitiService.o)
_$ss17_NativeDictionaryV20_copyOrMoveAndResize8capacity12moveElementsySi_SbtFSS_SSTg5 in libCZiti.a(ZitiTunnel.o)
_$ss17_NativeDictionaryV20_copyOrMoveAndResize8capacity12moveElementsySi_SbtFSS_ypTg5 in libCZiti.a(ZitiTunnel.o)
_$ss17_NativeDictionaryV20_copyOrMoveAndResize8capacity12moveElementsySi_SbtFSS_5CZiti13ZitiInterceptCTg5Tm in libCZiti.a(ZitiTunnel.o)
$ss22__RawDictionaryStorageC4findys10_HashTableV6BucketV6bucket_Sb5foundtxSHRzlFSS_Tg5 in libCZiti.a(ZitiKeychain.o)
...
"
$sSS5IndexV15characterStrideSiSgvg", referenced from:
_$sSlsE5split9maxSplits25omittingEmptySubsequences14whereSeparatorSay11SubSequenceQzGSi_S2b7ElementQzKXEtKFSS_Tg5 in libCZiti.a(ZitiTunnel.o)
_$sSlsSQ7ElementRpzrlE10firstIndex2of0C0QzSgAB_tFSS_Tg5 in libCZiti.a(ZitiLog.o)
$sSKsE9lastIndex5where0B0QzSgSb7ElementQzKXE_tKFSS_Tg5 in libCZiti.a(ZitiLog.o)
"
$sSS5IndexVMn", referenced from:
symbolic _____ SS5IndexV in libCZiti.a(ZitiTunnel.o)
"
$sSS5countSivg", referenced from:
_$s5CZiti15ZitiUrlProtocolC03getC4Path33_BC023BCFBF17CE03C0F3A439AF9EED4FLLSSyF in libCZiti.a(ZitiUrlProtocol.o)
_$s5CZiti4ZitiC3runyyAA0B13PostureChecksCSg_yAA0B5ErrorCSgctF in libCZiti.a(Ziti-7a36ed41efcb2113d1fced1819416e55.o)
_$s5CZiti4ZitiC6enrollyySS_yAA0B8IdentityCSg_AA0B5ErrorCSgtctFZyAA0B8EnrollerC18EnrollmentResponseCSg_SSSgAJtcfU_Tf4ndndnnn_n in libCZiti.a(Ziti-7a36ed41efcb2113d1fced1819416e55.o)
_$s5CZiti4ZitiC3runyyAA0B13PostureChecksCSg_yAA0B5ErrorCSgctF09$s5CZiti9bF18CSgIeyBy_ADIegg_TRAJIeyBy_Tf1ncn_nTf4nng_n in libCZiti.a(Ziti-7a36ed41efcb2113d1fced1819416e55.o)
_$s5CZiti4ZitiC3runyyAA0B13PostureChecksCSg_yAA0B5ErrorCSgctF010$s5CZiti10b41TunnelC010loadAndRunB0yyAC0F4ArgsCFyAA0B5F8CSgcfU0_AA0bI0CSgXwz_XxACTf1ncn_nTf4nngg_n in libCZiti.a(Ziti-7a36ed41efcb2113d1fced1819416e55.o)
_$s5CZiti12ZitiEnrollerC6enroll8withLoop10privatePem2cbySpySo9uv_loop_sVGSg_SSyAC18EnrollmentResponseCSg_SSSgAA0B5ErrorCSgtctF in libCZiti.a(ZitiEnroller.o)
$s5CZiti12ZitiEnrollerC6enroll8withLoop10privatePem2cbySpySo9uv_loop_sVGSg_SSyAC18EnrollmentResponseCSg_SSSgAA0B5ErrorCSgtctF010$s5CZiti12bc3C18lm14CSgSo8NSStringr5AA0B5nR25IeyByyy_AFSSSgALIegggg_TRANSo0T0CSgARIeyByyy_Tf1nncn_nTf4nnng_n in libCZiti.a(ZitiEnroller.o)
...
"
$sSS5index5afterSS5IndexVAD_tF", referenced from:
_$s5CZiti4ZitiC6enrollyySS_yAA0B8IdentityCSg_AA0B5ErrorCSgtctFZyAA0B8EnrollerC18EnrollmentResponseCSg_SSSgAJtcfU_Tf4ndndnnn_n in libCZiti.a(Ziti-7a36ed41efcb2113d1fced1819416e55.o)
_$sSlsE5split9maxSplits25omittingEmptySubsequences14whereSeparatorSay11SubSequenceQzGSi_S2b7ElementQzKXEtKFSS_Tg5 in libCZiti.a(ZitiTunnel.o)
_$s5CZiti12ZitiKeychainC11PEMstoCertsySaySo17SecCertificateRefaGSaySSGFTf4nd_n in libCZiti.a(ZitiKeychain.o)
_$s5CZiti12ZitiKeychainC12convertToDERy10Foundation4DataVSSFTf4nd_n in libCZiti.a(ZitiKeychain.o)
$s5CZiti7ZitiLogC3log33_9F85B61D985DE98AAF711DD4475B373ALLyyAC0C5LevelO_SSs12StaticStringVAISutF in libCZiti.a(ZitiLog.o)
$sSlsSQ7ElementRpzrlE10firstIndex2of0C0QzSgAB_tFSS_Tg5 in libCZiti.a(ZitiLog.o)
"
$sSS5index6beforeSS5IndexVAD_tF", referenced from:
$sSKsE9lastIndex5where0B0QzSgSb7ElementQzKXE_tKFSS_Tg5 in libCZiti.a(ZitiLog.o)
"
$sSS6append10contentsOfyx_tSTRzSJ7ElementRtzlF", referenced from:
$s5CZiti12ZitiKeychainC11extractPEMsySaySSGSSFySsXEfU in libCZiti.a(ZitiKeychain.o)
"
$sSS6appendyySJF", referenced from:
$s5CZiti12ZitiKeychainC12convertToPEM_3derS2S_10Foundation4DataVtFTf4nnd_n in libCZiti.a(ZitiKeychain.o)
"
$sSS6appendyySSF", referenced from:
_$s5CZiti15ZitiUrlProtocolCfD in libCZiti.a(ZitiUrlProtocol.o)
$s5CZiti15ZitiUrlProtocolC12on_http_resp33_BC023BCFBF17CE03C0F3A439AF9EED4FLLyySpySo06tlsuv_f1_G2_sVGSg_SvSgtXCvpZfiyAI_AJtcfU in libCZiti.a(ZitiUrlProtocol.o)
_$s5CZiti15ZitiUrlProtocolC03getC6String33_BC023BCFBF17CE03C0F3A439AF9EED4FLLSSyF in libCZiti.a(ZitiUrlProtocol.o)
_$s5CZiti15ZitiUrlProtocolC03getC4Path33_BC023BCFBF17CE03C0F3A439AF9EED4FLLSSyF in libCZiti.a(ZitiUrlProtocol.o)
_$s5CZiti15ZitiUrlProtocolC22interceptByHostAndPort33_BC023BCFBF17CE03C0F3A439AF9EED4FLLyySS_SiAA0B0CSSSitFZTf4nnnnnd_n in libCZiti.a(ZitiUrlProtocol.o)
_$s5CZiti15ZitiUrlProtocolC18addOrUpdateServiceyyAA0bH0C_AA0B0CSgSitFZySSXEfU_Tf4nndnnn_n in libCZiti.a(ZitiUrlProtocol.o)
$s5CZiti15ZitiUrlProtocolC13removeServiceyyAA0bF0CFZTf4nd_n in libCZiti.a(ZitiUrlProtocol.o)
...
"
$sSS6insert10contentsOf2atyx_SS5IndexVtSlRzSJ7ElementRtzlF", referenced from:
$s5CZiti9ZitiEventC03ApiC0CyAESo14ziti_api_eventVcfc in libCZiti.a(ZitiEvent.o)
"
$sSS7cStringSSSPys4Int8VG_tcfC", referenced from:
$s5CZiti15ZitiUrlProtocolC12on_http_resp33_BC023BCFBF17CE03C0F3A439AF9EED4FLLyySpySo06tlsuv_f1_G2_sVGSg_SvSgtXCvpZfiyAI_AJtcfU in libCZiti.a(ZitiUrlProtocol.o)
$s5CZiti15ZitiUrlProtocolC12on_http_body33_BC023BCFBF17CE03C0F3A439AF9EED4FLLyySpySo06tlsuv_F6_req_sVGSg_SPys4Int8VGSgSitXCvpZfiyAI_AMSitcfU in libCZiti.a(ZitiUrlProtocol.o)
_$s5CZiti4ZitiC15zitiErrorString6statusSSs5Int32V_tFZ in libCZiti.a(Ziti-7a36ed41efcb2113d1fced1819416e55.o)
_$s5CZiti4ZitiC6enrollyySS_yAA0B8IdentityCSg_AA0B5ErrorCSgtctFZ in libCZiti.a(Ziti-7a36ed41efcb2113d1fced1819416e55.o)
_$s5CZiti4ZitiC3runyyAA0B13PostureChecksCSg_yAA0B5ErrorCSgctF in libCZiti.a(Ziti-7a36ed41efcb2113d1fced1819416e55.o)
_$s5CZiti4ZitiC14getCSDKVersionSS7version_SS8revisionSS9buildDatetyF in libCZiti.a(Ziti-7a36ed41efcb2113d1fced1819416e55.o)
$s5CZiti4ZitiC20getControllerVersionSS7version_SS8revisionSS9buildDatetyF in libCZiti.a(Ziti-7a36ed41efcb2113d1fced1819416e55.o)
...
"
$sSS8IteratorV4nextSJSgyF", referenced from:
$sSTsSQ7ElementRpzrlE6starts4withSbqd___tSTRd__AAQyd__ABRSlFSS_SSTg5 in libCZiti.a(ZitiEvent.o)
"
$sSS8UTF8ViewV13_foreignCountSiyF", referenced from:
_$s5CZiti19withArrayOfCStringsyxSaySSG_xSaySpys4Int8VGSgGXEtlFyt_Tg50124$s5CZiti4ZitiC13onMacResponse33_6ED978C52D94F2A369DCBE29C45BF725LLyyAA0B14PostureContextC_SaySSGSgtcvpZfiyAG_AItcfU_yycfU0_yz5Spys4F10VGSgGXEfU_AA0ikY0CAA0ixY0CACTf1nnc_n in libCZiti.a(Ziti-7a36ed41efcb2113d1fced1819416e55.o)
_$s5CZiti19withArrayOfCStringsyxSaySSG_xSaySpys4Int8VGSgGXEtlFyt_Tg50121$s5CZiti4ZitiC17onProcessResponse33_6ED978C52D94F2A369DCBE29C45BF725LLyyAA0B14PostureContextC_SSSbSSSgSaySSGSgtcvpZfiyAG_z23AhJtcfU_yycfU_ySaySpys4F10VGSgGXEfU_AA0ikY0CAA0ixY0CAGSbAgCTf1nnc_n in libCZiti.a(Ziti-7a36ed41efcb2113d1fced1819416e55.o)
_$sSa6append10contentsOfyqd__n_t7ElementQyd__RszSTRd__lFs5UInt8V_SS8UTF8ViewVTg5 in libCZiti.a(Ziti-7a36ed41efcb2113d1fced1819416e55.o)
$s10Foundation4DataVyACxcSTRzs5UInt8V7ElementRtzlufCSS8UTF8ViewV_Tg5Tf4nd_n in libCZiti.a(ZitiService.o)
"
$sSS8UTF8ViewV13_foreignIndex5afterSS0D0VAF_tF", referenced from:
_$s10Foundation4DataVyACxcSTRzs5UInt8V7ElementRtzlufCSS8UTF8ViewV_Tg5Tf4nd_n in libCZiti.a(ZitiService.o)
$sSTsE13_copyContents12initializing8IteratorQz_SitSry7ElementQzG_tFSs8UTF8ViewV_Tgq5 in libCZiti.a(ZitiTunnel.o)
"
$sSS8UTF8ViewV16_foreignDistance4from2toSiSS5IndexV_AGtF", referenced from:
_$ss32_copyCollectionToContiguousArrayys0dE0Vy7ElementQzGxSlRzlFSs8UTF8ViewV_Tgq5 in libCZiti.a(ZitiTunnel.o)
$ss5SliceV32withContiguousStorageIfAvailableyqd__Sgqd__SRy7ElementQzGKXEKlFqd__AGKXEfU_SS8UTF8ViewV_s6UInt16VSgTg5Tf4xnn_n in libCZiti.a(ZitiTunnel.o)
"
$sSS8UTF8ViewV17_foreignSubscript8positions5UInt8VSS5IndexV_tF", referenced from:
_$s10Foundation4DataVyACxcSTRzs5UInt8V7ElementRtzlufCSS8UTF8ViewV_Tg5Tf4nd_n in libCZiti.a(ZitiService.o)
$sSTsE13_copyContents12initializing8IteratorQz_SitSry7ElementQzG_tFSs8UTF8ViewV_Tgq5 in libCZiti.a(ZitiTunnel.o)
"
$sSS8UTF8ViewVN", referenced from:
$s10Foundation4DataVyACxcSTRzs5UInt8V7ElementRtzlufCSS8UTF8ViewV_Tg5Tf4nd_n in libCZiti.a(ZitiService.o)
"
$sSS9hashValueSivg", referenced from:
_$s5CZiti11ZitiServiceC10CodingKeysOSHAASH9hashValueSivgTW in libCZiti.a(ZitiService.o)
_$s5CZiti16ZitiHostConfigV1C10CodingKeysOSHAASH9hashValueSivgTW in libCZiti.a(ZitiHostConfigV1.o)
$s5CZiti24ZitiTunnelServerConfigV1C10CodingKeysOSHAASH9hashValueSivgTW in libCZiti.a(ZitiTunnelServerConfigV1.o)
"
$sSSN", referenced from:
$s5CZiti15ZitiUrlProtocolC12on_http_resp33_BC023BCFBF17CE03C0F3A439AF9EED4FLLyySpySo06tlsuv_f1_G2_sVGSg_SvSgtXCvpZfiyAI_AJtcfU in libCZiti.a(ZitiUrlProtocol.o)
_$s5CZiti15ZitiUrlProtocolC21performOnClientThread33_BC023BCFBF17CE03C0F3A439AF9EED4FLLyy10ObjectiveC8SelectorV_ypSgtF in libCZiti.a(ZitiUrlProtocol.o)
_$ss12_ArrayBufferV20_consumeAndCreateNew14bufferIsUnique15minimumCapacity13growForAppendAByxGSb_SiSbtFSS_Tg5 in libCZiti.a(ZitiUrlProtocol.o)
_$s5CZiti4ZitiC8userDataSDySSypGvgTo in libCZiti.a(Ziti-7a36ed41efcb2113d1fced1819416e55.o)
_$s5CZiti4ZitiC8userDataSDySSypGvsTo in libCZiti.a(Ziti-7a36ed41efcb2113d1fced1819416e55.o)
_$s5CZiti4ZitiC3runyyAA0B13PostureChecksCSg_yAA0B5ErrorCSgctF in libCZiti.a(Ziti-7a36ed41efcb2113d1fced1819416e55.o)
$s5CZiti4ZitiC9mfaRemoveyySS_yAC_s5Int32VtctFTm in libCZiti.a(Ziti-7a36ed41efcb2113d1fced1819416e55.o)
...
"
$sSSSEsWP", referenced from:
_$s5CZiti17ZitiMfaEnrollmentC6encode2toys7Encoder_p_tKF in libCZiti.a(ZitiMfaEnrollment.o)
_$s5CZiti16ZitiHostConfigV1C6encode2toys7Encoder_p_tKF in libCZiti.a(ZitiHostConfigV1.o)
_$s5CZiti21ZitiInterceptConfigV1C6encode2toys7Encoder_p_tKF in libCZiti.a(ZitiInterceptConfigV1.o)
$s5CZiti21ZitiUrlClientConfigV1C6encode2toys7Encoder_p_tKF in libCZiti.a(ZitiUrlClientConfigV1.o)
"
$sSSSHsWP", referenced from:
...
100 errors
...
ld: symbol(s) not found for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

crash uv_now(ts_loop)

When the enrollment identity fails, continuing the enrollment will crash, which may not necessarily occur, but continuous enrollment will crash, displayed in the uv_now(ts_loop)
Has anyone encountered this problem? I have tried many methods but none have worked, including modifying the uv_loop_t Creation and destruction.
123

Ziti Mobile Edge crashes

iPhone crashes
When the jwt file is added and cannot be registered, click Enroll This Identity for a third time, the app crashes.
Mac crashes
When there is no jwt file, click the Settings button and adjust the relevant parameters click the OK button, the program crashes.

'ziti/ziti.h' file not found

Hello, where is the Ziti library? How can I use the things in lib?For example, ZitiEnroller๏ผˆCannot find type 'uv_loop_t' in scope๏ผ‰. I feel like there is a lack of key libraries. Please let me know. Thank you very much

initCallback is not called when first Ziti event is received

The CZiti class was using the state of its ziti_context property as a breadcrumb that was set when the first Ziti event was received. Recent changes in the initialization sequence for ziti-sdk-c resulted in the ziti_context being initialized before connecting to the controller, which meant that its state could not be used to determine if the first Ziti event was being processed.

Instead of using the ziti_context, simply add a boolean property to record when the first event is processed.

How to change the TLS handshake signature algorithm?

I have modified the code to obtain the correct ECC algorithm public key and key and run successfully.
let tlsStat = tls?.pointee.api.pointee.set_own_cert(tls?.pointee.ctx, certPEM.cString(using: .utf8), certPEM.count + 1, privKeyPEM.cString(using: .utf8), privKeyPEM.count + 1)

But the request returned error -53.
I think it is the default TLS handshake signature verification RSA algorithm. How can I modify it to ECC algorithm.

Please help

Deprecate CZiti-iOS.podspec and CZiti-macOS.podspec in favor of CZiti.podspec

Continuing CocoaPods releases as is will become complicated given CZiti-iOS would need to support simulator builds for both arm64 and x86_64, but we'd be unable to support including in FAT framework since an arm64 build needs to be in the framework to support deploying to a real device (and we can't lipo to combine two arm builds).

XCFramework nicely solves this issue and allows all builds to be included in a single distribution, so we'll package that instead (it is already being built and distributed via Swift Package Manager).

  • Add arm64-iphonesimulator to the XCFramework
  • Make final CocoaPods releases of CZiti-macOS and CZiti-iOS, marking each as deprecated, Including spec.deprecated_in_favor_of: CZiti
  • Update README.md and release notes
  • Should post a notice in Discourse about the deprecations and recommend users move to the SPM package...

Jazzy documentation update needed

Jazzy currently showing: 36% documentation coverage with 196 undocumented symbols

Much of the more recent functionality, especially around timers, ZitiEvents, and ZitiTunnel, is currently undocumented.

Current undocumented.json output from jazzy:

{
  "warnings": [
    {
      "file": "/Users/dhart/repos/netfoundry/ziti-sdk-swift/lib/Ziti.swift",
      "line": 40,
      "symbol": "Ziti.ztx",
      "symbol_kind": "source.lang.swift.decl.var.instance",
      "warning": "undocumented"
    },
    {
      "file": "/Users/dhart/repos/netfoundry/ziti-sdk-swift/lib/Ziti.swift",
      "line": 48,
      "symbol": "Ziti.userData",
      "symbol_kind": "source.lang.swift.decl.var.instance",
      "warning": "undocumented"
    },
    {
      "file": "/Users/dhart/repos/netfoundry/ziti-sdk-swift/lib/Ziti.swift",
      "line": 108,
      "symbol": "Ziti.id",
      "symbol_kind": "source.lang.swift.decl.var.instance",
      "warning": "undocumented"
    },
    {
      "file": "/Users/dhart/repos/netfoundry/ziti-sdk-swift/lib/Ziti.swift",
      "line": 231,
      "symbol": "Ziti.ZitiRunloop.init()",
      "symbol_kind": "source.lang.swift.decl.function.method.instance",
      "warning": "undocumented"
    },
    {
      "file": "/Users/dhart/repos/netfoundry/ziti-sdk-swift/lib/Ziti.swift",
      "line": 623,
      "symbol": "Ziti.TimerCallback",
      "symbol_kind": "source.lang.swift.decl.typealias",
      "warning": "undocumented"
    },
    {
      "file": "/Users/dhart/repos/netfoundry/ziti-sdk-swift/lib/Ziti.swift",
      "line": 628,
      "symbol": "Ziti.startTimer(_:_:_:)",
      "symbol_kind": "source.lang.swift.decl.function.method.instance",
      "warning": "undocumented"
    },
    {
      "file": "/Users/dhart/repos/netfoundry/ziti-sdk-swift/lib/Ziti.swift",
      "line": 643,
      "symbol": "Ziti.endTimer(_:)",
      "symbol_kind": "source.lang.swift.decl.function.method.instance",
      "warning": "undocumented"
    },
    {
      "file": "/Users/dhart/repos/netfoundry/ziti-sdk-swift/lib/Ziti.swift",
      "line": 666,
      "symbol": "Ziti.MfaEnrollCallback",
      "symbol_kind": "source.lang.swift.decl.typealias",
      "warning": "undocumented"
    },
    {
      "file": "/Users/dhart/repos/netfoundry/ziti-sdk-swift/lib/Ziti.swift",
      "line": 668,
      "symbol": "Ziti.mfaEnroll(_:)",
      "symbol_kind": "source.lang.swift.decl.function.method.instance",
      "warning": "undocumented"
    },
    {
      "file": "/Users/dhart/repos/netfoundry/ziti-sdk-swift/lib/Ziti.swift",
      "line": 673,
      "symbol": "Ziti.MfaCallback",
      "symbol_kind": "source.lang.swift.decl.typealias",
      "warning": "undocumented"
    },
    {
      "file": "/Users/dhart/repos/netfoundry/ziti-sdk-swift/lib/Ziti.swift",
      "line": 677,
      "symbol": "Ziti.mfaRemove(_:_:)",
      "symbol_kind": "source.lang.swift.decl.function.method.instance",
      "warning": "undocumented"
    },
    {
      "file": "/Users/dhart/repos/netfoundry/ziti-sdk-swift/lib/Ziti.swift",
      "line": 685,
      "symbol": "Ziti.mfaVerify(_:_:)",
      "symbol_kind": "source.lang.swift.decl.function.method.instance",
      "warning": "undocumented"
    },
    {
      "file": "/Users/dhart/repos/netfoundry/ziti-sdk-swift/lib/Ziti.swift",
      "line": 693,
      "symbol": "Ziti.MfaRecoveryCodesCallback",
      "symbol_kind": "source.lang.swift.decl.typealias",
      "warning": "undocumented"
    },
    {
      "file": "/Users/dhart/repos/netfoundry/ziti-sdk-swift/lib/Ziti.swift",
      "line": 696,
      "symbol": "Ziti.mfaGetRecoveryCodes(_:_:)",
      "symbol_kind": "source.lang.swift.decl.function.method.instance",
      "warning": "undocumented"
    },
    {
      "file": "/Users/dhart/repos/netfoundry/ziti-sdk-swift/lib/Ziti.swift",
      "line": 704,
      "symbol": "Ziti.mfaNewRecoveryCodes(_:_:)",
      "symbol_kind": "source.lang.swift.decl.function.method.instance",
      "warning": "undocumented"
    },
    {
      "file": "/Users/dhart/repos/netfoundry/ziti-sdk-swift/lib/Ziti.swift",
      "line": 713,
      "symbol": "Ziti.mfaAuth(_:_:)",
      "symbol_kind": "source.lang.swift.decl.function.method.instance",
      "warning": "undocumented"
    },
    {
      "file": "/Users/dhart/repos/netfoundry/ziti-sdk-swift/lib/ZitiEnroller.swift",
      "line": 170,
      "symbol": "ZitiEnroller.getClaims()",
      "symbol_kind": "source.lang.swift.decl.function.method.instance",
      "warning": "undocumented"
    },
    {
      "file": "/Users/dhart/repos/netfoundry/ziti-sdk-swift/lib/ZitiEvent.swift",
      "line": 19,
      "symbol": "ZitiEvent",
      "symbol_kind": "source.lang.swift.decl.class",
      "warning": "undocumented"
    },
    {
      "file": "/Users/dhart/repos/netfoundry/ziti-sdk-swift/lib/ZitiEvent.swift",
      "line": 21,
      "symbol": "ZitiEvent.ziti",
      "symbol_kind": "source.lang.swift.decl.var.instance",
      "warning": "undocumented"
    },
    {
      "file": "/Users/dhart/repos/netfoundry/ziti-sdk-swift/lib/ZitiEvent.swift",
      "line": 23,
      "symbol": "ZitiEvent.EventType",
      "symbol_kind": "source.lang.swift.decl.enum",
      "warning": "undocumented"
    },
    {
      "file": "/Users/dhart/repos/netfoundry/ziti-sdk-swift/lib/ZitiEvent.swift",
      "line": 24,
      "symbol": "ZitiEvent.EventType.Invalid",
      "symbol_kind": "source.lang.swift.decl.enumelement",
      "warning": "undocumented"
    },
    {
      "file": "/Users/dhart/repos/netfoundry/ziti-sdk-swift/lib/ZitiEvent.swift",
      "line": 25,
      "symbol": "ZitiEvent.EventType.Context",
      "symbol_kind": "source.lang.swift.decl.enumelement",
      "warning": "undocumented"
    },
    {
      "file": "/Users/dhart/repos/netfoundry/ziti-sdk-swift/lib/ZitiEvent.swift",
      "line": 26,
      "symbol": "ZitiEvent.EventType.Router",
      "symbol_kind": "source.lang.swift.decl.enumelement",
      "warning": "undocumented"
    },
    {
      "file": "/Users/dhart/repos/netfoundry/ziti-sdk-swift/lib/ZitiEvent.swift",
      "line": 27,
      "symbol": "ZitiEvent.EventType.Service",
      "symbol_kind": "source.lang.swift.decl.enumelement",
      "warning": "undocumented"
    },
    {
      "file": "/Users/dhart/repos/netfoundry/ziti-sdk-swift/lib/ZitiEvent.swift",
      "line": 28,
      "symbol": "ZitiEvent.EventType.MfaAuth",
      "symbol_kind": "source.lang.swift.decl.enumelement",
      "warning": "undocumented"
    },
    {
      "file": "/Users/dhart/repos/netfoundry/ziti-sdk-swift/lib/ZitiEvent.swift",
      "line": 29,
      "symbol": "ZitiEvent.EventType.ApiEvent",
      "symbol_kind": "source.lang.swift.decl.enumelement",
      "warning": "undocumented"
    },
    {
      "file": "/Users/dhart/repos/netfoundry/ziti-sdk-swift/lib/ZitiEvent.swift",
      "line": 31,
      "symbol": "ZitiEvent.EventType.debug",
      "symbol_kind": "source.lang.swift.decl.var.instance",
      "warning": "undocumented"
    },
    {
      "file": "/Users/dhart/repos/netfoundry/ziti-sdk-swift/lib/ZitiEvent.swift",
      "line": 44,
      "symbol": "ZitiEvent.ContextEvent",
      "symbol_kind": "source.lang.swift.decl.class",
      "warning": "undocumented"
    },
    {
      "file": "/Users/dhart/repos/netfoundry/ziti-sdk-swift/lib/ZitiEvent.swift",
      "line": 45,
      "symbol": "ZitiEvent.ContextEvent.status",
      "symbol_kind": "source.lang.swift.decl.var.instance",
      "warning": "undocumented"
    },
    {
      "file": "/Users/dhart/repos/netfoundry/ziti-sdk-swift/lib/ZitiEvent.swift",
      "line": 46,
      "symbol": "ZitiEvent.ContextEvent.err",
      "symbol_kind": "source.lang.swift.decl.var.instance",
      "warning": "undocumented"
    },
    {
      "file": "/Users/dhart/repos/netfoundry/ziti-sdk-swift/lib/ZitiEvent.swift",
      "line": 57,
      "symbol": "ZitiEvent.RouterStatus",
      "symbol_kind": "source.lang.swift.decl.enum",
      "warning": "undocumented"
    },
    {
      "file": "/Users/dhart/repos/netfoundry/ziti-sdk-swift/lib/ZitiEvent.swift",
      "line": 58,
      "symbol": "ZitiEvent.RouterStatus.Added",
      "symbol_kind": "source.lang.swift.decl.enumelement",
      "warning": "undocumented"
    },
    {
      "file": "/Users/dhart/repos/netfoundry/ziti-sdk-swift/lib/ZitiEvent.swift",
      "line": 58,
      "symbol": "ZitiEvent.RouterStatus.Connected",
      "symbol_kind": "source.lang.swift.decl.enumelement",
      "warning": "undocumented"
    },
    {
      "file": "/Users/dhart/repos/netfoundry/ziti-sdk-swift/lib/ZitiEvent.swift",
      "line": 58,
      "symbol": "ZitiEvent.RouterStatus.Disconnected",
      "symbol_kind": "source.lang.swift.decl.enumelement",
      "warning": "undocumented"
    },
    {
      "file": "/Users/dhart/repos/netfoundry/ziti-sdk-swift/lib/ZitiEvent.swift",
      "line": 58,
      "symbol": "ZitiEvent.RouterStatus.Removed",
      "symbol_kind": "source.lang.swift.decl.enumelement",
      "warning": "undocumented"
    },
    {
      "file": "/Users/dhart/repos/netfoundry/ziti-sdk-swift/lib/ZitiEvent.swift",
      "line": 58,
      "symbol": "ZitiEvent.RouterStatus.Unavailable",
      "symbol_kind": "source.lang.swift.decl.enumelement",
      "warning": "undocumented"
    },
    {
      "file": "/Users/dhart/repos/netfoundry/ziti-sdk-swift/lib/ZitiEvent.swift",
      "line": 59,
      "symbol": "ZitiEvent.RouterStatus.debug",
      "symbol_kind": "source.lang.swift.decl.var.instance",
      "warning": "undocumented"
    },
    {
      "file": "/Users/dhart/repos/netfoundry/ziti-sdk-swift/lib/ZitiEvent.swift",
      "line": 70,
      "symbol": "ZitiEvent.RouterEvent",
      "symbol_kind": "source.lang.swift.decl.class",
      "warning": "undocumented"
    },
    {
      "file": "/Users/dhart/repos/netfoundry/ziti-sdk-swift/lib/ZitiEvent.swift",
      "line": 71,
      "symbol": "ZitiEvent.RouterEvent.status",
      "symbol_kind": "source.lang.swift.decl.var.instance",
      "warning": "undocumented"
    },
    {
      "file": "/Users/dhart/repos/netfoundry/ziti-sdk-swift/lib/ZitiEvent.swift",
      "line": 72,
      "symbol": "ZitiEvent.RouterEvent.name",
      "symbol_kind": "source.lang.swift.decl.var.instance",
      "warning": "undocumented"
    },
    {
      "file": "/Users/dhart/repos/netfoundry/ziti-sdk-swift/lib/ZitiEvent.swift",
      "line": 73,
      "symbol": "ZitiEvent.RouterEvent.version",
      "symbol_kind": "source.lang.swift.decl.var.instance",
      "warning": "undocumented"
    },
    {
      "file": "/Users/dhart/repos/netfoundry/ziti-sdk-swift/lib/ZitiEvent.swift",
      "line": 81,
      "symbol": "ZitiEvent.ServiceEvent",
      "symbol_kind": "source.lang.swift.decl.class",
      "warning": "undocumented"
    },
    {
      "file": "/Users/dhart/repos/netfoundry/ziti-sdk-swift/lib/ZitiEvent.swift",
      "line": 82,
      "symbol": "ZitiEvent.ServiceEvent.removed",
      "symbol_kind": "source.lang.swift.decl.var.instance",
      "warning": "undocumented"
    },
    {
      "file": "/Users/dhart/repos/netfoundry/ziti-sdk-swift/lib/ZitiEvent.swift",
      "line": 83,
      "symbol": "ZitiEvent.ServiceEvent.changed",
      "symbol_kind": "source.lang.swift.decl.var.instance",
      "warning": "undocumented"
    },
    {
      "file": "/Users/dhart/repos/netfoundry/ziti-sdk-swift/lib/ZitiEvent.swift",
      "line": 84,
      "symbol": "ZitiEvent.ServiceEvent.added",
      "symbol_kind": "source.lang.swift.decl.var.instance",
      "warning": "undocumented"
    },
    {
      "file": "/Users/dhart/repos/netfoundry/ziti-sdk-swift/lib/ZitiEvent.swift",
      "line": 103,
      "symbol": "ZitiEvent.MfaAuthEvent",
      "symbol_kind": "source.lang.swift.decl.class",
      "warning": "undocumented"
    },
    {
      "file": "/Users/dhart/repos/netfoundry/ziti-sdk-swift/lib/ZitiEvent.swift",
      "line": 104,
      "symbol": "ZitiEvent.MfaAuthEvent.mfaAuthQuery",
      "symbol_kind": "source.lang.swift.decl.var.instance",
      "warning": "undocumented"
    },
    {
      "file": "/Users/dhart/repos/netfoundry/ziti-sdk-swift/lib/ZitiEvent.swift",
      "line": 112,
      "symbol": "ZitiEvent.ApiEvent",
      "symbol_kind": "source.lang.swift.decl.class",
      "warning": "undocumented"
    },
    {
      "file": "/Users/dhart/repos/netfoundry/ziti-sdk-swift/lib/ZitiEvent.swift",
      "line": 113,
      "symbol": "ZitiEvent.ApiEvent.newControllerAddress",
      "symbol_kind": "source.lang.swift.decl.var.instance",
      "warning": "undocumented"
    },
    {
      "file": "/Users/dhart/repos/netfoundry/ziti-sdk-swift/lib/ZitiEvent.swift",
      "line": 126,
      "symbol": "ZitiEvent.type",
      "symbol_kind": "source.lang.swift.decl.var.instance",
      "warning": "undocumented"
    },
    {
      "file": "/Users/dhart/repos/netfoundry/ziti-sdk-swift/lib/ZitiEvent.swift",
      "line": 127,
      "symbol": "ZitiEvent.contextEvent",
      "symbol_kind": "source.lang.swift.decl.var.instance",
      "warning": "undocumented"
    },
    {
      "file": "/Users/dhart/repos/netfoundry/ziti-sdk-swift/lib/ZitiEvent.swift",
      "line": 128,
      "symbol": "ZitiEvent.routerEvent",
      "symbol_kind": "source.lang.swift.decl.var.instance",
      "warning": "undocumented"
    },
    {
      "file": "/Users/dhart/repos/netfoundry/ziti-sdk-swift/lib/ZitiEvent.swift",
      "line": 129,
      "symbol": "ZitiEvent.serviceEvent",
      "symbol_kind": "source.lang.swift.decl.var.instance",
      "warning": "undocumented"
    },
    {
      "file": "/Users/dhart/repos/netfoundry/ziti-sdk-swift/lib/ZitiEvent.swift",
      "line": 130,
      "symbol": "ZitiEvent.mfaAuthEvent",
      "symbol_kind": "source.lang.swift.decl.var.instance",
      "warning": "undocumented"
    },
    {
      "file": "/Users/dhart/repos/netfoundry/ziti-sdk-swift/lib/ZitiEvent.swift",
      "line": 131,
      "symbol": "ZitiEvent.apiEvent",
      "symbol_kind": "source.lang.swift.decl.var.instance",
      "warning": "undocumented"
    },
    {
      "file": "/Users/dhart/repos/netfoundry/ziti-sdk-swift/lib/ZitiEvent.swift",
      "line": 151,
      "symbol": "ZitiEvent.debugDescription",
      "symbol_kind": "source.lang.swift.decl.var.instance",
      "warning": "undocumented"
    },
    {
      "file": "/Users/dhart/repos/netfoundry/ziti-sdk-swift/lib/ZitiHostConfigV1.swift",
      "line": 18,
      "symbol": "ZitiHostConfigV1",
      "symbol_kind": "source.lang.swift.decl.class",
      "warning": "undocumented"
    },
    {
      "file": "/Users/dhart/repos/netfoundry/ziti-sdk-swift/lib/ZitiHostConfigV1.swift",
      "line": 35,
      "symbol": "ZitiHostConfigV1.PortRange",
      "symbol_kind": "source.lang.swift.decl.class",
      "warning": "undocumented"
    },
    {
      "file": "/Users/dhart/repos/netfoundry/ziti-sdk-swift/lib/ZitiHostConfigV1.swift",
      "line": 36,
      "symbol": "ZitiHostConfigV1.PortRange.low",
      "symbol_kind": "source.lang.swift.decl.var.instance",
      "warning": "undocumented"
    },
    {
      "file": "/Users/dhart/repos/netfoundry/ziti-sdk-swift/lib/ZitiHostConfigV1.swift",
      "line": 37,
      "symbol": "ZitiHostConfigV1.PortRange.high",
      "symbol_kind": "source.lang.swift.decl.var.instance",
      "warning": "undocumented"
    },
    {
      "file": "/Users/dhart/repos/netfoundry/ziti-sdk-swift/lib/ZitiHostConfigV1.swift",
      "line": 40,
      "symbol": "ZitiHostConfigV1.ListenOptions",
      "symbol_kind": "source.lang.swift.decl.class",
      "warning": "undocumented"
    },
    {
      "file": "/Users/dhart/repos/netfoundry/ziti-sdk-swift/lib/ZitiHostConfigV1.swift",
      "line": 41,
      "symbol": "ZitiHostConfigV1.ListenOptions.connectTimeoutSeconds",
      "symbol_kind": "source.lang.swift.decl.var.instance",
      "warning": "undocumented"
    },
    {
      "file": "/Users/dhart/repos/netfoundry/ziti-sdk-swift/lib/ZitiHostConfigV1.swift",
      "line": 42,
      "symbol": "ZitiHostConfigV1.ListenOptions.maxConnections",
      "symbol_kind": "source.lang.swift.decl.var.instance",
      "warning": "undocumented"
    },
    {
      "file": "/Users/dhart/repos/netfoundry/ziti-sdk-swift/lib/ZitiHostConfigV1.swift",
      "line": 43,
      "symbol": "ZitiHostConfigV1.ListenOptions.identity",
      "symbol_kind": "source.lang.swift.decl.var.instance",
      "warning": "undocumented"
    },
    {
      "file": "/Users/dhart/repos/netfoundry/ziti-sdk-swift/lib/ZitiHostConfigV1.swift",
      "line": 44,
      "symbol": "ZitiHostConfigV1.ListenOptions.bindUsingEdgeIdentity",
      "symbol_kind": "source.lang.swift.decl.var.instance",
      "warning": "undocumented"
    },
    {
      "file": "/Users/dhart/repos/netfoundry/ziti-sdk-swift/lib/ZitiHostConfigV1.swift",
      "line": 47,
      "symbol": "ZitiHostConfigV1.proto",
      "symbol_kind": "source.lang.swift.decl.var.instance",
      "warning": "undocumented"
    },
    {
      "file": "/Users/dhart/repos/netfoundry/ziti-sdk-swift/lib/ZitiHostConfigV1.swift",
      "line": 48,
      "symbol": "ZitiHostConfigV1.forwardProtocol",
      "symbol_kind": "source.lang.swift.decl.var.instance",
      "warning": "undocumented"
    },
    {
      "file": "/Users/dhart/repos/netfoundry/ziti-sdk-swift/lib/ZitiHostConfigV1.swift",
      "line": 49,
      "symbol": "ZitiHostConfigV1.allowedProtocols",
      "symbol_kind": "source.lang.swift.decl.var.instance",
      "warning": "undocumented"
    },
    {
      "file": "/Users/dhart/repos/netfoundry/ziti-sdk-swift/lib/ZitiHostConfigV1.swift",
      "line": 51,
      "symbol": "ZitiHostConfigV1.address",
      "symbol_kind": "source.lang.swift.decl.var.instance",
      "warning": "undocumented"
    },
    {
      "file": "/Users/dhart/repos/netfoundry/ziti-sdk-swift/lib/ZitiHostConfigV1.swift",
      "line": 52,
      "symbol": "ZitiHostConfigV1.forwardAddress",
      "symbol_kind": "source.lang.swift.decl.var.instance",
      "warning": "undocumented"
    },
    {
      "file": "/Users/dhart/repos/netfoundry/ziti-sdk-swift/lib/ZitiHostConfigV1.swift",
      "line": 53,
      "symbol": "ZitiHostConfigV1.allowedAddresses",
      "symbol_kind": "source.lang.swift.decl.var.instance",
      "warning": "undocumented"
    },
    {
      "file": "/Users/dhart/repos/netfoundry/ziti-sdk-swift/lib/ZitiHostConfigV1.swift",
      "line": 54,
      "symbol": "ZitiHostConfigV1.allowedSourceAddresses",
      "symbol_kind": "source.lang.swift.decl.var.instance",
      "warning": "undocumented"
    },
    {
      "file": "/Users/dhart/repos/netfoundry/ziti-sdk-swift/lib/ZitiHostConfigV1.swift",
      "line": 56,
      "symbol": "ZitiHostConfigV1.port",
      "symbol_kind": "source.lang.swift.decl.var.instance",
      "warning": "undocumented"
    },
    {
      "file": "/Users/dhart/repos/netfoundry/ziti-sdk-swift/lib/ZitiHostConfigV1.swift",
      "line": 57,
      "symbol": "ZitiHostConfigV1.forwardPort",
      "symbol_kind": "source.lang.swift.decl.var.instance",
      "warning": "undocumented"
    },
    {
      "file": "/Users/dhart/repos/netfoundry/ziti-sdk-swift/lib/ZitiHostConfigV1.swift",
      "line": 58,
      "symbol": "ZitiHostConfigV1.allowedPortRanges",
      "symbol_kind": "source.lang.swift.decl.var.instance",
      "warning": "undocumented"
    },
    {
      "file": "/Users/dhart/repos/netfoundry/ziti-sdk-swift/lib/ZitiHostConfigV1.swift",
      "line": 60,
      "symbol": "ZitiHostConfigV1.listenOptions",
      "symbol_kind": "source.lang.swift.decl.var.instance",
      "warning": "undocumented"
    },
    {
      "file": "/Users/dhart/repos/netfoundry/ziti-sdk-swift/lib/ZitiInterceptConfigV1.swift",
      "line": 18,
      "symbol": "ZitiInterceptConfigV1",
      "symbol_kind": "source.lang.swift.decl.class",
      "warning": "undocumented"
    },
    {
      "file": "/Users/dhart/repos/netfoundry/ziti-sdk-swift/lib/ZitiInterceptConfigV1.swift",
      "line": 21,
      "symbol": "ZitiInterceptConfigV1.PortRange",
      "symbol_kind": "source.lang.swift.decl.class",
      "warning": "undocumented"
    },
    {
      "file": "/Users/dhart/repos/netfoundry/ziti-sdk-swift/lib/ZitiInterceptConfigV1.swift",
      "line": 22,
      "symbol": "ZitiInterceptConfigV1.PortRange.low",
      "symbol_kind": "source.lang.swift.decl.var.instance",
      "warning": "undocumented"
    },
    {
      "file": "/Users/dhart/repos/netfoundry/ziti-sdk-swift/lib/ZitiInterceptConfigV1.swift",
      "line": 23,
      "symbol": "ZitiInterceptConfigV1.PortRange.high",
      "symbol_kind": "source.lang.swift.decl.var.instance",
      "warning": "undocumented"
    },
    {
      "file": "/Users/dhart/repos/netfoundry/ziti-sdk-swift/lib/ZitiInterceptConfigV1.swift",
      "line": 26,
      "symbol": "ZitiInterceptConfigV1.DialOptions",
      "symbol_kind": "source.lang.swift.decl.class",
      "warning": "undocumented"
    },
    {
      "file": "/Users/dhart/repos/netfoundry/ziti-sdk-swift/lib/ZitiInterceptConfigV1.swift",
      "line": 27,
      "symbol": "ZitiInterceptConfigV1.DialOptions.identity",
      "symbol_kind": "source.lang.swift.decl.var.instance",
      "warning": "undocumented"
    },
    {
      "file": "/Users/dhart/repos/netfoundry/ziti-sdk-swift/lib/ZitiInterceptConfigV1.swift",
      "line": 28,
      "symbol": "ZitiInterceptConfigV1.DialOptions.connectTimeoutSeconds",
      "symbol_kind": "source.lang.swift.decl.var.instance",
      "warning": "undocumented"
    },
    {
      "file": "/Users/dhart/repos/netfoundry/ziti-sdk-swift/lib/ZitiInterceptConfigV1.swift",
      "line": 31,
      "symbol": "ZitiInterceptConfigV1.protocols",
      "symbol_kind": "source.lang.swift.decl.var.instance",
      "warning": "undocumented"
    },
    {
      "file": "/Users/dhart/repos/netfoundry/ziti-sdk-swift/lib/ZitiInterceptConfigV1.swift",
      "line": 32,
      "symbol": "ZitiInterceptConfigV1.addresses",
      "symbol_kind": "source.lang.swift.decl.var.instance",
      "warning": "undocumented"
    },
    {
      "file": "/Users/dhart/repos/netfoundry/ziti-sdk-swift/lib/ZitiInterceptConfigV1.swift",
      "line": 33,
      "symbol": "ZitiInterceptConfigV1.portRanges",
      "symbol_kind": "source.lang.swift.decl.var.instance",
      "warning": "undocumented"
    },
    {
      "file": "/Users/dhart/repos/netfoundry/ziti-sdk-swift/lib/ZitiInterceptConfigV1.swift",
      "line": 35,
      "symbol": "ZitiInterceptConfigV1.dialOptions",
      "symbol_kind": "source.lang.swift.decl.var.instance",
      "warning": "undocumented"
    },
    {
      "file": "/Users/dhart/repos/netfoundry/ziti-sdk-swift/lib/ZitiInterceptConfigV1.swift",
      "line": 36,
      "symbol": "ZitiInterceptConfigV1.sourceIp",
      "symbol_kind": "source.lang.swift.decl.var.instance",
      "warning": "undocumented"
    },
    {
      "file": "/Users/dhart/repos/netfoundry/ziti-sdk-swift/lib/ZitiLog.swift",
      "line": 26,
      "symbol": "ZitiLog.LogLevel.DEBUG",
      "symbol_kind": "source.lang.swift.decl.enumelement",
      "warning": "undocumented"
    },
    {
      "file": "/Users/dhart/repos/netfoundry/ziti-sdk-swift/lib/ZitiLog.swift",
      "line": 26,
      "symbol": "ZitiLog.LogLevel.DEFAULT",
      "symbol_kind": "source.lang.swift.decl.enumelement",
      "warning": "undocumented"
    },
    {
      "file": "/Users/dhart/repos/netfoundry/ziti-sdk-swift/lib/ZitiLog.swift",
      "line": 26,
      "symbol": "ZitiLog.LogLevel.ERROR",
      "symbol_kind": "source.lang.swift.decl.enumelement",
      "warning": "undocumented"
    },
    {
      "file": "/Users/dhart/repos/netfoundry/ziti-sdk-swift/lib/ZitiLog.swift",
      "line": 26,
      "symbol": "ZitiLog.LogLevel.INFO",
      "symbol_kind": "source.lang.swift.decl.enumelement",
      "warning": "undocumented"
    },
    {
      "file": "/Users/dhart/repos/netfoundry/ziti-sdk-swift/lib/ZitiLog.swift",
      "line": 26,
      "symbol": "ZitiLog.LogLevel.NONE",
      "symbol_kind": "source.lang.swift.decl.enumelement",
      "warning": "undocumented"
    },
    {
      "file": "/Users/dhart/repos/netfoundry/ziti-sdk-swift/lib/ZitiLog.swift",
      "line": 26,
      "symbol": "ZitiLog.LogLevel.TRACE",
      "symbol_kind": "source.lang.swift.decl.enumelement",
      "warning": "undocumented"
    },
    {
      "file": "/Users/dhart/repos/netfoundry/ziti-sdk-swift/lib/ZitiLog.swift",
      "line": 26,
      "symbol": "ZitiLog.LogLevel.VERBOSE",
      "symbol_kind": "source.lang.swift.decl.enumelement",
      "warning": "undocumented"
    },
    {
      "file": "/Users/dhart/repos/netfoundry/ziti-sdk-swift/lib/ZitiLog.swift",
      "line": 26,
      "symbol": "ZitiLog.LogLevel.WARN",
      "symbol_kind": "source.lang.swift.decl.enumelement",
      "warning": "undocumented"
    },
    {
      "file": "/Users/dhart/repos/netfoundry/ziti-sdk-swift/lib/ZitiLog.swift",
      "line": 26,
      "symbol": "ZitiLog.LogLevel.WTF",
      "symbol_kind": "source.lang.swift.decl.enumelement",
      "warning": "undocumented"
    },
    {
      "file": "/Users/dhart/repos/netfoundry/ziti-sdk-swift/lib/ZitiMfaAuthQuery.swift",
      "line": 20,
      "symbol": "ZitiMfaAuthQuery",
      "symbol_kind": "source.lang.swift.decl.class",
      "warning": "undocumented"
    },
    {
      "file": "/Users/dhart/repos/netfoundry/ziti-sdk-swift/lib/ZitiMfaAuthQuery.swift",
      "line": 23,
      "symbol": "ZitiMfaAuthQuery.typeId",
      "symbol_kind": "source.lang.swift.decl.var.instance",
      "warning": "undocumented"
    },
    {
      "file": "/Users/dhart/repos/netfoundry/ziti-sdk-swift/lib/ZitiMfaAuthQuery.swift",
      "line": 24,
      "symbol": "ZitiMfaAuthQuery.provider",
      "symbol_kind": "source.lang.swift.decl.var.instance",
      "warning": "undocumented"
    },
    {
      "file": "/Users/dhart/repos/netfoundry/ziti-sdk-swift/lib/ZitiMfaAuthQuery.swift",
      "line": 25,
      "symbol": "ZitiMfaAuthQuery.httpMethod",
      "symbol_kind": "source.lang.swift.decl.var.instance",
      "warning": "undocumented"
    },
    {
      "file": "/Users/dhart/repos/netfoundry/ziti-sdk-swift/lib/ZitiMfaAuthQuery.swift",
      "line": 26,
      "symbol": "ZitiMfaAuthQuery.httpUrl",
      "symbol_kind": "source.lang.swift.decl.var.instance",
      "warning": "undocumented"
    },
    {
      "file": "/Users/dhart/repos/netfoundry/ziti-sdk-swift/lib/ZitiMfaAuthQuery.swift",
      "line": 27,
      "symbol": "ZitiMfaAuthQuery.minLength",
      "symbol_kind": "source.lang.swift.decl.var.instance",
      "warning": "undocumented"
    },
    {
      "file": "/Users/dhart/repos/netfoundry/ziti-sdk-swift/lib/ZitiMfaAuthQuery.swift",
      "line": 28,
      "symbol": "ZitiMfaAuthQuery.maxLength",
      "symbol_kind": "source.lang.swift.decl.var.instance",
      "warning": "undocumented"
    },
    {
      "file": "/Users/dhart/repos/netfoundry/ziti-sdk-swift/lib/ZitiMfaAuthQuery.swift",
      "line": 29,
      "symbol": "ZitiMfaAuthQuery.format",
      "symbol_kind": "source.lang.swift.decl.var.instance",
      "warning": "undocumented"
    },
    {
      "file": "/Users/dhart/repos/netfoundry/ziti-sdk-swift/lib/ZitiMfaEnrollment.swift",
      "line": 20,
      "symbol": "ZitiMfaEnrollment",
      "symbol_kind": "source.lang.swift.decl.class",
      "warning": "undocumented"
    },
    {
      "file": "/Users/dhart/repos/netfoundry/ziti-sdk-swift/lib/ZitiMfaEnrollment.swift",
      "line": 23,
      "symbol": "ZitiMfaEnrollment.isVerified",
      "symbol_kind": "source.lang.swift.decl.var.instance",
      "warning": "undocumented"
    },
    {
      "file": "/Users/dhart/repos/netfoundry/ziti-sdk-swift/lib/ZitiMfaEnrollment.swift",
      "line": 24,
      "symbol": "ZitiMfaEnrollment.provisioningUrl",
      "symbol_kind": "source.lang.swift.decl.var.instance",
      "warning": "undocumented"
    },
    {
      "file": "/Users/dhart/repos/netfoundry/ziti-sdk-swift/lib/ZitiMfaEnrollment.swift",
      "line": 25,
      "symbol": "ZitiMfaEnrollment.recoveryCodes",
      "symbol_kind": "source.lang.swift.decl.var.instance",
      "warning": "undocumented"
    },
    {
      "file": "/Users/dhart/repos/netfoundry/ziti-sdk-swift/lib/ZitiPostureQuery.swift",
      "line": 19,
      "symbol": "ZitiPostureQuery",
      "symbol_kind": "source.lang.swift.decl.class",
      "warning": "undocumented"
    },
    {
      "file": "/Users/dhart/repos/netfoundry/ziti-sdk-swift/lib/ZitiPostureQuery.swift",
      "line": 22,
      "symbol": "ZitiPostureQuery.isPassing",
      "symbol_kind": "source.lang.swift.decl.var.instance",
      "warning": "undocumented"
    },
    {
      "file": "/Users/dhart/repos/netfoundry/ziti-sdk-swift/lib/ZitiPostureQuery.swift",
      "line": 23,
      "symbol": "ZitiPostureQuery.queryType",
      "symbol_kind": "source.lang.swift.decl.var.instance",
      "warning": "undocumented"
    },
    {
      "file": "/Users/dhart/repos/netfoundry/ziti-sdk-swift/lib/ZitiPostureQuery.swift",
      "line": 24,
      "symbol": "ZitiPostureQuery.id",
      "symbol_kind": "source.lang.swift.decl.var.instance",
      "warning": "undocumented"
    },
    {
      "file": "/Users/dhart/repos/netfoundry/ziti-sdk-swift/lib/ZitiPostureQuery.swift",
      "line": 25,
      "symbol": "ZitiPostureQuery.timeout",
      "symbol_kind": "source.lang.swift.decl.var.instance",
      "warning": "undocumented"
    },
    {
      "file": "/Users/dhart/repos/netfoundry/ziti-sdk-swift/lib/ZitiPostureQuery.swift",
      "line": 26,
      "symbol": "ZitiPostureQuery.timeoutRemaining",
      "symbol_kind": "source.lang.swift.decl.var.instance",
      "warning": "undocumented"
    },
    {
      "file": "/Users/dhart/repos/netfoundry/ziti-sdk-swift/lib/ZitiPostureQuerySet.swift",
      "line": 19,
      "symbol": "ZitiPostureQuerySet",
      "symbol_kind": "source.lang.swift.decl.class",
      "warning": "undocumented"
    },
    {
      "file": "/Users/dhart/repos/netfoundry/ziti-sdk-swift/lib/ZitiPostureQuerySet.swift",
      "line": 22,
      "symbol": "ZitiPostureQuerySet.isPassing",
      "symbol_kind": "source.lang.swift.decl.var.instance",
      "warning": "undocumented"
    },
    {
      "file": "/Users/dhart/repos/netfoundry/ziti-sdk-swift/lib/ZitiPostureQuerySet.swift",
      "line": 23,
      "symbol": "ZitiPostureQuerySet.policyId",
      "symbol_kind": "source.lang.swift.decl.var.instance",
      "warning": "undocumented"
    },
    {
      "file": "/Users/dhart/repos/netfoundry/ziti-sdk-swift/lib/ZitiPostureQuerySet.swift",
      "line": 24,
      "symbol": "ZitiPostureQuerySet.policyType",
      "symbol_kind": "source.lang.swift.decl.var.instance",
      "warning": "undocumented"
    },
    {
      "file": "/Users/dhart/repos/netfoundry/ziti-sdk-swift/lib/ZitiPostureQuerySet.swift",
      "line": 25,
      "symbol": "ZitiPostureQuerySet.postureQueries",
      "symbol_kind": "source.lang.swift.decl.var.instance",
      "warning": "undocumented"
    },
    {
      "file": "/Users/dhart/repos/netfoundry/ziti-sdk-swift/lib/ZitiService.swift",
      "line": 19,
      "symbol": "ZitiService",
      "symbol_kind": "source.lang.swift.decl.class",
      "warning": "undocumented"
    },
    {
      "file": "/Users/dhart/repos/netfoundry/ziti-sdk-swift/lib/ZitiService.swift",
      "line": 31,
      "symbol": "ZitiService.cServicePtr",
      "symbol_kind": "source.lang.swift.decl.var.instance",
      "warning": "undocumented"
    },
    {
      "file": "/Users/dhart/repos/netfoundry/ziti-sdk-swift/lib/ZitiService.swift",
      "line": 33,
      "symbol": "ZitiService.name",
      "symbol_kind": "source.lang.swift.decl.var.instance",
      "warning": "undocumented"
    },
    {
      "file": "/Users/dhart/repos/netfoundry/ziti-sdk-swift/lib/ZitiService.swift",
      "line": 34,
      "symbol": "ZitiService.id",
      "symbol_kind": "source.lang.swift.decl.var.instance",
      "warning": "undocumented"
    },
    {
      "file": "/Users/dhart/repos/netfoundry/ziti-sdk-swift/lib/ZitiService.swift",
      "line": 35,
      "symbol": "ZitiService.encrypted",
      "symbol_kind": "source.lang.swift.decl.var.instance",
      "warning": "undocumented"
    },
    {
      "file": "/Users/dhart/repos/netfoundry/ziti-sdk-swift/lib/ZitiService.swift",
      "line": 36,
      "symbol": "ZitiService.permFlags",
      "symbol_kind": "source.lang.swift.decl.var.instance",
      "warning": "undocumented"
    },
    {
      "file": "/Users/dhart/repos/netfoundry/ziti-sdk-swift/lib/ZitiService.swift",
      "line": 37,
      "symbol": "ZitiService.postureQuerySets",
      "symbol_kind": "source.lang.swift.decl.var.instance",
      "warning": "undocumented"
    },
    {
      "file": "/Users/dhart/repos/netfoundry/ziti-sdk-swift/lib/ZitiService.swift",
      "line": 38,
      "symbol": "ZitiService.tunnelClientConfigV1",
      "symbol_kind": "source.lang.swift.decl.var.instance",
      "warning": "undocumented"
    },
    {
      "file": "/Users/dhart/repos/netfoundry/ziti-sdk-swift/lib/ZitiService.swift",
      "line": 39,
      "symbol": "ZitiService.tunnelServerConfigV1",
      "symbol_kind": "source.lang.swift.decl.var.instance",
      "warning": "undocumented"
    },
    {
      "file": "/Users/dhart/repos/netfoundry/ziti-sdk-swift/lib/ZitiService.swift",
      "line": 40,
      "symbol": "ZitiService.urlClientConfigV1",
      "symbol_kind": "source.lang.swift.decl.var.instance",
      "warning": "undocumented"
    },
    {
      "file": "/Users/dhart/repos/netfoundry/ziti-sdk-swift/lib/ZitiService.swift",
      "line": 41,
      "symbol": "ZitiService.interceptConfigV1",
      "symbol_kind": "source.lang.swift.decl.var.instance",
      "warning": "undocumented"
    },
    {
      "file": "/Users/dhart/repos/netfoundry/ziti-sdk-swift/lib/ZitiService.swift",
      "line": 42,
      "symbol": "ZitiService.hostConfigV1",
      "symbol_kind": "source.lang.swift.decl.var.instance",
      "warning": "undocumented"
    },
    {
      "file": "/Users/dhart/repos/netfoundry/ziti-sdk-swift/lib/ZitiTunnel.swift",
      "line": 20,
      "symbol": "ZitiTunnelProvider",
      "symbol_kind": "source.lang.swift.decl.protocol",
      "warning": "undocumented"
    },
    {
      "file": "/Users/dhart/repos/netfoundry/ziti-sdk-swift/lib/ZitiTunnel.swift",
      "line": 21,
      "symbol": "ZitiTunnelProvider.addRoute(_:)",
      "symbol_kind": "source.lang.swift.decl.function.method.instance",
      "warning": "undocumented"
    },
    {
      "file": "/Users/dhart/repos/netfoundry/ziti-sdk-swift/lib/ZitiTunnel.swift",
      "line": 22,
      "symbol": "ZitiTunnelProvider.deleteRoute(_:)",
      "symbol_kind": "source.lang.swift.decl.function.method.instance",
      "warning": "undocumented"
    },
    {
      "file": "/Users/dhart/repos/netfoundry/ziti-sdk-swift/lib/ZitiTunnel.swift",
      "line": 23,
      "symbol": "ZitiTunnelProvider.excludeRoute(_:_:)",
      "symbol_kind": "source.lang.swift.decl.function.method.instance",
      "warning": "undocumented"
    },
    {
      "file": "/Users/dhart/repos/netfoundry/ziti-sdk-swift/lib/ZitiTunnel.swift",
      "line": 24,
      "symbol": "ZitiTunnelProvider.writePacket(_:)",
      "symbol_kind": "source.lang.swift.decl.function.method.instance",
      "warning": "undocumented"
    },
    {
      "file": "/Users/dhart/repos/netfoundry/ziti-sdk-swift/lib/ZitiTunnel.swift",
      "line": 26,
      "symbol": "ZitiTunnelProvider.initCallback(_:_:)",
      "symbol_kind": "source.lang.swift.decl.function.method.instance",
      "warning": "undocumented"
    },
    {
      "file": "/Users/dhart/repos/netfoundry/ziti-sdk-swift/lib/ZitiTunnel.swift",
      "line": 27,
      "symbol": "ZitiTunnelProvider.tunnelEventCallback(_:)",
      "symbol_kind": "source.lang.swift.decl.function.method.instance",
      "warning": "undocumented"
    },
    {
      "file": "/Users/dhart/repos/netfoundry/ziti-sdk-swift/lib/ZitiTunnel.swift",
      "line": 30,
      "symbol": "ZitiTunnel",
      "symbol_kind": "source.lang.swift.decl.class",
      "warning": "undocumented"
    },
    {
      "file": "/Users/dhart/repos/netfoundry/ziti-sdk-swift/lib/ZitiTunnel.swift",
      "line": 44,
      "symbol": "ZitiTunnel.SERVICE_WAIT_TIMEOUT",
      "symbol_kind": "source.lang.swift.decl.var.static",
      "warning": "undocumented"
    },
    {
      "file": "/Users/dhart/repos/netfoundry/ziti-sdk-swift/lib/ZitiTunnel.swift",
      "line": 47,
      "symbol": "ZitiTunnel.IdentitiesLoadedCallback",
      "symbol_kind": "source.lang.swift.decl.typealias",
      "warning": "undocumented"
    },
    {
      "file": "/Users/dhart/repos/netfoundry/ziti-sdk-swift/lib/ZitiTunnel.swift",
      "line": 68,
      "symbol": "ZitiTunnel.Route",
      "symbol_kind": "source.lang.swift.decl.class",
      "warning": "undocumented"
    },
    {
      "file": "/Users/dhart/repos/netfoundry/ziti-sdk-swift/lib/ZitiTunnel.swift",
      "line": 69,
      "symbol": "ZitiTunnel.Route.addr",
      "symbol_kind": "source.lang.swift.decl.var.instance",
      "warning": "undocumented"
    },
    {
      "file": "/Users/dhart/repos/netfoundry/ziti-sdk-swift/lib/ZitiTunnel.swift",
      "line": 70,
      "symbol": "ZitiTunnel.Route.mask",
      "symbol_kind": "source.lang.swift.decl.var.instance",
      "warning": "undocumented"
    },
    {
      "file": "/Users/dhart/repos/netfoundry/ziti-sdk-swift/lib/ZitiTunnel.swift",
      "line": 74,
      "symbol": "ZitiTunnel.init(_:_:_:_:_:)",
      "symbol_kind": "source.lang.swift.decl.function.method.instance",
      "warning": "undocumented"
    },
    {
      "file": "/Users/dhart/repos/netfoundry/ziti-sdk-swift/lib/ZitiTunnel.swift",
      "line": 198,
      "symbol": "ZitiTunnel.startZiti(_:_:_:)",
      "symbol_kind": "source.lang.swift.decl.function.method.instance",
      "warning": "undocumented"
    },
    {
      "file": "/Users/dhart/repos/netfoundry/ziti-sdk-swift/lib/ZitiTunnel.swift",
      "line": 203,
      "symbol": "ZitiTunnel.shutdownZiti(_:)",
      "symbol_kind": "source.lang.swift.decl.function.method.instance",
      "warning": "undocumented"
    },
    {
      "file": "/Users/dhart/repos/netfoundry/ziti-sdk-swift/lib/ZitiTunnel.swift",
      "line": 342,
      "symbol": "ZitiTunnel.queuePacket(_:)",
      "symbol_kind": "source.lang.swift.decl.function.method.instance",
      "warning": "undocumented"
    },
    {
      "file": "/Users/dhart/repos/netfoundry/ziti-sdk-swift/lib/ZitiTunnelClientConfigV1.swift",
      "line": 18,
      "symbol": "ZitiTunnelClientConfigV1",
      "symbol_kind": "source.lang.swift.decl.class",
      "warning": "undocumented"
    },
    {
      "file": "/Users/dhart/repos/netfoundry/ziti-sdk-swift/lib/ZitiTunnelClientConfigV1.swift",
      "line": 21,
      "symbol": "ZitiTunnelClientConfigV1.hostname",
      "symbol_kind": "source.lang.swift.decl.var.instance",
      "warning": "undocumented"
    },
    {
      "file": "/Users/dhart/repos/netfoundry/ziti-sdk-swift/lib/ZitiTunnelClientConfigV1.swift",
      "line": 22,
      "symbol": "ZitiTunnelClientConfigV1.port",
      "symbol_kind": "source.lang.swift.decl.var.instance",
      "warning": "undocumented"
    },
    {
      "file": "/Users/dhart/repos/netfoundry/ziti-sdk-swift/lib/ZitiTunnelEvent.swift",
      "line": 19,
      "symbol": "ZitiTunnelEvent",
      "symbol_kind": "source.lang.swift.decl.class",
      "warning": "undocumented"
    },
    {
      "file": "/Users/dhart/repos/netfoundry/ziti-sdk-swift/lib/ZitiTunnelEvent.swift",
      "line": 21,
      "symbol": "ZitiTunnelEvent.ziti",
      "symbol_kind": "source.lang.swift.decl.var.instance",
      "warning": "undocumented"
    },
    {
      "file": "/Users/dhart/repos/netfoundry/ziti-sdk-swift/lib/ZitiTunnelEvent.swift",
      "line": 32,
      "symbol": "ZitiTunnelEvent.debugDescription",
      "symbol_kind": "source.lang.swift.decl.var.instance",
      "warning": "undocumented"
    },
    {
      "file": "/Users/dhart/repos/netfoundry/ziti-sdk-swift/lib/ZitiTunnelEvent.swift",
      "line": 38,
      "symbol": "ZitiTunnelContextEvent",
      "symbol_kind": "source.lang.swift.decl.class",
      "warning": "undocumented"
    },
    {
      "file": "/Users/dhart/repos/netfoundry/ziti-sdk-swift/lib/ZitiTunnelEvent.swift",
      "line": 39,
      "symbol": "ZitiTunnelContextEvent.status",
      "symbol_kind": "source.lang.swift.decl.var.instance",
      "warning": "undocumented"
    },
    {
      "file": "/Users/dhart/repos/netfoundry/ziti-sdk-swift/lib/ZitiTunnelEvent.swift",
      "line": 40,
      "symbol": "ZitiTunnelContextEvent.name",
      "symbol_kind": "source.lang.swift.decl.var.instance",
      "warning": "undocumented"
    },
    {
      "file": "/Users/dhart/repos/netfoundry/ziti-sdk-swift/lib/ZitiTunnelEvent.swift",
      "line": 41,
      "symbol": "ZitiTunnelContextEvent.version",
      "symbol_kind": "source.lang.swift.decl.var.instance",
      "warning": "undocumented"
    },
    {
      "file": "/Users/dhart/repos/netfoundry/ziti-sdk-swift/lib/ZitiTunnelEvent.swift",
      "line": 42,
      "symbol": "ZitiTunnelContextEvent.controller",
      "symbol_kind": "source.lang.swift.decl.var.instance",
      "warning": "undocumented"
    },
    {
      "file": "/Users/dhart/repos/netfoundry/ziti-sdk-swift/lib/ZitiTunnelEvent.swift",
      "line": 43,
      "symbol": "ZitiTunnelContextEvent.code",
      "symbol_kind": "source.lang.swift.decl.var.instance",
      "warning": "undocumented"
    },
    {
      "file": "/Users/dhart/repos/netfoundry/ziti-sdk-swift/lib/ZitiTunnelEvent.swift",
      "line": 54,
      "symbol": "ZitiTunnelContextEvent.debugDescription",
      "symbol_kind": "source.lang.swift.decl.var.instance",
      "warning": "undocumented"
    },
    {
      "file": "/Users/dhart/repos/netfoundry/ziti-sdk-swift/lib/ZitiTunnelEvent.swift",
      "line": 64,
      "symbol": "ZitiTunnelMfaEvent",
      "symbol_kind": "source.lang.swift.decl.class",
      "warning": "undocumented"
    },
    {
      "file": "/Users/dhart/repos/netfoundry/ziti-sdk-swift/lib/ZitiTunnelEvent.swift",
      "line": 65,
      "symbol": "ZitiTunnelMfaEvent.MfaStatus",
      "symbol_kind": "source.lang.swift.decl.enum",
      "warning": "undocumented"
    },
    {
      "file": "/Users/dhart/repos/netfoundry/ziti-sdk-swift/lib/ZitiTunnelEvent.swift",
      "line": 66,
      "symbol": "ZitiTunnelMfaEvent.MfaStatus.AuthStatus",
      "symbol_kind": "source.lang.swift.decl.enumelement",
      "warning": "undocumented"
    },
    {
      "file": "/Users/dhart/repos/netfoundry/ziti-sdk-swift/lib/ZitiTunnelEvent.swift",
      "line": 67,
      "symbol": "ZitiTunnelMfaEvent.MfaStatus.AuthChallenge",
      "symbol_kind": "source.lang.swift.decl.enumelement",
      "warning": "undocumented"
    },
    {
      "file": "/Users/dhart/repos/netfoundry/ziti-sdk-swift/lib/ZitiTunnelEvent.swift",
      "line": 68,
      "symbol": "ZitiTunnelMfaEvent.MfaStatus.EnrollmentVerification",
      "symbol_kind": "source.lang.swift.decl.enumelement",
      "warning": "undocumented"
    },
    {
      "file": "/Users/dhart/repos/netfoundry/ziti-sdk-swift/lib/ZitiTunnelEvent.swift",
      "line": 69,
      "symbol": "ZitiTunnelMfaEvent.MfaStatus.EnrollmentRemove",
      "symbol_kind": "source.lang.swift.decl.enumelement",
      "warning": "undocumented"
    },
    {
      "file": "/Users/dhart/repos/netfoundry/ziti-sdk-swift/lib/ZitiTunnelEvent.swift",
      "line": 70,
      "symbol": "ZitiTunnelMfaEvent.MfaStatus.EnrollmentChallenge",
      "symbol_kind": "source.lang.swift.decl.enumelement",
      "warning": "undocumented"
    },
    {
      "file": "/Users/dhart/repos/netfoundry/ziti-sdk-swift/lib/ZitiTunnelEvent.swift",
      "line": 71,
      "symbol": "ZitiTunnelMfaEvent.MfaStatus.Uknown",
      "symbol_kind": "source.lang.swift.decl.enumelement",
      "warning": "undocumented"
    },
    {
      "file": "/Users/dhart/repos/netfoundry/ziti-sdk-swift/lib/ZitiTunnelEvent.swift",
      "line": 95,
      "symbol": "ZitiTunnelMfaEvent.provider",
      "symbol_kind": "source.lang.swift.decl.var.instance",
      "warning": "undocumented"
    },
    {
      "file": "/Users/dhart/repos/netfoundry/ziti-sdk-swift/lib/ZitiTunnelEvent.swift",
      "line": 96,
      "symbol": "ZitiTunnelMfaEvent.status",
      "symbol_kind": "source.lang.swift.decl.var.instance",
      "warning": "undocumented"
    },
    {
      "file": "/Users/dhart/repos/netfoundry/ziti-sdk-swift/lib/ZitiTunnelEvent.swift",
      "line": 97,
      "symbol": "ZitiTunnelMfaEvent.operation",
      "symbol_kind": "source.lang.swift.decl.var.instance",
      "warning": "undocumented"
    },
    {
      "file": "/Users/dhart/repos/netfoundry/ziti-sdk-swift/lib/ZitiTunnelEvent.swift",
      "line": 98,
      "symbol": "ZitiTunnelMfaEvent.operationType",
      "symbol_kind": "source.lang.swift.decl.var.instance",
      "warning": "undocumented"
    },
    {
      "file": "/Users/dhart/repos/netfoundry/ziti-sdk-swift/lib/ZitiTunnelEvent.swift",
      "line": 99,
      "symbol": "ZitiTunnelMfaEvent.provisioningUrl",
      "symbol_kind": "source.lang.swift.decl.var.instance",
      "warning": "undocumented"
    },
    {
      "file": "/Users/dhart/repos/netfoundry/ziti-sdk-swift/lib/ZitiTunnelEvent.swift",
      "line": 100,
      "symbol": "ZitiTunnelMfaEvent.recovery_codes",
      "symbol_kind": "source.lang.swift.decl.var.instance",
      "warning": "undocumented"
    },
    {
      "file": "/Users/dhart/repos/netfoundry/ziti-sdk-swift/lib/ZitiTunnelEvent.swift",
      "line": 101,
      "symbol": "ZitiTunnelMfaEvent.code",
      "symbol_kind": "source.lang.swift.decl.var.instance",
      "warning": "undocumented"
    },
    {
      "file": "/Users/dhart/repos/netfoundry/ziti-sdk-swift/lib/ZitiTunnelEvent.swift",
      "line": 122,
      "symbol": "ZitiTunnelMfaEvent.debugDescription",
      "symbol_kind": "source.lang.swift.decl.var.instance",
      "warning": "undocumented"
    },
    {
      "file": "/Users/dhart/repos/netfoundry/ziti-sdk-swift/lib/ZitiTunnelEvent.swift",
      "line": 133,
      "symbol": "ZitiTunnelServiceEvent",
      "symbol_kind": "source.lang.swift.decl.class",
      "warning": "undocumented"
    },
    {
      "file": "/Users/dhart/repos/netfoundry/ziti-sdk-swift/lib/ZitiTunnelEvent.swift",
      "line": 134,
      "symbol": "ZitiTunnelServiceEvent.status",
      "symbol_kind": "source.lang.swift.decl.var.instance",
      "warning": "undocumented"
    },
    {
      "file": "/Users/dhart/repos/netfoundry/ziti-sdk-swift/lib/ZitiTunnelEvent.swift",
      "line": 135,
      "symbol": "ZitiTunnelServiceEvent.removed",
      "symbol_kind": "source.lang.swift.decl.var.instance",
      "warning": "undocumented"
    },
    {
      "file": "/Users/dhart/repos/netfoundry/ziti-sdk-swift/lib/ZitiTunnelEvent.swift",
      "line": 136,
      "symbol": "ZitiTunnelServiceEvent.added",
      "symbol_kind": "source.lang.swift.decl.var.instance",
      "warning": "undocumented"
    },
    {
      "file": "/Users/dhart/repos/netfoundry/ziti-sdk-swift/lib/ZitiTunnelEvent.swift",
      "line": 145,
      "symbol": "ZitiTunnelServiceEvent.debugDescription",
      "symbol_kind": "source.lang.swift.decl.var.instance",
      "warning": "undocumented"
    },
    {
      "file": "/Users/dhart/repos/netfoundry/ziti-sdk-swift/lib/ZitiTunnelEvent.swift",
      "line": 153,
      "symbol": "ZitiTunnelApiEvent",
      "symbol_kind": "source.lang.swift.decl.class",
      "warning": "undocumented"
    },
    {
      "file": "/Users/dhart/repos/netfoundry/ziti-sdk-swift/lib/ZitiTunnelEvent.swift",
      "line": 154,
      "symbol": "ZitiTunnelApiEvent.newControllerAddress",
      "symbol_kind": "source.lang.swift.decl.var.instance",
      "warning": "undocumented"
    },
    {
      "file": "/Users/dhart/repos/netfoundry/ziti-sdk-swift/lib/ZitiTunnelEvent.swift",
      "line": 161,
      "symbol": "ZitiTunnelApiEvent.debugDescription",
      "symbol_kind": "source.lang.swift.decl.var.instance",
      "warning": "undocumented"
    },
    {
      "file": "/Users/dhart/repos/netfoundry/ziti-sdk-swift/lib/ZitiTunnelServerConfigV1.swift",
      "line": 18,
      "symbol": "ZitiTunnelServerConfigV1",
      "symbol_kind": "source.lang.swift.decl.class",
      "warning": "undocumented"
    },
    {
      "file": "/Users/dhart/repos/netfoundry/ziti-sdk-swift/lib/ZitiTunnelServerConfigV1.swift",
      "line": 26,
      "symbol": "ZitiTunnelServerConfigV1.hostname",
      "symbol_kind": "source.lang.swift.decl.var.instance",
      "warning": "undocumented"
    },
    {
      "file": "/Users/dhart/repos/netfoundry/ziti-sdk-swift/lib/ZitiTunnelServerConfigV1.swift",
      "line": 27,
      "symbol": "ZitiTunnelServerConfigV1.port",
      "symbol_kind": "source.lang.swift.decl.var.instance",
      "warning": "undocumented"
    },
    {
      "file": "/Users/dhart/repos/netfoundry/ziti-sdk-swift/lib/ZitiTunnelServerConfigV1.swift",
      "line": 28,
      "symbol": "ZitiTunnelServerConfigV1.proto",
      "symbol_kind": "source.lang.swift.decl.var.instance",
      "warning": "undocumented"
    },
    {
      "file": "/Users/dhart/repos/netfoundry/ziti-sdk-swift/lib/ZitiUrlClientConfigV1.swift",
      "line": 18,
      "symbol": "ZitiUrlClientConfigV1",
      "symbol_kind": "source.lang.swift.decl.class",
      "warning": "undocumented"
    },
    {
      "file": "/Users/dhart/repos/netfoundry/ziti-sdk-swift/lib/ZitiUrlClientConfigV1.swift",
      "line": 21,
      "symbol": "ZitiUrlClientConfigV1.scheme",
      "symbol_kind": "source.lang.swift.decl.var.instance",
      "warning": "undocumented"
    },
    {
      "file": "/Users/dhart/repos/netfoundry/ziti-sdk-swift/lib/ZitiUrlClientConfigV1.swift",
      "line": 22,
      "symbol": "ZitiUrlClientConfigV1.hostname",
      "symbol_kind": "source.lang.swift.decl.var.instance",
      "warning": "undocumented"
    },
    {
      "file": "/Users/dhart/repos/netfoundry/ziti-sdk-swift/lib/ZitiUrlClientConfigV1.swift",
      "line": 23,
      "symbol": "ZitiUrlClientConfigV1.port",
      "symbol_kind": "source.lang.swift.decl.var.instance",
      "warning": "undocumented"
    },
    {
      "file": "/Users/dhart/repos/netfoundry/ziti-sdk-swift/lib/ZitiUrlClientConfigV1.swift",
      "line": 24,
      "symbol": "ZitiUrlClientConfigV1.headers",
      "symbol_kind": "source.lang.swift.decl.var.instance",
      "warning": "undocumented"
    },
    {
      "file": "/Users/dhart/repos/netfoundry/ziti-sdk-swift/lib/ZitiUrlClientConfigV1.swift",
      "line": 26,
      "symbol": "ZitiUrlClientConfigV1.getPort()",
      "symbol_kind": "source.lang.swift.decl.function.method.instance",
      "warning": "undocumented"
    }
  ],
  "source_directory": "/Users/dhart/repos/netfoundry/ziti-sdk-swift"
}

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.