├── .github ├── CODEOWNERS ├── ISSUE_TEMPLATE │ ├── Bug Report.yml │ ├── Feature Request.yml │ └── config.yml ├── PULL_REQUEST_TEMPLATE.md ├── actions │ ├── setup │ │ └── action.yml │ └── test │ │ └── action.yml ├── dependabot.yml ├── stale.yml └── workflows │ ├── main.yml │ └── semgrep.yml ├── .gitignore ├── .semgrepignore ├── .shiprc ├── .swiftlint.yml ├── CHANGELOG.md ├── CONTRIBUTING.md ├── EXAMPLES.md ├── Gemfile ├── Gemfile.lock ├── LICENSE ├── Package.swift ├── README.md ├── SimpleKeychain.podspec ├── SimpleKeychain.xcodeproj ├── project.pbxproj ├── project.xcworkspace │ ├── contents.xcworkspacedata │ └── xcshareddata │ │ └── IDEWorkspaceChecks.plist └── xcshareddata │ └── xcschemes │ ├── SimpleKeychain-iOS.xcscheme │ ├── SimpleKeychain-macOS.xcscheme │ ├── SimpleKeychain-tvOS.xcscheme │ ├── SimpleKeychain-visionOS.xcscheme │ ├── SimpleKeychain-watchOS.xcscheme │ └── SimpleKeychainApp.xcscheme ├── SimpleKeychain ├── Accessibility.swift ├── Info.plist ├── SimpleKeychain.swift └── SimpleKeychainError.swift ├── SimpleKeychainApp ├── AppDelegate.swift ├── Base.lproj │ └── LaunchScreen.xib ├── Images.xcassets │ └── AppIcon.appiconset │ │ └── Contents.json └── Info.plist ├── SimpleKeychainTests ├── AccessibilitySpec.swift ├── Info.plist ├── SimpleKeychainErrorSpec.swift └── SimpleKeychainSpec.swift ├── V1_MIGRATION_GUIDE.md ├── codecov.yml ├── docs ├── css │ ├── 866.60f074fd.css │ ├── 989.4f123103.css │ ├── documentation-topic.99224ad2.css │ ├── index.3a335429.css │ ├── topic.4be8f56d.css │ └── tutorials-overview.7942d777.css ├── data │ └── documentation │ │ ├── simplekeychain.json │ │ └── simplekeychain │ │ ├── accessibility.json │ │ ├── accessibility │ │ ├── !=(_:_:).json │ │ ├── afterfirstunlock.json │ │ ├── afterfirstunlockthisdeviceonly.json │ │ ├── equatable-implementations.json │ │ ├── hash(into:).json │ │ ├── hashvalue.json │ │ ├── init(rawvalue:).json │ │ ├── rawrepresentable-implementations.json │ │ ├── rawvalue.json │ │ ├── whenpasscodesetthisdeviceonly.json │ │ ├── whenunlocked.json │ │ └── whenunlockedthisdeviceonly.json │ │ ├── simplekeychain.json │ │ ├── simplekeychain │ │ ├── data(forkey:).json │ │ ├── deleteall().json │ │ ├── deleteitem(forkey:).json │ │ ├── hasitem(forkey:).json │ │ ├── init(service:accessgroup:accessibility:accesscontrolflags:context:synchronizable:attributes:).json │ │ ├── keys().json │ │ ├── set(_:forkey:)-618u7.json │ │ ├── set(_:forkey:)-n98i.json │ │ └── string(forkey:).json │ │ ├── simplekeychainerror.json │ │ └── simplekeychainerror │ │ ├── !=(_:_:).json │ │ ├── ==(_:_:).json │ │ ├── authfailed.json │ │ ├── debugdescription.json │ │ ├── decodefailed.json │ │ ├── duplicateitem.json │ │ ├── equatable-implementations.json │ │ ├── errordescription.json │ │ ├── failurereason.json │ │ ├── helpanchor.json │ │ ├── interactionnotallowed.json │ │ ├── invalidparameters.json │ │ ├── itemnotavailable.json │ │ ├── itemnotfound.json │ │ ├── localizeddescription.json │ │ ├── localizederror-implementations.json │ │ ├── missingentitlement.json │ │ ├── operationnotimplemented.json │ │ ├── other.json │ │ ├── recoverysuggestion.json │ │ ├── status.json │ │ ├── unknown.json │ │ ├── usercanceled.json │ │ ├── ~=(_:_:)-41lv0.json │ │ └── ~=(_:_:)-7uptb.json ├── developer-og-twitter.jpg ├── developer-og.jpg ├── documentation │ └── simplekeychain │ │ ├── accessibility │ │ ├── !=(_:_:) │ │ │ └── index.html │ │ ├── afterfirstunlock │ │ │ └── index.html │ │ ├── afterfirstunlockthisdeviceonly │ │ │ └── index.html │ │ ├── equatable-implementations │ │ │ └── index.html │ │ ├── hash(into:) │ │ │ └── index.html │ │ ├── hashvalue │ │ │ └── index.html │ │ ├── index.html │ │ ├── init(rawvalue:) │ │ │ └── index.html │ │ ├── rawrepresentable-implementations │ │ │ └── index.html │ │ ├── rawvalue │ │ │ └── index.html │ │ ├── whenpasscodesetthisdeviceonly │ │ │ └── index.html │ │ ├── whenunlocked │ │ │ └── index.html │ │ └── whenunlockedthisdeviceonly │ │ │ └── index.html │ │ ├── index.html │ │ ├── simplekeychain │ │ ├── data(forkey:) │ │ │ └── index.html │ │ ├── deleteall() │ │ │ └── index.html │ │ ├── deleteitem(forkey:) │ │ │ └── index.html │ │ ├── hasitem(forkey:) │ │ │ └── index.html │ │ ├── index.html │ │ ├── init(service:accessgroup:accessibility:accesscontrolflags:context:synchronizable:attributes:) │ │ │ └── index.html │ │ ├── keys() │ │ │ └── index.html │ │ ├── set(_:forkey:)-618u7 │ │ │ └── index.html │ │ ├── set(_:forkey:)-n98i │ │ │ └── index.html │ │ └── string(forkey:) │ │ │ └── index.html │ │ └── simplekeychainerror │ │ ├── !=(_:_:) │ │ └── index.html │ │ ├── ==(_:_:) │ │ └── index.html │ │ ├── authfailed │ │ └── index.html │ │ ├── debugdescription │ │ └── index.html │ │ ├── decodefailed │ │ └── index.html │ │ ├── duplicateitem │ │ └── index.html │ │ ├── equatable-implementations │ │ └── index.html │ │ ├── errordescription │ │ └── index.html │ │ ├── failurereason │ │ └── index.html │ │ ├── helpanchor │ │ └── index.html │ │ ├── index.html │ │ ├── interactionnotallowed │ │ └── index.html │ │ ├── invalidparameters │ │ └── index.html │ │ ├── itemnotavailable │ │ └── index.html │ │ ├── itemnotfound │ │ └── index.html │ │ ├── localizeddescription │ │ └── index.html │ │ ├── localizederror-implementations │ │ └── index.html │ │ ├── missingentitlement │ │ └── index.html │ │ ├── operationnotimplemented │ │ └── index.html │ │ ├── other │ │ └── index.html │ │ ├── recoverysuggestion │ │ └── index.html │ │ ├── status │ │ └── index.html │ │ ├── unknown │ │ └── index.html │ │ ├── usercanceled │ │ └── index.html │ │ ├── ~=(_:_:)-41lv0 │ │ └── index.html │ │ └── ~=(_:_:)-7uptb │ │ └── index.html ├── favicon.ico ├── favicon.svg ├── img │ ├── added-icon.832a5d2c.svg │ ├── deprecated-icon.7bf1740a.svg │ └── modified-icon.efb2697d.svg ├── index.html ├── index │ ├── availability.index │ ├── data.mdb │ ├── index.json │ └── navigator.index ├── js │ ├── 104.fe5974d0.js │ ├── 337.274a8ccc.js │ ├── 842.a7e2003a.js │ ├── 866.7ae93681.js │ ├── chunk-vendors.bdb7cbba.js │ ├── documentation-topic.29bf51a3.js │ ├── highlight-js-bash-js.702f0c5c.js │ ├── highlight-js-c-js.063069d3.js │ ├── highlight-js-cpp-js.458a9ae4.js │ ├── highlight-js-css-js.bfc4251f.js │ ├── highlight-js-custom-markdown.78c9f6ed.js │ ├── highlight-js-custom-swift.738731d1.js │ ├── highlight-js-diff-js.4db9a783.js │ ├── highlight-js-http-js.f78e83c2.js │ ├── highlight-js-java-js.4fe21e94.js │ ├── highlight-js-javascript-js.dfc9d16d.js │ ├── highlight-js-json-js.2a1856ba.js │ ├── highlight-js-llvm-js.26121771.js │ ├── highlight-js-markdown-js.a2f456af.js │ ├── highlight-js-objectivec-js.74dea052.js │ ├── highlight-js-perl-js.da6eda82.js │ ├── highlight-js-php-js.c458ffa4.js │ ├── highlight-js-python-js.60354774.js │ ├── highlight-js-ruby-js.7272231f.js │ ├── highlight-js-scss-js.adcd11a2.js │ ├── highlight-js-shell-js.0ad5b20f.js │ ├── highlight-js-swift-js.bdd5bff5.js │ ├── highlight-js-xml-js.0d78f903.js │ ├── index.0d775bb6.js │ ├── topic.37e71576.js │ └── tutorials-overview.acb09e8a.js └── metadata.json ├── fastlane ├── Fastfile ├── Pluginfile └── README.md ├── opslevel.yml ├── tvOSTestHost ├── AppDelegate.swift ├── Assets.xcassets │ ├── App Icon & Top Shelf Image.brandassets │ │ ├── App Icon - App Store.imagestack │ │ │ ├── Back.imagestacklayer │ │ │ │ ├── Content.imageset │ │ │ │ │ └── Contents.json │ │ │ │ └── Contents.json │ │ │ ├── Contents.json │ │ │ ├── Front.imagestacklayer │ │ │ │ ├── Content.imageset │ │ │ │ │ └── Contents.json │ │ │ │ └── Contents.json │ │ │ └── Middle.imagestacklayer │ │ │ │ ├── Content.imageset │ │ │ │ └── Contents.json │ │ │ │ └── Contents.json │ │ ├── App Icon.imagestack │ │ │ ├── Back.imagestacklayer │ │ │ │ ├── Content.imageset │ │ │ │ │ └── Contents.json │ │ │ │ └── Contents.json │ │ │ ├── Contents.json │ │ │ ├── Front.imagestacklayer │ │ │ │ ├── Content.imageset │ │ │ │ │ └── Contents.json │ │ │ │ └── Contents.json │ │ │ └── Middle.imagestacklayer │ │ │ │ ├── Content.imageset │ │ │ │ └── Contents.json │ │ │ │ └── Contents.json │ │ ├── Contents.json │ │ ├── Top Shelf Image Wide.imageset │ │ │ └── Contents.json │ │ └── Top Shelf Image.imageset │ │ │ └── Contents.json │ └── Contents.json ├── Base.lproj │ ├── LaunchScreen.storyboard │ └── Main.storyboard ├── Info.plist ├── ViewController.swift └── tvOSTestHost.entitlements └── visionOSTestHost ├── Assets.xcassets ├── AppIcon.solidimagestack │ ├── Back.solidimagestacklayer │ │ ├── Content.imageset │ │ │ └── Contents.json │ │ └── Contents.json │ ├── Contents.json │ ├── Front.solidimagestacklayer │ │ ├── Content.imageset │ │ │ └── Contents.json │ │ └── Contents.json │ └── Middle.solidimagestacklayer │ │ ├── Content.imageset │ │ └── Contents.json │ │ └── Contents.json └── Contents.json ├── ContentView.swift ├── Info.plist └── visionOSTestHostApp.swift /.github/CODEOWNERS: -------------------------------------------------------------------------------- 1 | * @auth0/project-dx-sdks-engineer-codeowner 2 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/Bug Report.yml: -------------------------------------------------------------------------------- 1 | name: 🐞 Report a bug 2 | description: Have you found a bug or issue? Create a bug report for this library 3 | labels: ["bug"] 4 | 5 | body: 6 | - type: markdown 7 | attributes: 8 | value: | 9 | **Please do not report security vulnerabilities here**. The [Responsible Disclosure Program](https://auth0.com/responsible-disclosure-policy) details the procedure for disclosing security issues. 10 | 11 | - type: checkboxes 12 | id: checklist 13 | attributes: 14 | label: Checklist 15 | options: 16 | - label: I have looked into the [Readme](https://github.com/auth0/SimpleKeychain#readme) and the [Examples](https://github.com/auth0/SimpleKeychain/blob/master/EXAMPLES.md), and have not found a suitable solution or answer. 17 | required: true 18 | - label: I have searched the [issues](https://github.com/auth0/SimpleKeychain/issues) and have not found a suitable solution or answer. 19 | required: true 20 | - label: I have searched the [Auth0 Community](https://community.auth0.com) forums and have not found a suitable solution or answer. 21 | required: true 22 | - label: I agree to the terms within the [Auth0 Code of Conduct](https://github.com/auth0/open-source-template/blob/master/CODE-OF-CONDUCT.md). 23 | required: true 24 | 25 | - type: textarea 26 | id: description 27 | attributes: 28 | label: Description 29 | description: Provide a clear and concise description of the issue, including what you expected to happen. 30 | validations: 31 | required: true 32 | 33 | - type: textarea 34 | id: reproduction 35 | attributes: 36 | label: Reproduction 37 | description: Detail the steps taken to reproduce this error, and whether this issue can be reproduced consistently or if it is intermittent. 38 | placeholder: | 39 | 1. Step 1... 40 | 2. Step 2... 41 | 3. ... 42 | validations: 43 | required: true 44 | 45 | - type: textarea 46 | id: additional-context 47 | attributes: 48 | label: Additional context 49 | description: Other libraries that might be involved, or any other relevant information you think would be useful. 50 | validations: 51 | required: false 52 | 53 | - type: input 54 | id: environment-version 55 | attributes: 56 | label: SimpleKeychain version 57 | validations: 58 | required: true 59 | 60 | - type: dropdown 61 | id: environment-platform 62 | attributes: 63 | label: Platform 64 | multiple: true 65 | options: 66 | - iOS 67 | - iPadOS 68 | - macOS 69 | - macCatalyst 70 | - tvOS 71 | - watchOS 72 | validations: 73 | required: true 74 | 75 | - type: input 76 | id: environment-platform-version 77 | attributes: 78 | label: Platform version(s) 79 | validations: 80 | required: true 81 | 82 | - type: input 83 | id: environment-xcode-version 84 | attributes: 85 | label: Xcode version 86 | validations: 87 | required: true 88 | 89 | - type: dropdown 90 | id: environment-package-manager 91 | attributes: 92 | label: Package manager 93 | multiple: false 94 | options: 95 | - Swift Package Manager 96 | - Cocoapods 97 | - Carthage 98 | - None 99 | validations: 100 | required: true 101 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/Feature Request.yml: -------------------------------------------------------------------------------- 1 | name: 🧩 Feature request 2 | description: Suggest an idea or a feature for this library 3 | labels: ["feature request"] 4 | 5 | body: 6 | - type: checkboxes 7 | id: checklist 8 | attributes: 9 | label: Checklist 10 | options: 11 | - label: I have looked into the [Readme](https://github.com/auth0/SimpleKeychain#readme) and the [Examples](https://github.com/auth0/SimpleKeychain/blob/master/EXAMPLES.md), and have not found a suitable solution or answer. 12 | required: true 13 | - label: I have searched the [issues](https://github.com/auth0/SimpleKeychain/issues) and have not found a suitable solution or answer. 14 | required: true 15 | - label: I have searched the [Auth0 Community](https://community.auth0.com) forums and have not found a suitable solution or answer. 16 | required: true 17 | - label: I agree to the terms within the [Auth0 Code of Conduct](https://github.com/auth0/open-source-template/blob/master/CODE-OF-CONDUCT.md). 18 | required: true 19 | 20 | - type: textarea 21 | id: description 22 | attributes: 23 | label: Describe the problem you'd like to have solved 24 | description: A clear and concise description of what the problem is. 25 | placeholder: I'm always frustrated when... 26 | validations: 27 | required: true 28 | 29 | - type: textarea 30 | id: ideal-solution 31 | attributes: 32 | label: Describe the ideal solution 33 | description: A clear and concise description of what you want to happen. 34 | validations: 35 | required: true 36 | 37 | - type: textarea 38 | id: alternatives-and-workarounds 39 | attributes: 40 | label: Alternatives and current workarounds 41 | description: A clear and concise description of any alternatives you've considered or any workarounds that are currently in place. 42 | validations: 43 | required: false 44 | 45 | - type: textarea 46 | id: additional-context 47 | attributes: 48 | label: Additional context 49 | description: Add any other context or screenshots about the feature request here. 50 | validations: 51 | required: false 52 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/config.yml: -------------------------------------------------------------------------------- 1 | blank_issues_enabled: false 2 | contact_links: 3 | - name: 🤔 Help & Questions 4 | url: https://community.auth0.com 5 | about: Ask general support or usage questions in the Auth0 Community forums 6 | - name: 🚀 Usage 7 | url: https://github.com/auth0/SimpleKeychain#usage 8 | about: Check the Usage section of the README to get up to speed with SimpleKeychain 9 | - name: 📖 API Documentation 10 | url: https://auth0.github.io/SimpleKeychain/documentation/simplekeychain 11 | about: Check the public API documentation for in-depth overview of all the available features 12 | -------------------------------------------------------------------------------- /.github/PULL_REQUEST_TEMPLATE.md: -------------------------------------------------------------------------------- 1 | 6 | 7 | - [ ] All new/changed/fixed functionality is covered by tests (or N/A) 8 | - [ ] I have added documentation for all new/changed functionality (or N/A) 9 | 10 | 13 | 14 | ### 📋 Changes 15 | 16 | 22 | 23 | ### 📎 References 24 | 25 | 35 | 36 | ### 🎯 Testing 37 | 38 | 41 | -------------------------------------------------------------------------------- /.github/actions/setup/action.yml: -------------------------------------------------------------------------------- 1 | name: Set up environment 2 | description: Set up the environment for building and testing the library on a given platform 3 | 4 | inputs: 5 | ruby: 6 | description: The version of Ruby to use 7 | required: true 8 | 9 | xcode: 10 | description: The version of Xcode to use 11 | required: true 12 | 13 | runs: 14 | using: composite 15 | 16 | steps: 17 | - name: Set up Ruby 18 | uses: ruby/setup-ruby@13e7a03dc3ac6c3798f4570bfead2aed4d96abfb # pin@v1.244.0 19 | with: 20 | ruby-version: ${{ inputs.ruby }} 21 | bundler-cache: true 22 | cache-version: 1 23 | 24 | - name: Setup Xcode 25 | uses: mxcl/xcodebuild@e366f14791346edb74397fe9a762ccee86eddc06 # pin@v3.5.1 26 | with: 27 | xcode: ${{ inputs.xcode }} 28 | action: none 29 | verbosity: xcbeautify 30 | -------------------------------------------------------------------------------- /.github/actions/test/action.yml: -------------------------------------------------------------------------------- 1 | name: Run tests 2 | description: Run library tests for a given platform 3 | 4 | inputs: 5 | xcode: 6 | description: The version of Xcode to use 7 | required: true 8 | 9 | scheme: 10 | description: The Xcode scheme to use 11 | required: true 12 | 13 | platform: 14 | description: The platform to build for 15 | required: true 16 | 17 | runs: 18 | using: composite 19 | 20 | steps: 21 | - name: Save Xcode version 22 | run: xcodebuild -version | tee .xcode-version 23 | shell: bash 24 | 25 | - name: Run tests 26 | uses: mxcl/xcodebuild@e366f14791346edb74397fe9a762ccee86eddc06 # pin@v3.5.1 27 | with: 28 | xcode: ${{ inputs.xcode }} 29 | scheme: ${{ inputs.scheme }} 30 | platform: ${{ inputs.platform }} 31 | code-coverage: true 32 | verbosity: xcbeautify 33 | -------------------------------------------------------------------------------- /.github/dependabot.yml: -------------------------------------------------------------------------------- 1 | version: 2 2 | 3 | updates: 4 | - package-ecosystem: bundler 5 | directory: / 6 | schedule: 7 | interval: daily 8 | ignore: 9 | - dependency-name: '*' 10 | update-types: [version-update:semver-major] 11 | labels: 12 | - dependencies 13 | 14 | - package-ecosystem: github-actions 15 | directory: / 16 | schedule: 17 | interval: daily 18 | labels: 19 | - dependencies 20 | 21 | - package-ecosystem: github-actions 22 | directory: /.github/actions/setup 23 | schedule: 24 | interval: daily 25 | labels: 26 | - dependencies 27 | 28 | - package-ecosystem: github-actions 29 | directory: /.github/actions/test 30 | schedule: 31 | interval: daily 32 | labels: 33 | - dependencies 34 | -------------------------------------------------------------------------------- /.github/stale.yml: -------------------------------------------------------------------------------- 1 | # Configuration for probot-stale - https://github.com/probot/stale 2 | 3 | # Number of days of inactivity before an Issue or Pull Request becomes stale 4 | daysUntilStale: 90 5 | 6 | # Number of days of inactivity before an Issue or Pull Request with the stale label is closed. 7 | daysUntilClose: 7 8 | 9 | # Issues or Pull Requests with these labels will never be considered stale. Set to `[]` to disable 10 | exemptLabels: [] 11 | 12 | # Set to true to ignore issues with an assignee (defaults to false) 13 | exemptAssignees: true 14 | 15 | # Label to use when marking as stale 16 | staleLabel: closed:stale 17 | 18 | # Comment to post when marking as stale. Set to `false` to disable 19 | markComment: > 20 | This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. If you have not received a response for our team (apologies for the delay) and this is still a blocker, please reply with additional information or just a ping. Thank you for your contribution! 🙇‍♂️ -------------------------------------------------------------------------------- /.github/workflows/semgrep.yml: -------------------------------------------------------------------------------- 1 | name: Semgrep 2 | 3 | on: 4 | pull_request: {} 5 | 6 | push: 7 | branches: [master, main] 8 | 9 | schedule: 10 | - cron: '30 0 1,15 * *' 11 | 12 | jobs: 13 | semgrep: 14 | name: Scan 15 | runs-on: ubuntu-latest 16 | container: 17 | image: returntocorp/semgrep 18 | # Skip any PR created by dependabot to avoid permission issues 19 | if: (github.actor != 'dependabot[bot]') 20 | steps: 21 | - uses: actions/checkout@v4 22 | 23 | - run: semgrep ci 24 | env: 25 | SEMGREP_APP_TOKEN: ${{ secrets.SEMGREP_APP_TOKEN }} 26 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # OS X 2 | .DS_Store 3 | 4 | # Xcode 5 | build/ 6 | *.pbxuser 7 | !default.pbxuser 8 | *.mode1v3 9 | !default.mode1v3 10 | *.mode2v3 11 | !default.mode2v3 12 | *.perspectivev3 13 | !default.perspectivev3 14 | xcuserdata 15 | *.xccheckout 16 | profile 17 | *.moved-aside 18 | DerivedData 19 | *.hmap 20 | *.ipa 21 | *.xcscmblueprint 22 | 23 | # Bundler 24 | .bundle 25 | 26 | # CocoaPods 27 | Pods/ 28 | 29 | # Carthage 30 | Carthage/ 31 | SimpleKeychain.framework 32 | SimpleKeychain.framework.zip 33 | 34 | #Fastlane 35 | fastlane/report.xml 36 | **/test_output/ 37 | .env 38 | fastlane/screenshots/ 39 | 40 | #SwiftPM 41 | .swiftpm/ 42 | .build/ 43 | Package.resolved 44 | 45 | # DocC 46 | docs.archive/ 47 | -------------------------------------------------------------------------------- /.semgrepignore: -------------------------------------------------------------------------------- 1 | docs/ 2 | SimpleKeychainTests/ 3 | -------------------------------------------------------------------------------- /.shiprc: -------------------------------------------------------------------------------- 1 | { 2 | "files": { 3 | "SimpleKeychain/Info.plist": [], 4 | "SimpleKeychain.podspec": [] 5 | }, 6 | "postbump": "bundle update && bundle exec fastlane ios build_docs", 7 | "prefixVersion": false 8 | } 9 | -------------------------------------------------------------------------------- /.swiftlint.yml: -------------------------------------------------------------------------------- 1 | opt_in_rules: # some rules are only opt-in 2 | - empty_count 3 | # Find all the available rules by running: 4 | # swiftlint rules 5 | included: # paths to include during linting. `--path` is ignored if present. 6 | - SimpleKeychain 7 | excluded: # paths to ignore during linting. Takes precedence over `included`. 8 | - Carthage 9 | - Pods 10 | # configurable rules can be customized from this configuration file 11 | # rules that have both warning and error levels, can set just the warning level 12 | # implicitly 13 | line_length: 500 14 | # they can set both implicitly with an array 15 | type_body_length: 16 | - 300 # warning 17 | - 400 # error 18 | type_name: 19 | min_length: 3 # only warning 20 | identifier_name: 21 | min_length: # only min_length 22 | warning: 3 # only error 23 | reporter: "xcode" # reporter type (xcode, json, csv, checkstyle, junit) 24 | -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | # Contributing 2 | 3 | > [!IMPORTANT] 4 | > Tests must be added for all new functionality. Existing tests must be updated for all changed/fixed functionality, where applicable. All tests must complete without errors. All new functionality must be documented as well. 5 | 6 | ## Environment setup 7 | 8 | 1. Clone this repository and enter its root directory. 9 | 2. Open `SimpleKeychain.xcodeproj` in Xcode. 10 | -------------------------------------------------------------------------------- /EXAMPLES.md: -------------------------------------------------------------------------------- 1 | # Examples 2 | 3 | - [Use a custom service name](#use-a-custom-service-name) 4 | - [Include additional attributes](#include-additional-attributes) 5 | - [Share items with other apps and extensions using an access group](#share-items-with-other-apps-and-extensions-using-an-access-group) 6 | - [Share items with other devices through iCloud synchronization](#share-items-with-other-devices-through-icloud-synchronization) 7 | - [Restrict item accessibility based on device state](#restrict-item-accessibility-based-on-device-state) 8 | - [Require Touch ID / Face ID to retrieve an item](#require-touch-id--face-id-to-retrieve-an-item) 9 | 10 | --- 11 | 12 | ## Use a custom service name 13 | 14 | When creating the SimpleKeychain instance, specify a service name under which to save items. By default the bundle identifier of your app is used. 15 | 16 | ```swift 17 | let simpleKeychain = SimpleKeychain(service: "Auth0") 18 | ``` 19 | 20 | ## Include additional attributes 21 | 22 | When creating the SimpleKeychain instance, specify additional attributes to be included in every query. 23 | 24 | ```swift 25 | let attributes = [kSecUseDataProtectionKeychain as String: true] 26 | let simpleKeychain = SimpleKeychain(attributes: attributes) 27 | ``` 28 | 29 | ## Share items with other apps and extensions using an access group 30 | 31 | When creating the SimpleKeychain instance, specify the access group that the app may share entries with. 32 | 33 | ```swift 34 | let simpleKeychain = SimpleKeychain(accessGroup: "ABCDEFGH.com.example.myaccessgroup") 35 | ``` 36 | 37 | > [!NOTE] 38 | > For more information on access group sharing, see [Sharing Access to Keychain Items Among a Collection of Apps](https://developer.apple.com/documentation/security/keychain_services/keychain_items/sharing_access_to_keychain_items_among_a_collection_of_apps). 39 | 40 | ## Share items with other devices through iCloud synchronization 41 | 42 | When creating the SimpleKeychain instance, set `synchronizable` to `true` to enable iCloud synchronization. 43 | 44 | ```swift 45 | let simpleKeychain = SimpleKeychain(sychronizable: true) 46 | ``` 47 | 48 | > [!NOTE] 49 | > For more information on iCloud synchronization, check the [kSecAttrSynchronizable documentation](https://developer.apple.com/documentation/security/ksecattrsynchronizable). 50 | 51 | ## Restrict item accessibility based on device state 52 | 53 | When creating the SimpleKeychain instance, specify a custom accesibility value to be used. The default value is `.afterFirstUnlock`. 54 | 55 | ```swift 56 | let simpleKeychain = SimpleKeychain(accessibility: .whenUnlocked) 57 | ``` 58 | 59 | > [!NOTE] 60 | > For more information on accessibility, see [Restricting Keychain Item Accessibility](https://developer.apple.com/documentation/security/keychain_services/keychain_items/restricting_keychain_item_accessibility). 61 | 62 | ## Require Touch ID / Face ID to retrieve an item 63 | 64 | When creating the SimpleKeychain instance, specify the access control flags to be used. You can also include an `LAContext` instance with your Touch ID / Face ID configuration. 65 | 66 | ```swift 67 | let context = LAContext() 68 | context.touchIDAuthenticationAllowableReuseDuration = 10 69 | let simpleKeychain = SimpleKeychain(accessControlFlags: .biometryCurrentSet, 70 | context: context) 71 | ``` 72 | 73 | > [!NOTE] 74 | > For more information on access control, see [Restricting Keychain Item Accessibility](https://developer.apple.com/documentation/security/keychain_services/keychain_items/restricting_keychain_item_accessibility). 75 | 76 | --- 77 | 78 | [Go up ⤴](#examples) 79 | -------------------------------------------------------------------------------- /Gemfile: -------------------------------------------------------------------------------- 1 | source 'https://rubygems.org' 2 | 3 | gem 'fastlane' 4 | gem 'cocoapods' 5 | gem 'slather' 6 | 7 | plugins_path = File.join(File.dirname(__FILE__), 'fastlane', 'Pluginfile') 8 | eval_gemfile(plugins_path) if File.exist?(plugins_path) 9 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2022 Auth0, Inc. (http://auth0.com) 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /Package.swift: -------------------------------------------------------------------------------- 1 | // swift-tools-version:6.0 2 | import PackageDescription 3 | 4 | let package = Package( 5 | name: "SimpleKeychain", 6 | platforms: [.iOS(.v14), .macOS(.v11), .tvOS(.v14), .watchOS(.v7), .visionOS(.v1)], 7 | products: [.library(name: "SimpleKeychain", targets: ["SimpleKeychain"])], 8 | targets: [ 9 | .target( 10 | name: "SimpleKeychain", 11 | dependencies: [], 12 | path: "SimpleKeychain", 13 | exclude: ["Info.plist"]), 14 | .testTarget( 15 | name: "SimpleKeychainTests", 16 | dependencies: [ 17 | "SimpleKeychain", 18 | ], 19 | path: "SimpleKeychainTests", 20 | exclude: ["Info.plist"]) 21 | ] 22 | ) 23 | -------------------------------------------------------------------------------- /SimpleKeychain.podspec: -------------------------------------------------------------------------------- 1 | Pod::Spec.new do |s| 2 | s.name = 'SimpleKeychain' 3 | s.version = '1.3.0' 4 | s.summary = 'A simple Keychain wrapper for iOS, macOS, tvOS, and watchOS' 5 | s.description = <<-DESC 6 | Easily store your user's credentials in the Keychain. 7 | Supports sharing credentials with an access group or through iCloud, and integrating Touch ID / Face ID. 8 | DESC 9 | s.homepage = 'https://github.com/auth0/SimpleKeychain' 10 | s.license = 'MIT' 11 | s.author = { 'Auth0' => 'support@auth0.com', 'Rita Zerrizuela' => 'rita.zerrizuela@auth0.com' } 12 | s.source = { :git => 'https://github.com/auth0/SimpleKeychain.git', :tag => s.version.to_s } 13 | s.social_media_url = 'https://twitter.com/auth0' 14 | 15 | s.ios.deployment_target = '14.0' 16 | s.osx.deployment_target = '11.0' 17 | s.tvos.deployment_target = '14.0' 18 | s.watchos.deployment_target = '7.0' 19 | s.visionos.deployment_target = '1.0' 20 | 21 | s.source_files = 'SimpleKeychain/*.swift' 22 | s.swift_versions = ['6.0', '6.1'] 23 | end 24 | -------------------------------------------------------------------------------- /SimpleKeychain.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /SimpleKeychain.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /SimpleKeychain.xcodeproj/xcshareddata/xcschemes/SimpleKeychain-watchOS.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 24 | 25 | 30 | 31 | 32 | 33 | 43 | 44 | 50 | 51 | 52 | 53 | 59 | 60 | 66 | 67 | 68 | 69 | 71 | 72 | 75 | 76 | 77 | -------------------------------------------------------------------------------- /SimpleKeychain.xcodeproj/xcshareddata/xcschemes/SimpleKeychainApp.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 24 | 25 | 30 | 31 | 32 | 33 | 43 | 45 | 51 | 52 | 53 | 54 | 60 | 62 | 68 | 69 | 70 | 71 | 73 | 74 | 77 | 78 | 79 | -------------------------------------------------------------------------------- /SimpleKeychain/Accessibility.swift: -------------------------------------------------------------------------------- 1 | import Security 2 | 3 | /// Represents the accessibility types of Keychain items. It's a mirror of `kSecAttrAccessible` values. 4 | public enum Accessibility: RawRepresentable, @unchecked Sendable { 5 | 6 | /// The data in the Keychain item can be accessed only while the device is unlocked by the user. 7 | /// See [kSecAttrAccessibleWhenUnlocked](https://developer.apple.com/documentation/security/ksecattraccessiblewhenunlocked). 8 | case whenUnlocked 9 | 10 | /// The data in the Keychain can only be accessed when the device is unlocked. Only available if a passcode is set 11 | /// on the device. 12 | /// See [kSecAttrAccessibleWhenUnlockedThisDeviceOnly](https://developer.apple.com/documentation/security/ksecattraccessiblewhenpasscodesetthisdeviceonly). 13 | case whenUnlockedThisDeviceOnly 14 | 15 | /// The data in the Keychain item cannot be accessed after a restart until the device has been unlocked once by the 16 | /// user. 17 | /// See [kSecAttrAccessibleAfterFirstUnlock](https://developer.apple.com/documentation/security/ksecattraccessibleafterfirstunlock). 18 | case afterFirstUnlock 19 | 20 | /// The data in the Keychain item cannot be accessed after a restart until the device has been unlocked once by the 21 | /// user. 22 | /// See [kSecAttrAccessibleAfterFirstUnlockThisDeviceOnly](https://developer.apple.com/documentation/security/ksecattraccessibleafterfirstunlockthisdeviceonly). 23 | case afterFirstUnlockThisDeviceOnly 24 | 25 | /// The data in the Keychain can only be accessed when the device is unlocked. Only available if a passcode is set 26 | /// on the device. 27 | /// See [kSecAttrAccessibleWhenPasscodeSetThisDeviceOnly](https://developer.apple.com/documentation/security/ksecattraccessiblewhenpasscodesetthisdeviceonly). 28 | case whenPasscodeSetThisDeviceOnly 29 | 30 | /// Maps a `kSecAttrAccessible` value to an accessibility type. 31 | public init(rawValue: CFString) { 32 | switch rawValue { 33 | case kSecAttrAccessibleWhenUnlocked: self = .whenUnlocked 34 | case kSecAttrAccessibleWhenUnlockedThisDeviceOnly: self = .whenUnlockedThisDeviceOnly 35 | case kSecAttrAccessibleAfterFirstUnlock: self = .afterFirstUnlock 36 | case kSecAttrAccessibleAfterFirstUnlockThisDeviceOnly: self = .afterFirstUnlockThisDeviceOnly 37 | case kSecAttrAccessibleWhenPasscodeSetThisDeviceOnly: self = .whenPasscodeSetThisDeviceOnly 38 | default: self = .afterFirstUnlock 39 | } 40 | } 41 | 42 | /// The `kSecAttrAccessible` value of a given accessibility type. 43 | public var rawValue: CFString { 44 | switch self { 45 | case .whenUnlocked: return kSecAttrAccessibleWhenUnlocked 46 | case .whenUnlockedThisDeviceOnly: return kSecAttrAccessibleWhenUnlockedThisDeviceOnly 47 | case .afterFirstUnlock: return kSecAttrAccessibleAfterFirstUnlock 48 | case .afterFirstUnlockThisDeviceOnly: return kSecAttrAccessibleAfterFirstUnlockThisDeviceOnly 49 | case .whenPasscodeSetThisDeviceOnly: return kSecAttrAccessibleWhenPasscodeSetThisDeviceOnly 50 | } 51 | } 52 | } 53 | -------------------------------------------------------------------------------- /SimpleKeychain/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 1.3.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | $(CURRENT_PROJECT_VERSION) 23 | NSPrincipalClass 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /SimpleKeychainApp/AppDelegate.swift: -------------------------------------------------------------------------------- 1 | import UIKit 2 | import SimpleKeychain 3 | 4 | @UIApplicationMain 5 | class AppDelegate: UIResponder, UIApplicationDelegate { 6 | 7 | var window: UIWindow? 8 | 9 | internal func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { 10 | // Override point for customization after application launch. 11 | return true 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /SimpleKeychainApp/Images.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "iphone", 5 | "scale" : "2x", 6 | "size" : "20x20" 7 | }, 8 | { 9 | "idiom" : "iphone", 10 | "scale" : "3x", 11 | "size" : "20x20" 12 | }, 13 | { 14 | "idiom" : "iphone", 15 | "scale" : "2x", 16 | "size" : "29x29" 17 | }, 18 | { 19 | "idiom" : "iphone", 20 | "scale" : "3x", 21 | "size" : "29x29" 22 | }, 23 | { 24 | "idiom" : "iphone", 25 | "scale" : "2x", 26 | "size" : "40x40" 27 | }, 28 | { 29 | "idiom" : "iphone", 30 | "scale" : "3x", 31 | "size" : "40x40" 32 | }, 33 | { 34 | "idiom" : "iphone", 35 | "scale" : "2x", 36 | "size" : "60x60" 37 | }, 38 | { 39 | "idiom" : "iphone", 40 | "scale" : "3x", 41 | "size" : "60x60" 42 | }, 43 | { 44 | "idiom" : "ios-marketing", 45 | "scale" : "1x", 46 | "size" : "1024x1024" 47 | } 48 | ], 49 | "info" : { 50 | "author" : "xcode", 51 | "version" : 1 52 | } 53 | } 54 | -------------------------------------------------------------------------------- /SimpleKeychainApp/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | APPL 17 | CFBundleShortVersionString 18 | 0.1.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | 1 23 | LSRequiresIPhoneOS 24 | 25 | UILaunchStoryboardName 26 | LaunchScreen 27 | UIRequiredDeviceCapabilities 28 | 29 | armv7 30 | 31 | UISupportedInterfaceOrientations 32 | 33 | UIInterfaceOrientationPortrait 34 | UIInterfaceOrientationLandscapeLeft 35 | UIInterfaceOrientationLandscapeRight 36 | 37 | 38 | 39 | -------------------------------------------------------------------------------- /SimpleKeychainTests/AccessibilitySpec.swift: -------------------------------------------------------------------------------- 1 | import Security 2 | import XCTest 3 | import SimpleKeychain 4 | 5 | class AccessibilitySpec: XCTestCase { 6 | 7 | // Test from raw value to case 8 | func testKSecAttrAccessibleWhenUnlocked() { 9 | let sut = Accessibility(rawValue: kSecAttrAccessibleWhenUnlocked) 10 | XCTAssertEqual(sut, Accessibility.whenUnlocked) 11 | } 12 | 13 | func testKSecAttrAccessibleWhenUnlockedThisDeviceOnly() { 14 | let sut = Accessibility(rawValue: kSecAttrAccessibleWhenUnlockedThisDeviceOnly) 15 | XCTAssertEqual(sut, Accessibility.whenUnlockedThisDeviceOnly) 16 | } 17 | 18 | func testKSecAttrAccessibleAfterFirstUnlock() { 19 | let sut = Accessibility(rawValue: kSecAttrAccessibleAfterFirstUnlock) 20 | XCTAssertEqual(sut, Accessibility.afterFirstUnlock) 21 | } 22 | 23 | func testKSecAttrAccessibleAfterFirstUnlockThisDeviceOnly() { 24 | let sut = Accessibility(rawValue: kSecAttrAccessibleAfterFirstUnlockThisDeviceOnly) 25 | XCTAssertEqual(sut, Accessibility.afterFirstUnlockThisDeviceOnly) 26 | } 27 | 28 | func testKSecAttrAccessibleWhenPasscodeSetThisDeviceOnly() { 29 | let sut = Accessibility(rawValue: kSecAttrAccessibleWhenPasscodeSetThisDeviceOnly) 30 | XCTAssertEqual(sut, Accessibility.whenPasscodeSetThisDeviceOnly) 31 | } 32 | 33 | func testUnknownValues() { 34 | let sut = Accessibility(rawValue: "foo" as CFString) 35 | XCTAssertEqual(sut, Accessibility.afterFirstUnlock) 36 | } 37 | 38 | // Test from case to raw value 39 | func testWhenUnlocked() { 40 | let sut = Accessibility.whenUnlocked.rawValue as String 41 | XCTAssertEqual(sut, kSecAttrAccessibleWhenUnlocked as String) 42 | } 43 | 44 | func testWhenUnlockedThisDeviceOnly() { 45 | let sut = Accessibility.whenUnlockedThisDeviceOnly.rawValue as String 46 | XCTAssertEqual(sut, kSecAttrAccessibleWhenUnlockedThisDeviceOnly as String) 47 | } 48 | 49 | func testAfterFirstUnlock() { 50 | let sut = Accessibility.afterFirstUnlock.rawValue as String 51 | XCTAssertEqual(sut, kSecAttrAccessibleAfterFirstUnlock as String) 52 | } 53 | 54 | func testAfterFirstUnlockThisDeviceOnly() { 55 | let sut = Accessibility.afterFirstUnlockThisDeviceOnly.rawValue as String 56 | XCTAssertEqual(sut, kSecAttrAccessibleAfterFirstUnlockThisDeviceOnly as String) 57 | } 58 | 59 | func testWhenPasscodeSetThisDeviceOnly() { 60 | let sut = Accessibility.whenPasscodeSetThisDeviceOnly.rawValue as String 61 | XCTAssertEqual(sut, kSecAttrAccessibleWhenPasscodeSetThisDeviceOnly as String) 62 | } 63 | } 64 | -------------------------------------------------------------------------------- /SimpleKeychainTests/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | BNDL 17 | CFBundleShortVersionString 18 | 0.1.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | 1 23 | 24 | 25 | -------------------------------------------------------------------------------- /codecov.yml: -------------------------------------------------------------------------------- 1 | coverage: 2 | precision: 2 3 | round: down 4 | range: "70...100" 5 | ignore: 6 | - SimpleKeychainTests/* 7 | - SimpleKeychainApp/* 8 | status: 9 | patch: 10 | default: 11 | threshold: 50 12 | if_no_uploads: error 13 | changes: true 14 | project: 15 | default: 16 | target: auto 17 | threshold: 2 18 | if_no_uploads: error 19 | comment: false 20 | -------------------------------------------------------------------------------- /docs/data/documentation/simplekeychain.json: -------------------------------------------------------------------------------- 1 | {"hierarchy":{"paths":[[]]},"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/simplekeychain"]}],"schemaVersion":{"major":0,"patch":0,"minor":3},"metadata":{"roleHeading":"Framework","role":"collection","modules":[{"name":"SimpleKeychain"}],"title":"SimpleKeychain","externalID":"SimpleKeychain","symbolKind":"module"},"topicSections":[{"identifiers":["doc:\/\/com.auth0.SimpleKeychain\/documentation\/SimpleKeychain\/SimpleKeychain","doc:\/\/com.auth0.SimpleKeychain\/documentation\/SimpleKeychain\/SimpleKeychainError"],"title":"Structures","anchor":"Structures","generated":true},{"generated":true,"title":"Enumerations","anchor":"Enumerations","identifiers":["doc:\/\/com.auth0.SimpleKeychain\/documentation\/SimpleKeychain\/Accessibility"]}],"kind":"symbol","identifier":{"url":"doc:\/\/com.auth0.SimpleKeychain\/documentation\/SimpleKeychain","interfaceLanguage":"swift"},"sections":[],"references":{"doc://com.auth0.SimpleKeychain/documentation/SimpleKeychain/Accessibility":{"identifier":"doc:\/\/com.auth0.SimpleKeychain\/documentation\/SimpleKeychain\/Accessibility","title":"Accessibility","kind":"symbol","url":"\/documentation\/simplekeychain\/accessibility","fragments":[{"kind":"keyword","text":"enum"},{"kind":"text","text":" "},{"kind":"identifier","text":"Accessibility"}],"navigatorTitle":[{"text":"Accessibility","kind":"identifier"}],"role":"symbol","abstract":[{"type":"text","text":"Represents the accessibility types of Keychain items. It’s a mirror of "},{"code":"kSecAttrAccessible","type":"codeVoice"},{"type":"text","text":" values."}],"type":"topic"},"doc://com.auth0.SimpleKeychain/documentation/SimpleKeychain":{"title":"SimpleKeychain","role":"collection","type":"topic","kind":"symbol","abstract":[],"identifier":"doc:\/\/com.auth0.SimpleKeychain\/documentation\/SimpleKeychain","url":"\/documentation\/simplekeychain"},"doc://com.auth0.SimpleKeychain/documentation/SimpleKeychain/SimpleKeychainError":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"SimpleKeychainError"}],"url":"\/documentation\/simplekeychain\/simplekeychainerror","title":"SimpleKeychainError","identifier":"doc:\/\/com.auth0.SimpleKeychain\/documentation\/SimpleKeychain\/SimpleKeychainError","abstract":[{"type":"text","text":"Represents an error during a SimpleKeychain operation."}],"kind":"symbol","fragments":[{"text":"struct","kind":"keyword"},{"text":" ","kind":"text"},{"text":"SimpleKeychainError","kind":"identifier"}],"type":"topic"},"doc://com.auth0.SimpleKeychain/documentation/SimpleKeychain/SimpleKeychain":{"kind":"symbol","title":"SimpleKeychain","role":"symbol","identifier":"doc:\/\/com.auth0.SimpleKeychain\/documentation\/SimpleKeychain\/SimpleKeychain","type":"topic","navigatorTitle":[{"kind":"identifier","text":"SimpleKeychain"}],"url":"\/documentation\/simplekeychain\/simplekeychain","abstract":[{"text":"A simple Keychain wrapper for iOS, macOS, tvOS, and watchOS.","type":"text"},{"text":" ","type":"text"},{"text":"Supports sharing credentials with an ","type":"text"},{"inlineContent":[{"text":"access group","type":"text"}],"type":"strong"},{"type":"text","text":" or through "},{"inlineContent":[{"text":"iCloud","type":"text"}],"type":"strong"},{"text":", and integrating","type":"text"},{"text":" ","type":"text"},{"type":"strong","inlineContent":[{"text":"Touch ID \/ Face ID","type":"text"}]},{"type":"text","text":"."}],"fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"text":"SimpleKeychain","kind":"identifier"}]}}} -------------------------------------------------------------------------------- /docs/data/documentation/simplekeychain/accessibility/equatable-implementations.json: -------------------------------------------------------------------------------- 1 | {"metadata":{"role":"collectionGroup","roleHeading":"API Collection","modules":[{"name":"SimpleKeychain"}],"title":"Equatable Implementations"},"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/com.auth0.SimpleKeychain\/documentation\/SimpleKeychain\/Accessibility\/Equatable-Implementations"},"topicSections":[{"generated":true,"anchor":"Operators","identifiers":["doc:\/\/com.auth0.SimpleKeychain\/documentation\/SimpleKeychain\/Accessibility\/!=(_:_:)"],"title":"Operators"}],"kind":"article","sections":[],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/simplekeychain\/accessibility\/equatable-implementations"]}],"schemaVersion":{"minor":3,"patch":0,"major":0},"hierarchy":{"paths":[["doc:\/\/com.auth0.SimpleKeychain\/documentation\/SimpleKeychain","doc:\/\/com.auth0.SimpleKeychain\/documentation\/SimpleKeychain\/Accessibility"]]},"references":{"doc://com.auth0.SimpleKeychain/documentation/SimpleKeychain/Accessibility":{"identifier":"doc:\/\/com.auth0.SimpleKeychain\/documentation\/SimpleKeychain\/Accessibility","title":"Accessibility","kind":"symbol","url":"\/documentation\/simplekeychain\/accessibility","fragments":[{"kind":"keyword","text":"enum"},{"kind":"text","text":" "},{"kind":"identifier","text":"Accessibility"}],"navigatorTitle":[{"text":"Accessibility","kind":"identifier"}],"role":"symbol","abstract":[{"type":"text","text":"Represents the accessibility types of Keychain items. It’s a mirror of "},{"code":"kSecAttrAccessible","type":"codeVoice"},{"type":"text","text":" values."}],"type":"topic"},"doc://com.auth0.SimpleKeychain/documentation/SimpleKeychain/Accessibility/!=(_:_:)":{"url":"\/documentation\/simplekeychain\/accessibility\/!=(_:_:)","kind":"symbol","abstract":[],"type":"topic","identifier":"doc:\/\/com.auth0.SimpleKeychain\/documentation\/SimpleKeychain\/Accessibility\/!=(_:_:)","title":"!=(_:_:)","role":"symbol","fragments":[{"text":"static","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"text":"!=","kind":"identifier"},{"text":" ","kind":"text"},{"text":"(","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":", "},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":") -> "},{"text":"Bool","kind":"typeIdentifier","preciseIdentifier":"s:Sb"}]},"doc://com.auth0.SimpleKeychain/documentation/SimpleKeychain":{"title":"SimpleKeychain","role":"collection","type":"topic","kind":"symbol","abstract":[],"identifier":"doc:\/\/com.auth0.SimpleKeychain\/documentation\/SimpleKeychain","url":"\/documentation\/simplekeychain"}}} -------------------------------------------------------------------------------- /docs/data/documentation/simplekeychain/accessibility/init(rawvalue:).json: -------------------------------------------------------------------------------- 1 | {"metadata":{"role":"symbol","roleHeading":"Initializer","symbolKind":"init","modules":[{"name":"SimpleKeychain"}],"fragments":[{"text":"init","kind":"identifier"},{"text":"(","kind":"text"},{"text":"rawValue","kind":"externalParam"},{"kind":"text","text":": "},{"text":"CFString","kind":"typeIdentifier","preciseIdentifier":"c:@T@CFStringRef"},{"text":")","kind":"text"}],"externalID":"s:14SimpleKeychain13AccessibilityO8rawValueACSo11CFStringRefa_tcfc","title":"init(rawValue:)"},"kind":"symbol","schemaVersion":{"minor":3,"patch":0,"major":0},"hierarchy":{"paths":[["doc:\/\/com.auth0.SimpleKeychain\/documentation\/SimpleKeychain","doc:\/\/com.auth0.SimpleKeychain\/documentation\/SimpleKeychain\/Accessibility"]]},"sections":[],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/simplekeychain\/accessibility\/init(rawvalue:)"]}],"abstract":[{"type":"text","text":"Maps a "},{"code":"kSecAttrAccessible","type":"codeVoice"},{"text":" value to an accessibility type.","type":"text"}],"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"text":"init","kind":"keyword"},{"text":"(","kind":"text"},{"kind":"externalParam","text":"rawValue"},{"text":": ","kind":"text"},{"preciseIdentifier":"c:@T@CFStringRef","text":"CFString","kind":"typeIdentifier"},{"kind":"text","text":")"}],"platforms":["iOS"],"languages":["swift"]}]}],"identifier":{"url":"doc:\/\/com.auth0.SimpleKeychain\/documentation\/SimpleKeychain\/Accessibility\/init(rawValue:)","interfaceLanguage":"swift"},"references":{"doc://com.auth0.SimpleKeychain/documentation/SimpleKeychain/Accessibility":{"identifier":"doc:\/\/com.auth0.SimpleKeychain\/documentation\/SimpleKeychain\/Accessibility","title":"Accessibility","kind":"symbol","url":"\/documentation\/simplekeychain\/accessibility","fragments":[{"kind":"keyword","text":"enum"},{"kind":"text","text":" "},{"kind":"identifier","text":"Accessibility"}],"navigatorTitle":[{"text":"Accessibility","kind":"identifier"}],"role":"symbol","abstract":[{"type":"text","text":"Represents the accessibility types of Keychain items. It’s a mirror of "},{"code":"kSecAttrAccessible","type":"codeVoice"},{"type":"text","text":" values."}],"type":"topic"},"doc://com.auth0.SimpleKeychain/documentation/SimpleKeychain":{"title":"SimpleKeychain","role":"collection","type":"topic","kind":"symbol","abstract":[],"identifier":"doc:\/\/com.auth0.SimpleKeychain\/documentation\/SimpleKeychain","url":"\/documentation\/simplekeychain"},"doc://com.auth0.SimpleKeychain/documentation/SimpleKeychain/Accessibility/init(rawValue:)":{"title":"init(rawValue:)","fragments":[{"text":"init","kind":"identifier"},{"text":"(","kind":"text"},{"text":"rawValue","kind":"externalParam"},{"kind":"text","text":": "},{"preciseIdentifier":"c:@T@CFStringRef","text":"CFString","kind":"typeIdentifier"},{"text":")","kind":"text"}],"abstract":[{"type":"text","text":"Maps a "},{"type":"codeVoice","code":"kSecAttrAccessible"},{"text":" value to an accessibility type.","type":"text"}],"url":"\/documentation\/simplekeychain\/accessibility\/init(rawvalue:)","type":"topic","identifier":"doc:\/\/com.auth0.SimpleKeychain\/documentation\/SimpleKeychain\/Accessibility\/init(rawValue:)","kind":"symbol","role":"symbol"}}} -------------------------------------------------------------------------------- /docs/data/documentation/simplekeychain/accessibility/rawvalue.json: -------------------------------------------------------------------------------- 1 | {"identifier":{"url":"doc:\/\/com.auth0.SimpleKeychain\/documentation\/SimpleKeychain\/Accessibility\/rawValue","interfaceLanguage":"swift"},"hierarchy":{"paths":[["doc:\/\/com.auth0.SimpleKeychain\/documentation\/SimpleKeychain","doc:\/\/com.auth0.SimpleKeychain\/documentation\/SimpleKeychain\/Accessibility"]]},"schemaVersion":{"patch":0,"major":0,"minor":3},"sections":[],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/simplekeychain\/accessibility\/rawvalue"]}],"abstract":[{"text":"The ","type":"text"},{"code":"kSecAttrAccessible","type":"codeVoice"},{"text":" value of a given accessibility type.","type":"text"}],"kind":"symbol","primaryContentSections":[{"kind":"declarations","declarations":[{"platforms":["iOS"],"tokens":[{"text":"var","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"rawValue"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","text":"CFString","preciseIdentifier":"c:@T@CFStringRef"},{"text":" { ","kind":"text"},{"text":"get","kind":"keyword"},{"text":" }","kind":"text"}],"languages":["swift"]}]}],"metadata":{"title":"rawValue","externalID":"s:14SimpleKeychain13AccessibilityO8rawValueSo11CFStringRefavp","fragments":[{"text":"var","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"rawValue"},{"kind":"text","text":": "},{"preciseIdentifier":"c:@T@CFStringRef","text":"CFString","kind":"typeIdentifier"}],"symbolKind":"property","modules":[{"name":"SimpleKeychain"}],"role":"symbol","roleHeading":"Instance Property"},"references":{"doc://com.auth0.SimpleKeychain/documentation/SimpleKeychain":{"title":"SimpleKeychain","role":"collection","type":"topic","kind":"symbol","abstract":[],"identifier":"doc:\/\/com.auth0.SimpleKeychain\/documentation\/SimpleKeychain","url":"\/documentation\/simplekeychain"},"doc://com.auth0.SimpleKeychain/documentation/SimpleKeychain/Accessibility":{"identifier":"doc:\/\/com.auth0.SimpleKeychain\/documentation\/SimpleKeychain\/Accessibility","title":"Accessibility","kind":"symbol","url":"\/documentation\/simplekeychain\/accessibility","fragments":[{"kind":"keyword","text":"enum"},{"kind":"text","text":" "},{"kind":"identifier","text":"Accessibility"}],"navigatorTitle":[{"text":"Accessibility","kind":"identifier"}],"role":"symbol","abstract":[{"type":"text","text":"Represents the accessibility types of Keychain items. It’s a mirror of "},{"code":"kSecAttrAccessible","type":"codeVoice"},{"type":"text","text":" values."}],"type":"topic"},"doc://com.auth0.SimpleKeychain/documentation/SimpleKeychain/Accessibility/rawValue":{"identifier":"doc:\/\/com.auth0.SimpleKeychain\/documentation\/SimpleKeychain\/Accessibility\/rawValue","type":"topic","fragments":[{"kind":"keyword","text":"var"},{"text":" ","kind":"text"},{"kind":"identifier","text":"rawValue"},{"kind":"text","text":": "},{"preciseIdentifier":"c:@T@CFStringRef","text":"CFString","kind":"typeIdentifier"}],"url":"\/documentation\/simplekeychain\/accessibility\/rawvalue","title":"rawValue","abstract":[{"type":"text","text":"The "},{"type":"codeVoice","code":"kSecAttrAccessible"},{"type":"text","text":" value of a given accessibility type."}],"kind":"symbol","role":"symbol"}}} -------------------------------------------------------------------------------- /docs/data/documentation/simplekeychain/accessibility/whenunlocked.json: -------------------------------------------------------------------------------- 1 | {"schemaVersion":{"major":0,"patch":0,"minor":3},"metadata":{"fragments":[{"kind":"keyword","text":"case"},{"kind":"text","text":" "},{"kind":"identifier","text":"whenUnlocked"}],"title":"Accessibility.whenUnlocked","symbolKind":"case","roleHeading":"Case","modules":[{"name":"SimpleKeychain"}],"externalID":"s:14SimpleKeychain13AccessibilityO12whenUnlockedyA2CmF","role":"symbol"},"sections":[],"abstract":[{"type":"text","text":"The data in the Keychain item can be accessed only while the device is unlocked by the user."},{"type":"text","text":" "},{"text":"See ","type":"text"},{"type":"reference","identifier":"https:\/\/developer.apple.com\/documentation\/security\/ksecattraccessiblewhenunlocked","isActive":true},{"text":".","type":"text"}],"primaryContentSections":[{"kind":"declarations","declarations":[{"languages":["swift"],"platforms":["iOS"],"tokens":[{"text":"case","kind":"keyword"},{"text":" ","kind":"text"},{"text":"whenUnlocked","kind":"identifier"}]}]}],"hierarchy":{"paths":[["doc:\/\/com.auth0.SimpleKeychain\/documentation\/SimpleKeychain","doc:\/\/com.auth0.SimpleKeychain\/documentation\/SimpleKeychain\/Accessibility"]]},"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/com.auth0.SimpleKeychain\/documentation\/SimpleKeychain\/Accessibility\/whenUnlocked"},"variants":[{"paths":["\/documentation\/simplekeychain\/accessibility\/whenunlocked"],"traits":[{"interfaceLanguage":"swift"}]}],"kind":"symbol","references":{"doc://com.auth0.SimpleKeychain/documentation/SimpleKeychain/Accessibility":{"identifier":"doc:\/\/com.auth0.SimpleKeychain\/documentation\/SimpleKeychain\/Accessibility","title":"Accessibility","kind":"symbol","url":"\/documentation\/simplekeychain\/accessibility","fragments":[{"kind":"keyword","text":"enum"},{"kind":"text","text":" "},{"kind":"identifier","text":"Accessibility"}],"navigatorTitle":[{"text":"Accessibility","kind":"identifier"}],"role":"symbol","abstract":[{"type":"text","text":"Represents the accessibility types of Keychain items. It’s a mirror of "},{"code":"kSecAttrAccessible","type":"codeVoice"},{"type":"text","text":" values."}],"type":"topic"},"doc://com.auth0.SimpleKeychain/documentation/SimpleKeychain/Accessibility/whenUnlocked":{"identifier":"doc:\/\/com.auth0.SimpleKeychain\/documentation\/SimpleKeychain\/Accessibility\/whenUnlocked","abstract":[{"text":"The data in the Keychain item can be accessed only while the device is unlocked by the user.","type":"text"},{"type":"text","text":" "},{"text":"See ","type":"text"},{"type":"reference","identifier":"https:\/\/developer.apple.com\/documentation\/security\/ksecattraccessiblewhenunlocked","isActive":true},{"text":".","type":"text"}],"title":"Accessibility.whenUnlocked","fragments":[{"text":"case","kind":"keyword"},{"text":" ","kind":"text"},{"text":"whenUnlocked","kind":"identifier"}],"type":"topic","kind":"symbol","url":"\/documentation\/simplekeychain\/accessibility\/whenunlocked","role":"symbol"},"doc://com.auth0.SimpleKeychain/documentation/SimpleKeychain":{"title":"SimpleKeychain","role":"collection","type":"topic","kind":"symbol","abstract":[],"identifier":"doc:\/\/com.auth0.SimpleKeychain\/documentation\/SimpleKeychain","url":"\/documentation\/simplekeychain"},"https://developer.apple.com/documentation/security/ksecattraccessiblewhenunlocked":{"title":"kSecAttrAccessibleWhenUnlocked","titleInlineContent":[{"text":"kSecAttrAccessibleWhenUnlocked","type":"text"}],"url":"https:\/\/developer.apple.com\/documentation\/security\/ksecattraccessiblewhenunlocked","type":"link","identifier":"https:\/\/developer.apple.com\/documentation\/security\/ksecattraccessiblewhenunlocked"}}} -------------------------------------------------------------------------------- /docs/data/documentation/simplekeychain/simplekeychainerror/debugdescription.json: -------------------------------------------------------------------------------- 1 | {"variants":[{"paths":["\/documentation\/simplekeychain\/simplekeychainerror\/debugdescription"],"traits":[{"interfaceLanguage":"swift"}]}],"hierarchy":{"paths":[["doc:\/\/com.auth0.SimpleKeychain\/documentation\/SimpleKeychain","doc:\/\/com.auth0.SimpleKeychain\/documentation\/SimpleKeychain\/SimpleKeychainError"]]},"kind":"symbol","identifier":{"url":"doc:\/\/com.auth0.SimpleKeychain\/documentation\/SimpleKeychain\/SimpleKeychainError\/debugDescription","interfaceLanguage":"swift"},"abstract":[{"type":"text","text":"Description of the error."}],"schemaVersion":{"minor":3,"patch":0,"major":0},"primaryContentSections":[{"declarations":[{"tokens":[{"text":"var","kind":"keyword"},{"kind":"text","text":" "},{"text":"debugDescription","kind":"identifier"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:SS","text":"String","kind":"typeIdentifier"},{"text":" { ","kind":"text"},{"kind":"keyword","text":"get"},{"kind":"text","text":" }"}],"languages":["swift"],"platforms":["iOS"]}],"kind":"declarations"},{"kind":"content","content":[{"level":2,"text":"Discussion","type":"heading","anchor":"discussion"},{"style":"important","name":"Important","content":[{"type":"paragraph","inlineContent":[{"text":"You should avoid displaying the error description to the user, it’s meant for ","type":"text"},{"type":"strong","inlineContent":[{"text":"debugging","type":"text"}]},{"text":" only.","type":"text"}]}],"type":"aside"}]}],"sections":[],"metadata":{"symbolKind":"property","title":"debugDescription","externalID":"s:14SimpleKeychain0aB5ErrorV16debugDescriptionSSvp","role":"symbol","roleHeading":"Instance Property","fragments":[{"kind":"keyword","text":"var"},{"text":" ","kind":"text"},{"text":"debugDescription","kind":"identifier"},{"text":": ","kind":"text"},{"text":"String","kind":"typeIdentifier","preciseIdentifier":"s:SS"}],"modules":[{"name":"SimpleKeychain"}]},"references":{"doc://com.auth0.SimpleKeychain/documentation/SimpleKeychain/SimpleKeychainError":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"SimpleKeychainError"}],"url":"\/documentation\/simplekeychain\/simplekeychainerror","title":"SimpleKeychainError","identifier":"doc:\/\/com.auth0.SimpleKeychain\/documentation\/SimpleKeychain\/SimpleKeychainError","abstract":[{"type":"text","text":"Represents an error during a SimpleKeychain operation."}],"kind":"symbol","fragments":[{"text":"struct","kind":"keyword"},{"text":" ","kind":"text"},{"text":"SimpleKeychainError","kind":"identifier"}],"type":"topic"},"doc://com.auth0.SimpleKeychain/documentation/SimpleKeychain/SimpleKeychainError/debugDescription":{"identifier":"doc:\/\/com.auth0.SimpleKeychain\/documentation\/SimpleKeychain\/SimpleKeychainError\/debugDescription","title":"debugDescription","url":"\/documentation\/simplekeychain\/simplekeychainerror\/debugdescription","role":"symbol","type":"topic","abstract":[{"text":"Description of the error.","type":"text"}],"kind":"symbol","fragments":[{"text":"var","kind":"keyword"},{"text":" ","kind":"text"},{"text":"debugDescription","kind":"identifier"},{"kind":"text","text":": "},{"preciseIdentifier":"s:SS","kind":"typeIdentifier","text":"String"}]},"doc://com.auth0.SimpleKeychain/documentation/SimpleKeychain":{"title":"SimpleKeychain","url":"\/documentation\/simplekeychain","type":"topic","identifier":"doc:\/\/com.auth0.SimpleKeychain\/documentation\/SimpleKeychain","abstract":[],"kind":"symbol","role":"collection"}}} -------------------------------------------------------------------------------- /docs/data/documentation/simplekeychain/simplekeychainerror/equatable-implementations.json: -------------------------------------------------------------------------------- 1 | {"sections":[],"hierarchy":{"paths":[["doc:\/\/com.auth0.SimpleKeychain\/documentation\/SimpleKeychain","doc:\/\/com.auth0.SimpleKeychain\/documentation\/SimpleKeychain\/SimpleKeychainError"]]},"variants":[{"paths":["\/documentation\/simplekeychain\/simplekeychainerror\/equatable-implementations"],"traits":[{"interfaceLanguage":"swift"}]}],"metadata":{"role":"collectionGroup","modules":[{"name":"SimpleKeychain"}],"title":"Equatable Implementations","roleHeading":"API Collection"},"topicSections":[{"generated":true,"identifiers":["doc:\/\/com.auth0.SimpleKeychain\/documentation\/SimpleKeychain\/SimpleKeychainError\/!=(_:_:)","doc:\/\/com.auth0.SimpleKeychain\/documentation\/SimpleKeychain\/SimpleKeychainError\/==(_:_:)"],"title":"Operators","anchor":"Operators"}],"schemaVersion":{"patch":0,"major":0,"minor":3},"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/com.auth0.SimpleKeychain\/documentation\/SimpleKeychain\/SimpleKeychainError\/Equatable-Implementations"},"kind":"article","references":{"doc://com.auth0.SimpleKeychain/documentation/SimpleKeychain/SimpleKeychainError/!=(_:_:)":{"title":"!=(_:_:)","type":"topic","fragments":[{"text":"static","kind":"keyword"},{"kind":"text","text":" "},{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"text":"!=","kind":"identifier"},{"kind":"text","text":" "},{"text":"(","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":", ","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":") -> "},{"text":"Bool","kind":"typeIdentifier","preciseIdentifier":"s:Sb"}],"kind":"symbol","identifier":"doc:\/\/com.auth0.SimpleKeychain\/documentation\/SimpleKeychain\/SimpleKeychainError\/!=(_:_:)","abstract":[],"role":"symbol","url":"\/documentation\/simplekeychain\/simplekeychainerror\/!=(_:_:)"},"doc://com.auth0.SimpleKeychain/documentation/SimpleKeychain/SimpleKeychainError/==(_:_:)":{"fragments":[{"kind":"keyword","text":"static"},{"kind":"text","text":" "},{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"kind":"identifier","text":"=="},{"kind":"text","text":" "},{"text":"(","kind":"text"},{"preciseIdentifier":"s:14SimpleKeychain0aB5ErrorV","text":"SimpleKeychainError","kind":"typeIdentifier"},{"kind":"text","text":", "},{"text":"SimpleKeychainError","preciseIdentifier":"s:14SimpleKeychain0aB5ErrorV","kind":"typeIdentifier"},{"text":") -> ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:Sb","text":"Bool"}],"type":"topic","identifier":"doc:\/\/com.auth0.SimpleKeychain\/documentation\/SimpleKeychain\/SimpleKeychainError\/==(_:_:)","kind":"symbol","title":"==(_:_:)","abstract":[{"type":"text","text":"Conformance to "},{"type":"codeVoice","code":"Equatable"},{"type":"text","text":"."}],"role":"symbol","url":"\/documentation\/simplekeychain\/simplekeychainerror\/==(_:_:)"},"doc://com.auth0.SimpleKeychain/documentation/SimpleKeychain/SimpleKeychainError":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"SimpleKeychainError"}],"url":"\/documentation\/simplekeychain\/simplekeychainerror","title":"SimpleKeychainError","identifier":"doc:\/\/com.auth0.SimpleKeychain\/documentation\/SimpleKeychain\/SimpleKeychainError","abstract":[{"type":"text","text":"Represents an error during a SimpleKeychain operation."}],"kind":"symbol","fragments":[{"text":"struct","kind":"keyword"},{"text":" ","kind":"text"},{"text":"SimpleKeychainError","kind":"identifier"}],"type":"topic"},"doc://com.auth0.SimpleKeychain/documentation/SimpleKeychain":{"title":"SimpleKeychain","role":"collection","type":"topic","kind":"symbol","abstract":[],"identifier":"doc:\/\/com.auth0.SimpleKeychain\/documentation\/SimpleKeychain","url":"\/documentation\/simplekeychain"}}} -------------------------------------------------------------------------------- /docs/data/documentation/simplekeychain/simplekeychainerror/errordescription.json: -------------------------------------------------------------------------------- 1 | {"metadata":{"externalID":"s:14SimpleKeychain0aB5ErrorV16errorDescriptionSSSgvp","symbolKind":"property","roleHeading":"Instance Property","role":"symbol","fragments":[{"kind":"keyword","text":"var"},{"text":" ","kind":"text"},{"kind":"identifier","text":"errorDescription"},{"kind":"text","text":": "},{"text":"String","preciseIdentifier":"s:SS","kind":"typeIdentifier"},{"kind":"text","text":"?"}],"modules":[{"name":"SimpleKeychain"}],"title":"errorDescription"},"sections":[],"kind":"symbol","hierarchy":{"paths":[["doc:\/\/com.auth0.SimpleKeychain\/documentation\/SimpleKeychain","doc:\/\/com.auth0.SimpleKeychain\/documentation\/SimpleKeychain\/SimpleKeychainError"]]},"abstract":[{"type":"text","text":"Description of the error."}],"primaryContentSections":[{"kind":"declarations","declarations":[{"languages":["swift"],"tokens":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"text":"errorDescription","kind":"identifier"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:SS","text":"String","kind":"typeIdentifier"},{"text":"? { ","kind":"text"},{"text":"get","kind":"keyword"},{"text":" }","kind":"text"}],"platforms":["iOS"]}]},{"content":[{"type":"heading","level":2,"anchor":"discussion","text":"Discussion"},{"style":"important","name":"Important","type":"aside","content":[{"type":"paragraph","inlineContent":[{"text":"You should avoid displaying the error description to the user, it’s meant for ","type":"text"},{"type":"strong","inlineContent":[{"type":"text","text":"debugging"}]},{"text":" only.","type":"text"}]}]}],"kind":"content"}],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/simplekeychain\/simplekeychainerror\/errordescription"]}],"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/com.auth0.SimpleKeychain\/documentation\/SimpleKeychain\/SimpleKeychainError\/errorDescription"},"schemaVersion":{"patch":0,"major":0,"minor":3},"references":{"doc://com.auth0.SimpleKeychain/documentation/SimpleKeychain/SimpleKeychainError/errorDescription":{"title":"errorDescription","url":"\/documentation\/simplekeychain\/simplekeychainerror\/errordescription","type":"topic","identifier":"doc:\/\/com.auth0.SimpleKeychain\/documentation\/SimpleKeychain\/SimpleKeychainError\/errorDescription","abstract":[{"type":"text","text":"Description of the error."}],"kind":"symbol","role":"symbol","fragments":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"text":"errorDescription","kind":"identifier"},{"kind":"text","text":": "},{"text":"String","preciseIdentifier":"s:SS","kind":"typeIdentifier"},{"text":"?","kind":"text"}]},"doc://com.auth0.SimpleKeychain/documentation/SimpleKeychain/SimpleKeychainError":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"SimpleKeychainError"}],"url":"\/documentation\/simplekeychain\/simplekeychainerror","title":"SimpleKeychainError","identifier":"doc:\/\/com.auth0.SimpleKeychain\/documentation\/SimpleKeychain\/SimpleKeychainError","abstract":[{"type":"text","text":"Represents an error during a SimpleKeychain operation."}],"kind":"symbol","fragments":[{"text":"struct","kind":"keyword"},{"text":" ","kind":"text"},{"text":"SimpleKeychainError","kind":"identifier"}],"type":"topic"},"doc://com.auth0.SimpleKeychain/documentation/SimpleKeychain":{"title":"SimpleKeychain","role":"collection","type":"topic","kind":"symbol","abstract":[],"identifier":"doc:\/\/com.auth0.SimpleKeychain\/documentation\/SimpleKeychain","url":"\/documentation\/simplekeychain"}}} -------------------------------------------------------------------------------- /docs/data/documentation/simplekeychain/simplekeychainerror/localizeddescription.json: -------------------------------------------------------------------------------- 1 | {"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/simplekeychain\/simplekeychainerror\/localizeddescription"]}],"abstract":[{"text":"Description of the error.","type":"text"}],"kind":"symbol","hierarchy":{"paths":[["doc:\/\/com.auth0.SimpleKeychain\/documentation\/SimpleKeychain","doc:\/\/com.auth0.SimpleKeychain\/documentation\/SimpleKeychain\/SimpleKeychainError"]]},"metadata":{"symbolKind":"property","title":"localizedDescription","externalID":"s:14SimpleKeychain0aB5ErrorV20localizedDescriptionSSvp","modules":[{"name":"SimpleKeychain"}],"role":"symbol","roleHeading":"Instance Property","fragments":[{"text":"var","kind":"keyword"},{"kind":"text","text":" "},{"text":"localizedDescription","kind":"identifier"},{"text":": ","kind":"text"},{"text":"String","kind":"typeIdentifier","preciseIdentifier":"s:SS"}]},"primaryContentSections":[{"declarations":[{"platforms":["iOS"],"tokens":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"text":"localizedDescription","kind":"identifier"},{"text":": ","kind":"text"},{"text":"String","preciseIdentifier":"s:SS","kind":"typeIdentifier"},{"kind":"text","text":" { "},{"text":"get","kind":"keyword"},{"kind":"text","text":" }"}],"languages":["swift"]}],"kind":"declarations"},{"kind":"content","content":[{"anchor":"discussion","text":"Discussion","level":2,"type":"heading"},{"type":"aside","name":"Important","style":"important","content":[{"type":"paragraph","inlineContent":[{"text":"You should avoid displaying the error description to the user, it’s meant for ","type":"text"},{"type":"strong","inlineContent":[{"text":"debugging","type":"text"}]},{"type":"text","text":" only."}]}]}]}],"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/com.auth0.SimpleKeychain\/documentation\/SimpleKeychain\/SimpleKeychainError\/localizedDescription"},"sections":[],"schemaVersion":{"patch":0,"major":0,"minor":3},"references":{"doc://com.auth0.SimpleKeychain/documentation/SimpleKeychain":{"title":"SimpleKeychain","role":"collection","type":"topic","kind":"symbol","abstract":[],"identifier":"doc:\/\/com.auth0.SimpleKeychain\/documentation\/SimpleKeychain","url":"\/documentation\/simplekeychain"},"doc://com.auth0.SimpleKeychain/documentation/SimpleKeychain/SimpleKeychainError/localizedDescription":{"role":"symbol","identifier":"doc:\/\/com.auth0.SimpleKeychain\/documentation\/SimpleKeychain\/SimpleKeychainError\/localizedDescription","abstract":[{"text":"Description of the error.","type":"text"}],"url":"\/documentation\/simplekeychain\/simplekeychainerror\/localizeddescription","kind":"symbol","type":"topic","fragments":[{"kind":"keyword","text":"var"},{"text":" ","kind":"text"},{"text":"localizedDescription","kind":"identifier"},{"kind":"text","text":": "},{"preciseIdentifier":"s:SS","text":"String","kind":"typeIdentifier"}],"title":"localizedDescription"},"doc://com.auth0.SimpleKeychain/documentation/SimpleKeychain/SimpleKeychainError":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"SimpleKeychainError"}],"url":"\/documentation\/simplekeychain\/simplekeychainerror","title":"SimpleKeychainError","identifier":"doc:\/\/com.auth0.SimpleKeychain\/documentation\/SimpleKeychain\/SimpleKeychainError","abstract":[{"type":"text","text":"Represents an error during a SimpleKeychain operation."}],"kind":"symbol","fragments":[{"text":"struct","kind":"keyword"},{"text":" ","kind":"text"},{"text":"SimpleKeychainError","kind":"identifier"}],"type":"topic"}}} -------------------------------------------------------------------------------- /docs/data/documentation/simplekeychain/simplekeychainerror/status.json: -------------------------------------------------------------------------------- 1 | {"schemaVersion":{"minor":3,"patch":0,"major":0},"sections":[],"variants":[{"paths":["\/documentation\/simplekeychain\/simplekeychainerror\/status"],"traits":[{"interfaceLanguage":"swift"}]}],"metadata":{"role":"symbol","externalID":"s:14SimpleKeychain0aB5ErrorV6statuss5Int32Vvp","modules":[{"name":"SimpleKeychain"}],"symbolKind":"property","roleHeading":"Instance Property","title":"status","fragments":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"text":"status","kind":"identifier"},{"text":": ","kind":"text"},{"text":"OSStatus","kind":"typeIdentifier","preciseIdentifier":"c:@T@OSStatus"}]},"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/com.auth0.SimpleKeychain\/documentation\/SimpleKeychain\/SimpleKeychainError\/status"},"kind":"symbol","primaryContentSections":[{"declarations":[{"tokens":[{"text":"var","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"status"},{"kind":"text","text":": "},{"preciseIdentifier":"c:@T@OSStatus","text":"OSStatus","kind":"typeIdentifier"},{"text":" { ","kind":"text"},{"kind":"keyword","text":"get"},{"text":" }","kind":"text"}],"languages":["swift"],"platforms":["iOS"]}],"kind":"declarations"}],"abstract":[{"type":"text","text":"The "},{"type":"codeVoice","code":"OSStatus"},{"type":"text","text":" of the Keychain operation."}],"hierarchy":{"paths":[["doc:\/\/com.auth0.SimpleKeychain\/documentation\/SimpleKeychain","doc:\/\/com.auth0.SimpleKeychain\/documentation\/SimpleKeychain\/SimpleKeychainError"]]},"references":{"doc://com.auth0.SimpleKeychain/documentation/SimpleKeychain":{"title":"SimpleKeychain","role":"collection","type":"topic","kind":"symbol","abstract":[],"identifier":"doc:\/\/com.auth0.SimpleKeychain\/documentation\/SimpleKeychain","url":"\/documentation\/simplekeychain"},"doc://com.auth0.SimpleKeychain/documentation/SimpleKeychain/SimpleKeychainError/status":{"type":"topic","kind":"symbol","fragments":[{"text":"var","kind":"keyword"},{"text":" ","kind":"text"},{"text":"status","kind":"identifier"},{"kind":"text","text":": "},{"text":"OSStatus","kind":"typeIdentifier","preciseIdentifier":"c:@T@OSStatus"}],"abstract":[{"text":"The ","type":"text"},{"code":"OSStatus","type":"codeVoice"},{"type":"text","text":" of the Keychain operation."}],"identifier":"doc:\/\/com.auth0.SimpleKeychain\/documentation\/SimpleKeychain\/SimpleKeychainError\/status","title":"status","url":"\/documentation\/simplekeychain\/simplekeychainerror\/status","role":"symbol"},"doc://com.auth0.SimpleKeychain/documentation/SimpleKeychain/SimpleKeychainError":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"SimpleKeychainError"}],"url":"\/documentation\/simplekeychain\/simplekeychainerror","title":"SimpleKeychainError","identifier":"doc:\/\/com.auth0.SimpleKeychain\/documentation\/SimpleKeychain\/SimpleKeychainError","abstract":[{"type":"text","text":"Represents an error during a SimpleKeychain operation."}],"kind":"symbol","fragments":[{"text":"struct","kind":"keyword"},{"text":" ","kind":"text"},{"text":"SimpleKeychainError","kind":"identifier"}],"type":"topic"}}} -------------------------------------------------------------------------------- /docs/data/documentation/simplekeychain/simplekeychainerror/unknown.json: -------------------------------------------------------------------------------- 1 | {"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/com.auth0.SimpleKeychain\/documentation\/SimpleKeychain\/SimpleKeychainError\/unknown"},"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/simplekeychain\/simplekeychainerror\/unknown"]}],"metadata":{"symbolKind":"property","roleHeading":"Type Property","role":"symbol","title":"unknown","modules":[{"name":"SimpleKeychain"}],"externalID":"s:14SimpleKeychain0aB5ErrorV7unknownACvpZ","fragments":[{"kind":"keyword","text":"static"},{"text":" ","kind":"text"},{"text":"let","kind":"keyword"},{"text":" ","kind":"text"},{"text":"unknown","kind":"identifier"},{"kind":"text","text":": "},{"preciseIdentifier":"s:14SimpleKeychain0aB5ErrorV","kind":"typeIdentifier","text":"SimpleKeychainError"}]},"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"static"},{"text":" ","kind":"text"},{"text":"let","kind":"keyword"},{"text":" ","kind":"text"},{"text":"unknown","kind":"identifier"},{"kind":"text","text":": "},{"preciseIdentifier":"s:14SimpleKeychain0aB5ErrorV","text":"SimpleKeychainError","kind":"typeIdentifier","identifier":"doc:\/\/com.auth0.SimpleKeychain\/documentation\/SimpleKeychain\/SimpleKeychainError"}],"languages":["swift"],"platforms":["iOS"]}]}],"hierarchy":{"paths":[["doc:\/\/com.auth0.SimpleKeychain\/documentation\/SimpleKeychain","doc:\/\/com.auth0.SimpleKeychain\/documentation\/SimpleKeychain\/SimpleKeychainError"]]},"schemaVersion":{"minor":3,"patch":0,"major":0},"sections":[],"kind":"symbol","abstract":[{"type":"text","text":"Unknown error. This is not a Keychain error but a SimpleKeychain failure. For example, being unable to cast the"},{"type":"text","text":" "},{"text":"retrieved item.","type":"text"}],"references":{"doc://com.auth0.SimpleKeychain/documentation/SimpleKeychain/SimpleKeychainError/unknown":{"kind":"symbol","role":"symbol","type":"topic","abstract":[{"type":"text","text":"Unknown error. This is not a Keychain error but a SimpleKeychain failure. For example, being unable to cast the"},{"type":"text","text":" "},{"text":"retrieved item.","type":"text"}],"fragments":[{"text":"static","kind":"keyword"},{"kind":"text","text":" "},{"kind":"keyword","text":"let"},{"text":" ","kind":"text"},{"kind":"identifier","text":"unknown"},{"kind":"text","text":": "},{"text":"SimpleKeychainError","kind":"typeIdentifier","preciseIdentifier":"s:14SimpleKeychain0aB5ErrorV"}],"identifier":"doc:\/\/com.auth0.SimpleKeychain\/documentation\/SimpleKeychain\/SimpleKeychainError\/unknown","title":"unknown","url":"\/documentation\/simplekeychain\/simplekeychainerror\/unknown"},"doc://com.auth0.SimpleKeychain/documentation/SimpleKeychain/SimpleKeychainError":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"SimpleKeychainError"}],"url":"\/documentation\/simplekeychain\/simplekeychainerror","title":"SimpleKeychainError","identifier":"doc:\/\/com.auth0.SimpleKeychain\/documentation\/SimpleKeychain\/SimpleKeychainError","abstract":[{"type":"text","text":"Represents an error during a SimpleKeychain operation."}],"kind":"symbol","fragments":[{"text":"struct","kind":"keyword"},{"text":" ","kind":"text"},{"text":"SimpleKeychainError","kind":"identifier"}],"type":"topic"},"doc://com.auth0.SimpleKeychain/documentation/SimpleKeychain":{"title":"SimpleKeychain","role":"collection","type":"topic","kind":"symbol","abstract":[],"identifier":"doc:\/\/com.auth0.SimpleKeychain\/documentation\/SimpleKeychain","url":"\/documentation\/simplekeychain"}}} -------------------------------------------------------------------------------- /docs/developer-og-twitter.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/auth0/SimpleKeychain/c0e4137a6e5bb07f280988f75c40efa1cbc4269d/docs/developer-og-twitter.jpg -------------------------------------------------------------------------------- /docs/developer-og.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/auth0/SimpleKeychain/c0e4137a6e5bb07f280988f75c40efa1cbc4269d/docs/developer-og.jpg -------------------------------------------------------------------------------- /docs/documentation/simplekeychain/accessibility/!=(_:_:)/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /docs/documentation/simplekeychain/accessibility/afterfirstunlock/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /docs/documentation/simplekeychain/accessibility/afterfirstunlockthisdeviceonly/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /docs/documentation/simplekeychain/accessibility/equatable-implementations/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /docs/documentation/simplekeychain/accessibility/hash(into:)/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /docs/documentation/simplekeychain/accessibility/hashvalue/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /docs/documentation/simplekeychain/accessibility/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /docs/documentation/simplekeychain/accessibility/init(rawvalue:)/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /docs/documentation/simplekeychain/accessibility/rawrepresentable-implementations/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /docs/documentation/simplekeychain/accessibility/rawvalue/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /docs/documentation/simplekeychain/accessibility/whenpasscodesetthisdeviceonly/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /docs/documentation/simplekeychain/accessibility/whenunlocked/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /docs/documentation/simplekeychain/accessibility/whenunlockedthisdeviceonly/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /docs/documentation/simplekeychain/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /docs/documentation/simplekeychain/simplekeychain/data(forkey:)/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /docs/documentation/simplekeychain/simplekeychain/deleteall()/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /docs/documentation/simplekeychain/simplekeychain/deleteitem(forkey:)/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /docs/documentation/simplekeychain/simplekeychain/hasitem(forkey:)/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /docs/documentation/simplekeychain/simplekeychain/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /docs/documentation/simplekeychain/simplekeychain/init(service:accessgroup:accessibility:accesscontrolflags:context:synchronizable:attributes:)/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /docs/documentation/simplekeychain/simplekeychain/keys()/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /docs/documentation/simplekeychain/simplekeychain/set(_:forkey:)-618u7/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /docs/documentation/simplekeychain/simplekeychain/set(_:forkey:)-n98i/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /docs/documentation/simplekeychain/simplekeychain/string(forkey:)/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /docs/documentation/simplekeychain/simplekeychainerror/!=(_:_:)/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /docs/documentation/simplekeychain/simplekeychainerror/==(_:_:)/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /docs/documentation/simplekeychain/simplekeychainerror/authfailed/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /docs/documentation/simplekeychain/simplekeychainerror/debugdescription/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /docs/documentation/simplekeychain/simplekeychainerror/decodefailed/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /docs/documentation/simplekeychain/simplekeychainerror/duplicateitem/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /docs/documentation/simplekeychain/simplekeychainerror/equatable-implementations/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /docs/documentation/simplekeychain/simplekeychainerror/errordescription/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /docs/documentation/simplekeychain/simplekeychainerror/failurereason/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /docs/documentation/simplekeychain/simplekeychainerror/helpanchor/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /docs/documentation/simplekeychain/simplekeychainerror/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /docs/documentation/simplekeychain/simplekeychainerror/interactionnotallowed/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /docs/documentation/simplekeychain/simplekeychainerror/invalidparameters/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /docs/documentation/simplekeychain/simplekeychainerror/itemnotavailable/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /docs/documentation/simplekeychain/simplekeychainerror/itemnotfound/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /docs/documentation/simplekeychain/simplekeychainerror/localizeddescription/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /docs/documentation/simplekeychain/simplekeychainerror/localizederror-implementations/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /docs/documentation/simplekeychain/simplekeychainerror/missingentitlement/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /docs/documentation/simplekeychain/simplekeychainerror/operationnotimplemented/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /docs/documentation/simplekeychain/simplekeychainerror/other/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /docs/documentation/simplekeychain/simplekeychainerror/recoverysuggestion/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /docs/documentation/simplekeychain/simplekeychainerror/status/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /docs/documentation/simplekeychain/simplekeychainerror/unknown/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /docs/documentation/simplekeychain/simplekeychainerror/usercanceled/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /docs/documentation/simplekeychain/simplekeychainerror/~=(_:_:)-41lv0/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /docs/documentation/simplekeychain/simplekeychainerror/~=(_:_:)-7uptb/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /docs/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/auth0/SimpleKeychain/c0e4137a6e5bb07f280988f75c40efa1cbc4269d/docs/favicon.ico -------------------------------------------------------------------------------- /docs/favicon.svg: -------------------------------------------------------------------------------- 1 | 10 | 11 | -------------------------------------------------------------------------------- /docs/img/added-icon.832a5d2c.svg: -------------------------------------------------------------------------------- 1 | 10 | 11 | -------------------------------------------------------------------------------- /docs/img/deprecated-icon.7bf1740a.svg: -------------------------------------------------------------------------------- 1 | 10 | 11 | -------------------------------------------------------------------------------- /docs/img/modified-icon.efb2697d.svg: -------------------------------------------------------------------------------- 1 | 10 | 11 | -------------------------------------------------------------------------------- /docs/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Redirect 7 | 8 | 9 | -------------------------------------------------------------------------------- /docs/index/availability.index: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/auth0/SimpleKeychain/c0e4137a6e5bb07f280988f75c40efa1cbc4269d/docs/index/availability.index -------------------------------------------------------------------------------- /docs/index/data.mdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/auth0/SimpleKeychain/c0e4137a6e5bb07f280988f75c40efa1cbc4269d/docs/index/data.mdb -------------------------------------------------------------------------------- /docs/index/navigator.index: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/auth0/SimpleKeychain/c0e4137a6e5bb07f280988f75c40efa1cbc4269d/docs/index/navigator.index -------------------------------------------------------------------------------- /docs/js/highlight-js-bash-js.702f0c5c.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * This source file is part of the Swift.org open source project 3 | * 4 | * Copyright (c) 2021 Apple Inc. and the Swift project authors 5 | * Licensed under Apache License v2.0 with Runtime Library Exception 6 | * 7 | * See https://swift.org/LICENSE.txt for license information 8 | * See https://swift.org/CONTRIBUTORS.txt for Swift project authors 9 | */ 10 | (self["webpackChunkswift_docc_render"]=self["webpackChunkswift_docc_render"]||[]).push([[393],{8780:function(e){function s(e){const s=e.regex,t={},n={begin:/\$\{/,end:/\}/,contains:["self",{begin:/:-/,contains:[t]}]};Object.assign(t,{className:"variable",variants:[{begin:s.concat(/\$[\w\d#@][\w\d_]*/,"(?![\\w\\d])(?![$])")},n]});const a={className:"subst",begin:/\$\(/,end:/\)/,contains:[e.BACKSLASH_ESCAPE]},i={begin:/<<-?\s*(?=\w+)/,starts:{contains:[e.END_SAME_AS_BEGIN({begin:/(\w+)/,end:/(\w+)/,className:"string"})]}},c={className:"string",begin:/"/,end:/"/,contains:[e.BACKSLASH_ESCAPE,t,a]};a.contains.push(c);const o={className:"",begin:/\\"/},r={className:"string",begin:/'/,end:/'/},l={begin:/\$\(\(/,end:/\)\)/,contains:[{begin:/\d+#[0-9a-f]+/,className:"number"},e.NUMBER_MODE,t]},d=["fish","bash","zsh","sh","csh","ksh","tcsh","dash","scsh"],p=e.SHEBANG({binary:`(${d.join("|")})`,relevance:10}),m={className:"function",begin:/\w[\w\d_]*\s*\(\s*\)\s*\{/,returnBegin:!0,contains:[e.inherit(e.TITLE_MODE,{begin:/\w[\w\d_]*/})],relevance:0},u=["if","then","else","elif","fi","for","while","in","do","done","case","esac","function"],h=["true","false"],b={match:/(\/[a-z._-]+)+/},f=["break","cd","continue","eval","exec","exit","export","getopts","hash","pwd","readonly","return","shift","test","times","trap","umask","unset"],g=["alias","bind","builtin","caller","command","declare","echo","enable","help","let","local","logout","mapfile","printf","read","readarray","source","type","typeset","ulimit","unalias"],w=["autoload","bg","bindkey","bye","cap","chdir","clone","comparguments","compcall","compctl","compdescribe","compfiles","compgroups","compquote","comptags","comptry","compvalues","dirs","disable","disown","echotc","echoti","emulate","fc","fg","float","functions","getcap","getln","history","integer","jobs","kill","limit","log","noglob","popd","print","pushd","pushln","rehash","sched","setcap","setopt","stat","suspend","ttyctl","unfunction","unhash","unlimit","unsetopt","vared","wait","whence","where","which","zcompile","zformat","zftp","zle","zmodload","zparseopts","zprof","zpty","zregexparse","zsocket","zstyle","ztcp"],k=["chcon","chgrp","chown","chmod","cp","dd","df","dir","dircolors","ln","ls","mkdir","mkfifo","mknod","mktemp","mv","realpath","rm","rmdir","shred","sync","touch","truncate","vdir","b2sum","base32","base64","cat","cksum","comm","csplit","cut","expand","fmt","fold","head","join","md5sum","nl","numfmt","od","paste","ptx","pr","sha1sum","sha224sum","sha256sum","sha384sum","sha512sum","shuf","sort","split","sum","tac","tail","tr","tsort","unexpand","uniq","wc","arch","basename","chroot","date","dirname","du","echo","env","expr","factor","groups","hostid","id","link","logname","nice","nohup","nproc","pathchk","pinky","printenv","printf","pwd","readlink","runcon","seq","sleep","stat","stdbuf","stty","tee","test","timeout","tty","uname","unlink","uptime","users","who","whoami","yes"];return{name:"Bash",aliases:["sh"],keywords:{$pattern:/\b[a-z._-]+\b/,keyword:u,literal:h,built_in:[...f,...g,"set","shopt",...w,...k]},contains:[p,e.SHEBANG(),m,l,e.HASH_COMMENT_MODE,i,b,c,o,r,t]}}e.exports=s}}]); -------------------------------------------------------------------------------- /docs/js/highlight-js-custom-markdown.78c9f6ed.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * This source file is part of the Swift.org open source project 3 | * 4 | * Copyright (c) 2021 Apple Inc. and the Swift project authors 5 | * Licensed under Apache License v2.0 with Runtime Library Exception 6 | * 7 | * See https://swift.org/LICENSE.txt for license information 8 | * See https://swift.org/CONTRIBUTORS.txt for Swift project authors 9 | */ 10 | "use strict";(self["webpackChunkswift_docc_render"]=self["webpackChunkswift_docc_render"]||[]).push([[642],{2003:function(e,n,a){function i(e){const n=e.regex,a={begin:/<\/?[A-Za-z_]/,end:">",subLanguage:"xml",relevance:0},i={begin:"^[-\\*]{3,}",end:"$"},s={className:"code",variants:[{begin:"(`{3,})[^`](.|\\n)*?\\1`*[ ]*"},{begin:"(~{3,})[^~](.|\\n)*?\\1~*[ ]*"},{begin:"```",end:"```+[ ]*$"},{begin:"~~~",end:"~~~+[ ]*$"},{begin:"`.+?`"},{begin:"(?=^( {4}|\\t))",contains:[{begin:"^( {4}|\\t)",end:"(\\n)$"}],relevance:0}]},c={className:"bullet",begin:"^[ \t]*([*+-]|(\\d+\\.))(?=\\s+)",end:"\\s+",excludeEnd:!0},t={begin:/^\[[^\n]+\]:/,returnBegin:!0,contains:[{className:"symbol",begin:/\[/,end:/\]/,excludeBegin:!0,excludeEnd:!0},{className:"link",begin:/:\s*/,end:/$/,excludeBegin:!0}]},d=/[A-Za-z][A-Za-z0-9+.-]*/,l={variants:[{begin:/\[.+?\]\[.*?\]/,relevance:0},{begin:/\[.+?\]\(((data|javascript|mailto):|(?:http|ftp)s?:\/\/).*?\)/,relevance:2},{begin:n.concat(/\[.+?\]\(/,d,/:\/\/.*?\)/),relevance:2},{begin:/\[.+?\]\([./?&#].*?\)/,relevance:1},{begin:/\[.*?\]\(.*?\)/,relevance:0}],returnBegin:!0,contains:[{match:/\[(?=\])/},{className:"string",relevance:0,begin:"\\[",end:"\\]",excludeBegin:!0,returnEnd:!0},{className:"link",relevance:0,begin:"\\]\\(",end:"\\)",excludeBegin:!0,excludeEnd:!0},{className:"symbol",relevance:0,begin:"\\]\\[",end:"\\]",excludeBegin:!0,excludeEnd:!0}]},g={className:"strong",contains:[],variants:[{begin:/_{2}/,end:/_{2}/},{begin:/\*{2}/,end:/\*{2}/}]},r={className:"emphasis",contains:[],variants:[{begin:/\*(?!\*)/,end:/\*/},{begin:/_(?!_)/,end:/_/,relevance:0}]};g.contains.push(r),r.contains.push(g);let o=[a,l];g.contains=g.contains.concat(o),r.contains=r.contains.concat(o),o=o.concat(g,r);const b={className:"section",variants:[{begin:"^#{1,6}",end:"$",contains:o},{begin:"(?=^.+?\\n[=-]{2,}$)",contains:[{begin:"^[=-]*$"},{begin:"^",end:"\\n",contains:o}]}]},u={className:"quote",begin:"^>\\s+",contains:o,end:"$"};return{name:"Markdown",aliases:["md","mkdown","mkd"],contains:[b,a,c,g,r,u,s,i,l,t]}}a.r(n),a.d(n,{default:function(){return l}});const s={begin:"",returnBegin:!0,contains:[{className:"link",begin:"doc:",end:">",excludeEnd:!0}]},c={className:"link",begin:/`{2}(?!`)/,end:/`{2}(?!`)/,excludeBegin:!0,excludeEnd:!0},t={begin:"^>\\s+[Note:|Tip:|Important:|Experiment:|Warning:]",end:"$",returnBegin:!0,contains:[{className:"quote",begin:"^>",end:"\\s+"},{className:"type",begin:"Note|Tip|Important|Experiment|Warning",end:":"},{className:"quote",begin:".*",end:"$",endsParent:!0}]},d={begin:"@",end:"[{\\)\\s]",returnBegin:!0,contains:[{className:"title",begin:"@",end:"[\\s+(]",excludeEnd:!0},{begin:":",end:"[,\\)\n\t]",excludeBegin:!0,keywords:{literal:"true false null undefined"},contains:[{className:"number",begin:"\\b([\\d_]+(\\.[\\deE_]+)?|0x[a-fA-F0-9_]+(\\.[a-fA-F0-9p_]+)?|0b[01_]+|0o[0-7_]+)\\b",endsWithParent:!0,excludeEnd:!0},{className:"string",variants:[{begin:/"""/,end:/"""/},{begin:/"/,end:/"/}],endsParent:!0},{className:"link",begin:"http|https",endsWithParent:!0,excludeEnd:!0}]}]};function l(e){const n=i(e),a=n.contains.find((({className:e})=>"code"===e));a.variants=a.variants.filter((({begin:e})=>!e.includes("( {4}|\\t)")));const l=[...n.contains.filter((({className:e})=>"code"!==e)),a];return{...n,contains:[c,s,t,d,...l]}}}}]); -------------------------------------------------------------------------------- /docs/js/highlight-js-diff-js.4db9a783.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * This source file is part of the Swift.org open source project 3 | * 4 | * Copyright (c) 2021 Apple Inc. and the Swift project authors 5 | * Licensed under Apache License v2.0 with Runtime Library Exception 6 | * 7 | * See https://swift.org/LICENSE.txt for license information 8 | * See https://swift.org/CONTRIBUTORS.txt for Swift project authors 9 | */ 10 | (self["webpackChunkswift_docc_render"]=self["webpackChunkswift_docc_render"]||[]).push([[213],{7731:function(e){function n(e){const n=e.regex;return{name:"Diff",aliases:["patch"],contains:[{className:"meta",relevance:10,match:n.either(/^@@ +-\d+,\d+ +\+\d+,\d+ +@@/,/^\*\*\* +\d+,\d+ +\*\*\*\*$/,/^--- +\d+,\d+ +----$/)},{className:"comment",variants:[{begin:n.either(/Index: /,/^index/,/={3,}/,/^-{3}/,/^\*{3} /,/^\+{3}/,/^diff --git/),end:/$/},{match:/^\*{15}$/}]},{className:"addition",begin:/^\+/,end:/$/},{className:"deletion",begin:/^-/,end:/$/},{className:"addition",begin:/^!/,end:/$/}]}}e.exports=n}}]); -------------------------------------------------------------------------------- /docs/js/highlight-js-http-js.f78e83c2.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * This source file is part of the Swift.org open source project 3 | * 4 | * Copyright (c) 2021 Apple Inc. and the Swift project authors 5 | * Licensed under Apache License v2.0 with Runtime Library Exception 6 | * 7 | * See https://swift.org/LICENSE.txt for license information 8 | * See https://swift.org/CONTRIBUTORS.txt for Swift project authors 9 | */ 10 | (self["webpackChunkswift_docc_render"]=self["webpackChunkswift_docc_render"]||[]).push([[878],{8937:function(e){function n(e){const n=e.regex,a="HTTP/(2|1\\.[01])",s=/[A-Za-z][A-Za-z0-9-]*/,t={className:"attribute",begin:n.concat("^",s,"(?=\\:\\s)"),starts:{contains:[{className:"punctuation",begin:/: /,relevance:0,starts:{end:"$",relevance:0}}]}},i=[t,{begin:"\\n\\n",starts:{subLanguage:[],endsWithParent:!0}}];return{name:"HTTP",aliases:["https"],illegal:/\S/,contains:[{begin:"^(?="+a+" \\d{3})",end:/$/,contains:[{className:"meta",begin:a},{className:"number",begin:"\\b\\d{3}\\b"}],starts:{end:/\b\B/,illegal:/\S/,contains:i}},{begin:"(?=^[A-Z]+ (.*?) "+a+"$)",end:/$/,contains:[{className:"string",begin:" ",end:" ",excludeBegin:!0,excludeEnd:!0},{className:"meta",begin:a},{className:"keyword",begin:"[A-Z]+"}],starts:{end:/\b\B/,illegal:/\S/,contains:i}},e.inherit(t,{relevance:0})]}}e.exports=n}}]); -------------------------------------------------------------------------------- /docs/js/highlight-js-java-js.4fe21e94.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * This source file is part of the Swift.org open source project 3 | * 4 | * Copyright (c) 2021 Apple Inc. and the Swift project authors 5 | * Licensed under Apache License v2.0 with Runtime Library Exception 6 | * 7 | * See https://swift.org/LICENSE.txt for license information 8 | * See https://swift.org/CONTRIBUTORS.txt for Swift project authors 9 | */ 10 | (self["webpackChunkswift_docc_render"]=self["webpackChunkswift_docc_render"]||[]).push([[788],{8257:function(e){var n="[0-9](_*[0-9])*",a=`\\.(${n})`,s="[0-9a-fA-F](_*[0-9a-fA-F])*",t={className:"number",variants:[{begin:`(\\b(${n})((${a})|\\.)?|(${a}))[eE][+-]?(${n})[fFdD]?\\b`},{begin:`\\b(${n})((${a})[fFdD]?\\b|\\.([fFdD]\\b)?)`},{begin:`(${a})[fFdD]?\\b`},{begin:`\\b(${n})[fFdD]\\b`},{begin:`\\b0[xX]((${s})\\.?|(${s})?\\.(${s}))[pP][+-]?(${n})[fFdD]?\\b`},{begin:"\\b(0|[1-9](_*[0-9])*)[lL]?\\b"},{begin:`\\b0[xX](${s})[lL]?\\b`},{begin:"\\b0(_*[0-7])*[lL]?\\b"},{begin:"\\b0[bB][01](_*[01])*[lL]?\\b"}],relevance:0};function i(e,n,a){return-1===a?"":e.replace(n,(s=>i(e,n,a-1)))}function r(e){e.regex;const n="[À-ʸa-zA-Z_$][À-ʸa-zA-Z_$0-9]*",a=n+i("(?:<"+n+"~~~(?:\\s*,\\s*"+n+"~~~)*>)?",/~~~/g,2),s=["synchronized","abstract","private","var","static","if","const ","for","while","strictfp","finally","protected","import","native","final","void","enum","else","break","transient","catch","instanceof","volatile","case","assert","package","default","public","try","switch","continue","throws","protected","public","private","module","requires","exports","do"],r=["super","this"],c=["false","true","null"],l=["char","boolean","long","float","int","byte","short","double"],b={keyword:s,literal:c,type:l,built_in:r},o={className:"meta",begin:"@"+n,contains:[{begin:/\(/,end:/\)/,contains:["self"]}]},_={className:"params",begin:/\(/,end:/\)/,keywords:b,relevance:0,contains:[e.C_BLOCK_COMMENT_MODE],endsParent:!0};return{name:"Java",aliases:["jsp"],keywords:b,illegal:/<\/|#/,contains:[e.COMMENT("/\\*\\*","\\*/",{relevance:0,contains:[{begin:/\w+@/,relevance:0},{className:"doctag",begin:"@[A-Za-z]+"}]}),{begin:/import java\.[a-z]+\./,keywords:"import",relevance:2},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{begin:/"""/,end:/"""/,className:"string",contains:[e.BACKSLASH_ESCAPE]},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{match:[/\b(?:class|interface|enum|extends|implements|new)/,/\s+/,n],className:{1:"keyword",3:"title.class"}},{begin:[n,/\s+/,n,/\s+/,/=/],className:{1:"type",3:"variable",5:"operator"}},{begin:[/record/,/\s+/,n],className:{1:"keyword",3:"title.class"},contains:[_,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{beginKeywords:"new throw return else",relevance:0},{begin:["(?:"+a+"\\s+)",e.UNDERSCORE_IDENT_RE,/\s*(?=\()/],className:{2:"title.function"},keywords:b,contains:[{className:"params",begin:/\(/,end:/\)/,keywords:b,relevance:0,contains:[o,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,t,e.C_BLOCK_COMMENT_MODE]},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},t,o]}}e.exports=r}}]); -------------------------------------------------------------------------------- /docs/js/highlight-js-json-js.2a1856ba.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * This source file is part of the Swift.org open source project 3 | * 4 | * Copyright (c) 2021 Apple Inc. and the Swift project authors 5 | * Licensed under Apache License v2.0 with Runtime Library Exception 6 | * 7 | * See https://swift.org/LICENSE.txt for license information 8 | * See https://swift.org/CONTRIBUTORS.txt for Swift project authors 9 | */ 10 | (self["webpackChunkswift_docc_render"]=self["webpackChunkswift_docc_render"]||[]).push([[82],{14:function(e){function n(e){const n={className:"attr",begin:/"(\\.|[^\\"\r\n])*"(?=\s*:)/,relevance:1.01},c={match:/[{}[\],:]/,className:"punctuation",relevance:0},a={beginKeywords:["true","false","null"].join(" ")};return{name:"JSON",contains:[n,c,e.QUOTE_STRING_MODE,a,e.C_NUMBER_MODE,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE],illegal:"\\S"}}e.exports=n}}]); -------------------------------------------------------------------------------- /docs/js/highlight-js-llvm-js.26121771.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * This source file is part of the Swift.org open source project 3 | * 4 | * Copyright (c) 2021 Apple Inc. and the Swift project authors 5 | * Licensed under Apache License v2.0 with Runtime Library Exception 6 | * 7 | * See https://swift.org/LICENSE.txt for license information 8 | * See https://swift.org/CONTRIBUTORS.txt for Swift project authors 9 | */ 10 | (self["webpackChunkswift_docc_render"]=self["webpackChunkswift_docc_render"]||[]).push([[133],{4972:function(e){function n(e){const n=e.regex,a=/([-a-zA-Z$._][\w$.-]*)/,t={className:"type",begin:/\bi\d+(?=\s|\b)/},i={className:"operator",relevance:0,begin:/=/},c={className:"punctuation",relevance:0,begin:/,/},l={className:"number",variants:[{begin:/0[xX][a-fA-F0-9]+/},{begin:/-?\d+(?:[.]\d+)?(?:[eE][-+]?\d+(?:[.]\d+)?)?/}],relevance:0},r={className:"symbol",variants:[{begin:/^\s*[a-z]+:/}],relevance:0},s={className:"variable",variants:[{begin:n.concat(/%/,a)},{begin:/%\d+/},{begin:/#\d+/}]},o={className:"title",variants:[{begin:n.concat(/@/,a)},{begin:/@\d+/},{begin:n.concat(/!/,a)},{begin:n.concat(/!\d+/,a)},{begin:/!\d+/}]};return{name:"LLVM IR",keywords:"begin end true false declare define global constant private linker_private internal available_externally linkonce linkonce_odr weak weak_odr appending dllimport dllexport common default hidden protected extern_weak external thread_local zeroinitializer undef null to tail target triple datalayout volatile nuw nsw nnan ninf nsz arcp fast exact inbounds align addrspace section alias module asm sideeffect gc dbg linker_private_weak attributes blockaddress initialexec localdynamic localexec prefix unnamed_addr ccc fastcc coldcc x86_stdcallcc x86_fastcallcc arm_apcscc arm_aapcscc arm_aapcs_vfpcc ptx_device ptx_kernel intel_ocl_bicc msp430_intrcc spir_func spir_kernel x86_64_sysvcc x86_64_win64cc x86_thiscallcc cc c signext zeroext inreg sret nounwind noreturn noalias nocapture byval nest readnone readonly inlinehint noinline alwaysinline optsize ssp sspreq noredzone noimplicitfloat naked builtin cold nobuiltin noduplicate nonlazybind optnone returns_twice sanitize_address sanitize_memory sanitize_thread sspstrong uwtable returned type opaque eq ne slt sgt sle sge ult ugt ule uge oeq one olt ogt ole oge ord uno ueq une x acq_rel acquire alignstack atomic catch cleanup filter inteldialect max min monotonic nand personality release seq_cst singlethread umax umin unordered xchg add fadd sub fsub mul fmul udiv sdiv fdiv urem srem frem shl lshr ashr and or xor icmp fcmp phi call trunc zext sext fptrunc fpext uitofp sitofp fptoui fptosi inttoptr ptrtoint bitcast addrspacecast select va_arg ret br switch invoke unwind unreachable indirectbr landingpad resume malloc alloca free load store getelementptr extractelement insertelement shufflevector getresult extractvalue insertvalue atomicrmw cmpxchg fence argmemonly double",contains:[t,e.COMMENT(/;\s*$/,null,{relevance:0}),e.COMMENT(/;/,/$/),e.QUOTE_STRING_MODE,{className:"string",variants:[{begin:/"/,end:/[^\\]"/}]},o,c,i,s,r,l]}}e.exports=n}}]); -------------------------------------------------------------------------------- /docs/js/highlight-js-markdown-js.a2f456af.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * This source file is part of the Swift.org open source project 3 | * 4 | * Copyright (c) 2021 Apple Inc. and the Swift project authors 5 | * Licensed under Apache License v2.0 with Runtime Library Exception 6 | * 7 | * See https://swift.org/LICENSE.txt for license information 8 | * See https://swift.org/CONTRIBUTORS.txt for Swift project authors 9 | */ 10 | (self["webpackChunkswift_docc_render"]=self["webpackChunkswift_docc_render"]||[]).push([[113],{1312:function(e){function n(e){const n=e.regex,a={begin:/<\/?[A-Za-z_]/,end:">",subLanguage:"xml",relevance:0},i={begin:"^[-\\*]{3,}",end:"$"},c={className:"code",variants:[{begin:"(`{3,})[^`](.|\\n)*?\\1`*[ ]*"},{begin:"(~{3,})[^~](.|\\n)*?\\1~*[ ]*"},{begin:"```",end:"```+[ ]*$"},{begin:"~~~",end:"~~~+[ ]*$"},{begin:"`.+?`"},{begin:"(?=^( {4}|\\t))",contains:[{begin:"^( {4}|\\t)",end:"(\\n)$"}],relevance:0}]},s={className:"bullet",begin:"^[ \t]*([*+-]|(\\d+\\.))(?=\\s+)",end:"\\s+",excludeEnd:!0},t={begin:/^\[[^\n]+\]:/,returnBegin:!0,contains:[{className:"symbol",begin:/\[/,end:/\]/,excludeBegin:!0,excludeEnd:!0},{className:"link",begin:/:\s*/,end:/$/,excludeBegin:!0}]},d=/[A-Za-z][A-Za-z0-9+.-]*/,l={variants:[{begin:/\[.+?\]\[.*?\]/,relevance:0},{begin:/\[.+?\]\(((data|javascript|mailto):|(?:http|ftp)s?:\/\/).*?\)/,relevance:2},{begin:n.concat(/\[.+?\]\(/,d,/:\/\/.*?\)/),relevance:2},{begin:/\[.+?\]\([./?&#].*?\)/,relevance:1},{begin:/\[.*?\]\(.*?\)/,relevance:0}],returnBegin:!0,contains:[{match:/\[(?=\])/},{className:"string",relevance:0,begin:"\\[",end:"\\]",excludeBegin:!0,returnEnd:!0},{className:"link",relevance:0,begin:"\\]\\(",end:"\\)",excludeBegin:!0,excludeEnd:!0},{className:"symbol",relevance:0,begin:"\\]\\[",end:"\\]",excludeBegin:!0,excludeEnd:!0}]},g={className:"strong",contains:[],variants:[{begin:/_{2}/,end:/_{2}/},{begin:/\*{2}/,end:/\*{2}/}]},b={className:"emphasis",contains:[],variants:[{begin:/\*(?!\*)/,end:/\*/},{begin:/_(?!_)/,end:/_/,relevance:0}]};g.contains.push(b),b.contains.push(g);let o=[a,l];g.contains=g.contains.concat(o),b.contains=b.contains.concat(o),o=o.concat(g,b);const r={className:"section",variants:[{begin:"^#{1,6}",end:"$",contains:o},{begin:"(?=^.+?\\n[=-]{2,}$)",contains:[{begin:"^[=-]*$"},{begin:"^",end:"\\n",contains:o}]}]},u={className:"quote",begin:"^>\\s+",contains:o,end:"$"};return{name:"Markdown",aliases:["md","mkdown","mkd"],contains:[r,a,s,g,b,u,c,i,l,t]}}e.exports=n}}]); -------------------------------------------------------------------------------- /docs/js/highlight-js-objectivec-js.74dea052.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * This source file is part of the Swift.org open source project 3 | * 4 | * Copyright (c) 2021 Apple Inc. and the Swift project authors 5 | * Licensed under Apache License v2.0 with Runtime Library Exception 6 | * 7 | * See https://swift.org/LICENSE.txt for license information 8 | * See https://swift.org/CONTRIBUTORS.txt for Swift project authors 9 | */ 10 | (self["webpackChunkswift_docc_render"]=self["webpackChunkswift_docc_render"]||[]).push([[637],{2446:function(e){function n(e){const n={className:"built_in",begin:"\\b(AV|CA|CF|CG|CI|CL|CM|CN|CT|MK|MP|MTK|MTL|NS|SCN|SK|UI|WK|XC)\\w+"},_=/[a-zA-Z@][a-zA-Z0-9_]*/,i=["int","float","while","char","export","sizeof","typedef","const","struct","for","union","unsigned","long","volatile","static","bool","mutable","if","do","return","goto","void","enum","else","break","extern","asm","case","short","default","double","register","explicit","signed","typename","this","switch","continue","wchar_t","inline","readonly","assign","readwrite","self","@synchronized","id","typeof","nonatomic","super","unichar","IBOutlet","IBAction","strong","weak","copy","in","out","inout","bycopy","byref","oneway","__strong","__weak","__block","__autoreleasing","@private","@protected","@public","@try","@property","@end","@throw","@catch","@finally","@autoreleasepool","@synthesize","@dynamic","@selector","@optional","@required","@encode","@package","@import","@defs","@compatibility_alias","__bridge","__bridge_transfer","__bridge_retained","__bridge_retain","__covariant","__contravariant","__kindof","_Nonnull","_Nullable","_Null_unspecified","__FUNCTION__","__PRETTY_FUNCTION__","__attribute__","getter","setter","retain","unsafe_unretained","nonnull","nullable","null_unspecified","null_resettable","class","instancetype","NS_DESIGNATED_INITIALIZER","NS_UNAVAILABLE","NS_REQUIRES_SUPER","NS_RETURNS_INNER_POINTER","NS_INLINE","NS_AVAILABLE","NS_DEPRECATED","NS_ENUM","NS_OPTIONS","NS_SWIFT_UNAVAILABLE","NS_ASSUME_NONNULL_BEGIN","NS_ASSUME_NONNULL_END","NS_REFINED_FOR_SWIFT","NS_SWIFT_NAME","NS_SWIFT_NOTHROW","NS_DURING","NS_HANDLER","NS_ENDHANDLER","NS_VALUERETURN","NS_VOIDRETURN"],t=["false","true","FALSE","TRUE","nil","YES","NO","NULL"],a=["BOOL","dispatch_once_t","dispatch_queue_t","dispatch_sync","dispatch_async","dispatch_once"],r={$pattern:_,keyword:i,literal:t,built_in:a},s={$pattern:_,keyword:["@interface","@class","@protocol","@implementation"]};return{name:"Objective-C",aliases:["mm","objc","obj-c","obj-c++","objective-c++"],keywords:r,illegal:"/,end:/$/,illegal:"\\n"},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{className:"class",begin:"("+s.keyword.join("|")+")\\b",end:/(\{|$)/,excludeEnd:!0,keywords:s,contains:[e.UNDERSCORE_TITLE_MODE]},{begin:"\\."+e.UNDERSCORE_IDENT_RE,relevance:0}]}}e.exports=n}}]); -------------------------------------------------------------------------------- /docs/js/highlight-js-python-js.60354774.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * This source file is part of the Swift.org open source project 3 | * 4 | * Copyright (c) 2021 Apple Inc. and the Swift project authors 5 | * Licensed under Apache License v2.0 with Runtime Library Exception 6 | * 7 | * See https://swift.org/LICENSE.txt for license information 8 | * See https://swift.org/CONTRIBUTORS.txt for Swift project authors 9 | */ 10 | (self["webpackChunkswift_docc_render"]=self["webpackChunkswift_docc_render"]||[]).push([[435],{8245:function(e){function n(e){const n=e.regex,a=/[\p{XID_Start}_]\p{XID_Continue}*/u,i=["and","as","assert","async","await","break","class","continue","def","del","elif","else","except","finally","for","from","global","if","import","in","is","lambda","nonlocal|10","not","or","pass","raise","return","try","while","with","yield"],s=["__import__","abs","all","any","ascii","bin","bool","breakpoint","bytearray","bytes","callable","chr","classmethod","compile","complex","delattr","dict","dir","divmod","enumerate","eval","exec","filter","float","format","frozenset","getattr","globals","hasattr","hash","help","hex","id","input","int","isinstance","issubclass","iter","len","list","locals","map","max","memoryview","min","next","object","oct","open","ord","pow","print","property","range","repr","reversed","round","set","setattr","slice","sorted","staticmethod","str","sum","super","tuple","type","vars","zip"],t=["__debug__","Ellipsis","False","None","NotImplemented","True"],r=["Any","Callable","Coroutine","Dict","List","Literal","Generic","Optional","Sequence","Set","Tuple","Type","Union"],l={$pattern:/[A-Za-z]\w+|__\w+__/,keyword:i,built_in:s,literal:t,type:r},b={className:"meta",begin:/^(>>>|\.\.\.) /},o={className:"subst",begin:/\{/,end:/\}/,keywords:l,illegal:/#/},c={begin:/\{\{/,relevance:0},d={className:"string",contains:[e.BACKSLASH_ESCAPE],variants:[{begin:/([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?'''/,end:/'''/,contains:[e.BACKSLASH_ESCAPE,b],relevance:10},{begin:/([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?"""/,end:/"""/,contains:[e.BACKSLASH_ESCAPE,b],relevance:10},{begin:/([fF][rR]|[rR][fF]|[fF])'''/,end:/'''/,contains:[e.BACKSLASH_ESCAPE,b,c,o]},{begin:/([fF][rR]|[rR][fF]|[fF])"""/,end:/"""/,contains:[e.BACKSLASH_ESCAPE,b,c,o]},{begin:/([uU]|[rR])'/,end:/'/,relevance:10},{begin:/([uU]|[rR])"/,end:/"/,relevance:10},{begin:/([bB]|[bB][rR]|[rR][bB])'/,end:/'/},{begin:/([bB]|[bB][rR]|[rR][bB])"/,end:/"/},{begin:/([fF][rR]|[rR][fF]|[fF])'/,end:/'/,contains:[e.BACKSLASH_ESCAPE,c,o]},{begin:/([fF][rR]|[rR][fF]|[fF])"/,end:/"/,contains:[e.BACKSLASH_ESCAPE,c,o]},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]},p="[0-9](_?[0-9])*",_=`(\\b(${p}))?\\.(${p})|\\b(${p})\\.`,g={className:"number",relevance:0,variants:[{begin:`(\\b(${p})|(${_}))[eE][+-]?(${p})[jJ]?\\b`},{begin:`(${_})[jJ]?`},{begin:"\\b([1-9](_?[0-9])*|0+(_?0)*)[lLjJ]?\\b"},{begin:"\\b0[bB](_?[01])+[lL]?\\b"},{begin:"\\b0[oO](_?[0-7])+[lL]?\\b"},{begin:"\\b0[xX](_?[0-9a-fA-F])+[lL]?\\b"},{begin:`\\b(${p})[jJ]\\b`}]},m={className:"comment",begin:n.lookahead(/# type:/),end:/$/,keywords:l,contains:[{begin:/# type:/},{begin:/#/,end:/\b\B/,endsWithParent:!0}]},f={className:"params",variants:[{className:"",begin:/\(\s*\)/,skip:!0},{begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:l,contains:["self",b,g,d,e.HASH_COMMENT_MODE]}]};return o.contains=[d,g,b],{name:"Python",aliases:["py","gyp","ipython"],unicodeRegex:!0,keywords:l,illegal:/(<\/|->|\?)|=>/,contains:[b,g,{begin:/\bself\b/},{beginKeywords:"if",relevance:0},d,m,e.HASH_COMMENT_MODE,{match:[/def/,/\s+/,a],scope:{1:"keyword",3:"title.function"},contains:[f]},{variants:[{match:[/class/,/\s+/,a,/\s*/,/\(\s*/,a,/\s*\)/]},{match:[/class/,/\s+/,a]}],scope:{1:"keyword",3:"title.class",6:"title.class.inherited"}},{className:"meta",begin:/^[\t ]*@/,end:/(?=#)|$/,contains:[g,f,d]}]}}e.exports=n}}]); -------------------------------------------------------------------------------- /docs/js/highlight-js-shell-js.0ad5b20f.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * This source file is part of the Swift.org open source project 3 | * 4 | * Copyright (c) 2021 Apple Inc. and the Swift project authors 5 | * Licensed under Apache License v2.0 with Runtime Library Exception 6 | * 7 | * See https://swift.org/LICENSE.txt for license information 8 | * See https://swift.org/CONTRIBUTORS.txt for Swift project authors 9 | */ 10 | (self["webpackChunkswift_docc_render"]=self["webpackChunkswift_docc_render"]||[]).push([[176],{7874:function(s){function e(s){return{name:"Shell Session",aliases:["console","shellsession"],contains:[{className:"meta",begin:/^\s{0,3}[/~\w\d[\]()@-]*[>%$#][ ]?/,starts:{end:/[^\\](?=\s*$)/,subLanguage:"bash"}}]}}s.exports=e}}]); -------------------------------------------------------------------------------- /docs/js/highlight-js-xml-js.0d78f903.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * This source file is part of the Swift.org open source project 3 | * 4 | * Copyright (c) 2021 Apple Inc. and the Swift project authors 5 | * Licensed under Apache License v2.0 with Runtime Library Exception 6 | * 7 | * See https://swift.org/LICENSE.txt for license information 8 | * See https://swift.org/CONTRIBUTORS.txt for Swift project authors 9 | */ 10 | (self["webpackChunkswift_docc_render"]=self["webpackChunkswift_docc_render"]||[]).push([[490],{4610:function(e){function n(e){const n=e.regex,a=n.concat(/[A-Z_]/,n.optional(/[A-Z0-9_.-]*:/),/[A-Z0-9_.-]*/),s=/[A-Za-z0-9._:-]+/,t={className:"symbol",begin:/&[a-z]+;|&#[0-9]+;|&#x[a-f0-9]+;/},c={begin:/\s/,contains:[{className:"keyword",begin:/#?[a-z_][a-z1-9_-]+/,illegal:/\n/}]},i=e.inherit(c,{begin:/\(/,end:/\)/}),l=e.inherit(e.APOS_STRING_MODE,{className:"string"}),r=e.inherit(e.QUOTE_STRING_MODE,{className:"string"}),g={endsWithParent:!0,illegal:/`]+/}]}]}]};return{name:"HTML, XML",aliases:["html","xhtml","rss","atom","xjb","xsd","xsl","plist","wsf","svg"],case_insensitive:!0,contains:[{className:"meta",begin://,relevance:10,contains:[c,r,l,i,{begin:/\[/,end:/\]/,contains:[{className:"meta",begin://,contains:[c,i,r,l]}]}]},e.COMMENT(//,{relevance:10}),{begin://,relevance:10},t,{className:"meta",begin:/<\?xml/,end:/\?>/,relevance:10},{className:"tag",begin:/)/,end:/>/,keywords:{name:"style"},contains:[g],starts:{end:/<\/style>/,returnEnd:!0,subLanguage:["css","xml"]}},{className:"tag",begin:/)/,end:/>/,keywords:{name:"script"},contains:[g],starts:{end:/<\/script>/,returnEnd:!0,subLanguage:["javascript","handlebars","xml"]}},{className:"tag",begin:/<>|<\/>/},{className:"tag",begin:n.concat(//,/>/,/\s/)))),end:/\/?>/,contains:[{className:"name",begin:a,relevance:0,starts:g}]},{className:"tag",begin:n.concat(/<\//,n.lookahead(n.concat(a,/>/))),contains:[{className:"name",begin:a,relevance:0},{begin:/>/,relevance:0,endsParent:!0}]}]}}e.exports=n}}]); -------------------------------------------------------------------------------- /docs/metadata.json: -------------------------------------------------------------------------------- 1 | {"bundleIdentifier":"com.auth0.SimpleKeychain","bundleDisplayName":"SimpleKeychain","schemaVersion":{"patch":0,"major":0,"minor":1}} -------------------------------------------------------------------------------- /fastlane/Fastfile: -------------------------------------------------------------------------------- 1 | default_platform :ios 2 | 3 | platform :ios do 4 | desc 'Tags the release and pushes the Podspec to CocoaPods' 5 | lane :release do 6 | perform_release target: 'SimpleKeychain-iOS' 7 | publish_release repository: 'SimpleKeychain' 8 | end 9 | 10 | desc 'Generate API documentation' 11 | lane :build_docs do 12 | target = 'SimpleKeychain' 13 | docs_dir = 'docs' 14 | docs_archive = 'docs.archive' 15 | redirect_file = <<~HEREDOC 16 | 17 | 18 | 19 | 20 | 21 | Redirect 22 | 23 | 24 | HEREDOC 25 | # Work from project root (defaults to /fastlane) 26 | Dir.chdir('..') do 27 | # Clear existing docs, or create docs folder if it doesn't already exist 28 | Dir.exist?(docs_dir) ? FileUtils.rm_r(docs_dir) : FileUtils.mkdir(docs_dir) 29 | # Generate the .doccarchive 30 | sh "xcodebuild docbuild -scheme #{target}-iOS -configuration Release -destination 'generic/platform=iOS' -derivedDataPath #{docs_archive}" 31 | # Generate the static site 32 | sh "$(xcrun --find docc) process-archive transform-for-static-hosting #{docs_archive}/Build/Products/Release-iphoneos/#{target}.doccarchive --hosting-base-path #{target} --output-path #{docs_dir}" 33 | # Write redirect file 34 | File.write("#{docs_dir}/index.html", redirect_file) 35 | end 36 | end 37 | end 38 | -------------------------------------------------------------------------------- /fastlane/Pluginfile: -------------------------------------------------------------------------------- 1 | # Autogenerated by fastlane 2 | # 3 | # Ensure this file is checked in to source control! 4 | 5 | gem 'fastlane-plugin-auth0_shipper' 6 | -------------------------------------------------------------------------------- /fastlane/README.md: -------------------------------------------------------------------------------- 1 | fastlane documentation 2 | ---- 3 | 4 | # Installation 5 | 6 | Make sure you have the latest version of the Xcode command line tools installed: 7 | 8 | ```sh 9 | xcode-select --install 10 | ``` 11 | 12 | For _fastlane_ installation instructions, see [Installing _fastlane_](https://docs.fastlane.tools/#installing-fastlane) 13 | 14 | # Available Actions 15 | 16 | ## iOS 17 | 18 | ### ios release 19 | 20 | ```sh 21 | [bundle exec] fastlane ios release 22 | ``` 23 | 24 | Tags the release and pushes the Podspec to CocoaPods 25 | 26 | ### ios build_docs 27 | 28 | ```sh 29 | [bundle exec] fastlane ios build_docs 30 | ``` 31 | 32 | Generate API documentation 33 | 34 | ---- 35 | 36 | This README.md is auto-generated and will be re-generated every time [_fastlane_](https://fastlane.tools) is run. 37 | 38 | More information about _fastlane_ can be found on [fastlane.tools](https://fastlane.tools). 39 | 40 | The documentation of _fastlane_ can be found on [docs.fastlane.tools](https://docs.fastlane.tools). 41 | -------------------------------------------------------------------------------- /opslevel.yml: -------------------------------------------------------------------------------- 1 | --- 2 | version: 1 3 | repository: 4 | owner: dx_sdks 5 | tags: 6 | -------------------------------------------------------------------------------- /tvOSTestHost/AppDelegate.swift: -------------------------------------------------------------------------------- 1 | import UIKit 2 | 3 | @UIApplicationMain 4 | class AppDelegate: UIResponder, UIApplicationDelegate { 5 | 6 | var window: UIWindow? 7 | 8 | 9 | func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { 10 | // Override point for customization after application launch. 11 | return true 12 | } 13 | 14 | func applicationWillResignActive(_ application: UIApplication) { 15 | // Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state. 16 | // Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. Games should use this method to pause the game. 17 | } 18 | 19 | func applicationDidEnterBackground(_ application: UIApplication) { 20 | // Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later. 21 | } 22 | 23 | func applicationWillEnterForeground(_ application: UIApplication) { 24 | // Called as part of the transition from the background to the active state; here you can undo many of the changes made on entering the background. 25 | } 26 | 27 | func applicationDidBecomeActive(_ application: UIApplication) { 28 | // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface. 29 | } 30 | 31 | 32 | } 33 | 34 | -------------------------------------------------------------------------------- /tvOSTestHost/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - App Store.imagestack/Back.imagestacklayer/Content.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "tv" 5 | } 6 | ], 7 | "info" : { 8 | "version" : 1, 9 | "author" : "xcode" 10 | } 11 | } -------------------------------------------------------------------------------- /tvOSTestHost/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - App Store.imagestack/Back.imagestacklayer/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "version" : 1, 4 | "author" : "xcode" 5 | } 6 | } -------------------------------------------------------------------------------- /tvOSTestHost/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - App Store.imagestack/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "layers" : [ 3 | { 4 | "filename" : "Front.imagestacklayer" 5 | }, 6 | { 7 | "filename" : "Middle.imagestacklayer" 8 | }, 9 | { 10 | "filename" : "Back.imagestacklayer" 11 | } 12 | ], 13 | "info" : { 14 | "version" : 1, 15 | "author" : "xcode" 16 | } 17 | } -------------------------------------------------------------------------------- /tvOSTestHost/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - App Store.imagestack/Front.imagestacklayer/Content.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "tv" 5 | } 6 | ], 7 | "info" : { 8 | "version" : 1, 9 | "author" : "xcode" 10 | } 11 | } -------------------------------------------------------------------------------- /tvOSTestHost/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - App Store.imagestack/Front.imagestacklayer/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "version" : 1, 4 | "author" : "xcode" 5 | } 6 | } -------------------------------------------------------------------------------- /tvOSTestHost/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - App Store.imagestack/Middle.imagestacklayer/Content.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "tv" 5 | } 6 | ], 7 | "info" : { 8 | "version" : 1, 9 | "author" : "xcode" 10 | } 11 | } -------------------------------------------------------------------------------- /tvOSTestHost/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - App Store.imagestack/Middle.imagestacklayer/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "version" : 1, 4 | "author" : "xcode" 5 | } 6 | } -------------------------------------------------------------------------------- /tvOSTestHost/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon.imagestack/Back.imagestacklayer/Content.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "tv", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "tv", 9 | "scale" : "2x" 10 | } 11 | ], 12 | "info" : { 13 | "version" : 1, 14 | "author" : "xcode" 15 | } 16 | } -------------------------------------------------------------------------------- /tvOSTestHost/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon.imagestack/Back.imagestacklayer/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "version" : 1, 4 | "author" : "xcode" 5 | } 6 | } -------------------------------------------------------------------------------- /tvOSTestHost/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon.imagestack/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "layers" : [ 3 | { 4 | "filename" : "Front.imagestacklayer" 5 | }, 6 | { 7 | "filename" : "Middle.imagestacklayer" 8 | }, 9 | { 10 | "filename" : "Back.imagestacklayer" 11 | } 12 | ], 13 | "info" : { 14 | "version" : 1, 15 | "author" : "xcode" 16 | } 17 | } -------------------------------------------------------------------------------- /tvOSTestHost/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon.imagestack/Front.imagestacklayer/Content.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "tv", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "tv", 9 | "scale" : "2x" 10 | } 11 | ], 12 | "info" : { 13 | "version" : 1, 14 | "author" : "xcode" 15 | } 16 | } -------------------------------------------------------------------------------- /tvOSTestHost/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon.imagestack/Front.imagestacklayer/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "version" : 1, 4 | "author" : "xcode" 5 | } 6 | } -------------------------------------------------------------------------------- /tvOSTestHost/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon.imagestack/Middle.imagestacklayer/Content.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "tv", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "tv", 9 | "scale" : "2x" 10 | } 11 | ], 12 | "info" : { 13 | "version" : 1, 14 | "author" : "xcode" 15 | } 16 | } -------------------------------------------------------------------------------- /tvOSTestHost/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon.imagestack/Middle.imagestacklayer/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "version" : 1, 4 | "author" : "xcode" 5 | } 6 | } -------------------------------------------------------------------------------- /tvOSTestHost/Assets.xcassets/App Icon & Top Shelf Image.brandassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "assets" : [ 3 | { 4 | "size" : "1280x768", 5 | "idiom" : "tv", 6 | "filename" : "App Icon - App Store.imagestack", 7 | "role" : "primary-app-icon" 8 | }, 9 | { 10 | "size" : "400x240", 11 | "idiom" : "tv", 12 | "filename" : "App Icon.imagestack", 13 | "role" : "primary-app-icon" 14 | }, 15 | { 16 | "size" : "2320x720", 17 | "idiom" : "tv", 18 | "filename" : "Top Shelf Image Wide.imageset", 19 | "role" : "top-shelf-image-wide" 20 | }, 21 | { 22 | "size" : "1920x720", 23 | "idiom" : "tv", 24 | "filename" : "Top Shelf Image.imageset", 25 | "role" : "top-shelf-image" 26 | } 27 | ], 28 | "info" : { 29 | "version" : 1, 30 | "author" : "xcode" 31 | } 32 | } -------------------------------------------------------------------------------- /tvOSTestHost/Assets.xcassets/App Icon & Top Shelf Image.brandassets/Top Shelf Image Wide.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "tv", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "tv", 9 | "scale" : "2x" 10 | }, 11 | { 12 | "idiom" : "tv-marketing", 13 | "scale" : "1x" 14 | }, 15 | { 16 | "idiom" : "tv-marketing", 17 | "scale" : "2x" 18 | } 19 | ], 20 | "info" : { 21 | "version" : 1, 22 | "author" : "xcode" 23 | } 24 | } -------------------------------------------------------------------------------- /tvOSTestHost/Assets.xcassets/App Icon & Top Shelf Image.brandassets/Top Shelf Image.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "tv", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "tv", 9 | "scale" : "2x" 10 | }, 11 | { 12 | "idiom" : "tv-marketing", 13 | "scale" : "1x" 14 | }, 15 | { 16 | "idiom" : "tv-marketing", 17 | "scale" : "2x" 18 | } 19 | ], 20 | "info" : { 21 | "version" : 1, 22 | "author" : "xcode" 23 | } 24 | } -------------------------------------------------------------------------------- /tvOSTestHost/Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "version" : 1, 4 | "author" : "xcode" 5 | } 6 | } -------------------------------------------------------------------------------- /tvOSTestHost/Base.lproj/LaunchScreen.storyboard: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /tvOSTestHost/Base.lproj/Main.storyboard: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | -------------------------------------------------------------------------------- /tvOSTestHost/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | $(DEVELOPMENT_LANGUAGE) 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | $(PRODUCT_BUNDLE_PACKAGE_TYPE) 17 | CFBundleShortVersionString 18 | 0.1.0 19 | CFBundleVersion 20 | 1 21 | LSRequiresIPhoneOS 22 | 23 | UILaunchStoryboardName 24 | LaunchScreen 25 | UIMainStoryboardFile 26 | Main 27 | UIRequiredDeviceCapabilities 28 | 29 | arm64 30 | 31 | UIUserInterfaceStyle 32 | Automatic 33 | 34 | 35 | -------------------------------------------------------------------------------- /tvOSTestHost/ViewController.swift: -------------------------------------------------------------------------------- 1 | import UIKit 2 | 3 | class ViewController: UIViewController { 4 | 5 | override func viewDidLoad() { 6 | super.viewDidLoad() 7 | // Do any additional setup after loading the view. 8 | } 9 | 10 | 11 | } 12 | 13 | -------------------------------------------------------------------------------- /tvOSTestHost/tvOSTestHost.entitlements: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | keychain-access-groups 6 | 7 | $(AppIdentifierPrefix)com.auth0.simplekeychain.tvOSTestHost 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /visionOSTestHost/Assets.xcassets/AppIcon.solidimagestack/Back.solidimagestacklayer/Content.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "vision", 5 | "scale" : "2x" 6 | } 7 | ], 8 | "info" : { 9 | "author" : "xcode", 10 | "version" : 1 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /visionOSTestHost/Assets.xcassets/AppIcon.solidimagestack/Back.solidimagestacklayer/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "author" : "xcode", 4 | "version" : 1 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /visionOSTestHost/Assets.xcassets/AppIcon.solidimagestack/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "author" : "xcode", 4 | "version" : 1 5 | }, 6 | "layers" : [ 7 | { 8 | "filename" : "Front.solidimagestacklayer" 9 | }, 10 | { 11 | "filename" : "Middle.solidimagestacklayer" 12 | }, 13 | { 14 | "filename" : "Back.solidimagestacklayer" 15 | } 16 | ] 17 | } 18 | -------------------------------------------------------------------------------- /visionOSTestHost/Assets.xcassets/AppIcon.solidimagestack/Front.solidimagestacklayer/Content.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "vision", 5 | "scale" : "2x" 6 | } 7 | ], 8 | "info" : { 9 | "author" : "xcode", 10 | "version" : 1 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /visionOSTestHost/Assets.xcassets/AppIcon.solidimagestack/Front.solidimagestacklayer/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "author" : "xcode", 4 | "version" : 1 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /visionOSTestHost/Assets.xcassets/AppIcon.solidimagestack/Middle.solidimagestacklayer/Content.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "vision", 5 | "scale" : "2x" 6 | } 7 | ], 8 | "info" : { 9 | "author" : "xcode", 10 | "version" : 1 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /visionOSTestHost/Assets.xcassets/AppIcon.solidimagestack/Middle.solidimagestacklayer/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "author" : "xcode", 4 | "version" : 1 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /visionOSTestHost/Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "version" : 1, 4 | "author" : "xcode" 5 | } 6 | } -------------------------------------------------------------------------------- /visionOSTestHost/ContentView.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ContentView.swift 3 | // visionOSTestHost 4 | // 5 | // Created by Desu Sai Venkat on 18/06/24. 6 | // Copyright © 2024 Auth0. All rights reserved. 7 | // 8 | 9 | import SwiftUI 10 | 11 | struct ContentView: View { 12 | var body: some View { 13 | VStack { 14 | Text("Hello, world!") 15 | } 16 | .padding() 17 | } 18 | } 19 | 20 | #Preview(windowStyle: .automatic) { 21 | ContentView() 22 | } 23 | -------------------------------------------------------------------------------- /visionOSTestHost/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | UIApplicationSceneManifest 6 | 7 | UIApplicationPreferredDefaultSceneSessionRole 8 | UIWindowSceneSessionRoleApplication 9 | UIApplicationSupportsMultipleScenes 10 | 11 | UISceneConfigurations 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /visionOSTestHost/visionOSTestHostApp.swift: -------------------------------------------------------------------------------- 1 | // 2 | // visionOSTestHostApp.swift 3 | // visionOSTestHost 4 | // 5 | // Created by Desu Sai Venkat on 18/06/24. 6 | // Copyright © 2024 Auth0. All rights reserved. 7 | // 8 | 9 | import SwiftUI 10 | 11 | @main 12 | struct visionOSTestHostApp: App { 13 | var body: some Scene { 14 | WindowGroup { 15 | ContentView() 16 | } 17 | } 18 | } 19 | --------------------------------------------------------------------------------