[
  {
    "path": ".codebeatignore",
    "content": "docs/**\n"
  },
  {
    "path": ".gitignore",
    "content": ".build\nbuild\n.vagrant\nPackages\n*.pkg\nSwiftJWT.xcodeproj\n*.DS_Store\nPackage.resolved\n.swiftpm\n"
  },
  {
    "path": ".jazzy.yaml",
    "content": "module: SwiftJWT\nauthor: IBM & Kitura Project Contributors\ngithub_url: https://github.com/Kitura/Swift-JWT/\n\ntheme: fullwidth\nclean: true\nexclude: [Packages]\n\nreadme: README.md\n\nskip_undocumented: false\nhide_documentation_coverage: false\n"
  },
  {
    "path": ".spi.yml",
    "content": "version: 1\nbuilder:\n  configs:\n    - documentation_targets: [SwiftJWT]\n      scheme: SwiftJWT\n\n"
  },
  {
    "path": ".swift-version",
    "content": "5.1\n"
  },
  {
    "path": ".travis.yml",
    "content": "# Travis CI build file.\n\n# whitelist (branches that should be built)\nbranches:\n  only:\n    - master\n    - /^issue.*$/\n\n# the matrix of builds should cover each combination of Swift version\n# and platform that is supported. The version of Swift used is specified\n# by .swift-version, unless SWIFT_SNAPSHOT is specified.\nmatrix:\n  include:\n    - os: linux\n      dist: xenial\n      sudo: required\n      services: docker\n      env: DOCKER_IMAGE=docker.kitura.net/kitura/swift-ci-ubuntu16.04:5.2.5 SWIFT_TEST_ARGS=\"\"\n    - os: linux\n      dist: bionic\n      sudo: required\n      services: docker\n      env: DOCKER_IMAGE=docker.kitura.net/kitura/swift-ci-ubuntu18.04:5.4 SWIFT_TEST_ARGS=\"\"\n    - os: linux\n      dist: xenial\n      sudo: required\n      services: docker\n      env: DOCKER_IMAGE=docker.kitura.net/kitura/swift-ci-ubuntu18.04:latest USE_SWIFT_DEVELOPMENT_SNAPSHOT=1 SWIFT_TEST_ARGS=\"\"\n    - os: osx\n      osx_image: xcode12.2\n      sudo: required\n      env: JAZZY_ELIGIBLE=true SWIFT_TEST_ARGS=\"\"\n    - os: osx\n      osx_image: xcode12.5\n      sudo: required\n      env: SWIFT_TEST_ARGS=\"\"\n    - os: osx\n      osx_image: xcode12.5\n      sudo: required\n      env: USE_SWIFT_DEVELOPMENT_SNAPSHOT=1 SWIFT_TEST_ARGS=\"\"\n\nbefore_install:\n  - git clone https://github.com/Kitura/Package-Builder.git\n\nscript:\n  - ./Package-Builder/build-package.sh -projectDir $TRAVIS_BUILD_DIR\n"
  },
  {
    "path": "LICENSE",
    "content": "\n                                 Apache License\n                           Version 2.0, January 2004\n                        http://www.apache.org/licenses/\n\n   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n   1. Definitions.\n\n      \"License\" shall mean the terms and conditions for use, reproduction,\n      and distribution as defined by Sections 1 through 9 of this document.\n\n      \"Licensor\" shall mean the copyright owner or entity authorized by\n      the copyright owner that is granting the License.\n\n      \"Legal Entity\" shall mean the union of the acting entity and all\n      other entities that control, are controlled by, or are under common\n      control with that entity. For the purposes of this definition,\n      \"control\" means (i) the power, direct or indirect, to cause the\n      direction or management of such entity, whether by contract or\n      otherwise, or (ii) ownership of fifty percent (50%) or more of the\n      outstanding shares, or (iii) beneficial ownership of such entity.\n\n      \"You\" (or \"Your\") shall mean an individual or Legal Entity\n      exercising permissions granted by this License.\n\n      \"Source\" form shall mean the preferred form for making modifications,\n      including but not limited to software source code, documentation\n      source, and configuration files.\n\n      \"Object\" form shall mean any form resulting from mechanical\n      transformation or translation of a Source form, including but\n      not limited to compiled object code, generated documentation,\n      and conversions to other media types.\n\n      \"Work\" shall mean the work of authorship, whether in Source or\n      Object form, made available under the License, as indicated by a\n      copyright notice that is included in or attached to the work\n      (an example is provided in the Appendix below).\n\n      \"Derivative Works\" shall mean any work, whether in Source or Object\n      form, that is based on (or derived from) the Work and for which the\n      editorial revisions, annotations, elaborations, or other modifications\n      represent, as a whole, an original work of authorship. For the purposes\n      of this License, Derivative Works shall not include works that remain\n      separable from, or merely link (or bind by name) to the interfaces of,\n      the Work and Derivative Works thereof.\n\n      \"Contribution\" shall mean any work of authorship, including\n      the original version of the Work and any modifications or additions\n      to that Work or Derivative Works thereof, that is intentionally\n      submitted to Licensor for inclusion in the Work by the copyright owner\n      or by an individual or Legal Entity authorized to submit on behalf of\n      the copyright owner. For the purposes of this definition, \"submitted\"\n      means any form of electronic, verbal, or written communication sent\n      to the Licensor or its representatives, including but not limited to\n      communication on electronic mailing lists, source code control systems,\n      and issue tracking systems that are managed by, or on behalf of, the\n      Licensor for the purpose of discussing and improving the Work, but\n      excluding communication that is conspicuously marked or otherwise\n      designated in writing by the copyright owner as \"Not a Contribution.\"\n\n      \"Contributor\" shall mean Licensor and any individual or Legal Entity\n      on behalf of whom a Contribution has been received by Licensor and\n      subsequently incorporated within the Work.\n\n   2. Grant of Copyright License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      copyright license to reproduce, prepare Derivative Works of,\n      publicly display, publicly perform, sublicense, and distribute the\n      Work and such Derivative Works in Source or Object form.\n\n   3. Grant of Patent License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      (except as stated in this section) patent license to make, have made,\n      use, offer to sell, sell, import, and otherwise transfer the Work,\n      where such license applies only to those patent claims licensable\n      by such Contributor that are necessarily infringed by their\n      Contribution(s) alone or by combination of their Contribution(s)\n      with the Work to which such Contribution(s) was submitted. If You\n      institute patent litigation against any entity (including a\n      cross-claim or counterclaim in a lawsuit) alleging that the Work\n      or a Contribution incorporated within the Work constitutes direct\n      or contributory patent infringement, then any patent licenses\n      granted to You under this License for that Work shall terminate\n      as of the date such litigation is filed.\n\n   4. Redistribution. You may reproduce and distribute copies of the\n      Work or Derivative Works thereof in any medium, with or without\n      modifications, and in Source or Object form, provided that You\n      meet the following conditions:\n\n      (a) You must give any other recipients of the Work or\n          Derivative Works a copy of this License; and\n\n      (b) You must cause any modified files to carry prominent notices\n          stating that You changed the files; and\n\n      (c) You must retain, in the Source form of any Derivative Works\n          that You distribute, all copyright, patent, trademark, and\n          attribution notices from the Source form of the Work,\n          excluding those notices that do not pertain to any part of\n          the Derivative Works; and\n\n      (d) If the Work includes a \"NOTICE\" text file as part of its\n          distribution, then any Derivative Works that You distribute must\n          include a readable copy of the attribution notices contained\n          within such NOTICE file, excluding those notices that do not\n          pertain to any part of the Derivative Works, in at least one\n          of the following places: within a NOTICE text file distributed\n          as part of the Derivative Works; within the Source form or\n          documentation, if provided along with the Derivative Works; or,\n          within a display generated by the Derivative Works, if and\n          wherever such third-party notices normally appear. The contents\n          of the NOTICE file are for informational purposes only and\n          do not modify the License. You may add Your own attribution\n          notices within Derivative Works that You distribute, alongside\n          or as an addendum to the NOTICE text from the Work, provided\n          that such additional attribution notices cannot be construed\n          as modifying the License.\n\n      You may add Your own copyright statement to Your modifications and\n      may provide additional or different license terms and conditions\n      for use, reproduction, or distribution of Your modifications, or\n      for any such Derivative Works as a whole, provided Your use,\n      reproduction, and distribution of the Work otherwise complies with\n      the conditions stated in this License.\n\n   5. Submission of Contributions. Unless You explicitly state otherwise,\n      any Contribution intentionally submitted for inclusion in the Work\n      by You to the Licensor shall be under the terms and conditions of\n      this License, without any additional terms or conditions.\n      Notwithstanding the above, nothing herein shall supersede or modify\n      the terms of any separate license agreement you may have executed\n      with Licensor regarding such Contributions.\n\n   6. Trademarks. This License does not grant permission to use the trade\n      names, trademarks, service marks, or product names of the Licensor,\n      except as required for reasonable and customary use in describing the\n      origin of the Work and reproducing the content of the NOTICE file.\n\n   7. Disclaimer of Warranty. Unless required by applicable law or\n      agreed to in writing, Licensor provides the Work (and each\n      Contributor provides its Contributions) on an \"AS IS\" BASIS,\n      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n      implied, including, without limitation, any warranties or conditions\n      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n      PARTICULAR PURPOSE. You are solely responsible for determining the\n      appropriateness of using or redistributing the Work and assume any\n      risks associated with Your exercise of permissions under this License.\n\n   8. Limitation of Liability. In no event and under no legal theory,\n      whether in tort (including negligence), contract, or otherwise,\n      unless required by applicable law (such as deliberate and grossly\n      negligent acts) or agreed to in writing, shall any Contributor be\n      liable to You for damages, including any direct, indirect, special,\n      incidental, or consequential damages of any character arising as a\n      result of this License or out of the use or inability to use the\n      Work (including but not limited to damages for loss of goodwill,\n      work stoppage, computer failure or malfunction, or any and all\n      other commercial damages or losses), even if such Contributor\n      has been advised of the possibility of such damages.\n\n   9. Accepting Warranty or Additional Liability. While redistributing\n      the Work or Derivative Works thereof, You may choose to offer,\n      and charge a fee for, acceptance of support, warranty, indemnity,\n      or other liability obligations and/or rights consistent with this\n      License. However, in accepting such obligations, You may act only\n      on Your own behalf and on Your sole responsibility, not on behalf\n      of any other Contributor, and only if You agree to indemnify,\n      defend, and hold each Contributor harmless for any liability\n      incurred by, or claims asserted against, such Contributor by reason\n      of your accepting any such warranty or additional liability.\n\n   END OF TERMS AND CONDITIONS\n"
  },
  {
    "path": "Package.swift",
    "content": "// swift-tools-version:5.2\n\n/**\n * Copyright IBM Corporation and the Kitura project authors 2018-2020\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n **/\n\nimport PackageDescription\n\n\nlet targetDependencies: [Target.Dependency]\n\nlet package = Package(\n    name: \"SwiftJWT\",\n    products: [\n        // Products define the executables and libraries produced by a package, and make them visible to other packages.\n        .library(\n            name: \"SwiftJWT\",\n            targets: [\"SwiftJWT\"]\n        )\n    ],\n    dependencies: [\n        .package(name: \"CryptorRSA\", url: \"https://github.com/Kitura/BlueRSA.git\", from: \"1.0.202\"),\n        .package(name: \"Cryptor\", url: \"https://github.com/Kitura/BlueCryptor.git\", from: \"2.0.1\"),\n        .package(name: \"CryptorECC\", url: \"https://github.com/Kitura/BlueECC.git\", from: \"1.2.200\"),\n        .package(url: \"https://github.com/Kitura/LoggerAPI.git\", from: \"2.0.0\"),\n        .package(url: \"https://github.com/Kitura/KituraContracts.git\", from: \"2.0.1\")\n    ],\n    targets: [\n        .target(name: \"SwiftJWT\", dependencies: [\n            \"LoggerAPI\",\n            \"KituraContracts\",\n            \"CryptorRSA\",\n            \"Cryptor\",\n            \"CryptorECC\",\n        ]),\n        .testTarget(name: \"SwiftJWTTests\", dependencies: [\"SwiftJWT\"])\n\t]\n)\n\n\n"
  },
  {
    "path": "README.md",
    "content": "<p align=\"center\">\n<a href=\"http://kitura.io/\">\n<img src=\"https://raw.githubusercontent.com/Kitura/Kitura/master/Sources/Kitura/resources/kitura-bird.svg?sanitize=true\" height=\"100\" alt=\"Kitura\">\n</a>\n</p>\n\n[![](https://img.shields.io/badge/apidoc-SwiftJWT-1FBCE4.svg?style=flat)](https://kitura.github.io/Swift-JWT/index.html)\n[![](https://img.shields.io/endpoint?url=https%3A%2F%2Fswiftpackageindex.com%2Fapi%2Fpackages%2FKitura%2FSwift-JWT%2Fbadge%3Ftype%3Dswift-versions)](https://swiftpackageindex.com/Kitura/Swift-JWT)\n[![](https://img.shields.io/endpoint?url=https%3A%2F%2Fswiftpackageindex.com%2Fapi%2Fpackages%2FKitura%2FSwift-JWT%2Fbadge%3Ftype%3Dplatforms)](https://swiftpackageindex.com/Kitura/Swift-JWT)\n\n\n# SwiftJWT\nAn implementation of [JSON Web Token](https://tools.ietf.org/html/rfc7519) using Swift. JWTs offer a lightweight and compact format for transmitting information between parties, and the information can be verified and trusted due to JWTs being digitally signed.\n\nFor more information on JSON Web Tokens, their use cases and how they work, we recommend visiting [jwt.io](https://jwt.io/introduction/).\n\n**Reminder:** JWTs sent as JWS do **not** encrypt data, so never send anything sensitive or confidential in a JWT. This library does not currently support JWE.\n\n## Swift version\nThe latest version of Swift-JWT requires **Swift 5.2** or later. You can download this version of the Swift binaries by following this [link](https://swift.org/download/). Compatibility with other Swift versions is not guaranteed.\n\n## Usage\n\n### Swift Package Manager\n\n#### Add dependencies\nAdd the `Swift-JWT` package to the dependencies within your application’s `Package.swift` file. Substitute `\"x.x.x\"` with the latest `Swift-JWT` [release](https://github.com/Kitura/Swift-JWT/releases).\n```swift\n.package(url: \"https://github.com/Kitura/Swift-JWT.git\", from: \"x.x.x\")\n```\nAdd `SwiftJWT` to your target's dependencies:\n```swift\n.target(name: \"example\", dependencies: [\"SwiftJWT\"]),\n```\n#### Import package\n```swift\nimport SwiftJWT\n```\n\n### Cocoapods\n\nTo include `Swift-JWT` in a project using CocoaPods, add `SwiftJWT` to your Podfile:\n```\npod 'SwiftJWT'\n```\n## Getting Started\n\n### The JWT model\n\nIn its compact form, a JSON Web Tokens consist of three sections of Base64Url encoded JSON, separated by dots (.).  \nThese section are: Headers, Claims and the Signature.\nTherefore, a JWT typically looks like the following: xxxxx.yyyyy.zzzzz\n\n#### Header\n\nThe Header struct contains the fields of the JSON Web Token header as defined by [RFC7515](https://tools.ietf.org/html/rfc7515#section-4).   \nThe \"typ\" header will default to \"JWT\". The \"alg\" header will be set to the algorithm name when you sign the JWT.  \nThe other Header fields can be set when initializing the Header or by changing them directly on the Header object.\n\n```swift\nlet myHeader = Header(kid: \"KeyID1\")\n```\n\n#### Claims\n\nClaims are statements about an entity (typically, the user) and additional data.\nThe Claims are defined by creating a Swift type that conforms to the `Claims` protocol. The fields of this type represent the information that will be shared using the JWT.  \n\nA list of recommended claims is defined in [RFC7519](https://tools.ietf.org/html/rfc7519#section-4.1).\n\n```swift\nstruct MyClaims: Claims {\n    let iss: String\n    let sub: String\n    let exp: Date\n    let admin: Bool\n}\nlet myClaims = MyClaims(iss: \"Kitura\", sub: \"John\", exp: Date(timeIntervalSinceNow: 3600), admin: true)\n```\n##### ClaimsExamples\n\nThis library includes some example `Claims` structs as defined by their online specifications:\n - `ClaimsStandardJWT` as defined in [RFC7519](https://tools.ietf.org/html/rfc7519#section-4.1).\n - `ClaimsMicroProfile` as defined [here](http://microprofile.io/project/eclipse/microprofile-jwt-auth/spec/src/main/asciidoc/interoperability.asciidoc).\n - `ClaimsOpenID.swift` as defined [here](https://openid.net/specs/openid-connect-core-1_0.html#StandardClaims).\n\n#### JWT\n\nThe JWT struct represents the `Header` and `Claims` of a JSON Web Token.  \nYou can initialize a JWT by decoding a JWT String, or by providing the JWT Header and Claims.\n\n```swift\nlet myJWT = JWT(header: myHeader, claims: myClaims)\n```\n\n### Signing and Verifying JSON web tokens\n\n#### Creating public and private keys\n\nTo sign and verify a JWT using an RSA algorithm, you must provide a public and private key. This could be the contents of a .key file generated via the following Terminal commands:\n\n```\n$ ssh-keygen -t rsa -b 4096 -m PEM -f privateKey.key\n# Don't add a passphrase\n$ openssl rsa -in privateKey.key -pubout -outform PEM -out privateKey.key.pub\n```\n\nThis will create a public and private key pair on your system, and the contents of the private key can be passed into a Swift variable using the following code:\n\n```swift\nlet privateKeyPath = URL(fileURLWithPath: getAbsolutePath(relativePath: \"/path/to/privateKey.key\"))\nlet privateKey: Data = try Data(contentsOf: privateKeyPath, options: .alwaysMapped)\nlet publicKeyPath = URL(fileURLWithPath: getAbsolutePath(relativePath: \"/path/to/publicKey.key\"))\nlet publicKey: Data = try Data(contentsOf: publicKeyPath, options: .alwaysMapped)\n```\n\nFor details on creating elliptic curve public and private keys, view the [BlueECC README.txt](https://github.com/Kitura/BlueECC).\n\n#### Sign a JWT using a JWTSigner\n\nThe struct JWTSigner contains the algorithms that can be used to sign a JWT.\n\nInitialize a JWTSigner using the static function corresponding to the desired RSA algorithm:\n\n```swift\nlet jwtSigner = JWTSigner.rs256(privateKey: privateKey)\n```\nTo generate a signed JWT string, call the `sign` function on your JWT instance, passing in a JWTSigner:\n\n```swift\nlet signedJWT = try myJWT.sign(using: jwtSigner)\n```\n\nThe resulting `signedJWT` will be a `String` of the form:\n```\n<encoded header>.<encoded claims>.<signature>\n```\n**Note:** The sign function sets the alg (algorithm) field of the header.\n\n#### Verify a JWT using JWTVerifier\n\nThe struct JWTVerifier contains the algorithms that can be used to verify a JWT.\n\nInitialize a JWTVerifier using the static function corresponding to the desired RSA algorithm:\n\n```swift\nlet jwtVerifier = JWTVerifier.rs256(publicKey: publicKey)\n```\nTo verify a signed JWT string, call the static `verify` function, passing in your JWT string and the JWTVerifier:\n\n```swift\nlet verified = JWT<MyClaims>.verify(signedJWT, using: jwtVerifier)\n```\nThe `verified` field will be a `bool` that is true if the signature is verified.\n\n\n#### Supported Algorithms\n\nThe supported algorithms for signing and verifying JWTs are:\n\n* RS256 - RSASSA-PKCS1-v1_5 using SHA-256\n* RS384 - RSASSA-PKCS1-v1_5 using SHA-384\n* RS512 - RSASSA-PKCS1-v1_5 using SHA-512\n* HS256 - HMAC using using SHA-256\n* HS384 - HMAC using using SHA-384\n* HS512 - HMAC using using SHA-512\n* ES256 - ECDSA using using SHA-256 and a P-256 curve\n* ES384 - ECDSA using using SHA-384 and a P-384 curve\n* ES512 - ECDSA using using SHA-512 and a P-521 curve\n* PS256 - RSA-PSS using SHA-256\n* PS384 - RSA-PSS using SHA-384\n* PS512 - RSA-PSS using SHA-512\n* none - Don't sign or verify the JWT\n\nNote: ECDSA and RSA-PSS algorithms require a minimum Swift version of 4.1.\n\n### Validate claims\n\nThe `validateClaims` function validates the standard `Date` claims of a JWT instance.\nThe following claims are validated if they are present in the `Claims` object:\n- exp (expiration date)\n- nbf (not before date)\n- iat (issued at date)\n\nThe method returns `ValidateClaimsResult` - an struct that list the various reasons for validation failure.\nIf the validation succeeds `ValidateClaimsResult.success` is returned.\nThe `leeway` parameter is the `TimeInterval` in seconds that a standard `Date` claim will be valid outside of the specified time. This can be used to account for clock skew between issuers and verifiers.\n\n```swift\nlet validationResult = verified.validateClaims(leeway: 10)\nif validationResult != .success {\n    print(\"Claims validation failed: \", validationResult)\n}\n```\n\n### Decode a JWT from a JWT string\n\nA JWT struct can be initialized from a JWT string.  If a JWTVerifier is provided it will be used to verify the signature before initialization\n\n```swift\nlet newJWT = try JWT<MyClaims>(jwtString: signedJWT, verifier: jwtVerifier)\n```\n\n### JWTEncoder and JWTDecoder\n\nThe JWTEncoder and JWTDecoder classes encode and decode JWT Strings using the same API as JSONEncoder and JSONDecoder:\n\n```swift\n let jwtEncoder = JWTEncoder(jwtSigner: jwtSigner)\n let jwtString = try jwtEncoder.encodeToString(myJWT)\n\n let jwtDecoder = JWTDecoder(jwtVerifier: jwtVerifier)\n let jwt = try jwtDecoder.decode(JWT<MyClaims>.self, fromString: jwtString)\n```\n\nBecause JWTEncoder and JWTDecoder conform to [KituraContract's](https://github.com/Kitura/KituraContracts/blob/master/Sources/KituraContracts/Contracts.swift) BodyEncoder and BodyDecoder protocols, they can be used as a [custom coder](https://developer.ibm.com/swift/2018/09/01/kitura-custom-encoders-and-decoders/) in Codable routes for sending and receiving JWTs:\n\n```swift\n router.encoders[MediaType(type: .application, subType: \"jwt\")] = { return jwtEncoder }\n router.decoders[MediaType(type: .application, subType: \"jwt\")] = { return jwtDecoder }\n```\n\nThis allows for the use of JWT's in information exchange. By sending and receiving JWT's you can ensure the sending is who they say they are and verify the content hasn't been tampered with.\n\n## API Documentation\nFor more information visit our [API reference](https://kitura.github.io/Swift-JWT/index.html).\n\n## Community\n\nWe love to talk server-side Swift, and Kitura. Join our [Slack](http://swift-at-ibm-slack.mybluemix.net/) to meet the team!\n\n## License\nThis library is licensed under Apache 2.0. Full license text is available in [LICENSE](https://github.com/Kitura/Swift-JWT/blob/master/LICENSE).\n"
  },
  {
    "path": "Sources/SwiftJWT/BlueECDSA.swift",
    "content": "/**\n * Copyright IBM Corporation 2019\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n **/\n\nimport CryptorECC\nimport LoggerAPI\nimport Foundation\n\n// Class for ECDSA signing using BlueECC\n@available(OSX 10.13, iOS 11, tvOS 11.0, watchOS 4.0, *)\nclass BlueECSigner: SignerAlgorithm {\n    let name: String = \"ECDSA\"\n    \n    private let key: Data\n    private let curve: EllipticCurve\n    \n    // Initialize a signer using .utf8 encoded PEM private key.\n    init(key: Data, curve: EllipticCurve) {\n        self.key = key\n        self.curve = curve\n    }\n    \n    // Sign the header and claims to produce a signed JWT String\n    func sign(header: String, claims: String) throws -> String {\n        let unsignedJWT = header + \".\" + claims\n        guard let unsignedData = unsignedJWT.data(using: .utf8) else {\n            throw JWTError.invalidJWTString\n        }\n        let signature = try sign(unsignedData)\n        let signatureString = JWTEncoder.base64urlEncodedString(data: signature)\n        return header + \".\" + claims + \".\" + signatureString\n    }\n    \n    // send utf8 encoded `header.claims` to BlueECC for signing\n    private func sign(_ data: Data) throws -> Data {\n        guard let keyString = String(data: key, encoding: .utf8) else {\n            throw JWTError.invalidPrivateKey\n        }\n        let privateKey = try ECPrivateKey(key: keyString)\n        guard privateKey.curve == curve else {\n            throw JWTError.invalidPrivateKey\n        }\n        let signedData = try data.sign(with: privateKey)\n        return signedData.r + signedData.s\n    }\n}\n\n// Class for ECDSA verifying using BlueECC\n@available(OSX 10.13, iOS 11, tvOS 11.0, watchOS 4.0, *)\nclass BlueECVerifier: VerifierAlgorithm {\n    \n    let name: String = \"ECDSA\"\n    \n    private let key: Data\n    private let curve: EllipticCurve\n    \n    // Initialize a verifier using .utf8 encoded PEM public key.\n    init(key: Data, curve: EllipticCurve) {\n        self.key = key\n        self.curve = curve\n    }\n    \n    // Verify a signed JWT String\n    func verify(jwt: String) -> Bool {\n        let components = jwt.components(separatedBy: \".\")\n        if components.count == 3 {\n            guard let signature = JWTDecoder.data(base64urlEncoded: components[2]),\n                let jwtData = (components[0] + \".\" + components[1]).data(using: .utf8)\n                else {\n                    return false\n            }\n            return self.verify(signature: signature, for: jwtData)\n        } else {\n            return false\n        }\n    }\n    \n    // Send the base64URLencoded signature and `header.claims` to BlueECC for verification.\n    private func verify(signature: Data, for data: Data) -> Bool {\n        do {\n            guard let keyString = String(data: key, encoding: .utf8) else {\n                return false\n            }\n            let r = signature.subdata(in: 0 ..< signature.count/2)\n            let s = signature.subdata(in: signature.count/2 ..< signature.count)\n            let signature = try ECSignature(r: r, s: s)\n            let publicKey = try ECPublicKey(key: keyString)\n            guard publicKey.curve == curve else {\n                return false\n            }\n            return signature.verify(plaintext: data, using: publicKey)\n        }\n        catch {\n            Log.error(\"Verification failed: \\(error)\")\n            return false\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/SwiftJWT/BlueHMAC.swift",
    "content": "/**\n * Copyright IBM Corporation 2017\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n **/\n\nimport Cryptor\nimport LoggerAPI\nimport Foundation\n\nclass BlueHMAC: SignerAlgorithm, VerifierAlgorithm {\n    let name: String = \"HMAC\"\n    \n    private let key: Data\n    private let algorithm: HMAC.Algorithm\n    \n    init(key: Data, algorithm: HMAC.Algorithm) {\n        self.key = key\n        self.algorithm = algorithm\n    }\n    \n    func sign(header: String, claims: String) throws -> String {\n        let unsignedJWT = header + \".\" + claims\n        guard let unsignedData = unsignedJWT.data(using: .utf8) else {\n            throw JWTError.invalidJWTString\n        }\n        let signature = try sign(unsignedData)\n        let signatureString = JWTEncoder.base64urlEncodedString(data: signature)\n        return header + \".\" + claims + \".\" + signatureString\n    }\n    \n    func sign(_ data: Data) throws -> Data {\n        guard #available(macOS 10.12, iOS 10.0, *) else {\n            Log.error(\"macOS 10.12.0 (Sierra) or higher or iOS 10.0 or higher is required by Cryptor\")\n            throw JWTError.osVersionToLow\n        }\n        guard let hmac = HMAC(using: algorithm, key: key).update(data: data)?.final() else {\n            throw JWTError.invalidPrivateKey\n        }\n        #if swift(>=5.0)\n        return Data(hmac)\n        #else \n        return Data(bytes: hmac)\n        #endif\n    }\n    \n    \n    func verify(jwt: String) -> Bool {\n        let components = jwt.components(separatedBy: \".\")\n        if components.count == 3 {\n            guard let signature = JWTDecoder.data(base64urlEncoded: components[2]),\n                let jwtData = (components[0] + \".\" + components[1]).data(using: .utf8)\n                else {\n                    return false\n            }\n            return self.verify(signature: signature, for: jwtData)\n        } else {\n            return false\n        }\n    }\n    \n    func verify(signature: Data, for data: Data) -> Bool {\n        guard #available(macOS 10.12, iOS 10.0, *) else {\n            return false\n        }\n        do {\n            let expectedHMAC = try sign(data)\n            return expectedHMAC == signature\n        }\n        catch {\n            Log.error(\"Verification failed: \\(error)\")\n            return false\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/SwiftJWT/BlueRSA.swift",
    "content": "/**\n * Copyright IBM Corporation 2017\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n **/\n\nimport CryptorRSA\nimport LoggerAPI\n\nimport Foundation\n\nclass BlueRSA: SignerAlgorithm, VerifierAlgorithm {\n    let name: String = \"RSA\"\n    \n    private let key: Data\n    private let keyType: RSAKeyType\n    private let algorithm: Data.Algorithm\n    private let usePSS: Bool\n    \n    init(key: Data, keyType: RSAKeyType?=nil, algorithm: Data.Algorithm, usePSS: Bool = false) {\n        self.key = key\n        self.keyType = keyType ?? .publicKey\n        self.algorithm = algorithm\n        self.usePSS = usePSS\n    }\n    \n    func sign(header: String, claims: String) throws -> String {\n        let unsignedJWT = header + \".\" + claims\n        guard let unsignedData = unsignedJWT.data(using: .utf8) else {\n            throw JWTError.invalidJWTString\n        }\n        let signature = try sign(unsignedData)\n        let signatureString = JWTEncoder.base64urlEncodedString(data: signature)\n        return header + \".\" + claims + \".\" + signatureString\n    }\n    \n    func sign(_ data: Data) throws -> Data {\n        guard #available(macOS 10.12, iOS 10.3, tvOS 12.0, watchOS 3.3, *) else {\n            Log.error(\"macOS 10.12.0 (Sierra) or higher or iOS 10.0 or higher is required by CryptorRSA\")\n            throw JWTError.osVersionToLow\n        }\n        // Convert PEM format to DER\n        let keyDer: Data\n        if let keyString = String(data: key, encoding: .utf8) {\n            let strippedKey = String(keyString.filter { !\" \\n\\t\\r\".contains($0) })\n            let pemComponents = strippedKey.components(separatedBy: \"-----\")\n            guard pemComponents.count >= 5 else {\n                throw JWTError.missingPEMHeaders\n            }\n            guard let der = Data(base64Encoded: pemComponents[2]) else {\n                throw JWTError.invalidPrivateKey\n            }\n            keyDer = der\n        } else {\n            keyDer = key\n        }\n        let privateKey = try CryptorRSA.createPrivateKey(with: keyDer)\n        let myPlaintext = CryptorRSA.createPlaintext(with: data)\n        guard let signedData = try myPlaintext.signed(with: privateKey, algorithm: algorithm, usePSS: usePSS) else {\n            throw JWTError.invalidPrivateKey\n        }\n        return signedData.data\n    }\n    \n    \n    func verify(jwt: String) -> Bool {\n        let components = jwt.components(separatedBy: \".\")\n        if components.count == 3 {\n            guard let signature = JWTDecoder.data(base64urlEncoded: components[2]),\n                let jwtData = (components[0] + \".\" + components[1]).data(using: .utf8)\n                else {\n                    return false\n            }\n            return self.verify(signature: signature, for: jwtData)\n        } else {\n            return false\n        }\n    }\n    \n    func verify(signature: Data, for data: Data) -> Bool {\n        guard #available(macOS 10.12, iOS 10.3, tvOS 12.0, watchOS 3.3, *) else {\n            return false\n        }\n        do {\n            var publicKey: CryptorRSA.PublicKey\n            switch keyType {\n            case .privateKey:\n                return false\n            case .publicKey:\n                // Convert PEM format to DER\n                let keyDer: Data\n                if let keyString = String(data: key, encoding: .utf8) {\n                    let strippedKey = String(keyString.filter { !\" \\n\\t\\r\".contains($0) })\n                    let pemComponents = strippedKey.components(separatedBy: \"-----\")\n                    guard pemComponents.count >= 5 else {\n                        return false\n                    }\n                    guard let der = Data(base64Encoded: pemComponents[2]) else {\n                        return false\n                    }\n                    keyDer = der\n                } else {\n                    keyDer = key\n                }\n                publicKey = try CryptorRSA.createPublicKey(with: keyDer)\n            case .certificate:\n                publicKey = try CryptorRSA.createPublicKey(extractingFrom: key)\n            }\n            let myPlaintext = CryptorRSA.createPlaintext(with: data)\n            let signedData = CryptorRSA.createSigned(with: signature)\n            return try myPlaintext.verify(with: publicKey, signature: signedData, algorithm: algorithm, usePSS: usePSS)\n        }\n        catch {\n            Log.error(\"Verification failed: \\(error)\") \n            return false\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/SwiftJWT/Claims.swift",
    "content": "/**\n * Copyright IBM Corporation 2018\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n **/\n\nimport Foundation\n\n// MARK: Claims\n/**\n A protocol for representing the claims on a JSON web token.\n https://tools.ietf.org/html/rfc7519#section-4.1\n### Usage Example: ###\n```swift\nstruct AdminClaims: Claims {\n    var sub: String\n    var isAdmin: Bool\n    var exp: Date?\n}\n let jwt = JWT(claims: AdminClaims(sub: \"Kitura\", isAdmin: true, exp: Date(timeIntervalSinceNow: 3600)))\n```\n*/\npublic protocol Claims: Codable {\n    \n    /**\n     The \"exp\" (expiration time) claim identifies the expiration time on\n     or after which the JWT MUST NOT be accepted for processing.  The\n     processing of the \"exp\" claim requires that the current date/time\n     MUST be before the expiration date/time listed in the \"exp\" claim.\n     Implementers MAY provide for some small leeway, usually no more than\n     a few minutes, to account for clock skew.\n     */\n    var exp: Date? { get }\n    \n    /**\n     The \"nbf\" (not before) claim identifies the time before which the JWT\n     MUST NOT be accepted for processing.  The processing of the \"nbf\"\n     claim requires that the current date/time MUST be after or equal to\n     the not-before date/time listed in the \"nbf\" claim.  Implementers MAY\n     provide for some small leeway, usually no more than a few minutes, to\n     account for clock skew.\n     */\n    var nbf: Date? { get }\n    \n    /**\n     The \"iat\" (issued at) claim identifies the time at which the JWT was\n     issued.  This claim can be used to determine the age of the JWT.\n     */\n    var iat: Date? { get }\n    \n    /// Encode the Claim object as a Base64 String.\n    func encode() throws -> String\n}\npublic extension Claims {\n    \n    var exp: Date? {\n        return nil\n    }\n    \n    var nbf: Date? {\n        return nil\n    }\n    \n    var iat: Date? {\n        return nil\n    }\n    \n    func encode() throws -> String {\n        let jsonEncoder = JSONEncoder()\n        jsonEncoder.dateEncodingStrategy = .secondsSince1970\n        let data = try jsonEncoder.encode(self)\n        return JWTEncoder.base64urlEncodedString(data: data)\n    }\n}\n"
  },
  {
    "path": "Sources/SwiftJWT/ClaimsExamples/ClaimsMicroProfile.swift",
    "content": "/**\n * Copyright IBM Corporation 2018\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n **/\n\nimport Foundation\n\n// MARK ClaimsMicroProfile\n\n/// A class representing the MicroProfile claims as listed in [MicroProfile specs](http://microprofile.io/project/eclipse/microprofile-jwt-auth/spec/src/main/asciidoc/interoperability.asciidoc).\npublic class ClaimsMicroProfile: Claims {\n    \n    /// Initialize a `ClaimsMicroProfile`\n    public init(\n        iss: String,\n        sub: String,\n        exp: Date,\n        iat: Date,\n        jti: String,\n        upn: String,\n        groups: [String]\n    ) {\n        self.iss = iss\n        self.sub = sub\n        self.exp = exp\n        self.iat = iat\n        self.jti = jti\n        self.upn = upn\n        self.groups = groups\n    }\n    \n    /**\n     The MP-JWT issuer. [RFC7519, Section 4.1.1](https://tools.ietf.org/html/rfc7519#section-4.1.1)\n     */\n    public var iss: String\n    \n    /**\n     Identifies the principal that is the subject of the JWT.\n     */\n    public var sub: String\n    \n    /**\n     Identifies the expiration time on or after which the JWT MUST NOT be accepted for processing.\n     */\n    public var exp: Date\n    \n    /**\n     Identifies the time at which the JWT was issued.\n     */\n    public var iat: Date\n    \n    /**\n     The \"jti\" (JWT ID) claim provides a unique identifier for the JWT.\n     The identifier value MUST be assigned in a manner that ensures that\n     there is a negligible probability that the same value will be\n     accidentally assigned to a different data object.\n     */\n    public var jti: String\n    \n    /**\n    This MP-JWT custom claim is the user principal name in the java.security.Principal interface, and is the caller principal name in javax.security.enterprise.identitystore.IdentityStore. If this claim is missing, fallback to the \"preferred_username\", should be attempted, and if that claim is missing, fallback to the \"sub\" claim should be used.\n     */\n    public var upn: String?\n    \n    /**\n     Shorthand name by which the End-User wishes to be referred to at the RP, such as janedoe or j.doe. This value MAY be any valid JSON string including special characters such as @, /, or whitespace.\n     */\n    public var preferred_username: String?\n    \n    /**\n    This MP-JWT custom claim is the list of group names that have been assigned to the principal of the MP-JWT. This typically will required a mapping at the application container level to application deployment roles, but a one-to-one between group names and application role names is required to be performed in addition to any other mapping.\n     */\n    public var groups: [String]\n}\n"
  },
  {
    "path": "Sources/SwiftJWT/ClaimsExamples/ClaimsOpenID.swift",
    "content": "/**\n * Copyright IBM Corporation 2018\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n **/\n\nimport Foundation\n\n// MARK ClaimsOpenID\n\n/// A class representing OpenID related claims as decsribed in [OpenID specs](http://openid.net/specs/openid-connect-core-1_0.html).\npublic class ClaimsOpenID: Claims {\n    \n    /// Initalise the `ClaimsOpenID`\n    public init(\n        iss: String,\n        sub: String,\n        aud: [String],\n        exp: Date,\n        iat: Date,\n        auth_time: Date? = nil,\n        nonce: String? = nil,\n        acr: String? = nil,\n        amr: [String]? = nil,\n        azp: String? = nil,\n        name: String? = nil,\n        given_name: String? = nil,\n        family_name: String? = nil,\n        middle_name: String? = nil,\n        nickname: String? = nil,\n        preferred_username: String? = nil,\n        profile: String? = nil,\n        picture: String? = nil,\n        website: String? = nil,\n        email: String? = nil,\n        email_verified: Bool? = nil,\n        gender: String? = nil,\n        birthdate: String? = nil,\n        zoneinfo: String? = nil,\n        locale: String? = nil,\n        phone_number: String? = nil,\n        phone_number_verified: Bool? = nil,\n        address: AddressClaim? = nil,\n        updated_at: Date? = nil\n    ) {\n        self.iss = iss\n        self.sub = sub\n        self.aud = aud\n        self.exp = exp\n        self.iat = iat\n        self.auth_time = auth_time\n        self.nonce = nonce\n        self.acr = acr\n        self.amr = amr\n        self.azp = azp\n        self.name = name\n        self.given_name = given_name\n        self.family_name = family_name\n        self.middle_name = middle_name\n        self.nickname = nickname\n        self.preferred_username = preferred_username\n        self.profile = profile\n        self.picture = picture\n        self.website = website\n        self.email = email\n        self.email_verified = email_verified\n        self.gender = gender\n        self.birthdate = birthdate\n        self.zoneinfo = zoneinfo\n        self.locale = locale\n        self.phone_number = phone_number\n        self.phone_number_verified = phone_number_verified\n        self.address = address\n        self.updated_at = updated_at\n    }\n    \n    // MARK: ID Token\n    \n    /// Issuer Identifier for the Issuer of the response. The iss value is a case sensitive URL using the https scheme that contains scheme, host, and optionally, port number and path components and no query or fragment components.\n    public var iss: String\n    \n    /// Subject Identifier. A locally unique and never reassigned identifier within the Issuer for the End-User, which is intended to be consumed by the Client, e.g., 24400320 or AItOawmwtWwcT0k51BayewNvutrJUqsvl6qs7A4. It MUST NOT exceed 255 ASCII characters in length. The sub value is case sensitive.\n    public var sub: String\n    \n    /// Audience(s) that this ID Token is intended for. It MUST contain the OAuth 2.0 client_id of the Relying Party as an audience value. It MAY also contain identifiers for other audiences.\n    public var aud: [String]\n    \n    /// Expiration time on or after which the ID Token MUST NOT be accepted for processing. The processing of this parameter requires that the current date/time MUST be before the expiration date/time listed in the value. Implementers MAY provide for some small leeway, usually no more than a few minutes, to account for clock skew.\n    public var exp: Date\n    \n    /// Time at which the JWT was issued.\n    public var iat: Date\n    \n    /// Time when the End-User authentication occurred.\n    public var auth_time: Date?\n\n    /// String value used to associate a Client session with an ID Token, and to mitigate replay attacks. The value is passed through unmodified from the Authentication Request to the ID Token. If present in the ID Token, Clients MUST verify that the nonce Claim Value is equal to the value of the nonce parameter sent in the Authentication Request. If present in the Authentication Request, Authorization Servers MUST include a nonce Claim in the ID Token with the Claim Value being the nonce value sent in the Authentication Request. Authorization Servers SHOULD perform no other processing on nonce values used.\n    public var nonce: String?\n    \n    /// Authentication Context Class Reference. String specifying an Authentication Context Class Reference value that identifies the Authentication Context Class that the authentication performed satisfied. The value \"0\" indicates the End-User authentication did not meet the requirements of ISO/IEC 29115 level 1. Authentications with level 0 SHOULD NOT be used to authorize access to any resource of any monetary value. Parties using this claim will need to agree upon the meanings of the values used, which may be context-specific.\n    public var acr: String?\n    \n    /// Authentication Methods References. JSON array of strings that are identifiers for authentication methods used in the authentication. For instance, values might indicate that both password and OTP authentication methods were used. Parties using this claim will need to agree upon the meanings of the values used, which may be context-specific.\n    public var amr: [String]?\n    \n    /// Authorized party - the party to which the ID Token was issued. If present, it MUST contain the OAuth 2.0 Client ID of this party. This Claim is only needed when the ID Token has a single audience value and that audience is different than the authorized party. It MAY be included even when the authorized party is the same as the sole audience.\n    public var azp: String?\n    \n    // MARK: Standard Claims\n    \n    /// End-User's full name in displayable form including all name parts, possibly including titles and suffixes, ordered according to the End-User's locale and preferences.\n    public var name: String?\n    \n    /// Given name(s) or first name(s) of the End-User. Note that in some cultures, people can have multiple given names; all can be present, with the names being separated by space characters.\n    public var given_name: String?\n    \n    /// Surname(s) or last name(s) of the End-User. Note that in some cultures, people can have multiple family names or no family name; all can be present, with the names being separated by space characters.\n    public var family_name: String?\n    \n    /// Middle name(s) of the End-User. Note that in some cultures, people can have multiple middle names; all can be present, with the names being separated by space characters. Also note that in some cultures, middle names are not used.\n    public var middle_name: String?\n    \n    /// Casual name of the End-User that may or may not be the same as the given_name. For instance, a nickname value of Mike might be returned alongside a given_name value of Michael.\n    public var nickname: String?\n    \n    /// Shorthand name by which the End-User wishes to be referred to at the RP, such as janedoe or j.doe. This value MAY be any valid JSON string including special characters such as @, /, or whitespace.\n    public var preferred_username: String?\n    \n    /// URL of the End-User's profile page. The contents of this Web page SHOULD be about the End-User.\n    public var profile: String?\n    \n    /// URL of the End-User's profile picture. This URL MUST refer to an image file (for example, a PNG, JPEG, or GIF image file), rather than to a Web page containing an image. Note that this URL SHOULD specifically reference a profile photo of the End-User suitable for displaying when describing the End-User, rather than an arbitrary photo taken by the End-User.\n    public var picture: String?\n    \n    ///  URL of the End-User's Web page or blog. This Web page SHOULD contain information published by the End-User or an organization that the End-User is affiliated with.\n    public var website: String?\n    \n    /// End-User's preferred e-mail address.\n    public var email: String?\n    \n    /// True if the End-User's e-mail address has been verified; otherwise false. When this Claim Value is true, this means that the OP took affirmative steps to ensure that this e-mail address was controlled by the End-User at the time the verification was performed. The means by which an e-mail address is verified is context-specific, and dependent upon the trust framework or contractual agreements within which the parties are operating.\n    public var email_verified: Bool?\n    \n    /// End-User's gender. Values defined by this specification are female and male. Other values MAY be used when neither of the defined values are applicable.\n    public var gender: String?\n    \n    /// End-User's birthday, represented as an ISO 8601:2004 YYYY-MM-DD format. The year MAY be 0000, indicating that it is omitted. To represent only the year, YYYY format is allowed.\n    public var birthdate: String?\n    \n    /// String from zoneinfo time zone database representing the End-User's time zone. For example, Europe/Paris or America/Los_Angeles.\n    public var zoneinfo: String?\n    \n    /// End-User's locale, represented as a BCP47 language tag. This is typically an ISO 639-1 Alpha-2 language code in lowercase and an ISO 3166-1 Alpha-2 country code in uppercase, separated by a dash. For example, en-US or fr-CA. As a compatibility note, some implementations have used an underscore as the separator rather than a dash, for example, en_US; Relying Parties MAY choose to accept this locale syntax as well.\n    public var locale: String?\n    \n    /// End-User's preferred telephone number. E.164 is RECOMMENDED as the format of this Claim, for example, +1 (425) 555-1212 or +56 (2) 687 2400.\n    public var phone_number: String?\n    \n    /// True if the End-User's phone number has been verified; otherwise false. When this Claim Value is true, this means that the OP took affirmative steps to ensure that this phone number was controlled by the End-User at the time the verification was performed. The means by which a phone number is verified is context-specific, and dependent upon the trust framework or contractual agreements within which the parties are operating. When true, the phone_number Claim MUST be in E.164 format and any extensions MUST be represented in RFC 3966 format.\n    public var phone_number_verified: Bool?\n    \n    /// End-User's preferred postal address.\n    public var address: AddressClaim?\n    \n    /// Time the End-User's information was last updated.\n    public var updated_at: Date?\n}\n\n/// Struct representing an AddressClaim as defined in the [OpenID specs](http://openid.net/specs/openid-connect-core-1_0.html).\npublic struct AddressClaim: Codable {\n    \n    /// Full mailing address, formatted for display or use on a mailing label. This field MAY contain multiple lines, separated by newlines. Newlines can be represented either as a carriage return/line feed pair (\"\\r\\n\") or as a single line feed character (\"\\n\").\n    public var formatted: String?\n    \n    /// Full street address component, which MAY include house number, street name, Post Office Box, and multi-line extended street address information. This field MAY contain multiple lines, separated by newlines. Newlines can be represented either as a carriage return/line feed pair (\"\\r\\n\") or as a single line feed character (\"\\n\").\n    public var street_address: String?\n    \n    /// City or locality component.\n    public var locality: String?\n    \n    /// State, province, prefecture, or region component.\n    public var region: String?\n    \n    /// Zip code or postal code component.\n    public var postal_code: String?\n    \n    /// Country name component.\n    public var country: String?\n    \n}\n"
  },
  {
    "path": "Sources/SwiftJWT/ClaimsExamples/ClaimsStandardJWT.swift",
    "content": "/**\n * Copyright IBM Corporation 2018\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n **/\n\nimport Foundation\n\n// MARK ClaimsStandardJWT\n\n/// A class representing the Standard JWT claims as described in [RFC7519](https://tools.ietf.org/html/rfc7519#section-4.1).\npublic class ClaimsStandardJWT: Claims {\n    \n    /// Initialize a `ClaimsStandardJWT`\n    public init(\n        iss: String? = nil,\n        sub: String? = nil,\n        aud: [String]? = nil,\n        exp: Date? = nil,\n        nbf: Date? = nil,\n        iat: Date? = nil,\n        jti: String? = nil\n        ) {\n        self.iss = iss\n        self.sub = sub\n        self.aud = aud\n        self.exp = exp\n        self.nbf = nbf\n        self.iat = iat\n        self.jti = jti\n    }\n    \n    /**\n     The \"iss\" (issuer) claim identifies the principal that issued the\n     JWT.  The processing of this claim is generally application specific.\n     The \"iss\" value is a case-sensitive.\n     */\n    public var iss: String?\n    \n    /**\n     The \"sub\" (subject) claim identifies the principal that is the\n     subject of the JWT.  The claims in a JWT are normally statements\n     about the subject.  The subject value MUST either be scoped to be\n     locally unique in the context of the issuer or be globally unique.\n     The processing of this claim is generally application specific.  The\n     \"sub\" value is case-sensitive.\n     */\n    public var sub: String?\n    \n    /**\n     The \"aud\" (audience) claim identifies the recipients that the JWT is\n     intended for.  Each principal intended to process the JWT MUST\n     identify itself with a value in the audience claim.  If the principal\n     processing the claim does not identify itself with a value in the\n     \"aud\" claim when this claim is present, then the JWT MUST be\n     rejected. The interpretation of audience values is generally application specific.\n     The \"aud\" value is case-sensitive.\n     */\n    public var aud: [String]?\n    \n    /**\n     The \"exp\" (expiration time) claim identifies the expiration time on\n     or after which the JWT MUST NOT be accepted for processing.  The\n     processing of the \"exp\" claim requires that the current date/time\n     MUST be before the expiration date/time listed in the \"exp\" claim.\n     Implementers MAY provide for some small leeway, usually no more than\n     a few minutes, to account for clock skew.\n     */\n    public var exp: Date?\n    \n    /**\n     The \"nbf\" (not before) claim identifies the time before which the JWT\n     MUST NOT be accepted for processing.  The processing of the \"nbf\"\n     claim requires that the current date/time MUST be after or equal to\n     the not-before date/time listed in the \"nbf\" claim.  Implementers MAY\n     provide for some small leeway, usually no more than a few minutes, to\n     account for clock skew.\n     */\n    public var nbf: Date?\n    \n    /**\n     The \"iat\" (issued at) claim identifies the time at which the JWT was\n     issued.  This claim can be used to determine the age of the JWT.\n     */\n    public var iat: Date?\n    \n    /**\n     The \"jti\" (JWT ID) claim provides a unique identifier for the JWT.\n     The identifier value MUST be assigned in a manner that ensures that\n     there is a negligible probability that the same value will be\n     accidentally assigned to a different data object; if the application\n     uses multiple issuers, collisions MUST be prevented among values\n     produced by different issuers as well.  The \"jti\" claim can be used\n     to prevent the JWT from being replayed.  The \"jti\" value is case-\n     sensitive\n     */\n    public var jti: String?\n}\n"
  },
  {
    "path": "Sources/SwiftJWT/Data+Base64URLEncoded.swift",
    "content": "/**\n * Copyright IBM Corporation 2017-2019\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n **/\n\nimport Foundation\n\n/// Convenience extension for encoding a `Data` as a base64url-encoded `String`.\nextension JWTEncoder {\n\n    /// Returns a `String` representation of this data, encoded in base64url format\n    /// as defined in RFC4648 (https://tools.ietf.org/html/rfc4648).\n    ///\n    /// This is the appropriate format for encoding the header and claims of a JWT.\n    public static func base64urlEncodedString(data: Data) -> String {\n        let result = data.base64EncodedString()\n        return result.replacingOccurrences(of: \"+\", with: \"-\")\n            .replacingOccurrences(of: \"/\", with: \"_\")\n            .replacingOccurrences(of: \"=\", with: \"\")\n    }\n}\n\n/// Convenience extension for decoding a `Data` from a base64url-encoded `String`.\nextension JWTDecoder {\n    \n    /// Initializes a new `Data` from the base64url-encoded `String` provided. The\n    /// base64url encoding is defined in RFC4648 (https://tools.ietf.org/html/rfc4648).\n    ///\n    /// This is appropriate for reading the header or claims portion of a JWT string.\n    public static func data(base64urlEncoded: String) -> Data? {\n        let paddingLength = 4 - base64urlEncoded.count % 4\n        let padding = (paddingLength < 4) ? String(repeating: \"=\", count: paddingLength) : \"\"\n        let base64EncodedString = base64urlEncoded\n            .replacingOccurrences(of: \"-\", with: \"+\")\n            .replacingOccurrences(of: \"_\", with: \"/\")\n            + padding\n        return Data(base64Encoded: base64EncodedString)\n    }\n}\n"
  },
  {
    "path": "Sources/SwiftJWT/Header.swift",
    "content": "/**\n * Copyright IBM Corporation 2018\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n **/\n\nimport Foundation\n\n// MARK: Header\n\n/**\n A representation of a JSON Web Token header.\n https://tools.ietf.org/html/rfc7515#section-4.1\n ### Usage Example: ###\n ```swift\n struct MyClaims: Claims {\n    var name: String\n }\n let myHeader = Header(kid: \"keyID\")\n let jwt = JWT(header: myHeader, claims: MyClaims(name: \"Kitura\"))\n ```\n */\npublic struct Header: Codable {\n    \n    /// Type Header Parameter\n    public var typ: String?\n    /// Algorithm Header Parameter\n    public internal(set) var alg: String?\n    /// JSON Web Token Set URL Header Parameter\n    public var jku : String?\n    /// JSON Web Key Header Parameter\n    public var jwk: String?\n    /// Key ID Header Parameter\n    public var kid: String?\n    /// X.509 URL Header Parameter\n    public var x5u: String?\n    /// X.509 Certificate Chain Header Parameter\n    public var x5c: [String]?\n    /// X.509 Certificate SHA-1 Thumbprint Header Parameter\n    public var x5t: String?\n    /// X.509 Certificate SHA-256 Thumbprint Header Parameter\n    public var x5tS256: String?\n    /// Content Type Header Parameter\n    public var cty: String?\n    /// Critical Header Parameter\n    public var crit: [String]?\n    \n    /// Initialize a `Header` instance.\n    ///\n    /// - Parameter typ: The Type Header Parameter\n    /// - Parameter jku: The JSON Web Token Set URL Header Parameter\n    /// - Parameter jwk: The JSON Web Key Header Parameter\n    /// - Parameter kid: The Key ID Header Parameter\n    /// - Parameter x5u: The X.509 URL Header Parameter\n    /// - Parameter x5c: The X.509 Certificate Chain Header Parameter\n    /// - Parameter x5t: The X.509 Certificate SHA-1 Thumbprint Header Parameter\n    /// - Parameter x5tS256: X.509 Certificate SHA-256 Thumbprint Header Parameter\n    /// - Parameter cty: The Content Type Header Parameter\n    /// - Parameter crit: The Critical Header Parameter\n    /// - Returns: A new instance of `Header`.\n    public init(\n        typ: String? = \"JWT\",\n        jku: String? = nil,\n        jwk: String? = nil,\n        kid: String? = nil,\n        x5u: String? = nil,\n        x5c: [String]? = nil,\n        x5t: String? = nil,\n        x5tS256: String? = nil,\n        cty: String? = nil,\n        crit: [String]? = nil\n    ) {\n        self.typ = typ\n        self.alg = nil\n        self.jku = jku\n        self.jwk = jwk\n        self.kid = kid\n        self.x5u = x5u\n        self.x5c = x5c\n        self.x5t = x5t\n        self.x5tS256 = x5tS256\n        self.cty = cty\n        self.crit = crit\n    }\n    \n    func encode() throws -> String  {\n        let jsonEncoder = JSONEncoder()\n        jsonEncoder.dateEncodingStrategy = .secondsSince1970\n        let data = try jsonEncoder.encode(self)\n        return JWTEncoder.base64urlEncodedString(data: data)\n    }\n}\n"
  },
  {
    "path": "Sources/SwiftJWT/JWT.swift",
    "content": "/**\n * Copyright IBM Corporation 2017\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n **/\n\nimport Foundation\n\n// MARK: JWT\n\n/**\n \n A struct representing the `Header` and `Claims` of a JSON Web Token.\n \n ### Usage Example: ###\n ```swift\n struct MyClaims: Claims {\n    var name: String\n }\n let jwt = JWT(claims: MyClaims(name: \"Kitura\"))\n let key = \"<PrivateKey>\".data(using: .utf8)!\n let signedJWT: String? = try? jwt.sign(using: .rs256(key: key, keyType: .privateKey))\n ```\n */\n\npublic struct JWT<T: Claims>: Codable {\n    \n    /// The JWT header.\n    public var header: Header\n    \n    /// The JWT claims\n    public var claims: T\n    \n    /// Initialize a `JWT` instance from a `Header` and `Claims`.\n    ///\n    /// - Parameter header: A JSON Web Token header object.\n    /// - Parameter claims: A JSON Web Token claims object.\n    /// - Returns: A new instance of `JWT`.\n    public init(header: Header = Header(), claims: T) {\n        self.header = header\n        self.claims = claims\n    }\n    \n    /// Initialize a `JWT` instance from a JWT String.\n    /// The signature will be verified using the provided JWTVerifier.\n    /// The time based standard JWT claims will be verified with `validateClaims()`.\n    /// If the string is not a valid JWT, or the verification fails, the initializer returns nil.\n    ///\n    /// - Parameter jwt: A String with the encoded and signed JWT.\n    /// - Parameter verifier: The `JWTVerifier` used to verify the JWT.\n    /// - Returns: An instance of `JWT` if the decoding succeeds.\n    /// - Throws: `JWTError.invalidJWTString` if the provided String is not in the form mandated by the JWT specification.\n    /// - Throws: `JWTError.failedVerification` if the verifier fails to verify the jwtString.\n    /// - Throws: A DecodingError if the JSONDecoder throws an error while decoding the JWT.\n    public init(jwtString: String, verifier: JWTVerifier = .none ) throws {\n        let components = jwtString.components(separatedBy: \".\")\n        guard components.count == 2 || components.count == 3,\n            let headerData = JWTDecoder.data(base64urlEncoded: components[0]),\n            let claimsData = JWTDecoder.data(base64urlEncoded: components[1])\n        else {\n            throw JWTError.invalidJWTString\n        }\n        guard JWT.verify(jwtString, using: verifier) else {\n            throw JWTError.failedVerification\n        }\n        let jsonDecoder = JSONDecoder()\n        jsonDecoder.dateDecodingStrategy = .secondsSince1970\n        let header = try jsonDecoder.decode(Header.self, from: headerData)\n        let claims = try jsonDecoder.decode(T.self, from: claimsData)\n        self.header = header\n        self.claims = claims\n    }\n    \n    /// Sign the JWT using the given algorithm and encode the header, claims and signature as a JWT String.\n    ///\n    /// - Note: This function will set header.alg field to the name of the signing algorithm.\n    ///\n    /// - Parameter using algorithm: The algorithm to sign with.\n    /// - Returns: A String with the encoded and signed JWT.\n    /// - Throws: An EncodingError if the JSONEncoder throws an error while encoding the JWT.\n    /// - Throws: `JWTError.osVersionToLow` if not using macOS 10.12.0 (Sierra) or iOS 10.0 or higher.\n    /// - Throws: A Signing error if the jwtSigner is unable to sign the JWT with the provided key.\n    public mutating func sign(using jwtSigner: JWTSigner) throws -> String {\n        var tempHeader = header\n        tempHeader.alg = jwtSigner.name\n        let headerString = try tempHeader.encode()\n        let claimsString = try claims.encode()\n        header.alg = tempHeader.alg\n        return try jwtSigner.sign(header: headerString, claims: claimsString)\n    }\n\n    /// Verify the signature of the encoded JWT using the given algorithm.\n    ///\n    /// - Parameter jwt: A String with the encoded and signed JWT.\n    /// - Parameter using algorithm: The algorithm to verify with.\n    /// - Returns: A Bool indicating whether the verification was successful.\n    public static func verify(_ jwt: String, using jwtVerifier: JWTVerifier) -> Bool {\n        return jwtVerifier.verify(jwt: jwt)\n    }\n\n    /// Validate the time based standard JWT claims.\n    /// This function checks that the \"exp\" (expiration time) is in the future\n    /// and the \"iat\" (issued at) and \"nbf\" (not before) headers are in the past,\n    ///\n    /// - Parameter leeway: The time in seconds that the JWT can be invalid but still accepted to account for clock differences.\n    /// - Returns: A value of `ValidateClaimsResult`.\n    public func validateClaims(leeway: TimeInterval = 0) -> ValidateClaimsResult {        \n        if let expirationDate = claims.exp {\n            if expirationDate + leeway < Date() {\n                return .expired\n            }\n        }\n        \n        if let notBeforeDate = claims.nbf {\n            if notBeforeDate > Date() + leeway {\n                return .notBefore\n            }\n        }\n        \n        if let issuedAtDate = claims.iat {\n            if issuedAtDate > Date() + leeway {\n                return .issuedAt\n            }\n        }\n        \n        return .success\n    }\n}\n\n"
  },
  {
    "path": "Sources/SwiftJWT/JWTDecoder.swift",
    "content": "/**\n * Copyright IBM Corporation 2018\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n **/\n\nimport Foundation\nimport KituraContracts\n\n// MARK: JWTDecoder\n\n/**\n A thread safe decoder that decodes either Data or a JWT String as a `JWT` instance and verifies the signiture using the provided algorithm.\n\n ### Usage Example: ###\n ```swift\n struct MyClaims: Claims {\n    var name: String\n }\n let publicKey = \"<PublicKey>\".data(using: .utf8)!\n let rsaJWTDecoder = JWTDecoder(jwtVerifier: JWTVerifier.rs256(publicKey: publicKey))\n do {\n    let jwt = try rsaJWTDecoder.decode(JWT<MyClaims>.self, fromString: exampleJWTString)\n } catch {\n    print(\"Failed to decode JWT: \\(error)\")\n }\n ```\n */\npublic class JWTDecoder: BodyDecoder {\n    \n    let keyIDToVerifier: (String) -> JWTVerifier?\n    let jwtVerifier: JWTVerifier?\n    \n    // MARK: Initializers\n    \n    /// Initialize a `JWTDecoder` instance with a single `JWTVerifier`.\n    ///\n    /// - Parameter JWTVerifier: The `JWTVerifier` that will be used to verify the signiture of the JWT.\n    /// - Returns: A new instance of `JWTDecoder`.\n    public init(jwtVerifier: JWTVerifier) {\n        self.keyIDToVerifier = {_ in return jwtVerifier }\n        self.jwtVerifier = jwtVerifier\n    }\n    \n    /// Initialize a `JWTDecoder` instance with a function to generate the `JWTVerifier` from the JWT `kid` header.\n    ///\n    /// - Parameter keyIDToVerifier: The function that will generate the `JWTVerifier` using the \"kid\" header.\n    /// - Returns: A new instance of `JWTDecoder`.\n    public init(keyIDToVerifier: @escaping (String) -> JWTVerifier?) {\n        self.keyIDToVerifier = keyIDToVerifier\n        self.jwtVerifier = nil\n    }\n    \n    // MARK: Decode\n    \n    /// Decode a `JWT` instance from a JWT String.\n    ///\n    /// - Parameter type: The JWT type the String will be decoded as.\n    /// - Parameter fromString: The JWT String that will be decoded.\n    /// - Returns: A `JWT` instance of the provided type.\n    /// - throws: `JWTError.invalidJWTString` if the provided String is not in the form mandated by the JWT specification.\n    /// - throws: `JWTError.invalidKeyID` if the KeyID `kid` header fails to generate a jwtVerifier.\n    /// - throws: `JWTError.failedVerification` if the `JWTVerifier` fails to verify the decoded String.\n    /// - throws: `DecodingError` if the decoder fails to decode the String as the provided type.\n    public func decode<T : Decodable>(_ type: T.Type, fromString: String) throws -> T {\n        // Seperate the JWT into the headers and claims.\n        let components = fromString.components(separatedBy: \".\")\n        guard components.count > 1,\n         let headerData = JWTDecoder.data(base64urlEncoded: components[0]),\n            let claimsData = JWTDecoder.data(base64urlEncoded: components[1])\n        else {\n            throw JWTError.invalidJWTString\n        }\n        \n        // Decode the JWT headers and claims data into a _JWTDecoder.\n        let decoder = _JWTDecoder(header: headerData, claims: claimsData)\n        let jwt = try decoder.decode(type)\n        \n        let _jwtVerifier: JWTVerifier\n        // Verify the JWT String using the JWTDecoder constant jwtVerifier.\n        if let jwtVerifier = jwtVerifier {\n            _jwtVerifier = jwtVerifier\n        } else {\n            // The JWTVerifier is generated using the kid Header that was read inside the _JWTDecoder\n            // and then used to verify the JWT.\n            guard let keyID = decoder.keyID, let jwtVerifier = keyIDToVerifier(keyID) else {\n                throw JWTError.invalidKeyID\n            }\n            _jwtVerifier = jwtVerifier\n        }\n        guard _jwtVerifier.verify(jwt: fromString) else {\n            throw JWTError.failedVerification\n        }\n        return jwt\n    }\n    \n    /// Decode a `JWT` instance from a utf8 encoded JWT String.\n    ///\n    /// - Parameter type: The JWT type the Data will be decoded as.\n    /// - Parameter data: The utf8 encoded JWT String that will be decoded.\n    /// - Returns: A `JWT` instance of the provided type.\n    /// - throws: `JWTError.invalidUTF8Data` if the provided Data can't be decoded to a String.\n    /// - throws: `JWTError.invalidJWTString` if the provided String is not in the form mandated by the JWT specification.\n    /// - throws: `JWTError.invalidKeyID` if the KeyID `kid` header fails to generate a `JWTVerifier`.\n    /// - throws: `JWTError.failedVerification` if the `JWTVerifier` fails to verify the decoded String.\n    /// - throws: `DecodingError` if the decoder fails to decode the String as the provided type.\n    public func decode<T : Decodable>(_ type: T.Type, from data: Data) throws -> T {\n        guard let jwtString = String(data: data, encoding: .utf8) else {\n            throw JWTError.invalidUTF8Data\n        }\n        return try decode(type, fromString: jwtString)\n    }\n}\n\n/*\n The JWTDecoder creates it's own instance of _JWTDecoder everytime the decode function is called.\n This is because the _JWTDecoder changes it's own value so we can only have one thread using it at a time.\n The following is the code generated by codable and called by JWTDecoder.decode(type:, fromString:) for a JWT<MyClaims> struct:\n ```\n enum MyStructKeys: String, CodingKey {\n     case header, claims\n }\n init(from decoder: Decoder) throws {\n     let container = try decoder.container(keyedBy: MyStructKeys.self) // defining our (keyed) container\n     let header: Header = try container.decode(Header.self, forKey: .header) // extracting the data\n     let claims: MyClaims = try container.decode(MyClaims.self, forKey: .claims) // extracting the data\n     self.init(header: header, claims: claims) // initializing our struct\n }\n ```\n Where decoder is a _JWTDecoder instance, and MyClaims is the user defined object conforming to Claims.\n */\nfileprivate class _JWTDecoder: Decoder {\n    \n    init(header: Data, claims: Data) {\n        self.header = header\n        self.claims = claims\n    }\n    \n    var header: Data\n    \n    var claims: Data\n    \n    var keyID: String?\n    \n    var codingPath: [CodingKey] = []\n    \n    var userInfo: [CodingUserInfoKey : Any] = [:]\n    \n    // Call the Codable Types init from decoder function.\n    public func decode<T: Decodable>(_ type: T.Type) throws -> T {\n        return try type.init(from: self)\n    }\n    \n    // JWT should only be a Keyed container\n    func container<Key : CodingKey>(keyedBy type: Key.Type) throws -> KeyedDecodingContainer<Key> {\n        let container = _JWTKeyedDecodingContainer<Key>(decoder: self, header: header, claims: claims)\n        return KeyedDecodingContainer(container)\n    }\n    \n    // This function should not be called when decoding a JWT\n    func unkeyedContainer() throws -> UnkeyedDecodingContainer {\n        return UnkeyedContainer(decoder: self)\n    }\n    \n    // This function should not be called when decoding a JWT\n    func singleValueContainer() throws -> SingleValueDecodingContainer {\n        return UnkeyedContainer(decoder: self)\n    }\n}\n\nprivate struct _JWTKeyedDecodingContainer<Key: CodingKey>: KeyedDecodingContainerProtocol {\n    \n    // A reference to the Decoder the container is inside\n    let decoder: _JWTDecoder\n    \n    var header: Data\n    \n    var claims: Data\n    \n    var codingPath: [CodingKey]\n    \n    public var allKeys: [Key]\n    {\n        #if swift(>=4.1)\n            return [\"header\", \"claims\"].compactMap { Key(stringValue: $0) }\n        #else\n            return [\"header\", \"claims\"].flatMap { Key(stringValue: $0) }\n        #endif\n    }\n    \n    fileprivate init(decoder: _JWTDecoder, header: Data, claims: Data) {\n        self.decoder = decoder\n        self.header = header\n        self.claims = claims\n        self.codingPath = decoder.codingPath\n    }\n    \n    public func contains(_ key: Key) -> Bool {\n        return key.stringValue == \"header\" || key.stringValue == \"claims\"\n    }\n    \n    // The JWT Class should only have to decode Decodable types\n    // Those types will be a `Header` object and a generic `Claims` object.\n    func decode<T : Decodable>(_ type: T.Type, forKey key: Key) throws -> T {\n        decoder.codingPath.append(key)\n        let jsonDecoder = JSONDecoder()\n        jsonDecoder.dateDecodingStrategy = .secondsSince1970\n        if key.stringValue == \"header\" {\n            let header = try jsonDecoder.decode(Header.self, from: self.header)\n            decoder.keyID = header.kid\n            guard let decodedHeader = header as? T else {\n                throw DecodingError.typeMismatch(T.self, DecodingError.Context(codingPath: codingPath, debugDescription: \"Type of header key was not a JWT Header\"))\n            }\n            return decodedHeader\n        } else\n        if key.stringValue == \"claims\" {\n            return try jsonDecoder.decode(type, from: claims)\n        } else {\n            throw DecodingError.keyNotFound(key, DecodingError.Context(codingPath: codingPath, debugDescription: \"value not found for provided key\"))\n        }\n    }\n    \n// No functions beyond this point should be called when decoding JWT, However the functions are required by KeyedDecodingContainerProtocol.\n    func decodeNil(forKey key: Key) throws -> Bool {\n        throw DecodingError.typeMismatch(Key.self, DecodingError.Context(codingPath: codingPath, debugDescription: \"JWTDecoder can only Decode JWT tokens\"))\n    }\n    \n    func nestedContainer<NestedKey>(keyedBy type: NestedKey.Type, forKey key: Key) throws -> KeyedDecodingContainer<NestedKey> where NestedKey : CodingKey {\n        return try decoder.container(keyedBy: type)\n    }\n    \n    func nestedUnkeyedContainer(forKey key: Key) throws -> UnkeyedDecodingContainer {\n        return try decoder.unkeyedContainer()\n    }\n    \n    func superDecoder() throws -> Decoder {\n        return decoder\n    }\n    \n    func superDecoder(forKey key: Key) throws -> Decoder {\n        return decoder\n    }\n}\n\n// When decoding a JWT you should not have an UnkeyedContainer\nprivate struct UnkeyedContainer: UnkeyedDecodingContainer, SingleValueDecodingContainer {\n    var decoder: _JWTDecoder\n    \n    var codingPath: [CodingKey] { return [] }\n    \n    var count: Int? { return nil }\n    \n    var currentIndex: Int { return 0 }\n    \n    var isAtEnd: Bool { return false }\n    \n    func decode<T: Decodable>(_ type: T.Type) throws -> T {\n        throw DecodingError.typeMismatch(type, DecodingError.Context(codingPath: codingPath, debugDescription: \"JWTDecoder can only Decode JWT tokens\"))\n    }\n    \n    func decodeNil() -> Bool {\n        return true\n    }\n    \n    func nestedContainer<NestedKey>(keyedBy type: NestedKey.Type) throws -> KeyedDecodingContainer<NestedKey> where NestedKey : CodingKey {\n        return try decoder.container(keyedBy: type)\n    }\n    \n    func nestedUnkeyedContainer() throws -> UnkeyedDecodingContainer {\n        return self\n    }\n    \n    func superDecoder() throws -> Decoder {\n        return decoder\n    }\n}\n"
  },
  {
    "path": "Sources/SwiftJWT/JWTEncoder.swift",
    "content": "/**\n * Copyright IBM Corporation 2018\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n **/\n\nimport Foundation\nimport KituraContracts\n\n// MARK: JWTEncoder\n\n/**\n A thread safe encoder that signs the JWT header and claims using the provided algorithm and encodes a `JWT` instance as either Data or a JWT String.\n \n ### Usage Example: ###\n ```swift\n struct MyClaims: Claims {\n    var name: String\n }\n var jwt = JWT(claims: MyClaims(name: \"John Doe\"))\n let privateKey = \"<PrivateKey>\".data(using: .utf8)!\n let rsaJWTEncoder = JWTEncoder(jwtSigner: JWTSigner.rs256(privateKey: privateKey))\n do {\n    let jwtString = try rsaJWTEncoder.encodeToString(jwt)\n } catch {\n    print(\"Failed to encode JWT: \\(error)\")\n }\n ```\n */\npublic class JWTEncoder: BodyEncoder {\n    \n    let keyIDToSigner: (String) -> JWTSigner?\n    let jwtSigner: JWTSigner?\n    \n    // MARK: Initializers\n    \n    /// Initialize a `JWTEncoder` instance with a single `JWTSigner`.\n    ///\n    /// - Parameter jwtSigner: The `JWTSigner` that will be used to sign the JWT.\n    /// - Returns: A new instance of `JWTEncoder`.\n    public init(jwtSigner: JWTSigner) {\n        self.keyIDToSigner = {_ in return jwtSigner }\n        self.jwtSigner = jwtSigner\n    }\n    \n    /// Initialize a `JWTEncoder` instance with a function to generate the `JWTSigner` from the JWT `kid` header.\n    ///\n    /// - Parameter keyIDToSigner: The function to generate the `JWTSigner` from the JWT `kid` header.\n    /// - Returns: A new instance of `JWTEncoder`.\n    public init(keyIDToSigner: @escaping (String) -> JWTSigner?) {\n        self.keyIDToSigner = keyIDToSigner\n        self.jwtSigner = nil\n    }\n    \n    // MARK: Encode\n    \n    /// Encode a `JWT` instance into a UTF8 encoded JWT String.\n    ///\n    /// - Parameter value: The JWT instance to be encoded as Data.\n    /// - Returns: The UTF8 encoded JWT String.\n    /// - throws: `JWTError.invalidUTF8Data` if the provided Data can't be decoded to a String.\n    /// - throws: `JWTError.invalidKeyID` if the KeyID `kid` header fails to generate a jwtSigner.\n    /// - throws: `EncodingError` if the encoder fails to encode the object as Data.\n    public func encode<T : Encodable>(_ value: T) throws -> Data {\n        guard let jwt = try self.encodeToString(value).data(using: .utf8) else {\n            throw JWTError.invalidUTF8Data\n        }\n        return jwt\n    }\n    \n    /// Encode a `JWT` instance as a JWT String.\n    ///\n    /// - Parameter value: The JWT instance to be encoded as a JWT String.\n    /// - Returns: A JWT String.\n    /// - throws: `JWTError.invalidKeyID` if the KeyID `kid` header fails to generate a jwtSigner.\n    /// - throws: `EncodingError` if the encoder fails to encode the object as Data.\n    public func encodeToString<T : Encodable>(_ value: T) throws -> String {\n        let encoder = _JWTEncoder(jwtSigner: jwtSigner, keyIDToSigner: keyIDToSigner)\n        try value.encode(to: encoder)\n        guard let header = encoder.header,\n            let claims = encoder.claims,\n            let jwtSigner = encoder.jwtSigner\n        else {\n            throw EncodingError.invalidValue(value, EncodingError.Context(codingPath: [], debugDescription: \"Failed to sign JWT Header and Claims\"))\n        }\n        return try jwtSigner.sign(header: header, claims: claims)\n    }\n}\n\n/*\n The JWTEncoder creates it's own instance of _JWTEncoder everytime the encode function is called.\n This is because the _JWTEncoder changes it's own value so we can only have one thread using it at a time.\n The following is the code generated by codable and called by JWTEncoder.encode() -> String for a JWT<MyClaims> struct:\n ```\n enum MyStructKeys: String, CodingKey {\n    case header, claims\n }\n extension JWT<MyClaims>: Encodable {\n     func encode(to encoder: Encoder) throws {\n         var container = encoder.container(keyedBy: CodingKeys.self)\n         try container.encode(header, forKey: .header)\n         try container.encode(claims, forKey: .claims)\n     }\n }\n ```\n Where encoder is a _JWTEncoder instance, and MyClaims is the user defined object conforming to Claims.\n */\nfileprivate class _JWTEncoder: Encoder {\n    \n    init(jwtSigner: JWTSigner?, keyIDToSigner: @escaping (String) -> JWTSigner?) {\n        self.jwtSigner = jwtSigner\n        self.keyIDToSigner = keyIDToSigner\n    }\n    \n    var claims: String?\n    \n    var header: String?\n    \n    var jwtSigner: JWTSigner?\n    \n    let keyIDToSigner: (String) -> JWTSigner?\n    \n    var codingPath: [CodingKey] = []\n    \n    var userInfo: [CodingUserInfoKey : Any] = [:]\n    \n    // We will be provided a keyed container representing the JWT instance\n    func container<Key : CodingKey>(keyedBy type: Key.Type) -> KeyedEncodingContainer<Key> {\n        let container = _JWTKeyedEncodingContainer<Key>(encoder: self, codingPath: self.codingPath)\n        return KeyedEncodingContainer(container)\n    }\n    \n    private struct _JWTKeyedEncodingContainer<Key: CodingKey>: KeyedEncodingContainerProtocol {\n        \n        /// A reference to the encoder we're writing to.\n        let encoder: _JWTEncoder\n        \n        var codingPath: [CodingKey]\n        \n        // Set the Encoder header and claims Strings using the container\n        mutating func encode<T : Encodable>(_ value: T, forKey key: Key) throws {\n            self.codingPath.append(key)\n            let fieldName = key.stringValue\n            let jsonEncoder = JSONEncoder()\n            jsonEncoder.dateEncodingStrategy = .secondsSince1970\n            if fieldName == \"header\" {\n                guard var _header = value as? Header else {\n                    throw EncodingError.invalidValue(value, EncodingError.Context(codingPath: [], debugDescription: \"Failed to encode into header CodingKey\"))\n                }\n                // Set the jwtSigner while you have acces to the keyID\n                if encoder.jwtSigner == nil {\n                    guard let keyID = _header.kid, let keyIDJWTSigner = encoder.keyIDToSigner(keyID) else {\n                        throw JWTError.invalidKeyID\n                    }\n                    encoder.jwtSigner = keyIDJWTSigner\n                }\n                _header.alg = encoder.jwtSigner?.name\n                let data = try jsonEncoder.encode(_header)\n                encoder.header = JWTEncoder.base64urlEncodedString(data: data)\n            } else if fieldName == \"claims\" {\n                let data = try jsonEncoder.encode(value)\n                encoder.claims = JWTEncoder.base64urlEncodedString(data: data)\n            }\n        }\n        \n        // No functions beyond this point should be called for encoding a JWT token\n        mutating func nestedContainer<NestedKey>(keyedBy keyType: NestedKey.Type, forKey key: Key) -> KeyedEncodingContainer<NestedKey> where NestedKey : CodingKey {\n            return encoder.container(keyedBy: keyType)\n        }\n        \n        mutating func nestedUnkeyedContainer(forKey key: Key) -> UnkeyedEncodingContainer {\n            return encoder.unkeyedContainer()\n        }\n        \n        mutating func superEncoder() -> Encoder {\n            return encoder\n        }\n        \n        mutating func superEncoder(forKey key: Key) -> Encoder {\n            return encoder\n        }\n        \n        // Throw if trying to encode something other than a JWT token\n        mutating func encodeNil(forKey key: Key) throws {\n            throw EncodingError.invalidValue(key, EncodingError.Context(codingPath: codingPath, debugDescription: \"JWTEncoder can only encode JWT tokens\"))\n        }\n\n    }\n    \n    func unkeyedContainer() -> UnkeyedEncodingContainer {\n        return UnkeyedContainer(encoder: self)\n    }\n    \n    func singleValueContainer() -> SingleValueEncodingContainer {\n        return UnkeyedContainer(encoder: self)\n    }\n    \n    // This Decoder should not be used to decode UnkeyedContainer\n    private struct UnkeyedContainer: UnkeyedEncodingContainer, SingleValueEncodingContainer {\n        var encoder: _JWTEncoder\n        \n        var codingPath: [CodingKey] { return [] }\n        \n        var count: Int { return 0 }\n        \n        func nestedContainer<NestedKey>(keyedBy keyType: NestedKey.Type) -> KeyedEncodingContainer<NestedKey> where NestedKey : CodingKey {\n            return encoder.container(keyedBy: keyType)\n        }\n        \n        func nestedUnkeyedContainer() -> UnkeyedEncodingContainer {\n            return self\n        }\n        \n        func superEncoder() -> Encoder {\n            return encoder\n        }\n        \n        func encodeNil() throws {}\n        \n        func encode<T>(_ value: T) throws where T : Encodable {\n            throw EncodingError.invalidValue(value, EncodingError.Context(codingPath: codingPath, debugDescription: \"JWTEncoder can only encode JWT tokens\"))\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/SwiftJWT/JWTError.swift",
    "content": "/**\n * Copyright IBM Corporation 2018\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n **/\n\nimport Foundation\n\n// MARK: JWTError\n\n/// A struct representing the different errors that can be thrown by SwiftJWT\npublic struct JWTError: LocalizedError, Equatable {\n\n    /// A human readable description of the error.\n    public let errorDescription: String?\n    \n    private let internalError: InternalError\n    \n    private enum InternalError {\n        case invalidJWTString, failedVerification, osVersionToLow, invalidPrivateKey, invalidData, invalidKeyID, missingPEMHeaders\n    }\n    \n    /// Error when an invalid JWT String is provided\n    public static let invalidJWTString = JWTError(errorDescription: \"Input was not a valid JWT String\", internalError: .invalidJWTString)\n    \n    /// Error when the JWT signiture fails verification.\n    public static let failedVerification = JWTError(errorDescription: \"JWT verifier failed to verify the JWT String signiture\", internalError: .failedVerification)\n    \n    /// Error when using RSA encryption with an OS version that is too low.\n    public static let osVersionToLow = JWTError(errorDescription: \"macOS 10.12.0 (Sierra) or higher or iOS 10.0 or higher is required by CryptorRSA\", internalError: .osVersionToLow)\n    \n    /// Error when an invalid private key is provided for RSA encryption.\n    public static let invalidPrivateKey = JWTError(errorDescription: \"Provided private key could not be used to sign JWT\", internalError: .invalidPrivateKey)\n    \n    /// Error when the provided Data cannot be decoded to a String\n    public static let invalidUTF8Data = JWTError(errorDescription: \"Could not decode Data from UTF8 to String\", internalError: .invalidData)\n    \n    /// Error when the KeyID field `kid` in the JWT header fails to generate a JWTSigner or JWTVerifier\n    public static let invalidKeyID = JWTError(errorDescription: \"The JWT KeyID `kid` header failed to generate a JWTSigner/JWTVerifier\", internalError: .invalidKeyID)\n    \n    /// Error when a PEM string is provided without the expected PEM headers/footers. (e.g. -----BEGIN PRIVATE KEY-----)\n    public static let missingPEMHeaders = JWTError(errorDescription: \"The provided key did not have the expected PEM headers/footers\", internalError: .missingPEMHeaders)\n    \n    /// Function to check if JWTErrors are equal. Required for equatable protocol.\n    public static func == (lhs: JWTError, rhs: JWTError) -> Bool {\n        return lhs.internalError == rhs.internalError\n    }\n\n    /// Function to enable pattern matching against generic Errors.\n    public static func ~= (lhs: JWTError, rhs: Error) -> Bool {\n        guard let rhs = rhs as? JWTError else {\n            return false\n        }\n        return lhs == rhs\n    }\n}\n"
  },
  {
    "path": "Sources/SwiftJWT/JWTSigner.swift",
    "content": "/**\n * Copyright IBM Corporation 2018\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n **/\n\nimport Foundation\n\n// MARK: JWTSigner\n\n/**\n A struct that will be used to sign the JWT `Header` and `Claims` and generate a signed JWT.\n For RSA and ECDSA, the provided key should be a .utf8 encoded PEM String.\n ### Usage Example: ###\n ```swift\n let pemString = \"\"\"\n -----BEGIN RSA PRIVATE KEY-----\n MIICWwIBAAKBgQDdlatRjRjogo3WojgGHFHYLugdUWAY9iR3fy4arWNA1KoS8kVw\n 33cJibXr8bvwUAUparCwlvdbH6dvEOfou0/gCFQsHUfQrSDv+MuSUMAe8jzKE4qW\n +jK+xQU9a03GUnKHkkle+Q0pX/g6jXZ7r1/xAK5Do2kQ+X5xK9cipRgEKwIDAQAB\n AoGAD+onAtVye4ic7VR7V50DF9bOnwRwNXrARcDhq9LWNRrRGElESYYTQ6EbatXS\n 3MCyjjX2eMhu/aF5YhXBwkppwxg+EOmXeh+MzL7Zh284OuPbkglAaGhV9bb6/5Cp\n uGb1esyPbYW+Ty2PC0GSZfIXkXs76jXAu9TOBvD0ybc2YlkCQQDywg2R/7t3Q2OE\n 2+yo382CLJdrlSLVROWKwb4tb2PjhY4XAwV8d1vy0RenxTB+K5Mu57uVSTHtrMK0\n GAtFr833AkEA6avx20OHo61Yela/4k5kQDtjEf1N0LfI+BcWZtxsS3jDM3i1Hp0K\n Su5rsCPb8acJo5RO26gGVrfAsDcIXKC+bQJAZZ2XIpsitLyPpuiMOvBbzPavd4gY\n 6Z8KWrfYzJoI/Q9FuBo6rKwl4BFoToD7WIUS+hpkagwWiz+6zLoX1dbOZwJACmH5\n fSSjAkLRi54PKJ8TFUeOP15h9sQzydI8zJU+upvDEKZsZc/UhT/SySDOxQ4G/523\n Y0sz/OZtSWcol/UMgQJALesy++GdvoIDLfJX5GBQpuFgFenRiRDabxrE9MNUZ2aP\n FaFp+DyAe+b4nDwuJaW2LURbr8AEZga7oQj0uYxcYw==\n -----END RSA PRIVATE KEY-----\n \"\"\"\n let privateKey = pemString.data(using: .utf8)!\n let jwtSigner = JWTSigner.rs256(privateKey: privateKey)\n struct MyClaims: Claims {\n    var name: String\n }\n let jwt = JWT(claims: MyClaims(name: \"Kitura\"))\n let signedJWT = try? jwt.sign(using: jwtSigner)\n ```\n */\npublic struct JWTSigner {\n    \n    /// The name of the algorithm that will be set in the \"alg\" header\n    let name: String\n    \n    let signerAlgorithm: SignerAlgorithm\n\n    init(name: String, signerAlgorithm: SignerAlgorithm) {\n        self.name = name\n        self.signerAlgorithm = signerAlgorithm\n    }\n    \n    func sign(header: String, claims: String) throws -> String {\n        return try signerAlgorithm.sign(header: header, claims: claims)\n    }\n    \n    /// Initialize a JWTSigner using the RSA 256 bits algorithm and the provided privateKey.\n    /// - Parameter privateKey: The UTF8 encoded PEM private key, with a \"BEGIN RSA PRIVATE KEY\" header.\n    public static func rs256(privateKey: Data) -> JWTSigner {\n        return JWTSigner(name: \"RS256\", signerAlgorithm: BlueRSA(key: privateKey, keyType: .privateKey, algorithm: .sha256))\n    }\n    \n    /// Initialize a JWTSigner using the RSA 384 bits algorithm and the provided privateKey.\n    /// - Parameter privateKey: The UTF8 encoded PEM private key, with a \"BEGIN RSA PRIVATE KEY\" header.\n    public static func rs384(privateKey: Data) -> JWTSigner {\n        return JWTSigner(name: \"RS384\", signerAlgorithm: BlueRSA(key: privateKey, keyType: .privateKey, algorithm: .sha384))\n    }\n    \n    /// Initialize a JWTSigner using the RSA 512 bits algorithm and the provided privateKey.\n    /// - Parameter privateKey: The UTF8 encoded PEM private key, with a \"BEGIN RSA PRIVATE KEY\" header.\n    public static func rs512(privateKey: Data) -> JWTSigner {\n        return JWTSigner(name: \"RS512\", signerAlgorithm: BlueRSA(key: privateKey, keyType: .privateKey, algorithm: .sha512))\n    }\n    \n    /// Initialize a JWTSigner using the RSA-PSS 256 bits algorithm and the provided privateKey.\n    /// - Parameter privateKey: The UTF8 encoded PEM private key, with a \"BEGIN RSA PRIVATE KEY\" header.\n    public static func ps256(privateKey: Data) -> JWTSigner {\n        return JWTSigner(name: \"PS256\", signerAlgorithm: BlueRSA(key: privateKey, keyType: .privateKey, algorithm: .sha256, usePSS: true))\n    }\n    \n    /// Initialize a JWTSigner using the RSA-PSS 384 bits algorithm and the provided privateKey.\n    /// - Parameter privateKey: The UTF8 encoded PEM private key, with a \"BEGIN RSA PRIVATE KEY\" header.\n    public static func ps384(privateKey: Data) -> JWTSigner {\n        return JWTSigner(name: \"PS384\", signerAlgorithm: BlueRSA(key: privateKey, keyType: .privateKey, algorithm: .sha384, usePSS: true))\n    }\n    \n    /// Initialize a JWTSigner using the RSA-PSS 512 bits algorithm and the provided privateKey.\n    /// This signer requires at least a 2048 bit RSA key.\n    /// - Parameter privateKey: The UTF8 encoded PEM private key, with a \"BEGIN RSA PRIVATE KEY\" header.\n    public static func ps512(privateKey: Data) -> JWTSigner {\n        return JWTSigner(name: \"PS512\", signerAlgorithm: BlueRSA(key: privateKey, keyType: .privateKey, algorithm: .sha512, usePSS: true))\n    }\n    \n    /// Initialize a JWTSigner using the HMAC 256 bits algorithm and the provided privateKey.\n    /// - Parameter key: The HMAC symmetric password data.\n    public static func hs256(key: Data) -> JWTSigner {\n        return JWTSigner(name: \"HS256\", signerAlgorithm: BlueHMAC(key: key, algorithm: .sha256))\n    }\n    \n    /// Initialize a JWTSigner using the HMAC 384 bits algorithm and the provided privateKey.\n    /// - Parameter key: The HMAC symmetric password data.\n    public static func hs384(key: Data) -> JWTSigner {\n        return JWTSigner(name: \"HS384\", signerAlgorithm: BlueHMAC(key: key, algorithm: .sha384))\n    }\n    \n    /// Initialize a JWTSigner using the HMAC 512 bits algorithm and the provided privateKey.\n    /// - Parameter key: The HMAC symmetric password data.\n    public static func hs512(key: Data) -> JWTSigner {\n        return JWTSigner(name: \"HS512\", signerAlgorithm: BlueHMAC(key: key, algorithm: .sha512))\n    }\n    \n    /// Initialize a JWTSigner using the ECDSA SHA256 algorithm and the provided privateKey.\n    /// - Parameter privateKey: The UTF8 encoded PEM private key, with either a \"BEGIN EC PRIVATE KEY\" or \"BEGIN PRIVATE KEY\" header.\n    @available(OSX 10.13, iOS 11, tvOS 11.0, watchOS 4.0, *)\n    public static func es256(privateKey: Data) -> JWTSigner {\n        return JWTSigner(name: \"ES256\", signerAlgorithm: BlueECSigner(key: privateKey, curve: .prime256v1))\n    }\n    \n    /// Initialize a JWTSigner using the ECDSA SHA384 algorithm and the provided privateKey.\n    /// - Parameter privateKey: The UTF8 encoded PEM private key, with either a \"BEGIN EC PRIVATE KEY\" or \"BEGIN PRIVATE KEY\" header.\n    @available(OSX 10.13, iOS 11, tvOS 11.0, watchOS 4.0, *)\n    public static func es384(privateKey: Data) -> JWTSigner {\n        return JWTSigner(name: \"ES384\", signerAlgorithm: BlueECSigner(key: privateKey, curve: .secp384r1))\n    }\n    \n    /// Initialize a JWTSigner using the ECDSA SHA512 algorithm and the provided privateKey.\n    /// - Parameter privateKey: The UTF8 encoded PEM private key, with either a \"BEGIN EC PRIVATE KEY\" or \"BEGIN PRIVATE KEY\" header.\n    @available(OSX 10.13, iOS 11, tvOS 11.0, watchOS 4.0, *)\n    public static func es512(privateKey: Data) -> JWTSigner {\n        return JWTSigner(name: \"ES512\", signerAlgorithm: BlueECSigner(key: privateKey, curve: .secp521r1))\n    }\n    \n    /// Initialize a JWTSigner that will not sign the JWT. This is equivelent to using the \"none\" alg header.\n    public static let none = JWTSigner(name: \"none\", signerAlgorithm: NoneAlgorithm())\n}\n\n"
  },
  {
    "path": "Sources/SwiftJWT/JWTVerifier.swift",
    "content": "/**\n * Copyright IBM Corporation 2018\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n **/\n\nimport Foundation\n\n// MARK: JWTVerifier\n\n/**\n \n A struct that will be used to verify the signature of a JWT is valid for the provided `Header` and `Claims`.\n For RSA and ECDSA, the provided key should be a .utf8 encoded PEM String.\n ### Usage Example: ###\n ```swift\n let pemString = \"\"\"\n -----BEGIN PUBLIC KEY-----\n MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDdlatRjRjogo3WojgGHFHYLugd\n UWAY9iR3fy4arWNA1KoS8kVw33cJibXr8bvwUAUparCwlvdbH6dvEOfou0/gCFQs\n HUfQrSDv+MuSUMAe8jzKE4qW+jK+xQU9a03GUnKHkkle+Q0pX/g6jXZ7r1/xAK5D\n o2kQ+X5xK9cipRgEKwIDAQAB\n -----END PUBLIC KEY-----\n \"\"\"\n let signedJWT = \"eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJuYW1lIjoiS2l0dXJhIn0.o2Rv_w1W6qfkldgb6FwzC3tAFEzo7WyYcLyykijCEqDbW8A7TwoFev85KGo_Bi7eNaSgZ6Q8jgkA31r8EDQWtSRg3_o5Zlq-ZCndyVeibgbyM2BMVUGcGzkUD2ikARfnb6GNGHr2waVeFSDehTN8WTLl0mGFxUE6wx5ZugR7My0\"\n struct MyClaims: Claims {\n    var name: String\n }\n let jwt = JWT(claims: MyClaims(name: \"Kitura\"))\n let publicKey = pemString.data(using: .utf8)!\n let jwtVerifier = JWTVerifier.rs256(publicKey: publicKey)\n let verified: Bool = jwt.verify(signedJWT, using: jwtVerifier)\n ```\n */\npublic struct JWTVerifier {    \n    let verifierAlgorithm: VerifierAlgorithm\n    \n    init(verifierAlgorithm: VerifierAlgorithm) {\n        self.verifierAlgorithm = verifierAlgorithm\n    }\n    \n    func verify(jwt: String) -> Bool {\n        return verifierAlgorithm.verify(jwt: jwt)\n    }\n    \n    /// Initialize a JWTVerifier using the RSA 256 bits algorithm and the provided publicKey.\n    /// - Parameter publicKey: The UTF8 encoded PEM public key, with a \"BEGIN PUBLIC KEY\" header.\n    public static func rs256(publicKey: Data) -> JWTVerifier {\n        return JWTVerifier(verifierAlgorithm: BlueRSA(key: publicKey, keyType: .publicKey, algorithm: .sha256))\n    }\n    \n    /// Initialize a JWTVerifier using the RSA 384 bits algorithm and the provided publicKey.\n    /// - Parameter publicKey: The UTF8 encoded PEM public key, with a \"BEGIN PUBLIC KEY\" header.\n    public static func rs384(publicKey: Data) -> JWTVerifier {\n        return JWTVerifier(verifierAlgorithm: BlueRSA(key: publicKey, keyType: .publicKey, algorithm: .sha384))\n    }\n    \n    /// Initialize a JWTVerifier using the RSA 512 bits algorithm and the provided publicKey.\n    /// - Parameter publicKey: The UTF8 encoded PEM public key, with a \"BEGIN PUBLIC KEY\" header.\n    public static func rs512(publicKey: Data) -> JWTVerifier {\n        return JWTVerifier(verifierAlgorithm: BlueRSA(key: publicKey, keyType: .publicKey, algorithm: .sha512))\n    }\n    \n    /// Initialize a JWTVerifier using the RSA 256 bits algorithm and the provided certificate.\n    /// - Parameter publicKey: The UTF8 encoded PEM public key, with a \"BEGIN CERTIFICATE\" header.\n    public static func rs256(certificate: Data) -> JWTVerifier {\n        return JWTVerifier(verifierAlgorithm: BlueRSA(key: certificate, keyType: .certificate, algorithm: .sha256))\n    }\n    \n    /// Initialize a JWTVerifier using the RSA 384 bits algorithm and the provided certificate.\n    /// - Parameter publicKey: The UTF8 encoded PEM public key, with a \"BEGIN CERTIFICATE\" header.\n    public static func rs384(certificate: Data) -> JWTVerifier {\n        return JWTVerifier(verifierAlgorithm: BlueRSA(key: certificate, keyType: .certificate, algorithm: .sha384))\n    }\n    \n    /// Initialize a JWTVerifier using the RSA 512 bits algorithm and the provided certificate.\n    /// - Parameter publicKey: The UTF8 encoded PEM public key, with a \"BEGIN CERTIFICATE\" header.\n    public static func rs512(certificate: Data) -> JWTVerifier {\n        return JWTVerifier(verifierAlgorithm: BlueRSA(key: certificate, keyType: .certificate, algorithm: .sha512))\n    }\n    \n    /// Initialize a JWTVerifier using the RSA-PSS 256 bits algorithm and the provided publicKey.\n    /// - Parameter publicKey: The UTF8 encoded PEM public key, with a \"BEGIN PUBLIC KEY\" header.\n    public static func ps256(publicKey: Data) -> JWTVerifier {\n        return JWTVerifier(verifierAlgorithm: BlueRSA(key: publicKey, keyType: .publicKey, algorithm: .sha256, usePSS: true))\n    }\n    \n    /// Initialize a JWTVerifier using the RSA-PSS 384 bits algorithm and the provided publicKey.\n    /// - Parameter publicKey: The UTF8 encoded PEM public key, with a \"BEGIN PUBLIC KEY\" header.\n    public static func ps384(publicKey: Data) -> JWTVerifier {\n        return JWTVerifier(verifierAlgorithm: BlueRSA(key: publicKey, keyType: .publicKey, algorithm: .sha384, usePSS: true))\n    }\n    \n    /// Initialize a JWTVerifier using the RSA-PSS 512 bits algorithm and the provided publicKey.\n    /// This verifier requires at least a 2048 bit RSA key.\n    /// - Parameter publicKey: The UTF8 encoded PEM public key, with a \"BEGIN PUBLIC KEY\" header.\n    public static func ps512(publicKey: Data) -> JWTVerifier {\n        return JWTVerifier(verifierAlgorithm: BlueRSA(key: publicKey, keyType: .publicKey, algorithm: .sha512, usePSS: true))\n    }\n    \n    /// Initialize a JWTSigner using the HMAC 256 bits algorithm and the provided privateKey.\n    /// - Parameter key: The HMAC symmetric password data.\n    public static func hs256(key: Data) -> JWTVerifier {\n        return JWTVerifier(verifierAlgorithm: BlueHMAC(key: key, algorithm: .sha256))\n    }\n    \n    /// Initialize a JWTSigner using the HMAC 384 bits algorithm and the provided privateKey.\n    /// - Parameter key: The HMAC symmetric password data.\n    public static func hs384(key: Data) -> JWTVerifier {\n        return JWTVerifier(verifierAlgorithm: BlueHMAC(key: key, algorithm: .sha384))\n    }\n    \n    /// Initialize a JWTSigner using the HMAC 512 bits algorithm and the provided privateKey.\n    /// - Parameter key: The HMAC symmetric password data.\n    public static func hs512(key: Data) -> JWTVerifier {\n        return JWTVerifier(verifierAlgorithm: BlueHMAC(key: key, algorithm: .sha512))\n    }\n    \n    /// Initialize a JWTVerifier using the ECDSA SHA 256 algorithm and the provided public key.\n    /// - Parameter publicKey: The UTF8 encoded PEM public key, with a \"BEGIN PUBLIC KEY\" header.\n    @available(OSX 10.13, iOS 11, tvOS 11.0, watchOS 4.0, *)\n    public static func es256(publicKey: Data) -> JWTVerifier {\n        return JWTVerifier(verifierAlgorithm: BlueECVerifier(key: publicKey, curve: .prime256v1))\n    }\n    \n    /// Initialize a JWTVerifier using the ECDSA SHA 384 algorithm and the provided public key.\n    /// - Parameter publicKey: The UTF8 encoded PEM public key, with a \"BEGIN PUBLIC KEY\" header.\n    @available(OSX 10.13, iOS 11, tvOS 11.0, watchOS 4.0, *)\n    public static func es384(publicKey: Data) -> JWTVerifier {\n        return JWTVerifier(verifierAlgorithm: BlueECVerifier(key: publicKey, curve: .secp384r1))\n    }\n    \n    /// Initialize a JWTVerifier using the ECDSA SHA 512 algorithm and the provided public key.\n    /// - Parameter publicKey: The UTF8 encoded PEM public key, with a \"BEGIN PUBLIC KEY\" header.\n    @available(OSX 10.13, iOS 11, tvOS 11.0, watchOS 4.0, *)\n    public static func es512(publicKey: Data) -> JWTVerifier {\n        return JWTVerifier(verifierAlgorithm: BlueECVerifier(key: publicKey, curve: .secp521r1))\n    }\n    \n    /// Initialize a JWTVerifier that will always return true when verifying the JWT. This is equivelent to using the \"none\" alg header.\n    public static let none = JWTVerifier(verifierAlgorithm: NoneAlgorithm())\n}\n"
  },
  {
    "path": "Sources/SwiftJWT/NoneAlgorithm.swift",
    "content": "/**\n * Copyright IBM Corporation 2017\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n **/\n\nimport Foundation\n\n/// An EncryptionAlgorithm representing an alg of \"none\" in a JWT.\n/// Using this algorithm means the header and claims will not be signed or verified.\nstruct NoneAlgorithm: VerifierAlgorithm, SignerAlgorithm {\n    \n    let name: String = \"none\"\n    \n    func sign(header: String, claims: String) -> String {\n        return header + \".\" + claims\n    }\n    \n    func verify(jwt: String) -> Bool {\n        return true\n    }\n}\n"
  },
  {
    "path": "Sources/SwiftJWT/RSAKeyType.swift",
    "content": "/**\n * Copyright IBM Corporation 2017\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n **/\n\n// MARK RSAKeyType\n\n/// The type of the key used in the RSA algorithm.\nenum RSAKeyType {\n    /// The key is a certificate containing both the private and the public keys.\n    case certificate\n    \n    /// The key is an RSA public key.\n    case publicKey\n    \n    /// The key is an RSA private key.\n    case privateKey\n}\n"
  },
  {
    "path": "Sources/SwiftJWT/SignerAlgorithm.swift",
    "content": "/**\n * Copyright IBM Corporation 2018\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n **/\n\nprotocol SignerAlgorithm {\n    /// A function to sign the header and claims of a JSON web token and return a signed JWT string.\n    func sign(header: String, claims: String) throws -> String\n}\n"
  },
  {
    "path": "Sources/SwiftJWT/ValidateClaimsResult.swift",
    "content": "/**\n * Copyright IBM Corporation 2017\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n **/\n\n// MARK: ValidateClaimsResult\n\n/// ValidateClaimsResult list the possible results of a call to JWT.validateClaims method.\n/// In case of successful validation, .success is returned, all other cases list various\n/// problems that may occur during claims validation and indicate that the validation failed.\npublic struct ValidateClaimsResult: CustomStringConvertible, Equatable {\n    \n    /// The human readable description of the ValidateClaimsResult\n    public let description: String\n    \n    /// Successful validation.\n    public static let success = ValidateClaimsResult(description: \"Success\")\n\n    /// Invalid Expiration claim.\n    public static let invalidExpiration = ValidateClaimsResult(description: \"Invalid Expiration claim\")\n    \n    /// Expired token: expiration time claim is in the past.\n    public static let expired = ValidateClaimsResult(description: \"Expired token\")\n    \n    /// Invalid Not Before claim.\n    public static let invalidNotBefore = ValidateClaimsResult(description: \"Invalid Not Before claim\")\n    \n    /// Not Before claim is in the future.\n    public static let notBefore = ValidateClaimsResult(description: \"Token is not valid yet, Not Before claim is greater than the current time\")\n    \n    /// Invalid Issued At claim.\n    public static let invalidIssuedAt = ValidateClaimsResult(description: \"Invalid Issued At claim\")\n    \n    /// Issued At claim is in the future.\n    public static let issuedAt = ValidateClaimsResult(description: \"Issued At claim is greater than the current time\")\n \n    /// Check if two ValidateClaimsResults are equal. Required for the Equatable protocol\n    public static func == (lhs: ValidateClaimsResult, rhs: ValidateClaimsResult) -> Bool {\n        return lhs.description == rhs.description\n    }\n}\n"
  },
  {
    "path": "Sources/SwiftJWT/VerifierAlgorithm.swift",
    "content": "/**\n * Copyright IBM Corporation 2018\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n **/\n\nprotocol VerifierAlgorithm {\n    /// A function to verify the signature of a JSON web token string is correct for the header and claims.\n    func verify(jwt: String) -> Bool\n    \n}\n"
  },
  {
    "path": "SwiftJWT.podspec",
    "content": "Pod::Spec.new do |s|\n  s.name         = \"SwiftJWT\"\n  s.version      = \"4.0.1\"\n  s.summary      = \"An implementation of JSON Web Token using Swift.\"\n  s.homepage     = \"https://github.com/Kitura/Swift-JWT\"\n  s.license      = { :type => \"Apache License, Version 2.0\" }\n  s.authors      = 'IBM and the Kitura project authors'\n  s.module_name  = 'SwiftJWT'\n  s.swift_version = '5.2'\n  s.osx.deployment_target = \"10.13\"\n  s.ios.deployment_target = \"11.0\"\n  s.tvos.deployment_target = \"11.0\"\n  s.watchos.deployment_target = \"4.0\"\n  s.source       = { :git => \"https://github.com/Kitura/Swift-JWT.git\", :tag => s.version }\n  s.source_files  = \"Sources/**/*.swift\"\n  s.dependency 'BlueRSA', '~> 1.0.200'\n  s.dependency 'BlueCryptor', '~> 2.0.1'\n  s.dependency 'BlueECC', '~> 1.2.200'\n  s.dependency 'LoggerAPI', '~> 2.0.0'\n  s.dependency 'KituraContracts', '~> 2.0.1'\nend\n"
  },
  {
    "path": "Tests/LinuxMain.swift",
    "content": "/**\n * Copyright IBM Corporation 2017\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n **/\n\nimport XCTest\n\n@testable import SwiftJWTTests\n\n\nXCTMain([\n            testCase(TestJWT.allTests),\n    ])\n"
  },
  {
    "path": "Tests/SwiftJWTTests/TestJWT.swift",
    "content": "/**\n Copyright IBM Corporation 2017\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nimport XCTest\nimport Foundation\n\n@testable import SwiftJWT\n\nlet rsaPrivateKey = read(fileName: \"rsa_private_key\")\nlet rsaPublicKey = read(fileName: \"rsa_public_key\")\nlet rsaDERPrivateKey = read(fileName: \"privateRSA.der\")\nlet rsaDERPublicKey = read(fileName: \"publicRSA.der\")\nlet ecdsaPrivateKey = read(fileName: \"ecdsa_private_key\")\nlet ecdsaPublicKey = read(fileName: \"ecdsa_public_key\")\nlet ec384PrivateKey = read(fileName: \"ec384_private_key\")\nlet ec384PublicKey = read(fileName: \"ec384_public_key\")\nlet ec512PrivateKey = read(fileName: \"ec512_private_key\")\nlet ec512PublicKey = read(fileName: \"ec512_public_key\")\nlet rsaJWTEncoder = JWTEncoder(jwtSigner: .rs256(privateKey: rsaPrivateKey))\nlet rsaJWTDecoder = JWTDecoder(jwtVerifier: .rs256(publicKey: rsaPublicKey))\nlet certPrivateKey = read(fileName: \"cert_private_key\")\nlet certificate = read(fileName: \"certificate\")\nlet rsaEncodedTestClaimJWT = \"eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMn0.pOeiYYHuxBu27llpKrLfHX-tt0Cr41m3hn7d1_CPl7dRMksQRJC5U7AM2CkF8uyObwAKg88orK6eHlOQ0x2C4gDoG7WmgszpthOB6ZUTUPj_FNsn3z4fM8sFx3wON7jtRRSuULH13f-RjLoIFhY_VuqVhla3ybjnfbwjcsd8EqDumdFN6La5D0KugCgvuH51JaEjdHfwXkxkRsynmhv3jCpvRbUbforfEnDjyAImez2hd0Pnb3Vtqr-21z1vFWqqRiz_K-qSiO5NTaO1VbLg7SOYBB9hMAD-_6R2ZZh0JvFP7hycCftRIxTSDd5r0I9sQh9iqurVq03_h0ZjS9BwJQ\"\nlet rsaPSSEncodedTestClaimJWT = \"eyJhbGciOiJQUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMn0.gytxKF6HsfRI-dmyS0KsVoGquSWHTbosqmgBM_8UnTBZd56ThVdxZSTZzkVE0kS6SZdN7iogLiPqWzvGac0orTkf3XMbxecpHiO8b_BywIqrXhXcz84NFxrq5s8KL_LB8Cs9ro_5xmptp_fNtCedg9leju7VUzrEZP0hyTG_dlar2t7SWY47JD3rlgdaXEfkGgSuDgOO2CzBzqlbP7DUxTQ6OwI8RMNWAxeCalvWTgNQkb1DAy_2JKaga4zDnieUHMd2c_8iSt6SS9dLkxl4nih_2IjHJc73Qcg4Epx5CrhJXWg5CmKoTFDVgpMBGXJRIxT5qpAAx4qvRzlNgJVM2A\"\nlet certificateEncodedTestClaimJWT = \"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImtpZCI6IjEifQ.eyJuYW1lIjoiSm9obiBEb2UiLCJhZG1pbiI6dHJ1ZSwic3ViIjoiMTIzNDU2Nzg5MCJ9.CpnzQLuWGfH5Kba36vg0ZZKBnzwlrIgapFVfBfk_nea-eej84ktHZANqIeolskZopRJ4DQ3oaLtHWEg16-ZsujxmkOdiAIbk0-C4QLOVFLZH78WLZAqkyNLS8rFuK9hloLNwz1j6VVUd1f0SOT-wIRzL0_0VRYqQd1bVcCj7wc7BmXENlOfHY7KGHS-6JX-EClT1DygDSoCmdvBExBf3vx0lwMIbP4ryKkyhOoU13ZfSUt1gpP9nZAfzqfRTPxZc_f7neiAlMlF6SzsedsskRCNegW8cg5e_NuVmZZkj0_bnswXFDMmIaxiPdtOEWkmyEOca-EHSwbO5PgCgXOIrgg\"\n// A `TestClaims` encoded using HMAC with \"Super Secret Key\" from \"www.jwt.io\"\nlet hmacEncodedTestClaimJWT = \"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJuYW1lIjoiSm9obiBEb2UiLCJhZG1pbiI6dHJ1ZSwic3ViIjoiMTIzNDU2Nzg5MCJ9.8kIE0ZCq1Vw7aW1kACpgJLcgY2DpTXgO6P5T3cdCuTs\"\n// A `TestClaims` encoded using es256 with `ecdsaPrivateKey`\nlet ecdsaEncodedTestClaimJWT = \"eyJhbGciOiJFUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMn0.z1nUPt7mJk5EZBJKrRiCRLSum1B5E5ucaMeuMqxcvnw3a5FnKC-XsR6rvBVdUPRVzWF6L9CHQuSBlDy579SqQA\"\nlet jwtSigners: [String: JWTSigner] = [\"0\": .rs256(privateKey: rsaPrivateKey), \"1\": .rs256(privateKey: certPrivateKey)]\nlet jwtVerifiers: [String: JWTVerifier] = [\"0\": .rs256(publicKey: rsaPublicKey), \"1\": .rs256(certificate: certificate)]\nlet rsaJWTKidEncoder = JWTEncoder(keyIDToSigner: { kid in return jwtSigners[kid]})\nlet rsaJWTKidDecoder = JWTDecoder(keyIDToVerifier: { kid in return jwtVerifiers[kid]})\n\nstruct TestClaims: Claims, Equatable {\n    var name: String?\n    var admin: Bool?\n    var iss: String?\n    var sub: String?\n    var aud: [String]?\n    var exp: Date?\n    var nbf: Date?\n    var iat: Date?\n    var jti: String?\n    init(name: String? = nil) {\n        self.name = name\n    }\n\n    static func == (lhs: TestClaims, rhs: TestClaims) -> Bool {\n        return lhs.name == rhs.name &&\n        lhs.admin == rhs.admin &&\n        lhs.iss == rhs.iss &&\n        lhs.sub == rhs.sub &&\n        lhs.aud ?? [\"\"] == rhs.aud ?? [\"\"] &&\n        lhs.exp == rhs.exp &&\n        lhs.nbf == rhs.nbf &&\n        lhs.iat == rhs.iat &&\n        lhs.jti == rhs.jti\n    }\n}\n\nextension Header: Equatable {\n\n    /// Function to check if two headers are equal. Required to conform to the equatable protocol.\n    public static func == (lhs: Header, rhs: Header) -> Bool {\n        return lhs.alg == rhs.alg &&\n            lhs.crit ?? [] == rhs.crit ?? [] &&\n            lhs.cty == rhs.cty &&\n            lhs.jku == rhs.jku &&\n            lhs.jwk == rhs.jwk &&\n            lhs.kid == rhs.kid &&\n            lhs.typ == rhs.typ &&\n            lhs.x5c ?? [] == rhs.x5c ?? [] &&\n            lhs.x5t == rhs.x5t &&\n            lhs.x5tS256 == rhs.x5tS256 &&\n            lhs.x5u == rhs.x5u\n    }\n}\n\nstruct MicroProfile: Claims {\n    var name: String?\n    var groups: [String]?\n    var upn: String?\n    var admin: Bool?\n    var iss: String?\n    var sub: String?\n    var aud: [String]?\n    var exp: Date?\n    var nbf: Date?\n    var iat: Date?\n    var jti: String?\n    init(name: String) {\n        self.name = name\n    }\n}\n@available(macOS 10.12, iOS 10.0, *)\nclass TestJWT: XCTestCase {\n    \n    static var allTests: [(String, (TestJWT) -> () throws -> Void)] {\n        return [\n            (\"testSignAndVerify\", testSignAndVerify),\n            (\"testSignAndVerifyRSA\", testSignAndVerifyRSA),\n            (\"testSignAndVerifyRSAPSS\", testSignAndVerifyRSAPSS),\n            (\"testSignAndVerifyCert\", testSignAndVerifyCert),\n            (\"testSignAndVerifyHMAC\", testSignAndVerifyHMAC),\n            (\"testSignAndVerifyECDSA\", testSignAndVerifyECDSA),\n            (\"testSignAndVerifyRSA384\", testSignAndVerifyRSA384),\n            (\"testSignAndVerifyRSAPSS384\", testSignAndVerifyRSAPSS384),\n            (\"testSignAndVerifyCert384\", testSignAndVerifyCert384),\n            (\"testSignAndVerifyHMAC384\", testSignAndVerifyHMAC384),\n            (\"testSignAndVerifyECDSA384\", testSignAndVerifyECDSA384),\n            (\"testSignAndVerifyRSA512\", testSignAndVerifyRSA512),\n            (\"testSignAndVerifyRSAPSS512\", testSignAndVerifyRSAPSS512),\n            (\"testSignAndVerifyCert512\", testSignAndVerifyCert512),\n            (\"testSignAndVerifyHMAC512\", testSignAndVerifyHMAC512),\n            (\"testSignAndVerifyECDSA512\", testSignAndVerifyECDSA512),\n            (\"testJWTEncoder\", testJWTEncoder),\n            (\"testJWTDecoder\", testJWTDecoder),\n            (\"testJWTCoderCycle\", testJWTCoderCycle),\n            (\"testJWTEncoderKeyID\", testJWTEncoderKeyID),\n            (\"testJWTDecoderKeyID\", testJWTDecoderKeyID),\n            (\"testJWTCoderCycleKeyID\", testJWTCoderCycleKeyID),\n            (\"testJWT\", testJWT),\n            (\"testJWTRSAPSS\", testJWTRSAPSS),\n            (\"testJWTUsingHMAC\", testJWTUsingHMAC),\n            (\"testJWTUsingECDSA\", testJWTUsingECDSA),\n            (\"testMicroProfile\", testMicroProfile),\n            (\"testValidateClaims\", testValidateClaims),\n            (\"testValidateClaimsLeeway\", testValidateClaimsLeeway),\n            (\"testErrorPattenMatching\", testErrorPattenMatching),\n            (\"testTypeErasedErrorLocalizedDescription\", testTypeErasedErrorLocalizedDescription),\n        ]\n    }\n\n    func testSignAndVerify() {\n        do {\n            try signAndVerify(signer: .none, verifier: .none)\n        } catch {\n            XCTFail(\"testSignAndVerify failed: \\(error)\")\n        }\n    }\n    \n    func testSignAndVerifyRSA() {\n        do {\n            try signAndVerify(signer: .rs256(privateKey: rsaPrivateKey), verifier: .rs256(publicKey: rsaPublicKey))\n        } catch {\n            XCTFail(\"testSignAndVerify failed: \\(error)\")\n        }\n    }\n    \n    func testSignAndVerifyRSADERKey() {\n        do {\n            try signAndVerify(signer: .rs256(privateKey: rsaDERPrivateKey), verifier: .rs256(publicKey: rsaDERPublicKey))\n        } catch {\n            XCTFail(\"testSignAndVerify failed: \\(error)\")\n        }\n    }\n    \n    func testSignAndVerifyRSAPSS() {\n        if #available(OSX 10.13, *) {\n            do {\n                try signAndVerify(signer: .ps256(privateKey: rsaPrivateKey), verifier: .ps256(publicKey: rsaPublicKey))\n            } catch {\n                XCTFail(\"testSignAndVerify failed: \\(error)\")\n            }\n        }\n    }\n    \n    func testSignAndVerifyCert() {\n        do {\n            try signAndVerify(signer: .rs256(privateKey: certPrivateKey), verifier: .rs256(certificate: certificate))\n        } catch {\n            XCTFail(\"testSignAndVerify failed: \\(error)\")\n        }\n    }\n    \n    func testSignAndVerifyHMAC() {\n        do {\n            let hmacData = \"Super Secret Key\".data(using: .utf8)!\n            try signAndVerify(signer: .hs256(key: hmacData), verifier: .hs256(key: hmacData))\n        } catch {\n            XCTFail(\"testSignAndVerify failed: \\(error)\")\n        }\n    }\n    \n    func testSignAndVerifyECDSA() {\n        if #available(OSX 10.13, iOS 11, tvOS 11.0, watchOS 4.0, *) {\n            do {\n                try signAndVerify(signer: .es256(privateKey: ecdsaPrivateKey), verifier: .es256(publicKey: ecdsaPublicKey))\n            } catch {\n                XCTFail(\"testSignAndVerify failed: \\(error)\")\n            }\n        }\n    }\n    \n    func testSignAndVerifyRSA384() {\n        do {\n            try signAndVerify(signer: .rs384(privateKey: rsaPrivateKey), verifier: .rs384(publicKey: rsaPublicKey))\n        } catch {\n            XCTFail(\"testSignAndVerify failed: \\(error)\")\n        }\n    }\n    \n    func testSignAndVerifyRSAPSS384() {\n        if #available(OSX 10.13, *) {\n            do {\n                try signAndVerify(signer: .ps384(privateKey: rsaPrivateKey), verifier: .ps384(publicKey: rsaPublicKey))\n            } catch {\n                XCTFail(\"testSignAndVerify failed: \\(error)\")\n            }\n        }\n    }\n    \n    func testSignAndVerifyCert384() {\n        do {\n            try signAndVerify(signer: .rs384(privateKey: certPrivateKey), verifier: .rs384(certificate: certificate))\n        } catch {\n            XCTFail(\"testSignAndVerify failed: \\(error)\")\n        }\n    }\n    \n    func testSignAndVerifyHMAC384() {\n        do {\n            let hmacData = \"Super Secret Key\".data(using: .utf8)!\n            try signAndVerify(signer: .hs384(key: hmacData), verifier: .hs384(key: hmacData))\n        } catch {\n            XCTFail(\"testSignAndVerify failed: \\(error)\")\n        }\n    }\n    \n    func testSignAndVerifyECDSA384() {\n        if #available(OSX 10.13, iOS 11, tvOS 11.0, watchOS 4.0, *) {\n            do {\n                try signAndVerify(signer: .es384(privateKey: ec384PrivateKey), verifier: .es384(publicKey: ec384PublicKey))\n            } catch {\n                XCTFail(\"testSignAndVerify failed: \\(error)\")\n            }\n        }\n    }\n    \n    func testSignAndVerifyRSA512() {\n        do {\n            try signAndVerify(signer: .rs512(privateKey: rsaPrivateKey), verifier: .rs512(publicKey: rsaPublicKey))\n        } catch {\n            XCTFail(\"testSignAndVerify failed: \\(error)\")\n        }\n    }\n    \n    func testSignAndVerifyRSAPSS512() {\n        if #available(OSX 10.13, iOS 11, *) {\n            do {\n                try signAndVerify(signer: .ps512(privateKey: rsaPrivateKey), verifier: .ps512(publicKey: rsaPublicKey))\n            } catch {\n                XCTFail(\"testSignAndVerify failed: \\(error)\")\n            }\n        }\n    }\n    \n    func testSignAndVerifyCert512() {\n        do {\n            try signAndVerify(signer: .rs512(privateKey: certPrivateKey), verifier: .rs512(certificate: certificate))\n        } catch {\n            XCTFail(\"testSignAndVerify failed: \\(error)\")\n        }\n    }\n    \n    func testSignAndVerifyHMAC512() {\n        do {\n            let hmacData = \"Super Secret Key\".data(using: .utf8)!\n            try signAndVerify(signer: .hs512(key: hmacData), verifier: .hs512(key: hmacData))\n        } catch {\n            XCTFail(\"testSignAndVerify failed: \\(error)\")\n        }\n    }\n    \n    func testSignAndVerifyECDSA512() {\n        if #available(OSX 10.13, iOS 11, tvOS 11.0, *) {\n            do {\n                try signAndVerify(signer: .es512(privateKey: ec512PrivateKey), verifier: .es512(publicKey: ec512PublicKey))\n            } catch {\n                XCTFail(\"testSignAndVerify failed: \\(error)\")\n            }\n        }\n    }\n    \n    func signAndVerify(signer: JWTSigner, verifier: JWTVerifier) throws {\n        var jwt = JWT(claims: TestClaims(name:\"Kitura\"))\n        jwt.claims.name = \"Kitura-JWT\"\n        XCTAssertEqual(jwt.claims.name, \"Kitura-JWT\")\n        jwt.claims.iss = \"issuer\"\n        jwt.claims.aud = [\"clientID\"]\n        jwt.claims.iat = Date(timeIntervalSince1970: 1485949565.58463)\n        jwt.claims.exp = Date(timeIntervalSince1970: 2485949565.58463)\n        jwt.claims.nbf = Date(timeIntervalSince1970: 1485949565.58463)\n        let signed = try jwt.sign(using: signer)\n        let ok = JWT<TestClaims>.verify(signed, using: verifier)\n        XCTAssertTrue(ok, \"Verification failed\")\n        let decoded = try JWT<TestClaims>(jwtString: signed)\n        check(jwt: decoded, algorithm: signer.name)\n        XCTAssertEqual(decoded.validateClaims(), .success, \"Validation failed\")\n    }\n\n    func check(jwt: JWT<TestClaims>, algorithm: String) {\n\n        XCTAssertEqual(jwt.header.alg, algorithm, \"Wrong .alg in decoded\")\n        XCTAssertEqual(jwt.claims.exp, Date(timeIntervalSince1970: 2485949565.58463), \"Wrong .exp in decoded\")\n        XCTAssertEqual(jwt.claims.iat, Date(timeIntervalSince1970: 1485949565.58463), \"Wrong .iat in decoded\")\n        XCTAssertEqual(jwt.claims.nbf, Date(timeIntervalSince1970: 1485949565.58463), \"Wrong .nbf in decoded\")\n    }\n    \n    func checkMicroProfile(jwt: JWT<MicroProfile>, algorithm: String) {\n        \n        XCTAssertEqual(jwt.header.alg, \"RS256\", \"Wrong .alg in decoded. MicroProfile only supports RS256.\")\n        XCTAssertEqual(jwt.claims.iss, \"https://server.example.com\", \"Wrong .iss in decoded\")\n        XCTAssertEqual(jwt.claims.exp, Date(timeIntervalSince1970: 2485949565.58463), \"Wrong .exp in decoded\")\n        XCTAssertEqual(jwt.claims.iat, Date(timeIntervalSince1970: 1485949565.58463), \"Wrong .iat in decoded\")\n        XCTAssertEqual(jwt.claims.aud ?? [\"\"], [\"clientID\"], \"Wrong .aud in decoded\")\n        XCTAssertEqual(jwt.claims.groups ?? [\"\"], [\"red-group\", \"green-group\", \"admin-group\", \"admin\"], \"Wrong .groups in decoded\")\n\n    }\n\n\n    func testMicroProfile() {\n        var jwt = JWT(claims: MicroProfile(name: \"MP-JWT\"))\n        jwt.header.kid = \"abc-1234567890\"\n        jwt.header.typ = \"JWT\"\n        XCTAssertEqual(jwt.claims.name, \"MP-JWT\")\n        jwt.claims.iss = \"https://server.example.com\"\n        jwt.claims.aud = [\"clientID\"]\n        jwt.claims.iat = Date(timeIntervalSince1970: 1485949565.58463)\n        jwt.claims.exp = Date(timeIntervalSince1970: 2485949565.58463)\n        jwt.claims.upn = \"jdoe@server.example.com\"\n        jwt.claims.groups = [\"red-group\", \"green-group\", \"admin-group\", \"admin\"]\n            \n        // public key (MP-JWT needs to be signed)\n        if let signed = try? jwt.sign(using: .rs256(privateKey: rsaPrivateKey)) {\n            let ok = JWT<MicroProfile>.verify(signed, using: .rs256(publicKey: rsaPublicKey))\n            XCTAssertTrue(ok, \"Verification failed\")\n            \n            if let decoded = try? JWT<MicroProfile>(jwtString: signed) {\n                checkMicroProfile(jwt: decoded, algorithm: \"RS256\")\n                \n                XCTAssertEqual(decoded.validateClaims(), .success, \"Validation failed\")\n            }\n            else {\n                XCTFail(\"Failed to decode\")\n            }\n        }\n        else {\n            XCTFail(\"Failed to sign\")\n        }\n        \n        // certificate\n        if let signed = try? jwt.sign(using: .rs256(privateKey: certPrivateKey)) {\n            let ok = JWT<MicroProfile>.verify(signed, using: .rs256(certificate: certificate))\n            XCTAssertTrue(ok, \"Verification failed\")\n            \n            if let decoded = try? JWT<MicroProfile>(jwtString: signed) {\n                checkMicroProfile(jwt: decoded, algorithm: \"RS256\")\n                \n                XCTAssertEqual(decoded.validateClaims(), .success, \"Validation failed\")\n            }\n            else {\n                XCTFail(\"Failed to decode\")\n            }\n        }\n    }\n\n    // This test uses the rsaJWTEncoder to encode a JWT<TestClaims> as a JWT String.\n    // It then decodes the resulting JWT String using the JWT init from String.\n    // The test checks that the decoded JWT is the same as the JWT you started as well as the decoded rsaEncodedTestClaimJWT.\n    func testJWTEncoder() {\n        var jwt = JWT(claims: TestClaims())\n        jwt.claims.sub = \"1234567890\"\n        jwt.claims.name = \"John Doe\"\n        jwt.claims.admin = true\n        jwt.claims.iat = Date(timeIntervalSince1970: 1516239022)\n        do {\n            let jwtString = try rsaJWTEncoder.encodeToString(jwt)\n            let decodedJWTString = try JWT<TestClaims>(jwtString: jwtString)\n            let decodedTestClaimJWT = try JWT<TestClaims>(jwtString: rsaEncodedTestClaimJWT)\n            // Setting the alg field on the header since the decoded JWT will have had the alg header set in the signing process.\n            jwt.header.alg = \"RS256\"\n            XCTAssertEqual(jwt.claims, decodedJWTString.claims)\n            XCTAssertEqual(jwt.header, decodedJWTString.header)\n            XCTAssertEqual(jwt.claims, decodedTestClaimJWT.claims)\n            XCTAssertEqual(jwt.header, decodedTestClaimJWT.header)\n        } catch {\n            XCTFail(\"Failed to encode JTW: \\(error)\")\n        }\n    }\n\n    // This test uses the rsaJWTDecoder to decode the rsaEncodedTestClaimJWT as a JWT<TestClaims>.\n    // The test checks that the decoded JWT is the same as the JWT that was originally encoded.\n    func testJWTDecoder() {\n        var jwt = JWT(claims: TestClaims())\n        jwt.claims.sub = \"1234567890\"\n        jwt.claims.name = \"John Doe\"\n        jwt.claims.admin = true\n        jwt.claims.iat = Date(timeIntervalSince1970: 1516239022)\n        do {\n            let decodedJWT = try rsaJWTDecoder.decode(JWT<TestClaims>.self, fromString: rsaEncodedTestClaimJWT)\n            jwt.header.alg = \"RS256\"\n            XCTAssertEqual(decodedJWT.claims, jwt.claims)\n            XCTAssertEqual(decodedJWT.header, jwt.header)\n        } catch {\n            XCTFail(\"Failed to encode JTW: \\(error)\")\n        }\n    }\n\n    // This test encoded and then decoded a JWT<TestClaims> and checks you get the original JWT back with only the alg header changed.\n    func testJWTCoderCycle() {\n        var jwt = JWT(claims: TestClaims())\n        jwt.claims.sub = \"1234567890\"\n        jwt.claims.name = \"John Doe\"\n        jwt.claims.admin = true\n        do {\n            let jwtData = try rsaJWTEncoder.encode(jwt)\n            let decodedJWT = try rsaJWTDecoder.decode(JWT<TestClaims>.self, from: jwtData)\n            jwt.header.alg = \"RS256\"\n            XCTAssertEqual(decodedJWT.claims, jwt.claims)\n            XCTAssertEqual(decodedJWT.header, jwt.header)\n        } catch {\n            XCTFail(\"Failed to encode JTW: \\(error)\")\n        }\n    }\n\n    // This test uses the rsaJWTKidEncoder to encode a JWT<TestClaims> as a JWT String using the kid header to select the JWTSigner.\n    // It then decodes the resulting JWT String using the JWT init from String.\n    // The test checks that the decoded JWT is the same as the JWT you started as well as the decoded certificateEncodedTestClaimJWT.\n    func testJWTEncoderKeyID() {\n        var jwt = JWT(claims: TestClaims())\n        jwt.header.kid = \"0\"\n        jwt.claims.sub = \"1234567890\"\n        jwt.claims.name = \"John Doe\"\n        jwt.claims.admin = true\n        do {\n            let jwtString = try rsaJWTKidEncoder.encodeToString(jwt)\n            let decodedJWTString = try JWT<TestClaims>(jwtString: jwtString)\n            jwt.header.alg = \"RS256\"\n            XCTAssertEqual(jwt.claims, decodedJWTString.claims)\n            XCTAssertEqual(jwt.header, decodedJWTString.header)\n        } catch {\n            XCTFail(\"Failed to encode JTW: \\(error)\")\n        }\n    }\n\n    // This test uses the rsaJWTKidDecoder to decode the certificateEncodedTestClaimJWT as a JWT<TestClaims> using the kid header to select the JWTVerifier.\n    // The test checks that the decoded JWT is the same as the JWT that was originally encoded.\n    func testJWTDecoderKeyID() {\n        var jwt = JWT(claims: TestClaims())\n        jwt.header.kid = \"1\"\n        jwt.claims.sub = \"1234567890\"\n        jwt.claims.name = \"John Doe\"\n        jwt.claims.admin = true\n        do {\n            let decodedJWT = try rsaJWTKidDecoder.decode(JWT<TestClaims>.self, fromString: certificateEncodedTestClaimJWT)\n            jwt.header.alg = \"RS256\"\n            XCTAssertEqual(decodedJWT.claims, jwt.claims)\n            XCTAssertEqual(decodedJWT.header, jwt.header)\n        } catch {\n            XCTFail(\"Failed to encode JTW: \\(error)\")\n        }\n    }\n    \n    // This test encoded and then decoded a JWT<TestClaims> and checks you get the original JWT back with only the alg header changed.\n    // The kid header is used to select the rsa private and public keys for encoding/decoding.\n    func testJWTCoderCycleKeyID() {\n        var jwt = JWT(claims: TestClaims())\n        jwt.header.kid = \"1\"\n        jwt.claims.sub = \"1234567890\"\n        jwt.claims.name = \"John Doe\"\n        jwt.claims.admin = true\n        do {\n            let jwtData = try rsaJWTKidEncoder.encode(jwt)\n            let decodedJWT = try rsaJWTKidDecoder.decode(JWT<TestClaims>.self, from: jwtData)\n            jwt.header.alg = \"RS256\"\n            XCTAssertEqual(decodedJWT.claims, jwt.claims)\n            XCTAssertEqual(decodedJWT.header, jwt.header)\n        } catch {\n            XCTFail(\"Failed to encode JTW: \\(error)\")\n        }\n    }\n\n    // From jwt.io\n    func testJWT() {\n        let ok = JWT<TestClaims>.verify(rsaEncodedTestClaimJWT, using: .rs256(publicKey: rsaPublicKey))\n        XCTAssertTrue(ok, \"Verification failed\")\n        \n        if let decoded = try? JWT<TestClaims>(jwtString: rsaEncodedTestClaimJWT) {\n            XCTAssertEqual(decoded.header.alg, \"RS256\", \"Wrong .alg in decoded\")\n            XCTAssertEqual(decoded.header.typ, \"JWT\", \"Wrong .typ in decoded\")\n            \n            XCTAssertEqual(decoded.claims.sub, \"1234567890\", \"Wrong .sub in decoded\")\n            XCTAssertEqual(decoded.claims.name, \"John Doe\", \"Wrong .name in decoded\")\n            XCTAssertEqual(decoded.claims.admin, true, \"Wrong .admin in decoded\")\n            XCTAssertEqual(decoded.claims.iat, Date(timeIntervalSince1970: 1516239022), \"Wrong .iat in decoded\")\n            \n            \n            XCTAssertEqual(decoded.validateClaims(), .success, \"Validation failed\")\n        }\n        else {\n            XCTFail(\"Failed to decode\")\n        }\n    }\n    \n    // From jwt.io\n    func testJWTRSAPSS() {\n        if #available(OSX 10.13, *) {\n            let ok = JWT<TestClaims>.verify(rsaPSSEncodedTestClaimJWT, using: .ps256(publicKey: rsaPublicKey))\n            XCTAssertTrue(ok, \"Verification failed\")\n            \n            if let decoded = try? JWT<TestClaims>(jwtString: rsaPSSEncodedTestClaimJWT) {\n                XCTAssertEqual(decoded.header.alg, \"PS256\", \"Wrong .alg in decoded\")\n                XCTAssertEqual(decoded.header.typ, \"JWT\", \"Wrong .typ in decoded\")\n                \n                XCTAssertEqual(decoded.claims.sub, \"1234567890\", \"Wrong .sub in decoded\")\n                XCTAssertEqual(decoded.claims.name, \"John Doe\", \"Wrong .name in decoded\")\n                XCTAssertEqual(decoded.claims.admin, true, \"Wrong .admin in decoded\")\n                XCTAssertEqual(decoded.claims.iat, Date(timeIntervalSince1970: 1516239022), \"Wrong .iat in decoded\")\n                \n                \n                XCTAssertEqual(decoded.validateClaims(), .success, \"Validation failed\")\n            }\n            else {\n                XCTFail(\"Failed to decode\")\n            }\n        }\n    }\n    \n    func testJWTUsingHMAC() {\n        guard let hmacData = \"Super Secret Key\".data(using: .utf8) else {\n            return XCTFail(\"Failed to convert hmacKey to Data\")\n        }\n        let ok = JWT<TestClaims>.verify(hmacEncodedTestClaimJWT, using: .hs256(key: hmacData))\n        XCTAssertTrue(ok, \"Verification failed\")\n        \n        if let decoded = try? JWT<TestClaims>(jwtString: hmacEncodedTestClaimJWT) {\n            XCTAssertEqual(decoded.header.alg, \"HS256\", \"Wrong .alg in decoded\")\n            XCTAssertEqual(decoded.header.typ, \"JWT\", \"Wrong .typ in decoded\")\n            \n            XCTAssertEqual(decoded.claims.sub, \"1234567890\", \"Wrong .sub in decoded\")\n            XCTAssertEqual(decoded.claims.name, \"John Doe\", \"Wrong .name in decoded\")\n            XCTAssertEqual(decoded.claims.admin, true, \"Wrong .admin in decoded\")\n            \n            XCTAssertEqual(decoded.validateClaims(), .success, \"Validation failed\")\n        }\n        else {\n            XCTFail(\"Failed to decode\")\n        }\n    }\n    \n    // Test using a JWT generated from jwt.io using es256 with `ecdsaPrivateKey` for interoperability.\n    func testJWTUsingECDSA() {\n        if #available(OSX 10.13, iOS 11, tvOS 11.0, *) {\n            let ok = JWT<TestClaims>.verify(ecdsaEncodedTestClaimJWT, using: .es256(publicKey: ecdsaPublicKey))\n            XCTAssertTrue(ok, \"Verification failed\")\n            \n            if let decoded = try? JWT<TestClaims>(jwtString: ecdsaEncodedTestClaimJWT) {\n                XCTAssertEqual(decoded.header.alg, \"ES256\", \"Wrong .alg in decoded\")\n                XCTAssertEqual(decoded.header.typ, \"JWT\", \"Wrong .typ in decoded\")\n                \n                XCTAssertEqual(decoded.claims.sub, \"1234567890\", \"Wrong .sub in decoded\")\n                XCTAssertEqual(decoded.claims.name, \"John Doe\", \"Wrong .name in decoded\")\n                XCTAssertEqual(decoded.claims.admin, true, \"Wrong .admin in decoded\")\n                XCTAssertEqual(decoded.claims.iat, Date(timeIntervalSince1970: 1516239022), \"Wrong .iat in decoded\")\n                \n                \n                XCTAssertEqual(decoded.validateClaims(), .success, \"Validation failed\")\n            }\n            else {\n                XCTFail(\"Failed to decode\")\n            }\n        }\n    }\n    \n    func testValidateClaims() {\n        var jwt = JWT(claims: TestClaims(name:\"Kitura\"))\n        jwt.claims.exp = Date()\n        XCTAssertEqual(jwt.validateClaims(), .expired, \"Validation failed\")\n        jwt.claims.exp = nil\n        jwt.claims.iat = Date(timeIntervalSinceNow: 10)\n        XCTAssertEqual(jwt.validateClaims(), .issuedAt, \"Validation failed\")\n        jwt.claims.iat = nil\n        jwt.claims.nbf = Date(timeIntervalSinceNow: 10)\n        XCTAssertEqual(jwt.validateClaims(), .notBefore, \"Validation failed\")\n    }\n    \n    func testValidateClaimsLeeway() {\n        var jwt = JWT(claims: TestClaims(name:\"Kitura\"))\n        jwt.claims.exp = Date()\n        XCTAssertEqual(jwt.validateClaims(leeway: 20), .success, \"Validation failed\")\n        jwt.claims.exp = nil\n        jwt.claims.iat = Date(timeIntervalSinceNow: 10)\n        XCTAssertEqual(jwt.validateClaims(leeway: 20), .success, \"Validation failed\")\n        jwt.claims.iat = nil\n        jwt.claims.nbf = Date(timeIntervalSinceNow: 10)\n        XCTAssertEqual(jwt.validateClaims(leeway: 20), .success, \"Validation failed\")\n    }\n    \n    func testErrorPattenMatching() {\n        do {\n            let _ = try JWT<TestClaims>(jwtString: \"InvalidString\",  verifier: .rs256(publicKey: rsaPublicKey))\n        } catch JWTError.invalidJWTString {\n            // Caught correct error\n        } catch {\n            XCTFail(\"Incorrect error thrown: \\(error)\")\n        }\n    }\n    \n    func testTypeErasedErrorLocalizedDescription() {\n        let error = JWTError.invalidJWTString\n        XCTAssertEqual((error as Error).localizedDescription, error.errorDescription)\n    }\n}\n\nfunc read(fileName: String) -> Data {\n    do {\n        var pathToTests = #file\n        if pathToTests.hasSuffix(\"TestJWT.swift\") {\n            pathToTests = pathToTests.replacingOccurrences(of: \"TestJWT.swift\", with: \"\")\n        }\n        let fileData = try Data(contentsOf: URL(fileURLWithPath: \"\\(pathToTests)\\(fileName)\"))\n        XCTAssertNotNil(fileData, \"Failed to read in the \\(fileName) file\")\n        return fileData\n    } catch {\n        XCTFail(\"Error in \\(fileName).\")\n        exit(1)\n    }\n}\n"
  },
  {
    "path": "Tests/SwiftJWTTests/cert_private_key",
    "content": "-----BEGIN RSA PRIVATE KEY-----\nMIIEowIBAAKCAQEAnBvOjQhLaidHb8O9Z193tE4PrsOgjdGGQt1Bm8xPNm/cYIOE\nY7vVFCHxG/UV6D3QBhD66XGons0/NWLYhJJwXHwHKdJbhoDEmU93SP8Rzgl/XxpE\n0nbhCjaMcV+DgGeNaAAZy6yHwKyBNWt7WOtW/5K8Z3Y27PWNJ/vzA2PHrP/DtPjz\njWkPn2J5LzLrg/Y5V2ELJ6RU1dz6Pgpdtx19NgIgms4n5+yohq7HIaFKQ5K83iiY\nx2RslPDG5thJ2LneGWc+PnYtqFDQBQqBM9bvlMtfJ7OhNdlexWbaLsPOMCW+eq8c\n/8aQXnRFg2ttsPNc4qBIXXdUCjj0wXLu3LclCQIDAQABAoIBAB+XCO9FNG2g0TXu\nuE9I5GJaQZYuBDluouq492PdrlHnxQLK2mmMQww16iKsL+i1SXlQylWfKG4qPpZB\nEGuTbqVoe9KcvOS0/hPAHvVomGPHTD0khbTJVbTJYRY4K9Y6HkVjb9TlbvswbV0w\nCN/vj8VcHkAZjffZoNzsgTq4YFnDfx+f9BSHo07KltZ/N4rR/7K1CPJ7hrDxiozb\nEI6Ul1GXfPA2BmfEa/WO9vOSbgHQmZYeWxqy1IMCJwnCrYE9o79rijinHsx3JvHu\nJNpP0zb7WZjIg//Gfsc6m9LRwwolJ1yKWDoKIkpwpe7YONmYRSTOj6G7zrQl0YTw\nSHZsqLkCgYEAycySFRL1Wo309szlY5a7+yBZ2eE9Kn2zAZeXzcMbYAGEx7wQfvTn\nLQSnjjpPOPqqjbq5E5zaDBrNe920fnuPHjfVw0t/Pr5xQcwGPj5HP5cY3WdmbJha\nA8UHYjXUPjPX5qAvGxBB4lW7a60idBQwruuGiyEleAxgEt3ZBM/JNTsCgYEAxgmf\nDBoYcc6j86J3Q43DK6GvD3cJwOaeHAtzHTiqybvxxjWqCTMNv+FoOw4h0UU6RfDm\nmQc3gPynXX3GkuJWZPsZ2HNOMdOjCCjvcAEXb+1bFyfrXIddy7MEagIELln1tsYL\nUuLZLuRCZhq7QZ35aMzVAtZoyH8Dvfhp+fs52osCgYAQ099GpJsTHw1TW0ixoksw\nqMT1V0P7fBnmQxbkkKWCvv2sjjEt9QwmA+JZCOG8VaLNSMnQKd9A7Sc/cgBwH6uS\nkINh0rTcrZLSMso+fIECe34WUF4JJjczY0W3WdfGDBqv36Gt9xAXaKDFXN2noltg\n6sEAbxYpyZZlXFyReyZDKwKBgGyPXaaur3PDyVCHYUWg8rp6WZLquGgMg+Pvytzb\n8ZPA+ZqkVF/Sotjq4c5twtALWRR6KI7+y8hjuAOiLTbb6GxW0iY7n0PlNlwExKzr\njEOJJAQfmAATHLHLosHR9STLn8zf59k6DcCM1HFQehJQXSa8EpEJpEs0hYKgKMgm\nleJdAoGBAMTlzIsc0UYJDOdWbpEBvg11Exrk2/foRa5GlMumgeN+z07YxfRi2KnS\nf6DRQYsuVCpTQatiH/f/cVz+IXbLmJoEYXvDiwG2WRNSplCYCWnEwfKvpNOAQDim\ndcPgEZm6Ox2TAQOCiYMdArzykck8JwE+L+PM4yxEgITD1rpRygPC\n-----END RSA PRIVATE KEY-----\n"
  },
  {
    "path": "Tests/SwiftJWTTests/certificate",
    "content": "-----BEGIN CERTIFICATE-----\nMIIDbzCCAlegAwIBAgIJAKiFtGmpl0YIMA0GCSqGSIb3DQEBCwUAME4xCzAJBgNV\nBAYTAklMMRMwEQYDVQQIDApTb21lLVN0YXRlMQ4wDAYDVQQHDAVIYWlmYTEMMAoG\nA1UECgwDSUJNMQwwCgYDVQQLDANJQk0wHhcNMTcwMTMwMTI1MTUzWhcNMTgwMTMw\nMTI1MTUzWjBOMQswCQYDVQQGEwJJTDETMBEGA1UECAwKU29tZS1TdGF0ZTEOMAwG\nA1UEBwwFSGFpZmExDDAKBgNVBAoMA0lCTTEMMAoGA1UECwwDSUJNMIIBIjANBgkq\nhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAnBvOjQhLaidHb8O9Z193tE4PrsOgjdGG\nQt1Bm8xPNm/cYIOEY7vVFCHxG/UV6D3QBhD66XGons0/NWLYhJJwXHwHKdJbhoDE\nmU93SP8Rzgl/XxpE0nbhCjaMcV+DgGeNaAAZy6yHwKyBNWt7WOtW/5K8Z3Y27PWN\nJ/vzA2PHrP/DtPjzjWkPn2J5LzLrg/Y5V2ELJ6RU1dz6Pgpdtx19NgIgms4n5+yo\nhq7HIaFKQ5K83iiYx2RslPDG5thJ2LneGWc+PnYtqFDQBQqBM9bvlMtfJ7OhNdle\nxWbaLsPOMCW+eq8c/8aQXnRFg2ttsPNc4qBIXXdUCjj0wXLu3LclCQIDAQABo1Aw\nTjAdBgNVHQ4EFgQUiYPVudnYqmx97CjCmZGul9xfnQkwHwYDVR0jBBgwFoAUiYPV\nudnYqmx97CjCmZGul9xfnQkwDAYDVR0TBAUwAwEB/zANBgkqhkiG9w0BAQsFAAOC\nAQEAjS5ZV5QpIgSWEtyD4YkXZ0Sa983lTZavLAmlWYTfoERTX8b4bH3Fk3+wRTlT\n7EiTOvndQ+u4BKLNMnTAXb98Y4bnHGorZ5naCPHzLKgb8HrGnCADzTDgot/xmCDN\nmx3rZkdPBDiT+6XNR1ZzuDSmSXHdfMMBoXb7rprIuf6yZ+gOtVmUpuBVHBTk0zP9\nQQAAh7JsD+6t+oOMR0KstKTF0jKEkVK/lCGsG3x6ePBGvT3LyO9Ego9wpdFm2PnO\n/flZnf4mEsauRDocKrAXIXSA/IwtwStACGvCHrpWNJipMcVHxi2bqgS3vrSbMm+R\n8yY0/PDT7D1w9n1q+YPYZ7LzdQ==\n-----END CERTIFICATE-----\n"
  },
  {
    "path": "Tests/SwiftJWTTests/ec384_private_key",
    "content": "-----BEGIN EC PRIVATE KEY-----\nMIGkAgEBBDBQ6YAp5oWCF3EzJdQupQu2dD6BVf7i5QDb9wMoFicaKlnXzH9weMDz\nVM/W4pwLAF+gBwYFK4EEACKhZANiAAQGqeXUjuGMqj0w41MLjTFDT7oUoiFLM/Mq\n8xVnMX3IJSYDUc7eWIsJHS9VUAtNFt1dHXSxRnhSBv0ct0VxITCv8W42LUutbUg+\nEPzehH6ApDeKJSQxwjnwhgr0J06ThCA=\n-----END EC PRIVATE KEY-----\n"
  },
  {
    "path": "Tests/SwiftJWTTests/ec384_public_key",
    "content": "-----BEGIN PUBLIC KEY-----\nMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAEBqnl1I7hjKo9MONTC40xQ0+6FKIhSzPz\nKvMVZzF9yCUmA1HO3liLCR0vVVALTRbdXR10sUZ4Ugb9HLdFcSEwr/FuNi1LrW1I\nPhD83oR+gKQ3iiUkMcI58IYK9CdOk4Qg\n-----END PUBLIC KEY-----\n"
  },
  {
    "path": "Tests/SwiftJWTTests/ec512_private_key",
    "content": "-----BEGIN EC PRIVATE KEY-----\nMIHcAgEBBEIBRS6x89l3JHzSST5kKhubFPaZweNeZ02SCbmdSh5SVrK9uB9/hjCF\nqC1vd6kWLPV6mONJEVhv5ZChjq02hb8xZRKgBwYFK4EEACOhgYkDgYYABAHyyYaq\nSAMF9Olbt3zyx2gL5123JmJPOXuJlxlvA48jU8K85aBYSJ/ZNrjOKtqHdDIASUBs\nHMlLaH/te3VQQ6O2sQHvFC2oh9/1wMfDchP7ImBwktdB+x1/lodGyMLzGV/uxtsj\nhwFbX0t7mzDLAm0USboXyclnQ65y8C1UEVOBK30WMw==\n-----END EC PRIVATE KEY-----\n"
  },
  {
    "path": "Tests/SwiftJWTTests/ec512_public_key",
    "content": "-----BEGIN PUBLIC KEY-----\nMIGbMBAGByqGSM49AgEGBSuBBAAjA4GGAAQB8smGqkgDBfTpW7d88sdoC+ddtyZi\nTzl7iZcZbwOPI1PCvOWgWEif2Ta4zirah3QyAElAbBzJS2h/7Xt1UEOjtrEB7xQt\nqIff9cDHw3IT+yJgcJLXQfsdf5aHRsjC8xlf7sbbI4cBW19Le5swywJtFEm6F8nJ\nZ0OucvAtVBFTgSt9FjM=\n-----END PUBLIC KEY-----\n"
  },
  {
    "path": "Tests/SwiftJWTTests/ecdsa_private_key",
    "content": "-----BEGIN EC PRIVATE KEY-----\nMHcCAQEEIJX+87WJ7Gh19sohyZnhxZeXYNOcuGv4Q+8MLge4UkaZoAoGCCqGSM49\nAwEHoUQDQgAEikc5m6C2xtDWeeAeT18WElO37zvFOz8p4kAlhvgIHN23XIClNESg\nKVmLgSSq2asqiwdrU5YHbcHFkgdABM1SPA==\n-----END EC PRIVATE KEY-----\n"
  },
  {
    "path": "Tests/SwiftJWTTests/ecdsa_public_key",
    "content": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEikc5m6C2xtDWeeAeT18WElO37zvF\nOz8p4kAlhvgIHN23XIClNESgKVmLgSSq2asqiwdrU5YHbcHFkgdABM1SPA==\n-----END PUBLIC KEY-----\n"
  },
  {
    "path": "Tests/SwiftJWTTests/rsa_private_key",
    "content": "-----BEGIN RSA PRIVATE KEY-----\nMIIEpgIBAAKCAQEArY09Owko87BYqQKBYeUHjq5mlvL23cPPxmLKzEoo16FD3ud30\nVsuabM6FGds6YrULfBQnJrAkuLHrZtFVDQPNKsZ0Ui6721c5EEw0GDJ+NXgbej+g6\ngAsJ7xedmLPLIHO40QSV64mYjTh/73TZzF/dXJaGWSAwan+fsRls0Ltn2xdw8htgA\nIKzH0zrEMBVFpW7RroTx5qdZAQVNB7b5S/iucBDy5pvMAre3tJ30mhpt0tZtLOL7t\npphhjf4FRnHS/VHb8wN6mrUu4r+7v2ZpfzJwQbkDBjxzyCl0iDGQoQo0dMUIuE0yu\ni9ur9+9L5gEREuDPMRXNPIwh/dgMEWo7QIDAQABAoIBAQCb0SsgTeEOqU1wsGcpVU\n+rsrk43Xr3ME7jdt9M+2gf8RHWl0rkFFFfZSLIHvOR2qsVc6VsdSRgvGs6WyWrq/H\na/6N2Wy46uJ2l8UG6VKwBVUTiaUXZPoUgDhQPqllwbQZBWS0+MmTatBX3C9tNO2wn\nskHaERc+0EMQFXJ9Sisx87yA8RlhhuEaNXqxaQzTohHSvrpoHMqkjx0RsFD9py414\nKlYRKCiMyI8xkWa9FkvyYB+wwmmQwRcoxBgucpyuOWunGdqF/Hxs8b6d9qWJ66d2e\nN1F9JCSS7cAH1CIRTxkZTH4qrxE5iMl8LuB3Xe1Qw7s60BPmmuGB4HmLKtwQShAoG\nBAOFr5MEmhyuY1EdmCaxlEYLakBu4xux+WBXQ533VgHrSO6Hlk1b36AEzV0hIBWEW\n8BViSQv0SOyDGPG4EhfLe6KPA2dz7ZwTl+WrZtalDYJGRytSCyI9/cNh6s1adG8zO\nMW+Na7sq5lqXMCGnHeN6rb/zO6aiModQBHEIVUicTcHAoGBAMUYFs5T88kuD3swLo\nitToe0wdKlN4ytPi9O+8hZknn2wiP81rvunhrNWwK0ixIYrUkVR/o9sDBoNTVGZ+2\n0Ts3cmTFTr0/9L+eFzj1YbogtXHQaaDLhiLeMAynmSe0ItlxCafTgNUZVN3JN1XD5\nByiCRqTVAAUM1BK5J/eao89rAoGBAL05+u8AzpsUUa4Vw60Jsmdr3WjH9YR0krDNi\nmWhIZb4f8JpmwN4WzMWzAALJSjZPnRU6wiz6btQWVIfuGBtGb3d23euYxmPgQT0mw\nE30F05bWi6GEqIS0sGGTqE4hSupMup3hqW5X2FQZMD7LiXUx6HIJpy8rznTO8c+vY\niUXNlAoGBAKRyMe0bPOfZp48YJ2tgdoph9eokcdHNZnogg5Gpsr5Sda+DMUOCl6Yz\nO0FplDOYJVU6DWEsgUoSWHrH8MTzUWEQMz1l3nt1+7dH/ElQ9IBooKA6vD/fz6udh\nbI68+lzAHy/6RoozCqPxYB4kqL9FMzmzbyP/8E27+djV4aPHyhbAoGBAKAKeLgkmn\nslJA1JlN28MfSdPhxe83wowB/w9mjpl+IDwY4X27sd9M//uWCKm/i5Sp88JJtNrgs\n4Uu0GZ1PGb1/3A0Kj0ZZ/2u8f5OpsZl2x05w8inkqXgWsXd5XOVfAXoDiLoouMlkP\nsWBKUgg4LGfIA7Jnzi38sonojtb2Iz+y\n-----END RSA PRIVATE KEY-----\n"
  },
  {
    "path": "Tests/SwiftJWTTests/rsa_public_key",
    "content": "-----BEGIN RSA PUBLIC KEY-----\nMIIBCgKCAQEArY09Owko87BYqQKBYeUHjq5mlvL23cPPxmLKzEoo16FD3ud30Vsua\nbM6FGds6YrULfBQnJrAkuLHrZtFVDQPNKsZ0Ui6721c5EEw0GDJ+NXgbej+g6gAsJ\n7xedmLPLIHO40QSV64mYjTh/73TZzF/dXJaGWSAwan+fsRls0Ltn2xdw8htgAIKzH\n0zrEMBVFpW7RroTx5qdZAQVNB7b5S/iucBDy5pvMAre3tJ30mhpt0tZtLOL7tpphh\njf4FRnHS/VHb8wN6mrUu4r+7v2ZpfzJwQbkDBjxzyCl0iDGQoQo0dMUIuE0yui9ur\n9+9L5gEREuDPMRXNPIwh/dgMEWo7QIDAQAB\n-----END RSA PUBLIC KEY-----\n"
  },
  {
    "path": "docs/Classes/ClaimsMicroProfile.html",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n  <head>\n    <title>ClaimsMicroProfile Class Reference</title>\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"../css/jazzy.css\" />\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"../css/highlight.css\" />\n    <meta charset=\"utf-8\">\n    <script src=\"../js/jquery.min.js\" defer></script>\n    <script src=\"../js/jazzy.js\" defer></script>\n    \n    <script src=\"../js/lunr.min.js\" defer></script>\n    <script src=\"../js/typeahead.jquery.js\" defer></script>\n    <script src=\"../js/jazzy.search.js\" defer></script>\n  </head>\n  <body>\n\n    <a name=\"//apple_ref/swift/Class/ClaimsMicroProfile\" class=\"dashAnchor\"></a>\n\n    <a title=\"ClaimsMicroProfile Class Reference\"></a>\n\n    <header class=\"header\">\n      <p class=\"header-col header-col--primary\">\n        <a class=\"header-link\" href=\"../index.html\">\n          SwiftJWT 3.6.200 Docs\n        </a>\n         (100% documented)\n      </p>\n    \n      <p class=\"header-col--secondary\">\n        <form role=\"search\" action=\"../search.json\">\n          <input type=\"text\" placeholder=\"Search documentation\" data-typeahead>\n        </form>\n      </p>\n    \n        <p class=\"header-col header-col--secondary\">\n          <a class=\"header-link\" href=\"https://github.com/Kitura/Swift-JWT/\">\n            <img class=\"header-icon\" src=\"../img/gh.png\"/>\n            View on GitHub\n          </a>\n        </p>\n    \n    </header>\n\n    <p class=\"breadcrumbs\">\n      <a class=\"breadcrumb\" href=\"../index.html\">SwiftJWT Reference</a>\n      <img class=\"carat\" src=\"../img/carat.png\" />\n      ClaimsMicroProfile Class Reference\n    </p>\n\n    <div class=\"content-wrapper\">\n      <nav class=\"navigation\">\n        <ul class=\"nav-groups\">\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Classes.html\">Classes</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ClaimsMicroProfile.html\">ClaimsMicroProfile</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ClaimsOpenID.html\">ClaimsOpenID</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ClaimsStandardJWT.html\">ClaimsStandardJWT</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/JWTDecoder.html\">JWTDecoder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/JWTEncoder.html\">JWTEncoder</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Protocols.html\">Protocols</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/Claims.html\">Claims</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Structs.html\">Structures</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/AddressClaim.html\">AddressClaim</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Header.html\">Header</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/JWT.html\">JWT</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/JWTError.html\">JWTError</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/JWTSigner.html\">JWTSigner</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/JWTVerifier.html\">JWTVerifier</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/ValidateClaimsResult.html\">ValidateClaimsResult</a>\n              </li>\n            </ul>\n          </li>\n        </ul>\n      </nav>\n      <article class=\"main-content\">\n\n        <section class=\"section\">\n          <div class=\"section-content top-matter\">\n            <h1>ClaimsMicroProfile</h1>\n              <div class=\"declaration\">\n                <div class=\"language\">\n                  \n                  <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">class</span> <span class=\"kt\">ClaimsMicroProfile</span> <span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Protocols/Claims.html\">Claims</a></span></code></pre>\n\n                </div>\n              </div>\n            <p>A class representing the MicroProfile claims as listed in <a href=\"http://microprofile.io/project/eclipse/microprofile-jwt-auth/spec/src/main/asciidoc/interoperability.asciidoc\">MicroProfile specs</a>.</p>\n\n          </div>\n        </section>\n\n        <section class=\"section\">\n          <div class=\"section-content\">\n            <div class=\"task-group\">\n              <ul class=\"item-container\">\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT18ClaimsMicroProfileC3iss3sub3exp3iat3jti3upn6groupsACSS_SS10Foundation4DateVAMS2SSaySSGtcfc\"></a>\n                    <a name=\"//apple_ref/swift/Method/init(iss:sub:exp:iat:jti:upn:groups:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT18ClaimsMicroProfileC3iss3sub3exp3iat3jti3upn6groupsACSS_SS10Foundation4DateVAMS2SSaySSGtcfc\">init(iss:<wbr>sub:<wbr>exp:<wbr>iat:<wbr>jti:<wbr>upn:<wbr>groups:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Initialize a <code>ClaimsMicroProfile</code></p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"nf\">init</span><span class=\"p\">(</span>\n    <span class=\"nv\">iss</span><span class=\"p\">:</span> <span class=\"kt\">String</span><span class=\"p\">,</span>\n    <span class=\"nv\">sub</span><span class=\"p\">:</span> <span class=\"kt\">String</span><span class=\"p\">,</span>\n    <span class=\"nv\">exp</span><span class=\"p\">:</span> <span class=\"kt\">Date</span><span class=\"p\">,</span>\n    <span class=\"nv\">iat</span><span class=\"p\">:</span> <span class=\"kt\">Date</span><span class=\"p\">,</span>\n    <span class=\"nv\">jti</span><span class=\"p\">:</span> <span class=\"kt\">String</span><span class=\"p\">,</span>\n    <span class=\"nv\">upn</span><span class=\"p\">:</span> <span class=\"kt\">String</span><span class=\"p\">,</span>\n    <span class=\"nv\">groups</span><span class=\"p\">:</span> <span class=\"p\">[</span><span class=\"kt\">String</span><span class=\"p\">]</span>\n<span class=\"p\">)</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT18ClaimsMicroProfileC3issSSvp\"></a>\n                    <a name=\"//apple_ref/swift/Property/iss\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT18ClaimsMicroProfileC3issSSvp\">iss</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>The MP-JWT issuer. <a href=\"https://tools.ietf.org/html/rfc7519#section-4.1.1\">RFC7519, Section 4.1.1</a></p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"k\">var</span> <span class=\"nv\">iss</span><span class=\"p\">:</span> <span class=\"kt\">String</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT18ClaimsMicroProfileC3subSSvp\"></a>\n                    <a name=\"//apple_ref/swift/Property/sub\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT18ClaimsMicroProfileC3subSSvp\">sub</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Identifies the principal that is the subject of the JWT.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"k\">var</span> <span class=\"nv\">sub</span><span class=\"p\">:</span> <span class=\"kt\">String</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT18ClaimsMicroProfileC3exp10Foundation4DateVvp\"></a>\n                    <a name=\"//apple_ref/swift/Property/exp\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT18ClaimsMicroProfileC3exp10Foundation4DateVvp\">exp</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Identifies the expiration time on or after which the JWT MUST NOT be accepted for processing.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"k\">var</span> <span class=\"nv\">exp</span><span class=\"p\">:</span> <span class=\"kt\">Date</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT18ClaimsMicroProfileC3iat10Foundation4DateVvp\"></a>\n                    <a name=\"//apple_ref/swift/Property/iat\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT18ClaimsMicroProfileC3iat10Foundation4DateVvp\">iat</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Identifies the time at which the JWT was issued.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"k\">var</span> <span class=\"nv\">iat</span><span class=\"p\">:</span> <span class=\"kt\">Date</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT18ClaimsMicroProfileC3jtiSSvp\"></a>\n                    <a name=\"//apple_ref/swift/Property/jti\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT18ClaimsMicroProfileC3jtiSSvp\">jti</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>The &ldquo;jti&rdquo; (JWT ID) claim provides a unique identifier for the JWT.\nThe identifier value MUST be assigned in a manner that ensures that\nthere is a negligible probability that the same value will be\naccidentally assigned to a different data object.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"k\">var</span> <span class=\"nv\">jti</span><span class=\"p\">:</span> <span class=\"kt\">String</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT18ClaimsMicroProfileC3upnSSSgvp\"></a>\n                    <a name=\"//apple_ref/swift/Property/upn\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT18ClaimsMicroProfileC3upnSSSgvp\">upn</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>This MP-JWT custom claim is the user principal name in the java.security.Principal interface, and is the caller principal name in javax.security.enterprise.identitystore.IdentityStore. If this claim is missing, fallback to the &ldquo;preferred_username&rdquo;, should be attempted, and if that claim is missing, fallback to the &ldquo;sub&rdquo; claim should be used.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"k\">var</span> <span class=\"nv\">upn</span><span class=\"p\">:</span> <span class=\"kt\">String</span><span class=\"p\">?</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT18ClaimsMicroProfileC18preferred_usernameSSSgvp\"></a>\n                    <a name=\"//apple_ref/swift/Property/preferred_username\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT18ClaimsMicroProfileC18preferred_usernameSSSgvp\">preferred_username</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Shorthand name by which the End-User wishes to be referred to at the RP, such as janedoe or j.doe. This value MAY be any valid JSON string including special characters such as @, /, or whitespace.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"k\">var</span> <span class=\"nv\">preferred_username</span><span class=\"p\">:</span> <span class=\"kt\">String</span><span class=\"p\">?</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT18ClaimsMicroProfileC6groupsSaySSGvp\"></a>\n                    <a name=\"//apple_ref/swift/Property/groups\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT18ClaimsMicroProfileC6groupsSaySSGvp\">groups</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>This MP-JWT custom claim is the list of group names that have been assigned to the principal of the MP-JWT. This typically will required a mapping at the application container level to application deployment roles, but a one-to-one between group names and application role names is required to be performed in addition to any other mapping.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"k\">var</span> <span class=\"nv\">groups</span><span class=\"p\">:</span> <span class=\"p\">[</span><span class=\"kt\">String</span><span class=\"p\">]</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n              </ul>\n            </div>\n          </div>\n        </section>\n\n      </article>\n    </div>\n    <section class=\"footer\">\n      <p>&copy; 2020 <a class=\"link\" href=\"https://github.com/Kitura/Swift-JWT\" target=\"_blank\" rel=\"external\">IBM &amp; Kitura Project Contributors</a>. All rights reserved. (Last updated: 2020-11-25)</p>\n      <p>Generated by <a class=\"link\" href=\"https://github.com/realm/jazzy\" target=\"_blank\" rel=\"external\">jazzy ♪♫ v0.13.6</a>, a <a class=\"link\" href=\"https://realm.io\" target=\"_blank\" rel=\"external\">Realm</a> project.</p>\n    </section>\n  </body>\n</div>\n</html>\n"
  },
  {
    "path": "docs/Classes/ClaimsOpenID.html",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n  <head>\n    <title>ClaimsOpenID Class Reference</title>\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"../css/jazzy.css\" />\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"../css/highlight.css\" />\n    <meta charset=\"utf-8\">\n    <script src=\"../js/jquery.min.js\" defer></script>\n    <script src=\"../js/jazzy.js\" defer></script>\n    \n    <script src=\"../js/lunr.min.js\" defer></script>\n    <script src=\"../js/typeahead.jquery.js\" defer></script>\n    <script src=\"../js/jazzy.search.js\" defer></script>\n  </head>\n  <body>\n\n    <a name=\"//apple_ref/swift/Class/ClaimsOpenID\" class=\"dashAnchor\"></a>\n\n    <a title=\"ClaimsOpenID Class Reference\"></a>\n\n    <header class=\"header\">\n      <p class=\"header-col header-col--primary\">\n        <a class=\"header-link\" href=\"../index.html\">\n          SwiftJWT 3.6.200 Docs\n        </a>\n         (100% documented)\n      </p>\n    \n      <p class=\"header-col--secondary\">\n        <form role=\"search\" action=\"../search.json\">\n          <input type=\"text\" placeholder=\"Search documentation\" data-typeahead>\n        </form>\n      </p>\n    \n        <p class=\"header-col header-col--secondary\">\n          <a class=\"header-link\" href=\"https://github.com/Kitura/Swift-JWT/\">\n            <img class=\"header-icon\" src=\"../img/gh.png\"/>\n            View on GitHub\n          </a>\n        </p>\n    \n    </header>\n\n    <p class=\"breadcrumbs\">\n      <a class=\"breadcrumb\" href=\"../index.html\">SwiftJWT Reference</a>\n      <img class=\"carat\" src=\"../img/carat.png\" />\n      ClaimsOpenID Class Reference\n    </p>\n\n    <div class=\"content-wrapper\">\n      <nav class=\"navigation\">\n        <ul class=\"nav-groups\">\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Classes.html\">Classes</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ClaimsMicroProfile.html\">ClaimsMicroProfile</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ClaimsOpenID.html\">ClaimsOpenID</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ClaimsStandardJWT.html\">ClaimsStandardJWT</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/JWTDecoder.html\">JWTDecoder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/JWTEncoder.html\">JWTEncoder</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Protocols.html\">Protocols</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/Claims.html\">Claims</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Structs.html\">Structures</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/AddressClaim.html\">AddressClaim</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Header.html\">Header</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/JWT.html\">JWT</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/JWTError.html\">JWTError</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/JWTSigner.html\">JWTSigner</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/JWTVerifier.html\">JWTVerifier</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/ValidateClaimsResult.html\">ValidateClaimsResult</a>\n              </li>\n            </ul>\n          </li>\n        </ul>\n      </nav>\n      <article class=\"main-content\">\n\n        <section class=\"section\">\n          <div class=\"section-content top-matter\">\n            <h1>ClaimsOpenID</h1>\n              <div class=\"declaration\">\n                <div class=\"language\">\n                  \n                  <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">class</span> <span class=\"kt\">ClaimsOpenID</span> <span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Protocols/Claims.html\">Claims</a></span></code></pre>\n\n                </div>\n              </div>\n            <p>A class representing OpenID related claims as decsribed in <a href=\"http://openid.net/specs/openid-connect-core-1_0.html\">OpenID specs</a>.</p>\n\n          </div>\n        </section>\n\n        <section class=\"section\">\n          <div class=\"section-content\">\n            <div class=\"task-group\">\n              <ul class=\"item-container\">\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT12ClaimsOpenIDC3iss3sub3aud3exp3iat9auth_time5nonce3acr3amr3azp4name06given_Q007family_Q007middle_Q08nickname18preferred_username7profile7picture7website5email14email_verified6gender9birthdate8zoneinfo6locale12phone_number21phone_number_verified7address10updated_atACSS_SSSaySSG10Foundation4DateVA8_A8_SgSSSgA10_A5_SgA10_A10_A10_A10_A10_A10_A10_A10_A10_A10_A10_SbSgA10_A10_A10_A10_A10_A12_AA12AddressClaimVSgA9_tcfc\"></a>\n                    <a name=\"//apple_ref/swift/Method/init(iss:sub:aud:exp:iat:auth_time:nonce:acr:amr:azp:name:given_name:family_name:middle_name:nickname:preferred_username:profile:picture:website:email:email_verified:gender:birthdate:zoneinfo:locale:phone_number:phone_number_verified:address:updated_at:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT12ClaimsOpenIDC3iss3sub3aud3exp3iat9auth_time5nonce3acr3amr3azp4name06given_Q007family_Q007middle_Q08nickname18preferred_username7profile7picture7website5email14email_verified6gender9birthdate8zoneinfo6locale12phone_number21phone_number_verified7address10updated_atACSS_SSSaySSG10Foundation4DateVA8_A8_SgSSSgA10_A5_SgA10_A10_A10_A10_A10_A10_A10_A10_A10_A10_A10_SbSgA10_A10_A10_A10_A10_A12_AA12AddressClaimVSgA9_tcfc\">init(iss:<wbr>sub:<wbr>aud:<wbr>exp:<wbr>iat:<wbr>auth_time:<wbr>nonce:<wbr>acr:<wbr>amr:<wbr>azp:<wbr>name:<wbr>given_name:<wbr>family_name:<wbr>middle_name:<wbr>nickname:<wbr>preferred_username:<wbr>profile:<wbr>picture:<wbr>website:<wbr>email:<wbr>email_verified:<wbr>gender:<wbr>birthdate:<wbr>zoneinfo:<wbr>locale:<wbr>phone_number:<wbr>phone_number_verified:<wbr>address:<wbr>updated_at:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Initalise the <code>ClaimsOpenID</code></p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"nf\">init</span><span class=\"p\">(</span>\n    <span class=\"nv\">iss</span><span class=\"p\">:</span> <span class=\"kt\">String</span><span class=\"p\">,</span>\n    <span class=\"nv\">sub</span><span class=\"p\">:</span> <span class=\"kt\">String</span><span class=\"p\">,</span>\n    <span class=\"nv\">aud</span><span class=\"p\">:</span> <span class=\"p\">[</span><span class=\"kt\">String</span><span class=\"p\">],</span>\n    <span class=\"nv\">exp</span><span class=\"p\">:</span> <span class=\"kt\">Date</span><span class=\"p\">,</span>\n    <span class=\"nv\">iat</span><span class=\"p\">:</span> <span class=\"kt\">Date</span><span class=\"p\">,</span>\n    <span class=\"nv\">auth_time</span><span class=\"p\">:</span> <span class=\"kt\">Date</span><span class=\"p\">?</span> <span class=\"o\">=</span> <span class=\"kc\">nil</span><span class=\"p\">,</span>\n    <span class=\"nv\">nonce</span><span class=\"p\">:</span> <span class=\"kt\">String</span><span class=\"p\">?</span> <span class=\"o\">=</span> <span class=\"kc\">nil</span><span class=\"p\">,</span>\n    <span class=\"nv\">acr</span><span class=\"p\">:</span> <span class=\"kt\">String</span><span class=\"p\">?</span> <span class=\"o\">=</span> <span class=\"kc\">nil</span><span class=\"p\">,</span>\n    <span class=\"nv\">amr</span><span class=\"p\">:</span> <span class=\"p\">[</span><span class=\"kt\">String</span><span class=\"p\">]?</span> <span class=\"o\">=</span> <span class=\"kc\">nil</span><span class=\"p\">,</span>\n    <span class=\"nv\">azp</span><span class=\"p\">:</span> <span class=\"kt\">String</span><span class=\"p\">?</span> <span class=\"o\">=</span> <span class=\"kc\">nil</span><span class=\"p\">,</span>\n    <span class=\"nv\">name</span><span class=\"p\">:</span> <span class=\"kt\">String</span><span class=\"p\">?</span> <span class=\"o\">=</span> <span class=\"kc\">nil</span><span class=\"p\">,</span>\n    <span class=\"nv\">given_name</span><span class=\"p\">:</span> <span class=\"kt\">String</span><span class=\"p\">?</span> <span class=\"o\">=</span> <span class=\"kc\">nil</span><span class=\"p\">,</span>\n    <span class=\"nv\">family_name</span><span class=\"p\">:</span> <span class=\"kt\">String</span><span class=\"p\">?</span> <span class=\"o\">=</span> <span class=\"kc\">nil</span><span class=\"p\">,</span>\n    <span class=\"nv\">middle_name</span><span class=\"p\">:</span> <span class=\"kt\">String</span><span class=\"p\">?</span> <span class=\"o\">=</span> <span class=\"kc\">nil</span><span class=\"p\">,</span>\n    <span class=\"nv\">nickname</span><span class=\"p\">:</span> <span class=\"kt\">String</span><span class=\"p\">?</span> <span class=\"o\">=</span> <span class=\"kc\">nil</span><span class=\"p\">,</span>\n    <span class=\"nv\">preferred_username</span><span class=\"p\">:</span> <span class=\"kt\">String</span><span class=\"p\">?</span> <span class=\"o\">=</span> <span class=\"kc\">nil</span><span class=\"p\">,</span>\n    <span class=\"nv\">profile</span><span class=\"p\">:</span> <span class=\"kt\">String</span><span class=\"p\">?</span> <span class=\"o\">=</span> <span class=\"kc\">nil</span><span class=\"p\">,</span>\n    <span class=\"nv\">picture</span><span class=\"p\">:</span> <span class=\"kt\">String</span><span class=\"p\">?</span> <span class=\"o\">=</span> <span class=\"kc\">nil</span><span class=\"p\">,</span>\n    <span class=\"nv\">website</span><span class=\"p\">:</span> <span class=\"kt\">String</span><span class=\"p\">?</span> <span class=\"o\">=</span> <span class=\"kc\">nil</span><span class=\"p\">,</span>\n    <span class=\"nv\">email</span><span class=\"p\">:</span> <span class=\"kt\">String</span><span class=\"p\">?</span> <span class=\"o\">=</span> <span class=\"kc\">nil</span><span class=\"p\">,</span>\n    <span class=\"nv\">email_verified</span><span class=\"p\">:</span> <span class=\"kt\">Bool</span><span class=\"p\">?</span> <span class=\"o\">=</span> <span class=\"kc\">nil</span><span class=\"p\">,</span>\n    <span class=\"nv\">gender</span><span class=\"p\">:</span> <span class=\"kt\">String</span><span class=\"p\">?</span> <span class=\"o\">=</span> <span class=\"kc\">nil</span><span class=\"p\">,</span>\n    <span class=\"nv\">birthdate</span><span class=\"p\">:</span> <span class=\"kt\">String</span><span class=\"p\">?</span> <span class=\"o\">=</span> <span class=\"kc\">nil</span><span class=\"p\">,</span>\n    <span class=\"nv\">zoneinfo</span><span class=\"p\">:</span> <span class=\"kt\">String</span><span class=\"p\">?</span> <span class=\"o\">=</span> <span class=\"kc\">nil</span><span class=\"p\">,</span>\n    <span class=\"nv\">locale</span><span class=\"p\">:</span> <span class=\"kt\">String</span><span class=\"p\">?</span> <span class=\"o\">=</span> <span class=\"kc\">nil</span><span class=\"p\">,</span>\n    <span class=\"nv\">phone_number</span><span class=\"p\">:</span> <span class=\"kt\">String</span><span class=\"p\">?</span> <span class=\"o\">=</span> <span class=\"kc\">nil</span><span class=\"p\">,</span>\n    <span class=\"nv\">phone_number_verified</span><span class=\"p\">:</span> <span class=\"kt\">Bool</span><span class=\"p\">?</span> <span class=\"o\">=</span> <span class=\"kc\">nil</span><span class=\"p\">,</span>\n    <span class=\"nv\">address</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Structs/AddressClaim.html\">AddressClaim</a></span><span class=\"p\">?</span> <span class=\"o\">=</span> <span class=\"kc\">nil</span><span class=\"p\">,</span>\n    <span class=\"nv\">updated_at</span><span class=\"p\">:</span> <span class=\"kt\">Date</span><span class=\"p\">?</span> <span class=\"o\">=</span> <span class=\"kc\">nil</span>\n<span class=\"p\">)</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n              </ul>\n            </div>\n            <div class=\"task-group\">\n              <div class=\"task-name-container\">\n                <a name=\"/ID%20Token\"></a>\n                <a name=\"//apple_ref/swift/Section/ID Token\" class=\"dashAnchor\"></a>\n                <div class=\"section-name-container\">\n                  <a class=\"section-name-link\" href=\"#/ID%20Token\"></a>\n                  <h3 class=\"section-name\"><p>ID Token</p>\n</h3>\n                </div>\n              </div>\n              <ul class=\"item-container\">\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT12ClaimsOpenIDC3issSSvp\"></a>\n                    <a name=\"//apple_ref/swift/Property/iss\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT12ClaimsOpenIDC3issSSvp\">iss</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Issuer Identifier for the Issuer of the response. The iss value is a case sensitive URL using the https scheme that contains scheme, host, and optionally, port number and path components and no query or fragment components.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"k\">var</span> <span class=\"nv\">iss</span><span class=\"p\">:</span> <span class=\"kt\">String</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT12ClaimsOpenIDC3subSSvp\"></a>\n                    <a name=\"//apple_ref/swift/Property/sub\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT12ClaimsOpenIDC3subSSvp\">sub</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Subject Identifier. A locally unique and never reassigned identifier within the Issuer for the End-User, which is intended to be consumed by the Client, e.g., 24400320 or AItOawmwtWwcT0k51BayewNvutrJUqsvl6qs7A4. It MUST NOT exceed 255 ASCII characters in length. The sub value is case sensitive.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"k\">var</span> <span class=\"nv\">sub</span><span class=\"p\">:</span> <span class=\"kt\">String</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT12ClaimsOpenIDC3audSaySSGvp\"></a>\n                    <a name=\"//apple_ref/swift/Property/aud\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT12ClaimsOpenIDC3audSaySSGvp\">aud</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Audience(s) that this ID Token is intended for. It MUST contain the OAuth 2.0 client_id of the Relying Party as an audience value. It MAY also contain identifiers for other audiences.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"k\">var</span> <span class=\"nv\">aud</span><span class=\"p\">:</span> <span class=\"p\">[</span><span class=\"kt\">String</span><span class=\"p\">]</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT12ClaimsOpenIDC3exp10Foundation4DateVvp\"></a>\n                    <a name=\"//apple_ref/swift/Property/exp\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT12ClaimsOpenIDC3exp10Foundation4DateVvp\">exp</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Expiration time on or after which the ID Token MUST NOT be accepted for processing. The processing of this parameter requires that the current date/time MUST be before the expiration date/time listed in the value. Implementers MAY provide for some small leeway, usually no more than a few minutes, to account for clock skew.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"k\">var</span> <span class=\"nv\">exp</span><span class=\"p\">:</span> <span class=\"kt\">Date</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT12ClaimsOpenIDC3iat10Foundation4DateVvp\"></a>\n                    <a name=\"//apple_ref/swift/Property/iat\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT12ClaimsOpenIDC3iat10Foundation4DateVvp\">iat</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Time at which the JWT was issued.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"k\">var</span> <span class=\"nv\">iat</span><span class=\"p\">:</span> <span class=\"kt\">Date</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT12ClaimsOpenIDC9auth_time10Foundation4DateVSgvp\"></a>\n                    <a name=\"//apple_ref/swift/Property/auth_time\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT12ClaimsOpenIDC9auth_time10Foundation4DateVSgvp\">auth_time</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Time when the End-User authentication occurred.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"k\">var</span> <span class=\"nv\">auth_time</span><span class=\"p\">:</span> <span class=\"kt\">Date</span><span class=\"p\">?</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT12ClaimsOpenIDC5nonceSSSgvp\"></a>\n                    <a name=\"//apple_ref/swift/Property/nonce\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT12ClaimsOpenIDC5nonceSSSgvp\">nonce</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>String value used to associate a Client session with an ID Token, and to mitigate replay attacks. The value is passed through unmodified from the Authentication Request to the ID Token. If present in the ID Token, Clients MUST verify that the nonce Claim Value is equal to the value of the nonce parameter sent in the Authentication Request. If present in the Authentication Request, Authorization Servers MUST include a nonce Claim in the ID Token with the Claim Value being the nonce value sent in the Authentication Request. Authorization Servers SHOULD perform no other processing on nonce values used.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"k\">var</span> <span class=\"nv\">nonce</span><span class=\"p\">:</span> <span class=\"kt\">String</span><span class=\"p\">?</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT12ClaimsOpenIDC3acrSSSgvp\"></a>\n                    <a name=\"//apple_ref/swift/Property/acr\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT12ClaimsOpenIDC3acrSSSgvp\">acr</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Authentication Context Class Reference. String specifying an Authentication Context Class Reference value that identifies the Authentication Context Class that the authentication performed satisfied. The value &ldquo;0&rdquo; indicates the End-User authentication did not meet the requirements of ISO/IEC 29115 level 1. Authentications with level 0 SHOULD NOT be used to authorize access to any resource of any monetary value. Parties using this claim will need to agree upon the meanings of the values used, which may be context-specific.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"k\">var</span> <span class=\"nv\">acr</span><span class=\"p\">:</span> <span class=\"kt\">String</span><span class=\"p\">?</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT12ClaimsOpenIDC3amrSaySSGSgvp\"></a>\n                    <a name=\"//apple_ref/swift/Property/amr\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT12ClaimsOpenIDC3amrSaySSGSgvp\">amr</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Authentication Methods References. JSON array of strings that are identifiers for authentication methods used in the authentication. For instance, values might indicate that both password and OTP authentication methods were used. Parties using this claim will need to agree upon the meanings of the values used, which may be context-specific.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"k\">var</span> <span class=\"nv\">amr</span><span class=\"p\">:</span> <span class=\"p\">[</span><span class=\"kt\">String</span><span class=\"p\">]?</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT12ClaimsOpenIDC3azpSSSgvp\"></a>\n                    <a name=\"//apple_ref/swift/Property/azp\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT12ClaimsOpenIDC3azpSSSgvp\">azp</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Authorized party - the party to which the ID Token was issued. If present, it MUST contain the OAuth 2.0 Client ID of this party. This Claim is only needed when the ID Token has a single audience value and that audience is different than the authorized party. It MAY be included even when the authorized party is the same as the sole audience.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"k\">var</span> <span class=\"nv\">azp</span><span class=\"p\">:</span> <span class=\"kt\">String</span><span class=\"p\">?</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n              </ul>\n            </div>\n            <div class=\"task-group\">\n              <div class=\"task-name-container\">\n                <a name=\"/Standard%20Claims\"></a>\n                <a name=\"//apple_ref/swift/Section/Standard Claims\" class=\"dashAnchor\"></a>\n                <div class=\"section-name-container\">\n                  <a class=\"section-name-link\" href=\"#/Standard%20Claims\"></a>\n                  <h3 class=\"section-name\"><p>Standard Claims</p>\n</h3>\n                </div>\n              </div>\n              <ul class=\"item-container\">\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT12ClaimsOpenIDC4nameSSSgvp\"></a>\n                    <a name=\"//apple_ref/swift/Property/name\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT12ClaimsOpenIDC4nameSSSgvp\">name</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>End-User&rsquo;s full name in displayable form including all name parts, possibly including titles and suffixes, ordered according to the End-User&rsquo;s locale and preferences.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"k\">var</span> <span class=\"nv\">name</span><span class=\"p\">:</span> <span class=\"kt\">String</span><span class=\"p\">?</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT12ClaimsOpenIDC10given_nameSSSgvp\"></a>\n                    <a name=\"//apple_ref/swift/Property/given_name\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT12ClaimsOpenIDC10given_nameSSSgvp\">given_name</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Given name(s) or first name(s) of the End-User. Note that in some cultures, people can have multiple given names; all can be present, with the names being separated by space characters.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"k\">var</span> <span class=\"nv\">given_name</span><span class=\"p\">:</span> <span class=\"kt\">String</span><span class=\"p\">?</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT12ClaimsOpenIDC11family_nameSSSgvp\"></a>\n                    <a name=\"//apple_ref/swift/Property/family_name\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT12ClaimsOpenIDC11family_nameSSSgvp\">family_name</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Surname(s) or last name(s) of the End-User. Note that in some cultures, people can have multiple family names or no family name; all can be present, with the names being separated by space characters.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"k\">var</span> <span class=\"nv\">family_name</span><span class=\"p\">:</span> <span class=\"kt\">String</span><span class=\"p\">?</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT12ClaimsOpenIDC11middle_nameSSSgvp\"></a>\n                    <a name=\"//apple_ref/swift/Property/middle_name\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT12ClaimsOpenIDC11middle_nameSSSgvp\">middle_name</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Middle name(s) of the End-User. Note that in some cultures, people can have multiple middle names; all can be present, with the names being separated by space characters. Also note that in some cultures, middle names are not used.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"k\">var</span> <span class=\"nv\">middle_name</span><span class=\"p\">:</span> <span class=\"kt\">String</span><span class=\"p\">?</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT12ClaimsOpenIDC8nicknameSSSgvp\"></a>\n                    <a name=\"//apple_ref/swift/Property/nickname\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT12ClaimsOpenIDC8nicknameSSSgvp\">nickname</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Casual name of the End-User that may or may not be the same as the given_name. For instance, a nickname value of Mike might be returned alongside a given_name value of Michael.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"k\">var</span> <span class=\"nv\">nickname</span><span class=\"p\">:</span> <span class=\"kt\">String</span><span class=\"p\">?</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT12ClaimsOpenIDC18preferred_usernameSSSgvp\"></a>\n                    <a name=\"//apple_ref/swift/Property/preferred_username\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT12ClaimsOpenIDC18preferred_usernameSSSgvp\">preferred_username</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Shorthand name by which the End-User wishes to be referred to at the RP, such as janedoe or j.doe. This value MAY be any valid JSON string including special characters such as @, /, or whitespace.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"k\">var</span> <span class=\"nv\">preferred_username</span><span class=\"p\">:</span> <span class=\"kt\">String</span><span class=\"p\">?</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT12ClaimsOpenIDC7profileSSSgvp\"></a>\n                    <a name=\"//apple_ref/swift/Property/profile\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT12ClaimsOpenIDC7profileSSSgvp\">profile</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>URL of the End-User&rsquo;s profile page. The contents of this Web page SHOULD be about the End-User.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"k\">var</span> <span class=\"nv\">profile</span><span class=\"p\">:</span> <span class=\"kt\">String</span><span class=\"p\">?</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT12ClaimsOpenIDC7pictureSSSgvp\"></a>\n                    <a name=\"//apple_ref/swift/Property/picture\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT12ClaimsOpenIDC7pictureSSSgvp\">picture</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>URL of the End-User&rsquo;s profile picture. This URL MUST refer to an image file (for example, a PNG, JPEG, or GIF image file), rather than to a Web page containing an image. Note that this URL SHOULD specifically reference a profile photo of the End-User suitable for displaying when describing the End-User, rather than an arbitrary photo taken by the End-User.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"k\">var</span> <span class=\"nv\">picture</span><span class=\"p\">:</span> <span class=\"kt\">String</span><span class=\"p\">?</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT12ClaimsOpenIDC7websiteSSSgvp\"></a>\n                    <a name=\"//apple_ref/swift/Property/website\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT12ClaimsOpenIDC7websiteSSSgvp\">website</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>URL of the End-User&rsquo;s Web page or blog. This Web page SHOULD contain information published by the End-User or an organization that the End-User is affiliated with.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"k\">var</span> <span class=\"nv\">website</span><span class=\"p\">:</span> <span class=\"kt\">String</span><span class=\"p\">?</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT12ClaimsOpenIDC5emailSSSgvp\"></a>\n                    <a name=\"//apple_ref/swift/Property/email\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT12ClaimsOpenIDC5emailSSSgvp\">email</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>End-User&rsquo;s preferred e-mail address.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"k\">var</span> <span class=\"nv\">email</span><span class=\"p\">:</span> <span class=\"kt\">String</span><span class=\"p\">?</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT12ClaimsOpenIDC14email_verifiedSbSgvp\"></a>\n                    <a name=\"//apple_ref/swift/Property/email_verified\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT12ClaimsOpenIDC14email_verifiedSbSgvp\">email_verified</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>True if the End-User&rsquo;s e-mail address has been verified; otherwise false. When this Claim Value is true, this means that the OP took affirmative steps to ensure that this e-mail address was controlled by the End-User at the time the verification was performed. The means by which an e-mail address is verified is context-specific, and dependent upon the trust framework or contractual agreements within which the parties are operating.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"k\">var</span> <span class=\"nv\">email_verified</span><span class=\"p\">:</span> <span class=\"kt\">Bool</span><span class=\"p\">?</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT12ClaimsOpenIDC6genderSSSgvp\"></a>\n                    <a name=\"//apple_ref/swift/Property/gender\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT12ClaimsOpenIDC6genderSSSgvp\">gender</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>End-User&rsquo;s gender. Values defined by this specification are female and male. Other values MAY be used when neither of the defined values are applicable.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"k\">var</span> <span class=\"nv\">gender</span><span class=\"p\">:</span> <span class=\"kt\">String</span><span class=\"p\">?</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT12ClaimsOpenIDC9birthdateSSSgvp\"></a>\n                    <a name=\"//apple_ref/swift/Property/birthdate\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT12ClaimsOpenIDC9birthdateSSSgvp\">birthdate</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>End-User&rsquo;s birthday, represented as an ISO 8601:2004 YYYY-MM-DD format. The year MAY be 0000, indicating that it is omitted. To represent only the year, YYYY format is allowed.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"k\">var</span> <span class=\"nv\">birthdate</span><span class=\"p\">:</span> <span class=\"kt\">String</span><span class=\"p\">?</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT12ClaimsOpenIDC8zoneinfoSSSgvp\"></a>\n                    <a name=\"//apple_ref/swift/Property/zoneinfo\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT12ClaimsOpenIDC8zoneinfoSSSgvp\">zoneinfo</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>String from zoneinfo time zone database representing the End-User&rsquo;s time zone. For example, Europe/Paris or America/Los_Angeles.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"k\">var</span> <span class=\"nv\">zoneinfo</span><span class=\"p\">:</span> <span class=\"kt\">String</span><span class=\"p\">?</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT12ClaimsOpenIDC6localeSSSgvp\"></a>\n                    <a name=\"//apple_ref/swift/Property/locale\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT12ClaimsOpenIDC6localeSSSgvp\">locale</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>End-User&rsquo;s locale, represented as a BCP47 language tag. This is typically an ISO 639-1 Alpha-2 language code in lowercase and an ISO 3166-1 Alpha-2 country code in uppercase, separated by a dash. For example, en-US or fr-CA. As a compatibility note, some implementations have used an underscore as the separator rather than a dash, for example, en_US; Relying Parties MAY choose to accept this locale syntax as well.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"k\">var</span> <span class=\"nv\">locale</span><span class=\"p\">:</span> <span class=\"kt\">String</span><span class=\"p\">?</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT12ClaimsOpenIDC12phone_numberSSSgvp\"></a>\n                    <a name=\"//apple_ref/swift/Property/phone_number\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT12ClaimsOpenIDC12phone_numberSSSgvp\">phone_number</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>End-User&rsquo;s preferred telephone number. E.164 is RECOMMENDED as the format of this Claim, for example, +1 (425) 555-1212 or +56 (2) 687 2400.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"k\">var</span> <span class=\"nv\">phone_number</span><span class=\"p\">:</span> <span class=\"kt\">String</span><span class=\"p\">?</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT12ClaimsOpenIDC21phone_number_verifiedSbSgvp\"></a>\n                    <a name=\"//apple_ref/swift/Property/phone_number_verified\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT12ClaimsOpenIDC21phone_number_verifiedSbSgvp\">phone_number_verified</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>True if the End-User&rsquo;s phone number has been verified; otherwise false. When this Claim Value is true, this means that the OP took affirmative steps to ensure that this phone number was controlled by the End-User at the time the verification was performed. The means by which a phone number is verified is context-specific, and dependent upon the trust framework or contractual agreements within which the parties are operating. When true, the phone_number Claim MUST be in E.164 format and any extensions MUST be represented in RFC 3966 format.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"k\">var</span> <span class=\"nv\">phone_number_verified</span><span class=\"p\">:</span> <span class=\"kt\">Bool</span><span class=\"p\">?</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT12ClaimsOpenIDC7addressAA12AddressClaimVSgvp\"></a>\n                    <a name=\"//apple_ref/swift/Property/address\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT12ClaimsOpenIDC7addressAA12AddressClaimVSgvp\">address</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>End-User&rsquo;s preferred postal address.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"k\">var</span> <span class=\"nv\">address</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Structs/AddressClaim.html\">AddressClaim</a></span><span class=\"p\">?</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT12ClaimsOpenIDC10updated_at10Foundation4DateVSgvp\"></a>\n                    <a name=\"//apple_ref/swift/Property/updated_at\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT12ClaimsOpenIDC10updated_at10Foundation4DateVSgvp\">updated_at</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Time the End-User&rsquo;s information was last updated.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"k\">var</span> <span class=\"nv\">updated_at</span><span class=\"p\">:</span> <span class=\"kt\">Date</span><span class=\"p\">?</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n              </ul>\n            </div>\n          </div>\n        </section>\n\n      </article>\n    </div>\n    <section class=\"footer\">\n      <p>&copy; 2020 <a class=\"link\" href=\"https://github.com/Kitura/Swift-JWT\" target=\"_blank\" rel=\"external\">IBM &amp; Kitura Project Contributors</a>. All rights reserved. (Last updated: 2020-11-25)</p>\n      <p>Generated by <a class=\"link\" href=\"https://github.com/realm/jazzy\" target=\"_blank\" rel=\"external\">jazzy ♪♫ v0.13.6</a>, a <a class=\"link\" href=\"https://realm.io\" target=\"_blank\" rel=\"external\">Realm</a> project.</p>\n    </section>\n  </body>\n</div>\n</html>\n"
  },
  {
    "path": "docs/Classes/ClaimsStandardJWT.html",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n  <head>\n    <title>ClaimsStandardJWT Class Reference</title>\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"../css/jazzy.css\" />\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"../css/highlight.css\" />\n    <meta charset=\"utf-8\">\n    <script src=\"../js/jquery.min.js\" defer></script>\n    <script src=\"../js/jazzy.js\" defer></script>\n    \n    <script src=\"../js/lunr.min.js\" defer></script>\n    <script src=\"../js/typeahead.jquery.js\" defer></script>\n    <script src=\"../js/jazzy.search.js\" defer></script>\n  </head>\n  <body>\n\n    <a name=\"//apple_ref/swift/Class/ClaimsStandardJWT\" class=\"dashAnchor\"></a>\n\n    <a title=\"ClaimsStandardJWT Class Reference\"></a>\n\n    <header class=\"header\">\n      <p class=\"header-col header-col--primary\">\n        <a class=\"header-link\" href=\"../index.html\">\n          SwiftJWT 3.6.200 Docs\n        </a>\n         (100% documented)\n      </p>\n    \n      <p class=\"header-col--secondary\">\n        <form role=\"search\" action=\"../search.json\">\n          <input type=\"text\" placeholder=\"Search documentation\" data-typeahead>\n        </form>\n      </p>\n    \n        <p class=\"header-col header-col--secondary\">\n          <a class=\"header-link\" href=\"https://github.com/Kitura/Swift-JWT/\">\n            <img class=\"header-icon\" src=\"../img/gh.png\"/>\n            View on GitHub\n          </a>\n        </p>\n    \n    </header>\n\n    <p class=\"breadcrumbs\">\n      <a class=\"breadcrumb\" href=\"../index.html\">SwiftJWT Reference</a>\n      <img class=\"carat\" src=\"../img/carat.png\" />\n      ClaimsStandardJWT Class Reference\n    </p>\n\n    <div class=\"content-wrapper\">\n      <nav class=\"navigation\">\n        <ul class=\"nav-groups\">\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Classes.html\">Classes</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ClaimsMicroProfile.html\">ClaimsMicroProfile</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ClaimsOpenID.html\">ClaimsOpenID</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ClaimsStandardJWT.html\">ClaimsStandardJWT</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/JWTDecoder.html\">JWTDecoder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/JWTEncoder.html\">JWTEncoder</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Protocols.html\">Protocols</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/Claims.html\">Claims</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Structs.html\">Structures</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/AddressClaim.html\">AddressClaim</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Header.html\">Header</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/JWT.html\">JWT</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/JWTError.html\">JWTError</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/JWTSigner.html\">JWTSigner</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/JWTVerifier.html\">JWTVerifier</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/ValidateClaimsResult.html\">ValidateClaimsResult</a>\n              </li>\n            </ul>\n          </li>\n        </ul>\n      </nav>\n      <article class=\"main-content\">\n\n        <section class=\"section\">\n          <div class=\"section-content top-matter\">\n            <h1>ClaimsStandardJWT</h1>\n              <div class=\"declaration\">\n                <div class=\"language\">\n                  \n                  <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">class</span> <span class=\"kt\">ClaimsStandardJWT</span> <span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Protocols/Claims.html\">Claims</a></span></code></pre>\n\n                </div>\n              </div>\n            <p>A class representing the Standard JWT claims as described in <a href=\"https://tools.ietf.org/html/rfc7519#section-4.1\">RFC7519</a>.</p>\n\n          </div>\n        </section>\n\n        <section class=\"section\">\n          <div class=\"section-content\">\n            <div class=\"task-group\">\n              <ul class=\"item-container\">\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT014ClaimsStandardB0C3iss3sub3aud3exp3nbf3iat3jtiACSSSg_AKSaySSGSg10Foundation4DateVSgA2qKtcfc\"></a>\n                    <a name=\"//apple_ref/swift/Method/init(iss:sub:aud:exp:nbf:iat:jti:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT014ClaimsStandardB0C3iss3sub3aud3exp3nbf3iat3jtiACSSSg_AKSaySSGSg10Foundation4DateVSgA2qKtcfc\">init(iss:<wbr>sub:<wbr>aud:<wbr>exp:<wbr>nbf:<wbr>iat:<wbr>jti:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Initialize a <code>ClaimsStandardJWT</code></p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"nf\">init</span><span class=\"p\">(</span>\n    <span class=\"nv\">iss</span><span class=\"p\">:</span> <span class=\"kt\">String</span><span class=\"p\">?</span> <span class=\"o\">=</span> <span class=\"kc\">nil</span><span class=\"p\">,</span>\n    <span class=\"nv\">sub</span><span class=\"p\">:</span> <span class=\"kt\">String</span><span class=\"p\">?</span> <span class=\"o\">=</span> <span class=\"kc\">nil</span><span class=\"p\">,</span>\n    <span class=\"nv\">aud</span><span class=\"p\">:</span> <span class=\"p\">[</span><span class=\"kt\">String</span><span class=\"p\">]?</span> <span class=\"o\">=</span> <span class=\"kc\">nil</span><span class=\"p\">,</span>\n    <span class=\"nv\">exp</span><span class=\"p\">:</span> <span class=\"kt\">Date</span><span class=\"p\">?</span> <span class=\"o\">=</span> <span class=\"kc\">nil</span><span class=\"p\">,</span>\n    <span class=\"nv\">nbf</span><span class=\"p\">:</span> <span class=\"kt\">Date</span><span class=\"p\">?</span> <span class=\"o\">=</span> <span class=\"kc\">nil</span><span class=\"p\">,</span>\n    <span class=\"nv\">iat</span><span class=\"p\">:</span> <span class=\"kt\">Date</span><span class=\"p\">?</span> <span class=\"o\">=</span> <span class=\"kc\">nil</span><span class=\"p\">,</span>\n    <span class=\"nv\">jti</span><span class=\"p\">:</span> <span class=\"kt\">String</span><span class=\"p\">?</span> <span class=\"o\">=</span> <span class=\"kc\">nil</span>\n    <span class=\"p\">)</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT014ClaimsStandardB0C3issSSSgvp\"></a>\n                    <a name=\"//apple_ref/swift/Property/iss\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT014ClaimsStandardB0C3issSSSgvp\">iss</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>The &ldquo;iss&rdquo; (issuer) claim identifies the principal that issued the\nJWT.  The processing of this claim is generally application specific.\nThe &ldquo;iss&rdquo; value is a case-sensitive.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"k\">var</span> <span class=\"nv\">iss</span><span class=\"p\">:</span> <span class=\"kt\">String</span><span class=\"p\">?</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT014ClaimsStandardB0C3subSSSgvp\"></a>\n                    <a name=\"//apple_ref/swift/Property/sub\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT014ClaimsStandardB0C3subSSSgvp\">sub</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>The &ldquo;sub&rdquo; (subject) claim identifies the principal that is the\nsubject of the JWT.  The claims in a JWT are normally statements\nabout the subject.  The subject value MUST either be scoped to be\nlocally unique in the context of the issuer or be globally unique.\nThe processing of this claim is generally application specific.  The\n&ldquo;sub&rdquo; value is case-sensitive.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"k\">var</span> <span class=\"nv\">sub</span><span class=\"p\">:</span> <span class=\"kt\">String</span><span class=\"p\">?</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT014ClaimsStandardB0C3audSaySSGSgvp\"></a>\n                    <a name=\"//apple_ref/swift/Property/aud\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT014ClaimsStandardB0C3audSaySSGSgvp\">aud</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>The &ldquo;aud&rdquo; (audience) claim identifies the recipients that the JWT is\nintended for.  Each principal intended to process the JWT MUST\nidentify itself with a value in the audience claim.  If the principal\nprocessing the claim does not identify itself with a value in the\n&ldquo;aud&rdquo; claim when this claim is present, then the JWT MUST be\nrejected. The interpretation of audience values is generally application specific.\nThe &ldquo;aud&rdquo; value is case-sensitive.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"k\">var</span> <span class=\"nv\">aud</span><span class=\"p\">:</span> <span class=\"p\">[</span><span class=\"kt\">String</span><span class=\"p\">]?</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT014ClaimsStandardB0C3exp10Foundation4DateVSgvp\"></a>\n                    <a name=\"//apple_ref/swift/Property/exp\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT014ClaimsStandardB0C3exp10Foundation4DateVSgvp\">exp</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>The &ldquo;exp&rdquo; (expiration time) claim identifies the expiration time on\nor after which the JWT MUST NOT be accepted for processing.  The\nprocessing of the &ldquo;exp&rdquo; claim requires that the current date/time\nMUST be before the expiration date/time listed in the &ldquo;exp&rdquo; claim.\nImplementers MAY provide for some small leeway, usually no more than\na few minutes, to account for clock skew.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"k\">var</span> <span class=\"nv\">exp</span><span class=\"p\">:</span> <span class=\"kt\">Date</span><span class=\"p\">?</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT014ClaimsStandardB0C3nbf10Foundation4DateVSgvp\"></a>\n                    <a name=\"//apple_ref/swift/Property/nbf\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT014ClaimsStandardB0C3nbf10Foundation4DateVSgvp\">nbf</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>The &ldquo;nbf&rdquo; (not before) claim identifies the time before which the JWT\nMUST NOT be accepted for processing.  The processing of the &ldquo;nbf&rdquo;\nclaim requires that the current date/time MUST be after or equal to\nthe not-before date/time listed in the &ldquo;nbf&rdquo; claim.  Implementers MAY\nprovide for some small leeway, usually no more than a few minutes, to\naccount for clock skew.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"k\">var</span> <span class=\"nv\">nbf</span><span class=\"p\">:</span> <span class=\"kt\">Date</span><span class=\"p\">?</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT014ClaimsStandardB0C3iat10Foundation4DateVSgvp\"></a>\n                    <a name=\"//apple_ref/swift/Property/iat\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT014ClaimsStandardB0C3iat10Foundation4DateVSgvp\">iat</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>The &ldquo;iat&rdquo; (issued at) claim identifies the time at which the JWT was\nissued.  This claim can be used to determine the age of the JWT.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"k\">var</span> <span class=\"nv\">iat</span><span class=\"p\">:</span> <span class=\"kt\">Date</span><span class=\"p\">?</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT014ClaimsStandardB0C3jtiSSSgvp\"></a>\n                    <a name=\"//apple_ref/swift/Property/jti\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT014ClaimsStandardB0C3jtiSSSgvp\">jti</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>The &ldquo;jti&rdquo; (JWT ID) claim provides a unique identifier for the JWT.\nThe identifier value MUST be assigned in a manner that ensures that\nthere is a negligible probability that the same value will be\naccidentally assigned to a different data object; if the application\nuses multiple issuers, collisions MUST be prevented among values\nproduced by different issuers as well.  The &ldquo;jti&rdquo; claim can be used\nto prevent the JWT from being replayed.  The &ldquo;jti&rdquo; value is case-\nsensitive</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"k\">var</span> <span class=\"nv\">jti</span><span class=\"p\">:</span> <span class=\"kt\">String</span><span class=\"p\">?</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n              </ul>\n            </div>\n          </div>\n        </section>\n\n      </article>\n    </div>\n    <section class=\"footer\">\n      <p>&copy; 2020 <a class=\"link\" href=\"https://github.com/Kitura/Swift-JWT\" target=\"_blank\" rel=\"external\">IBM &amp; Kitura Project Contributors</a>. All rights reserved. (Last updated: 2020-11-25)</p>\n      <p>Generated by <a class=\"link\" href=\"https://github.com/realm/jazzy\" target=\"_blank\" rel=\"external\">jazzy ♪♫ v0.13.6</a>, a <a class=\"link\" href=\"https://realm.io\" target=\"_blank\" rel=\"external\">Realm</a> project.</p>\n    </section>\n  </body>\n</div>\n</html>\n"
  },
  {
    "path": "docs/Classes/JWTDecoder.html",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n  <head>\n    <title>JWTDecoder Class Reference</title>\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"../css/jazzy.css\" />\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"../css/highlight.css\" />\n    <meta charset=\"utf-8\">\n    <script src=\"../js/jquery.min.js\" defer></script>\n    <script src=\"../js/jazzy.js\" defer></script>\n    \n    <script src=\"../js/lunr.min.js\" defer></script>\n    <script src=\"../js/typeahead.jquery.js\" defer></script>\n    <script src=\"../js/jazzy.search.js\" defer></script>\n  </head>\n  <body>\n\n    <a name=\"//apple_ref/swift/Class/JWTDecoder\" class=\"dashAnchor\"></a>\n\n    <a title=\"JWTDecoder Class Reference\"></a>\n\n    <header class=\"header\">\n      <p class=\"header-col header-col--primary\">\n        <a class=\"header-link\" href=\"../index.html\">\n          SwiftJWT 3.6.200 Docs\n        </a>\n         (100% documented)\n      </p>\n    \n      <p class=\"header-col--secondary\">\n        <form role=\"search\" action=\"../search.json\">\n          <input type=\"text\" placeholder=\"Search documentation\" data-typeahead>\n        </form>\n      </p>\n    \n        <p class=\"header-col header-col--secondary\">\n          <a class=\"header-link\" href=\"https://github.com/Kitura/Swift-JWT/\">\n            <img class=\"header-icon\" src=\"../img/gh.png\"/>\n            View on GitHub\n          </a>\n        </p>\n    \n    </header>\n\n    <p class=\"breadcrumbs\">\n      <a class=\"breadcrumb\" href=\"../index.html\">SwiftJWT Reference</a>\n      <img class=\"carat\" src=\"../img/carat.png\" />\n      JWTDecoder Class Reference\n    </p>\n\n    <div class=\"content-wrapper\">\n      <nav class=\"navigation\">\n        <ul class=\"nav-groups\">\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Classes.html\">Classes</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ClaimsMicroProfile.html\">ClaimsMicroProfile</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ClaimsOpenID.html\">ClaimsOpenID</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ClaimsStandardJWT.html\">ClaimsStandardJWT</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/JWTDecoder.html\">JWTDecoder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/JWTEncoder.html\">JWTEncoder</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Protocols.html\">Protocols</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/Claims.html\">Claims</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Structs.html\">Structures</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/AddressClaim.html\">AddressClaim</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Header.html\">Header</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/JWT.html\">JWT</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/JWTError.html\">JWTError</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/JWTSigner.html\">JWTSigner</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/JWTVerifier.html\">JWTVerifier</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/ValidateClaimsResult.html\">ValidateClaimsResult</a>\n              </li>\n            </ul>\n          </li>\n        </ul>\n      </nav>\n      <article class=\"main-content\">\n\n        <section class=\"section\">\n          <div class=\"section-content top-matter\">\n            <h1>JWTDecoder</h1>\n              <div class=\"declaration\">\n                <div class=\"language\">\n                  \n                  <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">class</span> <span class=\"kt\">JWTDecoder</span> <span class=\"p\">:</span> <span class=\"kt\">BodyDecoder</span></code></pre>\n\n                </div>\n              </div>\n            <p>A thread safe decoder that decodes either Data or a JWT String as a <code><a href=\"../Structs/JWT.html\">JWT</a></code> instance and verifies the signiture using the provided algorithm.</p>\n<h3 id='usage-example' class='heading'>Usage Example:</h3>\n<pre class=\"highlight swift\"><code><span class=\"kd\">struct</span> <span class=\"kt\">MyClaims</span><span class=\"p\">:</span> <span class=\"kt\">Claims</span> <span class=\"p\">{</span>\n   <span class=\"k\">var</span> <span class=\"nv\">name</span><span class=\"p\">:</span> <span class=\"kt\">String</span>\n<span class=\"p\">}</span>\n<span class=\"k\">let</span> <span class=\"nv\">publicKey</span> <span class=\"o\">=</span> <span class=\"s\">\"&lt;PublicKey&gt;\"</span><span class=\"o\">.</span><span class=\"nf\">data</span><span class=\"p\">(</span><span class=\"nv\">using</span><span class=\"p\">:</span> <span class=\"o\">.</span><span class=\"n\">utf8</span><span class=\"p\">)</span><span class=\"o\">!</span>\n<span class=\"k\">let</span> <span class=\"nv\">rsaJWTDecoder</span> <span class=\"o\">=</span> <span class=\"kt\">JWTDecoder</span><span class=\"p\">(</span><span class=\"nv\">jwtVerifier</span><span class=\"p\">:</span> <span class=\"kt\">JWTVerifier</span><span class=\"o\">.</span><span class=\"nf\">rs256</span><span class=\"p\">(</span><span class=\"nv\">publicKey</span><span class=\"p\">:</span> <span class=\"n\">publicKey</span><span class=\"p\">))</span>\n<span class=\"k\">do</span> <span class=\"p\">{</span>\n   <span class=\"k\">let</span> <span class=\"nv\">jwt</span> <span class=\"o\">=</span> <span class=\"k\">try</span> <span class=\"n\">rsaJWTDecoder</span><span class=\"o\">.</span><span class=\"nf\">decode</span><span class=\"p\">(</span><span class=\"kt\">JWT</span><span class=\"o\">&lt;</span><span class=\"kt\">MyClaims</span><span class=\"o\">&gt;.</span><span class=\"k\">self</span><span class=\"p\">,</span> <span class=\"nv\">fromString</span><span class=\"p\">:</span> <span class=\"n\">exampleJWTString</span><span class=\"p\">)</span>\n<span class=\"p\">}</span> <span class=\"k\">catch</span> <span class=\"p\">{</span>\n   <span class=\"nf\">print</span><span class=\"p\">(</span><span class=\"s\">\"Failed to decode JWT: </span><span class=\"se\">\\(</span><span class=\"n\">error</span><span class=\"se\">)</span><span class=\"s\">\"</span><span class=\"p\">)</span>\n<span class=\"p\">}</span>\n</code></pre>\n\n          </div>\n        </section>\n\n        <section class=\"section\">\n          <div class=\"section-content\">\n            <div class=\"task-group\">\n              <div class=\"task-name-container\">\n                <a name=\"/Initializers\"></a>\n                <a name=\"//apple_ref/swift/Section/Initializers\" class=\"dashAnchor\"></a>\n                <div class=\"section-name-container\">\n                  <a class=\"section-name-link\" href=\"#/Initializers\"></a>\n                  <h3 class=\"section-name\"><p>Initializers</p>\n</h3>\n                </div>\n              </div>\n              <ul class=\"item-container\">\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT10JWTDecoderC11jwtVerifierAcA11JWTVerifierV_tcfc\"></a>\n                    <a name=\"//apple_ref/swift/Method/init(jwtVerifier:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT10JWTDecoderC11jwtVerifierAcA11JWTVerifierV_tcfc\">init(jwtVerifier:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Initialize a <code>JWTDecoder</code> instance with a single <code><a href=\"../Structs/JWTVerifier.html\">JWTVerifier</a></code>.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"nf\">init</span><span class=\"p\">(</span><span class=\"nv\">jwtVerifier</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Structs/JWTVerifier.html\">JWTVerifier</a></span><span class=\"p\">)</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>JWTVerifier</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>The <code><a href=\"../Structs/JWTVerifier.html\">JWTVerifier</a></code> that will be used to verify the signiture of the JWT.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>A new instance of <code>JWTDecoder</code>.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT10JWTDecoderC15keyIDToVerifierAcA11JWTVerifierVSgSSc_tcfc\"></a>\n                    <a name=\"//apple_ref/swift/Method/init(keyIDToVerifier:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT10JWTDecoderC15keyIDToVerifierAcA11JWTVerifierVSgSSc_tcfc\">init(keyIDToVerifier:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Initialize a <code>JWTDecoder</code> instance with a function to generate the <code><a href=\"../Structs/JWTVerifier.html\">JWTVerifier</a></code> from the JWT <code>kid</code> header.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"nf\">init</span><span class=\"p\">(</span><span class=\"nv\">keyIDToVerifier</span><span class=\"p\">:</span> <span class=\"kd\">@escaping</span> <span class=\"p\">(</span><span class=\"kt\">String</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Structs/JWTVerifier.html\">JWTVerifier</a></span><span class=\"p\">?)</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>keyIDToVerifier</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>The function that will generate the <code><a href=\"../Structs/JWTVerifier.html\">JWTVerifier</a></code> using the &ldquo;kid&rdquo; header.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>A new instance of <code>JWTDecoder</code>.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n              </ul>\n            </div>\n            <div class=\"task-group\">\n              <div class=\"task-name-container\">\n                <a name=\"/Decode\"></a>\n                <a name=\"//apple_ref/swift/Section/Decode\" class=\"dashAnchor\"></a>\n                <div class=\"section-name-container\">\n                  <a class=\"section-name-link\" href=\"#/Decode\"></a>\n                  <h3 class=\"section-name\"><p>Decode</p>\n</h3>\n                </div>\n              </div>\n              <ul class=\"item-container\">\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT10JWTDecoderC6decode_10fromStringxxm_SStKSeRzlF\"></a>\n                    <a name=\"//apple_ref/swift/Method/decode(_:fromString:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT10JWTDecoderC6decode_10fromStringxxm_SStKSeRzlF\">decode(_:<wbr>fromString:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Decode a <code><a href=\"../Structs/JWT.html\">JWT</a></code> instance from a JWT String.</p>\n<div class=\"aside aside-throws\">\n    <p class=\"aside-title\">Throws</p>\n    <code><a href=\"../Structs/JWTError.html#/s:8SwiftJWT8JWTErrorV16invalidJWTStringACvpZ\">JWTError.invalidJWTString</a></code> if the provided String is not in the form mandated by the JWT specification.\n\n</div><div class=\"aside aside-throws\">\n    <p class=\"aside-title\">Throws</p>\n    <code><a href=\"../Structs/JWTError.html#/s:8SwiftJWT8JWTErrorV12invalidKeyIDACvpZ\">JWTError.invalidKeyID</a></code> if the KeyID <code>kid</code> header fails to generate a jwtVerifier.\n\n</div><div class=\"aside aside-throws\">\n    <p class=\"aside-title\">Throws</p>\n    <code><a href=\"../Structs/JWTError.html#/s:8SwiftJWT8JWTErrorV18failedVerificationACvpZ\">JWTError.failedVerification</a></code> if the <code><a href=\"../Structs/JWTVerifier.html\">JWTVerifier</a></code> fails to verify the decoded String.\n\n</div><div class=\"aside aside-throws\">\n    <p class=\"aside-title\">Throws</p>\n    <code>DecodingError</code> if the decoder fails to decode the String as the provided type.\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">func</span> <span class=\"n\">decode</span><span class=\"o\">&lt;</span><span class=\"kt\">T</span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">type</span><span class=\"p\">:</span> <span class=\"kt\">T</span><span class=\"o\">.</span><span class=\"k\">Type</span><span class=\"p\">,</span> <span class=\"nv\">fromString</span><span class=\"p\">:</span> <span class=\"kt\">String</span><span class=\"p\">)</span> <span class=\"k\">throws</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">T</span> <span class=\"k\">where</span> <span class=\"kt\">T</span> <span class=\"p\">:</span> <span class=\"kt\">Decodable</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>type</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>The JWT type the String will be decoded as.</p>\n                                </div>\n                              </td>\n                            </tr>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>fromString</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>The JWT String that will be decoded.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>A <code><a href=\"../Structs/JWT.html\">JWT</a></code> instance of the provided type.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT10JWTDecoderC6decode_4fromxxm_10Foundation4DataVtKSeRzlF\"></a>\n                    <a name=\"//apple_ref/swift/Method/decode(_:from:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT10JWTDecoderC6decode_4fromxxm_10Foundation4DataVtKSeRzlF\">decode(_:<wbr>from:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Decode a <code><a href=\"../Structs/JWT.html\">JWT</a></code> instance from a utf8 encoded JWT String.</p>\n<div class=\"aside aside-throws\">\n    <p class=\"aside-title\">Throws</p>\n    <code><a href=\"../Structs/JWTError.html#/s:8SwiftJWT8JWTErrorV15invalidUTF8DataACvpZ\">JWTError.invalidUTF8Data</a></code> if the provided Data can&rsquo;t be decoded to a String.\n\n</div><div class=\"aside aside-throws\">\n    <p class=\"aside-title\">Throws</p>\n    <code><a href=\"../Structs/JWTError.html#/s:8SwiftJWT8JWTErrorV16invalidJWTStringACvpZ\">JWTError.invalidJWTString</a></code> if the provided String is not in the form mandated by the JWT specification.\n\n</div><div class=\"aside aside-throws\">\n    <p class=\"aside-title\">Throws</p>\n    <code><a href=\"../Structs/JWTError.html#/s:8SwiftJWT8JWTErrorV12invalidKeyIDACvpZ\">JWTError.invalidKeyID</a></code> if the KeyID <code>kid</code> header fails to generate a <code><a href=\"../Structs/JWTVerifier.html\">JWTVerifier</a></code>.\n\n</div><div class=\"aside aside-throws\">\n    <p class=\"aside-title\">Throws</p>\n    <code><a href=\"../Structs/JWTError.html#/s:8SwiftJWT8JWTErrorV18failedVerificationACvpZ\">JWTError.failedVerification</a></code> if the <code><a href=\"../Structs/JWTVerifier.html\">JWTVerifier</a></code> fails to verify the decoded String.\n\n</div><div class=\"aside aside-throws\">\n    <p class=\"aside-title\">Throws</p>\n    <code>DecodingError</code> if the decoder fails to decode the String as the provided type.\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">func</span> <span class=\"n\">decode</span><span class=\"o\">&lt;</span><span class=\"kt\">T</span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">type</span><span class=\"p\">:</span> <span class=\"kt\">T</span><span class=\"o\">.</span><span class=\"k\">Type</span><span class=\"p\">,</span> <span class=\"n\">from</span> <span class=\"nv\">data</span><span class=\"p\">:</span> <span class=\"kt\">Data</span><span class=\"p\">)</span> <span class=\"k\">throws</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">T</span> <span class=\"k\">where</span> <span class=\"kt\">T</span> <span class=\"p\">:</span> <span class=\"kt\">Decodable</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>type</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>The JWT type the Data will be decoded as.</p>\n                                </div>\n                              </td>\n                            </tr>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>data</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>The utf8 encoded JWT String that will be decoded.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>A <code><a href=\"../Structs/JWT.html\">JWT</a></code> instance of the provided type.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT10JWTDecoderC4data16base64urlEncoded10Foundation4DataVSgSS_tFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/data(base64urlEncoded:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT10JWTDecoderC4data16base64urlEncoded10Foundation4DataVSgSS_tFZ\">data(base64urlEncoded:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Initializes a new <code>Data</code> from the base64url-encoded <code>String</code> provided. The\nbase64url encoding is defined in RFC4648 (<a href=\"https://tools.ietf.org/html/rfc4648\">https://tools.ietf.org/html/rfc4648</a>).</p>\n\n<p>This is appropriate for reading the header or claims portion of a JWT string.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"nf\">data</span><span class=\"p\">(</span><span class=\"nv\">base64urlEncoded</span><span class=\"p\">:</span> <span class=\"kt\">String</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">Data</span><span class=\"p\">?</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n              </ul>\n            </div>\n          </div>\n        </section>\n\n      </article>\n    </div>\n    <section class=\"footer\">\n      <p>&copy; 2020 <a class=\"link\" href=\"https://github.com/Kitura/Swift-JWT\" target=\"_blank\" rel=\"external\">IBM &amp; Kitura Project Contributors</a>. All rights reserved. (Last updated: 2020-11-25)</p>\n      <p>Generated by <a class=\"link\" href=\"https://github.com/realm/jazzy\" target=\"_blank\" rel=\"external\">jazzy ♪♫ v0.13.6</a>, a <a class=\"link\" href=\"https://realm.io\" target=\"_blank\" rel=\"external\">Realm</a> project.</p>\n    </section>\n  </body>\n</div>\n</html>\n"
  },
  {
    "path": "docs/Classes/JWTEncoder.html",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n  <head>\n    <title>JWTEncoder Class Reference</title>\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"../css/jazzy.css\" />\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"../css/highlight.css\" />\n    <meta charset=\"utf-8\">\n    <script src=\"../js/jquery.min.js\" defer></script>\n    <script src=\"../js/jazzy.js\" defer></script>\n    \n    <script src=\"../js/lunr.min.js\" defer></script>\n    <script src=\"../js/typeahead.jquery.js\" defer></script>\n    <script src=\"../js/jazzy.search.js\" defer></script>\n  </head>\n  <body>\n\n    <a name=\"//apple_ref/swift/Class/JWTEncoder\" class=\"dashAnchor\"></a>\n\n    <a title=\"JWTEncoder Class Reference\"></a>\n\n    <header class=\"header\">\n      <p class=\"header-col header-col--primary\">\n        <a class=\"header-link\" href=\"../index.html\">\n          SwiftJWT 3.6.200 Docs\n        </a>\n         (100% documented)\n      </p>\n    \n      <p class=\"header-col--secondary\">\n        <form role=\"search\" action=\"../search.json\">\n          <input type=\"text\" placeholder=\"Search documentation\" data-typeahead>\n        </form>\n      </p>\n    \n        <p class=\"header-col header-col--secondary\">\n          <a class=\"header-link\" href=\"https://github.com/Kitura/Swift-JWT/\">\n            <img class=\"header-icon\" src=\"../img/gh.png\"/>\n            View on GitHub\n          </a>\n        </p>\n    \n    </header>\n\n    <p class=\"breadcrumbs\">\n      <a class=\"breadcrumb\" href=\"../index.html\">SwiftJWT Reference</a>\n      <img class=\"carat\" src=\"../img/carat.png\" />\n      JWTEncoder Class Reference\n    </p>\n\n    <div class=\"content-wrapper\">\n      <nav class=\"navigation\">\n        <ul class=\"nav-groups\">\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Classes.html\">Classes</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ClaimsMicroProfile.html\">ClaimsMicroProfile</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ClaimsOpenID.html\">ClaimsOpenID</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ClaimsStandardJWT.html\">ClaimsStandardJWT</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/JWTDecoder.html\">JWTDecoder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/JWTEncoder.html\">JWTEncoder</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Protocols.html\">Protocols</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/Claims.html\">Claims</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Structs.html\">Structures</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/AddressClaim.html\">AddressClaim</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Header.html\">Header</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/JWT.html\">JWT</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/JWTError.html\">JWTError</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/JWTSigner.html\">JWTSigner</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/JWTVerifier.html\">JWTVerifier</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/ValidateClaimsResult.html\">ValidateClaimsResult</a>\n              </li>\n            </ul>\n          </li>\n        </ul>\n      </nav>\n      <article class=\"main-content\">\n\n        <section class=\"section\">\n          <div class=\"section-content top-matter\">\n            <h1>JWTEncoder</h1>\n              <div class=\"declaration\">\n                <div class=\"language\">\n                  \n                  <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">class</span> <span class=\"kt\">JWTEncoder</span> <span class=\"p\">:</span> <span class=\"kt\">BodyEncoder</span></code></pre>\n\n                </div>\n              </div>\n            <p>A thread safe encoder that signs the JWT header and claims using the provided algorithm and encodes a <code><a href=\"../Structs/JWT.html\">JWT</a></code> instance as either Data or a JWT String.</p>\n<h3 id='usage-example' class='heading'>Usage Example:</h3>\n<pre class=\"highlight swift\"><code><span class=\"kd\">struct</span> <span class=\"kt\">MyClaims</span><span class=\"p\">:</span> <span class=\"kt\">Claims</span> <span class=\"p\">{</span>\n   <span class=\"k\">var</span> <span class=\"nv\">name</span><span class=\"p\">:</span> <span class=\"kt\">String</span>\n<span class=\"p\">}</span>\n<span class=\"k\">var</span> <span class=\"nv\">jwt</span> <span class=\"o\">=</span> <span class=\"kt\">JWT</span><span class=\"p\">(</span><span class=\"nv\">claims</span><span class=\"p\">:</span> <span class=\"kt\">MyClaims</span><span class=\"p\">(</span><span class=\"nv\">name</span><span class=\"p\">:</span> <span class=\"s\">\"John Doe\"</span><span class=\"p\">))</span>\n<span class=\"k\">let</span> <span class=\"nv\">privateKey</span> <span class=\"o\">=</span> <span class=\"s\">\"&lt;PrivateKey&gt;\"</span><span class=\"o\">.</span><span class=\"nf\">data</span><span class=\"p\">(</span><span class=\"nv\">using</span><span class=\"p\">:</span> <span class=\"o\">.</span><span class=\"n\">utf8</span><span class=\"p\">)</span><span class=\"o\">!</span>\n<span class=\"k\">let</span> <span class=\"nv\">rsaJWTEncoder</span> <span class=\"o\">=</span> <span class=\"kt\">JWTEncoder</span><span class=\"p\">(</span><span class=\"nv\">jwtSigner</span><span class=\"p\">:</span> <span class=\"kt\">JWTSigner</span><span class=\"o\">.</span><span class=\"nf\">rs256</span><span class=\"p\">(</span><span class=\"nv\">privateKey</span><span class=\"p\">:</span> <span class=\"n\">privateKey</span><span class=\"p\">))</span>\n<span class=\"k\">do</span> <span class=\"p\">{</span>\n   <span class=\"k\">let</span> <span class=\"nv\">jwtString</span> <span class=\"o\">=</span> <span class=\"k\">try</span> <span class=\"n\">rsaJWTEncoder</span><span class=\"o\">.</span><span class=\"nf\">encodeToString</span><span class=\"p\">(</span><span class=\"n\">jwt</span><span class=\"p\">)</span>\n<span class=\"p\">}</span> <span class=\"k\">catch</span> <span class=\"p\">{</span>\n   <span class=\"nf\">print</span><span class=\"p\">(</span><span class=\"s\">\"Failed to encode JWT: </span><span class=\"se\">\\(</span><span class=\"n\">error</span><span class=\"se\">)</span><span class=\"s\">\"</span><span class=\"p\">)</span>\n<span class=\"p\">}</span>\n</code></pre>\n\n          </div>\n        </section>\n\n        <section class=\"section\">\n          <div class=\"section-content\">\n            <div class=\"task-group\">\n              <div class=\"task-name-container\">\n                <a name=\"/Initializers\"></a>\n                <a name=\"//apple_ref/swift/Section/Initializers\" class=\"dashAnchor\"></a>\n                <div class=\"section-name-container\">\n                  <a class=\"section-name-link\" href=\"#/Initializers\"></a>\n                  <h3 class=\"section-name\"><p>Initializers</p>\n</h3>\n                </div>\n              </div>\n              <ul class=\"item-container\">\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT10JWTEncoderC9jwtSignerAcA9JWTSignerV_tcfc\"></a>\n                    <a name=\"//apple_ref/swift/Method/init(jwtSigner:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT10JWTEncoderC9jwtSignerAcA9JWTSignerV_tcfc\">init(jwtSigner:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Initialize a <code>JWTEncoder</code> instance with a single <code><a href=\"../Structs/JWTSigner.html\">JWTSigner</a></code>.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"nf\">init</span><span class=\"p\">(</span><span class=\"nv\">jwtSigner</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Structs/JWTSigner.html\">JWTSigner</a></span><span class=\"p\">)</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>jwtSigner</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>The <code><a href=\"../Structs/JWTSigner.html\">JWTSigner</a></code> that will be used to sign the JWT.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>A new instance of <code>JWTEncoder</code>.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT10JWTEncoderC13keyIDToSignerAcA9JWTSignerVSgSSc_tcfc\"></a>\n                    <a name=\"//apple_ref/swift/Method/init(keyIDToSigner:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT10JWTEncoderC13keyIDToSignerAcA9JWTSignerVSgSSc_tcfc\">init(keyIDToSigner:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Initialize a <code>JWTEncoder</code> instance with a function to generate the <code><a href=\"../Structs/JWTSigner.html\">JWTSigner</a></code> from the JWT <code>kid</code> header.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"nf\">init</span><span class=\"p\">(</span><span class=\"nv\">keyIDToSigner</span><span class=\"p\">:</span> <span class=\"kd\">@escaping</span> <span class=\"p\">(</span><span class=\"kt\">String</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Structs/JWTSigner.html\">JWTSigner</a></span><span class=\"p\">?)</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>keyIDToSigner</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>The function to generate the <code><a href=\"../Structs/JWTSigner.html\">JWTSigner</a></code> from the JWT <code>kid</code> header.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>A new instance of <code>JWTEncoder</code>.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n              </ul>\n            </div>\n            <div class=\"task-group\">\n              <div class=\"task-name-container\">\n                <a name=\"/Encode\"></a>\n                <a name=\"//apple_ref/swift/Section/Encode\" class=\"dashAnchor\"></a>\n                <div class=\"section-name-container\">\n                  <a class=\"section-name-link\" href=\"#/Encode\"></a>\n                  <h3 class=\"section-name\"><p>Encode</p>\n</h3>\n                </div>\n              </div>\n              <ul class=\"item-container\">\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT10JWTEncoderC6encodey10Foundation4DataVxKSERzlF\"></a>\n                    <a name=\"//apple_ref/swift/Method/encode(_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT10JWTEncoderC6encodey10Foundation4DataVxKSERzlF\">encode(_:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Encode a <code><a href=\"../Structs/JWT.html\">JWT</a></code> instance into a UTF8 encoded JWT String.</p>\n<div class=\"aside aside-throws\">\n    <p class=\"aside-title\">Throws</p>\n    <code><a href=\"../Structs/JWTError.html#/s:8SwiftJWT8JWTErrorV15invalidUTF8DataACvpZ\">JWTError.invalidUTF8Data</a></code> if the provided Data can&rsquo;t be decoded to a String.\n\n</div><div class=\"aside aside-throws\">\n    <p class=\"aside-title\">Throws</p>\n    <code><a href=\"../Structs/JWTError.html#/s:8SwiftJWT8JWTErrorV12invalidKeyIDACvpZ\">JWTError.invalidKeyID</a></code> if the KeyID <code>kid</code> header fails to generate a jwtSigner.\n\n</div><div class=\"aside aside-throws\">\n    <p class=\"aside-title\">Throws</p>\n    <code>EncodingError</code> if the encoder fails to encode the object as Data.\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">func</span> <span class=\"n\">encode</span><span class=\"o\">&lt;</span><span class=\"kt\">T</span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">value</span><span class=\"p\">:</span> <span class=\"kt\">T</span><span class=\"p\">)</span> <span class=\"k\">throws</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">Data</span> <span class=\"k\">where</span> <span class=\"kt\">T</span> <span class=\"p\">:</span> <span class=\"kt\">Encodable</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>value</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>The JWT instance to be encoded as Data.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>The UTF8 encoded JWT String.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT10JWTEncoderC14encodeToStringySSxKSERzlF\"></a>\n                    <a name=\"//apple_ref/swift/Method/encodeToString(_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT10JWTEncoderC14encodeToStringySSxKSERzlF\">encodeToString(_:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Encode a <code><a href=\"../Structs/JWT.html\">JWT</a></code> instance as a JWT String.</p>\n<div class=\"aside aside-throws\">\n    <p class=\"aside-title\">Throws</p>\n    <code><a href=\"../Structs/JWTError.html#/s:8SwiftJWT8JWTErrorV12invalidKeyIDACvpZ\">JWTError.invalidKeyID</a></code> if the KeyID <code>kid</code> header fails to generate a jwtSigner.\n\n</div><div class=\"aside aside-throws\">\n    <p class=\"aside-title\">Throws</p>\n    <code>EncodingError</code> if the encoder fails to encode the object as Data.\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">func</span> <span class=\"n\">encodeToString</span><span class=\"o\">&lt;</span><span class=\"kt\">T</span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">value</span><span class=\"p\">:</span> <span class=\"kt\">T</span><span class=\"p\">)</span> <span class=\"k\">throws</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">String</span> <span class=\"k\">where</span> <span class=\"kt\">T</span> <span class=\"p\">:</span> <span class=\"kt\">Encodable</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>value</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>The JWT instance to be encoded as a JWT String.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>A JWT String.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT10JWTEncoderC22base64urlEncodedString4dataSS10Foundation4DataV_tFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/base64urlEncodedString(data:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT10JWTEncoderC22base64urlEncodedString4dataSS10Foundation4DataV_tFZ\">base64urlEncodedString(data:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Returns a <code>String</code> representation of this data, encoded in base64url format\nas defined in RFC4648 (<a href=\"https://tools.ietf.org/html/rfc4648\">https://tools.ietf.org/html/rfc4648</a>).</p>\n\n<p>This is the appropriate format for encoding the header and claims of a JWT.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"nf\">base64urlEncodedString</span><span class=\"p\">(</span><span class=\"nv\">data</span><span class=\"p\">:</span> <span class=\"kt\">Data</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">String</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n              </ul>\n            </div>\n          </div>\n        </section>\n\n      </article>\n    </div>\n    <section class=\"footer\">\n      <p>&copy; 2020 <a class=\"link\" href=\"https://github.com/Kitura/Swift-JWT\" target=\"_blank\" rel=\"external\">IBM &amp; Kitura Project Contributors</a>. All rights reserved. (Last updated: 2020-11-25)</p>\n      <p>Generated by <a class=\"link\" href=\"https://github.com/realm/jazzy\" target=\"_blank\" rel=\"external\">jazzy ♪♫ v0.13.6</a>, a <a class=\"link\" href=\"https://realm.io\" target=\"_blank\" rel=\"external\">Realm</a> project.</p>\n    </section>\n  </body>\n</div>\n</html>\n"
  },
  {
    "path": "docs/Classes.html",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n  <head>\n    <title>Classes  Reference</title>\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"css/jazzy.css\" />\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"css/highlight.css\" />\n    <meta charset=\"utf-8\">\n    <script src=\"js/jquery.min.js\" defer></script>\n    <script src=\"js/jazzy.js\" defer></script>\n    \n    <script src=\"js/lunr.min.js\" defer></script>\n    <script src=\"js/typeahead.jquery.js\" defer></script>\n    <script src=\"js/jazzy.search.js\" defer></script>\n  </head>\n  <body>\n\n    <a name=\"//apple_ref/swift/Section/Classes\" class=\"dashAnchor\"></a>\n\n    <a title=\"Classes  Reference\"></a>\n\n    <header class=\"header\">\n      <p class=\"header-col header-col--primary\">\n        <a class=\"header-link\" href=\"index.html\">\n          SwiftJWT 3.6.200 Docs\n        </a>\n         (100% documented)\n      </p>\n    \n      <p class=\"header-col--secondary\">\n        <form role=\"search\" action=\"search.json\">\n          <input type=\"text\" placeholder=\"Search documentation\" data-typeahead>\n        </form>\n      </p>\n    \n        <p class=\"header-col header-col--secondary\">\n          <a class=\"header-link\" href=\"https://github.com/Kitura/Swift-JWT/\">\n            <img class=\"header-icon\" src=\"img/gh.png\"/>\n            View on GitHub\n          </a>\n        </p>\n    \n    </header>\n\n    <p class=\"breadcrumbs\">\n      <a class=\"breadcrumb\" href=\"index.html\">SwiftJWT Reference</a>\n      <img class=\"carat\" src=\"img/carat.png\" />\n      Classes  Reference\n    </p>\n\n    <div class=\"content-wrapper\">\n      <nav class=\"navigation\">\n        <ul class=\"nav-groups\">\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"Classes.html\">Classes</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/ClaimsMicroProfile.html\">ClaimsMicroProfile</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/ClaimsOpenID.html\">ClaimsOpenID</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/ClaimsStandardJWT.html\">ClaimsStandardJWT</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/JWTDecoder.html\">JWTDecoder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/JWTEncoder.html\">JWTEncoder</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"Protocols.html\">Protocols</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Protocols/Claims.html\">Claims</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"Structs.html\">Structures</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Structs/AddressClaim.html\">AddressClaim</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Structs/Header.html\">Header</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Structs/JWT.html\">JWT</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Structs/JWTError.html\">JWTError</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Structs/JWTSigner.html\">JWTSigner</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Structs/JWTVerifier.html\">JWTVerifier</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Structs/ValidateClaimsResult.html\">ValidateClaimsResult</a>\n              </li>\n            </ul>\n          </li>\n        </ul>\n      </nav>\n      <article class=\"main-content\">\n\n        <section class=\"section\">\n          <div class=\"section-content top-matter\">\n            <h1>Classes</h1>\n            <p>The following classes are available globally.</p>\n\n          </div>\n        </section>\n\n        <section class=\"section\">\n          <div class=\"section-content\">\n            <div class=\"task-group\">\n              <ul class=\"item-container\">\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT18ClaimsMicroProfileC\"></a>\n                    <a name=\"//apple_ref/swift/Class/ClaimsMicroProfile\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT18ClaimsMicroProfileC\">ClaimsMicroProfile</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>A class representing the MicroProfile claims as listed in <a href=\"http://microprofile.io/project/eclipse/microprofile-jwt-auth/spec/src/main/asciidoc/interoperability.asciidoc\">MicroProfile specs</a>.</p>\n\n                        <a href=\"Classes/ClaimsMicroProfile.html\" class=\"slightly-smaller\">See more</a>\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">class</span> <span class=\"kt\">ClaimsMicroProfile</span> <span class=\"p\">:</span> <span class=\"kt\"><a href=\"Protocols/Claims.html\">Claims</a></span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT12ClaimsOpenIDC\"></a>\n                    <a name=\"//apple_ref/swift/Class/ClaimsOpenID\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT12ClaimsOpenIDC\">ClaimsOpenID</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>A class representing OpenID related claims as decsribed in <a href=\"http://openid.net/specs/openid-connect-core-1_0.html\">OpenID specs</a>.</p>\n\n                        <a href=\"Classes/ClaimsOpenID.html\" class=\"slightly-smaller\">See more</a>\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">class</span> <span class=\"kt\">ClaimsOpenID</span> <span class=\"p\">:</span> <span class=\"kt\"><a href=\"Protocols/Claims.html\">Claims</a></span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT014ClaimsStandardB0C\"></a>\n                    <a name=\"//apple_ref/swift/Class/ClaimsStandardJWT\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT014ClaimsStandardB0C\">ClaimsStandardJWT</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>A class representing the Standard JWT claims as described in <a href=\"https://tools.ietf.org/html/rfc7519#section-4.1\">RFC7519</a>.</p>\n\n                        <a href=\"Classes/ClaimsStandardJWT.html\" class=\"slightly-smaller\">See more</a>\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">class</span> <span class=\"kt\">ClaimsStandardJWT</span> <span class=\"p\">:</span> <span class=\"kt\"><a href=\"Protocols/Claims.html\">Claims</a></span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n              </ul>\n            </div>\n            <div class=\"task-group\">\n              <div class=\"task-name-container\">\n                <a name=\"/JWTEncoder\"></a>\n                <a name=\"//apple_ref/swift/Section/JWTEncoder\" class=\"dashAnchor\"></a>\n                <div class=\"section-name-container\">\n                  <a class=\"section-name-link\" href=\"#/JWTEncoder\"></a>\n                  <h3 class=\"section-name\"><p>JWTEncoder</p>\n</h3>\n                </div>\n              </div>\n              <ul class=\"item-container\">\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT10JWTEncoderC\"></a>\n                    <a name=\"//apple_ref/swift/Class/JWTEncoder\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT10JWTEncoderC\">JWTEncoder</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>A thread safe encoder that signs the JWT header and claims using the provided algorithm and encodes a <code><a href=\"Structs/JWT.html\">JWT</a></code> instance as either Data or a JWT String.</p>\n<h3 id='usage-example' class='heading'>Usage Example:</h3>\n<pre class=\"highlight swift\"><code><span class=\"kd\">struct</span> <span class=\"kt\">MyClaims</span><span class=\"p\">:</span> <span class=\"kt\">Claims</span> <span class=\"p\">{</span>\n   <span class=\"k\">var</span> <span class=\"nv\">name</span><span class=\"p\">:</span> <span class=\"kt\">String</span>\n<span class=\"p\">}</span>\n<span class=\"k\">var</span> <span class=\"nv\">jwt</span> <span class=\"o\">=</span> <span class=\"kt\">JWT</span><span class=\"p\">(</span><span class=\"nv\">claims</span><span class=\"p\">:</span> <span class=\"kt\">MyClaims</span><span class=\"p\">(</span><span class=\"nv\">name</span><span class=\"p\">:</span> <span class=\"s\">\"John Doe\"</span><span class=\"p\">))</span>\n<span class=\"k\">let</span> <span class=\"nv\">privateKey</span> <span class=\"o\">=</span> <span class=\"s\">\"&lt;PrivateKey&gt;\"</span><span class=\"o\">.</span><span class=\"nf\">data</span><span class=\"p\">(</span><span class=\"nv\">using</span><span class=\"p\">:</span> <span class=\"o\">.</span><span class=\"n\">utf8</span><span class=\"p\">)</span><span class=\"o\">!</span>\n<span class=\"k\">let</span> <span class=\"nv\">rsaJWTEncoder</span> <span class=\"o\">=</span> <span class=\"kt\">JWTEncoder</span><span class=\"p\">(</span><span class=\"nv\">jwtSigner</span><span class=\"p\">:</span> <span class=\"kt\">JWTSigner</span><span class=\"o\">.</span><span class=\"nf\">rs256</span><span class=\"p\">(</span><span class=\"nv\">privateKey</span><span class=\"p\">:</span> <span class=\"n\">privateKey</span><span class=\"p\">))</span>\n<span class=\"k\">do</span> <span class=\"p\">{</span>\n   <span class=\"k\">let</span> <span class=\"nv\">jwtString</span> <span class=\"o\">=</span> <span class=\"k\">try</span> <span class=\"n\">rsaJWTEncoder</span><span class=\"o\">.</span><span class=\"nf\">encodeToString</span><span class=\"p\">(</span><span class=\"n\">jwt</span><span class=\"p\">)</span>\n<span class=\"p\">}</span> <span class=\"k\">catch</span> <span class=\"p\">{</span>\n   <span class=\"nf\">print</span><span class=\"p\">(</span><span class=\"s\">\"Failed to encode JWT: </span><span class=\"se\">\\(</span><span class=\"n\">error</span><span class=\"se\">)</span><span class=\"s\">\"</span><span class=\"p\">)</span>\n<span class=\"p\">}</span>\n</code></pre>\n\n                        <a href=\"Classes/JWTEncoder.html\" class=\"slightly-smaller\">See more</a>\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">class</span> <span class=\"kt\">JWTEncoder</span> <span class=\"p\">:</span> <span class=\"kt\">BodyEncoder</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n              </ul>\n            </div>\n            <div class=\"task-group\">\n              <div class=\"task-name-container\">\n                <a name=\"/JWTDecoder\"></a>\n                <a name=\"//apple_ref/swift/Section/JWTDecoder\" class=\"dashAnchor\"></a>\n                <div class=\"section-name-container\">\n                  <a class=\"section-name-link\" href=\"#/JWTDecoder\"></a>\n                  <h3 class=\"section-name\"><p>JWTDecoder</p>\n</h3>\n                </div>\n              </div>\n              <ul class=\"item-container\">\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT10JWTDecoderC\"></a>\n                    <a name=\"//apple_ref/swift/Class/JWTDecoder\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT10JWTDecoderC\">JWTDecoder</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>A thread safe decoder that decodes either Data or a JWT String as a <code><a href=\"Structs/JWT.html\">JWT</a></code> instance and verifies the signiture using the provided algorithm.</p>\n<h3 id='usage-example' class='heading'>Usage Example:</h3>\n<pre class=\"highlight swift\"><code><span class=\"kd\">struct</span> <span class=\"kt\">MyClaims</span><span class=\"p\">:</span> <span class=\"kt\">Claims</span> <span class=\"p\">{</span>\n   <span class=\"k\">var</span> <span class=\"nv\">name</span><span class=\"p\">:</span> <span class=\"kt\">String</span>\n<span class=\"p\">}</span>\n<span class=\"k\">let</span> <span class=\"nv\">publicKey</span> <span class=\"o\">=</span> <span class=\"s\">\"&lt;PublicKey&gt;\"</span><span class=\"o\">.</span><span class=\"nf\">data</span><span class=\"p\">(</span><span class=\"nv\">using</span><span class=\"p\">:</span> <span class=\"o\">.</span><span class=\"n\">utf8</span><span class=\"p\">)</span><span class=\"o\">!</span>\n<span class=\"k\">let</span> <span class=\"nv\">rsaJWTDecoder</span> <span class=\"o\">=</span> <span class=\"kt\">JWTDecoder</span><span class=\"p\">(</span><span class=\"nv\">jwtVerifier</span><span class=\"p\">:</span> <span class=\"kt\">JWTVerifier</span><span class=\"o\">.</span><span class=\"nf\">rs256</span><span class=\"p\">(</span><span class=\"nv\">publicKey</span><span class=\"p\">:</span> <span class=\"n\">publicKey</span><span class=\"p\">))</span>\n<span class=\"k\">do</span> <span class=\"p\">{</span>\n   <span class=\"k\">let</span> <span class=\"nv\">jwt</span> <span class=\"o\">=</span> <span class=\"k\">try</span> <span class=\"n\">rsaJWTDecoder</span><span class=\"o\">.</span><span class=\"nf\">decode</span><span class=\"p\">(</span><span class=\"kt\">JWT</span><span class=\"o\">&lt;</span><span class=\"kt\">MyClaims</span><span class=\"o\">&gt;.</span><span class=\"k\">self</span><span class=\"p\">,</span> <span class=\"nv\">fromString</span><span class=\"p\">:</span> <span class=\"n\">exampleJWTString</span><span class=\"p\">)</span>\n<span class=\"p\">}</span> <span class=\"k\">catch</span> <span class=\"p\">{</span>\n   <span class=\"nf\">print</span><span class=\"p\">(</span><span class=\"s\">\"Failed to decode JWT: </span><span class=\"se\">\\(</span><span class=\"n\">error</span><span class=\"se\">)</span><span class=\"s\">\"</span><span class=\"p\">)</span>\n<span class=\"p\">}</span>\n</code></pre>\n\n                        <a href=\"Classes/JWTDecoder.html\" class=\"slightly-smaller\">See more</a>\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">class</span> <span class=\"kt\">JWTDecoder</span> <span class=\"p\">:</span> <span class=\"kt\">BodyDecoder</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n              </ul>\n            </div>\n          </div>\n        </section>\n\n      </article>\n    </div>\n    <section class=\"footer\">\n      <p>&copy; 2020 <a class=\"link\" href=\"https://github.com/Kitura/Swift-JWT\" target=\"_blank\" rel=\"external\">IBM &amp; Kitura Project Contributors</a>. All rights reserved. (Last updated: 2020-11-25)</p>\n      <p>Generated by <a class=\"link\" href=\"https://github.com/realm/jazzy\" target=\"_blank\" rel=\"external\">jazzy ♪♫ v0.13.6</a>, a <a class=\"link\" href=\"https://realm.io\" target=\"_blank\" rel=\"external\">Realm</a> project.</p>\n    </section>\n  </body>\n</div>\n</html>\n"
  },
  {
    "path": "docs/Protocols/Claims.html",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n  <head>\n    <title>Claims Protocol Reference</title>\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"../css/jazzy.css\" />\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"../css/highlight.css\" />\n    <meta charset=\"utf-8\">\n    <script src=\"../js/jquery.min.js\" defer></script>\n    <script src=\"../js/jazzy.js\" defer></script>\n    \n    <script src=\"../js/lunr.min.js\" defer></script>\n    <script src=\"../js/typeahead.jquery.js\" defer></script>\n    <script src=\"../js/jazzy.search.js\" defer></script>\n  </head>\n  <body>\n\n    <a name=\"//apple_ref/swift/Protocol/Claims\" class=\"dashAnchor\"></a>\n\n    <a title=\"Claims Protocol Reference\"></a>\n\n    <header class=\"header\">\n      <p class=\"header-col header-col--primary\">\n        <a class=\"header-link\" href=\"../index.html\">\n          SwiftJWT 3.6.200 Docs\n        </a>\n         (100% documented)\n      </p>\n    \n      <p class=\"header-col--secondary\">\n        <form role=\"search\" action=\"../search.json\">\n          <input type=\"text\" placeholder=\"Search documentation\" data-typeahead>\n        </form>\n      </p>\n    \n        <p class=\"header-col header-col--secondary\">\n          <a class=\"header-link\" href=\"https://github.com/Kitura/Swift-JWT/\">\n            <img class=\"header-icon\" src=\"../img/gh.png\"/>\n            View on GitHub\n          </a>\n        </p>\n    \n    </header>\n\n    <p class=\"breadcrumbs\">\n      <a class=\"breadcrumb\" href=\"../index.html\">SwiftJWT Reference</a>\n      <img class=\"carat\" src=\"../img/carat.png\" />\n      Claims Protocol Reference\n    </p>\n\n    <div class=\"content-wrapper\">\n      <nav class=\"navigation\">\n        <ul class=\"nav-groups\">\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Classes.html\">Classes</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ClaimsMicroProfile.html\">ClaimsMicroProfile</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ClaimsOpenID.html\">ClaimsOpenID</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ClaimsStandardJWT.html\">ClaimsStandardJWT</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/JWTDecoder.html\">JWTDecoder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/JWTEncoder.html\">JWTEncoder</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Protocols.html\">Protocols</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/Claims.html\">Claims</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Structs.html\">Structures</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/AddressClaim.html\">AddressClaim</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Header.html\">Header</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/JWT.html\">JWT</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/JWTError.html\">JWTError</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/JWTSigner.html\">JWTSigner</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/JWTVerifier.html\">JWTVerifier</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/ValidateClaimsResult.html\">ValidateClaimsResult</a>\n              </li>\n            </ul>\n          </li>\n        </ul>\n      </nav>\n      <article class=\"main-content\">\n\n        <section class=\"section\">\n          <div class=\"section-content top-matter\">\n            <h1>Claims</h1>\n              <div class=\"declaration\">\n                <div class=\"language\">\n                  \n                  <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">protocol</span> <span class=\"kt\">Claims</span> <span class=\"p\">:</span> <span class=\"kt\">Decodable</span><span class=\"p\">,</span> <span class=\"kt\">Encodable</span></code></pre>\n\n                </div>\n              </div>\n            <p>A protocol for representing the claims on a JSON web token.\n <a href=\"https://tools.ietf.org/html/rfc7519#section-4.1\">https://tools.ietf.org/html/rfc7519#section-4.1</a></p>\n<h3 id='usage-example' class='heading'>Usage Example:</h3>\n<pre class=\"highlight swift\"><code><span class=\"kd\">struct</span> <span class=\"kt\">AdminClaims</span><span class=\"p\">:</span> <span class=\"kt\">Claims</span> <span class=\"p\">{</span>\n    <span class=\"k\">var</span> <span class=\"nv\">sub</span><span class=\"p\">:</span> <span class=\"kt\">String</span>\n    <span class=\"k\">var</span> <span class=\"nv\">isAdmin</span><span class=\"p\">:</span> <span class=\"kt\">Bool</span>\n    <span class=\"k\">var</span> <span class=\"nv\">exp</span><span class=\"p\">:</span> <span class=\"kt\">Date</span><span class=\"p\">?</span>\n<span class=\"p\">}</span>\n <span class=\"k\">let</span> <span class=\"nv\">jwt</span> <span class=\"o\">=</span> <span class=\"kt\">JWT</span><span class=\"p\">(</span><span class=\"nv\">claims</span><span class=\"p\">:</span> <span class=\"kt\">AdminClaims</span><span class=\"p\">(</span><span class=\"nv\">sub</span><span class=\"p\">:</span> <span class=\"s\">\"Kitura\"</span><span class=\"p\">,</span> <span class=\"nv\">isAdmin</span><span class=\"p\">:</span> <span class=\"kc\">true</span><span class=\"p\">,</span> <span class=\"nv\">exp</span><span class=\"p\">:</span> <span class=\"kt\">Date</span><span class=\"p\">(</span><span class=\"nv\">timeIntervalSinceNow</span><span class=\"p\">:</span> <span class=\"mi\">3600</span><span class=\"p\">)))</span>\n</code></pre>\n\n          </div>\n        </section>\n\n        <section class=\"section\">\n          <div class=\"section-content\">\n            <div class=\"task-group\">\n              <ul class=\"item-container\">\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT6ClaimsP3exp10Foundation4DateVSgvp\"></a>\n                    <a name=\"//apple_ref/swift/Property/exp\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT6ClaimsP3exp10Foundation4DateVSgvp\">exp</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Default implementation\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>The &ldquo;exp&rdquo; (expiration time) claim identifies the expiration time on\nor after which the JWT MUST NOT be accepted for processing.  The\nprocessing of the &ldquo;exp&rdquo; claim requires that the current date/time\nMUST be before the expiration date/time listed in the &ldquo;exp&rdquo; claim.\nImplementers MAY provide for some small leeway, usually no more than\na few minutes, to account for clock skew.</p>\n\n                      </div>\n                      <h4>Default Implementation</h4>\n                      <div class=\"default_impl abstract\">\n                        \n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"k\">var</span> <span class=\"nv\">exp</span><span class=\"p\">:</span> <span class=\"kt\">Date</span><span class=\"p\">?</span> <span class=\"p\">{</span> <span class=\"k\">get</span> <span class=\"p\">}</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT6ClaimsP3nbf10Foundation4DateVSgvp\"></a>\n                    <a name=\"//apple_ref/swift/Property/nbf\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT6ClaimsP3nbf10Foundation4DateVSgvp\">nbf</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Default implementation\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>The &ldquo;nbf&rdquo; (not before) claim identifies the time before which the JWT\nMUST NOT be accepted for processing.  The processing of the &ldquo;nbf&rdquo;\nclaim requires that the current date/time MUST be after or equal to\nthe not-before date/time listed in the &ldquo;nbf&rdquo; claim.  Implementers MAY\nprovide for some small leeway, usually no more than a few minutes, to\naccount for clock skew.</p>\n\n                      </div>\n                      <h4>Default Implementation</h4>\n                      <div class=\"default_impl abstract\">\n                        \n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"k\">var</span> <span class=\"nv\">nbf</span><span class=\"p\">:</span> <span class=\"kt\">Date</span><span class=\"p\">?</span> <span class=\"p\">{</span> <span class=\"k\">get</span> <span class=\"p\">}</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT6ClaimsP3iat10Foundation4DateVSgvp\"></a>\n                    <a name=\"//apple_ref/swift/Property/iat\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT6ClaimsP3iat10Foundation4DateVSgvp\">iat</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Default implementation\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>The &ldquo;iat&rdquo; (issued at) claim identifies the time at which the JWT was\nissued.  This claim can be used to determine the age of the JWT.</p>\n\n                      </div>\n                      <h4>Default Implementation</h4>\n                      <div class=\"default_impl abstract\">\n                        \n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"k\">var</span> <span class=\"nv\">iat</span><span class=\"p\">:</span> <span class=\"kt\">Date</span><span class=\"p\">?</span> <span class=\"p\">{</span> <span class=\"k\">get</span> <span class=\"p\">}</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT6ClaimsP6encodeSSyKF\"></a>\n                    <a name=\"//apple_ref/swift/Method/encode()\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT6ClaimsP6encodeSSyKF\">encode()</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Default implementation\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Encode the Claim object as a Base64 String.</p>\n\n                      </div>\n                      <h4>Default Implementation</h4>\n                      <div class=\"default_impl abstract\">\n                        \n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">func</span> <span class=\"nf\">encode</span><span class=\"p\">()</span> <span class=\"k\">throws</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">String</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n              </ul>\n            </div>\n          </div>\n        </section>\n\n      </article>\n    </div>\n    <section class=\"footer\">\n      <p>&copy; 2020 <a class=\"link\" href=\"https://github.com/Kitura/Swift-JWT\" target=\"_blank\" rel=\"external\">IBM &amp; Kitura Project Contributors</a>. All rights reserved. (Last updated: 2020-11-25)</p>\n      <p>Generated by <a class=\"link\" href=\"https://github.com/realm/jazzy\" target=\"_blank\" rel=\"external\">jazzy ♪♫ v0.13.6</a>, a <a class=\"link\" href=\"https://realm.io\" target=\"_blank\" rel=\"external\">Realm</a> project.</p>\n    </section>\n  </body>\n</div>\n</html>\n"
  },
  {
    "path": "docs/Protocols.html",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n  <head>\n    <title>Protocols  Reference</title>\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"css/jazzy.css\" />\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"css/highlight.css\" />\n    <meta charset=\"utf-8\">\n    <script src=\"js/jquery.min.js\" defer></script>\n    <script src=\"js/jazzy.js\" defer></script>\n    \n    <script src=\"js/lunr.min.js\" defer></script>\n    <script src=\"js/typeahead.jquery.js\" defer></script>\n    <script src=\"js/jazzy.search.js\" defer></script>\n  </head>\n  <body>\n\n    <a name=\"//apple_ref/swift/Section/Protocols\" class=\"dashAnchor\"></a>\n\n    <a title=\"Protocols  Reference\"></a>\n\n    <header class=\"header\">\n      <p class=\"header-col header-col--primary\">\n        <a class=\"header-link\" href=\"index.html\">\n          SwiftJWT 3.6.200 Docs\n        </a>\n         (100% documented)\n      </p>\n    \n      <p class=\"header-col--secondary\">\n        <form role=\"search\" action=\"search.json\">\n          <input type=\"text\" placeholder=\"Search documentation\" data-typeahead>\n        </form>\n      </p>\n    \n        <p class=\"header-col header-col--secondary\">\n          <a class=\"header-link\" href=\"https://github.com/Kitura/Swift-JWT/\">\n            <img class=\"header-icon\" src=\"img/gh.png\"/>\n            View on GitHub\n          </a>\n        </p>\n    \n    </header>\n\n    <p class=\"breadcrumbs\">\n      <a class=\"breadcrumb\" href=\"index.html\">SwiftJWT Reference</a>\n      <img class=\"carat\" src=\"img/carat.png\" />\n      Protocols  Reference\n    </p>\n\n    <div class=\"content-wrapper\">\n      <nav class=\"navigation\">\n        <ul class=\"nav-groups\">\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"Classes.html\">Classes</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/ClaimsMicroProfile.html\">ClaimsMicroProfile</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/ClaimsOpenID.html\">ClaimsOpenID</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/ClaimsStandardJWT.html\">ClaimsStandardJWT</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/JWTDecoder.html\">JWTDecoder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/JWTEncoder.html\">JWTEncoder</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"Protocols.html\">Protocols</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Protocols/Claims.html\">Claims</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"Structs.html\">Structures</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Structs/AddressClaim.html\">AddressClaim</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Structs/Header.html\">Header</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Structs/JWT.html\">JWT</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Structs/JWTError.html\">JWTError</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Structs/JWTSigner.html\">JWTSigner</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Structs/JWTVerifier.html\">JWTVerifier</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Structs/ValidateClaimsResult.html\">ValidateClaimsResult</a>\n              </li>\n            </ul>\n          </li>\n        </ul>\n      </nav>\n      <article class=\"main-content\">\n\n        <section class=\"section\">\n          <div class=\"section-content top-matter\">\n            <h1>Protocols</h1>\n            <p>The following protocols are available globally.</p>\n\n          </div>\n        </section>\n\n        <section class=\"section\">\n          <div class=\"section-content\">\n            <div class=\"task-group\">\n              <div class=\"task-name-container\">\n                <a name=\"/Claims\"></a>\n                <a name=\"//apple_ref/swift/Section/Claims\" class=\"dashAnchor\"></a>\n                <div class=\"section-name-container\">\n                  <a class=\"section-name-link\" href=\"#/Claims\"></a>\n                  <h3 class=\"section-name\"><p>Claims</p>\n</h3>\n                </div>\n              </div>\n              <ul class=\"item-container\">\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT6ClaimsP\"></a>\n                    <a name=\"//apple_ref/swift/Protocol/Claims\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT6ClaimsP\">Claims</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>A protocol for representing the claims on a JSON web token.\n <a href=\"https://tools.ietf.org/html/rfc7519#section-4.1\">https://tools.ietf.org/html/rfc7519#section-4.1</a></p>\n<h3 id='usage-example' class='heading'>Usage Example:</h3>\n<pre class=\"highlight swift\"><code><span class=\"kd\">struct</span> <span class=\"kt\">AdminClaims</span><span class=\"p\">:</span> <span class=\"kt\">Claims</span> <span class=\"p\">{</span>\n    <span class=\"k\">var</span> <span class=\"nv\">sub</span><span class=\"p\">:</span> <span class=\"kt\">String</span>\n    <span class=\"k\">var</span> <span class=\"nv\">isAdmin</span><span class=\"p\">:</span> <span class=\"kt\">Bool</span>\n    <span class=\"k\">var</span> <span class=\"nv\">exp</span><span class=\"p\">:</span> <span class=\"kt\">Date</span><span class=\"p\">?</span>\n<span class=\"p\">}</span>\n <span class=\"k\">let</span> <span class=\"nv\">jwt</span> <span class=\"o\">=</span> <span class=\"kt\">JWT</span><span class=\"p\">(</span><span class=\"nv\">claims</span><span class=\"p\">:</span> <span class=\"kt\">AdminClaims</span><span class=\"p\">(</span><span class=\"nv\">sub</span><span class=\"p\">:</span> <span class=\"s\">\"Kitura\"</span><span class=\"p\">,</span> <span class=\"nv\">isAdmin</span><span class=\"p\">:</span> <span class=\"kc\">true</span><span class=\"p\">,</span> <span class=\"nv\">exp</span><span class=\"p\">:</span> <span class=\"kt\">Date</span><span class=\"p\">(</span><span class=\"nv\">timeIntervalSinceNow</span><span class=\"p\">:</span> <span class=\"mi\">3600</span><span class=\"p\">)))</span>\n</code></pre>\n\n                        <a href=\"Protocols/Claims.html\" class=\"slightly-smaller\">See more</a>\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">protocol</span> <span class=\"kt\">Claims</span> <span class=\"p\">:</span> <span class=\"kt\">Decodable</span><span class=\"p\">,</span> <span class=\"kt\">Encodable</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n              </ul>\n            </div>\n          </div>\n        </section>\n\n      </article>\n    </div>\n    <section class=\"footer\">\n      <p>&copy; 2020 <a class=\"link\" href=\"https://github.com/Kitura/Swift-JWT\" target=\"_blank\" rel=\"external\">IBM &amp; Kitura Project Contributors</a>. All rights reserved. (Last updated: 2020-11-25)</p>\n      <p>Generated by <a class=\"link\" href=\"https://github.com/realm/jazzy\" target=\"_blank\" rel=\"external\">jazzy ♪♫ v0.13.6</a>, a <a class=\"link\" href=\"https://realm.io\" target=\"_blank\" rel=\"external\">Realm</a> project.</p>\n    </section>\n  </body>\n</div>\n</html>\n"
  },
  {
    "path": "docs/Structs/AddressClaim.html",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n  <head>\n    <title>AddressClaim Structure Reference</title>\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"../css/jazzy.css\" />\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"../css/highlight.css\" />\n    <meta charset=\"utf-8\">\n    <script src=\"../js/jquery.min.js\" defer></script>\n    <script src=\"../js/jazzy.js\" defer></script>\n    \n    <script src=\"../js/lunr.min.js\" defer></script>\n    <script src=\"../js/typeahead.jquery.js\" defer></script>\n    <script src=\"../js/jazzy.search.js\" defer></script>\n  </head>\n  <body>\n\n    <a name=\"//apple_ref/swift/Struct/AddressClaim\" class=\"dashAnchor\"></a>\n\n    <a title=\"AddressClaim Structure Reference\"></a>\n\n    <header class=\"header\">\n      <p class=\"header-col header-col--primary\">\n        <a class=\"header-link\" href=\"../index.html\">\n          SwiftJWT 3.6.200 Docs\n        </a>\n         (100% documented)\n      </p>\n    \n      <p class=\"header-col--secondary\">\n        <form role=\"search\" action=\"../search.json\">\n          <input type=\"text\" placeholder=\"Search documentation\" data-typeahead>\n        </form>\n      </p>\n    \n        <p class=\"header-col header-col--secondary\">\n          <a class=\"header-link\" href=\"https://github.com/Kitura/Swift-JWT/\">\n            <img class=\"header-icon\" src=\"../img/gh.png\"/>\n            View on GitHub\n          </a>\n        </p>\n    \n    </header>\n\n    <p class=\"breadcrumbs\">\n      <a class=\"breadcrumb\" href=\"../index.html\">SwiftJWT Reference</a>\n      <img class=\"carat\" src=\"../img/carat.png\" />\n      AddressClaim Structure Reference\n    </p>\n\n    <div class=\"content-wrapper\">\n      <nav class=\"navigation\">\n        <ul class=\"nav-groups\">\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Classes.html\">Classes</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ClaimsMicroProfile.html\">ClaimsMicroProfile</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ClaimsOpenID.html\">ClaimsOpenID</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ClaimsStandardJWT.html\">ClaimsStandardJWT</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/JWTDecoder.html\">JWTDecoder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/JWTEncoder.html\">JWTEncoder</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Protocols.html\">Protocols</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/Claims.html\">Claims</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Structs.html\">Structures</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/AddressClaim.html\">AddressClaim</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Header.html\">Header</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/JWT.html\">JWT</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/JWTError.html\">JWTError</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/JWTSigner.html\">JWTSigner</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/JWTVerifier.html\">JWTVerifier</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/ValidateClaimsResult.html\">ValidateClaimsResult</a>\n              </li>\n            </ul>\n          </li>\n        </ul>\n      </nav>\n      <article class=\"main-content\">\n\n        <section class=\"section\">\n          <div class=\"section-content top-matter\">\n            <h1>AddressClaim</h1>\n              <div class=\"declaration\">\n                <div class=\"language\">\n                  \n                  <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">struct</span> <span class=\"kt\">AddressClaim</span> <span class=\"p\">:</span> <span class=\"kt\">Codable</span></code></pre>\n\n                </div>\n              </div>\n            <p>Struct representing an AddressClaim as defined in the <a href=\"http://openid.net/specs/openid-connect-core-1_0.html\">OpenID specs</a>.</p>\n\n          </div>\n        </section>\n\n        <section class=\"section\">\n          <div class=\"section-content\">\n            <div class=\"task-group\">\n              <ul class=\"item-container\">\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT12AddressClaimV9formattedSSSgvp\"></a>\n                    <a name=\"//apple_ref/swift/Property/formatted\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT12AddressClaimV9formattedSSSgvp\">formatted</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Full mailing address, formatted for display or use on a mailing label. This field MAY contain multiple lines, separated by newlines. Newlines can be represented either as a carriage return/line feed pair (&ldquo;\\r\\n&rdquo;) or as a single line feed character (&ldquo;\\n&rdquo;).</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"k\">var</span> <span class=\"nv\">formatted</span><span class=\"p\">:</span> <span class=\"kt\">String</span><span class=\"p\">?</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT12AddressClaimV14street_addressSSSgvp\"></a>\n                    <a name=\"//apple_ref/swift/Property/street_address\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT12AddressClaimV14street_addressSSSgvp\">street_address</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Full street address component, which MAY include house number, street name, Post Office Box, and multi-line extended street address information. This field MAY contain multiple lines, separated by newlines. Newlines can be represented either as a carriage return/line feed pair (&ldquo;\\r\\n&rdquo;) or as a single line feed character (&ldquo;\\n&rdquo;).</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"k\">var</span> <span class=\"nv\">street_address</span><span class=\"p\">:</span> <span class=\"kt\">String</span><span class=\"p\">?</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT12AddressClaimV8localitySSSgvp\"></a>\n                    <a name=\"//apple_ref/swift/Property/locality\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT12AddressClaimV8localitySSSgvp\">locality</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>City or locality component.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"k\">var</span> <span class=\"nv\">locality</span><span class=\"p\">:</span> <span class=\"kt\">String</span><span class=\"p\">?</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT12AddressClaimV6regionSSSgvp\"></a>\n                    <a name=\"//apple_ref/swift/Property/region\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT12AddressClaimV6regionSSSgvp\">region</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>State, province, prefecture, or region component.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"k\">var</span> <span class=\"nv\">region</span><span class=\"p\">:</span> <span class=\"kt\">String</span><span class=\"p\">?</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT12AddressClaimV11postal_codeSSSgvp\"></a>\n                    <a name=\"//apple_ref/swift/Property/postal_code\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT12AddressClaimV11postal_codeSSSgvp\">postal_code</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Zip code or postal code component.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"k\">var</span> <span class=\"nv\">postal_code</span><span class=\"p\">:</span> <span class=\"kt\">String</span><span class=\"p\">?</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT12AddressClaimV7countrySSSgvp\"></a>\n                    <a name=\"//apple_ref/swift/Property/country\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT12AddressClaimV7countrySSSgvp\">country</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Country name component.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"k\">var</span> <span class=\"nv\">country</span><span class=\"p\">:</span> <span class=\"kt\">String</span><span class=\"p\">?</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n              </ul>\n            </div>\n          </div>\n        </section>\n\n      </article>\n    </div>\n    <section class=\"footer\">\n      <p>&copy; 2020 <a class=\"link\" href=\"https://github.com/Kitura/Swift-JWT\" target=\"_blank\" rel=\"external\">IBM &amp; Kitura Project Contributors</a>. All rights reserved. (Last updated: 2020-11-25)</p>\n      <p>Generated by <a class=\"link\" href=\"https://github.com/realm/jazzy\" target=\"_blank\" rel=\"external\">jazzy ♪♫ v0.13.6</a>, a <a class=\"link\" href=\"https://realm.io\" target=\"_blank\" rel=\"external\">Realm</a> project.</p>\n    </section>\n  </body>\n</div>\n</html>\n"
  },
  {
    "path": "docs/Structs/Header.html",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n  <head>\n    <title>Header Structure Reference</title>\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"../css/jazzy.css\" />\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"../css/highlight.css\" />\n    <meta charset=\"utf-8\">\n    <script src=\"../js/jquery.min.js\" defer></script>\n    <script src=\"../js/jazzy.js\" defer></script>\n    \n    <script src=\"../js/lunr.min.js\" defer></script>\n    <script src=\"../js/typeahead.jquery.js\" defer></script>\n    <script src=\"../js/jazzy.search.js\" defer></script>\n  </head>\n  <body>\n\n    <a name=\"//apple_ref/swift/Struct/Header\" class=\"dashAnchor\"></a>\n\n    <a title=\"Header Structure Reference\"></a>\n\n    <header class=\"header\">\n      <p class=\"header-col header-col--primary\">\n        <a class=\"header-link\" href=\"../index.html\">\n          SwiftJWT 3.6.200 Docs\n        </a>\n         (100% documented)\n      </p>\n    \n      <p class=\"header-col--secondary\">\n        <form role=\"search\" action=\"../search.json\">\n          <input type=\"text\" placeholder=\"Search documentation\" data-typeahead>\n        </form>\n      </p>\n    \n        <p class=\"header-col header-col--secondary\">\n          <a class=\"header-link\" href=\"https://github.com/Kitura/Swift-JWT/\">\n            <img class=\"header-icon\" src=\"../img/gh.png\"/>\n            View on GitHub\n          </a>\n        </p>\n    \n    </header>\n\n    <p class=\"breadcrumbs\">\n      <a class=\"breadcrumb\" href=\"../index.html\">SwiftJWT Reference</a>\n      <img class=\"carat\" src=\"../img/carat.png\" />\n      Header Structure Reference\n    </p>\n\n    <div class=\"content-wrapper\">\n      <nav class=\"navigation\">\n        <ul class=\"nav-groups\">\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Classes.html\">Classes</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ClaimsMicroProfile.html\">ClaimsMicroProfile</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ClaimsOpenID.html\">ClaimsOpenID</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ClaimsStandardJWT.html\">ClaimsStandardJWT</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/JWTDecoder.html\">JWTDecoder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/JWTEncoder.html\">JWTEncoder</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Protocols.html\">Protocols</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/Claims.html\">Claims</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Structs.html\">Structures</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/AddressClaim.html\">AddressClaim</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Header.html\">Header</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/JWT.html\">JWT</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/JWTError.html\">JWTError</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/JWTSigner.html\">JWTSigner</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/JWTVerifier.html\">JWTVerifier</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/ValidateClaimsResult.html\">ValidateClaimsResult</a>\n              </li>\n            </ul>\n          </li>\n        </ul>\n      </nav>\n      <article class=\"main-content\">\n\n        <section class=\"section\">\n          <div class=\"section-content top-matter\">\n            <h1>Header</h1>\n              <div class=\"declaration\">\n                <div class=\"language\">\n                  \n                  <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">struct</span> <span class=\"kt\">Header</span> <span class=\"p\">:</span> <span class=\"kt\">Codable</span></code></pre>\n\n                </div>\n              </div>\n            <p>A representation of a JSON Web Token header.\n<a href=\"https://tools.ietf.org/html/rfc7515#section-4.1\">https://tools.ietf.org/html/rfc7515#section-4.1</a></p>\n<h3 id='usage-example' class='heading'>Usage Example:</h3>\n<pre class=\"highlight swift\"><code><span class=\"kd\">struct</span> <span class=\"kt\">MyClaims</span><span class=\"p\">:</span> <span class=\"kt\">Claims</span> <span class=\"p\">{</span>\n   <span class=\"k\">var</span> <span class=\"nv\">name</span><span class=\"p\">:</span> <span class=\"kt\">String</span>\n<span class=\"p\">}</span>\n<span class=\"k\">let</span> <span class=\"nv\">myHeader</span> <span class=\"o\">=</span> <span class=\"kt\">Header</span><span class=\"p\">(</span><span class=\"nv\">kid</span><span class=\"p\">:</span> <span class=\"s\">\"keyID\"</span><span class=\"p\">)</span>\n<span class=\"k\">let</span> <span class=\"nv\">jwt</span> <span class=\"o\">=</span> <span class=\"kt\">JWT</span><span class=\"p\">(</span><span class=\"nv\">header</span><span class=\"p\">:</span> <span class=\"n\">myHeader</span><span class=\"p\">,</span> <span class=\"nv\">claims</span><span class=\"p\">:</span> <span class=\"kt\">MyClaims</span><span class=\"p\">(</span><span class=\"nv\">name</span><span class=\"p\">:</span> <span class=\"s\">\"Kitura\"</span><span class=\"p\">))</span>\n</code></pre>\n\n          </div>\n        </section>\n\n        <section class=\"section\">\n          <div class=\"section-content\">\n            <div class=\"task-group\">\n              <ul class=\"item-container\">\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT6HeaderV3typSSSgvp\"></a>\n                    <a name=\"//apple_ref/swift/Property/typ\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT6HeaderV3typSSSgvp\">typ</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Type Header Parameter</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"k\">var</span> <span class=\"nv\">typ</span><span class=\"p\">:</span> <span class=\"kt\">String</span><span class=\"p\">?</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT6HeaderV3algSSSgvp\"></a>\n                    <a name=\"//apple_ref/swift/Property/alg\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT6HeaderV3algSSSgvp\">alg</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Algorithm Header Parameter</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">internal(set)</span> <span class=\"k\">var</span> <span class=\"nv\">alg</span><span class=\"p\">:</span> <span class=\"kt\">String</span><span class=\"p\">?</span> <span class=\"p\">{</span> <span class=\"k\">get</span> <span class=\"p\">}</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT6HeaderV3jkuSSSgvp\"></a>\n                    <a name=\"//apple_ref/swift/Property/jku\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT6HeaderV3jkuSSSgvp\">jku</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>JSON Web Token Set URL Header Parameter</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"k\">var</span> <span class=\"nv\">jku</span><span class=\"p\">:</span> <span class=\"kt\">String</span><span class=\"p\">?</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT6HeaderV3jwkSSSgvp\"></a>\n                    <a name=\"//apple_ref/swift/Property/jwk\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT6HeaderV3jwkSSSgvp\">jwk</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>JSON Web Key Header Parameter</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"k\">var</span> <span class=\"nv\">jwk</span><span class=\"p\">:</span> <span class=\"kt\">String</span><span class=\"p\">?</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT6HeaderV3kidSSSgvp\"></a>\n                    <a name=\"//apple_ref/swift/Property/kid\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT6HeaderV3kidSSSgvp\">kid</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Key ID Header Parameter</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"k\">var</span> <span class=\"nv\">kid</span><span class=\"p\">:</span> <span class=\"kt\">String</span><span class=\"p\">?</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT6HeaderV3x5uSSSgvp\"></a>\n                    <a name=\"//apple_ref/swift/Property/x5u\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT6HeaderV3x5uSSSgvp\">x5u</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>X.509 URL Header Parameter</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"k\">var</span> <span class=\"nv\">x5u</span><span class=\"p\">:</span> <span class=\"kt\">String</span><span class=\"p\">?</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT6HeaderV3x5cSaySSGSgvp\"></a>\n                    <a name=\"//apple_ref/swift/Property/x5c\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT6HeaderV3x5cSaySSGSgvp\">x5c</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>X.509 Certificate Chain Header Parameter</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"k\">var</span> <span class=\"nv\">x5c</span><span class=\"p\">:</span> <span class=\"p\">[</span><span class=\"kt\">String</span><span class=\"p\">]?</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT6HeaderV3x5tSSSgvp\"></a>\n                    <a name=\"//apple_ref/swift/Property/x5t\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT6HeaderV3x5tSSSgvp\">x5t</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>X.509 Certificate SHA-1 Thumbprint Header Parameter</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"k\">var</span> <span class=\"nv\">x5t</span><span class=\"p\">:</span> <span class=\"kt\">String</span><span class=\"p\">?</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT6HeaderV7x5tS256SSSgvp\"></a>\n                    <a name=\"//apple_ref/swift/Property/x5tS256\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT6HeaderV7x5tS256SSSgvp\">x5tS256</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>X.509 Certificate SHA-256 Thumbprint Header Parameter</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"k\">var</span> <span class=\"nv\">x5tS256</span><span class=\"p\">:</span> <span class=\"kt\">String</span><span class=\"p\">?</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT6HeaderV3ctySSSgvp\"></a>\n                    <a name=\"//apple_ref/swift/Property/cty\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT6HeaderV3ctySSSgvp\">cty</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Content Type Header Parameter</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"k\">var</span> <span class=\"nv\">cty</span><span class=\"p\">:</span> <span class=\"kt\">String</span><span class=\"p\">?</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT6HeaderV4critSaySSGSgvp\"></a>\n                    <a name=\"//apple_ref/swift/Property/crit\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT6HeaderV4critSaySSGSgvp\">crit</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Critical Header Parameter</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"k\">var</span> <span class=\"nv\">crit</span><span class=\"p\">:</span> <span class=\"p\">[</span><span class=\"kt\">String</span><span class=\"p\">]?</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT6HeaderV3typ3jku3jwk3kid3x5u3x5c3x5t0J4S2563cty4critACSSSg_A4NSaySSGSgA3nPtcfc\"></a>\n                    <a name=\"//apple_ref/swift/Method/init(typ:jku:jwk:kid:x5u:x5c:x5t:x5tS256:cty:crit:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT6HeaderV3typ3jku3jwk3kid3x5u3x5c3x5t0J4S2563cty4critACSSSg_A4NSaySSGSgA3nPtcfc\">init(typ:<wbr>jku:<wbr>jwk:<wbr>kid:<wbr>x5u:<wbr>x5c:<wbr>x5t:<wbr>x5tS256:<wbr>cty:<wbr>crit:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Initialize a <code>Header</code> instance.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"nf\">init</span><span class=\"p\">(</span>\n    <span class=\"nv\">typ</span><span class=\"p\">:</span> <span class=\"kt\">String</span><span class=\"p\">?</span> <span class=\"o\">=</span> <span class=\"s\">\"JWT\"</span><span class=\"p\">,</span>\n    <span class=\"nv\">jku</span><span class=\"p\">:</span> <span class=\"kt\">String</span><span class=\"p\">?</span> <span class=\"o\">=</span> <span class=\"kc\">nil</span><span class=\"p\">,</span>\n    <span class=\"nv\">jwk</span><span class=\"p\">:</span> <span class=\"kt\">String</span><span class=\"p\">?</span> <span class=\"o\">=</span> <span class=\"kc\">nil</span><span class=\"p\">,</span>\n    <span class=\"nv\">kid</span><span class=\"p\">:</span> <span class=\"kt\">String</span><span class=\"p\">?</span> <span class=\"o\">=</span> <span class=\"kc\">nil</span><span class=\"p\">,</span>\n    <span class=\"nv\">x5u</span><span class=\"p\">:</span> <span class=\"kt\">String</span><span class=\"p\">?</span> <span class=\"o\">=</span> <span class=\"kc\">nil</span><span class=\"p\">,</span>\n    <span class=\"nv\">x5c</span><span class=\"p\">:</span> <span class=\"p\">[</span><span class=\"kt\">String</span><span class=\"p\">]?</span> <span class=\"o\">=</span> <span class=\"kc\">nil</span><span class=\"p\">,</span>\n    <span class=\"nv\">x5t</span><span class=\"p\">:</span> <span class=\"kt\">String</span><span class=\"p\">?</span> <span class=\"o\">=</span> <span class=\"kc\">nil</span><span class=\"p\">,</span>\n    <span class=\"nv\">x5tS256</span><span class=\"p\">:</span> <span class=\"kt\">String</span><span class=\"p\">?</span> <span class=\"o\">=</span> <span class=\"kc\">nil</span><span class=\"p\">,</span>\n    <span class=\"nv\">cty</span><span class=\"p\">:</span> <span class=\"kt\">String</span><span class=\"p\">?</span> <span class=\"o\">=</span> <span class=\"kc\">nil</span><span class=\"p\">,</span>\n    <span class=\"nv\">crit</span><span class=\"p\">:</span> <span class=\"p\">[</span><span class=\"kt\">String</span><span class=\"p\">]?</span> <span class=\"o\">=</span> <span class=\"kc\">nil</span>\n<span class=\"p\">)</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>typ</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>The Type Header Parameter</p>\n                                </div>\n                              </td>\n                            </tr>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>jku</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>The JSON Web Token Set URL Header Parameter</p>\n                                </div>\n                              </td>\n                            </tr>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>jwk</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>The JSON Web Key Header Parameter</p>\n                                </div>\n                              </td>\n                            </tr>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>kid</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>The Key ID Header Parameter</p>\n                                </div>\n                              </td>\n                            </tr>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>x5u</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>The X.509 URL Header Parameter</p>\n                                </div>\n                              </td>\n                            </tr>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>x5c</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>The X.509 Certificate Chain Header Parameter</p>\n                                </div>\n                              </td>\n                            </tr>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>x5t</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>The X.509 Certificate SHA-1 Thumbprint Header Parameter</p>\n                                </div>\n                              </td>\n                            </tr>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>x5tS256</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>X.509 Certificate SHA-256 Thumbprint Header Parameter</p>\n                                </div>\n                              </td>\n                            </tr>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>cty</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>The Content Type Header Parameter</p>\n                                </div>\n                              </td>\n                            </tr>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>crit</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>The Critical Header Parameter</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>A new instance of <code>Header</code>.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n              </ul>\n            </div>\n          </div>\n        </section>\n\n      </article>\n    </div>\n    <section class=\"footer\">\n      <p>&copy; 2020 <a class=\"link\" href=\"https://github.com/Kitura/Swift-JWT\" target=\"_blank\" rel=\"external\">IBM &amp; Kitura Project Contributors</a>. All rights reserved. (Last updated: 2020-11-25)</p>\n      <p>Generated by <a class=\"link\" href=\"https://github.com/realm/jazzy\" target=\"_blank\" rel=\"external\">jazzy ♪♫ v0.13.6</a>, a <a class=\"link\" href=\"https://realm.io\" target=\"_blank\" rel=\"external\">Realm</a> project.</p>\n    </section>\n  </body>\n</div>\n</html>\n"
  },
  {
    "path": "docs/Structs/JWT.html",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n  <head>\n    <title>JWT Structure Reference</title>\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"../css/jazzy.css\" />\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"../css/highlight.css\" />\n    <meta charset=\"utf-8\">\n    <script src=\"../js/jquery.min.js\" defer></script>\n    <script src=\"../js/jazzy.js\" defer></script>\n    \n    <script src=\"../js/lunr.min.js\" defer></script>\n    <script src=\"../js/typeahead.jquery.js\" defer></script>\n    <script src=\"../js/jazzy.search.js\" defer></script>\n  </head>\n  <body>\n\n    <a name=\"//apple_ref/swift/Struct/JWT\" class=\"dashAnchor\"></a>\n\n    <a title=\"JWT Structure Reference\"></a>\n\n    <header class=\"header\">\n      <p class=\"header-col header-col--primary\">\n        <a class=\"header-link\" href=\"../index.html\">\n          SwiftJWT 3.6.200 Docs\n        </a>\n         (100% documented)\n      </p>\n    \n      <p class=\"header-col--secondary\">\n        <form role=\"search\" action=\"../search.json\">\n          <input type=\"text\" placeholder=\"Search documentation\" data-typeahead>\n        </form>\n      </p>\n    \n        <p class=\"header-col header-col--secondary\">\n          <a class=\"header-link\" href=\"https://github.com/Kitura/Swift-JWT/\">\n            <img class=\"header-icon\" src=\"../img/gh.png\"/>\n            View on GitHub\n          </a>\n        </p>\n    \n    </header>\n\n    <p class=\"breadcrumbs\">\n      <a class=\"breadcrumb\" href=\"../index.html\">SwiftJWT Reference</a>\n      <img class=\"carat\" src=\"../img/carat.png\" />\n      JWT Structure Reference\n    </p>\n\n    <div class=\"content-wrapper\">\n      <nav class=\"navigation\">\n        <ul class=\"nav-groups\">\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Classes.html\">Classes</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ClaimsMicroProfile.html\">ClaimsMicroProfile</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ClaimsOpenID.html\">ClaimsOpenID</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ClaimsStandardJWT.html\">ClaimsStandardJWT</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/JWTDecoder.html\">JWTDecoder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/JWTEncoder.html\">JWTEncoder</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Protocols.html\">Protocols</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/Claims.html\">Claims</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Structs.html\">Structures</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/AddressClaim.html\">AddressClaim</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Header.html\">Header</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/JWT.html\">JWT</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/JWTError.html\">JWTError</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/JWTSigner.html\">JWTSigner</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/JWTVerifier.html\">JWTVerifier</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/ValidateClaimsResult.html\">ValidateClaimsResult</a>\n              </li>\n            </ul>\n          </li>\n        </ul>\n      </nav>\n      <article class=\"main-content\">\n\n        <section class=\"section\">\n          <div class=\"section-content top-matter\">\n            <h1>JWT</h1>\n              <div class=\"declaration\">\n                <div class=\"language\">\n                  \n                  <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">struct</span> <span class=\"kt\">JWT</span><span class=\"o\">&lt;</span><span class=\"kt\">T</span><span class=\"o\">&gt;</span> <span class=\"p\">:</span> <span class=\"kt\">Codable</span> <span class=\"k\">where</span> <span class=\"kt\">T</span> <span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Protocols/Claims.html\">Claims</a></span></code></pre>\n\n                </div>\n              </div>\n            <p>A struct representing the <code><a href=\"../Structs/Header.html\">Header</a></code> and <code><a href=\"../Protocols/Claims.html\">Claims</a></code> of a JSON Web Token.</p>\n<h3 id='usage-example' class='heading'>Usage Example:</h3>\n<pre class=\"highlight swift\"><code><span class=\"kd\">struct</span> <span class=\"kt\">MyClaims</span><span class=\"p\">:</span> <span class=\"kt\">Claims</span> <span class=\"p\">{</span>\n   <span class=\"k\">var</span> <span class=\"nv\">name</span><span class=\"p\">:</span> <span class=\"kt\">String</span>\n<span class=\"p\">}</span>\n<span class=\"k\">let</span> <span class=\"nv\">jwt</span> <span class=\"o\">=</span> <span class=\"kt\">JWT</span><span class=\"p\">(</span><span class=\"nv\">claims</span><span class=\"p\">:</span> <span class=\"kt\">MyClaims</span><span class=\"p\">(</span><span class=\"nv\">name</span><span class=\"p\">:</span> <span class=\"s\">\"Kitura\"</span><span class=\"p\">))</span>\n<span class=\"k\">let</span> <span class=\"nv\">key</span> <span class=\"o\">=</span> <span class=\"s\">\"&lt;PrivateKey&gt;\"</span><span class=\"o\">.</span><span class=\"nf\">data</span><span class=\"p\">(</span><span class=\"nv\">using</span><span class=\"p\">:</span> <span class=\"o\">.</span><span class=\"n\">utf8</span><span class=\"p\">)</span><span class=\"o\">!</span>\n<span class=\"k\">let</span> <span class=\"nv\">signedJWT</span><span class=\"p\">:</span> <span class=\"kt\">String</span><span class=\"p\">?</span> <span class=\"o\">=</span> <span class=\"k\">try</span><span class=\"p\">?</span> <span class=\"n\">jwt</span><span class=\"o\">.</span><span class=\"nf\">sign</span><span class=\"p\">(</span><span class=\"nv\">using</span><span class=\"p\">:</span> <span class=\"o\">.</span><span class=\"nf\">rs256</span><span class=\"p\">(</span><span class=\"nv\">key</span><span class=\"p\">:</span> <span class=\"n\">key</span><span class=\"p\">,</span> <span class=\"nv\">keyType</span><span class=\"p\">:</span> <span class=\"o\">.</span><span class=\"n\">privateKey</span><span class=\"p\">))</span>\n</code></pre>\n\n          </div>\n        </section>\n\n        <section class=\"section\">\n          <div class=\"section-content\">\n            <div class=\"task-group\">\n              <ul class=\"item-container\">\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT0B0V6headerAA6HeaderVvp\"></a>\n                    <a name=\"//apple_ref/swift/Property/header\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT0B0V6headerAA6HeaderVvp\">header</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>The JWT header.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"k\">var</span> <span class=\"nv\">header</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Structs/Header.html\">Header</a></span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT0B0V6claimsxvp\"></a>\n                    <a name=\"//apple_ref/swift/Property/claims\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT0B0V6claimsxvp\">claims</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>The JWT claims</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"k\">var</span> <span class=\"nv\">claims</span><span class=\"p\">:</span> <span class=\"kt\">T</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT0B0V6header6claimsACyxGAA6HeaderV_xtcfc\"></a>\n                    <a name=\"//apple_ref/swift/Method/init(header:claims:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT0B0V6header6claimsACyxGAA6HeaderV_xtcfc\">init(header:<wbr>claims:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Initialize a <code>JWT</code> instance from a <code><a href=\"../Structs/Header.html\">Header</a></code> and <code><a href=\"../Protocols/Claims.html\">Claims</a></code>.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"nf\">init</span><span class=\"p\">(</span><span class=\"nv\">header</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Structs/Header.html\">Header</a></span> <span class=\"o\">=</span> <span class=\"kt\"><a href=\"../Structs/Header.html\">Header</a></span><span class=\"p\">(),</span> <span class=\"nv\">claims</span><span class=\"p\">:</span> <span class=\"kt\">T</span><span class=\"p\">)</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>header</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>A JSON Web Token header object.</p>\n                                </div>\n                              </td>\n                            </tr>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>claims</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>A JSON Web Token claims object.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>A new instance of <code>JWT</code>.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT0B0V9jwtString8verifierACyxGSS_AA11JWTVerifierVtKcfc\"></a>\n                    <a name=\"//apple_ref/swift/Method/init(jwtString:verifier:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT0B0V9jwtString8verifierACyxGSS_AA11JWTVerifierVtKcfc\">init(jwtString:<wbr>verifier:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Initialize a <code>JWT</code> instance from a JWT String.\nThe signature will be verified using the provided JWTVerifier.\nThe time based standard JWT claims will be verified with <code>validateClaims()</code>.\nIf the string is not a valid JWT, or the verification fails, the initializer returns nil.</p>\n<div class=\"aside aside-throws\">\n    <p class=\"aside-title\">Throws</p>\n    <code><a href=\"../Structs/JWTError.html#/s:8SwiftJWT8JWTErrorV16invalidJWTStringACvpZ\">JWTError.invalidJWTString</a></code> if the provided String is not in the form mandated by the JWT specification.\n\n</div><div class=\"aside aside-throws\">\n    <p class=\"aside-title\">Throws</p>\n    <code><a href=\"../Structs/JWTError.html#/s:8SwiftJWT8JWTErrorV18failedVerificationACvpZ\">JWTError.failedVerification</a></code> if the verifier fails to verify the jwtString.\n\n</div><div class=\"aside aside-throws\">\n    <p class=\"aside-title\">Throws</p>\n    A DecodingError if the JSONDecoder throws an error while decoding the JWT.\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"nf\">init</span><span class=\"p\">(</span><span class=\"nv\">jwtString</span><span class=\"p\">:</span> <span class=\"kt\">String</span><span class=\"p\">,</span> <span class=\"nv\">verifier</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Structs/JWTVerifier.html\">JWTVerifier</a></span> <span class=\"o\">=</span> <span class=\"o\">.</span><span class=\"k\">none</span><span class=\"p\">)</span> <span class=\"k\">throws</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>jwt</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>A String with the encoded and signed JWT.</p>\n                                </div>\n                              </td>\n                            </tr>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>verifier</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>The <code><a href=\"../Structs/JWTVerifier.html\">JWTVerifier</a></code> used to verify the JWT.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An instance of <code>JWT</code> if the decoding succeeds.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT0B0V4sign5usingSSAA9JWTSignerV_tKF\"></a>\n                    <a name=\"//apple_ref/swift/Method/sign(using:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT0B0V4sign5usingSSAA9JWTSignerV_tKF\">sign(using:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Sign the JWT using the given algorithm and encode the header, claims and signature as a JWT String.</p>\n<div class=\"aside aside-note\">\n    <p class=\"aside-title\">Note</p>\n    <p>This function will set header.alg field to the name of the signing algorithm.</p>\n\n</div><div class=\"aside aside-throws\">\n    <p class=\"aside-title\">Throws</p>\n    <p>An EncodingError if the JSONEncoder throws an error while encoding the JWT.</p>\n\n</div><div class=\"aside aside-throws\">\n    <p class=\"aside-title\">Throws</p>\n    <p><code><a href=\"../Structs/JWTError.html#/s:8SwiftJWT8JWTErrorV14osVersionToLowACvpZ\">JWTError.osVersionToLow</a></code> if not using macOS 10.12.0 (Sierra) or iOS 10.0 or higher.</p>\n\n</div><div class=\"aside aside-throws\">\n    <p class=\"aside-title\">Throws</p>\n    <p>A Signing error if the jwtSigner is unable to sign the JWT with the provided key.</p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"k\">mutating</span> <span class=\"kd\">func</span> <span class=\"nf\">sign</span><span class=\"p\">(</span><span class=\"n\">using</span> <span class=\"nv\">jwtSigner</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Structs/JWTSigner.html\">JWTSigner</a></span><span class=\"p\">)</span> <span class=\"k\">throws</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">String</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>A String with the encoded and signed JWT.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT0B0V6verify_5usingSbSS_AA11JWTVerifierVtFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/verify(_:using:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT0B0V6verify_5usingSbSS_AA11JWTVerifierVtFZ\">verify(_:<wbr>using:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Verify the signature of the encoded JWT using the given algorithm.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"nf\">verify</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">jwt</span><span class=\"p\">:</span> <span class=\"kt\">String</span><span class=\"p\">,</span> <span class=\"n\">using</span> <span class=\"nv\">jwtVerifier</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Structs/JWTVerifier.html\">JWTVerifier</a></span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">Bool</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>jwt</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>A String with the encoded and signed JWT.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>A Bool indicating whether the verification was successful.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT0B0V14validateClaims6leewayAA08ValidateD6ResultVSd_tF\"></a>\n                    <a name=\"//apple_ref/swift/Method/validateClaims(leeway:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT0B0V14validateClaims6leewayAA08ValidateD6ResultVSd_tF\">validateClaims(leeway:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Validate the time based standard JWT claims.\nThis function checks that the &ldquo;exp&rdquo; (expiration time) is in the future\nand the &ldquo;iat&rdquo; (issued at) and &ldquo;nbf&rdquo; (not before) headers are in the past,</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">func</span> <span class=\"nf\">validateClaims</span><span class=\"p\">(</span><span class=\"nv\">leeway</span><span class=\"p\">:</span> <span class=\"kt\">TimeInterval</span> <span class=\"o\">=</span> <span class=\"mi\">0</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Structs/ValidateClaimsResult.html\">ValidateClaimsResult</a></span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>leeway</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>The time in seconds that the JWT can be invalid but still accepted to account for clock differences.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>A value of <code><a href=\"../Structs/ValidateClaimsResult.html\">ValidateClaimsResult</a></code>.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n              </ul>\n            </div>\n          </div>\n        </section>\n\n      </article>\n    </div>\n    <section class=\"footer\">\n      <p>&copy; 2020 <a class=\"link\" href=\"https://github.com/Kitura/Swift-JWT\" target=\"_blank\" rel=\"external\">IBM &amp; Kitura Project Contributors</a>. All rights reserved. (Last updated: 2020-11-25)</p>\n      <p>Generated by <a class=\"link\" href=\"https://github.com/realm/jazzy\" target=\"_blank\" rel=\"external\">jazzy ♪♫ v0.13.6</a>, a <a class=\"link\" href=\"https://realm.io\" target=\"_blank\" rel=\"external\">Realm</a> project.</p>\n    </section>\n  </body>\n</div>\n</html>\n"
  },
  {
    "path": "docs/Structs/JWTError.html",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n  <head>\n    <title>JWTError Structure Reference</title>\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"../css/jazzy.css\" />\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"../css/highlight.css\" />\n    <meta charset=\"utf-8\">\n    <script src=\"../js/jquery.min.js\" defer></script>\n    <script src=\"../js/jazzy.js\" defer></script>\n    \n    <script src=\"../js/lunr.min.js\" defer></script>\n    <script src=\"../js/typeahead.jquery.js\" defer></script>\n    <script src=\"../js/jazzy.search.js\" defer></script>\n  </head>\n  <body>\n\n    <a name=\"//apple_ref/swift/Struct/JWTError\" class=\"dashAnchor\"></a>\n\n    <a title=\"JWTError Structure Reference\"></a>\n\n    <header class=\"header\">\n      <p class=\"header-col header-col--primary\">\n        <a class=\"header-link\" href=\"../index.html\">\n          SwiftJWT 3.6.200 Docs\n        </a>\n         (100% documented)\n      </p>\n    \n      <p class=\"header-col--secondary\">\n        <form role=\"search\" action=\"../search.json\">\n          <input type=\"text\" placeholder=\"Search documentation\" data-typeahead>\n        </form>\n      </p>\n    \n        <p class=\"header-col header-col--secondary\">\n          <a class=\"header-link\" href=\"https://github.com/Kitura/Swift-JWT/\">\n            <img class=\"header-icon\" src=\"../img/gh.png\"/>\n            View on GitHub\n          </a>\n        </p>\n    \n    </header>\n\n    <p class=\"breadcrumbs\">\n      <a class=\"breadcrumb\" href=\"../index.html\">SwiftJWT Reference</a>\n      <img class=\"carat\" src=\"../img/carat.png\" />\n      JWTError Structure Reference\n    </p>\n\n    <div class=\"content-wrapper\">\n      <nav class=\"navigation\">\n        <ul class=\"nav-groups\">\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Classes.html\">Classes</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ClaimsMicroProfile.html\">ClaimsMicroProfile</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ClaimsOpenID.html\">ClaimsOpenID</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ClaimsStandardJWT.html\">ClaimsStandardJWT</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/JWTDecoder.html\">JWTDecoder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/JWTEncoder.html\">JWTEncoder</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Protocols.html\">Protocols</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/Claims.html\">Claims</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Structs.html\">Structures</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/AddressClaim.html\">AddressClaim</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Header.html\">Header</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/JWT.html\">JWT</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/JWTError.html\">JWTError</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/JWTSigner.html\">JWTSigner</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/JWTVerifier.html\">JWTVerifier</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/ValidateClaimsResult.html\">ValidateClaimsResult</a>\n              </li>\n            </ul>\n          </li>\n        </ul>\n      </nav>\n      <article class=\"main-content\">\n\n        <section class=\"section\">\n          <div class=\"section-content top-matter\">\n            <h1>JWTError</h1>\n              <div class=\"declaration\">\n                <div class=\"language\">\n                  \n                  <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">struct</span> <span class=\"kt\">JWTError</span> <span class=\"p\">:</span> <span class=\"kt\">Error</span><span class=\"p\">,</span> <span class=\"kt\">Equatable</span></code></pre>\n\n                </div>\n              </div>\n            <p>A struct representing the different errors that can be thrown by SwiftJWT</p>\n\n          </div>\n        </section>\n\n        <section class=\"section\">\n          <div class=\"section-content\">\n            <div class=\"task-group\">\n              <ul class=\"item-container\">\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT8JWTErrorV20localizedDescriptionSSvp\"></a>\n                    <a name=\"//apple_ref/swift/Property/localizedDescription\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT8JWTErrorV20localizedDescriptionSSvp\">localizedDescription</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>A human readable description of the error.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"k\">let</span> <span class=\"nv\">localizedDescription</span><span class=\"p\">:</span> <span class=\"kt\">String</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT8JWTErrorV16invalidJWTStringACvpZ\"></a>\n                    <a name=\"//apple_ref/swift/Variable/invalidJWTString\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT8JWTErrorV16invalidJWTStringACvpZ\">invalidJWTString</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Error when an invalid JWT String is provided</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">static</span> <span class=\"k\">let</span> <span class=\"nv\">invalidJWTString</span><span class=\"p\">:</span> <span class=\"kt\">JWTError</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT8JWTErrorV18failedVerificationACvpZ\"></a>\n                    <a name=\"//apple_ref/swift/Variable/failedVerification\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT8JWTErrorV18failedVerificationACvpZ\">failedVerification</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Error when the JWT signiture fails verification.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">static</span> <span class=\"k\">let</span> <span class=\"nv\">failedVerification</span><span class=\"p\">:</span> <span class=\"kt\">JWTError</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT8JWTErrorV14osVersionToLowACvpZ\"></a>\n                    <a name=\"//apple_ref/swift/Variable/osVersionToLow\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT8JWTErrorV14osVersionToLowACvpZ\">osVersionToLow</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Error when using RSA encryption with an OS version that is too low.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">static</span> <span class=\"k\">let</span> <span class=\"nv\">osVersionToLow</span><span class=\"p\">:</span> <span class=\"kt\">JWTError</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT8JWTErrorV17invalidPrivateKeyACvpZ\"></a>\n                    <a name=\"//apple_ref/swift/Variable/invalidPrivateKey\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT8JWTErrorV17invalidPrivateKeyACvpZ\">invalidPrivateKey</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Error when an invalid private key is provided for RSA encryption.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">static</span> <span class=\"k\">let</span> <span class=\"nv\">invalidPrivateKey</span><span class=\"p\">:</span> <span class=\"kt\">JWTError</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT8JWTErrorV15invalidUTF8DataACvpZ\"></a>\n                    <a name=\"//apple_ref/swift/Variable/invalidUTF8Data\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT8JWTErrorV15invalidUTF8DataACvpZ\">invalidUTF8Data</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Error when the provided Data cannot be decoded to a String</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">static</span> <span class=\"k\">let</span> <span class=\"nv\">invalidUTF8Data</span><span class=\"p\">:</span> <span class=\"kt\">JWTError</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT8JWTErrorV12invalidKeyIDACvpZ\"></a>\n                    <a name=\"//apple_ref/swift/Variable/invalidKeyID\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT8JWTErrorV12invalidKeyIDACvpZ\">invalidKeyID</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Error when the KeyID field <code>kid</code> in the JWT header fails to generate a JWTSigner or JWTVerifier</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">static</span> <span class=\"k\">let</span> <span class=\"nv\">invalidKeyID</span><span class=\"p\">:</span> <span class=\"kt\">JWTError</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT8JWTErrorV17missingPEMHeadersACvpZ\"></a>\n                    <a name=\"//apple_ref/swift/Variable/missingPEMHeaders\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT8JWTErrorV17missingPEMHeadersACvpZ\">missingPEMHeaders</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Error when a PEM string is provided without the expected PEM headers/footers. (e.g. &mdash;&ndash;BEGIN PRIVATE KEY&mdash;&ndash;)</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">static</span> <span class=\"k\">let</span> <span class=\"nv\">missingPEMHeaders</span><span class=\"p\">:</span> <span class=\"kt\">JWTError</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT8JWTErrorV2eeoiySbAC_ACtFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/==(_:_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT8JWTErrorV2eeoiySbAC_ACtFZ\">==(_:<wbr>_:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Function to check if JWTErrors are equal. Required for equatable protocol.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"o\">==</span> <span class=\"p\">(</span><span class=\"nv\">lhs</span><span class=\"p\">:</span> <span class=\"kt\">JWTError</span><span class=\"p\">,</span> <span class=\"nv\">rhs</span><span class=\"p\">:</span> <span class=\"kt\">JWTError</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">Bool</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT8JWTErrorV2teoiySbAC_s5Error_ptFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/~=(_:_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT8JWTErrorV2teoiySbAC_s5Error_ptFZ\">~=(_:<wbr>_:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Function to enable pattern matching against generic Errors.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"o\">~=</span> <span class=\"p\">(</span><span class=\"nv\">lhs</span><span class=\"p\">:</span> <span class=\"kt\">JWTError</span><span class=\"p\">,</span> <span class=\"nv\">rhs</span><span class=\"p\">:</span> <span class=\"kt\">Error</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">Bool</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n              </ul>\n            </div>\n          </div>\n        </section>\n\n      </article>\n    </div>\n    <section class=\"footer\">\n      <p>&copy; 2020 <a class=\"link\" href=\"https://github.com/Kitura/Swift-JWT\" target=\"_blank\" rel=\"external\">IBM &amp; Kitura Project Contributors</a>. All rights reserved. (Last updated: 2020-11-25)</p>\n      <p>Generated by <a class=\"link\" href=\"https://github.com/realm/jazzy\" target=\"_blank\" rel=\"external\">jazzy ♪♫ v0.13.6</a>, a <a class=\"link\" href=\"https://realm.io\" target=\"_blank\" rel=\"external\">Realm</a> project.</p>\n    </section>\n  </body>\n</div>\n</html>\n"
  },
  {
    "path": "docs/Structs/JWTSigner.html",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n  <head>\n    <title>JWTSigner Structure Reference</title>\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"../css/jazzy.css\" />\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"../css/highlight.css\" />\n    <meta charset=\"utf-8\">\n    <script src=\"../js/jquery.min.js\" defer></script>\n    <script src=\"../js/jazzy.js\" defer></script>\n    \n    <script src=\"../js/lunr.min.js\" defer></script>\n    <script src=\"../js/typeahead.jquery.js\" defer></script>\n    <script src=\"../js/jazzy.search.js\" defer></script>\n  </head>\n  <body>\n\n    <a name=\"//apple_ref/swift/Struct/JWTSigner\" class=\"dashAnchor\"></a>\n\n    <a title=\"JWTSigner Structure Reference\"></a>\n\n    <header class=\"header\">\n      <p class=\"header-col header-col--primary\">\n        <a class=\"header-link\" href=\"../index.html\">\n          SwiftJWT 3.6.200 Docs\n        </a>\n         (100% documented)\n      </p>\n    \n      <p class=\"header-col--secondary\">\n        <form role=\"search\" action=\"../search.json\">\n          <input type=\"text\" placeholder=\"Search documentation\" data-typeahead>\n        </form>\n      </p>\n    \n        <p class=\"header-col header-col--secondary\">\n          <a class=\"header-link\" href=\"https://github.com/Kitura/Swift-JWT/\">\n            <img class=\"header-icon\" src=\"../img/gh.png\"/>\n            View on GitHub\n          </a>\n        </p>\n    \n    </header>\n\n    <p class=\"breadcrumbs\">\n      <a class=\"breadcrumb\" href=\"../index.html\">SwiftJWT Reference</a>\n      <img class=\"carat\" src=\"../img/carat.png\" />\n      JWTSigner Structure Reference\n    </p>\n\n    <div class=\"content-wrapper\">\n      <nav class=\"navigation\">\n        <ul class=\"nav-groups\">\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Classes.html\">Classes</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ClaimsMicroProfile.html\">ClaimsMicroProfile</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ClaimsOpenID.html\">ClaimsOpenID</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ClaimsStandardJWT.html\">ClaimsStandardJWT</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/JWTDecoder.html\">JWTDecoder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/JWTEncoder.html\">JWTEncoder</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Protocols.html\">Protocols</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/Claims.html\">Claims</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Structs.html\">Structures</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/AddressClaim.html\">AddressClaim</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Header.html\">Header</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/JWT.html\">JWT</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/JWTError.html\">JWTError</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/JWTSigner.html\">JWTSigner</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/JWTVerifier.html\">JWTVerifier</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/ValidateClaimsResult.html\">ValidateClaimsResult</a>\n              </li>\n            </ul>\n          </li>\n        </ul>\n      </nav>\n      <article class=\"main-content\">\n\n        <section class=\"section\">\n          <div class=\"section-content top-matter\">\n            <h1>JWTSigner</h1>\n              <div class=\"declaration\">\n                <div class=\"language\">\n                  \n                  <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">struct</span> <span class=\"kt\">JWTSigner</span></code></pre>\n\n                </div>\n              </div>\n            <p>A struct that will be used to sign the JWT <code><a href=\"../Structs/Header.html\">Header</a></code> and <code><a href=\"../Protocols/Claims.html\">Claims</a></code> and generate a signed JWT.\nFor RSA and ECDSA, the provided key should be a .utf8 encoded PEM String.</p>\n<h3 id='usage-example' class='heading'>Usage Example:</h3>\n<pre class=\"highlight swift\"><code><span class=\"k\">let</span> <span class=\"nv\">pemString</span> <span class=\"o\">=</span> <span class=\"s\">\"\"\"\n-----BEGIN RSA PRIVATE KEY-----\nMIICWwIBAAKBgQDdlatRjRjogo3WojgGHFHYLugdUWAY9iR3fy4arWNA1KoS8kVw\n33cJibXr8bvwUAUparCwlvdbH6dvEOfou0/gCFQsHUfQrSDv+MuSUMAe8jzKE4qW\n+jK+xQU9a03GUnKHkkle+Q0pX/g6jXZ7r1/xAK5Do2kQ+X5xK9cipRgEKwIDAQAB\nAoGAD+onAtVye4ic7VR7V50DF9bOnwRwNXrARcDhq9LWNRrRGElESYYTQ6EbatXS\n3MCyjjX2eMhu/aF5YhXBwkppwxg+EOmXeh+MzL7Zh284OuPbkglAaGhV9bb6/5Cp\nuGb1esyPbYW+Ty2PC0GSZfIXkXs76jXAu9TOBvD0ybc2YlkCQQDywg2R/7t3Q2OE\n2+yo382CLJdrlSLVROWKwb4tb2PjhY4XAwV8d1vy0RenxTB+K5Mu57uVSTHtrMK0\nGAtFr833AkEA6avx20OHo61Yela/4k5kQDtjEf1N0LfI+BcWZtxsS3jDM3i1Hp0K\nSu5rsCPb8acJo5RO26gGVrfAsDcIXKC+bQJAZZ2XIpsitLyPpuiMOvBbzPavd4gY\n6Z8KWrfYzJoI/Q9FuBo6rKwl4BFoToD7WIUS+hpkagwWiz+6zLoX1dbOZwJACmH5\nfSSjAkLRi54PKJ8TFUeOP15h9sQzydI8zJU+upvDEKZsZc/UhT/SySDOxQ4G/523\nY0sz/OZtSWcol/UMgQJALesy++GdvoIDLfJX5GBQpuFgFenRiRDabxrE9MNUZ2aP\nFaFp+DyAe+b4nDwuJaW2LURbr8AEZga7oQj0uYxcYw==\n-----END RSA PRIVATE KEY-----\n\"\"\"</span>\n<span class=\"k\">let</span> <span class=\"nv\">privateKey</span> <span class=\"o\">=</span> <span class=\"n\">pemString</span><span class=\"o\">.</span><span class=\"nf\">data</span><span class=\"p\">(</span><span class=\"nv\">using</span><span class=\"p\">:</span> <span class=\"o\">.</span><span class=\"n\">utf8</span><span class=\"p\">)</span><span class=\"o\">!</span>\n<span class=\"k\">let</span> <span class=\"nv\">jwtSigner</span> <span class=\"o\">=</span> <span class=\"kt\">JWTSigner</span><span class=\"o\">.</span><span class=\"nf\">rs256</span><span class=\"p\">(</span><span class=\"nv\">privateKey</span><span class=\"p\">:</span> <span class=\"n\">privateKey</span><span class=\"p\">)</span>\n<span class=\"kd\">struct</span> <span class=\"kt\">MyClaims</span><span class=\"p\">:</span> <span class=\"kt\">Claims</span> <span class=\"p\">{</span>\n   <span class=\"k\">var</span> <span class=\"nv\">name</span><span class=\"p\">:</span> <span class=\"kt\">String</span>\n<span class=\"p\">}</span>\n<span class=\"k\">let</span> <span class=\"nv\">jwt</span> <span class=\"o\">=</span> <span class=\"kt\">JWT</span><span class=\"p\">(</span><span class=\"nv\">claims</span><span class=\"p\">:</span> <span class=\"kt\">MyClaims</span><span class=\"p\">(</span><span class=\"nv\">name</span><span class=\"p\">:</span> <span class=\"s\">\"Kitura\"</span><span class=\"p\">))</span>\n<span class=\"k\">let</span> <span class=\"nv\">signedJWT</span> <span class=\"o\">=</span> <span class=\"k\">try</span><span class=\"p\">?</span> <span class=\"n\">jwt</span><span class=\"o\">.</span><span class=\"nf\">sign</span><span class=\"p\">(</span><span class=\"nv\">using</span><span class=\"p\">:</span> <span class=\"n\">jwtSigner</span><span class=\"p\">)</span>\n</code></pre>\n\n          </div>\n        </section>\n\n        <section class=\"section\">\n          <div class=\"section-content\">\n            <div class=\"task-group\">\n              <ul class=\"item-container\">\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT9JWTSignerV5rs25610privateKeyAC10Foundation4DataV_tFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/rs256(privateKey:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT9JWTSignerV5rs25610privateKeyAC10Foundation4DataV_tFZ\">rs256(privateKey:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Initialize a JWTSigner using the RSA 256 bits algorithm and the provided privateKey.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"nf\">rs256</span><span class=\"p\">(</span><span class=\"nv\">privateKey</span><span class=\"p\">:</span> <span class=\"kt\">Data</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">JWTSigner</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>privateKey</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>The UTF8 encoded PEM private key, with a &ldquo;BEGIN RSA PRIVATE KEY&rdquo; header.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT9JWTSignerV5rs38410privateKeyAC10Foundation4DataV_tFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/rs384(privateKey:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT9JWTSignerV5rs38410privateKeyAC10Foundation4DataV_tFZ\">rs384(privateKey:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Initialize a JWTSigner using the RSA 384 bits algorithm and the provided privateKey.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"nf\">rs384</span><span class=\"p\">(</span><span class=\"nv\">privateKey</span><span class=\"p\">:</span> <span class=\"kt\">Data</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">JWTSigner</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>privateKey</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>The UTF8 encoded PEM private key, with a &ldquo;BEGIN RSA PRIVATE KEY&rdquo; header.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT9JWTSignerV5rs51210privateKeyAC10Foundation4DataV_tFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/rs512(privateKey:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT9JWTSignerV5rs51210privateKeyAC10Foundation4DataV_tFZ\">rs512(privateKey:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Initialize a JWTSigner using the RSA 512 bits algorithm and the provided privateKey.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"nf\">rs512</span><span class=\"p\">(</span><span class=\"nv\">privateKey</span><span class=\"p\">:</span> <span class=\"kt\">Data</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">JWTSigner</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>privateKey</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>The UTF8 encoded PEM private key, with a &ldquo;BEGIN RSA PRIVATE KEY&rdquo; header.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT9JWTSignerV5ps25610privateKeyAC10Foundation4DataV_tFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/ps256(privateKey:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT9JWTSignerV5ps25610privateKeyAC10Foundation4DataV_tFZ\">ps256(privateKey:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Initialize a JWTSigner using the RSA-PSS 256 bits algorithm and the provided privateKey.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"nf\">ps256</span><span class=\"p\">(</span><span class=\"nv\">privateKey</span><span class=\"p\">:</span> <span class=\"kt\">Data</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">JWTSigner</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>privateKey</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>The UTF8 encoded PEM private key, with a &ldquo;BEGIN RSA PRIVATE KEY&rdquo; header.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT9JWTSignerV5ps38410privateKeyAC10Foundation4DataV_tFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/ps384(privateKey:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT9JWTSignerV5ps38410privateKeyAC10Foundation4DataV_tFZ\">ps384(privateKey:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Initialize a JWTSigner using the RSA-PSS 384 bits algorithm and the provided privateKey.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"nf\">ps384</span><span class=\"p\">(</span><span class=\"nv\">privateKey</span><span class=\"p\">:</span> <span class=\"kt\">Data</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">JWTSigner</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>privateKey</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>The UTF8 encoded PEM private key, with a &ldquo;BEGIN RSA PRIVATE KEY&rdquo; header.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT9JWTSignerV5ps51210privateKeyAC10Foundation4DataV_tFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/ps512(privateKey:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT9JWTSignerV5ps51210privateKeyAC10Foundation4DataV_tFZ\">ps512(privateKey:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Initialize a JWTSigner using the RSA-PSS 512 bits algorithm and the provided privateKey.\nThis signer requires at least a 2048 bit RSA key.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"nf\">ps512</span><span class=\"p\">(</span><span class=\"nv\">privateKey</span><span class=\"p\">:</span> <span class=\"kt\">Data</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">JWTSigner</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>privateKey</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>The UTF8 encoded PEM private key, with a &ldquo;BEGIN RSA PRIVATE KEY&rdquo; header.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT9JWTSignerV5hs2563keyAC10Foundation4DataV_tFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/hs256(key:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT9JWTSignerV5hs2563keyAC10Foundation4DataV_tFZ\">hs256(key:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Initialize a JWTSigner using the HMAC 256 bits algorithm and the provided privateKey.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"nf\">hs256</span><span class=\"p\">(</span><span class=\"nv\">key</span><span class=\"p\">:</span> <span class=\"kt\">Data</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">JWTSigner</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>key</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>The HMAC symmetric password data.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT9JWTSignerV5hs3843keyAC10Foundation4DataV_tFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/hs384(key:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT9JWTSignerV5hs3843keyAC10Foundation4DataV_tFZ\">hs384(key:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Initialize a JWTSigner using the HMAC 384 bits algorithm and the provided privateKey.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"nf\">hs384</span><span class=\"p\">(</span><span class=\"nv\">key</span><span class=\"p\">:</span> <span class=\"kt\">Data</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">JWTSigner</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>key</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>The HMAC symmetric password data.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT9JWTSignerV5hs5123keyAC10Foundation4DataV_tFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/hs512(key:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT9JWTSignerV5hs5123keyAC10Foundation4DataV_tFZ\">hs512(key:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Initialize a JWTSigner using the HMAC 512 bits algorithm and the provided privateKey.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"nf\">hs512</span><span class=\"p\">(</span><span class=\"nv\">key</span><span class=\"p\">:</span> <span class=\"kt\">Data</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">JWTSigner</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>key</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>The HMAC symmetric password data.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT9JWTSignerV5es25610privateKeyAC10Foundation4DataV_tFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/es256(privateKey:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT9JWTSignerV5es25610privateKeyAC10Foundation4DataV_tFZ\">es256(privateKey:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Initialize a JWTSigner using the ECDSA SHA256 algorithm and the provided privateKey.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">@available</span><span class=\"p\">(</span><span class=\"n\">macOS</span> <span class=\"mf\">10.13</span><span class=\"p\">,</span> <span class=\"n\">iOS</span> <span class=\"mi\">11</span><span class=\"p\">,</span> <span class=\"n\">tvOS</span> <span class=\"mf\">11.0</span><span class=\"p\">,</span> <span class=\"n\">watchOS</span> <span class=\"mf\">4.0</span><span class=\"p\">,</span> <span class=\"o\">*</span><span class=\"p\">)</span>\n<span class=\"kd\">public</span> <span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"nf\">es256</span><span class=\"p\">(</span><span class=\"nv\">privateKey</span><span class=\"p\">:</span> <span class=\"kt\">Data</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">JWTSigner</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>privateKey</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>The UTF8 encoded PEM private key, with either a &ldquo;BEGIN EC PRIVATE KEY&rdquo; or &ldquo;BEGIN PRIVATE KEY&rdquo; header.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT9JWTSignerV5es38410privateKeyAC10Foundation4DataV_tFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/es384(privateKey:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT9JWTSignerV5es38410privateKeyAC10Foundation4DataV_tFZ\">es384(privateKey:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Initialize a JWTSigner using the ECDSA SHA384 algorithm and the provided privateKey.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">@available</span><span class=\"p\">(</span><span class=\"n\">macOS</span> <span class=\"mf\">10.13</span><span class=\"p\">,</span> <span class=\"n\">iOS</span> <span class=\"mi\">11</span><span class=\"p\">,</span> <span class=\"n\">tvOS</span> <span class=\"mf\">11.0</span><span class=\"p\">,</span> <span class=\"n\">watchOS</span> <span class=\"mf\">4.0</span><span class=\"p\">,</span> <span class=\"o\">*</span><span class=\"p\">)</span>\n<span class=\"kd\">public</span> <span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"nf\">es384</span><span class=\"p\">(</span><span class=\"nv\">privateKey</span><span class=\"p\">:</span> <span class=\"kt\">Data</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">JWTSigner</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>privateKey</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>The UTF8 encoded PEM private key, with either a &ldquo;BEGIN EC PRIVATE KEY&rdquo; or &ldquo;BEGIN PRIVATE KEY&rdquo; header.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT9JWTSignerV5es51210privateKeyAC10Foundation4DataV_tFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/es512(privateKey:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT9JWTSignerV5es51210privateKeyAC10Foundation4DataV_tFZ\">es512(privateKey:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Initialize a JWTSigner using the ECDSA SHA512 algorithm and the provided privateKey.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">@available</span><span class=\"p\">(</span><span class=\"n\">macOS</span> <span class=\"mf\">10.13</span><span class=\"p\">,</span> <span class=\"n\">iOS</span> <span class=\"mi\">11</span><span class=\"p\">,</span> <span class=\"n\">tvOS</span> <span class=\"mf\">11.0</span><span class=\"p\">,</span> <span class=\"n\">watchOS</span> <span class=\"mf\">4.0</span><span class=\"p\">,</span> <span class=\"o\">*</span><span class=\"p\">)</span>\n<span class=\"kd\">public</span> <span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"nf\">es512</span><span class=\"p\">(</span><span class=\"nv\">privateKey</span><span class=\"p\">:</span> <span class=\"kt\">Data</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">JWTSigner</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>privateKey</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>The UTF8 encoded PEM private key, with either a &ldquo;BEGIN EC PRIVATE KEY&rdquo; or &ldquo;BEGIN PRIVATE KEY&rdquo; header.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT9JWTSignerV4noneACvpZ\"></a>\n                    <a name=\"//apple_ref/swift/Variable/none\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT9JWTSignerV4noneACvpZ\">none</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Initialize a JWTSigner that will not sign the JWT. This is equivelent to using the &ldquo;none&rdquo; alg header.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">static</span> <span class=\"k\">let</span> <span class=\"nv\">none</span><span class=\"p\">:</span> <span class=\"kt\">JWTSigner</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n              </ul>\n            </div>\n          </div>\n        </section>\n\n      </article>\n    </div>\n    <section class=\"footer\">\n      <p>&copy; 2020 <a class=\"link\" href=\"https://github.com/Kitura/Swift-JWT\" target=\"_blank\" rel=\"external\">IBM &amp; Kitura Project Contributors</a>. All rights reserved. (Last updated: 2020-11-25)</p>\n      <p>Generated by <a class=\"link\" href=\"https://github.com/realm/jazzy\" target=\"_blank\" rel=\"external\">jazzy ♪♫ v0.13.6</a>, a <a class=\"link\" href=\"https://realm.io\" target=\"_blank\" rel=\"external\">Realm</a> project.</p>\n    </section>\n  </body>\n</div>\n</html>\n"
  },
  {
    "path": "docs/Structs/JWTVerifier.html",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n  <head>\n    <title>JWTVerifier Structure Reference</title>\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"../css/jazzy.css\" />\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"../css/highlight.css\" />\n    <meta charset=\"utf-8\">\n    <script src=\"../js/jquery.min.js\" defer></script>\n    <script src=\"../js/jazzy.js\" defer></script>\n    \n    <script src=\"../js/lunr.min.js\" defer></script>\n    <script src=\"../js/typeahead.jquery.js\" defer></script>\n    <script src=\"../js/jazzy.search.js\" defer></script>\n  </head>\n  <body>\n\n    <a name=\"//apple_ref/swift/Struct/JWTVerifier\" class=\"dashAnchor\"></a>\n\n    <a title=\"JWTVerifier Structure Reference\"></a>\n\n    <header class=\"header\">\n      <p class=\"header-col header-col--primary\">\n        <a class=\"header-link\" href=\"../index.html\">\n          SwiftJWT 3.6.200 Docs\n        </a>\n         (100% documented)\n      </p>\n    \n      <p class=\"header-col--secondary\">\n        <form role=\"search\" action=\"../search.json\">\n          <input type=\"text\" placeholder=\"Search documentation\" data-typeahead>\n        </form>\n      </p>\n    \n        <p class=\"header-col header-col--secondary\">\n          <a class=\"header-link\" href=\"https://github.com/Kitura/Swift-JWT/\">\n            <img class=\"header-icon\" src=\"../img/gh.png\"/>\n            View on GitHub\n          </a>\n        </p>\n    \n    </header>\n\n    <p class=\"breadcrumbs\">\n      <a class=\"breadcrumb\" href=\"../index.html\">SwiftJWT Reference</a>\n      <img class=\"carat\" src=\"../img/carat.png\" />\n      JWTVerifier Structure Reference\n    </p>\n\n    <div class=\"content-wrapper\">\n      <nav class=\"navigation\">\n        <ul class=\"nav-groups\">\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Classes.html\">Classes</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ClaimsMicroProfile.html\">ClaimsMicroProfile</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ClaimsOpenID.html\">ClaimsOpenID</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ClaimsStandardJWT.html\">ClaimsStandardJWT</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/JWTDecoder.html\">JWTDecoder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/JWTEncoder.html\">JWTEncoder</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Protocols.html\">Protocols</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/Claims.html\">Claims</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Structs.html\">Structures</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/AddressClaim.html\">AddressClaim</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Header.html\">Header</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/JWT.html\">JWT</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/JWTError.html\">JWTError</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/JWTSigner.html\">JWTSigner</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/JWTVerifier.html\">JWTVerifier</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/ValidateClaimsResult.html\">ValidateClaimsResult</a>\n              </li>\n            </ul>\n          </li>\n        </ul>\n      </nav>\n      <article class=\"main-content\">\n\n        <section class=\"section\">\n          <div class=\"section-content top-matter\">\n            <h1>JWTVerifier</h1>\n              <div class=\"declaration\">\n                <div class=\"language\">\n                  \n                  <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">struct</span> <span class=\"kt\">JWTVerifier</span></code></pre>\n\n                </div>\n              </div>\n            <p>A struct that will be used to verify the signature of a JWT is valid for the provided <code><a href=\"../Structs/Header.html\">Header</a></code> and <code><a href=\"../Protocols/Claims.html\">Claims</a></code>.\nFor RSA and ECDSA, the provided key should be a .utf8 encoded PEM String.</p>\n<h3 id='usage-example' class='heading'>Usage Example:</h3>\n<pre class=\"highlight swift\"><code><span class=\"k\">let</span> <span class=\"nv\">pemString</span> <span class=\"o\">=</span> <span class=\"s\">\"\"\"\n-----BEGIN PUBLIC KEY-----\nMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDdlatRjRjogo3WojgGHFHYLugd\nUWAY9iR3fy4arWNA1KoS8kVw33cJibXr8bvwUAUparCwlvdbH6dvEOfou0/gCFQs\nHUfQrSDv+MuSUMAe8jzKE4qW+jK+xQU9a03GUnKHkkle+Q0pX/g6jXZ7r1/xAK5D\no2kQ+X5xK9cipRgEKwIDAQAB\n-----END PUBLIC KEY-----\n\"\"\"</span>\n<span class=\"k\">let</span> <span class=\"nv\">signedJWT</span> <span class=\"o\">=</span> <span class=\"s\">\"eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJuYW1lIjoiS2l0dXJhIn0.o2Rv_w1W6qfkldgb6FwzC3tAFEzo7WyYcLyykijCEqDbW8A7TwoFev85KGo_Bi7eNaSgZ6Q8jgkA31r8EDQWtSRg3_o5Zlq-ZCndyVeibgbyM2BMVUGcGzkUD2ikARfnb6GNGHr2waVeFSDehTN8WTLl0mGFxUE6wx5ZugR7My0\"</span>\n<span class=\"kd\">struct</span> <span class=\"kt\">MyClaims</span><span class=\"p\">:</span> <span class=\"kt\">Claims</span> <span class=\"p\">{</span>\n   <span class=\"k\">var</span> <span class=\"nv\">name</span><span class=\"p\">:</span> <span class=\"kt\">String</span>\n<span class=\"p\">}</span>\n<span class=\"k\">let</span> <span class=\"nv\">jwt</span> <span class=\"o\">=</span> <span class=\"kt\">JWT</span><span class=\"p\">(</span><span class=\"nv\">claims</span><span class=\"p\">:</span> <span class=\"kt\">MyClaims</span><span class=\"p\">(</span><span class=\"nv\">name</span><span class=\"p\">:</span> <span class=\"s\">\"Kitura\"</span><span class=\"p\">))</span>\n<span class=\"k\">let</span> <span class=\"nv\">publicKey</span> <span class=\"o\">=</span> <span class=\"n\">pemString</span><span class=\"o\">.</span><span class=\"nf\">data</span><span class=\"p\">(</span><span class=\"nv\">using</span><span class=\"p\">:</span> <span class=\"o\">.</span><span class=\"n\">utf8</span><span class=\"p\">)</span><span class=\"o\">!</span>\n<span class=\"k\">let</span> <span class=\"nv\">jwtVerifier</span> <span class=\"o\">=</span> <span class=\"kt\">JWTVerifier</span><span class=\"o\">.</span><span class=\"nf\">rs256</span><span class=\"p\">(</span><span class=\"nv\">publicKey</span><span class=\"p\">:</span> <span class=\"n\">publicKey</span><span class=\"p\">)</span>\n<span class=\"k\">let</span> <span class=\"nv\">verified</span><span class=\"p\">:</span> <span class=\"kt\">Bool</span> <span class=\"o\">=</span> <span class=\"n\">jwt</span><span class=\"o\">.</span><span class=\"nf\">verify</span><span class=\"p\">(</span><span class=\"n\">signedJWT</span><span class=\"p\">,</span> <span class=\"nv\">using</span><span class=\"p\">:</span> <span class=\"n\">jwtVerifier</span><span class=\"p\">)</span>\n</code></pre>\n\n          </div>\n        </section>\n\n        <section class=\"section\">\n          <div class=\"section-content\">\n            <div class=\"task-group\">\n              <ul class=\"item-container\">\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT11JWTVerifierV5rs2569publicKeyAC10Foundation4DataV_tFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/rs256(publicKey:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT11JWTVerifierV5rs2569publicKeyAC10Foundation4DataV_tFZ\">rs256(publicKey:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Initialize a JWTVerifier using the RSA 256 bits algorithm and the provided publicKey.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"nf\">rs256</span><span class=\"p\">(</span><span class=\"nv\">publicKey</span><span class=\"p\">:</span> <span class=\"kt\">Data</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">JWTVerifier</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>publicKey</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>The UTF8 encoded PEM public key, with a &ldquo;BEGIN PUBLIC KEY&rdquo; header.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT11JWTVerifierV5rs3849publicKeyAC10Foundation4DataV_tFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/rs384(publicKey:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT11JWTVerifierV5rs3849publicKeyAC10Foundation4DataV_tFZ\">rs384(publicKey:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Initialize a JWTVerifier using the RSA 384 bits algorithm and the provided publicKey.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"nf\">rs384</span><span class=\"p\">(</span><span class=\"nv\">publicKey</span><span class=\"p\">:</span> <span class=\"kt\">Data</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">JWTVerifier</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>publicKey</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>The UTF8 encoded PEM public key, with a &ldquo;BEGIN PUBLIC KEY&rdquo; header.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT11JWTVerifierV5rs5129publicKeyAC10Foundation4DataV_tFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/rs512(publicKey:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT11JWTVerifierV5rs5129publicKeyAC10Foundation4DataV_tFZ\">rs512(publicKey:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Initialize a JWTVerifier using the RSA 512 bits algorithm and the provided publicKey.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"nf\">rs512</span><span class=\"p\">(</span><span class=\"nv\">publicKey</span><span class=\"p\">:</span> <span class=\"kt\">Data</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">JWTVerifier</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>publicKey</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>The UTF8 encoded PEM public key, with a &ldquo;BEGIN PUBLIC KEY&rdquo; header.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT11JWTVerifierV5rs25611certificateAC10Foundation4DataV_tFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/rs256(certificate:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT11JWTVerifierV5rs25611certificateAC10Foundation4DataV_tFZ\">rs256(certificate:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Initialize a JWTVerifier using the RSA 256 bits algorithm and the provided certificate.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"nf\">rs256</span><span class=\"p\">(</span><span class=\"nv\">certificate</span><span class=\"p\">:</span> <span class=\"kt\">Data</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">JWTVerifier</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>publicKey</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>The UTF8 encoded PEM public key, with a &ldquo;BEGIN CERTIFICATE&rdquo; header.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT11JWTVerifierV5rs38411certificateAC10Foundation4DataV_tFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/rs384(certificate:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT11JWTVerifierV5rs38411certificateAC10Foundation4DataV_tFZ\">rs384(certificate:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Initialize a JWTVerifier using the RSA 384 bits algorithm and the provided certificate.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"nf\">rs384</span><span class=\"p\">(</span><span class=\"nv\">certificate</span><span class=\"p\">:</span> <span class=\"kt\">Data</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">JWTVerifier</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>publicKey</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>The UTF8 encoded PEM public key, with a &ldquo;BEGIN CERTIFICATE&rdquo; header.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT11JWTVerifierV5rs51211certificateAC10Foundation4DataV_tFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/rs512(certificate:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT11JWTVerifierV5rs51211certificateAC10Foundation4DataV_tFZ\">rs512(certificate:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Initialize a JWTVerifier using the RSA 512 bits algorithm and the provided certificate.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"nf\">rs512</span><span class=\"p\">(</span><span class=\"nv\">certificate</span><span class=\"p\">:</span> <span class=\"kt\">Data</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">JWTVerifier</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>publicKey</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>The UTF8 encoded PEM public key, with a &ldquo;BEGIN CERTIFICATE&rdquo; header.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT11JWTVerifierV5ps2569publicKeyAC10Foundation4DataV_tFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/ps256(publicKey:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT11JWTVerifierV5ps2569publicKeyAC10Foundation4DataV_tFZ\">ps256(publicKey:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Initialize a JWTVerifier using the RSA-PSS 256 bits algorithm and the provided publicKey.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"nf\">ps256</span><span class=\"p\">(</span><span class=\"nv\">publicKey</span><span class=\"p\">:</span> <span class=\"kt\">Data</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">JWTVerifier</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>publicKey</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>The UTF8 encoded PEM public key, with a &ldquo;BEGIN PUBLIC KEY&rdquo; header.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT11JWTVerifierV5ps3849publicKeyAC10Foundation4DataV_tFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/ps384(publicKey:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT11JWTVerifierV5ps3849publicKeyAC10Foundation4DataV_tFZ\">ps384(publicKey:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Initialize a JWTVerifier using the RSA-PSS 384 bits algorithm and the provided publicKey.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"nf\">ps384</span><span class=\"p\">(</span><span class=\"nv\">publicKey</span><span class=\"p\">:</span> <span class=\"kt\">Data</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">JWTVerifier</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>publicKey</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>The UTF8 encoded PEM public key, with a &ldquo;BEGIN PUBLIC KEY&rdquo; header.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT11JWTVerifierV5ps5129publicKeyAC10Foundation4DataV_tFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/ps512(publicKey:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT11JWTVerifierV5ps5129publicKeyAC10Foundation4DataV_tFZ\">ps512(publicKey:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Initialize a JWTVerifier using the RSA-PSS 512 bits algorithm and the provided publicKey.\nThis verifier requires at least a 2048 bit RSA key.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"nf\">ps512</span><span class=\"p\">(</span><span class=\"nv\">publicKey</span><span class=\"p\">:</span> <span class=\"kt\">Data</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">JWTVerifier</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>publicKey</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>The UTF8 encoded PEM public key, with a &ldquo;BEGIN PUBLIC KEY&rdquo; header.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT11JWTVerifierV5hs2563keyAC10Foundation4DataV_tFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/hs256(key:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT11JWTVerifierV5hs2563keyAC10Foundation4DataV_tFZ\">hs256(key:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Initialize a JWTSigner using the HMAC 256 bits algorithm and the provided privateKey.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"nf\">hs256</span><span class=\"p\">(</span><span class=\"nv\">key</span><span class=\"p\">:</span> <span class=\"kt\">Data</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">JWTVerifier</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>key</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>The HMAC symmetric password data.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT11JWTVerifierV5hs3843keyAC10Foundation4DataV_tFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/hs384(key:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT11JWTVerifierV5hs3843keyAC10Foundation4DataV_tFZ\">hs384(key:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Initialize a JWTSigner using the HMAC 384 bits algorithm and the provided privateKey.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"nf\">hs384</span><span class=\"p\">(</span><span class=\"nv\">key</span><span class=\"p\">:</span> <span class=\"kt\">Data</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">JWTVerifier</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>key</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>The HMAC symmetric password data.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT11JWTVerifierV5hs5123keyAC10Foundation4DataV_tFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/hs512(key:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT11JWTVerifierV5hs5123keyAC10Foundation4DataV_tFZ\">hs512(key:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Initialize a JWTSigner using the HMAC 512 bits algorithm and the provided privateKey.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"nf\">hs512</span><span class=\"p\">(</span><span class=\"nv\">key</span><span class=\"p\">:</span> <span class=\"kt\">Data</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">JWTVerifier</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>key</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>The HMAC symmetric password data.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT11JWTVerifierV5es2569publicKeyAC10Foundation4DataV_tFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/es256(publicKey:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT11JWTVerifierV5es2569publicKeyAC10Foundation4DataV_tFZ\">es256(publicKey:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Initialize a JWTVerifier using the ECDSA SHA 256 algorithm and the provided public key.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">@available</span><span class=\"p\">(</span><span class=\"n\">macOS</span> <span class=\"mf\">10.13</span><span class=\"p\">,</span> <span class=\"n\">iOS</span> <span class=\"mi\">11</span><span class=\"p\">,</span> <span class=\"n\">tvOS</span> <span class=\"mf\">11.0</span><span class=\"p\">,</span> <span class=\"n\">watchOS</span> <span class=\"mf\">4.0</span><span class=\"p\">,</span> <span class=\"o\">*</span><span class=\"p\">)</span>\n<span class=\"kd\">public</span> <span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"nf\">es256</span><span class=\"p\">(</span><span class=\"nv\">publicKey</span><span class=\"p\">:</span> <span class=\"kt\">Data</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">JWTVerifier</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>publicKey</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>The UTF8 encoded PEM public key, with a &ldquo;BEGIN PUBLIC KEY&rdquo; header.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT11JWTVerifierV5es3849publicKeyAC10Foundation4DataV_tFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/es384(publicKey:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT11JWTVerifierV5es3849publicKeyAC10Foundation4DataV_tFZ\">es384(publicKey:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Initialize a JWTVerifier using the ECDSA SHA 384 algorithm and the provided public key.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">@available</span><span class=\"p\">(</span><span class=\"n\">macOS</span> <span class=\"mf\">10.13</span><span class=\"p\">,</span> <span class=\"n\">iOS</span> <span class=\"mi\">11</span><span class=\"p\">,</span> <span class=\"n\">tvOS</span> <span class=\"mf\">11.0</span><span class=\"p\">,</span> <span class=\"n\">watchOS</span> <span class=\"mf\">4.0</span><span class=\"p\">,</span> <span class=\"o\">*</span><span class=\"p\">)</span>\n<span class=\"kd\">public</span> <span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"nf\">es384</span><span class=\"p\">(</span><span class=\"nv\">publicKey</span><span class=\"p\">:</span> <span class=\"kt\">Data</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">JWTVerifier</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>publicKey</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>The UTF8 encoded PEM public key, with a &ldquo;BEGIN PUBLIC KEY&rdquo; header.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT11JWTVerifierV5es5129publicKeyAC10Foundation4DataV_tFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/es512(publicKey:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT11JWTVerifierV5es5129publicKeyAC10Foundation4DataV_tFZ\">es512(publicKey:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Initialize a JWTVerifier using the ECDSA SHA 512 algorithm and the provided public key.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">@available</span><span class=\"p\">(</span><span class=\"n\">macOS</span> <span class=\"mf\">10.13</span><span class=\"p\">,</span> <span class=\"n\">iOS</span> <span class=\"mi\">11</span><span class=\"p\">,</span> <span class=\"n\">tvOS</span> <span class=\"mf\">11.0</span><span class=\"p\">,</span> <span class=\"n\">watchOS</span> <span class=\"mf\">4.0</span><span class=\"p\">,</span> <span class=\"o\">*</span><span class=\"p\">)</span>\n<span class=\"kd\">public</span> <span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"nf\">es512</span><span class=\"p\">(</span><span class=\"nv\">publicKey</span><span class=\"p\">:</span> <span class=\"kt\">Data</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">JWTVerifier</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>publicKey</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>The UTF8 encoded PEM public key, with a &ldquo;BEGIN PUBLIC KEY&rdquo; header.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT11JWTVerifierV4noneACvpZ\"></a>\n                    <a name=\"//apple_ref/swift/Variable/none\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT11JWTVerifierV4noneACvpZ\">none</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Initialize a JWTVerifier that will always return true when verifying the JWT. This is equivelent to using the &ldquo;none&rdquo; alg header.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">static</span> <span class=\"k\">let</span> <span class=\"nv\">none</span><span class=\"p\">:</span> <span class=\"kt\">JWTVerifier</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n              </ul>\n            </div>\n          </div>\n        </section>\n\n      </article>\n    </div>\n    <section class=\"footer\">\n      <p>&copy; 2020 <a class=\"link\" href=\"https://github.com/Kitura/Swift-JWT\" target=\"_blank\" rel=\"external\">IBM &amp; Kitura Project Contributors</a>. All rights reserved. (Last updated: 2020-11-25)</p>\n      <p>Generated by <a class=\"link\" href=\"https://github.com/realm/jazzy\" target=\"_blank\" rel=\"external\">jazzy ♪♫ v0.13.6</a>, a <a class=\"link\" href=\"https://realm.io\" target=\"_blank\" rel=\"external\">Realm</a> project.</p>\n    </section>\n  </body>\n</div>\n</html>\n"
  },
  {
    "path": "docs/Structs/ValidateClaimsResult.html",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n  <head>\n    <title>ValidateClaimsResult Structure Reference</title>\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"../css/jazzy.css\" />\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"../css/highlight.css\" />\n    <meta charset=\"utf-8\">\n    <script src=\"../js/jquery.min.js\" defer></script>\n    <script src=\"../js/jazzy.js\" defer></script>\n    \n    <script src=\"../js/lunr.min.js\" defer></script>\n    <script src=\"../js/typeahead.jquery.js\" defer></script>\n    <script src=\"../js/jazzy.search.js\" defer></script>\n  </head>\n  <body>\n\n    <a name=\"//apple_ref/swift/Struct/ValidateClaimsResult\" class=\"dashAnchor\"></a>\n\n    <a title=\"ValidateClaimsResult Structure Reference\"></a>\n\n    <header class=\"header\">\n      <p class=\"header-col header-col--primary\">\n        <a class=\"header-link\" href=\"../index.html\">\n          SwiftJWT 3.6.200 Docs\n        </a>\n         (100% documented)\n      </p>\n    \n      <p class=\"header-col--secondary\">\n        <form role=\"search\" action=\"../search.json\">\n          <input type=\"text\" placeholder=\"Search documentation\" data-typeahead>\n        </form>\n      </p>\n    \n        <p class=\"header-col header-col--secondary\">\n          <a class=\"header-link\" href=\"https://github.com/Kitura/Swift-JWT/\">\n            <img class=\"header-icon\" src=\"../img/gh.png\"/>\n            View on GitHub\n          </a>\n        </p>\n    \n    </header>\n\n    <p class=\"breadcrumbs\">\n      <a class=\"breadcrumb\" href=\"../index.html\">SwiftJWT Reference</a>\n      <img class=\"carat\" src=\"../img/carat.png\" />\n      ValidateClaimsResult Structure Reference\n    </p>\n\n    <div class=\"content-wrapper\">\n      <nav class=\"navigation\">\n        <ul class=\"nav-groups\">\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Classes.html\">Classes</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ClaimsMicroProfile.html\">ClaimsMicroProfile</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ClaimsOpenID.html\">ClaimsOpenID</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ClaimsStandardJWT.html\">ClaimsStandardJWT</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/JWTDecoder.html\">JWTDecoder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/JWTEncoder.html\">JWTEncoder</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Protocols.html\">Protocols</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/Claims.html\">Claims</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Structs.html\">Structures</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/AddressClaim.html\">AddressClaim</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Header.html\">Header</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/JWT.html\">JWT</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/JWTError.html\">JWTError</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/JWTSigner.html\">JWTSigner</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/JWTVerifier.html\">JWTVerifier</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/ValidateClaimsResult.html\">ValidateClaimsResult</a>\n              </li>\n            </ul>\n          </li>\n        </ul>\n      </nav>\n      <article class=\"main-content\">\n\n        <section class=\"section\">\n          <div class=\"section-content top-matter\">\n            <h1>ValidateClaimsResult</h1>\n              <div class=\"declaration\">\n                <div class=\"language\">\n                  \n                  <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">struct</span> <span class=\"kt\">ValidateClaimsResult</span> <span class=\"p\">:</span> <span class=\"kt\">CustomStringConvertible</span><span class=\"p\">,</span> <span class=\"kt\">Equatable</span></code></pre>\n\n                </div>\n              </div>\n            <p>ValidateClaimsResult list the possible results of a call to JWT.validateClaims method.\nIn case of successful validation, .success is returned, all other cases list various\nproblems that may occur during claims validation and indicate that the validation failed.</p>\n\n          </div>\n        </section>\n\n        <section class=\"section\">\n          <div class=\"section-content\">\n            <div class=\"task-group\">\n              <ul class=\"item-container\">\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT20ValidateClaimsResultV11descriptionSSvp\"></a>\n                    <a name=\"//apple_ref/swift/Property/description\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT20ValidateClaimsResultV11descriptionSSvp\">description</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>The human readable description of the ValidateClaimsResult</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"k\">let</span> <span class=\"nv\">description</span><span class=\"p\">:</span> <span class=\"kt\">String</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT20ValidateClaimsResultV7successACvpZ\"></a>\n                    <a name=\"//apple_ref/swift/Variable/success\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT20ValidateClaimsResultV7successACvpZ\">success</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Successful validation.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">static</span> <span class=\"k\">let</span> <span class=\"nv\">success</span><span class=\"p\">:</span> <span class=\"kt\">ValidateClaimsResult</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT20ValidateClaimsResultV17invalidExpirationACvpZ\"></a>\n                    <a name=\"//apple_ref/swift/Variable/invalidExpiration\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT20ValidateClaimsResultV17invalidExpirationACvpZ\">invalidExpiration</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Invalid Expiration claim.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">static</span> <span class=\"k\">let</span> <span class=\"nv\">invalidExpiration</span><span class=\"p\">:</span> <span class=\"kt\">ValidateClaimsResult</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT20ValidateClaimsResultV7expiredACvpZ\"></a>\n                    <a name=\"//apple_ref/swift/Variable/expired\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT20ValidateClaimsResultV7expiredACvpZ\">expired</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Expired token: expiration time claim is in the past.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">static</span> <span class=\"k\">let</span> <span class=\"nv\">expired</span><span class=\"p\">:</span> <span class=\"kt\">ValidateClaimsResult</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT20ValidateClaimsResultV16invalidNotBeforeACvpZ\"></a>\n                    <a name=\"//apple_ref/swift/Variable/invalidNotBefore\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT20ValidateClaimsResultV16invalidNotBeforeACvpZ\">invalidNotBefore</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Invalid Not Before claim.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">static</span> <span class=\"k\">let</span> <span class=\"nv\">invalidNotBefore</span><span class=\"p\">:</span> <span class=\"kt\">ValidateClaimsResult</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT20ValidateClaimsResultV9notBeforeACvpZ\"></a>\n                    <a name=\"//apple_ref/swift/Variable/notBefore\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT20ValidateClaimsResultV9notBeforeACvpZ\">notBefore</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Not Before claim is in the future.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">static</span> <span class=\"k\">let</span> <span class=\"nv\">notBefore</span><span class=\"p\">:</span> <span class=\"kt\">ValidateClaimsResult</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT20ValidateClaimsResultV15invalidIssuedAtACvpZ\"></a>\n                    <a name=\"//apple_ref/swift/Variable/invalidIssuedAt\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT20ValidateClaimsResultV15invalidIssuedAtACvpZ\">invalidIssuedAt</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Invalid Issued At claim.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">static</span> <span class=\"k\">let</span> <span class=\"nv\">invalidIssuedAt</span><span class=\"p\">:</span> <span class=\"kt\">ValidateClaimsResult</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT20ValidateClaimsResultV8issuedAtACvpZ\"></a>\n                    <a name=\"//apple_ref/swift/Variable/issuedAt\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT20ValidateClaimsResultV8issuedAtACvpZ\">issuedAt</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Issued At claim is in the future.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">static</span> <span class=\"k\">let</span> <span class=\"nv\">issuedAt</span><span class=\"p\">:</span> <span class=\"kt\">ValidateClaimsResult</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT20ValidateClaimsResultV2eeoiySbAC_ACtFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/==(_:_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT20ValidateClaimsResultV2eeoiySbAC_ACtFZ\">==(_:<wbr>_:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Check if two ValidateClaimsResults are equal. Required for the Equatable protocol</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"o\">==</span> <span class=\"p\">(</span><span class=\"nv\">lhs</span><span class=\"p\">:</span> <span class=\"kt\">ValidateClaimsResult</span><span class=\"p\">,</span> <span class=\"nv\">rhs</span><span class=\"p\">:</span> <span class=\"kt\">ValidateClaimsResult</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">Bool</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n              </ul>\n            </div>\n          </div>\n        </section>\n\n      </article>\n    </div>\n    <section class=\"footer\">\n      <p>&copy; 2020 <a class=\"link\" href=\"https://github.com/Kitura/Swift-JWT\" target=\"_blank\" rel=\"external\">IBM &amp; Kitura Project Contributors</a>. All rights reserved. (Last updated: 2020-11-25)</p>\n      <p>Generated by <a class=\"link\" href=\"https://github.com/realm/jazzy\" target=\"_blank\" rel=\"external\">jazzy ♪♫ v0.13.6</a>, a <a class=\"link\" href=\"https://realm.io\" target=\"_blank\" rel=\"external\">Realm</a> project.</p>\n    </section>\n  </body>\n</div>\n</html>\n"
  },
  {
    "path": "docs/Structs.html",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n  <head>\n    <title>Structures  Reference</title>\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"css/jazzy.css\" />\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"css/highlight.css\" />\n    <meta charset=\"utf-8\">\n    <script src=\"js/jquery.min.js\" defer></script>\n    <script src=\"js/jazzy.js\" defer></script>\n    \n    <script src=\"js/lunr.min.js\" defer></script>\n    <script src=\"js/typeahead.jquery.js\" defer></script>\n    <script src=\"js/jazzy.search.js\" defer></script>\n  </head>\n  <body>\n\n    <a name=\"//apple_ref/swift/Section/Structures\" class=\"dashAnchor\"></a>\n\n    <a title=\"Structures  Reference\"></a>\n\n    <header class=\"header\">\n      <p class=\"header-col header-col--primary\">\n        <a class=\"header-link\" href=\"index.html\">\n          SwiftJWT 3.6.200 Docs\n        </a>\n         (100% documented)\n      </p>\n    \n      <p class=\"header-col--secondary\">\n        <form role=\"search\" action=\"search.json\">\n          <input type=\"text\" placeholder=\"Search documentation\" data-typeahead>\n        </form>\n      </p>\n    \n        <p class=\"header-col header-col--secondary\">\n          <a class=\"header-link\" href=\"https://github.com/Kitura/Swift-JWT/\">\n            <img class=\"header-icon\" src=\"img/gh.png\"/>\n            View on GitHub\n          </a>\n        </p>\n    \n    </header>\n\n    <p class=\"breadcrumbs\">\n      <a class=\"breadcrumb\" href=\"index.html\">SwiftJWT Reference</a>\n      <img class=\"carat\" src=\"img/carat.png\" />\n      Structures  Reference\n    </p>\n\n    <div class=\"content-wrapper\">\n      <nav class=\"navigation\">\n        <ul class=\"nav-groups\">\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"Classes.html\">Classes</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/ClaimsMicroProfile.html\">ClaimsMicroProfile</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/ClaimsOpenID.html\">ClaimsOpenID</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/ClaimsStandardJWT.html\">ClaimsStandardJWT</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/JWTDecoder.html\">JWTDecoder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/JWTEncoder.html\">JWTEncoder</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"Protocols.html\">Protocols</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Protocols/Claims.html\">Claims</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"Structs.html\">Structures</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Structs/AddressClaim.html\">AddressClaim</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Structs/Header.html\">Header</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Structs/JWT.html\">JWT</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Structs/JWTError.html\">JWTError</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Structs/JWTSigner.html\">JWTSigner</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Structs/JWTVerifier.html\">JWTVerifier</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Structs/ValidateClaimsResult.html\">ValidateClaimsResult</a>\n              </li>\n            </ul>\n          </li>\n        </ul>\n      </nav>\n      <article class=\"main-content\">\n\n        <section class=\"section\">\n          <div class=\"section-content top-matter\">\n            <h1>Structures</h1>\n            <p>The following structures are available globally.</p>\n\n          </div>\n        </section>\n\n        <section class=\"section\">\n          <div class=\"section-content\">\n            <div class=\"task-group\">\n              <ul class=\"item-container\">\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT12AddressClaimV\"></a>\n                    <a name=\"//apple_ref/swift/Struct/AddressClaim\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT12AddressClaimV\">AddressClaim</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Struct representing an AddressClaim as defined in the <a href=\"http://openid.net/specs/openid-connect-core-1_0.html\">OpenID specs</a>.</p>\n\n                        <a href=\"Structs/AddressClaim.html\" class=\"slightly-smaller\">See more</a>\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">struct</span> <span class=\"kt\">AddressClaim</span> <span class=\"p\">:</span> <span class=\"kt\">Codable</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n              </ul>\n            </div>\n            <div class=\"task-group\">\n              <div class=\"task-name-container\">\n                <a name=\"/Header\"></a>\n                <a name=\"//apple_ref/swift/Section/Header\" class=\"dashAnchor\"></a>\n                <div class=\"section-name-container\">\n                  <a class=\"section-name-link\" href=\"#/Header\"></a>\n                  <h3 class=\"section-name\"><p>Header</p>\n</h3>\n                </div>\n              </div>\n              <ul class=\"item-container\">\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT6HeaderV\"></a>\n                    <a name=\"//apple_ref/swift/Struct/Header\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT6HeaderV\">Header</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>A representation of a JSON Web Token header.\n<a href=\"https://tools.ietf.org/html/rfc7515#section-4.1\">https://tools.ietf.org/html/rfc7515#section-4.1</a></p>\n<h3 id='usage-example' class='heading'>Usage Example:</h3>\n<pre class=\"highlight swift\"><code><span class=\"kd\">struct</span> <span class=\"kt\">MyClaims</span><span class=\"p\">:</span> <span class=\"kt\">Claims</span> <span class=\"p\">{</span>\n   <span class=\"k\">var</span> <span class=\"nv\">name</span><span class=\"p\">:</span> <span class=\"kt\">String</span>\n<span class=\"p\">}</span>\n<span class=\"k\">let</span> <span class=\"nv\">myHeader</span> <span class=\"o\">=</span> <span class=\"kt\">Header</span><span class=\"p\">(</span><span class=\"nv\">kid</span><span class=\"p\">:</span> <span class=\"s\">\"keyID\"</span><span class=\"p\">)</span>\n<span class=\"k\">let</span> <span class=\"nv\">jwt</span> <span class=\"o\">=</span> <span class=\"kt\">JWT</span><span class=\"p\">(</span><span class=\"nv\">header</span><span class=\"p\">:</span> <span class=\"n\">myHeader</span><span class=\"p\">,</span> <span class=\"nv\">claims</span><span class=\"p\">:</span> <span class=\"kt\">MyClaims</span><span class=\"p\">(</span><span class=\"nv\">name</span><span class=\"p\">:</span> <span class=\"s\">\"Kitura\"</span><span class=\"p\">))</span>\n</code></pre>\n\n                        <a href=\"Structs/Header.html\" class=\"slightly-smaller\">See more</a>\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">struct</span> <span class=\"kt\">Header</span> <span class=\"p\">:</span> <span class=\"kt\">Codable</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n              </ul>\n            </div>\n            <div class=\"task-group\">\n              <div class=\"task-name-container\">\n                <a name=\"/JWT\"></a>\n                <a name=\"//apple_ref/swift/Section/JWT\" class=\"dashAnchor\"></a>\n                <div class=\"section-name-container\">\n                  <a class=\"section-name-link\" href=\"#/JWT\"></a>\n                  <h3 class=\"section-name\"><p>JWT</p>\n</h3>\n                </div>\n              </div>\n              <ul class=\"item-container\">\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT0B0V\"></a>\n                    <a name=\"//apple_ref/swift/Struct/JWT\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT0B0V\">JWT</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>A struct representing the <code><a href=\"Structs/Header.html\">Header</a></code> and <code><a href=\"Protocols/Claims.html\">Claims</a></code> of a JSON Web Token.</p>\n<h3 id='usage-example' class='heading'>Usage Example:</h3>\n<pre class=\"highlight swift\"><code><span class=\"kd\">struct</span> <span class=\"kt\">MyClaims</span><span class=\"p\">:</span> <span class=\"kt\">Claims</span> <span class=\"p\">{</span>\n   <span class=\"k\">var</span> <span class=\"nv\">name</span><span class=\"p\">:</span> <span class=\"kt\">String</span>\n<span class=\"p\">}</span>\n<span class=\"k\">let</span> <span class=\"nv\">jwt</span> <span class=\"o\">=</span> <span class=\"kt\">JWT</span><span class=\"p\">(</span><span class=\"nv\">claims</span><span class=\"p\">:</span> <span class=\"kt\">MyClaims</span><span class=\"p\">(</span><span class=\"nv\">name</span><span class=\"p\">:</span> <span class=\"s\">\"Kitura\"</span><span class=\"p\">))</span>\n<span class=\"k\">let</span> <span class=\"nv\">key</span> <span class=\"o\">=</span> <span class=\"s\">\"&lt;PrivateKey&gt;\"</span><span class=\"o\">.</span><span class=\"nf\">data</span><span class=\"p\">(</span><span class=\"nv\">using</span><span class=\"p\">:</span> <span class=\"o\">.</span><span class=\"n\">utf8</span><span class=\"p\">)</span><span class=\"o\">!</span>\n<span class=\"k\">let</span> <span class=\"nv\">signedJWT</span><span class=\"p\">:</span> <span class=\"kt\">String</span><span class=\"p\">?</span> <span class=\"o\">=</span> <span class=\"k\">try</span><span class=\"p\">?</span> <span class=\"n\">jwt</span><span class=\"o\">.</span><span class=\"nf\">sign</span><span class=\"p\">(</span><span class=\"nv\">using</span><span class=\"p\">:</span> <span class=\"o\">.</span><span class=\"nf\">rs256</span><span class=\"p\">(</span><span class=\"nv\">key</span><span class=\"p\">:</span> <span class=\"n\">key</span><span class=\"p\">,</span> <span class=\"nv\">keyType</span><span class=\"p\">:</span> <span class=\"o\">.</span><span class=\"n\">privateKey</span><span class=\"p\">))</span>\n</code></pre>\n\n                        <a href=\"Structs/JWT.html\" class=\"slightly-smaller\">See more</a>\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">struct</span> <span class=\"kt\">JWT</span><span class=\"o\">&lt;</span><span class=\"kt\">T</span><span class=\"o\">&gt;</span> <span class=\"p\">:</span> <span class=\"kt\">Codable</span> <span class=\"k\">where</span> <span class=\"kt\">T</span> <span class=\"p\">:</span> <span class=\"kt\"><a href=\"Protocols/Claims.html\">Claims</a></span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n              </ul>\n            </div>\n            <div class=\"task-group\">\n              <div class=\"task-name-container\">\n                <a name=\"/JWTError\"></a>\n                <a name=\"//apple_ref/swift/Section/JWTError\" class=\"dashAnchor\"></a>\n                <div class=\"section-name-container\">\n                  <a class=\"section-name-link\" href=\"#/JWTError\"></a>\n                  <h3 class=\"section-name\"><p>JWTError</p>\n</h3>\n                </div>\n              </div>\n              <ul class=\"item-container\">\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT8JWTErrorV\"></a>\n                    <a name=\"//apple_ref/swift/Struct/JWTError\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT8JWTErrorV\">JWTError</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>A struct representing the different errors that can be thrown by SwiftJWT</p>\n\n                        <a href=\"Structs/JWTError.html\" class=\"slightly-smaller\">See more</a>\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">struct</span> <span class=\"kt\">JWTError</span> <span class=\"p\">:</span> <span class=\"kt\">Error</span><span class=\"p\">,</span> <span class=\"kt\">Equatable</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n              </ul>\n            </div>\n            <div class=\"task-group\">\n              <div class=\"task-name-container\">\n                <a name=\"/JWTSigner\"></a>\n                <a name=\"//apple_ref/swift/Section/JWTSigner\" class=\"dashAnchor\"></a>\n                <div class=\"section-name-container\">\n                  <a class=\"section-name-link\" href=\"#/JWTSigner\"></a>\n                  <h3 class=\"section-name\"><p>JWTSigner</p>\n</h3>\n                </div>\n              </div>\n              <ul class=\"item-container\">\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT9JWTSignerV\"></a>\n                    <a name=\"//apple_ref/swift/Struct/JWTSigner\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT9JWTSignerV\">JWTSigner</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>A struct that will be used to sign the JWT <code><a href=\"Structs/Header.html\">Header</a></code> and <code><a href=\"Protocols/Claims.html\">Claims</a></code> and generate a signed JWT.\nFor RSA and ECDSA, the provided key should be a .utf8 encoded PEM String.</p>\n<h3 id='usage-example' class='heading'>Usage Example:</h3>\n<pre class=\"highlight swift\"><code><span class=\"k\">let</span> <span class=\"nv\">pemString</span> <span class=\"o\">=</span> <span class=\"s\">\"\"\"\n-----BEGIN RSA PRIVATE KEY-----\nMIICWwIBAAKBgQDdlatRjRjogo3WojgGHFHYLugdUWAY9iR3fy4arWNA1KoS8kVw\n33cJibXr8bvwUAUparCwlvdbH6dvEOfou0/gCFQsHUfQrSDv+MuSUMAe8jzKE4qW\n+jK+xQU9a03GUnKHkkle+Q0pX/g6jXZ7r1/xAK5Do2kQ+X5xK9cipRgEKwIDAQAB\nAoGAD+onAtVye4ic7VR7V50DF9bOnwRwNXrARcDhq9LWNRrRGElESYYTQ6EbatXS\n3MCyjjX2eMhu/aF5YhXBwkppwxg+EOmXeh+MzL7Zh284OuPbkglAaGhV9bb6/5Cp\nuGb1esyPbYW+Ty2PC0GSZfIXkXs76jXAu9TOBvD0ybc2YlkCQQDywg2R/7t3Q2OE\n2+yo382CLJdrlSLVROWKwb4tb2PjhY4XAwV8d1vy0RenxTB+K5Mu57uVSTHtrMK0\nGAtFr833AkEA6avx20OHo61Yela/4k5kQDtjEf1N0LfI+BcWZtxsS3jDM3i1Hp0K\nSu5rsCPb8acJo5RO26gGVrfAsDcIXKC+bQJAZZ2XIpsitLyPpuiMOvBbzPavd4gY\n6Z8KWrfYzJoI/Q9FuBo6rKwl4BFoToD7WIUS+hpkagwWiz+6zLoX1dbOZwJACmH5\nfSSjAkLRi54PKJ8TFUeOP15h9sQzydI8zJU+upvDEKZsZc/UhT/SySDOxQ4G/523\nY0sz/OZtSWcol/UMgQJALesy++GdvoIDLfJX5GBQpuFgFenRiRDabxrE9MNUZ2aP\nFaFp+DyAe+b4nDwuJaW2LURbr8AEZga7oQj0uYxcYw==\n-----END RSA PRIVATE KEY-----\n\"\"\"</span>\n<span class=\"k\">let</span> <span class=\"nv\">privateKey</span> <span class=\"o\">=</span> <span class=\"n\">pemString</span><span class=\"o\">.</span><span class=\"nf\">data</span><span class=\"p\">(</span><span class=\"nv\">using</span><span class=\"p\">:</span> <span class=\"o\">.</span><span class=\"n\">utf8</span><span class=\"p\">)</span><span class=\"o\">!</span>\n<span class=\"k\">let</span> <span class=\"nv\">jwtSigner</span> <span class=\"o\">=</span> <span class=\"kt\">JWTSigner</span><span class=\"o\">.</span><span class=\"nf\">rs256</span><span class=\"p\">(</span><span class=\"nv\">privateKey</span><span class=\"p\">:</span> <span class=\"n\">privateKey</span><span class=\"p\">)</span>\n<span class=\"kd\">struct</span> <span class=\"kt\">MyClaims</span><span class=\"p\">:</span> <span class=\"kt\">Claims</span> <span class=\"p\">{</span>\n   <span class=\"k\">var</span> <span class=\"nv\">name</span><span class=\"p\">:</span> <span class=\"kt\">String</span>\n<span class=\"p\">}</span>\n<span class=\"k\">let</span> <span class=\"nv\">jwt</span> <span class=\"o\">=</span> <span class=\"kt\">JWT</span><span class=\"p\">(</span><span class=\"nv\">claims</span><span class=\"p\">:</span> <span class=\"kt\">MyClaims</span><span class=\"p\">(</span><span class=\"nv\">name</span><span class=\"p\">:</span> <span class=\"s\">\"Kitura\"</span><span class=\"p\">))</span>\n<span class=\"k\">let</span> <span class=\"nv\">signedJWT</span> <span class=\"o\">=</span> <span class=\"k\">try</span><span class=\"p\">?</span> <span class=\"n\">jwt</span><span class=\"o\">.</span><span class=\"nf\">sign</span><span class=\"p\">(</span><span class=\"nv\">using</span><span class=\"p\">:</span> <span class=\"n\">jwtSigner</span><span class=\"p\">)</span>\n</code></pre>\n\n                        <a href=\"Structs/JWTSigner.html\" class=\"slightly-smaller\">See more</a>\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">struct</span> <span class=\"kt\">JWTSigner</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n              </ul>\n            </div>\n            <div class=\"task-group\">\n              <div class=\"task-name-container\">\n                <a name=\"/JWTVerifier\"></a>\n                <a name=\"//apple_ref/swift/Section/JWTVerifier\" class=\"dashAnchor\"></a>\n                <div class=\"section-name-container\">\n                  <a class=\"section-name-link\" href=\"#/JWTVerifier\"></a>\n                  <h3 class=\"section-name\"><p>JWTVerifier</p>\n</h3>\n                </div>\n              </div>\n              <ul class=\"item-container\">\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT11JWTVerifierV\"></a>\n                    <a name=\"//apple_ref/swift/Struct/JWTVerifier\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT11JWTVerifierV\">JWTVerifier</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>A struct that will be used to verify the signature of a JWT is valid for the provided <code><a href=\"Structs/Header.html\">Header</a></code> and <code><a href=\"Protocols/Claims.html\">Claims</a></code>.\nFor RSA and ECDSA, the provided key should be a .utf8 encoded PEM String.</p>\n<h3 id='usage-example' class='heading'>Usage Example:</h3>\n<pre class=\"highlight swift\"><code><span class=\"k\">let</span> <span class=\"nv\">pemString</span> <span class=\"o\">=</span> <span class=\"s\">\"\"\"\n-----BEGIN PUBLIC KEY-----\nMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDdlatRjRjogo3WojgGHFHYLugd\nUWAY9iR3fy4arWNA1KoS8kVw33cJibXr8bvwUAUparCwlvdbH6dvEOfou0/gCFQs\nHUfQrSDv+MuSUMAe8jzKE4qW+jK+xQU9a03GUnKHkkle+Q0pX/g6jXZ7r1/xAK5D\no2kQ+X5xK9cipRgEKwIDAQAB\n-----END PUBLIC KEY-----\n\"\"\"</span>\n<span class=\"k\">let</span> <span class=\"nv\">signedJWT</span> <span class=\"o\">=</span> <span class=\"s\">\"eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJuYW1lIjoiS2l0dXJhIn0.o2Rv_w1W6qfkldgb6FwzC3tAFEzo7WyYcLyykijCEqDbW8A7TwoFev85KGo_Bi7eNaSgZ6Q8jgkA31r8EDQWtSRg3_o5Zlq-ZCndyVeibgbyM2BMVUGcGzkUD2ikARfnb6GNGHr2waVeFSDehTN8WTLl0mGFxUE6wx5ZugR7My0\"</span>\n<span class=\"kd\">struct</span> <span class=\"kt\">MyClaims</span><span class=\"p\">:</span> <span class=\"kt\">Claims</span> <span class=\"p\">{</span>\n   <span class=\"k\">var</span> <span class=\"nv\">name</span><span class=\"p\">:</span> <span class=\"kt\">String</span>\n<span class=\"p\">}</span>\n<span class=\"k\">let</span> <span class=\"nv\">jwt</span> <span class=\"o\">=</span> <span class=\"kt\">JWT</span><span class=\"p\">(</span><span class=\"nv\">claims</span><span class=\"p\">:</span> <span class=\"kt\">MyClaims</span><span class=\"p\">(</span><span class=\"nv\">name</span><span class=\"p\">:</span> <span class=\"s\">\"Kitura\"</span><span class=\"p\">))</span>\n<span class=\"k\">let</span> <span class=\"nv\">publicKey</span> <span class=\"o\">=</span> <span class=\"n\">pemString</span><span class=\"o\">.</span><span class=\"nf\">data</span><span class=\"p\">(</span><span class=\"nv\">using</span><span class=\"p\">:</span> <span class=\"o\">.</span><span class=\"n\">utf8</span><span class=\"p\">)</span><span class=\"o\">!</span>\n<span class=\"k\">let</span> <span class=\"nv\">jwtVerifier</span> <span class=\"o\">=</span> <span class=\"kt\">JWTVerifier</span><span class=\"o\">.</span><span class=\"nf\">rs256</span><span class=\"p\">(</span><span class=\"nv\">publicKey</span><span class=\"p\">:</span> <span class=\"n\">publicKey</span><span class=\"p\">)</span>\n<span class=\"k\">let</span> <span class=\"nv\">verified</span><span class=\"p\">:</span> <span class=\"kt\">Bool</span> <span class=\"o\">=</span> <span class=\"n\">jwt</span><span class=\"o\">.</span><span class=\"nf\">verify</span><span class=\"p\">(</span><span class=\"n\">signedJWT</span><span class=\"p\">,</span> <span class=\"nv\">using</span><span class=\"p\">:</span> <span class=\"n\">jwtVerifier</span><span class=\"p\">)</span>\n</code></pre>\n\n                        <a href=\"Structs/JWTVerifier.html\" class=\"slightly-smaller\">See more</a>\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">struct</span> <span class=\"kt\">JWTVerifier</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n              </ul>\n            </div>\n            <div class=\"task-group\">\n              <div class=\"task-name-container\">\n                <a name=\"/ValidateClaimsResult\"></a>\n                <a name=\"//apple_ref/swift/Section/ValidateClaimsResult\" class=\"dashAnchor\"></a>\n                <div class=\"section-name-container\">\n                  <a class=\"section-name-link\" href=\"#/ValidateClaimsResult\"></a>\n                  <h3 class=\"section-name\"><p>ValidateClaimsResult</p>\n</h3>\n                </div>\n              </div>\n              <ul class=\"item-container\">\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT20ValidateClaimsResultV\"></a>\n                    <a name=\"//apple_ref/swift/Struct/ValidateClaimsResult\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT20ValidateClaimsResultV\">ValidateClaimsResult</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>ValidateClaimsResult list the possible results of a call to JWT.validateClaims method.\nIn case of successful validation, .success is returned, all other cases list various\nproblems that may occur during claims validation and indicate that the validation failed.</p>\n\n                        <a href=\"Structs/ValidateClaimsResult.html\" class=\"slightly-smaller\">See more</a>\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">struct</span> <span class=\"kt\">ValidateClaimsResult</span> <span class=\"p\">:</span> <span class=\"kt\">CustomStringConvertible</span><span class=\"p\">,</span> <span class=\"kt\">Equatable</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n              </ul>\n            </div>\n          </div>\n        </section>\n\n      </article>\n    </div>\n    <section class=\"footer\">\n      <p>&copy; 2020 <a class=\"link\" href=\"https://github.com/Kitura/Swift-JWT\" target=\"_blank\" rel=\"external\">IBM &amp; Kitura Project Contributors</a>. All rights reserved. (Last updated: 2020-11-25)</p>\n      <p>Generated by <a class=\"link\" href=\"https://github.com/realm/jazzy\" target=\"_blank\" rel=\"external\">jazzy ♪♫ v0.13.6</a>, a <a class=\"link\" href=\"https://realm.io\" target=\"_blank\" rel=\"external\">Realm</a> project.</p>\n    </section>\n  </body>\n</div>\n</html>\n"
  },
  {
    "path": "docs/css/highlight.css",
    "content": "/* Credit to https://gist.github.com/wataru420/2048287 */\n.highlight {\n  /* Comment */\n  /* Error */\n  /* Keyword */\n  /* Operator */\n  /* Comment.Multiline */\n  /* Comment.Preproc */\n  /* Comment.Single */\n  /* Comment.Special */\n  /* Generic.Deleted */\n  /* Generic.Deleted.Specific */\n  /* Generic.Emph */\n  /* Generic.Error */\n  /* Generic.Heading */\n  /* Generic.Inserted */\n  /* Generic.Inserted.Specific */\n  /* Generic.Output */\n  /* Generic.Prompt */\n  /* Generic.Strong */\n  /* Generic.Subheading */\n  /* Generic.Traceback */\n  /* Keyword.Constant */\n  /* Keyword.Declaration */\n  /* Keyword.Pseudo */\n  /* Keyword.Reserved */\n  /* Keyword.Type */\n  /* Literal.Number */\n  /* Literal.String */\n  /* Name.Attribute */\n  /* Name.Builtin */\n  /* Name.Class */\n  /* Name.Constant */\n  /* Name.Entity */\n  /* Name.Exception */\n  /* Name.Function */\n  /* Name.Namespace */\n  /* Name.Tag */\n  /* Name.Variable */\n  /* Operator.Word */\n  /* Text.Whitespace */\n  /* Literal.Number.Float */\n  /* Literal.Number.Hex */\n  /* Literal.Number.Integer */\n  /* Literal.Number.Oct */\n  /* Literal.String.Backtick */\n  /* Literal.String.Char */\n  /* Literal.String.Doc */\n  /* Literal.String.Double */\n  /* Literal.String.Escape */\n  /* Literal.String.Heredoc */\n  /* Literal.String.Interpol */\n  /* Literal.String.Other */\n  /* Literal.String.Regex */\n  /* Literal.String.Single */\n  /* Literal.String.Symbol */\n  /* Name.Builtin.Pseudo */\n  /* Name.Variable.Class */\n  /* Name.Variable.Global */\n  /* Name.Variable.Instance */\n  /* Literal.Number.Integer.Long */ }\n  .highlight .c {\n    color: #999988;\n    font-style: italic; }\n  .highlight .err {\n    color: #a61717;\n    background-color: #e3d2d2; }\n  .highlight .k {\n    color: #000000;\n    font-weight: bold; }\n  .highlight .o {\n    color: #000000;\n    font-weight: bold; }\n  .highlight .cm {\n    color: #999988;\n    font-style: italic; }\n  .highlight .cp {\n    color: #999999;\n    font-weight: bold; }\n  .highlight .c1 {\n    color: #999988;\n    font-style: italic; }\n  .highlight .cs {\n    color: #999999;\n    font-weight: bold;\n    font-style: italic; }\n  .highlight .gd {\n    color: #000000;\n    background-color: #ffdddd; }\n  .highlight .gd .x {\n    color: #000000;\n    background-color: #ffaaaa; }\n  .highlight .ge {\n    color: #000000;\n    font-style: italic; }\n  .highlight .gr {\n    color: #aa0000; }\n  .highlight .gh {\n    color: #999999; }\n  .highlight .gi {\n    color: #000000;\n    background-color: #ddffdd; }\n  .highlight .gi .x {\n    color: #000000;\n    background-color: #aaffaa; }\n  .highlight .go {\n    color: #888888; }\n  .highlight .gp {\n    color: #555555; }\n  .highlight .gs {\n    font-weight: bold; }\n  .highlight .gu {\n    color: #aaaaaa; }\n  .highlight .gt {\n    color: #aa0000; }\n  .highlight .kc {\n    color: #000000;\n    font-weight: bold; }\n  .highlight .kd {\n    color: #000000;\n    font-weight: bold; }\n  .highlight .kp {\n    color: #000000;\n    font-weight: bold; }\n  .highlight .kr {\n    color: #000000;\n    font-weight: bold; }\n  .highlight .kt {\n    color: #445588; }\n  .highlight .m {\n    color: #009999; }\n  .highlight .s {\n    color: #d14; }\n  .highlight .na {\n    color: #008080; }\n  .highlight .nb {\n    color: #0086B3; }\n  .highlight .nc {\n    color: #445588;\n    font-weight: bold; }\n  .highlight .no {\n    color: #008080; }\n  .highlight .ni {\n    color: #800080; }\n  .highlight .ne {\n    color: #990000;\n    font-weight: bold; }\n  .highlight .nf {\n    color: #990000; }\n  .highlight .nn {\n    color: #555555; }\n  .highlight .nt {\n    color: #000080; }\n  .highlight .nv {\n    color: #008080; }\n  .highlight .ow {\n    color: #000000;\n    font-weight: bold; }\n  .highlight .w {\n    color: #bbbbbb; }\n  .highlight .mf {\n    color: #009999; }\n  .highlight .mh {\n    color: #009999; }\n  .highlight .mi {\n    color: #009999; }\n  .highlight .mo {\n    color: #009999; }\n  .highlight .sb {\n    color: #d14; }\n  .highlight .sc {\n    color: #d14; }\n  .highlight .sd {\n    color: #d14; }\n  .highlight .s2 {\n    color: #d14; }\n  .highlight .se {\n    color: #d14; }\n  .highlight .sh {\n    color: #d14; }\n  .highlight .si {\n    color: #d14; }\n  .highlight .sx {\n    color: #d14; }\n  .highlight .sr {\n    color: #009926; }\n  .highlight .s1 {\n    color: #d14; }\n  .highlight .ss {\n    color: #990073; }\n  .highlight .bp {\n    color: #999999; }\n  .highlight .vc {\n    color: #008080; }\n  .highlight .vg {\n    color: #008080; }\n  .highlight .vi {\n    color: #008080; }\n  .highlight .il {\n    color: #009999; }\n"
  },
  {
    "path": "docs/css/jazzy.css",
    "content": "*, *:before, *:after {\n  box-sizing: inherit; }\n\nbody {\n  margin: 0;\n  background: #fff;\n  color: #333;\n  font: 16px/1.7 \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n  letter-spacing: .2px;\n  -webkit-font-smoothing: antialiased;\n  box-sizing: border-box; }\n\nh1 {\n  font-size: 2rem;\n  font-weight: 700;\n  margin: 1.275em 0 0.6em; }\n\nh2 {\n  font-size: 1.75rem;\n  font-weight: 700;\n  margin: 1.275em 0 0.3em; }\n\nh3 {\n  font-size: 1.5rem;\n  font-weight: 700;\n  margin: 1em 0 0.3em; }\n\nh4 {\n  font-size: 1.25rem;\n  font-weight: 700;\n  margin: 1.275em 0 0.85em; }\n\nh5 {\n  font-size: 1rem;\n  font-weight: 700;\n  margin: 1.275em 0 0.85em; }\n\nh6 {\n  font-size: 1rem;\n  font-weight: 700;\n  margin: 1.275em 0 0.85em;\n  color: #777; }\n\np {\n  margin: 0 0 1em; }\n\nul, ol {\n  padding: 0 0 0 2em;\n  margin: 0 0 0.85em; }\n\nblockquote {\n  margin: 0 0 0.85em;\n  padding: 0 15px;\n  color: #858585;\n  border-left: 4px solid #e5e5e5; }\n\nimg {\n  max-width: 100%; }\n\na {\n  color: #4183c4;\n  text-decoration: none; }\n  a:hover, a:focus {\n    outline: 0;\n    text-decoration: underline; }\n  a.discouraged {\n    text-decoration: line-through; }\n    a.discouraged:hover, a.discouraged:focus {\n      text-decoration: underline line-through; }\n\ntable {\n  background: #fff;\n  width: 100%;\n  border-collapse: collapse;\n  border-spacing: 0;\n  overflow: auto;\n  margin: 0 0 0.85em; }\n\ntr:nth-child(2n) {\n  background-color: #fbfbfb; }\n\nth, td {\n  padding: 6px 13px;\n  border: 1px solid #ddd; }\n\npre {\n  margin: 0 0 1.275em;\n  padding: .85em 1em;\n  overflow: auto;\n  background: #f7f7f7;\n  font-size: .85em;\n  font-family: Consolas, \"Liberation Mono\", Menlo, Courier, monospace; }\n\ncode {\n  font-family: Consolas, \"Liberation Mono\", Menlo, Courier, monospace; }\n\n.item-container p > code, .item-container li > code, .top-matter p > code, .top-matter li > code {\n  background: #f7f7f7;\n  padding: .2em; }\n  .item-container p > code:before, .item-container p > code:after, .item-container li > code:before, .item-container li > code:after, .top-matter p > code:before, .top-matter p > code:after, .top-matter li > code:before, .top-matter li > code:after {\n    letter-spacing: -.2em;\n    content: \"\\00a0\"; }\n\npre code {\n  padding: 0;\n  white-space: pre; }\n\n.content-wrapper {\n  display: flex;\n  flex-direction: column; }\n  @media (min-width: 768px) {\n    .content-wrapper {\n      flex-direction: row; } }\n.header {\n  display: flex;\n  padding: 8px;\n  font-size: 0.875em;\n  background: #444;\n  color: #999; }\n\n.header-col {\n  margin: 0;\n  padding: 0 8px; }\n\n.header-col--primary {\n  flex: 1; }\n\n.header-link {\n  color: #fff; }\n\n.header-icon {\n  padding-right: 6px;\n  vertical-align: -4px;\n  height: 16px; }\n\n.breadcrumbs {\n  font-size: 0.875em;\n  padding: 8px 16px;\n  margin: 0;\n  background: #fbfbfb;\n  border-bottom: 1px solid #ddd; }\n\n.carat {\n  height: 10px;\n  margin: 0 5px; }\n\n.navigation {\n  order: 2; }\n  @media (min-width: 768px) {\n    .navigation {\n      order: 1;\n      width: 25%;\n      max-width: 300px;\n      padding-bottom: 64px;\n      overflow: hidden;\n      word-wrap: normal;\n      background: #fbfbfb;\n      border-right: 1px solid #ddd; } }\n.nav-groups {\n  list-style-type: none;\n  padding-left: 0; }\n\n.nav-group-name {\n  border-bottom: 1px solid #ddd;\n  padding: 8px 0 8px 16px; }\n\n.nav-group-name-link {\n  color: #333; }\n\n.nav-group-tasks {\n  margin: 8px 0;\n  padding: 0 0 0 8px; }\n\n.nav-group-task {\n  font-size: 1em;\n  list-style-type: none;\n  white-space: nowrap; }\n\n.nav-group-task-link {\n  color: #808080; }\n\n.main-content {\n  order: 1; }\n  @media (min-width: 768px) {\n    .main-content {\n      order: 2;\n      flex: 1;\n      padding-bottom: 60px; } }\n.section {\n  padding: 0 32px;\n  border-bottom: 1px solid #ddd; }\n\n.section-content {\n  max-width: 834px;\n  margin: 0 auto;\n  padding: 16px 0; }\n\n.section-name {\n  color: #666;\n  display: block; }\n  .section-name p {\n    margin-bottom: inherit; }\n\n.declaration .highlight {\n  overflow-x: initial;\n  padding: 8px 0;\n  margin: 0;\n  background-color: transparent;\n  border: none; }\n\n.task-group-section {\n  border-top: 1px solid #ddd; }\n\n.task-group {\n  padding-top: 0px; }\n\n.task-name-container a[name]:before {\n  content: \"\";\n  display: block; }\n\n.section-name-container {\n  position: relative; }\n  .section-name-container .section-name-link {\n    position: absolute;\n    top: 0;\n    left: 0;\n    bottom: 0;\n    right: 0;\n    margin-bottom: 0; }\n  .section-name-container .section-name {\n    position: relative;\n    pointer-events: none;\n    z-index: 1; }\n    .section-name-container .section-name a {\n      pointer-events: auto; }\n\n.item-container {\n  padding: 0; }\n\n.item {\n  padding-top: 8px;\n  width: 100%;\n  list-style-type: none; }\n  .item a[name]:before {\n    content: \"\";\n    display: block; }\n  .item .token, .item .direct-link {\n    display: inline-block;\n    text-indent: -20px;\n    padding-left: 3px;\n    margin-left: 20px;\n    font-size: 1rem; }\n  .item .declaration-note {\n    font-size: .85em;\n    color: #808080;\n    font-style: italic; }\n\n.pointer-container {\n  border-bottom: 1px solid #ddd;\n  left: -23px;\n  padding-bottom: 13px;\n  position: relative;\n  width: 110%; }\n\n.pointer {\n  left: 21px;\n  top: 7px;\n  display: block;\n  position: absolute;\n  width: 12px;\n  height: 12px;\n  border-left: 1px solid #ddd;\n  border-top: 1px solid #ddd;\n  background: #fff;\n  transform: rotate(45deg); }\n\n.height-container {\n  display: none;\n  position: relative;\n  width: 100%;\n  overflow: hidden; }\n  .height-container .section {\n    background: #fff;\n    border: 1px solid #ddd;\n    border-top-width: 0;\n    padding-top: 10px;\n    padding-bottom: 5px;\n    padding: 8px 16px; }\n\n.aside, .language {\n  padding: 6px 12px;\n  margin: 12px 0;\n  border-left: 5px solid #dddddd;\n  overflow-y: hidden; }\n  .aside .aside-title, .language .aside-title {\n    font-size: 9px;\n    letter-spacing: 2px;\n    text-transform: uppercase;\n    padding-bottom: 0;\n    margin: 0;\n    color: #aaa;\n    -webkit-user-select: none; }\n  .aside p:last-child, .language p:last-child {\n    margin-bottom: 0; }\n\n.language {\n  border-left: 5px solid #cde9f4; }\n  .language .aside-title {\n    color: #4183c4; }\n\n.aside-warning, .aside-deprecated, .aside-unavailable {\n  border-left: 5px solid #ff6666; }\n  .aside-warning .aside-title, .aside-deprecated .aside-title, .aside-unavailable .aside-title {\n    color: #ff0000; }\n\n.graybox {\n  border-collapse: collapse;\n  width: 100%; }\n  .graybox p {\n    margin: 0;\n    word-break: break-word;\n    min-width: 50px; }\n  .graybox td {\n    border: 1px solid #ddd;\n    padding: 5px 25px 5px 10px;\n    vertical-align: middle; }\n  .graybox tr td:first-of-type {\n    text-align: right;\n    padding: 7px;\n    vertical-align: top;\n    word-break: normal;\n    width: 40px; }\n\n.slightly-smaller {\n  font-size: 0.9em; }\n\n.footer {\n  padding: 8px 16px;\n  background: #444;\n  color: #ddd;\n  font-size: 0.8em; }\n  .footer p {\n    margin: 8px 0; }\n  .footer a {\n    color: #fff; }\n\nhtml.dash .header, html.dash .breadcrumbs, html.dash .navigation {\n  display: none; }\n\nhtml.dash .height-container {\n  display: block; }\n\nform[role=search] input {\n  font: 16px/1.7 \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n  font-size: 14px;\n  line-height: 24px;\n  padding: 0 10px;\n  margin: 0;\n  border: none;\n  border-radius: 1em; }\n  .loading form[role=search] input {\n    background: white url(../img/spinner.gif) center right 4px no-repeat; }\n\nform[role=search] .tt-menu {\n  margin: 0;\n  min-width: 300px;\n  background: #fbfbfb;\n  color: #333;\n  border: 1px solid #ddd; }\n\nform[role=search] .tt-highlight {\n  font-weight: bold; }\n\nform[role=search] .tt-suggestion {\n  font: 16px/1.7 \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n  padding: 0 8px; }\n  form[role=search] .tt-suggestion span {\n    display: table-cell;\n    white-space: nowrap; }\n  form[role=search] .tt-suggestion .doc-parent-name {\n    width: 100%;\n    text-align: right;\n    font-weight: normal;\n    font-size: 0.9em;\n    padding-left: 16px; }\n\nform[role=search] .tt-suggestion:hover,\nform[role=search] .tt-suggestion.tt-cursor {\n  cursor: pointer;\n  background-color: #4183c4;\n  color: #fff; }\n\nform[role=search] .tt-suggestion:hover .doc-parent-name,\nform[role=search] .tt-suggestion.tt-cursor .doc-parent-name {\n  color: #fff; }\n"
  },
  {
    "path": "docs/docsets/SwiftJWT.docset/Contents/Info.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n  <dict>\n    <key>CFBundleIdentifier</key>\n      <string>com.jazzy.swiftjwt</string>\n    <key>CFBundleName</key>\n      <string>SwiftJWT</string>\n    <key>DocSetPlatformFamily</key>\n      <string>swiftjwt</string>\n    <key>isDashDocset</key>\n      <true/>\n    <key>dashIndexFilePath</key>\n      <string>index.html</string>\n    <key>isJavaScriptEnabled</key>\n      <true/>\n    <key>DashDocSetFamily</key>\n      <string>dashtoc</string>\n  </dict>\n</plist>\n"
  },
  {
    "path": "docs/docsets/SwiftJWT.docset/Contents/Resources/Documents/Classes/ClaimsMicroProfile.html",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n  <head>\n    <title>ClaimsMicroProfile Class Reference</title>\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"../css/jazzy.css\" />\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"../css/highlight.css\" />\n    <meta charset=\"utf-8\">\n    <script src=\"../js/jquery.min.js\" defer></script>\n    <script src=\"../js/jazzy.js\" defer></script>\n    \n    <script src=\"../js/lunr.min.js\" defer></script>\n    <script src=\"../js/typeahead.jquery.js\" defer></script>\n    <script src=\"../js/jazzy.search.js\" defer></script>\n  </head>\n  <body>\n\n    <a name=\"//apple_ref/swift/Class/ClaimsMicroProfile\" class=\"dashAnchor\"></a>\n\n    <a title=\"ClaimsMicroProfile Class Reference\"></a>\n\n    <header class=\"header\">\n      <p class=\"header-col header-col--primary\">\n        <a class=\"header-link\" href=\"../index.html\">\n          SwiftJWT 3.6.200 Docs\n        </a>\n         (100% documented)\n      </p>\n    \n      <p class=\"header-col--secondary\">\n        <form role=\"search\" action=\"../search.json\">\n          <input type=\"text\" placeholder=\"Search documentation\" data-typeahead>\n        </form>\n      </p>\n    \n        <p class=\"header-col header-col--secondary\">\n          <a class=\"header-link\" href=\"https://github.com/Kitura/Swift-JWT/\">\n            <img class=\"header-icon\" src=\"../img/gh.png\"/>\n            View on GitHub\n          </a>\n        </p>\n    \n    </header>\n\n    <p class=\"breadcrumbs\">\n      <a class=\"breadcrumb\" href=\"../index.html\">SwiftJWT Reference</a>\n      <img class=\"carat\" src=\"../img/carat.png\" />\n      ClaimsMicroProfile Class Reference\n    </p>\n\n    <div class=\"content-wrapper\">\n      <nav class=\"navigation\">\n        <ul class=\"nav-groups\">\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Classes.html\">Classes</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ClaimsMicroProfile.html\">ClaimsMicroProfile</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ClaimsOpenID.html\">ClaimsOpenID</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ClaimsStandardJWT.html\">ClaimsStandardJWT</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/JWTDecoder.html\">JWTDecoder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/JWTEncoder.html\">JWTEncoder</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Protocols.html\">Protocols</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/Claims.html\">Claims</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Structs.html\">Structures</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/AddressClaim.html\">AddressClaim</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Header.html\">Header</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/JWT.html\">JWT</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/JWTError.html\">JWTError</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/JWTSigner.html\">JWTSigner</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/JWTVerifier.html\">JWTVerifier</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/ValidateClaimsResult.html\">ValidateClaimsResult</a>\n              </li>\n            </ul>\n          </li>\n        </ul>\n      </nav>\n      <article class=\"main-content\">\n\n        <section class=\"section\">\n          <div class=\"section-content top-matter\">\n            <h1>ClaimsMicroProfile</h1>\n              <div class=\"declaration\">\n                <div class=\"language\">\n                  \n                  <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">class</span> <span class=\"kt\">ClaimsMicroProfile</span> <span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Protocols/Claims.html\">Claims</a></span></code></pre>\n\n                </div>\n              </div>\n            <p>A class representing the MicroProfile claims as listed in <a href=\"http://microprofile.io/project/eclipse/microprofile-jwt-auth/spec/src/main/asciidoc/interoperability.asciidoc\">MicroProfile specs</a>.</p>\n\n          </div>\n        </section>\n\n        <section class=\"section\">\n          <div class=\"section-content\">\n            <div class=\"task-group\">\n              <ul class=\"item-container\">\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT18ClaimsMicroProfileC3iss3sub3exp3iat3jti3upn6groupsACSS_SS10Foundation4DateVAMS2SSaySSGtcfc\"></a>\n                    <a name=\"//apple_ref/swift/Method/init(iss:sub:exp:iat:jti:upn:groups:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT18ClaimsMicroProfileC3iss3sub3exp3iat3jti3upn6groupsACSS_SS10Foundation4DateVAMS2SSaySSGtcfc\">init(iss:<wbr>sub:<wbr>exp:<wbr>iat:<wbr>jti:<wbr>upn:<wbr>groups:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Initialize a <code>ClaimsMicroProfile</code></p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"nf\">init</span><span class=\"p\">(</span>\n    <span class=\"nv\">iss</span><span class=\"p\">:</span> <span class=\"kt\">String</span><span class=\"p\">,</span>\n    <span class=\"nv\">sub</span><span class=\"p\">:</span> <span class=\"kt\">String</span><span class=\"p\">,</span>\n    <span class=\"nv\">exp</span><span class=\"p\">:</span> <span class=\"kt\">Date</span><span class=\"p\">,</span>\n    <span class=\"nv\">iat</span><span class=\"p\">:</span> <span class=\"kt\">Date</span><span class=\"p\">,</span>\n    <span class=\"nv\">jti</span><span class=\"p\">:</span> <span class=\"kt\">String</span><span class=\"p\">,</span>\n    <span class=\"nv\">upn</span><span class=\"p\">:</span> <span class=\"kt\">String</span><span class=\"p\">,</span>\n    <span class=\"nv\">groups</span><span class=\"p\">:</span> <span class=\"p\">[</span><span class=\"kt\">String</span><span class=\"p\">]</span>\n<span class=\"p\">)</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT18ClaimsMicroProfileC3issSSvp\"></a>\n                    <a name=\"//apple_ref/swift/Property/iss\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT18ClaimsMicroProfileC3issSSvp\">iss</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>The MP-JWT issuer. <a href=\"https://tools.ietf.org/html/rfc7519#section-4.1.1\">RFC7519, Section 4.1.1</a></p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"k\">var</span> <span class=\"nv\">iss</span><span class=\"p\">:</span> <span class=\"kt\">String</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT18ClaimsMicroProfileC3subSSvp\"></a>\n                    <a name=\"//apple_ref/swift/Property/sub\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT18ClaimsMicroProfileC3subSSvp\">sub</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Identifies the principal that is the subject of the JWT.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"k\">var</span> <span class=\"nv\">sub</span><span class=\"p\">:</span> <span class=\"kt\">String</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT18ClaimsMicroProfileC3exp10Foundation4DateVvp\"></a>\n                    <a name=\"//apple_ref/swift/Property/exp\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT18ClaimsMicroProfileC3exp10Foundation4DateVvp\">exp</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Identifies the expiration time on or after which the JWT MUST NOT be accepted for processing.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"k\">var</span> <span class=\"nv\">exp</span><span class=\"p\">:</span> <span class=\"kt\">Date</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT18ClaimsMicroProfileC3iat10Foundation4DateVvp\"></a>\n                    <a name=\"//apple_ref/swift/Property/iat\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT18ClaimsMicroProfileC3iat10Foundation4DateVvp\">iat</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Identifies the time at which the JWT was issued.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"k\">var</span> <span class=\"nv\">iat</span><span class=\"p\">:</span> <span class=\"kt\">Date</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT18ClaimsMicroProfileC3jtiSSvp\"></a>\n                    <a name=\"//apple_ref/swift/Property/jti\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT18ClaimsMicroProfileC3jtiSSvp\">jti</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>The &ldquo;jti&rdquo; (JWT ID) claim provides a unique identifier for the JWT.\nThe identifier value MUST be assigned in a manner that ensures that\nthere is a negligible probability that the same value will be\naccidentally assigned to a different data object.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"k\">var</span> <span class=\"nv\">jti</span><span class=\"p\">:</span> <span class=\"kt\">String</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT18ClaimsMicroProfileC3upnSSSgvp\"></a>\n                    <a name=\"//apple_ref/swift/Property/upn\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT18ClaimsMicroProfileC3upnSSSgvp\">upn</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>This MP-JWT custom claim is the user principal name in the java.security.Principal interface, and is the caller principal name in javax.security.enterprise.identitystore.IdentityStore. If this claim is missing, fallback to the &ldquo;preferred_username&rdquo;, should be attempted, and if that claim is missing, fallback to the &ldquo;sub&rdquo; claim should be used.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"k\">var</span> <span class=\"nv\">upn</span><span class=\"p\">:</span> <span class=\"kt\">String</span><span class=\"p\">?</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT18ClaimsMicroProfileC18preferred_usernameSSSgvp\"></a>\n                    <a name=\"//apple_ref/swift/Property/preferred_username\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT18ClaimsMicroProfileC18preferred_usernameSSSgvp\">preferred_username</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Shorthand name by which the End-User wishes to be referred to at the RP, such as janedoe or j.doe. This value MAY be any valid JSON string including special characters such as @, /, or whitespace.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"k\">var</span> <span class=\"nv\">preferred_username</span><span class=\"p\">:</span> <span class=\"kt\">String</span><span class=\"p\">?</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT18ClaimsMicroProfileC6groupsSaySSGvp\"></a>\n                    <a name=\"//apple_ref/swift/Property/groups\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT18ClaimsMicroProfileC6groupsSaySSGvp\">groups</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>This MP-JWT custom claim is the list of group names that have been assigned to the principal of the MP-JWT. This typically will required a mapping at the application container level to application deployment roles, but a one-to-one between group names and application role names is required to be performed in addition to any other mapping.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"k\">var</span> <span class=\"nv\">groups</span><span class=\"p\">:</span> <span class=\"p\">[</span><span class=\"kt\">String</span><span class=\"p\">]</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n              </ul>\n            </div>\n          </div>\n        </section>\n\n      </article>\n    </div>\n    <section class=\"footer\">\n      <p>&copy; 2020 <a class=\"link\" href=\"https://github.com/Kitura/Swift-JWT\" target=\"_blank\" rel=\"external\">IBM &amp; Kitura Project Contributors</a>. All rights reserved. (Last updated: 2020-11-25)</p>\n      <p>Generated by <a class=\"link\" href=\"https://github.com/realm/jazzy\" target=\"_blank\" rel=\"external\">jazzy ♪♫ v0.13.6</a>, a <a class=\"link\" href=\"https://realm.io\" target=\"_blank\" rel=\"external\">Realm</a> project.</p>\n    </section>\n  </body>\n</div>\n</html>\n"
  },
  {
    "path": "docs/docsets/SwiftJWT.docset/Contents/Resources/Documents/Classes/ClaimsOpenID.html",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n  <head>\n    <title>ClaimsOpenID Class Reference</title>\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"../css/jazzy.css\" />\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"../css/highlight.css\" />\n    <meta charset=\"utf-8\">\n    <script src=\"../js/jquery.min.js\" defer></script>\n    <script src=\"../js/jazzy.js\" defer></script>\n    \n    <script src=\"../js/lunr.min.js\" defer></script>\n    <script src=\"../js/typeahead.jquery.js\" defer></script>\n    <script src=\"../js/jazzy.search.js\" defer></script>\n  </head>\n  <body>\n\n    <a name=\"//apple_ref/swift/Class/ClaimsOpenID\" class=\"dashAnchor\"></a>\n\n    <a title=\"ClaimsOpenID Class Reference\"></a>\n\n    <header class=\"header\">\n      <p class=\"header-col header-col--primary\">\n        <a class=\"header-link\" href=\"../index.html\">\n          SwiftJWT 3.6.200 Docs\n        </a>\n         (100% documented)\n      </p>\n    \n      <p class=\"header-col--secondary\">\n        <form role=\"search\" action=\"../search.json\">\n          <input type=\"text\" placeholder=\"Search documentation\" data-typeahead>\n        </form>\n      </p>\n    \n        <p class=\"header-col header-col--secondary\">\n          <a class=\"header-link\" href=\"https://github.com/Kitura/Swift-JWT/\">\n            <img class=\"header-icon\" src=\"../img/gh.png\"/>\n            View on GitHub\n          </a>\n        </p>\n    \n    </header>\n\n    <p class=\"breadcrumbs\">\n      <a class=\"breadcrumb\" href=\"../index.html\">SwiftJWT Reference</a>\n      <img class=\"carat\" src=\"../img/carat.png\" />\n      ClaimsOpenID Class Reference\n    </p>\n\n    <div class=\"content-wrapper\">\n      <nav class=\"navigation\">\n        <ul class=\"nav-groups\">\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Classes.html\">Classes</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ClaimsMicroProfile.html\">ClaimsMicroProfile</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ClaimsOpenID.html\">ClaimsOpenID</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ClaimsStandardJWT.html\">ClaimsStandardJWT</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/JWTDecoder.html\">JWTDecoder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/JWTEncoder.html\">JWTEncoder</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Protocols.html\">Protocols</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/Claims.html\">Claims</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Structs.html\">Structures</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/AddressClaim.html\">AddressClaim</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Header.html\">Header</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/JWT.html\">JWT</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/JWTError.html\">JWTError</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/JWTSigner.html\">JWTSigner</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/JWTVerifier.html\">JWTVerifier</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/ValidateClaimsResult.html\">ValidateClaimsResult</a>\n              </li>\n            </ul>\n          </li>\n        </ul>\n      </nav>\n      <article class=\"main-content\">\n\n        <section class=\"section\">\n          <div class=\"section-content top-matter\">\n            <h1>ClaimsOpenID</h1>\n              <div class=\"declaration\">\n                <div class=\"language\">\n                  \n                  <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">class</span> <span class=\"kt\">ClaimsOpenID</span> <span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Protocols/Claims.html\">Claims</a></span></code></pre>\n\n                </div>\n              </div>\n            <p>A class representing OpenID related claims as decsribed in <a href=\"http://openid.net/specs/openid-connect-core-1_0.html\">OpenID specs</a>.</p>\n\n          </div>\n        </section>\n\n        <section class=\"section\">\n          <div class=\"section-content\">\n            <div class=\"task-group\">\n              <ul class=\"item-container\">\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT12ClaimsOpenIDC3iss3sub3aud3exp3iat9auth_time5nonce3acr3amr3azp4name06given_Q007family_Q007middle_Q08nickname18preferred_username7profile7picture7website5email14email_verified6gender9birthdate8zoneinfo6locale12phone_number21phone_number_verified7address10updated_atACSS_SSSaySSG10Foundation4DateVA8_A8_SgSSSgA10_A5_SgA10_A10_A10_A10_A10_A10_A10_A10_A10_A10_A10_SbSgA10_A10_A10_A10_A10_A12_AA12AddressClaimVSgA9_tcfc\"></a>\n                    <a name=\"//apple_ref/swift/Method/init(iss:sub:aud:exp:iat:auth_time:nonce:acr:amr:azp:name:given_name:family_name:middle_name:nickname:preferred_username:profile:picture:website:email:email_verified:gender:birthdate:zoneinfo:locale:phone_number:phone_number_verified:address:updated_at:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT12ClaimsOpenIDC3iss3sub3aud3exp3iat9auth_time5nonce3acr3amr3azp4name06given_Q007family_Q007middle_Q08nickname18preferred_username7profile7picture7website5email14email_verified6gender9birthdate8zoneinfo6locale12phone_number21phone_number_verified7address10updated_atACSS_SSSaySSG10Foundation4DateVA8_A8_SgSSSgA10_A5_SgA10_A10_A10_A10_A10_A10_A10_A10_A10_A10_A10_SbSgA10_A10_A10_A10_A10_A12_AA12AddressClaimVSgA9_tcfc\">init(iss:<wbr>sub:<wbr>aud:<wbr>exp:<wbr>iat:<wbr>auth_time:<wbr>nonce:<wbr>acr:<wbr>amr:<wbr>azp:<wbr>name:<wbr>given_name:<wbr>family_name:<wbr>middle_name:<wbr>nickname:<wbr>preferred_username:<wbr>profile:<wbr>picture:<wbr>website:<wbr>email:<wbr>email_verified:<wbr>gender:<wbr>birthdate:<wbr>zoneinfo:<wbr>locale:<wbr>phone_number:<wbr>phone_number_verified:<wbr>address:<wbr>updated_at:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Initalise the <code>ClaimsOpenID</code></p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"nf\">init</span><span class=\"p\">(</span>\n    <span class=\"nv\">iss</span><span class=\"p\">:</span> <span class=\"kt\">String</span><span class=\"p\">,</span>\n    <span class=\"nv\">sub</span><span class=\"p\">:</span> <span class=\"kt\">String</span><span class=\"p\">,</span>\n    <span class=\"nv\">aud</span><span class=\"p\">:</span> <span class=\"p\">[</span><span class=\"kt\">String</span><span class=\"p\">],</span>\n    <span class=\"nv\">exp</span><span class=\"p\">:</span> <span class=\"kt\">Date</span><span class=\"p\">,</span>\n    <span class=\"nv\">iat</span><span class=\"p\">:</span> <span class=\"kt\">Date</span><span class=\"p\">,</span>\n    <span class=\"nv\">auth_time</span><span class=\"p\">:</span> <span class=\"kt\">Date</span><span class=\"p\">?</span> <span class=\"o\">=</span> <span class=\"kc\">nil</span><span class=\"p\">,</span>\n    <span class=\"nv\">nonce</span><span class=\"p\">:</span> <span class=\"kt\">String</span><span class=\"p\">?</span> <span class=\"o\">=</span> <span class=\"kc\">nil</span><span class=\"p\">,</span>\n    <span class=\"nv\">acr</span><span class=\"p\">:</span> <span class=\"kt\">String</span><span class=\"p\">?</span> <span class=\"o\">=</span> <span class=\"kc\">nil</span><span class=\"p\">,</span>\n    <span class=\"nv\">amr</span><span class=\"p\">:</span> <span class=\"p\">[</span><span class=\"kt\">String</span><span class=\"p\">]?</span> <span class=\"o\">=</span> <span class=\"kc\">nil</span><span class=\"p\">,</span>\n    <span class=\"nv\">azp</span><span class=\"p\">:</span> <span class=\"kt\">String</span><span class=\"p\">?</span> <span class=\"o\">=</span> <span class=\"kc\">nil</span><span class=\"p\">,</span>\n    <span class=\"nv\">name</span><span class=\"p\">:</span> <span class=\"kt\">String</span><span class=\"p\">?</span> <span class=\"o\">=</span> <span class=\"kc\">nil</span><span class=\"p\">,</span>\n    <span class=\"nv\">given_name</span><span class=\"p\">:</span> <span class=\"kt\">String</span><span class=\"p\">?</span> <span class=\"o\">=</span> <span class=\"kc\">nil</span><span class=\"p\">,</span>\n    <span class=\"nv\">family_name</span><span class=\"p\">:</span> <span class=\"kt\">String</span><span class=\"p\">?</span> <span class=\"o\">=</span> <span class=\"kc\">nil</span><span class=\"p\">,</span>\n    <span class=\"nv\">middle_name</span><span class=\"p\">:</span> <span class=\"kt\">String</span><span class=\"p\">?</span> <span class=\"o\">=</span> <span class=\"kc\">nil</span><span class=\"p\">,</span>\n    <span class=\"nv\">nickname</span><span class=\"p\">:</span> <span class=\"kt\">String</span><span class=\"p\">?</span> <span class=\"o\">=</span> <span class=\"kc\">nil</span><span class=\"p\">,</span>\n    <span class=\"nv\">preferred_username</span><span class=\"p\">:</span> <span class=\"kt\">String</span><span class=\"p\">?</span> <span class=\"o\">=</span> <span class=\"kc\">nil</span><span class=\"p\">,</span>\n    <span class=\"nv\">profile</span><span class=\"p\">:</span> <span class=\"kt\">String</span><span class=\"p\">?</span> <span class=\"o\">=</span> <span class=\"kc\">nil</span><span class=\"p\">,</span>\n    <span class=\"nv\">picture</span><span class=\"p\">:</span> <span class=\"kt\">String</span><span class=\"p\">?</span> <span class=\"o\">=</span> <span class=\"kc\">nil</span><span class=\"p\">,</span>\n    <span class=\"nv\">website</span><span class=\"p\">:</span> <span class=\"kt\">String</span><span class=\"p\">?</span> <span class=\"o\">=</span> <span class=\"kc\">nil</span><span class=\"p\">,</span>\n    <span class=\"nv\">email</span><span class=\"p\">:</span> <span class=\"kt\">String</span><span class=\"p\">?</span> <span class=\"o\">=</span> <span class=\"kc\">nil</span><span class=\"p\">,</span>\n    <span class=\"nv\">email_verified</span><span class=\"p\">:</span> <span class=\"kt\">Bool</span><span class=\"p\">?</span> <span class=\"o\">=</span> <span class=\"kc\">nil</span><span class=\"p\">,</span>\n    <span class=\"nv\">gender</span><span class=\"p\">:</span> <span class=\"kt\">String</span><span class=\"p\">?</span> <span class=\"o\">=</span> <span class=\"kc\">nil</span><span class=\"p\">,</span>\n    <span class=\"nv\">birthdate</span><span class=\"p\">:</span> <span class=\"kt\">String</span><span class=\"p\">?</span> <span class=\"o\">=</span> <span class=\"kc\">nil</span><span class=\"p\">,</span>\n    <span class=\"nv\">zoneinfo</span><span class=\"p\">:</span> <span class=\"kt\">String</span><span class=\"p\">?</span> <span class=\"o\">=</span> <span class=\"kc\">nil</span><span class=\"p\">,</span>\n    <span class=\"nv\">locale</span><span class=\"p\">:</span> <span class=\"kt\">String</span><span class=\"p\">?</span> <span class=\"o\">=</span> <span class=\"kc\">nil</span><span class=\"p\">,</span>\n    <span class=\"nv\">phone_number</span><span class=\"p\">:</span> <span class=\"kt\">String</span><span class=\"p\">?</span> <span class=\"o\">=</span> <span class=\"kc\">nil</span><span class=\"p\">,</span>\n    <span class=\"nv\">phone_number_verified</span><span class=\"p\">:</span> <span class=\"kt\">Bool</span><span class=\"p\">?</span> <span class=\"o\">=</span> <span class=\"kc\">nil</span><span class=\"p\">,</span>\n    <span class=\"nv\">address</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Structs/AddressClaim.html\">AddressClaim</a></span><span class=\"p\">?</span> <span class=\"o\">=</span> <span class=\"kc\">nil</span><span class=\"p\">,</span>\n    <span class=\"nv\">updated_at</span><span class=\"p\">:</span> <span class=\"kt\">Date</span><span class=\"p\">?</span> <span class=\"o\">=</span> <span class=\"kc\">nil</span>\n<span class=\"p\">)</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n              </ul>\n            </div>\n            <div class=\"task-group\">\n              <div class=\"task-name-container\">\n                <a name=\"/ID%20Token\"></a>\n                <a name=\"//apple_ref/swift/Section/ID Token\" class=\"dashAnchor\"></a>\n                <div class=\"section-name-container\">\n                  <a class=\"section-name-link\" href=\"#/ID%20Token\"></a>\n                  <h3 class=\"section-name\"><p>ID Token</p>\n</h3>\n                </div>\n              </div>\n              <ul class=\"item-container\">\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT12ClaimsOpenIDC3issSSvp\"></a>\n                    <a name=\"//apple_ref/swift/Property/iss\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT12ClaimsOpenIDC3issSSvp\">iss</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Issuer Identifier for the Issuer of the response. The iss value is a case sensitive URL using the https scheme that contains scheme, host, and optionally, port number and path components and no query or fragment components.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"k\">var</span> <span class=\"nv\">iss</span><span class=\"p\">:</span> <span class=\"kt\">String</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT12ClaimsOpenIDC3subSSvp\"></a>\n                    <a name=\"//apple_ref/swift/Property/sub\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT12ClaimsOpenIDC3subSSvp\">sub</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Subject Identifier. A locally unique and never reassigned identifier within the Issuer for the End-User, which is intended to be consumed by the Client, e.g., 24400320 or AItOawmwtWwcT0k51BayewNvutrJUqsvl6qs7A4. It MUST NOT exceed 255 ASCII characters in length. The sub value is case sensitive.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"k\">var</span> <span class=\"nv\">sub</span><span class=\"p\">:</span> <span class=\"kt\">String</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT12ClaimsOpenIDC3audSaySSGvp\"></a>\n                    <a name=\"//apple_ref/swift/Property/aud\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT12ClaimsOpenIDC3audSaySSGvp\">aud</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Audience(s) that this ID Token is intended for. It MUST contain the OAuth 2.0 client_id of the Relying Party as an audience value. It MAY also contain identifiers for other audiences.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"k\">var</span> <span class=\"nv\">aud</span><span class=\"p\">:</span> <span class=\"p\">[</span><span class=\"kt\">String</span><span class=\"p\">]</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT12ClaimsOpenIDC3exp10Foundation4DateVvp\"></a>\n                    <a name=\"//apple_ref/swift/Property/exp\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT12ClaimsOpenIDC3exp10Foundation4DateVvp\">exp</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Expiration time on or after which the ID Token MUST NOT be accepted for processing. The processing of this parameter requires that the current date/time MUST be before the expiration date/time listed in the value. Implementers MAY provide for some small leeway, usually no more than a few minutes, to account for clock skew.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"k\">var</span> <span class=\"nv\">exp</span><span class=\"p\">:</span> <span class=\"kt\">Date</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT12ClaimsOpenIDC3iat10Foundation4DateVvp\"></a>\n                    <a name=\"//apple_ref/swift/Property/iat\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT12ClaimsOpenIDC3iat10Foundation4DateVvp\">iat</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Time at which the JWT was issued.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"k\">var</span> <span class=\"nv\">iat</span><span class=\"p\">:</span> <span class=\"kt\">Date</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT12ClaimsOpenIDC9auth_time10Foundation4DateVSgvp\"></a>\n                    <a name=\"//apple_ref/swift/Property/auth_time\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT12ClaimsOpenIDC9auth_time10Foundation4DateVSgvp\">auth_time</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Time when the End-User authentication occurred.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"k\">var</span> <span class=\"nv\">auth_time</span><span class=\"p\">:</span> <span class=\"kt\">Date</span><span class=\"p\">?</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT12ClaimsOpenIDC5nonceSSSgvp\"></a>\n                    <a name=\"//apple_ref/swift/Property/nonce\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT12ClaimsOpenIDC5nonceSSSgvp\">nonce</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>String value used to associate a Client session with an ID Token, and to mitigate replay attacks. The value is passed through unmodified from the Authentication Request to the ID Token. If present in the ID Token, Clients MUST verify that the nonce Claim Value is equal to the value of the nonce parameter sent in the Authentication Request. If present in the Authentication Request, Authorization Servers MUST include a nonce Claim in the ID Token with the Claim Value being the nonce value sent in the Authentication Request. Authorization Servers SHOULD perform no other processing on nonce values used.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"k\">var</span> <span class=\"nv\">nonce</span><span class=\"p\">:</span> <span class=\"kt\">String</span><span class=\"p\">?</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT12ClaimsOpenIDC3acrSSSgvp\"></a>\n                    <a name=\"//apple_ref/swift/Property/acr\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT12ClaimsOpenIDC3acrSSSgvp\">acr</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Authentication Context Class Reference. String specifying an Authentication Context Class Reference value that identifies the Authentication Context Class that the authentication performed satisfied. The value &ldquo;0&rdquo; indicates the End-User authentication did not meet the requirements of ISO/IEC 29115 level 1. Authentications with level 0 SHOULD NOT be used to authorize access to any resource of any monetary value. Parties using this claim will need to agree upon the meanings of the values used, which may be context-specific.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"k\">var</span> <span class=\"nv\">acr</span><span class=\"p\">:</span> <span class=\"kt\">String</span><span class=\"p\">?</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT12ClaimsOpenIDC3amrSaySSGSgvp\"></a>\n                    <a name=\"//apple_ref/swift/Property/amr\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT12ClaimsOpenIDC3amrSaySSGSgvp\">amr</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Authentication Methods References. JSON array of strings that are identifiers for authentication methods used in the authentication. For instance, values might indicate that both password and OTP authentication methods were used. Parties using this claim will need to agree upon the meanings of the values used, which may be context-specific.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"k\">var</span> <span class=\"nv\">amr</span><span class=\"p\">:</span> <span class=\"p\">[</span><span class=\"kt\">String</span><span class=\"p\">]?</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT12ClaimsOpenIDC3azpSSSgvp\"></a>\n                    <a name=\"//apple_ref/swift/Property/azp\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT12ClaimsOpenIDC3azpSSSgvp\">azp</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Authorized party - the party to which the ID Token was issued. If present, it MUST contain the OAuth 2.0 Client ID of this party. This Claim is only needed when the ID Token has a single audience value and that audience is different than the authorized party. It MAY be included even when the authorized party is the same as the sole audience.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"k\">var</span> <span class=\"nv\">azp</span><span class=\"p\">:</span> <span class=\"kt\">String</span><span class=\"p\">?</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n              </ul>\n            </div>\n            <div class=\"task-group\">\n              <div class=\"task-name-container\">\n                <a name=\"/Standard%20Claims\"></a>\n                <a name=\"//apple_ref/swift/Section/Standard Claims\" class=\"dashAnchor\"></a>\n                <div class=\"section-name-container\">\n                  <a class=\"section-name-link\" href=\"#/Standard%20Claims\"></a>\n                  <h3 class=\"section-name\"><p>Standard Claims</p>\n</h3>\n                </div>\n              </div>\n              <ul class=\"item-container\">\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT12ClaimsOpenIDC4nameSSSgvp\"></a>\n                    <a name=\"//apple_ref/swift/Property/name\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT12ClaimsOpenIDC4nameSSSgvp\">name</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>End-User&rsquo;s full name in displayable form including all name parts, possibly including titles and suffixes, ordered according to the End-User&rsquo;s locale and preferences.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"k\">var</span> <span class=\"nv\">name</span><span class=\"p\">:</span> <span class=\"kt\">String</span><span class=\"p\">?</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT12ClaimsOpenIDC10given_nameSSSgvp\"></a>\n                    <a name=\"//apple_ref/swift/Property/given_name\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT12ClaimsOpenIDC10given_nameSSSgvp\">given_name</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Given name(s) or first name(s) of the End-User. Note that in some cultures, people can have multiple given names; all can be present, with the names being separated by space characters.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"k\">var</span> <span class=\"nv\">given_name</span><span class=\"p\">:</span> <span class=\"kt\">String</span><span class=\"p\">?</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT12ClaimsOpenIDC11family_nameSSSgvp\"></a>\n                    <a name=\"//apple_ref/swift/Property/family_name\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT12ClaimsOpenIDC11family_nameSSSgvp\">family_name</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Surname(s) or last name(s) of the End-User. Note that in some cultures, people can have multiple family names or no family name; all can be present, with the names being separated by space characters.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"k\">var</span> <span class=\"nv\">family_name</span><span class=\"p\">:</span> <span class=\"kt\">String</span><span class=\"p\">?</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT12ClaimsOpenIDC11middle_nameSSSgvp\"></a>\n                    <a name=\"//apple_ref/swift/Property/middle_name\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT12ClaimsOpenIDC11middle_nameSSSgvp\">middle_name</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Middle name(s) of the End-User. Note that in some cultures, people can have multiple middle names; all can be present, with the names being separated by space characters. Also note that in some cultures, middle names are not used.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"k\">var</span> <span class=\"nv\">middle_name</span><span class=\"p\">:</span> <span class=\"kt\">String</span><span class=\"p\">?</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT12ClaimsOpenIDC8nicknameSSSgvp\"></a>\n                    <a name=\"//apple_ref/swift/Property/nickname\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT12ClaimsOpenIDC8nicknameSSSgvp\">nickname</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Casual name of the End-User that may or may not be the same as the given_name. For instance, a nickname value of Mike might be returned alongside a given_name value of Michael.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"k\">var</span> <span class=\"nv\">nickname</span><span class=\"p\">:</span> <span class=\"kt\">String</span><span class=\"p\">?</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT12ClaimsOpenIDC18preferred_usernameSSSgvp\"></a>\n                    <a name=\"//apple_ref/swift/Property/preferred_username\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT12ClaimsOpenIDC18preferred_usernameSSSgvp\">preferred_username</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Shorthand name by which the End-User wishes to be referred to at the RP, such as janedoe or j.doe. This value MAY be any valid JSON string including special characters such as @, /, or whitespace.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"k\">var</span> <span class=\"nv\">preferred_username</span><span class=\"p\">:</span> <span class=\"kt\">String</span><span class=\"p\">?</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT12ClaimsOpenIDC7profileSSSgvp\"></a>\n                    <a name=\"//apple_ref/swift/Property/profile\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT12ClaimsOpenIDC7profileSSSgvp\">profile</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>URL of the End-User&rsquo;s profile page. The contents of this Web page SHOULD be about the End-User.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"k\">var</span> <span class=\"nv\">profile</span><span class=\"p\">:</span> <span class=\"kt\">String</span><span class=\"p\">?</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT12ClaimsOpenIDC7pictureSSSgvp\"></a>\n                    <a name=\"//apple_ref/swift/Property/picture\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT12ClaimsOpenIDC7pictureSSSgvp\">picture</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>URL of the End-User&rsquo;s profile picture. This URL MUST refer to an image file (for example, a PNG, JPEG, or GIF image file), rather than to a Web page containing an image. Note that this URL SHOULD specifically reference a profile photo of the End-User suitable for displaying when describing the End-User, rather than an arbitrary photo taken by the End-User.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"k\">var</span> <span class=\"nv\">picture</span><span class=\"p\">:</span> <span class=\"kt\">String</span><span class=\"p\">?</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT12ClaimsOpenIDC7websiteSSSgvp\"></a>\n                    <a name=\"//apple_ref/swift/Property/website\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT12ClaimsOpenIDC7websiteSSSgvp\">website</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>URL of the End-User&rsquo;s Web page or blog. This Web page SHOULD contain information published by the End-User or an organization that the End-User is affiliated with.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"k\">var</span> <span class=\"nv\">website</span><span class=\"p\">:</span> <span class=\"kt\">String</span><span class=\"p\">?</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT12ClaimsOpenIDC5emailSSSgvp\"></a>\n                    <a name=\"//apple_ref/swift/Property/email\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT12ClaimsOpenIDC5emailSSSgvp\">email</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>End-User&rsquo;s preferred e-mail address.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"k\">var</span> <span class=\"nv\">email</span><span class=\"p\">:</span> <span class=\"kt\">String</span><span class=\"p\">?</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT12ClaimsOpenIDC14email_verifiedSbSgvp\"></a>\n                    <a name=\"//apple_ref/swift/Property/email_verified\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT12ClaimsOpenIDC14email_verifiedSbSgvp\">email_verified</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>True if the End-User&rsquo;s e-mail address has been verified; otherwise false. When this Claim Value is true, this means that the OP took affirmative steps to ensure that this e-mail address was controlled by the End-User at the time the verification was performed. The means by which an e-mail address is verified is context-specific, and dependent upon the trust framework or contractual agreements within which the parties are operating.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"k\">var</span> <span class=\"nv\">email_verified</span><span class=\"p\">:</span> <span class=\"kt\">Bool</span><span class=\"p\">?</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT12ClaimsOpenIDC6genderSSSgvp\"></a>\n                    <a name=\"//apple_ref/swift/Property/gender\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT12ClaimsOpenIDC6genderSSSgvp\">gender</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>End-User&rsquo;s gender. Values defined by this specification are female and male. Other values MAY be used when neither of the defined values are applicable.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"k\">var</span> <span class=\"nv\">gender</span><span class=\"p\">:</span> <span class=\"kt\">String</span><span class=\"p\">?</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT12ClaimsOpenIDC9birthdateSSSgvp\"></a>\n                    <a name=\"//apple_ref/swift/Property/birthdate\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT12ClaimsOpenIDC9birthdateSSSgvp\">birthdate</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>End-User&rsquo;s birthday, represented as an ISO 8601:2004 YYYY-MM-DD format. The year MAY be 0000, indicating that it is omitted. To represent only the year, YYYY format is allowed.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"k\">var</span> <span class=\"nv\">birthdate</span><span class=\"p\">:</span> <span class=\"kt\">String</span><span class=\"p\">?</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT12ClaimsOpenIDC8zoneinfoSSSgvp\"></a>\n                    <a name=\"//apple_ref/swift/Property/zoneinfo\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT12ClaimsOpenIDC8zoneinfoSSSgvp\">zoneinfo</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>String from zoneinfo time zone database representing the End-User&rsquo;s time zone. For example, Europe/Paris or America/Los_Angeles.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"k\">var</span> <span class=\"nv\">zoneinfo</span><span class=\"p\">:</span> <span class=\"kt\">String</span><span class=\"p\">?</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT12ClaimsOpenIDC6localeSSSgvp\"></a>\n                    <a name=\"//apple_ref/swift/Property/locale\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT12ClaimsOpenIDC6localeSSSgvp\">locale</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>End-User&rsquo;s locale, represented as a BCP47 language tag. This is typically an ISO 639-1 Alpha-2 language code in lowercase and an ISO 3166-1 Alpha-2 country code in uppercase, separated by a dash. For example, en-US or fr-CA. As a compatibility note, some implementations have used an underscore as the separator rather than a dash, for example, en_US; Relying Parties MAY choose to accept this locale syntax as well.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"k\">var</span> <span class=\"nv\">locale</span><span class=\"p\">:</span> <span class=\"kt\">String</span><span class=\"p\">?</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT12ClaimsOpenIDC12phone_numberSSSgvp\"></a>\n                    <a name=\"//apple_ref/swift/Property/phone_number\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT12ClaimsOpenIDC12phone_numberSSSgvp\">phone_number</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>End-User&rsquo;s preferred telephone number. E.164 is RECOMMENDED as the format of this Claim, for example, +1 (425) 555-1212 or +56 (2) 687 2400.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"k\">var</span> <span class=\"nv\">phone_number</span><span class=\"p\">:</span> <span class=\"kt\">String</span><span class=\"p\">?</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT12ClaimsOpenIDC21phone_number_verifiedSbSgvp\"></a>\n                    <a name=\"//apple_ref/swift/Property/phone_number_verified\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT12ClaimsOpenIDC21phone_number_verifiedSbSgvp\">phone_number_verified</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>True if the End-User&rsquo;s phone number has been verified; otherwise false. When this Claim Value is true, this means that the OP took affirmative steps to ensure that this phone number was controlled by the End-User at the time the verification was performed. The means by which a phone number is verified is context-specific, and dependent upon the trust framework or contractual agreements within which the parties are operating. When true, the phone_number Claim MUST be in E.164 format and any extensions MUST be represented in RFC 3966 format.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"k\">var</span> <span class=\"nv\">phone_number_verified</span><span class=\"p\">:</span> <span class=\"kt\">Bool</span><span class=\"p\">?</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT12ClaimsOpenIDC7addressAA12AddressClaimVSgvp\"></a>\n                    <a name=\"//apple_ref/swift/Property/address\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT12ClaimsOpenIDC7addressAA12AddressClaimVSgvp\">address</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>End-User&rsquo;s preferred postal address.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"k\">var</span> <span class=\"nv\">address</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Structs/AddressClaim.html\">AddressClaim</a></span><span class=\"p\">?</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT12ClaimsOpenIDC10updated_at10Foundation4DateVSgvp\"></a>\n                    <a name=\"//apple_ref/swift/Property/updated_at\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT12ClaimsOpenIDC10updated_at10Foundation4DateVSgvp\">updated_at</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Time the End-User&rsquo;s information was last updated.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"k\">var</span> <span class=\"nv\">updated_at</span><span class=\"p\">:</span> <span class=\"kt\">Date</span><span class=\"p\">?</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n              </ul>\n            </div>\n          </div>\n        </section>\n\n      </article>\n    </div>\n    <section class=\"footer\">\n      <p>&copy; 2020 <a class=\"link\" href=\"https://github.com/Kitura/Swift-JWT\" target=\"_blank\" rel=\"external\">IBM &amp; Kitura Project Contributors</a>. All rights reserved. (Last updated: 2020-11-25)</p>\n      <p>Generated by <a class=\"link\" href=\"https://github.com/realm/jazzy\" target=\"_blank\" rel=\"external\">jazzy ♪♫ v0.13.6</a>, a <a class=\"link\" href=\"https://realm.io\" target=\"_blank\" rel=\"external\">Realm</a> project.</p>\n    </section>\n  </body>\n</div>\n</html>\n"
  },
  {
    "path": "docs/docsets/SwiftJWT.docset/Contents/Resources/Documents/Classes/ClaimsStandardJWT.html",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n  <head>\n    <title>ClaimsStandardJWT Class Reference</title>\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"../css/jazzy.css\" />\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"../css/highlight.css\" />\n    <meta charset=\"utf-8\">\n    <script src=\"../js/jquery.min.js\" defer></script>\n    <script src=\"../js/jazzy.js\" defer></script>\n    \n    <script src=\"../js/lunr.min.js\" defer></script>\n    <script src=\"../js/typeahead.jquery.js\" defer></script>\n    <script src=\"../js/jazzy.search.js\" defer></script>\n  </head>\n  <body>\n\n    <a name=\"//apple_ref/swift/Class/ClaimsStandardJWT\" class=\"dashAnchor\"></a>\n\n    <a title=\"ClaimsStandardJWT Class Reference\"></a>\n\n    <header class=\"header\">\n      <p class=\"header-col header-col--primary\">\n        <a class=\"header-link\" href=\"../index.html\">\n          SwiftJWT 3.6.200 Docs\n        </a>\n         (100% documented)\n      </p>\n    \n      <p class=\"header-col--secondary\">\n        <form role=\"search\" action=\"../search.json\">\n          <input type=\"text\" placeholder=\"Search documentation\" data-typeahead>\n        </form>\n      </p>\n    \n        <p class=\"header-col header-col--secondary\">\n          <a class=\"header-link\" href=\"https://github.com/Kitura/Swift-JWT/\">\n            <img class=\"header-icon\" src=\"../img/gh.png\"/>\n            View on GitHub\n          </a>\n        </p>\n    \n    </header>\n\n    <p class=\"breadcrumbs\">\n      <a class=\"breadcrumb\" href=\"../index.html\">SwiftJWT Reference</a>\n      <img class=\"carat\" src=\"../img/carat.png\" />\n      ClaimsStandardJWT Class Reference\n    </p>\n\n    <div class=\"content-wrapper\">\n      <nav class=\"navigation\">\n        <ul class=\"nav-groups\">\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Classes.html\">Classes</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ClaimsMicroProfile.html\">ClaimsMicroProfile</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ClaimsOpenID.html\">ClaimsOpenID</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ClaimsStandardJWT.html\">ClaimsStandardJWT</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/JWTDecoder.html\">JWTDecoder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/JWTEncoder.html\">JWTEncoder</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Protocols.html\">Protocols</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/Claims.html\">Claims</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Structs.html\">Structures</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/AddressClaim.html\">AddressClaim</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Header.html\">Header</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/JWT.html\">JWT</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/JWTError.html\">JWTError</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/JWTSigner.html\">JWTSigner</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/JWTVerifier.html\">JWTVerifier</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/ValidateClaimsResult.html\">ValidateClaimsResult</a>\n              </li>\n            </ul>\n          </li>\n        </ul>\n      </nav>\n      <article class=\"main-content\">\n\n        <section class=\"section\">\n          <div class=\"section-content top-matter\">\n            <h1>ClaimsStandardJWT</h1>\n              <div class=\"declaration\">\n                <div class=\"language\">\n                  \n                  <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">class</span> <span class=\"kt\">ClaimsStandardJWT</span> <span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Protocols/Claims.html\">Claims</a></span></code></pre>\n\n                </div>\n              </div>\n            <p>A class representing the Standard JWT claims as described in <a href=\"https://tools.ietf.org/html/rfc7519#section-4.1\">RFC7519</a>.</p>\n\n          </div>\n        </section>\n\n        <section class=\"section\">\n          <div class=\"section-content\">\n            <div class=\"task-group\">\n              <ul class=\"item-container\">\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT014ClaimsStandardB0C3iss3sub3aud3exp3nbf3iat3jtiACSSSg_AKSaySSGSg10Foundation4DateVSgA2qKtcfc\"></a>\n                    <a name=\"//apple_ref/swift/Method/init(iss:sub:aud:exp:nbf:iat:jti:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT014ClaimsStandardB0C3iss3sub3aud3exp3nbf3iat3jtiACSSSg_AKSaySSGSg10Foundation4DateVSgA2qKtcfc\">init(iss:<wbr>sub:<wbr>aud:<wbr>exp:<wbr>nbf:<wbr>iat:<wbr>jti:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Initialize a <code>ClaimsStandardJWT</code></p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"nf\">init</span><span class=\"p\">(</span>\n    <span class=\"nv\">iss</span><span class=\"p\">:</span> <span class=\"kt\">String</span><span class=\"p\">?</span> <span class=\"o\">=</span> <span class=\"kc\">nil</span><span class=\"p\">,</span>\n    <span class=\"nv\">sub</span><span class=\"p\">:</span> <span class=\"kt\">String</span><span class=\"p\">?</span> <span class=\"o\">=</span> <span class=\"kc\">nil</span><span class=\"p\">,</span>\n    <span class=\"nv\">aud</span><span class=\"p\">:</span> <span class=\"p\">[</span><span class=\"kt\">String</span><span class=\"p\">]?</span> <span class=\"o\">=</span> <span class=\"kc\">nil</span><span class=\"p\">,</span>\n    <span class=\"nv\">exp</span><span class=\"p\">:</span> <span class=\"kt\">Date</span><span class=\"p\">?</span> <span class=\"o\">=</span> <span class=\"kc\">nil</span><span class=\"p\">,</span>\n    <span class=\"nv\">nbf</span><span class=\"p\">:</span> <span class=\"kt\">Date</span><span class=\"p\">?</span> <span class=\"o\">=</span> <span class=\"kc\">nil</span><span class=\"p\">,</span>\n    <span class=\"nv\">iat</span><span class=\"p\">:</span> <span class=\"kt\">Date</span><span class=\"p\">?</span> <span class=\"o\">=</span> <span class=\"kc\">nil</span><span class=\"p\">,</span>\n    <span class=\"nv\">jti</span><span class=\"p\">:</span> <span class=\"kt\">String</span><span class=\"p\">?</span> <span class=\"o\">=</span> <span class=\"kc\">nil</span>\n    <span class=\"p\">)</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT014ClaimsStandardB0C3issSSSgvp\"></a>\n                    <a name=\"//apple_ref/swift/Property/iss\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT014ClaimsStandardB0C3issSSSgvp\">iss</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>The &ldquo;iss&rdquo; (issuer) claim identifies the principal that issued the\nJWT.  The processing of this claim is generally application specific.\nThe &ldquo;iss&rdquo; value is a case-sensitive.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"k\">var</span> <span class=\"nv\">iss</span><span class=\"p\">:</span> <span class=\"kt\">String</span><span class=\"p\">?</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT014ClaimsStandardB0C3subSSSgvp\"></a>\n                    <a name=\"//apple_ref/swift/Property/sub\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT014ClaimsStandardB0C3subSSSgvp\">sub</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>The &ldquo;sub&rdquo; (subject) claim identifies the principal that is the\nsubject of the JWT.  The claims in a JWT are normally statements\nabout the subject.  The subject value MUST either be scoped to be\nlocally unique in the context of the issuer or be globally unique.\nThe processing of this claim is generally application specific.  The\n&ldquo;sub&rdquo; value is case-sensitive.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"k\">var</span> <span class=\"nv\">sub</span><span class=\"p\">:</span> <span class=\"kt\">String</span><span class=\"p\">?</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT014ClaimsStandardB0C3audSaySSGSgvp\"></a>\n                    <a name=\"//apple_ref/swift/Property/aud\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT014ClaimsStandardB0C3audSaySSGSgvp\">aud</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>The &ldquo;aud&rdquo; (audience) claim identifies the recipients that the JWT is\nintended for.  Each principal intended to process the JWT MUST\nidentify itself with a value in the audience claim.  If the principal\nprocessing the claim does not identify itself with a value in the\n&ldquo;aud&rdquo; claim when this claim is present, then the JWT MUST be\nrejected. The interpretation of audience values is generally application specific.\nThe &ldquo;aud&rdquo; value is case-sensitive.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"k\">var</span> <span class=\"nv\">aud</span><span class=\"p\">:</span> <span class=\"p\">[</span><span class=\"kt\">String</span><span class=\"p\">]?</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT014ClaimsStandardB0C3exp10Foundation4DateVSgvp\"></a>\n                    <a name=\"//apple_ref/swift/Property/exp\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT014ClaimsStandardB0C3exp10Foundation4DateVSgvp\">exp</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>The &ldquo;exp&rdquo; (expiration time) claim identifies the expiration time on\nor after which the JWT MUST NOT be accepted for processing.  The\nprocessing of the &ldquo;exp&rdquo; claim requires that the current date/time\nMUST be before the expiration date/time listed in the &ldquo;exp&rdquo; claim.\nImplementers MAY provide for some small leeway, usually no more than\na few minutes, to account for clock skew.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"k\">var</span> <span class=\"nv\">exp</span><span class=\"p\">:</span> <span class=\"kt\">Date</span><span class=\"p\">?</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT014ClaimsStandardB0C3nbf10Foundation4DateVSgvp\"></a>\n                    <a name=\"//apple_ref/swift/Property/nbf\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT014ClaimsStandardB0C3nbf10Foundation4DateVSgvp\">nbf</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>The &ldquo;nbf&rdquo; (not before) claim identifies the time before which the JWT\nMUST NOT be accepted for processing.  The processing of the &ldquo;nbf&rdquo;\nclaim requires that the current date/time MUST be after or equal to\nthe not-before date/time listed in the &ldquo;nbf&rdquo; claim.  Implementers MAY\nprovide for some small leeway, usually no more than a few minutes, to\naccount for clock skew.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"k\">var</span> <span class=\"nv\">nbf</span><span class=\"p\">:</span> <span class=\"kt\">Date</span><span class=\"p\">?</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT014ClaimsStandardB0C3iat10Foundation4DateVSgvp\"></a>\n                    <a name=\"//apple_ref/swift/Property/iat\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT014ClaimsStandardB0C3iat10Foundation4DateVSgvp\">iat</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>The &ldquo;iat&rdquo; (issued at) claim identifies the time at which the JWT was\nissued.  This claim can be used to determine the age of the JWT.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"k\">var</span> <span class=\"nv\">iat</span><span class=\"p\">:</span> <span class=\"kt\">Date</span><span class=\"p\">?</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT014ClaimsStandardB0C3jtiSSSgvp\"></a>\n                    <a name=\"//apple_ref/swift/Property/jti\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT014ClaimsStandardB0C3jtiSSSgvp\">jti</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>The &ldquo;jti&rdquo; (JWT ID) claim provides a unique identifier for the JWT.\nThe identifier value MUST be assigned in a manner that ensures that\nthere is a negligible probability that the same value will be\naccidentally assigned to a different data object; if the application\nuses multiple issuers, collisions MUST be prevented among values\nproduced by different issuers as well.  The &ldquo;jti&rdquo; claim can be used\nto prevent the JWT from being replayed.  The &ldquo;jti&rdquo; value is case-\nsensitive</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"k\">var</span> <span class=\"nv\">jti</span><span class=\"p\">:</span> <span class=\"kt\">String</span><span class=\"p\">?</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n              </ul>\n            </div>\n          </div>\n        </section>\n\n      </article>\n    </div>\n    <section class=\"footer\">\n      <p>&copy; 2020 <a class=\"link\" href=\"https://github.com/Kitura/Swift-JWT\" target=\"_blank\" rel=\"external\">IBM &amp; Kitura Project Contributors</a>. All rights reserved. (Last updated: 2020-11-25)</p>\n      <p>Generated by <a class=\"link\" href=\"https://github.com/realm/jazzy\" target=\"_blank\" rel=\"external\">jazzy ♪♫ v0.13.6</a>, a <a class=\"link\" href=\"https://realm.io\" target=\"_blank\" rel=\"external\">Realm</a> project.</p>\n    </section>\n  </body>\n</div>\n</html>\n"
  },
  {
    "path": "docs/docsets/SwiftJWT.docset/Contents/Resources/Documents/Classes/JWTDecoder.html",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n  <head>\n    <title>JWTDecoder Class Reference</title>\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"../css/jazzy.css\" />\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"../css/highlight.css\" />\n    <meta charset=\"utf-8\">\n    <script src=\"../js/jquery.min.js\" defer></script>\n    <script src=\"../js/jazzy.js\" defer></script>\n    \n    <script src=\"../js/lunr.min.js\" defer></script>\n    <script src=\"../js/typeahead.jquery.js\" defer></script>\n    <script src=\"../js/jazzy.search.js\" defer></script>\n  </head>\n  <body>\n\n    <a name=\"//apple_ref/swift/Class/JWTDecoder\" class=\"dashAnchor\"></a>\n\n    <a title=\"JWTDecoder Class Reference\"></a>\n\n    <header class=\"header\">\n      <p class=\"header-col header-col--primary\">\n        <a class=\"header-link\" href=\"../index.html\">\n          SwiftJWT 3.6.200 Docs\n        </a>\n         (100% documented)\n      </p>\n    \n      <p class=\"header-col--secondary\">\n        <form role=\"search\" action=\"../search.json\">\n          <input type=\"text\" placeholder=\"Search documentation\" data-typeahead>\n        </form>\n      </p>\n    \n        <p class=\"header-col header-col--secondary\">\n          <a class=\"header-link\" href=\"https://github.com/Kitura/Swift-JWT/\">\n            <img class=\"header-icon\" src=\"../img/gh.png\"/>\n            View on GitHub\n          </a>\n        </p>\n    \n    </header>\n\n    <p class=\"breadcrumbs\">\n      <a class=\"breadcrumb\" href=\"../index.html\">SwiftJWT Reference</a>\n      <img class=\"carat\" src=\"../img/carat.png\" />\n      JWTDecoder Class Reference\n    </p>\n\n    <div class=\"content-wrapper\">\n      <nav class=\"navigation\">\n        <ul class=\"nav-groups\">\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Classes.html\">Classes</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ClaimsMicroProfile.html\">ClaimsMicroProfile</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ClaimsOpenID.html\">ClaimsOpenID</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ClaimsStandardJWT.html\">ClaimsStandardJWT</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/JWTDecoder.html\">JWTDecoder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/JWTEncoder.html\">JWTEncoder</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Protocols.html\">Protocols</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/Claims.html\">Claims</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Structs.html\">Structures</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/AddressClaim.html\">AddressClaim</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Header.html\">Header</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/JWT.html\">JWT</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/JWTError.html\">JWTError</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/JWTSigner.html\">JWTSigner</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/JWTVerifier.html\">JWTVerifier</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/ValidateClaimsResult.html\">ValidateClaimsResult</a>\n              </li>\n            </ul>\n          </li>\n        </ul>\n      </nav>\n      <article class=\"main-content\">\n\n        <section class=\"section\">\n          <div class=\"section-content top-matter\">\n            <h1>JWTDecoder</h1>\n              <div class=\"declaration\">\n                <div class=\"language\">\n                  \n                  <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">class</span> <span class=\"kt\">JWTDecoder</span> <span class=\"p\">:</span> <span class=\"kt\">BodyDecoder</span></code></pre>\n\n                </div>\n              </div>\n            <p>A thread safe decoder that decodes either Data or a JWT String as a <code><a href=\"../Structs/JWT.html\">JWT</a></code> instance and verifies the signiture using the provided algorithm.</p>\n<h3 id='usage-example' class='heading'>Usage Example:</h3>\n<pre class=\"highlight swift\"><code><span class=\"kd\">struct</span> <span class=\"kt\">MyClaims</span><span class=\"p\">:</span> <span class=\"kt\">Claims</span> <span class=\"p\">{</span>\n   <span class=\"k\">var</span> <span class=\"nv\">name</span><span class=\"p\">:</span> <span class=\"kt\">String</span>\n<span class=\"p\">}</span>\n<span class=\"k\">let</span> <span class=\"nv\">publicKey</span> <span class=\"o\">=</span> <span class=\"s\">\"&lt;PublicKey&gt;\"</span><span class=\"o\">.</span><span class=\"nf\">data</span><span class=\"p\">(</span><span class=\"nv\">using</span><span class=\"p\">:</span> <span class=\"o\">.</span><span class=\"n\">utf8</span><span class=\"p\">)</span><span class=\"o\">!</span>\n<span class=\"k\">let</span> <span class=\"nv\">rsaJWTDecoder</span> <span class=\"o\">=</span> <span class=\"kt\">JWTDecoder</span><span class=\"p\">(</span><span class=\"nv\">jwtVerifier</span><span class=\"p\">:</span> <span class=\"kt\">JWTVerifier</span><span class=\"o\">.</span><span class=\"nf\">rs256</span><span class=\"p\">(</span><span class=\"nv\">publicKey</span><span class=\"p\">:</span> <span class=\"n\">publicKey</span><span class=\"p\">))</span>\n<span class=\"k\">do</span> <span class=\"p\">{</span>\n   <span class=\"k\">let</span> <span class=\"nv\">jwt</span> <span class=\"o\">=</span> <span class=\"k\">try</span> <span class=\"n\">rsaJWTDecoder</span><span class=\"o\">.</span><span class=\"nf\">decode</span><span class=\"p\">(</span><span class=\"kt\">JWT</span><span class=\"o\">&lt;</span><span class=\"kt\">MyClaims</span><span class=\"o\">&gt;.</span><span class=\"k\">self</span><span class=\"p\">,</span> <span class=\"nv\">fromString</span><span class=\"p\">:</span> <span class=\"n\">exampleJWTString</span><span class=\"p\">)</span>\n<span class=\"p\">}</span> <span class=\"k\">catch</span> <span class=\"p\">{</span>\n   <span class=\"nf\">print</span><span class=\"p\">(</span><span class=\"s\">\"Failed to decode JWT: </span><span class=\"se\">\\(</span><span class=\"n\">error</span><span class=\"se\">)</span><span class=\"s\">\"</span><span class=\"p\">)</span>\n<span class=\"p\">}</span>\n</code></pre>\n\n          </div>\n        </section>\n\n        <section class=\"section\">\n          <div class=\"section-content\">\n            <div class=\"task-group\">\n              <div class=\"task-name-container\">\n                <a name=\"/Initializers\"></a>\n                <a name=\"//apple_ref/swift/Section/Initializers\" class=\"dashAnchor\"></a>\n                <div class=\"section-name-container\">\n                  <a class=\"section-name-link\" href=\"#/Initializers\"></a>\n                  <h3 class=\"section-name\"><p>Initializers</p>\n</h3>\n                </div>\n              </div>\n              <ul class=\"item-container\">\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT10JWTDecoderC11jwtVerifierAcA11JWTVerifierV_tcfc\"></a>\n                    <a name=\"//apple_ref/swift/Method/init(jwtVerifier:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT10JWTDecoderC11jwtVerifierAcA11JWTVerifierV_tcfc\">init(jwtVerifier:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Initialize a <code>JWTDecoder</code> instance with a single <code><a href=\"../Structs/JWTVerifier.html\">JWTVerifier</a></code>.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"nf\">init</span><span class=\"p\">(</span><span class=\"nv\">jwtVerifier</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Structs/JWTVerifier.html\">JWTVerifier</a></span><span class=\"p\">)</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>JWTVerifier</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>The <code><a href=\"../Structs/JWTVerifier.html\">JWTVerifier</a></code> that will be used to verify the signiture of the JWT.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>A new instance of <code>JWTDecoder</code>.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT10JWTDecoderC15keyIDToVerifierAcA11JWTVerifierVSgSSc_tcfc\"></a>\n                    <a name=\"//apple_ref/swift/Method/init(keyIDToVerifier:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT10JWTDecoderC15keyIDToVerifierAcA11JWTVerifierVSgSSc_tcfc\">init(keyIDToVerifier:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Initialize a <code>JWTDecoder</code> instance with a function to generate the <code><a href=\"../Structs/JWTVerifier.html\">JWTVerifier</a></code> from the JWT <code>kid</code> header.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"nf\">init</span><span class=\"p\">(</span><span class=\"nv\">keyIDToVerifier</span><span class=\"p\">:</span> <span class=\"kd\">@escaping</span> <span class=\"p\">(</span><span class=\"kt\">String</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Structs/JWTVerifier.html\">JWTVerifier</a></span><span class=\"p\">?)</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>keyIDToVerifier</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>The function that will generate the <code><a href=\"../Structs/JWTVerifier.html\">JWTVerifier</a></code> using the &ldquo;kid&rdquo; header.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>A new instance of <code>JWTDecoder</code>.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n              </ul>\n            </div>\n            <div class=\"task-group\">\n              <div class=\"task-name-container\">\n                <a name=\"/Decode\"></a>\n                <a name=\"//apple_ref/swift/Section/Decode\" class=\"dashAnchor\"></a>\n                <div class=\"section-name-container\">\n                  <a class=\"section-name-link\" href=\"#/Decode\"></a>\n                  <h3 class=\"section-name\"><p>Decode</p>\n</h3>\n                </div>\n              </div>\n              <ul class=\"item-container\">\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT10JWTDecoderC6decode_10fromStringxxm_SStKSeRzlF\"></a>\n                    <a name=\"//apple_ref/swift/Method/decode(_:fromString:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT10JWTDecoderC6decode_10fromStringxxm_SStKSeRzlF\">decode(_:<wbr>fromString:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Decode a <code><a href=\"../Structs/JWT.html\">JWT</a></code> instance from a JWT String.</p>\n<div class=\"aside aside-throws\">\n    <p class=\"aside-title\">Throws</p>\n    <code><a href=\"../Structs/JWTError.html#/s:8SwiftJWT8JWTErrorV16invalidJWTStringACvpZ\">JWTError.invalidJWTString</a></code> if the provided String is not in the form mandated by the JWT specification.\n\n</div><div class=\"aside aside-throws\">\n    <p class=\"aside-title\">Throws</p>\n    <code><a href=\"../Structs/JWTError.html#/s:8SwiftJWT8JWTErrorV12invalidKeyIDACvpZ\">JWTError.invalidKeyID</a></code> if the KeyID <code>kid</code> header fails to generate a jwtVerifier.\n\n</div><div class=\"aside aside-throws\">\n    <p class=\"aside-title\">Throws</p>\n    <code><a href=\"../Structs/JWTError.html#/s:8SwiftJWT8JWTErrorV18failedVerificationACvpZ\">JWTError.failedVerification</a></code> if the <code><a href=\"../Structs/JWTVerifier.html\">JWTVerifier</a></code> fails to verify the decoded String.\n\n</div><div class=\"aside aside-throws\">\n    <p class=\"aside-title\">Throws</p>\n    <code>DecodingError</code> if the decoder fails to decode the String as the provided type.\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">func</span> <span class=\"n\">decode</span><span class=\"o\">&lt;</span><span class=\"kt\">T</span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">type</span><span class=\"p\">:</span> <span class=\"kt\">T</span><span class=\"o\">.</span><span class=\"k\">Type</span><span class=\"p\">,</span> <span class=\"nv\">fromString</span><span class=\"p\">:</span> <span class=\"kt\">String</span><span class=\"p\">)</span> <span class=\"k\">throws</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">T</span> <span class=\"k\">where</span> <span class=\"kt\">T</span> <span class=\"p\">:</span> <span class=\"kt\">Decodable</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>type</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>The JWT type the String will be decoded as.</p>\n                                </div>\n                              </td>\n                            </tr>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>fromString</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>The JWT String that will be decoded.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>A <code><a href=\"../Structs/JWT.html\">JWT</a></code> instance of the provided type.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT10JWTDecoderC6decode_4fromxxm_10Foundation4DataVtKSeRzlF\"></a>\n                    <a name=\"//apple_ref/swift/Method/decode(_:from:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT10JWTDecoderC6decode_4fromxxm_10Foundation4DataVtKSeRzlF\">decode(_:<wbr>from:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Decode a <code><a href=\"../Structs/JWT.html\">JWT</a></code> instance from a utf8 encoded JWT String.</p>\n<div class=\"aside aside-throws\">\n    <p class=\"aside-title\">Throws</p>\n    <code><a href=\"../Structs/JWTError.html#/s:8SwiftJWT8JWTErrorV15invalidUTF8DataACvpZ\">JWTError.invalidUTF8Data</a></code> if the provided Data can&rsquo;t be decoded to a String.\n\n</div><div class=\"aside aside-throws\">\n    <p class=\"aside-title\">Throws</p>\n    <code><a href=\"../Structs/JWTError.html#/s:8SwiftJWT8JWTErrorV16invalidJWTStringACvpZ\">JWTError.invalidJWTString</a></code> if the provided String is not in the form mandated by the JWT specification.\n\n</div><div class=\"aside aside-throws\">\n    <p class=\"aside-title\">Throws</p>\n    <code><a href=\"../Structs/JWTError.html#/s:8SwiftJWT8JWTErrorV12invalidKeyIDACvpZ\">JWTError.invalidKeyID</a></code> if the KeyID <code>kid</code> header fails to generate a <code><a href=\"../Structs/JWTVerifier.html\">JWTVerifier</a></code>.\n\n</div><div class=\"aside aside-throws\">\n    <p class=\"aside-title\">Throws</p>\n    <code><a href=\"../Structs/JWTError.html#/s:8SwiftJWT8JWTErrorV18failedVerificationACvpZ\">JWTError.failedVerification</a></code> if the <code><a href=\"../Structs/JWTVerifier.html\">JWTVerifier</a></code> fails to verify the decoded String.\n\n</div><div class=\"aside aside-throws\">\n    <p class=\"aside-title\">Throws</p>\n    <code>DecodingError</code> if the decoder fails to decode the String as the provided type.\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">func</span> <span class=\"n\">decode</span><span class=\"o\">&lt;</span><span class=\"kt\">T</span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">type</span><span class=\"p\">:</span> <span class=\"kt\">T</span><span class=\"o\">.</span><span class=\"k\">Type</span><span class=\"p\">,</span> <span class=\"n\">from</span> <span class=\"nv\">data</span><span class=\"p\">:</span> <span class=\"kt\">Data</span><span class=\"p\">)</span> <span class=\"k\">throws</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">T</span> <span class=\"k\">where</span> <span class=\"kt\">T</span> <span class=\"p\">:</span> <span class=\"kt\">Decodable</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>type</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>The JWT type the Data will be decoded as.</p>\n                                </div>\n                              </td>\n                            </tr>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>data</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>The utf8 encoded JWT String that will be decoded.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>A <code><a href=\"../Structs/JWT.html\">JWT</a></code> instance of the provided type.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT10JWTDecoderC4data16base64urlEncoded10Foundation4DataVSgSS_tFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/data(base64urlEncoded:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT10JWTDecoderC4data16base64urlEncoded10Foundation4DataVSgSS_tFZ\">data(base64urlEncoded:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Initializes a new <code>Data</code> from the base64url-encoded <code>String</code> provided. The\nbase64url encoding is defined in RFC4648 (<a href=\"https://tools.ietf.org/html/rfc4648\">https://tools.ietf.org/html/rfc4648</a>).</p>\n\n<p>This is appropriate for reading the header or claims portion of a JWT string.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"nf\">data</span><span class=\"p\">(</span><span class=\"nv\">base64urlEncoded</span><span class=\"p\">:</span> <span class=\"kt\">String</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">Data</span><span class=\"p\">?</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n              </ul>\n            </div>\n          </div>\n        </section>\n\n      </article>\n    </div>\n    <section class=\"footer\">\n      <p>&copy; 2020 <a class=\"link\" href=\"https://github.com/Kitura/Swift-JWT\" target=\"_blank\" rel=\"external\">IBM &amp; Kitura Project Contributors</a>. All rights reserved. (Last updated: 2020-11-25)</p>\n      <p>Generated by <a class=\"link\" href=\"https://github.com/realm/jazzy\" target=\"_blank\" rel=\"external\">jazzy ♪♫ v0.13.6</a>, a <a class=\"link\" href=\"https://realm.io\" target=\"_blank\" rel=\"external\">Realm</a> project.</p>\n    </section>\n  </body>\n</div>\n</html>\n"
  },
  {
    "path": "docs/docsets/SwiftJWT.docset/Contents/Resources/Documents/Classes/JWTEncoder.html",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n  <head>\n    <title>JWTEncoder Class Reference</title>\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"../css/jazzy.css\" />\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"../css/highlight.css\" />\n    <meta charset=\"utf-8\">\n    <script src=\"../js/jquery.min.js\" defer></script>\n    <script src=\"../js/jazzy.js\" defer></script>\n    \n    <script src=\"../js/lunr.min.js\" defer></script>\n    <script src=\"../js/typeahead.jquery.js\" defer></script>\n    <script src=\"../js/jazzy.search.js\" defer></script>\n  </head>\n  <body>\n\n    <a name=\"//apple_ref/swift/Class/JWTEncoder\" class=\"dashAnchor\"></a>\n\n    <a title=\"JWTEncoder Class Reference\"></a>\n\n    <header class=\"header\">\n      <p class=\"header-col header-col--primary\">\n        <a class=\"header-link\" href=\"../index.html\">\n          SwiftJWT 3.6.200 Docs\n        </a>\n         (100% documented)\n      </p>\n    \n      <p class=\"header-col--secondary\">\n        <form role=\"search\" action=\"../search.json\">\n          <input type=\"text\" placeholder=\"Search documentation\" data-typeahead>\n        </form>\n      </p>\n    \n        <p class=\"header-col header-col--secondary\">\n          <a class=\"header-link\" href=\"https://github.com/Kitura/Swift-JWT/\">\n            <img class=\"header-icon\" src=\"../img/gh.png\"/>\n            View on GitHub\n          </a>\n        </p>\n    \n    </header>\n\n    <p class=\"breadcrumbs\">\n      <a class=\"breadcrumb\" href=\"../index.html\">SwiftJWT Reference</a>\n      <img class=\"carat\" src=\"../img/carat.png\" />\n      JWTEncoder Class Reference\n    </p>\n\n    <div class=\"content-wrapper\">\n      <nav class=\"navigation\">\n        <ul class=\"nav-groups\">\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Classes.html\">Classes</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ClaimsMicroProfile.html\">ClaimsMicroProfile</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ClaimsOpenID.html\">ClaimsOpenID</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ClaimsStandardJWT.html\">ClaimsStandardJWT</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/JWTDecoder.html\">JWTDecoder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/JWTEncoder.html\">JWTEncoder</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Protocols.html\">Protocols</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/Claims.html\">Claims</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Structs.html\">Structures</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/AddressClaim.html\">AddressClaim</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Header.html\">Header</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/JWT.html\">JWT</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/JWTError.html\">JWTError</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/JWTSigner.html\">JWTSigner</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/JWTVerifier.html\">JWTVerifier</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/ValidateClaimsResult.html\">ValidateClaimsResult</a>\n              </li>\n            </ul>\n          </li>\n        </ul>\n      </nav>\n      <article class=\"main-content\">\n\n        <section class=\"section\">\n          <div class=\"section-content top-matter\">\n            <h1>JWTEncoder</h1>\n              <div class=\"declaration\">\n                <div class=\"language\">\n                  \n                  <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">class</span> <span class=\"kt\">JWTEncoder</span> <span class=\"p\">:</span> <span class=\"kt\">BodyEncoder</span></code></pre>\n\n                </div>\n              </div>\n            <p>A thread safe encoder that signs the JWT header and claims using the provided algorithm and encodes a <code><a href=\"../Structs/JWT.html\">JWT</a></code> instance as either Data or a JWT String.</p>\n<h3 id='usage-example' class='heading'>Usage Example:</h3>\n<pre class=\"highlight swift\"><code><span class=\"kd\">struct</span> <span class=\"kt\">MyClaims</span><span class=\"p\">:</span> <span class=\"kt\">Claims</span> <span class=\"p\">{</span>\n   <span class=\"k\">var</span> <span class=\"nv\">name</span><span class=\"p\">:</span> <span class=\"kt\">String</span>\n<span class=\"p\">}</span>\n<span class=\"k\">var</span> <span class=\"nv\">jwt</span> <span class=\"o\">=</span> <span class=\"kt\">JWT</span><span class=\"p\">(</span><span class=\"nv\">claims</span><span class=\"p\">:</span> <span class=\"kt\">MyClaims</span><span class=\"p\">(</span><span class=\"nv\">name</span><span class=\"p\">:</span> <span class=\"s\">\"John Doe\"</span><span class=\"p\">))</span>\n<span class=\"k\">let</span> <span class=\"nv\">privateKey</span> <span class=\"o\">=</span> <span class=\"s\">\"&lt;PrivateKey&gt;\"</span><span class=\"o\">.</span><span class=\"nf\">data</span><span class=\"p\">(</span><span class=\"nv\">using</span><span class=\"p\">:</span> <span class=\"o\">.</span><span class=\"n\">utf8</span><span class=\"p\">)</span><span class=\"o\">!</span>\n<span class=\"k\">let</span> <span class=\"nv\">rsaJWTEncoder</span> <span class=\"o\">=</span> <span class=\"kt\">JWTEncoder</span><span class=\"p\">(</span><span class=\"nv\">jwtSigner</span><span class=\"p\">:</span> <span class=\"kt\">JWTSigner</span><span class=\"o\">.</span><span class=\"nf\">rs256</span><span class=\"p\">(</span><span class=\"nv\">privateKey</span><span class=\"p\">:</span> <span class=\"n\">privateKey</span><span class=\"p\">))</span>\n<span class=\"k\">do</span> <span class=\"p\">{</span>\n   <span class=\"k\">let</span> <span class=\"nv\">jwtString</span> <span class=\"o\">=</span> <span class=\"k\">try</span> <span class=\"n\">rsaJWTEncoder</span><span class=\"o\">.</span><span class=\"nf\">encodeToString</span><span class=\"p\">(</span><span class=\"n\">jwt</span><span class=\"p\">)</span>\n<span class=\"p\">}</span> <span class=\"k\">catch</span> <span class=\"p\">{</span>\n   <span class=\"nf\">print</span><span class=\"p\">(</span><span class=\"s\">\"Failed to encode JWT: </span><span class=\"se\">\\(</span><span class=\"n\">error</span><span class=\"se\">)</span><span class=\"s\">\"</span><span class=\"p\">)</span>\n<span class=\"p\">}</span>\n</code></pre>\n\n          </div>\n        </section>\n\n        <section class=\"section\">\n          <div class=\"section-content\">\n            <div class=\"task-group\">\n              <div class=\"task-name-container\">\n                <a name=\"/Initializers\"></a>\n                <a name=\"//apple_ref/swift/Section/Initializers\" class=\"dashAnchor\"></a>\n                <div class=\"section-name-container\">\n                  <a class=\"section-name-link\" href=\"#/Initializers\"></a>\n                  <h3 class=\"section-name\"><p>Initializers</p>\n</h3>\n                </div>\n              </div>\n              <ul class=\"item-container\">\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT10JWTEncoderC9jwtSignerAcA9JWTSignerV_tcfc\"></a>\n                    <a name=\"//apple_ref/swift/Method/init(jwtSigner:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT10JWTEncoderC9jwtSignerAcA9JWTSignerV_tcfc\">init(jwtSigner:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Initialize a <code>JWTEncoder</code> instance with a single <code><a href=\"../Structs/JWTSigner.html\">JWTSigner</a></code>.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"nf\">init</span><span class=\"p\">(</span><span class=\"nv\">jwtSigner</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Structs/JWTSigner.html\">JWTSigner</a></span><span class=\"p\">)</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>jwtSigner</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>The <code><a href=\"../Structs/JWTSigner.html\">JWTSigner</a></code> that will be used to sign the JWT.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>A new instance of <code>JWTEncoder</code>.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT10JWTEncoderC13keyIDToSignerAcA9JWTSignerVSgSSc_tcfc\"></a>\n                    <a name=\"//apple_ref/swift/Method/init(keyIDToSigner:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT10JWTEncoderC13keyIDToSignerAcA9JWTSignerVSgSSc_tcfc\">init(keyIDToSigner:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Initialize a <code>JWTEncoder</code> instance with a function to generate the <code><a href=\"../Structs/JWTSigner.html\">JWTSigner</a></code> from the JWT <code>kid</code> header.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"nf\">init</span><span class=\"p\">(</span><span class=\"nv\">keyIDToSigner</span><span class=\"p\">:</span> <span class=\"kd\">@escaping</span> <span class=\"p\">(</span><span class=\"kt\">String</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Structs/JWTSigner.html\">JWTSigner</a></span><span class=\"p\">?)</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>keyIDToSigner</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>The function to generate the <code><a href=\"../Structs/JWTSigner.html\">JWTSigner</a></code> from the JWT <code>kid</code> header.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>A new instance of <code>JWTEncoder</code>.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n              </ul>\n            </div>\n            <div class=\"task-group\">\n              <div class=\"task-name-container\">\n                <a name=\"/Encode\"></a>\n                <a name=\"//apple_ref/swift/Section/Encode\" class=\"dashAnchor\"></a>\n                <div class=\"section-name-container\">\n                  <a class=\"section-name-link\" href=\"#/Encode\"></a>\n                  <h3 class=\"section-name\"><p>Encode</p>\n</h3>\n                </div>\n              </div>\n              <ul class=\"item-container\">\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT10JWTEncoderC6encodey10Foundation4DataVxKSERzlF\"></a>\n                    <a name=\"//apple_ref/swift/Method/encode(_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT10JWTEncoderC6encodey10Foundation4DataVxKSERzlF\">encode(_:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Encode a <code><a href=\"../Structs/JWT.html\">JWT</a></code> instance into a UTF8 encoded JWT String.</p>\n<div class=\"aside aside-throws\">\n    <p class=\"aside-title\">Throws</p>\n    <code><a href=\"../Structs/JWTError.html#/s:8SwiftJWT8JWTErrorV15invalidUTF8DataACvpZ\">JWTError.invalidUTF8Data</a></code> if the provided Data can&rsquo;t be decoded to a String.\n\n</div><div class=\"aside aside-throws\">\n    <p class=\"aside-title\">Throws</p>\n    <code><a href=\"../Structs/JWTError.html#/s:8SwiftJWT8JWTErrorV12invalidKeyIDACvpZ\">JWTError.invalidKeyID</a></code> if the KeyID <code>kid</code> header fails to generate a jwtSigner.\n\n</div><div class=\"aside aside-throws\">\n    <p class=\"aside-title\">Throws</p>\n    <code>EncodingError</code> if the encoder fails to encode the object as Data.\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">func</span> <span class=\"n\">encode</span><span class=\"o\">&lt;</span><span class=\"kt\">T</span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">value</span><span class=\"p\">:</span> <span class=\"kt\">T</span><span class=\"p\">)</span> <span class=\"k\">throws</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">Data</span> <span class=\"k\">where</span> <span class=\"kt\">T</span> <span class=\"p\">:</span> <span class=\"kt\">Encodable</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>value</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>The JWT instance to be encoded as Data.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>The UTF8 encoded JWT String.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT10JWTEncoderC14encodeToStringySSxKSERzlF\"></a>\n                    <a name=\"//apple_ref/swift/Method/encodeToString(_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT10JWTEncoderC14encodeToStringySSxKSERzlF\">encodeToString(_:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Encode a <code><a href=\"../Structs/JWT.html\">JWT</a></code> instance as a JWT String.</p>\n<div class=\"aside aside-throws\">\n    <p class=\"aside-title\">Throws</p>\n    <code><a href=\"../Structs/JWTError.html#/s:8SwiftJWT8JWTErrorV12invalidKeyIDACvpZ\">JWTError.invalidKeyID</a></code> if the KeyID <code>kid</code> header fails to generate a jwtSigner.\n\n</div><div class=\"aside aside-throws\">\n    <p class=\"aside-title\">Throws</p>\n    <code>EncodingError</code> if the encoder fails to encode the object as Data.\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">func</span> <span class=\"n\">encodeToString</span><span class=\"o\">&lt;</span><span class=\"kt\">T</span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">value</span><span class=\"p\">:</span> <span class=\"kt\">T</span><span class=\"p\">)</span> <span class=\"k\">throws</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">String</span> <span class=\"k\">where</span> <span class=\"kt\">T</span> <span class=\"p\">:</span> <span class=\"kt\">Encodable</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>value</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>The JWT instance to be encoded as a JWT String.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>A JWT String.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT10JWTEncoderC22base64urlEncodedString4dataSS10Foundation4DataV_tFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/base64urlEncodedString(data:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT10JWTEncoderC22base64urlEncodedString4dataSS10Foundation4DataV_tFZ\">base64urlEncodedString(data:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Returns a <code>String</code> representation of this data, encoded in base64url format\nas defined in RFC4648 (<a href=\"https://tools.ietf.org/html/rfc4648\">https://tools.ietf.org/html/rfc4648</a>).</p>\n\n<p>This is the appropriate format for encoding the header and claims of a JWT.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"nf\">base64urlEncodedString</span><span class=\"p\">(</span><span class=\"nv\">data</span><span class=\"p\">:</span> <span class=\"kt\">Data</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">String</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n              </ul>\n            </div>\n          </div>\n        </section>\n\n      </article>\n    </div>\n    <section class=\"footer\">\n      <p>&copy; 2020 <a class=\"link\" href=\"https://github.com/Kitura/Swift-JWT\" target=\"_blank\" rel=\"external\">IBM &amp; Kitura Project Contributors</a>. All rights reserved. (Last updated: 2020-11-25)</p>\n      <p>Generated by <a class=\"link\" href=\"https://github.com/realm/jazzy\" target=\"_blank\" rel=\"external\">jazzy ♪♫ v0.13.6</a>, a <a class=\"link\" href=\"https://realm.io\" target=\"_blank\" rel=\"external\">Realm</a> project.</p>\n    </section>\n  </body>\n</div>\n</html>\n"
  },
  {
    "path": "docs/docsets/SwiftJWT.docset/Contents/Resources/Documents/Classes.html",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n  <head>\n    <title>Classes  Reference</title>\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"css/jazzy.css\" />\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"css/highlight.css\" />\n    <meta charset=\"utf-8\">\n    <script src=\"js/jquery.min.js\" defer></script>\n    <script src=\"js/jazzy.js\" defer></script>\n    \n    <script src=\"js/lunr.min.js\" defer></script>\n    <script src=\"js/typeahead.jquery.js\" defer></script>\n    <script src=\"js/jazzy.search.js\" defer></script>\n  </head>\n  <body>\n\n    <a name=\"//apple_ref/swift/Section/Classes\" class=\"dashAnchor\"></a>\n\n    <a title=\"Classes  Reference\"></a>\n\n    <header class=\"header\">\n      <p class=\"header-col header-col--primary\">\n        <a class=\"header-link\" href=\"index.html\">\n          SwiftJWT 3.6.200 Docs\n        </a>\n         (100% documented)\n      </p>\n    \n      <p class=\"header-col--secondary\">\n        <form role=\"search\" action=\"search.json\">\n          <input type=\"text\" placeholder=\"Search documentation\" data-typeahead>\n        </form>\n      </p>\n    \n        <p class=\"header-col header-col--secondary\">\n          <a class=\"header-link\" href=\"https://github.com/Kitura/Swift-JWT/\">\n            <img class=\"header-icon\" src=\"img/gh.png\"/>\n            View on GitHub\n          </a>\n        </p>\n    \n    </header>\n\n    <p class=\"breadcrumbs\">\n      <a class=\"breadcrumb\" href=\"index.html\">SwiftJWT Reference</a>\n      <img class=\"carat\" src=\"img/carat.png\" />\n      Classes  Reference\n    </p>\n\n    <div class=\"content-wrapper\">\n      <nav class=\"navigation\">\n        <ul class=\"nav-groups\">\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"Classes.html\">Classes</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/ClaimsMicroProfile.html\">ClaimsMicroProfile</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/ClaimsOpenID.html\">ClaimsOpenID</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/ClaimsStandardJWT.html\">ClaimsStandardJWT</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/JWTDecoder.html\">JWTDecoder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/JWTEncoder.html\">JWTEncoder</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"Protocols.html\">Protocols</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Protocols/Claims.html\">Claims</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"Structs.html\">Structures</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Structs/AddressClaim.html\">AddressClaim</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Structs/Header.html\">Header</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Structs/JWT.html\">JWT</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Structs/JWTError.html\">JWTError</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Structs/JWTSigner.html\">JWTSigner</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Structs/JWTVerifier.html\">JWTVerifier</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Structs/ValidateClaimsResult.html\">ValidateClaimsResult</a>\n              </li>\n            </ul>\n          </li>\n        </ul>\n      </nav>\n      <article class=\"main-content\">\n\n        <section class=\"section\">\n          <div class=\"section-content top-matter\">\n            <h1>Classes</h1>\n            <p>The following classes are available globally.</p>\n\n          </div>\n        </section>\n\n        <section class=\"section\">\n          <div class=\"section-content\">\n            <div class=\"task-group\">\n              <ul class=\"item-container\">\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT18ClaimsMicroProfileC\"></a>\n                    <a name=\"//apple_ref/swift/Class/ClaimsMicroProfile\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT18ClaimsMicroProfileC\">ClaimsMicroProfile</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>A class representing the MicroProfile claims as listed in <a href=\"http://microprofile.io/project/eclipse/microprofile-jwt-auth/spec/src/main/asciidoc/interoperability.asciidoc\">MicroProfile specs</a>.</p>\n\n                        <a href=\"Classes/ClaimsMicroProfile.html\" class=\"slightly-smaller\">See more</a>\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">class</span> <span class=\"kt\">ClaimsMicroProfile</span> <span class=\"p\">:</span> <span class=\"kt\"><a href=\"Protocols/Claims.html\">Claims</a></span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT12ClaimsOpenIDC\"></a>\n                    <a name=\"//apple_ref/swift/Class/ClaimsOpenID\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT12ClaimsOpenIDC\">ClaimsOpenID</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>A class representing OpenID related claims as decsribed in <a href=\"http://openid.net/specs/openid-connect-core-1_0.html\">OpenID specs</a>.</p>\n\n                        <a href=\"Classes/ClaimsOpenID.html\" class=\"slightly-smaller\">See more</a>\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">class</span> <span class=\"kt\">ClaimsOpenID</span> <span class=\"p\">:</span> <span class=\"kt\"><a href=\"Protocols/Claims.html\">Claims</a></span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT014ClaimsStandardB0C\"></a>\n                    <a name=\"//apple_ref/swift/Class/ClaimsStandardJWT\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT014ClaimsStandardB0C\">ClaimsStandardJWT</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>A class representing the Standard JWT claims as described in <a href=\"https://tools.ietf.org/html/rfc7519#section-4.1\">RFC7519</a>.</p>\n\n                        <a href=\"Classes/ClaimsStandardJWT.html\" class=\"slightly-smaller\">See more</a>\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">class</span> <span class=\"kt\">ClaimsStandardJWT</span> <span class=\"p\">:</span> <span class=\"kt\"><a href=\"Protocols/Claims.html\">Claims</a></span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n              </ul>\n            </div>\n            <div class=\"task-group\">\n              <div class=\"task-name-container\">\n                <a name=\"/JWTEncoder\"></a>\n                <a name=\"//apple_ref/swift/Section/JWTEncoder\" class=\"dashAnchor\"></a>\n                <div class=\"section-name-container\">\n                  <a class=\"section-name-link\" href=\"#/JWTEncoder\"></a>\n                  <h3 class=\"section-name\"><p>JWTEncoder</p>\n</h3>\n                </div>\n              </div>\n              <ul class=\"item-container\">\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT10JWTEncoderC\"></a>\n                    <a name=\"//apple_ref/swift/Class/JWTEncoder\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT10JWTEncoderC\">JWTEncoder</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>A thread safe encoder that signs the JWT header and claims using the provided algorithm and encodes a <code><a href=\"Structs/JWT.html\">JWT</a></code> instance as either Data or a JWT String.</p>\n<h3 id='usage-example' class='heading'>Usage Example:</h3>\n<pre class=\"highlight swift\"><code><span class=\"kd\">struct</span> <span class=\"kt\">MyClaims</span><span class=\"p\">:</span> <span class=\"kt\">Claims</span> <span class=\"p\">{</span>\n   <span class=\"k\">var</span> <span class=\"nv\">name</span><span class=\"p\">:</span> <span class=\"kt\">String</span>\n<span class=\"p\">}</span>\n<span class=\"k\">var</span> <span class=\"nv\">jwt</span> <span class=\"o\">=</span> <span class=\"kt\">JWT</span><span class=\"p\">(</span><span class=\"nv\">claims</span><span class=\"p\">:</span> <span class=\"kt\">MyClaims</span><span class=\"p\">(</span><span class=\"nv\">name</span><span class=\"p\">:</span> <span class=\"s\">\"John Doe\"</span><span class=\"p\">))</span>\n<span class=\"k\">let</span> <span class=\"nv\">privateKey</span> <span class=\"o\">=</span> <span class=\"s\">\"&lt;PrivateKey&gt;\"</span><span class=\"o\">.</span><span class=\"nf\">data</span><span class=\"p\">(</span><span class=\"nv\">using</span><span class=\"p\">:</span> <span class=\"o\">.</span><span class=\"n\">utf8</span><span class=\"p\">)</span><span class=\"o\">!</span>\n<span class=\"k\">let</span> <span class=\"nv\">rsaJWTEncoder</span> <span class=\"o\">=</span> <span class=\"kt\">JWTEncoder</span><span class=\"p\">(</span><span class=\"nv\">jwtSigner</span><span class=\"p\">:</span> <span class=\"kt\">JWTSigner</span><span class=\"o\">.</span><span class=\"nf\">rs256</span><span class=\"p\">(</span><span class=\"nv\">privateKey</span><span class=\"p\">:</span> <span class=\"n\">privateKey</span><span class=\"p\">))</span>\n<span class=\"k\">do</span> <span class=\"p\">{</span>\n   <span class=\"k\">let</span> <span class=\"nv\">jwtString</span> <span class=\"o\">=</span> <span class=\"k\">try</span> <span class=\"n\">rsaJWTEncoder</span><span class=\"o\">.</span><span class=\"nf\">encodeToString</span><span class=\"p\">(</span><span class=\"n\">jwt</span><span class=\"p\">)</span>\n<span class=\"p\">}</span> <span class=\"k\">catch</span> <span class=\"p\">{</span>\n   <span class=\"nf\">print</span><span class=\"p\">(</span><span class=\"s\">\"Failed to encode JWT: </span><span class=\"se\">\\(</span><span class=\"n\">error</span><span class=\"se\">)</span><span class=\"s\">\"</span><span class=\"p\">)</span>\n<span class=\"p\">}</span>\n</code></pre>\n\n                        <a href=\"Classes/JWTEncoder.html\" class=\"slightly-smaller\">See more</a>\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">class</span> <span class=\"kt\">JWTEncoder</span> <span class=\"p\">:</span> <span class=\"kt\">BodyEncoder</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n              </ul>\n            </div>\n            <div class=\"task-group\">\n              <div class=\"task-name-container\">\n                <a name=\"/JWTDecoder\"></a>\n                <a name=\"//apple_ref/swift/Section/JWTDecoder\" class=\"dashAnchor\"></a>\n                <div class=\"section-name-container\">\n                  <a class=\"section-name-link\" href=\"#/JWTDecoder\"></a>\n                  <h3 class=\"section-name\"><p>JWTDecoder</p>\n</h3>\n                </div>\n              </div>\n              <ul class=\"item-container\">\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT10JWTDecoderC\"></a>\n                    <a name=\"//apple_ref/swift/Class/JWTDecoder\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT10JWTDecoderC\">JWTDecoder</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>A thread safe decoder that decodes either Data or a JWT String as a <code><a href=\"Structs/JWT.html\">JWT</a></code> instance and verifies the signiture using the provided algorithm.</p>\n<h3 id='usage-example' class='heading'>Usage Example:</h3>\n<pre class=\"highlight swift\"><code><span class=\"kd\">struct</span> <span class=\"kt\">MyClaims</span><span class=\"p\">:</span> <span class=\"kt\">Claims</span> <span class=\"p\">{</span>\n   <span class=\"k\">var</span> <span class=\"nv\">name</span><span class=\"p\">:</span> <span class=\"kt\">String</span>\n<span class=\"p\">}</span>\n<span class=\"k\">let</span> <span class=\"nv\">publicKey</span> <span class=\"o\">=</span> <span class=\"s\">\"&lt;PublicKey&gt;\"</span><span class=\"o\">.</span><span class=\"nf\">data</span><span class=\"p\">(</span><span class=\"nv\">using</span><span class=\"p\">:</span> <span class=\"o\">.</span><span class=\"n\">utf8</span><span class=\"p\">)</span><span class=\"o\">!</span>\n<span class=\"k\">let</span> <span class=\"nv\">rsaJWTDecoder</span> <span class=\"o\">=</span> <span class=\"kt\">JWTDecoder</span><span class=\"p\">(</span><span class=\"nv\">jwtVerifier</span><span class=\"p\">:</span> <span class=\"kt\">JWTVerifier</span><span class=\"o\">.</span><span class=\"nf\">rs256</span><span class=\"p\">(</span><span class=\"nv\">publicKey</span><span class=\"p\">:</span> <span class=\"n\">publicKey</span><span class=\"p\">))</span>\n<span class=\"k\">do</span> <span class=\"p\">{</span>\n   <span class=\"k\">let</span> <span class=\"nv\">jwt</span> <span class=\"o\">=</span> <span class=\"k\">try</span> <span class=\"n\">rsaJWTDecoder</span><span class=\"o\">.</span><span class=\"nf\">decode</span><span class=\"p\">(</span><span class=\"kt\">JWT</span><span class=\"o\">&lt;</span><span class=\"kt\">MyClaims</span><span class=\"o\">&gt;.</span><span class=\"k\">self</span><span class=\"p\">,</span> <span class=\"nv\">fromString</span><span class=\"p\">:</span> <span class=\"n\">exampleJWTString</span><span class=\"p\">)</span>\n<span class=\"p\">}</span> <span class=\"k\">catch</span> <span class=\"p\">{</span>\n   <span class=\"nf\">print</span><span class=\"p\">(</span><span class=\"s\">\"Failed to decode JWT: </span><span class=\"se\">\\(</span><span class=\"n\">error</span><span class=\"se\">)</span><span class=\"s\">\"</span><span class=\"p\">)</span>\n<span class=\"p\">}</span>\n</code></pre>\n\n                        <a href=\"Classes/JWTDecoder.html\" class=\"slightly-smaller\">See more</a>\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">class</span> <span class=\"kt\">JWTDecoder</span> <span class=\"p\">:</span> <span class=\"kt\">BodyDecoder</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n              </ul>\n            </div>\n          </div>\n        </section>\n\n      </article>\n    </div>\n    <section class=\"footer\">\n      <p>&copy; 2020 <a class=\"link\" href=\"https://github.com/Kitura/Swift-JWT\" target=\"_blank\" rel=\"external\">IBM &amp; Kitura Project Contributors</a>. All rights reserved. (Last updated: 2020-11-25)</p>\n      <p>Generated by <a class=\"link\" href=\"https://github.com/realm/jazzy\" target=\"_blank\" rel=\"external\">jazzy ♪♫ v0.13.6</a>, a <a class=\"link\" href=\"https://realm.io\" target=\"_blank\" rel=\"external\">Realm</a> project.</p>\n    </section>\n  </body>\n</div>\n</html>\n"
  },
  {
    "path": "docs/docsets/SwiftJWT.docset/Contents/Resources/Documents/Protocols/Claims.html",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n  <head>\n    <title>Claims Protocol Reference</title>\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"../css/jazzy.css\" />\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"../css/highlight.css\" />\n    <meta charset=\"utf-8\">\n    <script src=\"../js/jquery.min.js\" defer></script>\n    <script src=\"../js/jazzy.js\" defer></script>\n    \n    <script src=\"../js/lunr.min.js\" defer></script>\n    <script src=\"../js/typeahead.jquery.js\" defer></script>\n    <script src=\"../js/jazzy.search.js\" defer></script>\n  </head>\n  <body>\n\n    <a name=\"//apple_ref/swift/Protocol/Claims\" class=\"dashAnchor\"></a>\n\n    <a title=\"Claims Protocol Reference\"></a>\n\n    <header class=\"header\">\n      <p class=\"header-col header-col--primary\">\n        <a class=\"header-link\" href=\"../index.html\">\n          SwiftJWT 3.6.200 Docs\n        </a>\n         (100% documented)\n      </p>\n    \n      <p class=\"header-col--secondary\">\n        <form role=\"search\" action=\"../search.json\">\n          <input type=\"text\" placeholder=\"Search documentation\" data-typeahead>\n        </form>\n      </p>\n    \n        <p class=\"header-col header-col--secondary\">\n          <a class=\"header-link\" href=\"https://github.com/Kitura/Swift-JWT/\">\n            <img class=\"header-icon\" src=\"../img/gh.png\"/>\n            View on GitHub\n          </a>\n        </p>\n    \n    </header>\n\n    <p class=\"breadcrumbs\">\n      <a class=\"breadcrumb\" href=\"../index.html\">SwiftJWT Reference</a>\n      <img class=\"carat\" src=\"../img/carat.png\" />\n      Claims Protocol Reference\n    </p>\n\n    <div class=\"content-wrapper\">\n      <nav class=\"navigation\">\n        <ul class=\"nav-groups\">\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Classes.html\">Classes</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ClaimsMicroProfile.html\">ClaimsMicroProfile</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ClaimsOpenID.html\">ClaimsOpenID</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ClaimsStandardJWT.html\">ClaimsStandardJWT</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/JWTDecoder.html\">JWTDecoder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/JWTEncoder.html\">JWTEncoder</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Protocols.html\">Protocols</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/Claims.html\">Claims</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Structs.html\">Structures</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/AddressClaim.html\">AddressClaim</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Header.html\">Header</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/JWT.html\">JWT</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/JWTError.html\">JWTError</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/JWTSigner.html\">JWTSigner</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/JWTVerifier.html\">JWTVerifier</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/ValidateClaimsResult.html\">ValidateClaimsResult</a>\n              </li>\n            </ul>\n          </li>\n        </ul>\n      </nav>\n      <article class=\"main-content\">\n\n        <section class=\"section\">\n          <div class=\"section-content top-matter\">\n            <h1>Claims</h1>\n              <div class=\"declaration\">\n                <div class=\"language\">\n                  \n                  <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">protocol</span> <span class=\"kt\">Claims</span> <span class=\"p\">:</span> <span class=\"kt\">Decodable</span><span class=\"p\">,</span> <span class=\"kt\">Encodable</span></code></pre>\n\n                </div>\n              </div>\n            <p>A protocol for representing the claims on a JSON web token.\n <a href=\"https://tools.ietf.org/html/rfc7519#section-4.1\">https://tools.ietf.org/html/rfc7519#section-4.1</a></p>\n<h3 id='usage-example' class='heading'>Usage Example:</h3>\n<pre class=\"highlight swift\"><code><span class=\"kd\">struct</span> <span class=\"kt\">AdminClaims</span><span class=\"p\">:</span> <span class=\"kt\">Claims</span> <span class=\"p\">{</span>\n    <span class=\"k\">var</span> <span class=\"nv\">sub</span><span class=\"p\">:</span> <span class=\"kt\">String</span>\n    <span class=\"k\">var</span> <span class=\"nv\">isAdmin</span><span class=\"p\">:</span> <span class=\"kt\">Bool</span>\n    <span class=\"k\">var</span> <span class=\"nv\">exp</span><span class=\"p\">:</span> <span class=\"kt\">Date</span><span class=\"p\">?</span>\n<span class=\"p\">}</span>\n <span class=\"k\">let</span> <span class=\"nv\">jwt</span> <span class=\"o\">=</span> <span class=\"kt\">JWT</span><span class=\"p\">(</span><span class=\"nv\">claims</span><span class=\"p\">:</span> <span class=\"kt\">AdminClaims</span><span class=\"p\">(</span><span class=\"nv\">sub</span><span class=\"p\">:</span> <span class=\"s\">\"Kitura\"</span><span class=\"p\">,</span> <span class=\"nv\">isAdmin</span><span class=\"p\">:</span> <span class=\"kc\">true</span><span class=\"p\">,</span> <span class=\"nv\">exp</span><span class=\"p\">:</span> <span class=\"kt\">Date</span><span class=\"p\">(</span><span class=\"nv\">timeIntervalSinceNow</span><span class=\"p\">:</span> <span class=\"mi\">3600</span><span class=\"p\">)))</span>\n</code></pre>\n\n          </div>\n        </section>\n\n        <section class=\"section\">\n          <div class=\"section-content\">\n            <div class=\"task-group\">\n              <ul class=\"item-container\">\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT6ClaimsP3exp10Foundation4DateVSgvp\"></a>\n                    <a name=\"//apple_ref/swift/Property/exp\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT6ClaimsP3exp10Foundation4DateVSgvp\">exp</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Default implementation\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>The &ldquo;exp&rdquo; (expiration time) claim identifies the expiration time on\nor after which the JWT MUST NOT be accepted for processing.  The\nprocessing of the &ldquo;exp&rdquo; claim requires that the current date/time\nMUST be before the expiration date/time listed in the &ldquo;exp&rdquo; claim.\nImplementers MAY provide for some small leeway, usually no more than\na few minutes, to account for clock skew.</p>\n\n                      </div>\n                      <h4>Default Implementation</h4>\n                      <div class=\"default_impl abstract\">\n                        \n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"k\">var</span> <span class=\"nv\">exp</span><span class=\"p\">:</span> <span class=\"kt\">Date</span><span class=\"p\">?</span> <span class=\"p\">{</span> <span class=\"k\">get</span> <span class=\"p\">}</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT6ClaimsP3nbf10Foundation4DateVSgvp\"></a>\n                    <a name=\"//apple_ref/swift/Property/nbf\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT6ClaimsP3nbf10Foundation4DateVSgvp\">nbf</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Default implementation\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>The &ldquo;nbf&rdquo; (not before) claim identifies the time before which the JWT\nMUST NOT be accepted for processing.  The processing of the &ldquo;nbf&rdquo;\nclaim requires that the current date/time MUST be after or equal to\nthe not-before date/time listed in the &ldquo;nbf&rdquo; claim.  Implementers MAY\nprovide for some small leeway, usually no more than a few minutes, to\naccount for clock skew.</p>\n\n                      </div>\n                      <h4>Default Implementation</h4>\n                      <div class=\"default_impl abstract\">\n                        \n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"k\">var</span> <span class=\"nv\">nbf</span><span class=\"p\">:</span> <span class=\"kt\">Date</span><span class=\"p\">?</span> <span class=\"p\">{</span> <span class=\"k\">get</span> <span class=\"p\">}</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT6ClaimsP3iat10Foundation4DateVSgvp\"></a>\n                    <a name=\"//apple_ref/swift/Property/iat\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT6ClaimsP3iat10Foundation4DateVSgvp\">iat</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Default implementation\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>The &ldquo;iat&rdquo; (issued at) claim identifies the time at which the JWT was\nissued.  This claim can be used to determine the age of the JWT.</p>\n\n                      </div>\n                      <h4>Default Implementation</h4>\n                      <div class=\"default_impl abstract\">\n                        \n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"k\">var</span> <span class=\"nv\">iat</span><span class=\"p\">:</span> <span class=\"kt\">Date</span><span class=\"p\">?</span> <span class=\"p\">{</span> <span class=\"k\">get</span> <span class=\"p\">}</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT6ClaimsP6encodeSSyKF\"></a>\n                    <a name=\"//apple_ref/swift/Method/encode()\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT6ClaimsP6encodeSSyKF\">encode()</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Default implementation\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Encode the Claim object as a Base64 String.</p>\n\n                      </div>\n                      <h4>Default Implementation</h4>\n                      <div class=\"default_impl abstract\">\n                        \n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">func</span> <span class=\"nf\">encode</span><span class=\"p\">()</span> <span class=\"k\">throws</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">String</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n              </ul>\n            </div>\n          </div>\n        </section>\n\n      </article>\n    </div>\n    <section class=\"footer\">\n      <p>&copy; 2020 <a class=\"link\" href=\"https://github.com/Kitura/Swift-JWT\" target=\"_blank\" rel=\"external\">IBM &amp; Kitura Project Contributors</a>. All rights reserved. (Last updated: 2020-11-25)</p>\n      <p>Generated by <a class=\"link\" href=\"https://github.com/realm/jazzy\" target=\"_blank\" rel=\"external\">jazzy ♪♫ v0.13.6</a>, a <a class=\"link\" href=\"https://realm.io\" target=\"_blank\" rel=\"external\">Realm</a> project.</p>\n    </section>\n  </body>\n</div>\n</html>\n"
  },
  {
    "path": "docs/docsets/SwiftJWT.docset/Contents/Resources/Documents/Protocols.html",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n  <head>\n    <title>Protocols  Reference</title>\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"css/jazzy.css\" />\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"css/highlight.css\" />\n    <meta charset=\"utf-8\">\n    <script src=\"js/jquery.min.js\" defer></script>\n    <script src=\"js/jazzy.js\" defer></script>\n    \n    <script src=\"js/lunr.min.js\" defer></script>\n    <script src=\"js/typeahead.jquery.js\" defer></script>\n    <script src=\"js/jazzy.search.js\" defer></script>\n  </head>\n  <body>\n\n    <a name=\"//apple_ref/swift/Section/Protocols\" class=\"dashAnchor\"></a>\n\n    <a title=\"Protocols  Reference\"></a>\n\n    <header class=\"header\">\n      <p class=\"header-col header-col--primary\">\n        <a class=\"header-link\" href=\"index.html\">\n          SwiftJWT 3.6.200 Docs\n        </a>\n         (100% documented)\n      </p>\n    \n      <p class=\"header-col--secondary\">\n        <form role=\"search\" action=\"search.json\">\n          <input type=\"text\" placeholder=\"Search documentation\" data-typeahead>\n        </form>\n      </p>\n    \n        <p class=\"header-col header-col--secondary\">\n          <a class=\"header-link\" href=\"https://github.com/Kitura/Swift-JWT/\">\n            <img class=\"header-icon\" src=\"img/gh.png\"/>\n            View on GitHub\n          </a>\n        </p>\n    \n    </header>\n\n    <p class=\"breadcrumbs\">\n      <a class=\"breadcrumb\" href=\"index.html\">SwiftJWT Reference</a>\n      <img class=\"carat\" src=\"img/carat.png\" />\n      Protocols  Reference\n    </p>\n\n    <div class=\"content-wrapper\">\n      <nav class=\"navigation\">\n        <ul class=\"nav-groups\">\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"Classes.html\">Classes</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/ClaimsMicroProfile.html\">ClaimsMicroProfile</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/ClaimsOpenID.html\">ClaimsOpenID</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/ClaimsStandardJWT.html\">ClaimsStandardJWT</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/JWTDecoder.html\">JWTDecoder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/JWTEncoder.html\">JWTEncoder</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"Protocols.html\">Protocols</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Protocols/Claims.html\">Claims</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"Structs.html\">Structures</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Structs/AddressClaim.html\">AddressClaim</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Structs/Header.html\">Header</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Structs/JWT.html\">JWT</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Structs/JWTError.html\">JWTError</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Structs/JWTSigner.html\">JWTSigner</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Structs/JWTVerifier.html\">JWTVerifier</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Structs/ValidateClaimsResult.html\">ValidateClaimsResult</a>\n              </li>\n            </ul>\n          </li>\n        </ul>\n      </nav>\n      <article class=\"main-content\">\n\n        <section class=\"section\">\n          <div class=\"section-content top-matter\">\n            <h1>Protocols</h1>\n            <p>The following protocols are available globally.</p>\n\n          </div>\n        </section>\n\n        <section class=\"section\">\n          <div class=\"section-content\">\n            <div class=\"task-group\">\n              <div class=\"task-name-container\">\n                <a name=\"/Claims\"></a>\n                <a name=\"//apple_ref/swift/Section/Claims\" class=\"dashAnchor\"></a>\n                <div class=\"section-name-container\">\n                  <a class=\"section-name-link\" href=\"#/Claims\"></a>\n                  <h3 class=\"section-name\"><p>Claims</p>\n</h3>\n                </div>\n              </div>\n              <ul class=\"item-container\">\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT6ClaimsP\"></a>\n                    <a name=\"//apple_ref/swift/Protocol/Claims\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT6ClaimsP\">Claims</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>A protocol for representing the claims on a JSON web token.\n <a href=\"https://tools.ietf.org/html/rfc7519#section-4.1\">https://tools.ietf.org/html/rfc7519#section-4.1</a></p>\n<h3 id='usage-example' class='heading'>Usage Example:</h3>\n<pre class=\"highlight swift\"><code><span class=\"kd\">struct</span> <span class=\"kt\">AdminClaims</span><span class=\"p\">:</span> <span class=\"kt\">Claims</span> <span class=\"p\">{</span>\n    <span class=\"k\">var</span> <span class=\"nv\">sub</span><span class=\"p\">:</span> <span class=\"kt\">String</span>\n    <span class=\"k\">var</span> <span class=\"nv\">isAdmin</span><span class=\"p\">:</span> <span class=\"kt\">Bool</span>\n    <span class=\"k\">var</span> <span class=\"nv\">exp</span><span class=\"p\">:</span> <span class=\"kt\">Date</span><span class=\"p\">?</span>\n<span class=\"p\">}</span>\n <span class=\"k\">let</span> <span class=\"nv\">jwt</span> <span class=\"o\">=</span> <span class=\"kt\">JWT</span><span class=\"p\">(</span><span class=\"nv\">claims</span><span class=\"p\">:</span> <span class=\"kt\">AdminClaims</span><span class=\"p\">(</span><span class=\"nv\">sub</span><span class=\"p\">:</span> <span class=\"s\">\"Kitura\"</span><span class=\"p\">,</span> <span class=\"nv\">isAdmin</span><span class=\"p\">:</span> <span class=\"kc\">true</span><span class=\"p\">,</span> <span class=\"nv\">exp</span><span class=\"p\">:</span> <span class=\"kt\">Date</span><span class=\"p\">(</span><span class=\"nv\">timeIntervalSinceNow</span><span class=\"p\">:</span> <span class=\"mi\">3600</span><span class=\"p\">)))</span>\n</code></pre>\n\n                        <a href=\"Protocols/Claims.html\" class=\"slightly-smaller\">See more</a>\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">protocol</span> <span class=\"kt\">Claims</span> <span class=\"p\">:</span> <span class=\"kt\">Decodable</span><span class=\"p\">,</span> <span class=\"kt\">Encodable</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n              </ul>\n            </div>\n          </div>\n        </section>\n\n      </article>\n    </div>\n    <section class=\"footer\">\n      <p>&copy; 2020 <a class=\"link\" href=\"https://github.com/Kitura/Swift-JWT\" target=\"_blank\" rel=\"external\">IBM &amp; Kitura Project Contributors</a>. All rights reserved. (Last updated: 2020-11-25)</p>\n      <p>Generated by <a class=\"link\" href=\"https://github.com/realm/jazzy\" target=\"_blank\" rel=\"external\">jazzy ♪♫ v0.13.6</a>, a <a class=\"link\" href=\"https://realm.io\" target=\"_blank\" rel=\"external\">Realm</a> project.</p>\n    </section>\n  </body>\n</div>\n</html>\n"
  },
  {
    "path": "docs/docsets/SwiftJWT.docset/Contents/Resources/Documents/Structs/AddressClaim.html",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n  <head>\n    <title>AddressClaim Structure Reference</title>\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"../css/jazzy.css\" />\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"../css/highlight.css\" />\n    <meta charset=\"utf-8\">\n    <script src=\"../js/jquery.min.js\" defer></script>\n    <script src=\"../js/jazzy.js\" defer></script>\n    \n    <script src=\"../js/lunr.min.js\" defer></script>\n    <script src=\"../js/typeahead.jquery.js\" defer></script>\n    <script src=\"../js/jazzy.search.js\" defer></script>\n  </head>\n  <body>\n\n    <a name=\"//apple_ref/swift/Struct/AddressClaim\" class=\"dashAnchor\"></a>\n\n    <a title=\"AddressClaim Structure Reference\"></a>\n\n    <header class=\"header\">\n      <p class=\"header-col header-col--primary\">\n        <a class=\"header-link\" href=\"../index.html\">\n          SwiftJWT 3.6.200 Docs\n        </a>\n         (100% documented)\n      </p>\n    \n      <p class=\"header-col--secondary\">\n        <form role=\"search\" action=\"../search.json\">\n          <input type=\"text\" placeholder=\"Search documentation\" data-typeahead>\n        </form>\n      </p>\n    \n        <p class=\"header-col header-col--secondary\">\n          <a class=\"header-link\" href=\"https://github.com/Kitura/Swift-JWT/\">\n            <img class=\"header-icon\" src=\"../img/gh.png\"/>\n            View on GitHub\n          </a>\n        </p>\n    \n    </header>\n\n    <p class=\"breadcrumbs\">\n      <a class=\"breadcrumb\" href=\"../index.html\">SwiftJWT Reference</a>\n      <img class=\"carat\" src=\"../img/carat.png\" />\n      AddressClaim Structure Reference\n    </p>\n\n    <div class=\"content-wrapper\">\n      <nav class=\"navigation\">\n        <ul class=\"nav-groups\">\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Classes.html\">Classes</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ClaimsMicroProfile.html\">ClaimsMicroProfile</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ClaimsOpenID.html\">ClaimsOpenID</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ClaimsStandardJWT.html\">ClaimsStandardJWT</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/JWTDecoder.html\">JWTDecoder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/JWTEncoder.html\">JWTEncoder</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Protocols.html\">Protocols</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/Claims.html\">Claims</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Structs.html\">Structures</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/AddressClaim.html\">AddressClaim</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Header.html\">Header</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/JWT.html\">JWT</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/JWTError.html\">JWTError</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/JWTSigner.html\">JWTSigner</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/JWTVerifier.html\">JWTVerifier</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/ValidateClaimsResult.html\">ValidateClaimsResult</a>\n              </li>\n            </ul>\n          </li>\n        </ul>\n      </nav>\n      <article class=\"main-content\">\n\n        <section class=\"section\">\n          <div class=\"section-content top-matter\">\n            <h1>AddressClaim</h1>\n              <div class=\"declaration\">\n                <div class=\"language\">\n                  \n                  <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">struct</span> <span class=\"kt\">AddressClaim</span> <span class=\"p\">:</span> <span class=\"kt\">Codable</span></code></pre>\n\n                </div>\n              </div>\n            <p>Struct representing an AddressClaim as defined in the <a href=\"http://openid.net/specs/openid-connect-core-1_0.html\">OpenID specs</a>.</p>\n\n          </div>\n        </section>\n\n        <section class=\"section\">\n          <div class=\"section-content\">\n            <div class=\"task-group\">\n              <ul class=\"item-container\">\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT12AddressClaimV9formattedSSSgvp\"></a>\n                    <a name=\"//apple_ref/swift/Property/formatted\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT12AddressClaimV9formattedSSSgvp\">formatted</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Full mailing address, formatted for display or use on a mailing label. This field MAY contain multiple lines, separated by newlines. Newlines can be represented either as a carriage return/line feed pair (&ldquo;\\r\\n&rdquo;) or as a single line feed character (&ldquo;\\n&rdquo;).</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"k\">var</span> <span class=\"nv\">formatted</span><span class=\"p\">:</span> <span class=\"kt\">String</span><span class=\"p\">?</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT12AddressClaimV14street_addressSSSgvp\"></a>\n                    <a name=\"//apple_ref/swift/Property/street_address\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT12AddressClaimV14street_addressSSSgvp\">street_address</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Full street address component, which MAY include house number, street name, Post Office Box, and multi-line extended street address information. This field MAY contain multiple lines, separated by newlines. Newlines can be represented either as a carriage return/line feed pair (&ldquo;\\r\\n&rdquo;) or as a single line feed character (&ldquo;\\n&rdquo;).</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"k\">var</span> <span class=\"nv\">street_address</span><span class=\"p\">:</span> <span class=\"kt\">String</span><span class=\"p\">?</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT12AddressClaimV8localitySSSgvp\"></a>\n                    <a name=\"//apple_ref/swift/Property/locality\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT12AddressClaimV8localitySSSgvp\">locality</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>City or locality component.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"k\">var</span> <span class=\"nv\">locality</span><span class=\"p\">:</span> <span class=\"kt\">String</span><span class=\"p\">?</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT12AddressClaimV6regionSSSgvp\"></a>\n                    <a name=\"//apple_ref/swift/Property/region\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT12AddressClaimV6regionSSSgvp\">region</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>State, province, prefecture, or region component.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"k\">var</span> <span class=\"nv\">region</span><span class=\"p\">:</span> <span class=\"kt\">String</span><span class=\"p\">?</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT12AddressClaimV11postal_codeSSSgvp\"></a>\n                    <a name=\"//apple_ref/swift/Property/postal_code\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT12AddressClaimV11postal_codeSSSgvp\">postal_code</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Zip code or postal code component.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"k\">var</span> <span class=\"nv\">postal_code</span><span class=\"p\">:</span> <span class=\"kt\">String</span><span class=\"p\">?</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT12AddressClaimV7countrySSSgvp\"></a>\n                    <a name=\"//apple_ref/swift/Property/country\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT12AddressClaimV7countrySSSgvp\">country</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Country name component.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"k\">var</span> <span class=\"nv\">country</span><span class=\"p\">:</span> <span class=\"kt\">String</span><span class=\"p\">?</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n              </ul>\n            </div>\n          </div>\n        </section>\n\n      </article>\n    </div>\n    <section class=\"footer\">\n      <p>&copy; 2020 <a class=\"link\" href=\"https://github.com/Kitura/Swift-JWT\" target=\"_blank\" rel=\"external\">IBM &amp; Kitura Project Contributors</a>. All rights reserved. (Last updated: 2020-11-25)</p>\n      <p>Generated by <a class=\"link\" href=\"https://github.com/realm/jazzy\" target=\"_blank\" rel=\"external\">jazzy ♪♫ v0.13.6</a>, a <a class=\"link\" href=\"https://realm.io\" target=\"_blank\" rel=\"external\">Realm</a> project.</p>\n    </section>\n  </body>\n</div>\n</html>\n"
  },
  {
    "path": "docs/docsets/SwiftJWT.docset/Contents/Resources/Documents/Structs/Header.html",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n  <head>\n    <title>Header Structure Reference</title>\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"../css/jazzy.css\" />\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"../css/highlight.css\" />\n    <meta charset=\"utf-8\">\n    <script src=\"../js/jquery.min.js\" defer></script>\n    <script src=\"../js/jazzy.js\" defer></script>\n    \n    <script src=\"../js/lunr.min.js\" defer></script>\n    <script src=\"../js/typeahead.jquery.js\" defer></script>\n    <script src=\"../js/jazzy.search.js\" defer></script>\n  </head>\n  <body>\n\n    <a name=\"//apple_ref/swift/Struct/Header\" class=\"dashAnchor\"></a>\n\n    <a title=\"Header Structure Reference\"></a>\n\n    <header class=\"header\">\n      <p class=\"header-col header-col--primary\">\n        <a class=\"header-link\" href=\"../index.html\">\n          SwiftJWT 3.6.200 Docs\n        </a>\n         (100% documented)\n      </p>\n    \n      <p class=\"header-col--secondary\">\n        <form role=\"search\" action=\"../search.json\">\n          <input type=\"text\" placeholder=\"Search documentation\" data-typeahead>\n        </form>\n      </p>\n    \n        <p class=\"header-col header-col--secondary\">\n          <a class=\"header-link\" href=\"https://github.com/Kitura/Swift-JWT/\">\n            <img class=\"header-icon\" src=\"../img/gh.png\"/>\n            View on GitHub\n          </a>\n        </p>\n    \n    </header>\n\n    <p class=\"breadcrumbs\">\n      <a class=\"breadcrumb\" href=\"../index.html\">SwiftJWT Reference</a>\n      <img class=\"carat\" src=\"../img/carat.png\" />\n      Header Structure Reference\n    </p>\n\n    <div class=\"content-wrapper\">\n      <nav class=\"navigation\">\n        <ul class=\"nav-groups\">\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Classes.html\">Classes</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ClaimsMicroProfile.html\">ClaimsMicroProfile</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ClaimsOpenID.html\">ClaimsOpenID</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ClaimsStandardJWT.html\">ClaimsStandardJWT</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/JWTDecoder.html\">JWTDecoder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/JWTEncoder.html\">JWTEncoder</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Protocols.html\">Protocols</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/Claims.html\">Claims</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Structs.html\">Structures</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/AddressClaim.html\">AddressClaim</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Header.html\">Header</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/JWT.html\">JWT</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/JWTError.html\">JWTError</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/JWTSigner.html\">JWTSigner</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/JWTVerifier.html\">JWTVerifier</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/ValidateClaimsResult.html\">ValidateClaimsResult</a>\n              </li>\n            </ul>\n          </li>\n        </ul>\n      </nav>\n      <article class=\"main-content\">\n\n        <section class=\"section\">\n          <div class=\"section-content top-matter\">\n            <h1>Header</h1>\n              <div class=\"declaration\">\n                <div class=\"language\">\n                  \n                  <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">struct</span> <span class=\"kt\">Header</span> <span class=\"p\">:</span> <span class=\"kt\">Codable</span></code></pre>\n\n                </div>\n              </div>\n            <p>A representation of a JSON Web Token header.\n<a href=\"https://tools.ietf.org/html/rfc7515#section-4.1\">https://tools.ietf.org/html/rfc7515#section-4.1</a></p>\n<h3 id='usage-example' class='heading'>Usage Example:</h3>\n<pre class=\"highlight swift\"><code><span class=\"kd\">struct</span> <span class=\"kt\">MyClaims</span><span class=\"p\">:</span> <span class=\"kt\">Claims</span> <span class=\"p\">{</span>\n   <span class=\"k\">var</span> <span class=\"nv\">name</span><span class=\"p\">:</span> <span class=\"kt\">String</span>\n<span class=\"p\">}</span>\n<span class=\"k\">let</span> <span class=\"nv\">myHeader</span> <span class=\"o\">=</span> <span class=\"kt\">Header</span><span class=\"p\">(</span><span class=\"nv\">kid</span><span class=\"p\">:</span> <span class=\"s\">\"keyID\"</span><span class=\"p\">)</span>\n<span class=\"k\">let</span> <span class=\"nv\">jwt</span> <span class=\"o\">=</span> <span class=\"kt\">JWT</span><span class=\"p\">(</span><span class=\"nv\">header</span><span class=\"p\">:</span> <span class=\"n\">myHeader</span><span class=\"p\">,</span> <span class=\"nv\">claims</span><span class=\"p\">:</span> <span class=\"kt\">MyClaims</span><span class=\"p\">(</span><span class=\"nv\">name</span><span class=\"p\">:</span> <span class=\"s\">\"Kitura\"</span><span class=\"p\">))</span>\n</code></pre>\n\n          </div>\n        </section>\n\n        <section class=\"section\">\n          <div class=\"section-content\">\n            <div class=\"task-group\">\n              <ul class=\"item-container\">\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT6HeaderV3typSSSgvp\"></a>\n                    <a name=\"//apple_ref/swift/Property/typ\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT6HeaderV3typSSSgvp\">typ</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Type Header Parameter</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"k\">var</span> <span class=\"nv\">typ</span><span class=\"p\">:</span> <span class=\"kt\">String</span><span class=\"p\">?</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT6HeaderV3algSSSgvp\"></a>\n                    <a name=\"//apple_ref/swift/Property/alg\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT6HeaderV3algSSSgvp\">alg</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Algorithm Header Parameter</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">internal(set)</span> <span class=\"k\">var</span> <span class=\"nv\">alg</span><span class=\"p\">:</span> <span class=\"kt\">String</span><span class=\"p\">?</span> <span class=\"p\">{</span> <span class=\"k\">get</span> <span class=\"p\">}</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT6HeaderV3jkuSSSgvp\"></a>\n                    <a name=\"//apple_ref/swift/Property/jku\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT6HeaderV3jkuSSSgvp\">jku</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>JSON Web Token Set URL Header Parameter</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"k\">var</span> <span class=\"nv\">jku</span><span class=\"p\">:</span> <span class=\"kt\">String</span><span class=\"p\">?</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT6HeaderV3jwkSSSgvp\"></a>\n                    <a name=\"//apple_ref/swift/Property/jwk\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT6HeaderV3jwkSSSgvp\">jwk</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>JSON Web Key Header Parameter</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"k\">var</span> <span class=\"nv\">jwk</span><span class=\"p\">:</span> <span class=\"kt\">String</span><span class=\"p\">?</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT6HeaderV3kidSSSgvp\"></a>\n                    <a name=\"//apple_ref/swift/Property/kid\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT6HeaderV3kidSSSgvp\">kid</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Key ID Header Parameter</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"k\">var</span> <span class=\"nv\">kid</span><span class=\"p\">:</span> <span class=\"kt\">String</span><span class=\"p\">?</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT6HeaderV3x5uSSSgvp\"></a>\n                    <a name=\"//apple_ref/swift/Property/x5u\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT6HeaderV3x5uSSSgvp\">x5u</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>X.509 URL Header Parameter</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"k\">var</span> <span class=\"nv\">x5u</span><span class=\"p\">:</span> <span class=\"kt\">String</span><span class=\"p\">?</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT6HeaderV3x5cSaySSGSgvp\"></a>\n                    <a name=\"//apple_ref/swift/Property/x5c\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT6HeaderV3x5cSaySSGSgvp\">x5c</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>X.509 Certificate Chain Header Parameter</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"k\">var</span> <span class=\"nv\">x5c</span><span class=\"p\">:</span> <span class=\"p\">[</span><span class=\"kt\">String</span><span class=\"p\">]?</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT6HeaderV3x5tSSSgvp\"></a>\n                    <a name=\"//apple_ref/swift/Property/x5t\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT6HeaderV3x5tSSSgvp\">x5t</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>X.509 Certificate SHA-1 Thumbprint Header Parameter</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"k\">var</span> <span class=\"nv\">x5t</span><span class=\"p\">:</span> <span class=\"kt\">String</span><span class=\"p\">?</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT6HeaderV7x5tS256SSSgvp\"></a>\n                    <a name=\"//apple_ref/swift/Property/x5tS256\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT6HeaderV7x5tS256SSSgvp\">x5tS256</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>X.509 Certificate SHA-256 Thumbprint Header Parameter</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"k\">var</span> <span class=\"nv\">x5tS256</span><span class=\"p\">:</span> <span class=\"kt\">String</span><span class=\"p\">?</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT6HeaderV3ctySSSgvp\"></a>\n                    <a name=\"//apple_ref/swift/Property/cty\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT6HeaderV3ctySSSgvp\">cty</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Content Type Header Parameter</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"k\">var</span> <span class=\"nv\">cty</span><span class=\"p\">:</span> <span class=\"kt\">String</span><span class=\"p\">?</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT6HeaderV4critSaySSGSgvp\"></a>\n                    <a name=\"//apple_ref/swift/Property/crit\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT6HeaderV4critSaySSGSgvp\">crit</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Critical Header Parameter</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"k\">var</span> <span class=\"nv\">crit</span><span class=\"p\">:</span> <span class=\"p\">[</span><span class=\"kt\">String</span><span class=\"p\">]?</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT6HeaderV3typ3jku3jwk3kid3x5u3x5c3x5t0J4S2563cty4critACSSSg_A4NSaySSGSgA3nPtcfc\"></a>\n                    <a name=\"//apple_ref/swift/Method/init(typ:jku:jwk:kid:x5u:x5c:x5t:x5tS256:cty:crit:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT6HeaderV3typ3jku3jwk3kid3x5u3x5c3x5t0J4S2563cty4critACSSSg_A4NSaySSGSgA3nPtcfc\">init(typ:<wbr>jku:<wbr>jwk:<wbr>kid:<wbr>x5u:<wbr>x5c:<wbr>x5t:<wbr>x5tS256:<wbr>cty:<wbr>crit:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Initialize a <code>Header</code> instance.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"nf\">init</span><span class=\"p\">(</span>\n    <span class=\"nv\">typ</span><span class=\"p\">:</span> <span class=\"kt\">String</span><span class=\"p\">?</span> <span class=\"o\">=</span> <span class=\"s\">\"JWT\"</span><span class=\"p\">,</span>\n    <span class=\"nv\">jku</span><span class=\"p\">:</span> <span class=\"kt\">String</span><span class=\"p\">?</span> <span class=\"o\">=</span> <span class=\"kc\">nil</span><span class=\"p\">,</span>\n    <span class=\"nv\">jwk</span><span class=\"p\">:</span> <span class=\"kt\">String</span><span class=\"p\">?</span> <span class=\"o\">=</span> <span class=\"kc\">nil</span><span class=\"p\">,</span>\n    <span class=\"nv\">kid</span><span class=\"p\">:</span> <span class=\"kt\">String</span><span class=\"p\">?</span> <span class=\"o\">=</span> <span class=\"kc\">nil</span><span class=\"p\">,</span>\n    <span class=\"nv\">x5u</span><span class=\"p\">:</span> <span class=\"kt\">String</span><span class=\"p\">?</span> <span class=\"o\">=</span> <span class=\"kc\">nil</span><span class=\"p\">,</span>\n    <span class=\"nv\">x5c</span><span class=\"p\">:</span> <span class=\"p\">[</span><span class=\"kt\">String</span><span class=\"p\">]?</span> <span class=\"o\">=</span> <span class=\"kc\">nil</span><span class=\"p\">,</span>\n    <span class=\"nv\">x5t</span><span class=\"p\">:</span> <span class=\"kt\">String</span><span class=\"p\">?</span> <span class=\"o\">=</span> <span class=\"kc\">nil</span><span class=\"p\">,</span>\n    <span class=\"nv\">x5tS256</span><span class=\"p\">:</span> <span class=\"kt\">String</span><span class=\"p\">?</span> <span class=\"o\">=</span> <span class=\"kc\">nil</span><span class=\"p\">,</span>\n    <span class=\"nv\">cty</span><span class=\"p\">:</span> <span class=\"kt\">String</span><span class=\"p\">?</span> <span class=\"o\">=</span> <span class=\"kc\">nil</span><span class=\"p\">,</span>\n    <span class=\"nv\">crit</span><span class=\"p\">:</span> <span class=\"p\">[</span><span class=\"kt\">String</span><span class=\"p\">]?</span> <span class=\"o\">=</span> <span class=\"kc\">nil</span>\n<span class=\"p\">)</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>typ</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>The Type Header Parameter</p>\n                                </div>\n                              </td>\n                            </tr>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>jku</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>The JSON Web Token Set URL Header Parameter</p>\n                                </div>\n                              </td>\n                            </tr>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>jwk</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>The JSON Web Key Header Parameter</p>\n                                </div>\n                              </td>\n                            </tr>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>kid</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>The Key ID Header Parameter</p>\n                                </div>\n                              </td>\n                            </tr>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>x5u</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>The X.509 URL Header Parameter</p>\n                                </div>\n                              </td>\n                            </tr>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>x5c</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>The X.509 Certificate Chain Header Parameter</p>\n                                </div>\n                              </td>\n                            </tr>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>x5t</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>The X.509 Certificate SHA-1 Thumbprint Header Parameter</p>\n                                </div>\n                              </td>\n                            </tr>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>x5tS256</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>X.509 Certificate SHA-256 Thumbprint Header Parameter</p>\n                                </div>\n                              </td>\n                            </tr>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>cty</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>The Content Type Header Parameter</p>\n                                </div>\n                              </td>\n                            </tr>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>crit</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>The Critical Header Parameter</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>A new instance of <code>Header</code>.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n              </ul>\n            </div>\n          </div>\n        </section>\n\n      </article>\n    </div>\n    <section class=\"footer\">\n      <p>&copy; 2020 <a class=\"link\" href=\"https://github.com/Kitura/Swift-JWT\" target=\"_blank\" rel=\"external\">IBM &amp; Kitura Project Contributors</a>. All rights reserved. (Last updated: 2020-11-25)</p>\n      <p>Generated by <a class=\"link\" href=\"https://github.com/realm/jazzy\" target=\"_blank\" rel=\"external\">jazzy ♪♫ v0.13.6</a>, a <a class=\"link\" href=\"https://realm.io\" target=\"_blank\" rel=\"external\">Realm</a> project.</p>\n    </section>\n  </body>\n</div>\n</html>\n"
  },
  {
    "path": "docs/docsets/SwiftJWT.docset/Contents/Resources/Documents/Structs/JWT.html",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n  <head>\n    <title>JWT Structure Reference</title>\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"../css/jazzy.css\" />\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"../css/highlight.css\" />\n    <meta charset=\"utf-8\">\n    <script src=\"../js/jquery.min.js\" defer></script>\n    <script src=\"../js/jazzy.js\" defer></script>\n    \n    <script src=\"../js/lunr.min.js\" defer></script>\n    <script src=\"../js/typeahead.jquery.js\" defer></script>\n    <script src=\"../js/jazzy.search.js\" defer></script>\n  </head>\n  <body>\n\n    <a name=\"//apple_ref/swift/Struct/JWT\" class=\"dashAnchor\"></a>\n\n    <a title=\"JWT Structure Reference\"></a>\n\n    <header class=\"header\">\n      <p class=\"header-col header-col--primary\">\n        <a class=\"header-link\" href=\"../index.html\">\n          SwiftJWT 3.6.200 Docs\n        </a>\n         (100% documented)\n      </p>\n    \n      <p class=\"header-col--secondary\">\n        <form role=\"search\" action=\"../search.json\">\n          <input type=\"text\" placeholder=\"Search documentation\" data-typeahead>\n        </form>\n      </p>\n    \n        <p class=\"header-col header-col--secondary\">\n          <a class=\"header-link\" href=\"https://github.com/Kitura/Swift-JWT/\">\n            <img class=\"header-icon\" src=\"../img/gh.png\"/>\n            View on GitHub\n          </a>\n        </p>\n    \n    </header>\n\n    <p class=\"breadcrumbs\">\n      <a class=\"breadcrumb\" href=\"../index.html\">SwiftJWT Reference</a>\n      <img class=\"carat\" src=\"../img/carat.png\" />\n      JWT Structure Reference\n    </p>\n\n    <div class=\"content-wrapper\">\n      <nav class=\"navigation\">\n        <ul class=\"nav-groups\">\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Classes.html\">Classes</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ClaimsMicroProfile.html\">ClaimsMicroProfile</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ClaimsOpenID.html\">ClaimsOpenID</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ClaimsStandardJWT.html\">ClaimsStandardJWT</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/JWTDecoder.html\">JWTDecoder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/JWTEncoder.html\">JWTEncoder</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Protocols.html\">Protocols</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/Claims.html\">Claims</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Structs.html\">Structures</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/AddressClaim.html\">AddressClaim</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Header.html\">Header</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/JWT.html\">JWT</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/JWTError.html\">JWTError</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/JWTSigner.html\">JWTSigner</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/JWTVerifier.html\">JWTVerifier</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/ValidateClaimsResult.html\">ValidateClaimsResult</a>\n              </li>\n            </ul>\n          </li>\n        </ul>\n      </nav>\n      <article class=\"main-content\">\n\n        <section class=\"section\">\n          <div class=\"section-content top-matter\">\n            <h1>JWT</h1>\n              <div class=\"declaration\">\n                <div class=\"language\">\n                  \n                  <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">struct</span> <span class=\"kt\">JWT</span><span class=\"o\">&lt;</span><span class=\"kt\">T</span><span class=\"o\">&gt;</span> <span class=\"p\">:</span> <span class=\"kt\">Codable</span> <span class=\"k\">where</span> <span class=\"kt\">T</span> <span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Protocols/Claims.html\">Claims</a></span></code></pre>\n\n                </div>\n              </div>\n            <p>A struct representing the <code><a href=\"../Structs/Header.html\">Header</a></code> and <code><a href=\"../Protocols/Claims.html\">Claims</a></code> of a JSON Web Token.</p>\n<h3 id='usage-example' class='heading'>Usage Example:</h3>\n<pre class=\"highlight swift\"><code><span class=\"kd\">struct</span> <span class=\"kt\">MyClaims</span><span class=\"p\">:</span> <span class=\"kt\">Claims</span> <span class=\"p\">{</span>\n   <span class=\"k\">var</span> <span class=\"nv\">name</span><span class=\"p\">:</span> <span class=\"kt\">String</span>\n<span class=\"p\">}</span>\n<span class=\"k\">let</span> <span class=\"nv\">jwt</span> <span class=\"o\">=</span> <span class=\"kt\">JWT</span><span class=\"p\">(</span><span class=\"nv\">claims</span><span class=\"p\">:</span> <span class=\"kt\">MyClaims</span><span class=\"p\">(</span><span class=\"nv\">name</span><span class=\"p\">:</span> <span class=\"s\">\"Kitura\"</span><span class=\"p\">))</span>\n<span class=\"k\">let</span> <span class=\"nv\">key</span> <span class=\"o\">=</span> <span class=\"s\">\"&lt;PrivateKey&gt;\"</span><span class=\"o\">.</span><span class=\"nf\">data</span><span class=\"p\">(</span><span class=\"nv\">using</span><span class=\"p\">:</span> <span class=\"o\">.</span><span class=\"n\">utf8</span><span class=\"p\">)</span><span class=\"o\">!</span>\n<span class=\"k\">let</span> <span class=\"nv\">signedJWT</span><span class=\"p\">:</span> <span class=\"kt\">String</span><span class=\"p\">?</span> <span class=\"o\">=</span> <span class=\"k\">try</span><span class=\"p\">?</span> <span class=\"n\">jwt</span><span class=\"o\">.</span><span class=\"nf\">sign</span><span class=\"p\">(</span><span class=\"nv\">using</span><span class=\"p\">:</span> <span class=\"o\">.</span><span class=\"nf\">rs256</span><span class=\"p\">(</span><span class=\"nv\">key</span><span class=\"p\">:</span> <span class=\"n\">key</span><span class=\"p\">,</span> <span class=\"nv\">keyType</span><span class=\"p\">:</span> <span class=\"o\">.</span><span class=\"n\">privateKey</span><span class=\"p\">))</span>\n</code></pre>\n\n          </div>\n        </section>\n\n        <section class=\"section\">\n          <div class=\"section-content\">\n            <div class=\"task-group\">\n              <ul class=\"item-container\">\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT0B0V6headerAA6HeaderVvp\"></a>\n                    <a name=\"//apple_ref/swift/Property/header\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT0B0V6headerAA6HeaderVvp\">header</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>The JWT header.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"k\">var</span> <span class=\"nv\">header</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Structs/Header.html\">Header</a></span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT0B0V6claimsxvp\"></a>\n                    <a name=\"//apple_ref/swift/Property/claims\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT0B0V6claimsxvp\">claims</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>The JWT claims</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"k\">var</span> <span class=\"nv\">claims</span><span class=\"p\">:</span> <span class=\"kt\">T</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT0B0V6header6claimsACyxGAA6HeaderV_xtcfc\"></a>\n                    <a name=\"//apple_ref/swift/Method/init(header:claims:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT0B0V6header6claimsACyxGAA6HeaderV_xtcfc\">init(header:<wbr>claims:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Initialize a <code>JWT</code> instance from a <code><a href=\"../Structs/Header.html\">Header</a></code> and <code><a href=\"../Protocols/Claims.html\">Claims</a></code>.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"nf\">init</span><span class=\"p\">(</span><span class=\"nv\">header</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Structs/Header.html\">Header</a></span> <span class=\"o\">=</span> <span class=\"kt\"><a href=\"../Structs/Header.html\">Header</a></span><span class=\"p\">(),</span> <span class=\"nv\">claims</span><span class=\"p\">:</span> <span class=\"kt\">T</span><span class=\"p\">)</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>header</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>A JSON Web Token header object.</p>\n                                </div>\n                              </td>\n                            </tr>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>claims</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>A JSON Web Token claims object.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>A new instance of <code>JWT</code>.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT0B0V9jwtString8verifierACyxGSS_AA11JWTVerifierVtKcfc\"></a>\n                    <a name=\"//apple_ref/swift/Method/init(jwtString:verifier:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT0B0V9jwtString8verifierACyxGSS_AA11JWTVerifierVtKcfc\">init(jwtString:<wbr>verifier:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Initialize a <code>JWT</code> instance from a JWT String.\nThe signature will be verified using the provided JWTVerifier.\nThe time based standard JWT claims will be verified with <code>validateClaims()</code>.\nIf the string is not a valid JWT, or the verification fails, the initializer returns nil.</p>\n<div class=\"aside aside-throws\">\n    <p class=\"aside-title\">Throws</p>\n    <code><a href=\"../Structs/JWTError.html#/s:8SwiftJWT8JWTErrorV16invalidJWTStringACvpZ\">JWTError.invalidJWTString</a></code> if the provided String is not in the form mandated by the JWT specification.\n\n</div><div class=\"aside aside-throws\">\n    <p class=\"aside-title\">Throws</p>\n    <code><a href=\"../Structs/JWTError.html#/s:8SwiftJWT8JWTErrorV18failedVerificationACvpZ\">JWTError.failedVerification</a></code> if the verifier fails to verify the jwtString.\n\n</div><div class=\"aside aside-throws\">\n    <p class=\"aside-title\">Throws</p>\n    A DecodingError if the JSONDecoder throws an error while decoding the JWT.\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"nf\">init</span><span class=\"p\">(</span><span class=\"nv\">jwtString</span><span class=\"p\">:</span> <span class=\"kt\">String</span><span class=\"p\">,</span> <span class=\"nv\">verifier</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Structs/JWTVerifier.html\">JWTVerifier</a></span> <span class=\"o\">=</span> <span class=\"o\">.</span><span class=\"k\">none</span><span class=\"p\">)</span> <span class=\"k\">throws</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>jwt</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>A String with the encoded and signed JWT.</p>\n                                </div>\n                              </td>\n                            </tr>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>verifier</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>The <code><a href=\"../Structs/JWTVerifier.html\">JWTVerifier</a></code> used to verify the JWT.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An instance of <code>JWT</code> if the decoding succeeds.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT0B0V4sign5usingSSAA9JWTSignerV_tKF\"></a>\n                    <a name=\"//apple_ref/swift/Method/sign(using:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT0B0V4sign5usingSSAA9JWTSignerV_tKF\">sign(using:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Sign the JWT using the given algorithm and encode the header, claims and signature as a JWT String.</p>\n<div class=\"aside aside-note\">\n    <p class=\"aside-title\">Note</p>\n    <p>This function will set header.alg field to the name of the signing algorithm.</p>\n\n</div><div class=\"aside aside-throws\">\n    <p class=\"aside-title\">Throws</p>\n    <p>An EncodingError if the JSONEncoder throws an error while encoding the JWT.</p>\n\n</div><div class=\"aside aside-throws\">\n    <p class=\"aside-title\">Throws</p>\n    <p><code><a href=\"../Structs/JWTError.html#/s:8SwiftJWT8JWTErrorV14osVersionToLowACvpZ\">JWTError.osVersionToLow</a></code> if not using macOS 10.12.0 (Sierra) or iOS 10.0 or higher.</p>\n\n</div><div class=\"aside aside-throws\">\n    <p class=\"aside-title\">Throws</p>\n    <p>A Signing error if the jwtSigner is unable to sign the JWT with the provided key.</p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"k\">mutating</span> <span class=\"kd\">func</span> <span class=\"nf\">sign</span><span class=\"p\">(</span><span class=\"n\">using</span> <span class=\"nv\">jwtSigner</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Structs/JWTSigner.html\">JWTSigner</a></span><span class=\"p\">)</span> <span class=\"k\">throws</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">String</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>A String with the encoded and signed JWT.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT0B0V6verify_5usingSbSS_AA11JWTVerifierVtFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/verify(_:using:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT0B0V6verify_5usingSbSS_AA11JWTVerifierVtFZ\">verify(_:<wbr>using:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Verify the signature of the encoded JWT using the given algorithm.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"nf\">verify</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">jwt</span><span class=\"p\">:</span> <span class=\"kt\">String</span><span class=\"p\">,</span> <span class=\"n\">using</span> <span class=\"nv\">jwtVerifier</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Structs/JWTVerifier.html\">JWTVerifier</a></span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">Bool</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>jwt</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>A String with the encoded and signed JWT.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>A Bool indicating whether the verification was successful.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT0B0V14validateClaims6leewayAA08ValidateD6ResultVSd_tF\"></a>\n                    <a name=\"//apple_ref/swift/Method/validateClaims(leeway:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT0B0V14validateClaims6leewayAA08ValidateD6ResultVSd_tF\">validateClaims(leeway:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Validate the time based standard JWT claims.\nThis function checks that the &ldquo;exp&rdquo; (expiration time) is in the future\nand the &ldquo;iat&rdquo; (issued at) and &ldquo;nbf&rdquo; (not before) headers are in the past,</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">func</span> <span class=\"nf\">validateClaims</span><span class=\"p\">(</span><span class=\"nv\">leeway</span><span class=\"p\">:</span> <span class=\"kt\">TimeInterval</span> <span class=\"o\">=</span> <span class=\"mi\">0</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Structs/ValidateClaimsResult.html\">ValidateClaimsResult</a></span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>leeway</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>The time in seconds that the JWT can be invalid but still accepted to account for clock differences.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>A value of <code><a href=\"../Structs/ValidateClaimsResult.html\">ValidateClaimsResult</a></code>.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n              </ul>\n            </div>\n          </div>\n        </section>\n\n      </article>\n    </div>\n    <section class=\"footer\">\n      <p>&copy; 2020 <a class=\"link\" href=\"https://github.com/Kitura/Swift-JWT\" target=\"_blank\" rel=\"external\">IBM &amp; Kitura Project Contributors</a>. All rights reserved. (Last updated: 2020-11-25)</p>\n      <p>Generated by <a class=\"link\" href=\"https://github.com/realm/jazzy\" target=\"_blank\" rel=\"external\">jazzy ♪♫ v0.13.6</a>, a <a class=\"link\" href=\"https://realm.io\" target=\"_blank\" rel=\"external\">Realm</a> project.</p>\n    </section>\n  </body>\n</div>\n</html>\n"
  },
  {
    "path": "docs/docsets/SwiftJWT.docset/Contents/Resources/Documents/Structs/JWTError.html",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n  <head>\n    <title>JWTError Structure Reference</title>\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"../css/jazzy.css\" />\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"../css/highlight.css\" />\n    <meta charset=\"utf-8\">\n    <script src=\"../js/jquery.min.js\" defer></script>\n    <script src=\"../js/jazzy.js\" defer></script>\n    \n    <script src=\"../js/lunr.min.js\" defer></script>\n    <script src=\"../js/typeahead.jquery.js\" defer></script>\n    <script src=\"../js/jazzy.search.js\" defer></script>\n  </head>\n  <body>\n\n    <a name=\"//apple_ref/swift/Struct/JWTError\" class=\"dashAnchor\"></a>\n\n    <a title=\"JWTError Structure Reference\"></a>\n\n    <header class=\"header\">\n      <p class=\"header-col header-col--primary\">\n        <a class=\"header-link\" href=\"../index.html\">\n          SwiftJWT 3.6.200 Docs\n        </a>\n         (100% documented)\n      </p>\n    \n      <p class=\"header-col--secondary\">\n        <form role=\"search\" action=\"../search.json\">\n          <input type=\"text\" placeholder=\"Search documentation\" data-typeahead>\n        </form>\n      </p>\n    \n        <p class=\"header-col header-col--secondary\">\n          <a class=\"header-link\" href=\"https://github.com/Kitura/Swift-JWT/\">\n            <img class=\"header-icon\" src=\"../img/gh.png\"/>\n            View on GitHub\n          </a>\n        </p>\n    \n    </header>\n\n    <p class=\"breadcrumbs\">\n      <a class=\"breadcrumb\" href=\"../index.html\">SwiftJWT Reference</a>\n      <img class=\"carat\" src=\"../img/carat.png\" />\n      JWTError Structure Reference\n    </p>\n\n    <div class=\"content-wrapper\">\n      <nav class=\"navigation\">\n        <ul class=\"nav-groups\">\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Classes.html\">Classes</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ClaimsMicroProfile.html\">ClaimsMicroProfile</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ClaimsOpenID.html\">ClaimsOpenID</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ClaimsStandardJWT.html\">ClaimsStandardJWT</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/JWTDecoder.html\">JWTDecoder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/JWTEncoder.html\">JWTEncoder</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Protocols.html\">Protocols</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/Claims.html\">Claims</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Structs.html\">Structures</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/AddressClaim.html\">AddressClaim</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Header.html\">Header</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/JWT.html\">JWT</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/JWTError.html\">JWTError</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/JWTSigner.html\">JWTSigner</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/JWTVerifier.html\">JWTVerifier</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/ValidateClaimsResult.html\">ValidateClaimsResult</a>\n              </li>\n            </ul>\n          </li>\n        </ul>\n      </nav>\n      <article class=\"main-content\">\n\n        <section class=\"section\">\n          <div class=\"section-content top-matter\">\n            <h1>JWTError</h1>\n              <div class=\"declaration\">\n                <div class=\"language\">\n                  \n                  <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">struct</span> <span class=\"kt\">JWTError</span> <span class=\"p\">:</span> <span class=\"kt\">Error</span><span class=\"p\">,</span> <span class=\"kt\">Equatable</span></code></pre>\n\n                </div>\n              </div>\n            <p>A struct representing the different errors that can be thrown by SwiftJWT</p>\n\n          </div>\n        </section>\n\n        <section class=\"section\">\n          <div class=\"section-content\">\n            <div class=\"task-group\">\n              <ul class=\"item-container\">\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT8JWTErrorV20localizedDescriptionSSvp\"></a>\n                    <a name=\"//apple_ref/swift/Property/localizedDescription\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT8JWTErrorV20localizedDescriptionSSvp\">localizedDescription</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>A human readable description of the error.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"k\">let</span> <span class=\"nv\">localizedDescription</span><span class=\"p\">:</span> <span class=\"kt\">String</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT8JWTErrorV16invalidJWTStringACvpZ\"></a>\n                    <a name=\"//apple_ref/swift/Variable/invalidJWTString\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT8JWTErrorV16invalidJWTStringACvpZ\">invalidJWTString</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Error when an invalid JWT String is provided</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">static</span> <span class=\"k\">let</span> <span class=\"nv\">invalidJWTString</span><span class=\"p\">:</span> <span class=\"kt\">JWTError</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT8JWTErrorV18failedVerificationACvpZ\"></a>\n                    <a name=\"//apple_ref/swift/Variable/failedVerification\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT8JWTErrorV18failedVerificationACvpZ\">failedVerification</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Error when the JWT signiture fails verification.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">static</span> <span class=\"k\">let</span> <span class=\"nv\">failedVerification</span><span class=\"p\">:</span> <span class=\"kt\">JWTError</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT8JWTErrorV14osVersionToLowACvpZ\"></a>\n                    <a name=\"//apple_ref/swift/Variable/osVersionToLow\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT8JWTErrorV14osVersionToLowACvpZ\">osVersionToLow</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Error when using RSA encryption with an OS version that is too low.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">static</span> <span class=\"k\">let</span> <span class=\"nv\">osVersionToLow</span><span class=\"p\">:</span> <span class=\"kt\">JWTError</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT8JWTErrorV17invalidPrivateKeyACvpZ\"></a>\n                    <a name=\"//apple_ref/swift/Variable/invalidPrivateKey\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT8JWTErrorV17invalidPrivateKeyACvpZ\">invalidPrivateKey</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Error when an invalid private key is provided for RSA encryption.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">static</span> <span class=\"k\">let</span> <span class=\"nv\">invalidPrivateKey</span><span class=\"p\">:</span> <span class=\"kt\">JWTError</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT8JWTErrorV15invalidUTF8DataACvpZ\"></a>\n                    <a name=\"//apple_ref/swift/Variable/invalidUTF8Data\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT8JWTErrorV15invalidUTF8DataACvpZ\">invalidUTF8Data</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Error when the provided Data cannot be decoded to a String</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">static</span> <span class=\"k\">let</span> <span class=\"nv\">invalidUTF8Data</span><span class=\"p\">:</span> <span class=\"kt\">JWTError</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT8JWTErrorV12invalidKeyIDACvpZ\"></a>\n                    <a name=\"//apple_ref/swift/Variable/invalidKeyID\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT8JWTErrorV12invalidKeyIDACvpZ\">invalidKeyID</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Error when the KeyID field <code>kid</code> in the JWT header fails to generate a JWTSigner or JWTVerifier</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">static</span> <span class=\"k\">let</span> <span class=\"nv\">invalidKeyID</span><span class=\"p\">:</span> <span class=\"kt\">JWTError</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT8JWTErrorV17missingPEMHeadersACvpZ\"></a>\n                    <a name=\"//apple_ref/swift/Variable/missingPEMHeaders\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT8JWTErrorV17missingPEMHeadersACvpZ\">missingPEMHeaders</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Error when a PEM string is provided without the expected PEM headers/footers. (e.g. &mdash;&ndash;BEGIN PRIVATE KEY&mdash;&ndash;)</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">static</span> <span class=\"k\">let</span> <span class=\"nv\">missingPEMHeaders</span><span class=\"p\">:</span> <span class=\"kt\">JWTError</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT8JWTErrorV2eeoiySbAC_ACtFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/==(_:_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT8JWTErrorV2eeoiySbAC_ACtFZ\">==(_:<wbr>_:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Function to check if JWTErrors are equal. Required for equatable protocol.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"o\">==</span> <span class=\"p\">(</span><span class=\"nv\">lhs</span><span class=\"p\">:</span> <span class=\"kt\">JWTError</span><span class=\"p\">,</span> <span class=\"nv\">rhs</span><span class=\"p\">:</span> <span class=\"kt\">JWTError</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">Bool</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT8JWTErrorV2teoiySbAC_s5Error_ptFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/~=(_:_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT8JWTErrorV2teoiySbAC_s5Error_ptFZ\">~=(_:<wbr>_:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Function to enable pattern matching against generic Errors.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"o\">~=</span> <span class=\"p\">(</span><span class=\"nv\">lhs</span><span class=\"p\">:</span> <span class=\"kt\">JWTError</span><span class=\"p\">,</span> <span class=\"nv\">rhs</span><span class=\"p\">:</span> <span class=\"kt\">Error</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">Bool</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n              </ul>\n            </div>\n          </div>\n        </section>\n\n      </article>\n    </div>\n    <section class=\"footer\">\n      <p>&copy; 2020 <a class=\"link\" href=\"https://github.com/Kitura/Swift-JWT\" target=\"_blank\" rel=\"external\">IBM &amp; Kitura Project Contributors</a>. All rights reserved. (Last updated: 2020-11-25)</p>\n      <p>Generated by <a class=\"link\" href=\"https://github.com/realm/jazzy\" target=\"_blank\" rel=\"external\">jazzy ♪♫ v0.13.6</a>, a <a class=\"link\" href=\"https://realm.io\" target=\"_blank\" rel=\"external\">Realm</a> project.</p>\n    </section>\n  </body>\n</div>\n</html>\n"
  },
  {
    "path": "docs/docsets/SwiftJWT.docset/Contents/Resources/Documents/Structs/JWTSigner.html",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n  <head>\n    <title>JWTSigner Structure Reference</title>\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"../css/jazzy.css\" />\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"../css/highlight.css\" />\n    <meta charset=\"utf-8\">\n    <script src=\"../js/jquery.min.js\" defer></script>\n    <script src=\"../js/jazzy.js\" defer></script>\n    \n    <script src=\"../js/lunr.min.js\" defer></script>\n    <script src=\"../js/typeahead.jquery.js\" defer></script>\n    <script src=\"../js/jazzy.search.js\" defer></script>\n  </head>\n  <body>\n\n    <a name=\"//apple_ref/swift/Struct/JWTSigner\" class=\"dashAnchor\"></a>\n\n    <a title=\"JWTSigner Structure Reference\"></a>\n\n    <header class=\"header\">\n      <p class=\"header-col header-col--primary\">\n        <a class=\"header-link\" href=\"../index.html\">\n          SwiftJWT 3.6.200 Docs\n        </a>\n         (100% documented)\n      </p>\n    \n      <p class=\"header-col--secondary\">\n        <form role=\"search\" action=\"../search.json\">\n          <input type=\"text\" placeholder=\"Search documentation\" data-typeahead>\n        </form>\n      </p>\n    \n        <p class=\"header-col header-col--secondary\">\n          <a class=\"header-link\" href=\"https://github.com/Kitura/Swift-JWT/\">\n            <img class=\"header-icon\" src=\"../img/gh.png\"/>\n            View on GitHub\n          </a>\n        </p>\n    \n    </header>\n\n    <p class=\"breadcrumbs\">\n      <a class=\"breadcrumb\" href=\"../index.html\">SwiftJWT Reference</a>\n      <img class=\"carat\" src=\"../img/carat.png\" />\n      JWTSigner Structure Reference\n    </p>\n\n    <div class=\"content-wrapper\">\n      <nav class=\"navigation\">\n        <ul class=\"nav-groups\">\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Classes.html\">Classes</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ClaimsMicroProfile.html\">ClaimsMicroProfile</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ClaimsOpenID.html\">ClaimsOpenID</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ClaimsStandardJWT.html\">ClaimsStandardJWT</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/JWTDecoder.html\">JWTDecoder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/JWTEncoder.html\">JWTEncoder</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Protocols.html\">Protocols</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/Claims.html\">Claims</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Structs.html\">Structures</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/AddressClaim.html\">AddressClaim</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Header.html\">Header</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/JWT.html\">JWT</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/JWTError.html\">JWTError</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/JWTSigner.html\">JWTSigner</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/JWTVerifier.html\">JWTVerifier</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/ValidateClaimsResult.html\">ValidateClaimsResult</a>\n              </li>\n            </ul>\n          </li>\n        </ul>\n      </nav>\n      <article class=\"main-content\">\n\n        <section class=\"section\">\n          <div class=\"section-content top-matter\">\n            <h1>JWTSigner</h1>\n              <div class=\"declaration\">\n                <div class=\"language\">\n                  \n                  <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">struct</span> <span class=\"kt\">JWTSigner</span></code></pre>\n\n                </div>\n              </div>\n            <p>A struct that will be used to sign the JWT <code><a href=\"../Structs/Header.html\">Header</a></code> and <code><a href=\"../Protocols/Claims.html\">Claims</a></code> and generate a signed JWT.\nFor RSA and ECDSA, the provided key should be a .utf8 encoded PEM String.</p>\n<h3 id='usage-example' class='heading'>Usage Example:</h3>\n<pre class=\"highlight swift\"><code><span class=\"k\">let</span> <span class=\"nv\">pemString</span> <span class=\"o\">=</span> <span class=\"s\">\"\"\"\n-----BEGIN RSA PRIVATE KEY-----\nMIICWwIBAAKBgQDdlatRjRjogo3WojgGHFHYLugdUWAY9iR3fy4arWNA1KoS8kVw\n33cJibXr8bvwUAUparCwlvdbH6dvEOfou0/gCFQsHUfQrSDv+MuSUMAe8jzKE4qW\n+jK+xQU9a03GUnKHkkle+Q0pX/g6jXZ7r1/xAK5Do2kQ+X5xK9cipRgEKwIDAQAB\nAoGAD+onAtVye4ic7VR7V50DF9bOnwRwNXrARcDhq9LWNRrRGElESYYTQ6EbatXS\n3MCyjjX2eMhu/aF5YhXBwkppwxg+EOmXeh+MzL7Zh284OuPbkglAaGhV9bb6/5Cp\nuGb1esyPbYW+Ty2PC0GSZfIXkXs76jXAu9TOBvD0ybc2YlkCQQDywg2R/7t3Q2OE\n2+yo382CLJdrlSLVROWKwb4tb2PjhY4XAwV8d1vy0RenxTB+K5Mu57uVSTHtrMK0\nGAtFr833AkEA6avx20OHo61Yela/4k5kQDtjEf1N0LfI+BcWZtxsS3jDM3i1Hp0K\nSu5rsCPb8acJo5RO26gGVrfAsDcIXKC+bQJAZZ2XIpsitLyPpuiMOvBbzPavd4gY\n6Z8KWrfYzJoI/Q9FuBo6rKwl4BFoToD7WIUS+hpkagwWiz+6zLoX1dbOZwJACmH5\nfSSjAkLRi54PKJ8TFUeOP15h9sQzydI8zJU+upvDEKZsZc/UhT/SySDOxQ4G/523\nY0sz/OZtSWcol/UMgQJALesy++GdvoIDLfJX5GBQpuFgFenRiRDabxrE9MNUZ2aP\nFaFp+DyAe+b4nDwuJaW2LURbr8AEZga7oQj0uYxcYw==\n-----END RSA PRIVATE KEY-----\n\"\"\"</span>\n<span class=\"k\">let</span> <span class=\"nv\">privateKey</span> <span class=\"o\">=</span> <span class=\"n\">pemString</span><span class=\"o\">.</span><span class=\"nf\">data</span><span class=\"p\">(</span><span class=\"nv\">using</span><span class=\"p\">:</span> <span class=\"o\">.</span><span class=\"n\">utf8</span><span class=\"p\">)</span><span class=\"o\">!</span>\n<span class=\"k\">let</span> <span class=\"nv\">jwtSigner</span> <span class=\"o\">=</span> <span class=\"kt\">JWTSigner</span><span class=\"o\">.</span><span class=\"nf\">rs256</span><span class=\"p\">(</span><span class=\"nv\">privateKey</span><span class=\"p\">:</span> <span class=\"n\">privateKey</span><span class=\"p\">)</span>\n<span class=\"kd\">struct</span> <span class=\"kt\">MyClaims</span><span class=\"p\">:</span> <span class=\"kt\">Claims</span> <span class=\"p\">{</span>\n   <span class=\"k\">var</span> <span class=\"nv\">name</span><span class=\"p\">:</span> <span class=\"kt\">String</span>\n<span class=\"p\">}</span>\n<span class=\"k\">let</span> <span class=\"nv\">jwt</span> <span class=\"o\">=</span> <span class=\"kt\">JWT</span><span class=\"p\">(</span><span class=\"nv\">claims</span><span class=\"p\">:</span> <span class=\"kt\">MyClaims</span><span class=\"p\">(</span><span class=\"nv\">name</span><span class=\"p\">:</span> <span class=\"s\">\"Kitura\"</span><span class=\"p\">))</span>\n<span class=\"k\">let</span> <span class=\"nv\">signedJWT</span> <span class=\"o\">=</span> <span class=\"k\">try</span><span class=\"p\">?</span> <span class=\"n\">jwt</span><span class=\"o\">.</span><span class=\"nf\">sign</span><span class=\"p\">(</span><span class=\"nv\">using</span><span class=\"p\">:</span> <span class=\"n\">jwtSigner</span><span class=\"p\">)</span>\n</code></pre>\n\n          </div>\n        </section>\n\n        <section class=\"section\">\n          <div class=\"section-content\">\n            <div class=\"task-group\">\n              <ul class=\"item-container\">\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT9JWTSignerV5rs25610privateKeyAC10Foundation4DataV_tFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/rs256(privateKey:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT9JWTSignerV5rs25610privateKeyAC10Foundation4DataV_tFZ\">rs256(privateKey:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Initialize a JWTSigner using the RSA 256 bits algorithm and the provided privateKey.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"nf\">rs256</span><span class=\"p\">(</span><span class=\"nv\">privateKey</span><span class=\"p\">:</span> <span class=\"kt\">Data</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">JWTSigner</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>privateKey</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>The UTF8 encoded PEM private key, with a &ldquo;BEGIN RSA PRIVATE KEY&rdquo; header.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT9JWTSignerV5rs38410privateKeyAC10Foundation4DataV_tFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/rs384(privateKey:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT9JWTSignerV5rs38410privateKeyAC10Foundation4DataV_tFZ\">rs384(privateKey:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Initialize a JWTSigner using the RSA 384 bits algorithm and the provided privateKey.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"nf\">rs384</span><span class=\"p\">(</span><span class=\"nv\">privateKey</span><span class=\"p\">:</span> <span class=\"kt\">Data</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">JWTSigner</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>privateKey</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>The UTF8 encoded PEM private key, with a &ldquo;BEGIN RSA PRIVATE KEY&rdquo; header.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT9JWTSignerV5rs51210privateKeyAC10Foundation4DataV_tFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/rs512(privateKey:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT9JWTSignerV5rs51210privateKeyAC10Foundation4DataV_tFZ\">rs512(privateKey:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Initialize a JWTSigner using the RSA 512 bits algorithm and the provided privateKey.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"nf\">rs512</span><span class=\"p\">(</span><span class=\"nv\">privateKey</span><span class=\"p\">:</span> <span class=\"kt\">Data</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">JWTSigner</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>privateKey</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>The UTF8 encoded PEM private key, with a &ldquo;BEGIN RSA PRIVATE KEY&rdquo; header.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT9JWTSignerV5ps25610privateKeyAC10Foundation4DataV_tFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/ps256(privateKey:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT9JWTSignerV5ps25610privateKeyAC10Foundation4DataV_tFZ\">ps256(privateKey:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Initialize a JWTSigner using the RSA-PSS 256 bits algorithm and the provided privateKey.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"nf\">ps256</span><span class=\"p\">(</span><span class=\"nv\">privateKey</span><span class=\"p\">:</span> <span class=\"kt\">Data</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">JWTSigner</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>privateKey</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>The UTF8 encoded PEM private key, with a &ldquo;BEGIN RSA PRIVATE KEY&rdquo; header.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT9JWTSignerV5ps38410privateKeyAC10Foundation4DataV_tFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/ps384(privateKey:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT9JWTSignerV5ps38410privateKeyAC10Foundation4DataV_tFZ\">ps384(privateKey:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Initialize a JWTSigner using the RSA-PSS 384 bits algorithm and the provided privateKey.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"nf\">ps384</span><span class=\"p\">(</span><span class=\"nv\">privateKey</span><span class=\"p\">:</span> <span class=\"kt\">Data</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">JWTSigner</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>privateKey</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>The UTF8 encoded PEM private key, with a &ldquo;BEGIN RSA PRIVATE KEY&rdquo; header.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT9JWTSignerV5ps51210privateKeyAC10Foundation4DataV_tFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/ps512(privateKey:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT9JWTSignerV5ps51210privateKeyAC10Foundation4DataV_tFZ\">ps512(privateKey:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Initialize a JWTSigner using the RSA-PSS 512 bits algorithm and the provided privateKey.\nThis signer requires at least a 2048 bit RSA key.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"nf\">ps512</span><span class=\"p\">(</span><span class=\"nv\">privateKey</span><span class=\"p\">:</span> <span class=\"kt\">Data</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">JWTSigner</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>privateKey</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>The UTF8 encoded PEM private key, with a &ldquo;BEGIN RSA PRIVATE KEY&rdquo; header.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT9JWTSignerV5hs2563keyAC10Foundation4DataV_tFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/hs256(key:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT9JWTSignerV5hs2563keyAC10Foundation4DataV_tFZ\">hs256(key:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Initialize a JWTSigner using the HMAC 256 bits algorithm and the provided privateKey.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"nf\">hs256</span><span class=\"p\">(</span><span class=\"nv\">key</span><span class=\"p\">:</span> <span class=\"kt\">Data</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">JWTSigner</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>key</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>The HMAC symmetric password data.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT9JWTSignerV5hs3843keyAC10Foundation4DataV_tFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/hs384(key:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT9JWTSignerV5hs3843keyAC10Foundation4DataV_tFZ\">hs384(key:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Initialize a JWTSigner using the HMAC 384 bits algorithm and the provided privateKey.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"nf\">hs384</span><span class=\"p\">(</span><span class=\"nv\">key</span><span class=\"p\">:</span> <span class=\"kt\">Data</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">JWTSigner</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>key</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>The HMAC symmetric password data.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT9JWTSignerV5hs5123keyAC10Foundation4DataV_tFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/hs512(key:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT9JWTSignerV5hs5123keyAC10Foundation4DataV_tFZ\">hs512(key:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Initialize a JWTSigner using the HMAC 512 bits algorithm and the provided privateKey.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"nf\">hs512</span><span class=\"p\">(</span><span class=\"nv\">key</span><span class=\"p\">:</span> <span class=\"kt\">Data</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">JWTSigner</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>key</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>The HMAC symmetric password data.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT9JWTSignerV5es25610privateKeyAC10Foundation4DataV_tFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/es256(privateKey:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT9JWTSignerV5es25610privateKeyAC10Foundation4DataV_tFZ\">es256(privateKey:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Initialize a JWTSigner using the ECDSA SHA256 algorithm and the provided privateKey.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">@available</span><span class=\"p\">(</span><span class=\"n\">macOS</span> <span class=\"mf\">10.13</span><span class=\"p\">,</span> <span class=\"n\">iOS</span> <span class=\"mi\">11</span><span class=\"p\">,</span> <span class=\"n\">tvOS</span> <span class=\"mf\">11.0</span><span class=\"p\">,</span> <span class=\"n\">watchOS</span> <span class=\"mf\">4.0</span><span class=\"p\">,</span> <span class=\"o\">*</span><span class=\"p\">)</span>\n<span class=\"kd\">public</span> <span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"nf\">es256</span><span class=\"p\">(</span><span class=\"nv\">privateKey</span><span class=\"p\">:</span> <span class=\"kt\">Data</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">JWTSigner</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>privateKey</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>The UTF8 encoded PEM private key, with either a &ldquo;BEGIN EC PRIVATE KEY&rdquo; or &ldquo;BEGIN PRIVATE KEY&rdquo; header.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT9JWTSignerV5es38410privateKeyAC10Foundation4DataV_tFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/es384(privateKey:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT9JWTSignerV5es38410privateKeyAC10Foundation4DataV_tFZ\">es384(privateKey:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Initialize a JWTSigner using the ECDSA SHA384 algorithm and the provided privateKey.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">@available</span><span class=\"p\">(</span><span class=\"n\">macOS</span> <span class=\"mf\">10.13</span><span class=\"p\">,</span> <span class=\"n\">iOS</span> <span class=\"mi\">11</span><span class=\"p\">,</span> <span class=\"n\">tvOS</span> <span class=\"mf\">11.0</span><span class=\"p\">,</span> <span class=\"n\">watchOS</span> <span class=\"mf\">4.0</span><span class=\"p\">,</span> <span class=\"o\">*</span><span class=\"p\">)</span>\n<span class=\"kd\">public</span> <span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"nf\">es384</span><span class=\"p\">(</span><span class=\"nv\">privateKey</span><span class=\"p\">:</span> <span class=\"kt\">Data</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">JWTSigner</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>privateKey</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>The UTF8 encoded PEM private key, with either a &ldquo;BEGIN EC PRIVATE KEY&rdquo; or &ldquo;BEGIN PRIVATE KEY&rdquo; header.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT9JWTSignerV5es51210privateKeyAC10Foundation4DataV_tFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/es512(privateKey:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT9JWTSignerV5es51210privateKeyAC10Foundation4DataV_tFZ\">es512(privateKey:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Initialize a JWTSigner using the ECDSA SHA512 algorithm and the provided privateKey.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">@available</span><span class=\"p\">(</span><span class=\"n\">macOS</span> <span class=\"mf\">10.13</span><span class=\"p\">,</span> <span class=\"n\">iOS</span> <span class=\"mi\">11</span><span class=\"p\">,</span> <span class=\"n\">tvOS</span> <span class=\"mf\">11.0</span><span class=\"p\">,</span> <span class=\"n\">watchOS</span> <span class=\"mf\">4.0</span><span class=\"p\">,</span> <span class=\"o\">*</span><span class=\"p\">)</span>\n<span class=\"kd\">public</span> <span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"nf\">es512</span><span class=\"p\">(</span><span class=\"nv\">privateKey</span><span class=\"p\">:</span> <span class=\"kt\">Data</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">JWTSigner</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>privateKey</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>The UTF8 encoded PEM private key, with either a &ldquo;BEGIN EC PRIVATE KEY&rdquo; or &ldquo;BEGIN PRIVATE KEY&rdquo; header.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT9JWTSignerV4noneACvpZ\"></a>\n                    <a name=\"//apple_ref/swift/Variable/none\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT9JWTSignerV4noneACvpZ\">none</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Initialize a JWTSigner that will not sign the JWT. This is equivelent to using the &ldquo;none&rdquo; alg header.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">static</span> <span class=\"k\">let</span> <span class=\"nv\">none</span><span class=\"p\">:</span> <span class=\"kt\">JWTSigner</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n              </ul>\n            </div>\n          </div>\n        </section>\n\n      </article>\n    </div>\n    <section class=\"footer\">\n      <p>&copy; 2020 <a class=\"link\" href=\"https://github.com/Kitura/Swift-JWT\" target=\"_blank\" rel=\"external\">IBM &amp; Kitura Project Contributors</a>. All rights reserved. (Last updated: 2020-11-25)</p>\n      <p>Generated by <a class=\"link\" href=\"https://github.com/realm/jazzy\" target=\"_blank\" rel=\"external\">jazzy ♪♫ v0.13.6</a>, a <a class=\"link\" href=\"https://realm.io\" target=\"_blank\" rel=\"external\">Realm</a> project.</p>\n    </section>\n  </body>\n</div>\n</html>\n"
  },
  {
    "path": "docs/docsets/SwiftJWT.docset/Contents/Resources/Documents/Structs/JWTVerifier.html",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n  <head>\n    <title>JWTVerifier Structure Reference</title>\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"../css/jazzy.css\" />\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"../css/highlight.css\" />\n    <meta charset=\"utf-8\">\n    <script src=\"../js/jquery.min.js\" defer></script>\n    <script src=\"../js/jazzy.js\" defer></script>\n    \n    <script src=\"../js/lunr.min.js\" defer></script>\n    <script src=\"../js/typeahead.jquery.js\" defer></script>\n    <script src=\"../js/jazzy.search.js\" defer></script>\n  </head>\n  <body>\n\n    <a name=\"//apple_ref/swift/Struct/JWTVerifier\" class=\"dashAnchor\"></a>\n\n    <a title=\"JWTVerifier Structure Reference\"></a>\n\n    <header class=\"header\">\n      <p class=\"header-col header-col--primary\">\n        <a class=\"header-link\" href=\"../index.html\">\n          SwiftJWT 3.6.200 Docs\n        </a>\n         (100% documented)\n      </p>\n    \n      <p class=\"header-col--secondary\">\n        <form role=\"search\" action=\"../search.json\">\n          <input type=\"text\" placeholder=\"Search documentation\" data-typeahead>\n        </form>\n      </p>\n    \n        <p class=\"header-col header-col--secondary\">\n          <a class=\"header-link\" href=\"https://github.com/Kitura/Swift-JWT/\">\n            <img class=\"header-icon\" src=\"../img/gh.png\"/>\n            View on GitHub\n          </a>\n        </p>\n    \n    </header>\n\n    <p class=\"breadcrumbs\">\n      <a class=\"breadcrumb\" href=\"../index.html\">SwiftJWT Reference</a>\n      <img class=\"carat\" src=\"../img/carat.png\" />\n      JWTVerifier Structure Reference\n    </p>\n\n    <div class=\"content-wrapper\">\n      <nav class=\"navigation\">\n        <ul class=\"nav-groups\">\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Classes.html\">Classes</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ClaimsMicroProfile.html\">ClaimsMicroProfile</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ClaimsOpenID.html\">ClaimsOpenID</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ClaimsStandardJWT.html\">ClaimsStandardJWT</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/JWTDecoder.html\">JWTDecoder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/JWTEncoder.html\">JWTEncoder</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Protocols.html\">Protocols</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/Claims.html\">Claims</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Structs.html\">Structures</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/AddressClaim.html\">AddressClaim</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Header.html\">Header</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/JWT.html\">JWT</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/JWTError.html\">JWTError</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/JWTSigner.html\">JWTSigner</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/JWTVerifier.html\">JWTVerifier</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/ValidateClaimsResult.html\">ValidateClaimsResult</a>\n              </li>\n            </ul>\n          </li>\n        </ul>\n      </nav>\n      <article class=\"main-content\">\n\n        <section class=\"section\">\n          <div class=\"section-content top-matter\">\n            <h1>JWTVerifier</h1>\n              <div class=\"declaration\">\n                <div class=\"language\">\n                  \n                  <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">struct</span> <span class=\"kt\">JWTVerifier</span></code></pre>\n\n                </div>\n              </div>\n            <p>A struct that will be used to verify the signature of a JWT is valid for the provided <code><a href=\"../Structs/Header.html\">Header</a></code> and <code><a href=\"../Protocols/Claims.html\">Claims</a></code>.\nFor RSA and ECDSA, the provided key should be a .utf8 encoded PEM String.</p>\n<h3 id='usage-example' class='heading'>Usage Example:</h3>\n<pre class=\"highlight swift\"><code><span class=\"k\">let</span> <span class=\"nv\">pemString</span> <span class=\"o\">=</span> <span class=\"s\">\"\"\"\n-----BEGIN PUBLIC KEY-----\nMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDdlatRjRjogo3WojgGHFHYLugd\nUWAY9iR3fy4arWNA1KoS8kVw33cJibXr8bvwUAUparCwlvdbH6dvEOfou0/gCFQs\nHUfQrSDv+MuSUMAe8jzKE4qW+jK+xQU9a03GUnKHkkle+Q0pX/g6jXZ7r1/xAK5D\no2kQ+X5xK9cipRgEKwIDAQAB\n-----END PUBLIC KEY-----\n\"\"\"</span>\n<span class=\"k\">let</span> <span class=\"nv\">signedJWT</span> <span class=\"o\">=</span> <span class=\"s\">\"eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJuYW1lIjoiS2l0dXJhIn0.o2Rv_w1W6qfkldgb6FwzC3tAFEzo7WyYcLyykijCEqDbW8A7TwoFev85KGo_Bi7eNaSgZ6Q8jgkA31r8EDQWtSRg3_o5Zlq-ZCndyVeibgbyM2BMVUGcGzkUD2ikARfnb6GNGHr2waVeFSDehTN8WTLl0mGFxUE6wx5ZugR7My0\"</span>\n<span class=\"kd\">struct</span> <span class=\"kt\">MyClaims</span><span class=\"p\">:</span> <span class=\"kt\">Claims</span> <span class=\"p\">{</span>\n   <span class=\"k\">var</span> <span class=\"nv\">name</span><span class=\"p\">:</span> <span class=\"kt\">String</span>\n<span class=\"p\">}</span>\n<span class=\"k\">let</span> <span class=\"nv\">jwt</span> <span class=\"o\">=</span> <span class=\"kt\">JWT</span><span class=\"p\">(</span><span class=\"nv\">claims</span><span class=\"p\">:</span> <span class=\"kt\">MyClaims</span><span class=\"p\">(</span><span class=\"nv\">name</span><span class=\"p\">:</span> <span class=\"s\">\"Kitura\"</span><span class=\"p\">))</span>\n<span class=\"k\">let</span> <span class=\"nv\">publicKey</span> <span class=\"o\">=</span> <span class=\"n\">pemString</span><span class=\"o\">.</span><span class=\"nf\">data</span><span class=\"p\">(</span><span class=\"nv\">using</span><span class=\"p\">:</span> <span class=\"o\">.</span><span class=\"n\">utf8</span><span class=\"p\">)</span><span class=\"o\">!</span>\n<span class=\"k\">let</span> <span class=\"nv\">jwtVerifier</span> <span class=\"o\">=</span> <span class=\"kt\">JWTVerifier</span><span class=\"o\">.</span><span class=\"nf\">rs256</span><span class=\"p\">(</span><span class=\"nv\">publicKey</span><span class=\"p\">:</span> <span class=\"n\">publicKey</span><span class=\"p\">)</span>\n<span class=\"k\">let</span> <span class=\"nv\">verified</span><span class=\"p\">:</span> <span class=\"kt\">Bool</span> <span class=\"o\">=</span> <span class=\"n\">jwt</span><span class=\"o\">.</span><span class=\"nf\">verify</span><span class=\"p\">(</span><span class=\"n\">signedJWT</span><span class=\"p\">,</span> <span class=\"nv\">using</span><span class=\"p\">:</span> <span class=\"n\">jwtVerifier</span><span class=\"p\">)</span>\n</code></pre>\n\n          </div>\n        </section>\n\n        <section class=\"section\">\n          <div class=\"section-content\">\n            <div class=\"task-group\">\n              <ul class=\"item-container\">\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT11JWTVerifierV5rs2569publicKeyAC10Foundation4DataV_tFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/rs256(publicKey:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT11JWTVerifierV5rs2569publicKeyAC10Foundation4DataV_tFZ\">rs256(publicKey:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Initialize a JWTVerifier using the RSA 256 bits algorithm and the provided publicKey.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"nf\">rs256</span><span class=\"p\">(</span><span class=\"nv\">publicKey</span><span class=\"p\">:</span> <span class=\"kt\">Data</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">JWTVerifier</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>publicKey</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>The UTF8 encoded PEM public key, with a &ldquo;BEGIN PUBLIC KEY&rdquo; header.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT11JWTVerifierV5rs3849publicKeyAC10Foundation4DataV_tFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/rs384(publicKey:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT11JWTVerifierV5rs3849publicKeyAC10Foundation4DataV_tFZ\">rs384(publicKey:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Initialize a JWTVerifier using the RSA 384 bits algorithm and the provided publicKey.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"nf\">rs384</span><span class=\"p\">(</span><span class=\"nv\">publicKey</span><span class=\"p\">:</span> <span class=\"kt\">Data</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">JWTVerifier</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>publicKey</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>The UTF8 encoded PEM public key, with a &ldquo;BEGIN PUBLIC KEY&rdquo; header.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT11JWTVerifierV5rs5129publicKeyAC10Foundation4DataV_tFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/rs512(publicKey:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT11JWTVerifierV5rs5129publicKeyAC10Foundation4DataV_tFZ\">rs512(publicKey:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Initialize a JWTVerifier using the RSA 512 bits algorithm and the provided publicKey.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"nf\">rs512</span><span class=\"p\">(</span><span class=\"nv\">publicKey</span><span class=\"p\">:</span> <span class=\"kt\">Data</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">JWTVerifier</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>publicKey</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>The UTF8 encoded PEM public key, with a &ldquo;BEGIN PUBLIC KEY&rdquo; header.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT11JWTVerifierV5rs25611certificateAC10Foundation4DataV_tFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/rs256(certificate:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT11JWTVerifierV5rs25611certificateAC10Foundation4DataV_tFZ\">rs256(certificate:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Initialize a JWTVerifier using the RSA 256 bits algorithm and the provided certificate.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"nf\">rs256</span><span class=\"p\">(</span><span class=\"nv\">certificate</span><span class=\"p\">:</span> <span class=\"kt\">Data</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">JWTVerifier</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>publicKey</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>The UTF8 encoded PEM public key, with a &ldquo;BEGIN CERTIFICATE&rdquo; header.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT11JWTVerifierV5rs38411certificateAC10Foundation4DataV_tFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/rs384(certificate:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT11JWTVerifierV5rs38411certificateAC10Foundation4DataV_tFZ\">rs384(certificate:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Initialize a JWTVerifier using the RSA 384 bits algorithm and the provided certificate.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"nf\">rs384</span><span class=\"p\">(</span><span class=\"nv\">certificate</span><span class=\"p\">:</span> <span class=\"kt\">Data</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">JWTVerifier</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>publicKey</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>The UTF8 encoded PEM public key, with a &ldquo;BEGIN CERTIFICATE&rdquo; header.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT11JWTVerifierV5rs51211certificateAC10Foundation4DataV_tFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/rs512(certificate:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT11JWTVerifierV5rs51211certificateAC10Foundation4DataV_tFZ\">rs512(certificate:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Initialize a JWTVerifier using the RSA 512 bits algorithm and the provided certificate.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"nf\">rs512</span><span class=\"p\">(</span><span class=\"nv\">certificate</span><span class=\"p\">:</span> <span class=\"kt\">Data</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">JWTVerifier</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>publicKey</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>The UTF8 encoded PEM public key, with a &ldquo;BEGIN CERTIFICATE&rdquo; header.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT11JWTVerifierV5ps2569publicKeyAC10Foundation4DataV_tFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/ps256(publicKey:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT11JWTVerifierV5ps2569publicKeyAC10Foundation4DataV_tFZ\">ps256(publicKey:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Initialize a JWTVerifier using the RSA-PSS 256 bits algorithm and the provided publicKey.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"nf\">ps256</span><span class=\"p\">(</span><span class=\"nv\">publicKey</span><span class=\"p\">:</span> <span class=\"kt\">Data</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">JWTVerifier</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>publicKey</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>The UTF8 encoded PEM public key, with a &ldquo;BEGIN PUBLIC KEY&rdquo; header.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT11JWTVerifierV5ps3849publicKeyAC10Foundation4DataV_tFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/ps384(publicKey:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT11JWTVerifierV5ps3849publicKeyAC10Foundation4DataV_tFZ\">ps384(publicKey:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Initialize a JWTVerifier using the RSA-PSS 384 bits algorithm and the provided publicKey.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"nf\">ps384</span><span class=\"p\">(</span><span class=\"nv\">publicKey</span><span class=\"p\">:</span> <span class=\"kt\">Data</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">JWTVerifier</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>publicKey</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>The UTF8 encoded PEM public key, with a &ldquo;BEGIN PUBLIC KEY&rdquo; header.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT11JWTVerifierV5ps5129publicKeyAC10Foundation4DataV_tFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/ps512(publicKey:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT11JWTVerifierV5ps5129publicKeyAC10Foundation4DataV_tFZ\">ps512(publicKey:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Initialize a JWTVerifier using the RSA-PSS 512 bits algorithm and the provided publicKey.\nThis verifier requires at least a 2048 bit RSA key.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"nf\">ps512</span><span class=\"p\">(</span><span class=\"nv\">publicKey</span><span class=\"p\">:</span> <span class=\"kt\">Data</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">JWTVerifier</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>publicKey</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>The UTF8 encoded PEM public key, with a &ldquo;BEGIN PUBLIC KEY&rdquo; header.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT11JWTVerifierV5hs2563keyAC10Foundation4DataV_tFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/hs256(key:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT11JWTVerifierV5hs2563keyAC10Foundation4DataV_tFZ\">hs256(key:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Initialize a JWTSigner using the HMAC 256 bits algorithm and the provided privateKey.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"nf\">hs256</span><span class=\"p\">(</span><span class=\"nv\">key</span><span class=\"p\">:</span> <span class=\"kt\">Data</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">JWTVerifier</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>key</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>The HMAC symmetric password data.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT11JWTVerifierV5hs3843keyAC10Foundation4DataV_tFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/hs384(key:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT11JWTVerifierV5hs3843keyAC10Foundation4DataV_tFZ\">hs384(key:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Initialize a JWTSigner using the HMAC 384 bits algorithm and the provided privateKey.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"nf\">hs384</span><span class=\"p\">(</span><span class=\"nv\">key</span><span class=\"p\">:</span> <span class=\"kt\">Data</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">JWTVerifier</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>key</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>The HMAC symmetric password data.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT11JWTVerifierV5hs5123keyAC10Foundation4DataV_tFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/hs512(key:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT11JWTVerifierV5hs5123keyAC10Foundation4DataV_tFZ\">hs512(key:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Initialize a JWTSigner using the HMAC 512 bits algorithm and the provided privateKey.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"nf\">hs512</span><span class=\"p\">(</span><span class=\"nv\">key</span><span class=\"p\">:</span> <span class=\"kt\">Data</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">JWTVerifier</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>key</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>The HMAC symmetric password data.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT11JWTVerifierV5es2569publicKeyAC10Foundation4DataV_tFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/es256(publicKey:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT11JWTVerifierV5es2569publicKeyAC10Foundation4DataV_tFZ\">es256(publicKey:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Initialize a JWTVerifier using the ECDSA SHA 256 algorithm and the provided public key.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">@available</span><span class=\"p\">(</span><span class=\"n\">macOS</span> <span class=\"mf\">10.13</span><span class=\"p\">,</span> <span class=\"n\">iOS</span> <span class=\"mi\">11</span><span class=\"p\">,</span> <span class=\"n\">tvOS</span> <span class=\"mf\">11.0</span><span class=\"p\">,</span> <span class=\"n\">watchOS</span> <span class=\"mf\">4.0</span><span class=\"p\">,</span> <span class=\"o\">*</span><span class=\"p\">)</span>\n<span class=\"kd\">public</span> <span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"nf\">es256</span><span class=\"p\">(</span><span class=\"nv\">publicKey</span><span class=\"p\">:</span> <span class=\"kt\">Data</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">JWTVerifier</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>publicKey</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>The UTF8 encoded PEM public key, with a &ldquo;BEGIN PUBLIC KEY&rdquo; header.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT11JWTVerifierV5es3849publicKeyAC10Foundation4DataV_tFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/es384(publicKey:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT11JWTVerifierV5es3849publicKeyAC10Foundation4DataV_tFZ\">es384(publicKey:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Initialize a JWTVerifier using the ECDSA SHA 384 algorithm and the provided public key.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">@available</span><span class=\"p\">(</span><span class=\"n\">macOS</span> <span class=\"mf\">10.13</span><span class=\"p\">,</span> <span class=\"n\">iOS</span> <span class=\"mi\">11</span><span class=\"p\">,</span> <span class=\"n\">tvOS</span> <span class=\"mf\">11.0</span><span class=\"p\">,</span> <span class=\"n\">watchOS</span> <span class=\"mf\">4.0</span><span class=\"p\">,</span> <span class=\"o\">*</span><span class=\"p\">)</span>\n<span class=\"kd\">public</span> <span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"nf\">es384</span><span class=\"p\">(</span><span class=\"nv\">publicKey</span><span class=\"p\">:</span> <span class=\"kt\">Data</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">JWTVerifier</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>publicKey</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>The UTF8 encoded PEM public key, with a &ldquo;BEGIN PUBLIC KEY&rdquo; header.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT11JWTVerifierV5es5129publicKeyAC10Foundation4DataV_tFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/es512(publicKey:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT11JWTVerifierV5es5129publicKeyAC10Foundation4DataV_tFZ\">es512(publicKey:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Initialize a JWTVerifier using the ECDSA SHA 512 algorithm and the provided public key.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">@available</span><span class=\"p\">(</span><span class=\"n\">macOS</span> <span class=\"mf\">10.13</span><span class=\"p\">,</span> <span class=\"n\">iOS</span> <span class=\"mi\">11</span><span class=\"p\">,</span> <span class=\"n\">tvOS</span> <span class=\"mf\">11.0</span><span class=\"p\">,</span> <span class=\"n\">watchOS</span> <span class=\"mf\">4.0</span><span class=\"p\">,</span> <span class=\"o\">*</span><span class=\"p\">)</span>\n<span class=\"kd\">public</span> <span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"nf\">es512</span><span class=\"p\">(</span><span class=\"nv\">publicKey</span><span class=\"p\">:</span> <span class=\"kt\">Data</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">JWTVerifier</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>publicKey</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>The UTF8 encoded PEM public key, with a &ldquo;BEGIN PUBLIC KEY&rdquo; header.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT11JWTVerifierV4noneACvpZ\"></a>\n                    <a name=\"//apple_ref/swift/Variable/none\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT11JWTVerifierV4noneACvpZ\">none</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Initialize a JWTVerifier that will always return true when verifying the JWT. This is equivelent to using the &ldquo;none&rdquo; alg header.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">static</span> <span class=\"k\">let</span> <span class=\"nv\">none</span><span class=\"p\">:</span> <span class=\"kt\">JWTVerifier</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n              </ul>\n            </div>\n          </div>\n        </section>\n\n      </article>\n    </div>\n    <section class=\"footer\">\n      <p>&copy; 2020 <a class=\"link\" href=\"https://github.com/Kitura/Swift-JWT\" target=\"_blank\" rel=\"external\">IBM &amp; Kitura Project Contributors</a>. All rights reserved. (Last updated: 2020-11-25)</p>\n      <p>Generated by <a class=\"link\" href=\"https://github.com/realm/jazzy\" target=\"_blank\" rel=\"external\">jazzy ♪♫ v0.13.6</a>, a <a class=\"link\" href=\"https://realm.io\" target=\"_blank\" rel=\"external\">Realm</a> project.</p>\n    </section>\n  </body>\n</div>\n</html>\n"
  },
  {
    "path": "docs/docsets/SwiftJWT.docset/Contents/Resources/Documents/Structs/ValidateClaimsResult.html",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n  <head>\n    <title>ValidateClaimsResult Structure Reference</title>\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"../css/jazzy.css\" />\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"../css/highlight.css\" />\n    <meta charset=\"utf-8\">\n    <script src=\"../js/jquery.min.js\" defer></script>\n    <script src=\"../js/jazzy.js\" defer></script>\n    \n    <script src=\"../js/lunr.min.js\" defer></script>\n    <script src=\"../js/typeahead.jquery.js\" defer></script>\n    <script src=\"../js/jazzy.search.js\" defer></script>\n  </head>\n  <body>\n\n    <a name=\"//apple_ref/swift/Struct/ValidateClaimsResult\" class=\"dashAnchor\"></a>\n\n    <a title=\"ValidateClaimsResult Structure Reference\"></a>\n\n    <header class=\"header\">\n      <p class=\"header-col header-col--primary\">\n        <a class=\"header-link\" href=\"../index.html\">\n          SwiftJWT 3.6.200 Docs\n        </a>\n         (100% documented)\n      </p>\n    \n      <p class=\"header-col--secondary\">\n        <form role=\"search\" action=\"../search.json\">\n          <input type=\"text\" placeholder=\"Search documentation\" data-typeahead>\n        </form>\n      </p>\n    \n        <p class=\"header-col header-col--secondary\">\n          <a class=\"header-link\" href=\"https://github.com/Kitura/Swift-JWT/\">\n            <img class=\"header-icon\" src=\"../img/gh.png\"/>\n            View on GitHub\n          </a>\n        </p>\n    \n    </header>\n\n    <p class=\"breadcrumbs\">\n      <a class=\"breadcrumb\" href=\"../index.html\">SwiftJWT Reference</a>\n      <img class=\"carat\" src=\"../img/carat.png\" />\n      ValidateClaimsResult Structure Reference\n    </p>\n\n    <div class=\"content-wrapper\">\n      <nav class=\"navigation\">\n        <ul class=\"nav-groups\">\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Classes.html\">Classes</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ClaimsMicroProfile.html\">ClaimsMicroProfile</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ClaimsOpenID.html\">ClaimsOpenID</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ClaimsStandardJWT.html\">ClaimsStandardJWT</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/JWTDecoder.html\">JWTDecoder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/JWTEncoder.html\">JWTEncoder</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Protocols.html\">Protocols</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/Claims.html\">Claims</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Structs.html\">Structures</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/AddressClaim.html\">AddressClaim</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Header.html\">Header</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/JWT.html\">JWT</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/JWTError.html\">JWTError</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/JWTSigner.html\">JWTSigner</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/JWTVerifier.html\">JWTVerifier</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/ValidateClaimsResult.html\">ValidateClaimsResult</a>\n              </li>\n            </ul>\n          </li>\n        </ul>\n      </nav>\n      <article class=\"main-content\">\n\n        <section class=\"section\">\n          <div class=\"section-content top-matter\">\n            <h1>ValidateClaimsResult</h1>\n              <div class=\"declaration\">\n                <div class=\"language\">\n                  \n                  <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">struct</span> <span class=\"kt\">ValidateClaimsResult</span> <span class=\"p\">:</span> <span class=\"kt\">CustomStringConvertible</span><span class=\"p\">,</span> <span class=\"kt\">Equatable</span></code></pre>\n\n                </div>\n              </div>\n            <p>ValidateClaimsResult list the possible results of a call to JWT.validateClaims method.\nIn case of successful validation, .success is returned, all other cases list various\nproblems that may occur during claims validation and indicate that the validation failed.</p>\n\n          </div>\n        </section>\n\n        <section class=\"section\">\n          <div class=\"section-content\">\n            <div class=\"task-group\">\n              <ul class=\"item-container\">\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT20ValidateClaimsResultV11descriptionSSvp\"></a>\n                    <a name=\"//apple_ref/swift/Property/description\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT20ValidateClaimsResultV11descriptionSSvp\">description</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>The human readable description of the ValidateClaimsResult</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"k\">let</span> <span class=\"nv\">description</span><span class=\"p\">:</span> <span class=\"kt\">String</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT20ValidateClaimsResultV7successACvpZ\"></a>\n                    <a name=\"//apple_ref/swift/Variable/success\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT20ValidateClaimsResultV7successACvpZ\">success</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Successful validation.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">static</span> <span class=\"k\">let</span> <span class=\"nv\">success</span><span class=\"p\">:</span> <span class=\"kt\">ValidateClaimsResult</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT20ValidateClaimsResultV17invalidExpirationACvpZ\"></a>\n                    <a name=\"//apple_ref/swift/Variable/invalidExpiration\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT20ValidateClaimsResultV17invalidExpirationACvpZ\">invalidExpiration</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Invalid Expiration claim.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">static</span> <span class=\"k\">let</span> <span class=\"nv\">invalidExpiration</span><span class=\"p\">:</span> <span class=\"kt\">ValidateClaimsResult</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT20ValidateClaimsResultV7expiredACvpZ\"></a>\n                    <a name=\"//apple_ref/swift/Variable/expired\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT20ValidateClaimsResultV7expiredACvpZ\">expired</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Expired token: expiration time claim is in the past.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">static</span> <span class=\"k\">let</span> <span class=\"nv\">expired</span><span class=\"p\">:</span> <span class=\"kt\">ValidateClaimsResult</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT20ValidateClaimsResultV16invalidNotBeforeACvpZ\"></a>\n                    <a name=\"//apple_ref/swift/Variable/invalidNotBefore\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT20ValidateClaimsResultV16invalidNotBeforeACvpZ\">invalidNotBefore</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Invalid Not Before claim.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">static</span> <span class=\"k\">let</span> <span class=\"nv\">invalidNotBefore</span><span class=\"p\">:</span> <span class=\"kt\">ValidateClaimsResult</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT20ValidateClaimsResultV9notBeforeACvpZ\"></a>\n                    <a name=\"//apple_ref/swift/Variable/notBefore\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT20ValidateClaimsResultV9notBeforeACvpZ\">notBefore</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Not Before claim is in the future.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">static</span> <span class=\"k\">let</span> <span class=\"nv\">notBefore</span><span class=\"p\">:</span> <span class=\"kt\">ValidateClaimsResult</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT20ValidateClaimsResultV15invalidIssuedAtACvpZ\"></a>\n                    <a name=\"//apple_ref/swift/Variable/invalidIssuedAt\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT20ValidateClaimsResultV15invalidIssuedAtACvpZ\">invalidIssuedAt</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Invalid Issued At claim.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">static</span> <span class=\"k\">let</span> <span class=\"nv\">invalidIssuedAt</span><span class=\"p\">:</span> <span class=\"kt\">ValidateClaimsResult</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT20ValidateClaimsResultV8issuedAtACvpZ\"></a>\n                    <a name=\"//apple_ref/swift/Variable/issuedAt\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT20ValidateClaimsResultV8issuedAtACvpZ\">issuedAt</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Issued At claim is in the future.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">static</span> <span class=\"k\">let</span> <span class=\"nv\">issuedAt</span><span class=\"p\">:</span> <span class=\"kt\">ValidateClaimsResult</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT20ValidateClaimsResultV2eeoiySbAC_ACtFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/==(_:_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT20ValidateClaimsResultV2eeoiySbAC_ACtFZ\">==(_:<wbr>_:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Check if two ValidateClaimsResults are equal. Required for the Equatable protocol</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"o\">==</span> <span class=\"p\">(</span><span class=\"nv\">lhs</span><span class=\"p\">:</span> <span class=\"kt\">ValidateClaimsResult</span><span class=\"p\">,</span> <span class=\"nv\">rhs</span><span class=\"p\">:</span> <span class=\"kt\">ValidateClaimsResult</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">Bool</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n              </ul>\n            </div>\n          </div>\n        </section>\n\n      </article>\n    </div>\n    <section class=\"footer\">\n      <p>&copy; 2020 <a class=\"link\" href=\"https://github.com/Kitura/Swift-JWT\" target=\"_blank\" rel=\"external\">IBM &amp; Kitura Project Contributors</a>. All rights reserved. (Last updated: 2020-11-25)</p>\n      <p>Generated by <a class=\"link\" href=\"https://github.com/realm/jazzy\" target=\"_blank\" rel=\"external\">jazzy ♪♫ v0.13.6</a>, a <a class=\"link\" href=\"https://realm.io\" target=\"_blank\" rel=\"external\">Realm</a> project.</p>\n    </section>\n  </body>\n</div>\n</html>\n"
  },
  {
    "path": "docs/docsets/SwiftJWT.docset/Contents/Resources/Documents/Structs.html",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n  <head>\n    <title>Structures  Reference</title>\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"css/jazzy.css\" />\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"css/highlight.css\" />\n    <meta charset=\"utf-8\">\n    <script src=\"js/jquery.min.js\" defer></script>\n    <script src=\"js/jazzy.js\" defer></script>\n    \n    <script src=\"js/lunr.min.js\" defer></script>\n    <script src=\"js/typeahead.jquery.js\" defer></script>\n    <script src=\"js/jazzy.search.js\" defer></script>\n  </head>\n  <body>\n\n    <a name=\"//apple_ref/swift/Section/Structures\" class=\"dashAnchor\"></a>\n\n    <a title=\"Structures  Reference\"></a>\n\n    <header class=\"header\">\n      <p class=\"header-col header-col--primary\">\n        <a class=\"header-link\" href=\"index.html\">\n          SwiftJWT 3.6.200 Docs\n        </a>\n         (100% documented)\n      </p>\n    \n      <p class=\"header-col--secondary\">\n        <form role=\"search\" action=\"search.json\">\n          <input type=\"text\" placeholder=\"Search documentation\" data-typeahead>\n        </form>\n      </p>\n    \n        <p class=\"header-col header-col--secondary\">\n          <a class=\"header-link\" href=\"https://github.com/Kitura/Swift-JWT/\">\n            <img class=\"header-icon\" src=\"img/gh.png\"/>\n            View on GitHub\n          </a>\n        </p>\n    \n    </header>\n\n    <p class=\"breadcrumbs\">\n      <a class=\"breadcrumb\" href=\"index.html\">SwiftJWT Reference</a>\n      <img class=\"carat\" src=\"img/carat.png\" />\n      Structures  Reference\n    </p>\n\n    <div class=\"content-wrapper\">\n      <nav class=\"navigation\">\n        <ul class=\"nav-groups\">\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"Classes.html\">Classes</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/ClaimsMicroProfile.html\">ClaimsMicroProfile</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/ClaimsOpenID.html\">ClaimsOpenID</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/ClaimsStandardJWT.html\">ClaimsStandardJWT</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/JWTDecoder.html\">JWTDecoder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/JWTEncoder.html\">JWTEncoder</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"Protocols.html\">Protocols</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Protocols/Claims.html\">Claims</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"Structs.html\">Structures</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Structs/AddressClaim.html\">AddressClaim</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Structs/Header.html\">Header</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Structs/JWT.html\">JWT</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Structs/JWTError.html\">JWTError</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Structs/JWTSigner.html\">JWTSigner</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Structs/JWTVerifier.html\">JWTVerifier</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Structs/ValidateClaimsResult.html\">ValidateClaimsResult</a>\n              </li>\n            </ul>\n          </li>\n        </ul>\n      </nav>\n      <article class=\"main-content\">\n\n        <section class=\"section\">\n          <div class=\"section-content top-matter\">\n            <h1>Structures</h1>\n            <p>The following structures are available globally.</p>\n\n          </div>\n        </section>\n\n        <section class=\"section\">\n          <div class=\"section-content\">\n            <div class=\"task-group\">\n              <ul class=\"item-container\">\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT12AddressClaimV\"></a>\n                    <a name=\"//apple_ref/swift/Struct/AddressClaim\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT12AddressClaimV\">AddressClaim</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Struct representing an AddressClaim as defined in the <a href=\"http://openid.net/specs/openid-connect-core-1_0.html\">OpenID specs</a>.</p>\n\n                        <a href=\"Structs/AddressClaim.html\" class=\"slightly-smaller\">See more</a>\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">struct</span> <span class=\"kt\">AddressClaim</span> <span class=\"p\">:</span> <span class=\"kt\">Codable</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n              </ul>\n            </div>\n            <div class=\"task-group\">\n              <div class=\"task-name-container\">\n                <a name=\"/Header\"></a>\n                <a name=\"//apple_ref/swift/Section/Header\" class=\"dashAnchor\"></a>\n                <div class=\"section-name-container\">\n                  <a class=\"section-name-link\" href=\"#/Header\"></a>\n                  <h3 class=\"section-name\"><p>Header</p>\n</h3>\n                </div>\n              </div>\n              <ul class=\"item-container\">\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT6HeaderV\"></a>\n                    <a name=\"//apple_ref/swift/Struct/Header\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT6HeaderV\">Header</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>A representation of a JSON Web Token header.\n<a href=\"https://tools.ietf.org/html/rfc7515#section-4.1\">https://tools.ietf.org/html/rfc7515#section-4.1</a></p>\n<h3 id='usage-example' class='heading'>Usage Example:</h3>\n<pre class=\"highlight swift\"><code><span class=\"kd\">struct</span> <span class=\"kt\">MyClaims</span><span class=\"p\">:</span> <span class=\"kt\">Claims</span> <span class=\"p\">{</span>\n   <span class=\"k\">var</span> <span class=\"nv\">name</span><span class=\"p\">:</span> <span class=\"kt\">String</span>\n<span class=\"p\">}</span>\n<span class=\"k\">let</span> <span class=\"nv\">myHeader</span> <span class=\"o\">=</span> <span class=\"kt\">Header</span><span class=\"p\">(</span><span class=\"nv\">kid</span><span class=\"p\">:</span> <span class=\"s\">\"keyID\"</span><span class=\"p\">)</span>\n<span class=\"k\">let</span> <span class=\"nv\">jwt</span> <span class=\"o\">=</span> <span class=\"kt\">JWT</span><span class=\"p\">(</span><span class=\"nv\">header</span><span class=\"p\">:</span> <span class=\"n\">myHeader</span><span class=\"p\">,</span> <span class=\"nv\">claims</span><span class=\"p\">:</span> <span class=\"kt\">MyClaims</span><span class=\"p\">(</span><span class=\"nv\">name</span><span class=\"p\">:</span> <span class=\"s\">\"Kitura\"</span><span class=\"p\">))</span>\n</code></pre>\n\n                        <a href=\"Structs/Header.html\" class=\"slightly-smaller\">See more</a>\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">struct</span> <span class=\"kt\">Header</span> <span class=\"p\">:</span> <span class=\"kt\">Codable</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n              </ul>\n            </div>\n            <div class=\"task-group\">\n              <div class=\"task-name-container\">\n                <a name=\"/JWT\"></a>\n                <a name=\"//apple_ref/swift/Section/JWT\" class=\"dashAnchor\"></a>\n                <div class=\"section-name-container\">\n                  <a class=\"section-name-link\" href=\"#/JWT\"></a>\n                  <h3 class=\"section-name\"><p>JWT</p>\n</h3>\n                </div>\n              </div>\n              <ul class=\"item-container\">\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT0B0V\"></a>\n                    <a name=\"//apple_ref/swift/Struct/JWT\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT0B0V\">JWT</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>A struct representing the <code><a href=\"Structs/Header.html\">Header</a></code> and <code><a href=\"Protocols/Claims.html\">Claims</a></code> of a JSON Web Token.</p>\n<h3 id='usage-example' class='heading'>Usage Example:</h3>\n<pre class=\"highlight swift\"><code><span class=\"kd\">struct</span> <span class=\"kt\">MyClaims</span><span class=\"p\">:</span> <span class=\"kt\">Claims</span> <span class=\"p\">{</span>\n   <span class=\"k\">var</span> <span class=\"nv\">name</span><span class=\"p\">:</span> <span class=\"kt\">String</span>\n<span class=\"p\">}</span>\n<span class=\"k\">let</span> <span class=\"nv\">jwt</span> <span class=\"o\">=</span> <span class=\"kt\">JWT</span><span class=\"p\">(</span><span class=\"nv\">claims</span><span class=\"p\">:</span> <span class=\"kt\">MyClaims</span><span class=\"p\">(</span><span class=\"nv\">name</span><span class=\"p\">:</span> <span class=\"s\">\"Kitura\"</span><span class=\"p\">))</span>\n<span class=\"k\">let</span> <span class=\"nv\">key</span> <span class=\"o\">=</span> <span class=\"s\">\"&lt;PrivateKey&gt;\"</span><span class=\"o\">.</span><span class=\"nf\">data</span><span class=\"p\">(</span><span class=\"nv\">using</span><span class=\"p\">:</span> <span class=\"o\">.</span><span class=\"n\">utf8</span><span class=\"p\">)</span><span class=\"o\">!</span>\n<span class=\"k\">let</span> <span class=\"nv\">signedJWT</span><span class=\"p\">:</span> <span class=\"kt\">String</span><span class=\"p\">?</span> <span class=\"o\">=</span> <span class=\"k\">try</span><span class=\"p\">?</span> <span class=\"n\">jwt</span><span class=\"o\">.</span><span class=\"nf\">sign</span><span class=\"p\">(</span><span class=\"nv\">using</span><span class=\"p\">:</span> <span class=\"o\">.</span><span class=\"nf\">rs256</span><span class=\"p\">(</span><span class=\"nv\">key</span><span class=\"p\">:</span> <span class=\"n\">key</span><span class=\"p\">,</span> <span class=\"nv\">keyType</span><span class=\"p\">:</span> <span class=\"o\">.</span><span class=\"n\">privateKey</span><span class=\"p\">))</span>\n</code></pre>\n\n                        <a href=\"Structs/JWT.html\" class=\"slightly-smaller\">See more</a>\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">struct</span> <span class=\"kt\">JWT</span><span class=\"o\">&lt;</span><span class=\"kt\">T</span><span class=\"o\">&gt;</span> <span class=\"p\">:</span> <span class=\"kt\">Codable</span> <span class=\"k\">where</span> <span class=\"kt\">T</span> <span class=\"p\">:</span> <span class=\"kt\"><a href=\"Protocols/Claims.html\">Claims</a></span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n              </ul>\n            </div>\n            <div class=\"task-group\">\n              <div class=\"task-name-container\">\n                <a name=\"/JWTError\"></a>\n                <a name=\"//apple_ref/swift/Section/JWTError\" class=\"dashAnchor\"></a>\n                <div class=\"section-name-container\">\n                  <a class=\"section-name-link\" href=\"#/JWTError\"></a>\n                  <h3 class=\"section-name\"><p>JWTError</p>\n</h3>\n                </div>\n              </div>\n              <ul class=\"item-container\">\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT8JWTErrorV\"></a>\n                    <a name=\"//apple_ref/swift/Struct/JWTError\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT8JWTErrorV\">JWTError</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>A struct representing the different errors that can be thrown by SwiftJWT</p>\n\n                        <a href=\"Structs/JWTError.html\" class=\"slightly-smaller\">See more</a>\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">struct</span> <span class=\"kt\">JWTError</span> <span class=\"p\">:</span> <span class=\"kt\">Error</span><span class=\"p\">,</span> <span class=\"kt\">Equatable</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n              </ul>\n            </div>\n            <div class=\"task-group\">\n              <div class=\"task-name-container\">\n                <a name=\"/JWTSigner\"></a>\n                <a name=\"//apple_ref/swift/Section/JWTSigner\" class=\"dashAnchor\"></a>\n                <div class=\"section-name-container\">\n                  <a class=\"section-name-link\" href=\"#/JWTSigner\"></a>\n                  <h3 class=\"section-name\"><p>JWTSigner</p>\n</h3>\n                </div>\n              </div>\n              <ul class=\"item-container\">\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT9JWTSignerV\"></a>\n                    <a name=\"//apple_ref/swift/Struct/JWTSigner\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT9JWTSignerV\">JWTSigner</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>A struct that will be used to sign the JWT <code><a href=\"Structs/Header.html\">Header</a></code> and <code><a href=\"Protocols/Claims.html\">Claims</a></code> and generate a signed JWT.\nFor RSA and ECDSA, the provided key should be a .utf8 encoded PEM String.</p>\n<h3 id='usage-example' class='heading'>Usage Example:</h3>\n<pre class=\"highlight swift\"><code><span class=\"k\">let</span> <span class=\"nv\">pemString</span> <span class=\"o\">=</span> <span class=\"s\">\"\"\"\n-----BEGIN RSA PRIVATE KEY-----\nMIICWwIBAAKBgQDdlatRjRjogo3WojgGHFHYLugdUWAY9iR3fy4arWNA1KoS8kVw\n33cJibXr8bvwUAUparCwlvdbH6dvEOfou0/gCFQsHUfQrSDv+MuSUMAe8jzKE4qW\n+jK+xQU9a03GUnKHkkle+Q0pX/g6jXZ7r1/xAK5Do2kQ+X5xK9cipRgEKwIDAQAB\nAoGAD+onAtVye4ic7VR7V50DF9bOnwRwNXrARcDhq9LWNRrRGElESYYTQ6EbatXS\n3MCyjjX2eMhu/aF5YhXBwkppwxg+EOmXeh+MzL7Zh284OuPbkglAaGhV9bb6/5Cp\nuGb1esyPbYW+Ty2PC0GSZfIXkXs76jXAu9TOBvD0ybc2YlkCQQDywg2R/7t3Q2OE\n2+yo382CLJdrlSLVROWKwb4tb2PjhY4XAwV8d1vy0RenxTB+K5Mu57uVSTHtrMK0\nGAtFr833AkEA6avx20OHo61Yela/4k5kQDtjEf1N0LfI+BcWZtxsS3jDM3i1Hp0K\nSu5rsCPb8acJo5RO26gGVrfAsDcIXKC+bQJAZZ2XIpsitLyPpuiMOvBbzPavd4gY\n6Z8KWrfYzJoI/Q9FuBo6rKwl4BFoToD7WIUS+hpkagwWiz+6zLoX1dbOZwJACmH5\nfSSjAkLRi54PKJ8TFUeOP15h9sQzydI8zJU+upvDEKZsZc/UhT/SySDOxQ4G/523\nY0sz/OZtSWcol/UMgQJALesy++GdvoIDLfJX5GBQpuFgFenRiRDabxrE9MNUZ2aP\nFaFp+DyAe+b4nDwuJaW2LURbr8AEZga7oQj0uYxcYw==\n-----END RSA PRIVATE KEY-----\n\"\"\"</span>\n<span class=\"k\">let</span> <span class=\"nv\">privateKey</span> <span class=\"o\">=</span> <span class=\"n\">pemString</span><span class=\"o\">.</span><span class=\"nf\">data</span><span class=\"p\">(</span><span class=\"nv\">using</span><span class=\"p\">:</span> <span class=\"o\">.</span><span class=\"n\">utf8</span><span class=\"p\">)</span><span class=\"o\">!</span>\n<span class=\"k\">let</span> <span class=\"nv\">jwtSigner</span> <span class=\"o\">=</span> <span class=\"kt\">JWTSigner</span><span class=\"o\">.</span><span class=\"nf\">rs256</span><span class=\"p\">(</span><span class=\"nv\">privateKey</span><span class=\"p\">:</span> <span class=\"n\">privateKey</span><span class=\"p\">)</span>\n<span class=\"kd\">struct</span> <span class=\"kt\">MyClaims</span><span class=\"p\">:</span> <span class=\"kt\">Claims</span> <span class=\"p\">{</span>\n   <span class=\"k\">var</span> <span class=\"nv\">name</span><span class=\"p\">:</span> <span class=\"kt\">String</span>\n<span class=\"p\">}</span>\n<span class=\"k\">let</span> <span class=\"nv\">jwt</span> <span class=\"o\">=</span> <span class=\"kt\">JWT</span><span class=\"p\">(</span><span class=\"nv\">claims</span><span class=\"p\">:</span> <span class=\"kt\">MyClaims</span><span class=\"p\">(</span><span class=\"nv\">name</span><span class=\"p\">:</span> <span class=\"s\">\"Kitura\"</span><span class=\"p\">))</span>\n<span class=\"k\">let</span> <span class=\"nv\">signedJWT</span> <span class=\"o\">=</span> <span class=\"k\">try</span><span class=\"p\">?</span> <span class=\"n\">jwt</span><span class=\"o\">.</span><span class=\"nf\">sign</span><span class=\"p\">(</span><span class=\"nv\">using</span><span class=\"p\">:</span> <span class=\"n\">jwtSigner</span><span class=\"p\">)</span>\n</code></pre>\n\n                        <a href=\"Structs/JWTSigner.html\" class=\"slightly-smaller\">See more</a>\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">struct</span> <span class=\"kt\">JWTSigner</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n              </ul>\n            </div>\n            <div class=\"task-group\">\n              <div class=\"task-name-container\">\n                <a name=\"/JWTVerifier\"></a>\n                <a name=\"//apple_ref/swift/Section/JWTVerifier\" class=\"dashAnchor\"></a>\n                <div class=\"section-name-container\">\n                  <a class=\"section-name-link\" href=\"#/JWTVerifier\"></a>\n                  <h3 class=\"section-name\"><p>JWTVerifier</p>\n</h3>\n                </div>\n              </div>\n              <ul class=\"item-container\">\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT11JWTVerifierV\"></a>\n                    <a name=\"//apple_ref/swift/Struct/JWTVerifier\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT11JWTVerifierV\">JWTVerifier</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>A struct that will be used to verify the signature of a JWT is valid for the provided <code><a href=\"Structs/Header.html\">Header</a></code> and <code><a href=\"Protocols/Claims.html\">Claims</a></code>.\nFor RSA and ECDSA, the provided key should be a .utf8 encoded PEM String.</p>\n<h3 id='usage-example' class='heading'>Usage Example:</h3>\n<pre class=\"highlight swift\"><code><span class=\"k\">let</span> <span class=\"nv\">pemString</span> <span class=\"o\">=</span> <span class=\"s\">\"\"\"\n-----BEGIN PUBLIC KEY-----\nMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDdlatRjRjogo3WojgGHFHYLugd\nUWAY9iR3fy4arWNA1KoS8kVw33cJibXr8bvwUAUparCwlvdbH6dvEOfou0/gCFQs\nHUfQrSDv+MuSUMAe8jzKE4qW+jK+xQU9a03GUnKHkkle+Q0pX/g6jXZ7r1/xAK5D\no2kQ+X5xK9cipRgEKwIDAQAB\n-----END PUBLIC KEY-----\n\"\"\"</span>\n<span class=\"k\">let</span> <span class=\"nv\">signedJWT</span> <span class=\"o\">=</span> <span class=\"s\">\"eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJuYW1lIjoiS2l0dXJhIn0.o2Rv_w1W6qfkldgb6FwzC3tAFEzo7WyYcLyykijCEqDbW8A7TwoFev85KGo_Bi7eNaSgZ6Q8jgkA31r8EDQWtSRg3_o5Zlq-ZCndyVeibgbyM2BMVUGcGzkUD2ikARfnb6GNGHr2waVeFSDehTN8WTLl0mGFxUE6wx5ZugR7My0\"</span>\n<span class=\"kd\">struct</span> <span class=\"kt\">MyClaims</span><span class=\"p\">:</span> <span class=\"kt\">Claims</span> <span class=\"p\">{</span>\n   <span class=\"k\">var</span> <span class=\"nv\">name</span><span class=\"p\">:</span> <span class=\"kt\">String</span>\n<span class=\"p\">}</span>\n<span class=\"k\">let</span> <span class=\"nv\">jwt</span> <span class=\"o\">=</span> <span class=\"kt\">JWT</span><span class=\"p\">(</span><span class=\"nv\">claims</span><span class=\"p\">:</span> <span class=\"kt\">MyClaims</span><span class=\"p\">(</span><span class=\"nv\">name</span><span class=\"p\">:</span> <span class=\"s\">\"Kitura\"</span><span class=\"p\">))</span>\n<span class=\"k\">let</span> <span class=\"nv\">publicKey</span> <span class=\"o\">=</span> <span class=\"n\">pemString</span><span class=\"o\">.</span><span class=\"nf\">data</span><span class=\"p\">(</span><span class=\"nv\">using</span><span class=\"p\">:</span> <span class=\"o\">.</span><span class=\"n\">utf8</span><span class=\"p\">)</span><span class=\"o\">!</span>\n<span class=\"k\">let</span> <span class=\"nv\">jwtVerifier</span> <span class=\"o\">=</span> <span class=\"kt\">JWTVerifier</span><span class=\"o\">.</span><span class=\"nf\">rs256</span><span class=\"p\">(</span><span class=\"nv\">publicKey</span><span class=\"p\">:</span> <span class=\"n\">publicKey</span><span class=\"p\">)</span>\n<span class=\"k\">let</span> <span class=\"nv\">verified</span><span class=\"p\">:</span> <span class=\"kt\">Bool</span> <span class=\"o\">=</span> <span class=\"n\">jwt</span><span class=\"o\">.</span><span class=\"nf\">verify</span><span class=\"p\">(</span><span class=\"n\">signedJWT</span><span class=\"p\">,</span> <span class=\"nv\">using</span><span class=\"p\">:</span> <span class=\"n\">jwtVerifier</span><span class=\"p\">)</span>\n</code></pre>\n\n                        <a href=\"Structs/JWTVerifier.html\" class=\"slightly-smaller\">See more</a>\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">struct</span> <span class=\"kt\">JWTVerifier</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n              </ul>\n            </div>\n            <div class=\"task-group\">\n              <div class=\"task-name-container\">\n                <a name=\"/ValidateClaimsResult\"></a>\n                <a name=\"//apple_ref/swift/Section/ValidateClaimsResult\" class=\"dashAnchor\"></a>\n                <div class=\"section-name-container\">\n                  <a class=\"section-name-link\" href=\"#/ValidateClaimsResult\"></a>\n                  <h3 class=\"section-name\"><p>ValidateClaimsResult</p>\n</h3>\n                </div>\n              </div>\n              <ul class=\"item-container\">\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:8SwiftJWT20ValidateClaimsResultV\"></a>\n                    <a name=\"//apple_ref/swift/Struct/ValidateClaimsResult\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:8SwiftJWT20ValidateClaimsResultV\">ValidateClaimsResult</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>ValidateClaimsResult list the possible results of a call to JWT.validateClaims method.\nIn case of successful validation, .success is returned, all other cases list various\nproblems that may occur during claims validation and indicate that the validation failed.</p>\n\n                        <a href=\"Structs/ValidateClaimsResult.html\" class=\"slightly-smaller\">See more</a>\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">struct</span> <span class=\"kt\">ValidateClaimsResult</span> <span class=\"p\">:</span> <span class=\"kt\">CustomStringConvertible</span><span class=\"p\">,</span> <span class=\"kt\">Equatable</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n              </ul>\n            </div>\n          </div>\n        </section>\n\n      </article>\n    </div>\n    <section class=\"footer\">\n      <p>&copy; 2020 <a class=\"link\" href=\"https://github.com/Kitura/Swift-JWT\" target=\"_blank\" rel=\"external\">IBM &amp; Kitura Project Contributors</a>. All rights reserved. (Last updated: 2020-11-25)</p>\n      <p>Generated by <a class=\"link\" href=\"https://github.com/realm/jazzy\" target=\"_blank\" rel=\"external\">jazzy ♪♫ v0.13.6</a>, a <a class=\"link\" href=\"https://realm.io\" target=\"_blank\" rel=\"external\">Realm</a> project.</p>\n    </section>\n  </body>\n</div>\n</html>\n"
  },
  {
    "path": "docs/docsets/SwiftJWT.docset/Contents/Resources/Documents/css/highlight.css",
    "content": "/* Credit to https://gist.github.com/wataru420/2048287 */\n.highlight {\n  /* Comment */\n  /* Error */\n  /* Keyword */\n  /* Operator */\n  /* Comment.Multiline */\n  /* Comment.Preproc */\n  /* Comment.Single */\n  /* Comment.Special */\n  /* Generic.Deleted */\n  /* Generic.Deleted.Specific */\n  /* Generic.Emph */\n  /* Generic.Error */\n  /* Generic.Heading */\n  /* Generic.Inserted */\n  /* Generic.Inserted.Specific */\n  /* Generic.Output */\n  /* Generic.Prompt */\n  /* Generic.Strong */\n  /* Generic.Subheading */\n  /* Generic.Traceback */\n  /* Keyword.Constant */\n  /* Keyword.Declaration */\n  /* Keyword.Pseudo */\n  /* Keyword.Reserved */\n  /* Keyword.Type */\n  /* Literal.Number */\n  /* Literal.String */\n  /* Name.Attribute */\n  /* Name.Builtin */\n  /* Name.Class */\n  /* Name.Constant */\n  /* Name.Entity */\n  /* Name.Exception */\n  /* Name.Function */\n  /* Name.Namespace */\n  /* Name.Tag */\n  /* Name.Variable */\n  /* Operator.Word */\n  /* Text.Whitespace */\n  /* Literal.Number.Float */\n  /* Literal.Number.Hex */\n  /* Literal.Number.Integer */\n  /* Literal.Number.Oct */\n  /* Literal.String.Backtick */\n  /* Literal.String.Char */\n  /* Literal.String.Doc */\n  /* Literal.String.Double */\n  /* Literal.String.Escape */\n  /* Literal.String.Heredoc */\n  /* Literal.String.Interpol */\n  /* Literal.String.Other */\n  /* Literal.String.Regex */\n  /* Literal.String.Single */\n  /* Literal.String.Symbol */\n  /* Name.Builtin.Pseudo */\n  /* Name.Variable.Class */\n  /* Name.Variable.Global */\n  /* Name.Variable.Instance */\n  /* Literal.Number.Integer.Long */ }\n  .highlight .c {\n    color: #999988;\n    font-style: italic; }\n  .highlight .err {\n    color: #a61717;\n    background-color: #e3d2d2; }\n  .highlight .k {\n    color: #000000;\n    font-weight: bold; }\n  .highlight .o {\n    color: #000000;\n    font-weight: bold; }\n  .highlight .cm {\n    color: #999988;\n    font-style: italic; }\n  .highlight .cp {\n    color: #999999;\n    font-weight: bold; }\n  .highlight .c1 {\n    color: #999988;\n    font-style: italic; }\n  .highlight .cs {\n    color: #999999;\n    font-weight: bold;\n    font-style: italic; }\n  .highlight .gd {\n    color: #000000;\n    background-color: #ffdddd; }\n  .highlight .gd .x {\n    color: #000000;\n    background-color: #ffaaaa; }\n  .highlight .ge {\n    color: #000000;\n    font-style: italic; }\n  .highlight .gr {\n    color: #aa0000; }\n  .highlight .gh {\n    color: #999999; }\n  .highlight .gi {\n    color: #000000;\n    background-color: #ddffdd; }\n  .highlight .gi .x {\n    color: #000000;\n    background-color: #aaffaa; }\n  .highlight .go {\n    color: #888888; }\n  .highlight .gp {\n    color: #555555; }\n  .highlight .gs {\n    font-weight: bold; }\n  .highlight .gu {\n    color: #aaaaaa; }\n  .highlight .gt {\n    color: #aa0000; }\n  .highlight .kc {\n    color: #000000;\n    font-weight: bold; }\n  .highlight .kd {\n    color: #000000;\n    font-weight: bold; }\n  .highlight .kp {\n    color: #000000;\n    font-weight: bold; }\n  .highlight .kr {\n    color: #000000;\n    font-weight: bold; }\n  .highlight .kt {\n    color: #445588; }\n  .highlight .m {\n    color: #009999; }\n  .highlight .s {\n    color: #d14; }\n  .highlight .na {\n    color: #008080; }\n  .highlight .nb {\n    color: #0086B3; }\n  .highlight .nc {\n    color: #445588;\n    font-weight: bold; }\n  .highlight .no {\n    color: #008080; }\n  .highlight .ni {\n    color: #800080; }\n  .highlight .ne {\n    color: #990000;\n    font-weight: bold; }\n  .highlight .nf {\n    color: #990000; }\n  .highlight .nn {\n    color: #555555; }\n  .highlight .nt {\n    color: #000080; }\n  .highlight .nv {\n    color: #008080; }\n  .highlight .ow {\n    color: #000000;\n    font-weight: bold; }\n  .highlight .w {\n    color: #bbbbbb; }\n  .highlight .mf {\n    color: #009999; }\n  .highlight .mh {\n    color: #009999; }\n  .highlight .mi {\n    color: #009999; }\n  .highlight .mo {\n    color: #009999; }\n  .highlight .sb {\n    color: #d14; }\n  .highlight .sc {\n    color: #d14; }\n  .highlight .sd {\n    color: #d14; }\n  .highlight .s2 {\n    color: #d14; }\n  .highlight .se {\n    color: #d14; }\n  .highlight .sh {\n    color: #d14; }\n  .highlight .si {\n    color: #d14; }\n  .highlight .sx {\n    color: #d14; }\n  .highlight .sr {\n    color: #009926; }\n  .highlight .s1 {\n    color: #d14; }\n  .highlight .ss {\n    color: #990073; }\n  .highlight .bp {\n    color: #999999; }\n  .highlight .vc {\n    color: #008080; }\n  .highlight .vg {\n    color: #008080; }\n  .highlight .vi {\n    color: #008080; }\n  .highlight .il {\n    color: #009999; }\n"
  },
  {
    "path": "docs/docsets/SwiftJWT.docset/Contents/Resources/Documents/css/jazzy.css",
    "content": "*, *:before, *:after {\n  box-sizing: inherit; }\n\nbody {\n  margin: 0;\n  background: #fff;\n  color: #333;\n  font: 16px/1.7 \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n  letter-spacing: .2px;\n  -webkit-font-smoothing: antialiased;\n  box-sizing: border-box; }\n\nh1 {\n  font-size: 2rem;\n  font-weight: 700;\n  margin: 1.275em 0 0.6em; }\n\nh2 {\n  font-size: 1.75rem;\n  font-weight: 700;\n  margin: 1.275em 0 0.3em; }\n\nh3 {\n  font-size: 1.5rem;\n  font-weight: 700;\n  margin: 1em 0 0.3em; }\n\nh4 {\n  font-size: 1.25rem;\n  font-weight: 700;\n  margin: 1.275em 0 0.85em; }\n\nh5 {\n  font-size: 1rem;\n  font-weight: 700;\n  margin: 1.275em 0 0.85em; }\n\nh6 {\n  font-size: 1rem;\n  font-weight: 700;\n  margin: 1.275em 0 0.85em;\n  color: #777; }\n\np {\n  margin: 0 0 1em; }\n\nul, ol {\n  padding: 0 0 0 2em;\n  margin: 0 0 0.85em; }\n\nblockquote {\n  margin: 0 0 0.85em;\n  padding: 0 15px;\n  color: #858585;\n  border-left: 4px solid #e5e5e5; }\n\nimg {\n  max-width: 100%; }\n\na {\n  color: #4183c4;\n  text-decoration: none; }\n  a:hover, a:focus {\n    outline: 0;\n    text-decoration: underline; }\n  a.discouraged {\n    text-decoration: line-through; }\n    a.discouraged:hover, a.discouraged:focus {\n      text-decoration: underline line-through; }\n\ntable {\n  background: #fff;\n  width: 100%;\n  border-collapse: collapse;\n  border-spacing: 0;\n  overflow: auto;\n  margin: 0 0 0.85em; }\n\ntr:nth-child(2n) {\n  background-color: #fbfbfb; }\n\nth, td {\n  padding: 6px 13px;\n  border: 1px solid #ddd; }\n\npre {\n  margin: 0 0 1.275em;\n  padding: .85em 1em;\n  overflow: auto;\n  background: #f7f7f7;\n  font-size: .85em;\n  font-family: Consolas, \"Liberation Mono\", Menlo, Courier, monospace; }\n\ncode {\n  font-family: Consolas, \"Liberation Mono\", Menlo, Courier, monospace; }\n\n.item-container p > code, .item-container li > code, .top-matter p > code, .top-matter li > code {\n  background: #f7f7f7;\n  padding: .2em; }\n  .item-container p > code:before, .item-container p > code:after, .item-container li > code:before, .item-container li > code:after, .top-matter p > code:before, .top-matter p > code:after, .top-matter li > code:before, .top-matter li > code:after {\n    letter-spacing: -.2em;\n    content: \"\\00a0\"; }\n\npre code {\n  padding: 0;\n  white-space: pre; }\n\n.content-wrapper {\n  display: flex;\n  flex-direction: column; }\n  @media (min-width: 768px) {\n    .content-wrapper {\n      flex-direction: row; } }\n.header {\n  display: flex;\n  padding: 8px;\n  font-size: 0.875em;\n  background: #444;\n  color: #999; }\n\n.header-col {\n  margin: 0;\n  padding: 0 8px; }\n\n.header-col--primary {\n  flex: 1; }\n\n.header-link {\n  color: #fff; }\n\n.header-icon {\n  padding-right: 6px;\n  vertical-align: -4px;\n  height: 16px; }\n\n.breadcrumbs {\n  font-size: 0.875em;\n  padding: 8px 16px;\n  margin: 0;\n  background: #fbfbfb;\n  border-bottom: 1px solid #ddd; }\n\n.carat {\n  height: 10px;\n  margin: 0 5px; }\n\n.navigation {\n  order: 2; }\n  @media (min-width: 768px) {\n    .navigation {\n      order: 1;\n      width: 25%;\n      max-width: 300px;\n      padding-bottom: 64px;\n      overflow: hidden;\n      word-wrap: normal;\n      background: #fbfbfb;\n      border-right: 1px solid #ddd; } }\n.nav-groups {\n  list-style-type: none;\n  padding-left: 0; }\n\n.nav-group-name {\n  border-bottom: 1px solid #ddd;\n  padding: 8px 0 8px 16px; }\n\n.nav-group-name-link {\n  color: #333; }\n\n.nav-group-tasks {\n  margin: 8px 0;\n  padding: 0 0 0 8px; }\n\n.nav-group-task {\n  font-size: 1em;\n  list-style-type: none;\n  white-space: nowrap; }\n\n.nav-group-task-link {\n  color: #808080; }\n\n.main-content {\n  order: 1; }\n  @media (min-width: 768px) {\n    .main-content {\n      order: 2;\n      flex: 1;\n      padding-bottom: 60px; } }\n.section {\n  padding: 0 32px;\n  border-bottom: 1px solid #ddd; }\n\n.section-content {\n  max-width: 834px;\n  margin: 0 auto;\n  padding: 16px 0; }\n\n.section-name {\n  color: #666;\n  display: block; }\n  .section-name p {\n    margin-bottom: inherit; }\n\n.declaration .highlight {\n  overflow-x: initial;\n  padding: 8px 0;\n  margin: 0;\n  background-color: transparent;\n  border: none; }\n\n.task-group-section {\n  border-top: 1px solid #ddd; }\n\n.task-group {\n  padding-top: 0px; }\n\n.task-name-container a[name]:before {\n  content: \"\";\n  display: block; }\n\n.section-name-container {\n  position: relative; }\n  .section-name-container .section-name-link {\n    position: absolute;\n    top: 0;\n    left: 0;\n    bottom: 0;\n    right: 0;\n    margin-bottom: 0; }\n  .section-name-container .section-name {\n    position: relative;\n    pointer-events: none;\n    z-index: 1; }\n    .section-name-container .section-name a {\n      pointer-events: auto; }\n\n.item-container {\n  padding: 0; }\n\n.item {\n  padding-top: 8px;\n  width: 100%;\n  list-style-type: none; }\n  .item a[name]:before {\n    content: \"\";\n    display: block; }\n  .item .token, .item .direct-link {\n    display: inline-block;\n    text-indent: -20px;\n    padding-left: 3px;\n    margin-left: 20px;\n    font-size: 1rem; }\n  .item .declaration-note {\n    font-size: .85em;\n    color: #808080;\n    font-style: italic; }\n\n.pointer-container {\n  border-bottom: 1px solid #ddd;\n  left: -23px;\n  padding-bottom: 13px;\n  position: relative;\n  width: 110%; }\n\n.pointer {\n  left: 21px;\n  top: 7px;\n  display: block;\n  position: absolute;\n  width: 12px;\n  height: 12px;\n  border-left: 1px solid #ddd;\n  border-top: 1px solid #ddd;\n  background: #fff;\n  transform: rotate(45deg); }\n\n.height-container {\n  display: none;\n  position: relative;\n  width: 100%;\n  overflow: hidden; }\n  .height-container .section {\n    background: #fff;\n    border: 1px solid #ddd;\n    border-top-width: 0;\n    padding-top: 10px;\n    padding-bottom: 5px;\n    padding: 8px 16px; }\n\n.aside, .language {\n  padding: 6px 12px;\n  margin: 12px 0;\n  border-left: 5px solid #dddddd;\n  overflow-y: hidden; }\n  .aside .aside-title, .language .aside-title {\n    font-size: 9px;\n    letter-spacing: 2px;\n    text-transform: uppercase;\n    padding-bottom: 0;\n    margin: 0;\n    color: #aaa;\n    -webkit-user-select: none; }\n  .aside p:last-child, .language p:last-child {\n    margin-bottom: 0; }\n\n.language {\n  border-left: 5px solid #cde9f4; }\n  .language .aside-title {\n    color: #4183c4; }\n\n.aside-warning, .aside-deprecated, .aside-unavailable {\n  border-left: 5px solid #ff6666; }\n  .aside-warning .aside-title, .aside-deprecated .aside-title, .aside-unavailable .aside-title {\n    color: #ff0000; }\n\n.graybox {\n  border-collapse: collapse;\n  width: 100%; }\n  .graybox p {\n    margin: 0;\n    word-break: break-word;\n    min-width: 50px; }\n  .graybox td {\n    border: 1px solid #ddd;\n    padding: 5px 25px 5px 10px;\n    vertical-align: middle; }\n  .graybox tr td:first-of-type {\n    text-align: right;\n    padding: 7px;\n    vertical-align: top;\n    word-break: normal;\n    width: 40px; }\n\n.slightly-smaller {\n  font-size: 0.9em; }\n\n.footer {\n  padding: 8px 16px;\n  background: #444;\n  color: #ddd;\n  font-size: 0.8em; }\n  .footer p {\n    margin: 8px 0; }\n  .footer a {\n    color: #fff; }\n\nhtml.dash .header, html.dash .breadcrumbs, html.dash .navigation {\n  display: none; }\n\nhtml.dash .height-container {\n  display: block; }\n\nform[role=search] input {\n  font: 16px/1.7 \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n  font-size: 14px;\n  line-height: 24px;\n  padding: 0 10px;\n  margin: 0;\n  border: none;\n  border-radius: 1em; }\n  .loading form[role=search] input {\n    background: white url(../img/spinner.gif) center right 4px no-repeat; }\n\nform[role=search] .tt-menu {\n  margin: 0;\n  min-width: 300px;\n  background: #fbfbfb;\n  color: #333;\n  border: 1px solid #ddd; }\n\nform[role=search] .tt-highlight {\n  font-weight: bold; }\n\nform[role=search] .tt-suggestion {\n  font: 16px/1.7 \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n  padding: 0 8px; }\n  form[role=search] .tt-suggestion span {\n    display: table-cell;\n    white-space: nowrap; }\n  form[role=search] .tt-suggestion .doc-parent-name {\n    width: 100%;\n    text-align: right;\n    font-weight: normal;\n    font-size: 0.9em;\n    padding-left: 16px; }\n\nform[role=search] .tt-suggestion:hover,\nform[role=search] .tt-suggestion.tt-cursor {\n  cursor: pointer;\n  background-color: #4183c4;\n  color: #fff; }\n\nform[role=search] .tt-suggestion:hover .doc-parent-name,\nform[role=search] .tt-suggestion.tt-cursor .doc-parent-name {\n  color: #fff; }\n"
  },
  {
    "path": "docs/docsets/SwiftJWT.docset/Contents/Resources/Documents/index.html",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n  <head>\n    <title>SwiftJWT  Reference</title>\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"css/jazzy.css\" />\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"css/highlight.css\" />\n    <meta charset=\"utf-8\">\n    <script src=\"js/jquery.min.js\" defer></script>\n    <script src=\"js/jazzy.js\" defer></script>\n    \n    <script src=\"js/lunr.min.js\" defer></script>\n    <script src=\"js/typeahead.jquery.js\" defer></script>\n    <script src=\"js/jazzy.search.js\" defer></script>\n  </head>\n  <body>\n\n\n    <a title=\"SwiftJWT  Reference\"></a>\n\n    <header class=\"header\">\n      <p class=\"header-col header-col--primary\">\n        <a class=\"header-link\" href=\"index.html\">\n          SwiftJWT 3.6.200 Docs\n        </a>\n         (100% documented)\n      </p>\n    \n      <p class=\"header-col--secondary\">\n        <form role=\"search\" action=\"search.json\">\n          <input type=\"text\" placeholder=\"Search documentation\" data-typeahead>\n        </form>\n      </p>\n    \n        <p class=\"header-col header-col--secondary\">\n          <a class=\"header-link\" href=\"https://github.com/Kitura/Swift-JWT/\">\n            <img class=\"header-icon\" src=\"img/gh.png\"/>\n            View on GitHub\n          </a>\n        </p>\n    \n    </header>\n\n    <p class=\"breadcrumbs\">\n      <a class=\"breadcrumb\" href=\"index.html\">SwiftJWT Reference</a>\n      <img class=\"carat\" src=\"img/carat.png\" />\n      SwiftJWT  Reference\n    </p>\n\n    <div class=\"content-wrapper\">\n      <nav class=\"navigation\">\n        <ul class=\"nav-groups\">\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"Classes.html\">Classes</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/ClaimsMicroProfile.html\">ClaimsMicroProfile</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/ClaimsOpenID.html\">ClaimsOpenID</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/ClaimsStandardJWT.html\">ClaimsStandardJWT</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/JWTDecoder.html\">JWTDecoder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/JWTEncoder.html\">JWTEncoder</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"Protocols.html\">Protocols</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Protocols/Claims.html\">Claims</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"Structs.html\">Structures</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Structs/AddressClaim.html\">AddressClaim</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Structs/Header.html\">Header</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Structs/JWT.html\">JWT</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Structs/JWTError.html\">JWTError</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Structs/JWTSigner.html\">JWTSigner</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Structs/JWTVerifier.html\">JWTVerifier</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Structs/ValidateClaimsResult.html\">ValidateClaimsResult</a>\n              </li>\n            </ul>\n          </li>\n        </ul>\n      </nav>\n      <article class=\"main-content\">\n\n        <section class=\"section\">\n          <div class=\"section-content top-matter\">\n            \n            <p align=\"center\">\n<a href=\"http://kitura.io/\">\n<img src=\"https://raw.githubusercontent.com/Kitura/Kitura/master/Sources/Kitura/resources/kitura-bird.svg?sanitize=true\" height=\"100\" alt=\"Kitura\">\n</a>\n</p>\n\n<p align=\"center\">\n<a href=\"https://kitura.github.io/Swift-JWT/index.html\">\n<img src=\"https://img.shields.io/badge/apidoc-SwiftJWT-1FBCE4.svg?style=flat\" alt=\"APIDoc\">\n</a>\n<a href=\"https://travis-ci.org/Kitura/Swift-JWT\">\n<img src=\"https://travis-ci.org/Kitura/Swift-JWT.svg?branch=master\" alt=\"Build Status - Master\">\n</a>\n<img src=\"https://img.shields.io/badge/os-macOS-green.svg?style=flat\" alt=\"macOS\">\n<img src=\"https://img.shields.io/badge/os-linux-green.svg?style=flat\" alt=\"Linux\">\n<img src=\"https://img.shields.io/badge/license-Apache2-blue.svg?style=flat\" alt=\"Apache 2\">\n<a href=\"http://swift-at-ibm-slack.mybluemix.net/\">\n<img src=\"http://swift-at-ibm-slack.mybluemix.net/badge.svg\" alt=\"Slack Status\">\n</a>\n</p>\n<h1 id='swiftjwt' class='heading'>SwiftJWT</h1>\n\n<p>An implementation of <a href=\"https://tools.ietf.org/html/rfc7519\">JSON Web Token</a> using Swift. JWTs offer a lightweight and compact format for transmitting information between parties, and the information can be verified and trusted due to JWTs being digitally signed.</p>\n\n<p>For more information on JSON Web Tokens, their use cases and how they work, we recommend visiting <a href=\"https://jwt.io/introduction/\">jwt.io</a>.</p>\n\n<p><strong>Reminder:</strong> JWTs sent as JWS do <strong>not</strong> encrypt data, so never send anything sensitive or confidential in a JWT. This library does not currently support JWE.</p>\n<h2 id='swift-version' class='heading'>Swift version</h2>\n\n<p>The latest version of Swift-JWT requires <strong>Swift 4.0</strong> or later. You can download this version of the Swift binaries by following this <a href=\"https://swift.org/download/\">link</a>. Compatibility with other Swift versions is not guaranteed.</p>\n<h2 id='usage' class='heading'>Usage</h2>\n<h3 id='swift-package-manager' class='heading'>Swift Package Manager</h3>\n<h4 id='add-dependencies' class='heading'>Add dependencies</h4>\n\n<p>Add the <code>Swift-JWT</code> package to the dependencies within your application’s <code>Package.swift</code> file. Substitute <code>&quot;x.x.x&quot;</code> with the latest <code>Swift-JWT</code> <a href=\"https://github.com/Kitura/Swift-JWT/releases\">release</a>.</p>\n<pre class=\"highlight swift\"><code><span class=\"o\">.</span><span class=\"nf\">package</span><span class=\"p\">(</span><span class=\"nv\">url</span><span class=\"p\">:</span> <span class=\"s\">\"https://github.com/Kitura/Swift-JWT.git\"</span><span class=\"p\">,</span> <span class=\"nv\">from</span><span class=\"p\">:</span> <span class=\"s\">\"x.x.x\"</span><span class=\"p\">)</span>\n</code></pre>\n\n<p>Add <code>SwiftJWT</code> to your target&rsquo;s dependencies:</p>\n<pre class=\"highlight swift\"><code><span class=\"o\">.</span><span class=\"nf\">target</span><span class=\"p\">(</span><span class=\"nv\">name</span><span class=\"p\">:</span> <span class=\"s\">\"example\"</span><span class=\"p\">,</span> <span class=\"nv\">dependencies</span><span class=\"p\">:</span> <span class=\"p\">[</span><span class=\"s\">\"SwiftJWT\"</span><span class=\"p\">]),</span>\n</code></pre>\n<h4 id='import-package' class='heading'>Import package</h4>\n<pre class=\"highlight swift\"><code><span class=\"kd\">import</span> <span class=\"kt\">SwiftJWT</span>\n</code></pre>\n<h3 id='cocoapods' class='heading'>Cocoapods</h3>\n\n<p>To include <code>Swift-JWT</code> in a project using CocoaPods, add <code>SwiftJWT</code> to your Podfile:</p>\n<pre class=\"highlight plaintext\"><code>pod 'SwiftJWT'\n</code></pre>\n<h2 id='getting-started' class='heading'>Getting Started</h2>\n<h3 id='the-jwt-model' class='heading'>The JWT model</h3>\n\n<p>In its compact form, a JSON Web Tokens consist of three sections of Base64Url encoded JSON, separated by dots (.).<br>\nThese section are: Headers, Claims and the Signature.\nTherefore, a JWT typically looks like the following: xxxxx.yyyyy.zzzzz</p>\n<h4 id='header' class='heading'>Header</h4>\n\n<p>The Header struct contains the fields of the JSON Web Token header as defined by <a href=\"https://tools.ietf.org/html/rfc7515#section-4\">RFC7515</a>.<br>\nThe &ldquo;typ&rdquo; header will default to &ldquo;JWT&rdquo;. The &ldquo;alg&rdquo; header will be set to the algorithm name when you sign the JWT.<br>\nThe other Header fields can be set when initializing the Header or by changing them directly on the Header object.</p>\n<pre class=\"highlight swift\"><code><span class=\"k\">let</span> <span class=\"nv\">myHeader</span> <span class=\"o\">=</span> <span class=\"kt\">Header</span><span class=\"p\">(</span><span class=\"nv\">kid</span><span class=\"p\">:</span> <span class=\"s\">\"KeyID1\"</span><span class=\"p\">)</span>\n</code></pre>\n<h4 id='claims' class='heading'>Claims</h4>\n\n<p>Claims are statements about an entity (typically, the user) and additional data.\nThe Claims are defined by creating a Swift type that conforms to the <code><a href=\"Protocols/Claims.html\">Claims</a></code> protocol. The fields of this type represent the information that will be shared using the JWT.  </p>\n\n<p>A list of recommended claims is defined in <a href=\"https://tools.ietf.org/html/rfc7519#section-4.1\">RFC7519</a>.</p>\n<pre class=\"highlight swift\"><code><span class=\"kd\">struct</span> <span class=\"kt\">MyClaims</span><span class=\"p\">:</span> <span class=\"kt\">Claims</span> <span class=\"p\">{</span>\n    <span class=\"k\">let</span> <span class=\"nv\">iss</span><span class=\"p\">:</span> <span class=\"kt\">String</span>\n    <span class=\"k\">let</span> <span class=\"nv\">sub</span><span class=\"p\">:</span> <span class=\"kt\">String</span>\n    <span class=\"k\">let</span> <span class=\"nv\">exp</span><span class=\"p\">:</span> <span class=\"kt\">Date</span>\n    <span class=\"k\">let</span> <span class=\"nv\">admin</span><span class=\"p\">:</span> <span class=\"kt\">Bool</span>\n<span class=\"p\">}</span>\n<span class=\"k\">let</span> <span class=\"nv\">myClaims</span> <span class=\"o\">=</span> <span class=\"kt\">MyClaims</span><span class=\"p\">(</span><span class=\"nv\">iss</span><span class=\"p\">:</span> <span class=\"s\">\"Kitura\"</span><span class=\"p\">,</span> <span class=\"nv\">sub</span><span class=\"p\">:</span> <span class=\"s\">\"John\"</span><span class=\"p\">,</span> <span class=\"nv\">exp</span><span class=\"p\">:</span> <span class=\"kt\">Date</span><span class=\"p\">(</span><span class=\"nv\">timeIntervalSinceNow</span><span class=\"p\">:</span> <span class=\"mi\">3600</span><span class=\"p\">),</span> <span class=\"nv\">admin</span><span class=\"p\">:</span> <span class=\"kc\">true</span><span class=\"p\">)</span>\n</code></pre>\n<h5 id='claimsexamples' class='heading'>ClaimsExamples</h5>\n\n<p>This library includes some example <code><a href=\"Protocols/Claims.html\">Claims</a></code> structs as defined by their online specifications:</p>\n\n<ul>\n<li><code><a href=\"Classes/ClaimsStandardJWT.html\">ClaimsStandardJWT</a></code> as defined in <a href=\"https://tools.ietf.org/html/rfc7519#section-4.1\">RFC7519</a>.</li>\n<li><code><a href=\"Classes/ClaimsMicroProfile.html\">ClaimsMicroProfile</a></code> as defined <a href=\"http://microprofile.io/project/eclipse/microprofile-jwt-auth/spec/src/main/asciidoc/interoperability.asciidoc\">here</a>.</li>\n<li><code>ClaimsOpenID.swift</code> as defined <a href=\"https://openid.net/specs/openid-connect-core-1_0.html#StandardClaims\">here</a>.</li>\n</ul>\n<h4 id='jwt' class='heading'>JWT</h4>\n\n<p>The JWT struct represents the <code><a href=\"Structs/Header.html\">Header</a></code> and <code><a href=\"Protocols/Claims.html\">Claims</a></code> of a JSON Web Token.<br>\nYou can initialize a JWT by decoding a JWT String, or by providing the JWT Header and Claims.</p>\n<pre class=\"highlight swift\"><code><span class=\"k\">let</span> <span class=\"nv\">myJWT</span> <span class=\"o\">=</span> <span class=\"kt\">JWT</span><span class=\"p\">(</span><span class=\"nv\">header</span><span class=\"p\">:</span> <span class=\"n\">myHeader</span><span class=\"p\">,</span> <span class=\"nv\">claims</span><span class=\"p\">:</span> <span class=\"n\">myClaims</span><span class=\"p\">)</span>\n</code></pre>\n<h3 id='signing-and-verifying-json-web-tokens' class='heading'>Signing and Verifying JSON web tokens</h3>\n<h4 id='creating-public-and-private-keys' class='heading'>Creating public and private keys</h4>\n\n<p>To sign and verify a JWT using an RSA algorithm, you must provide a public and private key. This could be the contents of a .key file generated via the following Terminal commands:</p>\n<pre class=\"highlight plaintext\"><code>$ ssh-keygen -t rsa -b 4096 -m PEM -f privateKey.key\n# Don't add a passphrase\n$ openssl rsa -in privateKey.key -pubout -outform PEM -out privateKey.key.pub\n</code></pre>\n\n<p>This will create a public and private key pair on your system, and the contents of the private key can be passed into a Swift variable using the following code:</p>\n<pre class=\"highlight swift\"><code><span class=\"k\">let</span> <span class=\"nv\">privateKeyPath</span> <span class=\"o\">=</span> <span class=\"kt\">URL</span><span class=\"p\">(</span><span class=\"nv\">fileURLWithPath</span><span class=\"p\">:</span> <span class=\"nf\">getAbsolutePath</span><span class=\"p\">(</span><span class=\"nv\">relativePath</span><span class=\"p\">:</span> <span class=\"s\">\"/path/to/privateKey.key\"</span><span class=\"p\">))</span>\n<span class=\"k\">let</span> <span class=\"nv\">privateKey</span><span class=\"p\">:</span> <span class=\"kt\">Data</span> <span class=\"o\">=</span> <span class=\"k\">try</span> <span class=\"kt\">Data</span><span class=\"p\">(</span><span class=\"nv\">contentsOf</span><span class=\"p\">:</span> <span class=\"n\">privateKeyPath</span><span class=\"p\">,</span> <span class=\"nv\">options</span><span class=\"p\">:</span> <span class=\"o\">.</span><span class=\"n\">alwaysMapped</span><span class=\"p\">)</span>\n<span class=\"k\">let</span> <span class=\"nv\">publicKeyPath</span> <span class=\"o\">=</span> <span class=\"kt\">URL</span><span class=\"p\">(</span><span class=\"nv\">fileURLWithPath</span><span class=\"p\">:</span> <span class=\"nf\">getAbsolutePath</span><span class=\"p\">(</span><span class=\"nv\">relativePath</span><span class=\"p\">:</span> <span class=\"s\">\"/path/to/publicKey.key\"</span><span class=\"p\">))</span>\n<span class=\"k\">let</span> <span class=\"nv\">publicKey</span><span class=\"p\">:</span> <span class=\"kt\">Data</span> <span class=\"o\">=</span> <span class=\"k\">try</span> <span class=\"kt\">Data</span><span class=\"p\">(</span><span class=\"nv\">contentsOf</span><span class=\"p\">:</span> <span class=\"n\">publicKeyPath</span><span class=\"p\">,</span> <span class=\"nv\">options</span><span class=\"p\">:</span> <span class=\"o\">.</span><span class=\"n\">alwaysMapped</span><span class=\"p\">)</span>\n</code></pre>\n\n<p>For details on creating elliptic curve public and private keys, view the <a href=\"https://github.com/Kitura/BlueECC\">BlueECC README.txt</a>.</p>\n<h4 id='sign-a-jwt-using-a-jwtsigner' class='heading'>Sign a JWT using a JWTSigner</h4>\n\n<p>The struct JWTSigner contains the algorithms that can be used to sign a JWT.</p>\n\n<p>Initialize a JWTSigner using the static function corresponding to the desired RSA algorithm:</p>\n<pre class=\"highlight swift\"><code><span class=\"k\">let</span> <span class=\"nv\">jwtSigner</span> <span class=\"o\">=</span> <span class=\"kt\">JWTSigner</span><span class=\"o\">.</span><span class=\"nf\">rs256</span><span class=\"p\">(</span><span class=\"nv\">privateKey</span><span class=\"p\">:</span> <span class=\"n\">privateKey</span><span class=\"p\">)</span>\n</code></pre>\n\n<p>To generate a signed JWT string, call the <code>sign</code> function on your JWT instance, passing in a JWTSigner:</p>\n<pre class=\"highlight swift\"><code><span class=\"k\">let</span> <span class=\"nv\">signedJWT</span> <span class=\"o\">=</span> <span class=\"k\">try</span> <span class=\"n\">myJWT</span><span class=\"o\">.</span><span class=\"nf\">sign</span><span class=\"p\">(</span><span class=\"nv\">using</span><span class=\"p\">:</span> <span class=\"n\">jwtSigner</span><span class=\"p\">)</span>\n</code></pre>\n\n<p>The resulting <code>signedJWT</code> will be a <code>String</code> of the form:</p>\n<pre class=\"highlight plaintext\"><code>&lt;encoded header&gt;.&lt;encoded claims&gt;.&lt;signature&gt;\n</code></pre>\n\n<p><strong>Note:</strong> The sign function sets the alg (algorithm) field of the header.</p>\n<h4 id='verify-a-jwt-using-jwtverifier' class='heading'>Verify a JWT using JWTVerifier</h4>\n\n<p>The struct JWTVerifier contains the algorithms that can be used to verify a JWT.</p>\n\n<p>Initialize a JWTVerifier using the static function corresponding to the desired RSA algorithm:</p>\n<pre class=\"highlight swift\"><code><span class=\"k\">let</span> <span class=\"nv\">jwtVerifier</span> <span class=\"o\">=</span> <span class=\"kt\">JWTVerifier</span><span class=\"o\">.</span><span class=\"nf\">rs256</span><span class=\"p\">(</span><span class=\"nv\">publicKey</span><span class=\"p\">:</span> <span class=\"n\">publicKey</span><span class=\"p\">)</span>\n</code></pre>\n\n<p>To verify a signed JWT string, call the static <code>verify</code> function, passing in your JWT string and the JWTVerifier:</p>\n<pre class=\"highlight swift\"><code><span class=\"k\">let</span> <span class=\"nv\">verified</span> <span class=\"o\">=</span> <span class=\"kt\">JWT</span><span class=\"o\">&lt;</span><span class=\"kt\">MyClaims</span><span class=\"o\">&gt;.</span><span class=\"nf\">verify</span><span class=\"p\">(</span><span class=\"n\">signedJWT</span><span class=\"p\">,</span> <span class=\"nv\">using</span><span class=\"p\">:</span> <span class=\"n\">jwtVerifier</span><span class=\"p\">)</span>\n</code></pre>\n\n<p>The <code>verified</code> field will be a <code>bool</code> that is true if the signature is verified.</p>\n<h4 id='supported-algorithms' class='heading'>Supported Algorithms</h4>\n\n<p>The supported algorithms for signing and verifying JWTs are:</p>\n\n<ul>\n<li>RS256 - RSASSA-PKCS1-v1_5 using SHA-256</li>\n<li>RS384 - RSASSA-PKCS1-v1_5 using SHA-384</li>\n<li>RS512 - RSASSA-PKCS1-v1_5 using SHA-512</li>\n<li>HS256 - HMAC using using SHA-256</li>\n<li>HS384 - HMAC using using SHA-384</li>\n<li>HS512 - HMAC using using SHA-512</li>\n<li>ES256 - ECDSA using using SHA-256 and a P-256 curve</li>\n<li>ES384 - ECDSA using using SHA-384 and a P-384 curve</li>\n<li>ES512 - ECDSA using using SHA-512 and a P-521 curve</li>\n<li>PS256 - RSA-PSS using SHA-256</li>\n<li>PS384 - RSA-PSS using SHA-384</li>\n<li>PS512 - RSA-PSS using SHA-512</li>\n<li>none - Don&rsquo;t sign or verify the JWT</li>\n</ul>\n\n<p>Note: ECDSA and RSA-PSS algorithms require a minimum Swift version of 4.1.</p>\n<h3 id='validate-claims' class='heading'>Validate claims</h3>\n\n<p>The <code>validateClaims</code> function validates the standard <code>Date</code> claims of a JWT instance.\nThe following claims are validated if they are present in the <code><a href=\"Protocols/Claims.html\">Claims</a></code> object:</p>\n\n<ul>\n<li>exp (expiration date)</li>\n<li>nbf (not before date)</li>\n<li>iat (issued at date)</li>\n</ul>\n\n<p>The method returns <code><a href=\"Structs/ValidateClaimsResult.html\">ValidateClaimsResult</a></code> - an struct that list the various reasons for validation failure.\nIf the validation succeeds <code><a href=\"Structs/ValidateClaimsResult.html#/s:8SwiftJWT20ValidateClaimsResultV7successACvpZ\">ValidateClaimsResult.success</a></code> is returned.\nThe <code>leeway</code> parameter is the <code>TimeInterval</code> in seconds that a standard <code>Date</code> claim will be valid outside of the specified time. This can be used to account for clock skew between issuers and verifiers.</p>\n<pre class=\"highlight swift\"><code><span class=\"k\">let</span> <span class=\"nv\">validationResult</span> <span class=\"o\">=</span> <span class=\"n\">verified</span><span class=\"o\">.</span><span class=\"nf\">validateClaims</span><span class=\"p\">(</span><span class=\"nv\">leeway</span><span class=\"p\">:</span> <span class=\"mi\">10</span><span class=\"p\">)</span>\n<span class=\"k\">if</span> <span class=\"n\">validationResult</span> <span class=\"o\">!=</span> <span class=\"o\">.</span><span class=\"n\">success</span> <span class=\"p\">{</span>\n    <span class=\"nf\">print</span><span class=\"p\">(</span><span class=\"s\">\"Claims validation failed: \"</span><span class=\"p\">,</span> <span class=\"n\">validationResult</span><span class=\"p\">)</span>\n<span class=\"p\">}</span>\n</code></pre>\n<h3 id='decode-a-jwt-from-a-jwt-string' class='heading'>Decode a JWT from a JWT string</h3>\n\n<p>A JWT struct can be initialized from a JWT string.  If a JWTVerifier is provided it will be used to verify the signature before initialization</p>\n<pre class=\"highlight swift\"><code><span class=\"k\">let</span> <span class=\"nv\">newJWT</span> <span class=\"o\">=</span> <span class=\"k\">try</span> <span class=\"kt\">JWT</span><span class=\"o\">&lt;</span><span class=\"kt\">MyClaims</span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"nv\">jwtString</span><span class=\"p\">:</span> <span class=\"n\">signedJWT</span><span class=\"p\">,</span> <span class=\"nv\">verifier</span><span class=\"p\">:</span> <span class=\"n\">jwtVerifier</span><span class=\"p\">)</span>\n</code></pre>\n<h3 id='jwtencoder-and-jwtdecoder' class='heading'>JWTEncoder and JWTDecoder</h3>\n\n<p>The JWTEncoder and JWTDecoder classes encode and decode JWT Strings using the same API as JSONEncoder and JSONDecoder:</p>\n<pre class=\"highlight swift\"><code> <span class=\"k\">let</span> <span class=\"nv\">jwtEncoder</span> <span class=\"o\">=</span> <span class=\"kt\">JWTEncoder</span><span class=\"p\">(</span><span class=\"nv\">jwtSigner</span><span class=\"p\">:</span> <span class=\"n\">jwtSigner</span><span class=\"p\">)</span>\n <span class=\"k\">let</span> <span class=\"nv\">jwtString</span> <span class=\"o\">=</span> <span class=\"k\">try</span> <span class=\"n\">jwtEncoder</span><span class=\"o\">.</span><span class=\"nf\">encodeToString</span><span class=\"p\">(</span><span class=\"n\">myJWT</span><span class=\"p\">)</span>\n\n <span class=\"k\">let</span> <span class=\"nv\">jwtDecoder</span> <span class=\"o\">=</span> <span class=\"kt\">JWTDecoder</span><span class=\"p\">(</span><span class=\"nv\">jwtVerifier</span><span class=\"p\">:</span> <span class=\"n\">jwtVerifier</span><span class=\"p\">)</span>\n <span class=\"k\">let</span> <span class=\"nv\">jwt</span> <span class=\"o\">=</span> <span class=\"k\">try</span> <span class=\"n\">jwtDecoder</span><span class=\"o\">.</span><span class=\"nf\">decode</span><span class=\"p\">(</span><span class=\"kt\">JWT</span><span class=\"o\">&lt;</span><span class=\"kt\">MyClaims</span><span class=\"o\">&gt;.</span><span class=\"k\">self</span><span class=\"p\">,</span> <span class=\"nv\">fromString</span><span class=\"p\">:</span> <span class=\"n\">jwtString</span><span class=\"p\">)</span>\n</code></pre>\n\n<p>Because JWTEncoder and JWTDecoder conform to <a href=\"https://github.com/Kitura/KituraContracts/blob/master/Sources/KituraContracts/Contracts.swift\">KituraContract&rsquo;s</a> BodyEncoder and BodyDecoder protocols, they can be used as a <a href=\"https://developer.ibm.com/swift/2018/09/01/kitura-custom-encoders-and-decoders/\">custom coder</a> in Codable routes for sending and receiving JWTs:</p>\n<pre class=\"highlight swift\"><code> <span class=\"n\">router</span><span class=\"o\">.</span><span class=\"n\">encoders</span><span class=\"p\">[</span><span class=\"kt\">MediaType</span><span class=\"p\">(</span><span class=\"nv\">type</span><span class=\"p\">:</span> <span class=\"o\">.</span><span class=\"n\">application</span><span class=\"p\">,</span> <span class=\"nv\">subType</span><span class=\"p\">:</span> <span class=\"s\">\"jwt\"</span><span class=\"p\">)]</span> <span class=\"o\">=</span> <span class=\"p\">{</span> <span class=\"k\">return</span> <span class=\"n\">jwtEncoder</span> <span class=\"p\">}</span>\n <span class=\"n\">router</span><span class=\"o\">.</span><span class=\"n\">decoders</span><span class=\"p\">[</span><span class=\"kt\">MediaType</span><span class=\"p\">(</span><span class=\"nv\">type</span><span class=\"p\">:</span> <span class=\"o\">.</span><span class=\"n\">application</span><span class=\"p\">,</span> <span class=\"nv\">subType</span><span class=\"p\">:</span> <span class=\"s\">\"jwt\"</span><span class=\"p\">)]</span> <span class=\"o\">=</span> <span class=\"p\">{</span> <span class=\"k\">return</span> <span class=\"n\">jwtDecoder</span> <span class=\"p\">}</span>\n</code></pre>\n\n<p>This allows for the use of JWT&rsquo;s in information exchange. By sending and receiving JWT&rsquo;s you can ensure the sending is who they say they are and verify the content hasn&rsquo;t been tampered with.</p>\n<h2 id='api-documentation' class='heading'>API Documentation</h2>\n\n<p>For more information visit our <a href=\"https://kitura.github.io/Swift-JWT/index.html\">API reference</a>.</p>\n<h2 id='community' class='heading'>Community</h2>\n\n<p>We love to talk server-side Swift, and Kitura. Join our <a href=\"http://swift-at-ibm-slack.mybluemix.net/\">Slack</a> to meet the team!</p>\n<h2 id='license' class='heading'>License</h2>\n\n<p>This library is licensed under Apache 2.0. Full license text is available in <a href=\"https://github.com/Kitura/Swift-JWT/blob/master/LICENSE\">LICENSE</a>.</p>\n\n          </div>\n        </section>\n\n\n      </article>\n    </div>\n    <section class=\"footer\">\n      <p>&copy; 2020 <a class=\"link\" href=\"https://github.com/Kitura/Swift-JWT\" target=\"_blank\" rel=\"external\">IBM &amp; Kitura Project Contributors</a>. All rights reserved. (Last updated: 2020-11-25)</p>\n      <p>Generated by <a class=\"link\" href=\"https://github.com/realm/jazzy\" target=\"_blank\" rel=\"external\">jazzy ♪♫ v0.13.6</a>, a <a class=\"link\" href=\"https://realm.io\" target=\"_blank\" rel=\"external\">Realm</a> project.</p>\n    </section>\n  </body>\n</div>\n</html>\n"
  },
  {
    "path": "docs/docsets/SwiftJWT.docset/Contents/Resources/Documents/js/jazzy.js",
    "content": "window.jazzy = {'docset': false}\nif (typeof window.dash != 'undefined') {\n  document.documentElement.className += ' dash'\n  window.jazzy.docset = true\n}\nif (navigator.userAgent.match(/xcode/i)) {\n  document.documentElement.className += ' xcode'\n  window.jazzy.docset = true\n}\n\nfunction toggleItem($link, $content) {\n  var animationDuration = 300;\n  $link.toggleClass('token-open');\n  $content.slideToggle(animationDuration);\n}\n\nfunction itemLinkToContent($link) {\n  return $link.parent().parent().next();\n}\n\n// On doc load + hash-change, open any targetted item\nfunction openCurrentItemIfClosed() {\n  if (window.jazzy.docset) {\n    return;\n  }\n  var $link = $(`a[name=\"${location.hash.substring(1)}\"]`).nextAll('.token');\n  $content = itemLinkToContent($link);\n  if ($content.is(':hidden')) {\n    toggleItem($link, $content);\n  }\n}\n\n$(openCurrentItemIfClosed);\n$(window).on('hashchange', openCurrentItemIfClosed);\n\n// On item link ('token') click, toggle its discussion\n$('.token').on('click', function(event) {\n  if (window.jazzy.docset) {\n    return;\n  }\n  var $link = $(this);\n  toggleItem($link, itemLinkToContent($link));\n\n  // Keeps the document from jumping to the hash.\n  var href = $link.attr('href');\n  if (history.pushState) {\n    history.pushState({}, '', href);\n  } else {\n    location.hash = href;\n  }\n  event.preventDefault();\n});\n\n// Clicks on links to the current, closed, item need to open the item\n$(\"a:not('.token')\").on('click', function() {\n  if (location == this.href) {\n    openCurrentItemIfClosed();\n  }\n});\n\n// KaTeX rendering\nif (\"katex\" in window) {\n  $($('.math').each( (_, element) => {\n    katex.render(element.textContent, element, {\n      displayMode: $(element).hasClass('m-block'),\n      throwOnError: false,\n      trust: true\n    });\n  }))\n}\n"
  },
  {
    "path": "docs/docsets/SwiftJWT.docset/Contents/Resources/Documents/js/jazzy.search.js",
    "content": "$(function(){\n  var $typeahead = $('[data-typeahead]');\n  var $form = $typeahead.parents('form');\n  var searchURL = $form.attr('action');\n\n  function displayTemplate(result) {\n    return result.name;\n  }\n\n  function suggestionTemplate(result) {\n    var t = '<div class=\"list-group-item clearfix\">';\n    t += '<span class=\"doc-name\">' + result.name + '</span>';\n    if (result.parent_name) {\n     t += '<span class=\"doc-parent-name label\">' + result.parent_name + '</span>';\n    }\n    t += '</div>';\n    return t;\n  }\n\n  $typeahead.one('focus', function() {\n    $form.addClass('loading');\n\n    $.getJSON(searchURL).then(function(searchData) {\n      const searchIndex = lunr(function() {\n        this.ref('url');\n        this.field('name');\n        this.field('abstract');\n        for (const [url, doc] of Object.entries(searchData)) {\n          this.add({url: url, name: doc.name, abstract: doc.abstract});\n        }\n      });\n\n      $typeahead.typeahead(\n        {\n          highlight: true,\n          minLength: 3,\n          autoselect: true\n        },\n        {\n          limit: 10,\n          display: displayTemplate,\n          templates: { suggestion: suggestionTemplate },\n          source: function(query, sync) {\n            const lcSearch = query.toLowerCase();\n            const results = searchIndex.query(function(q) {\n                q.term(lcSearch, { boost: 100 });\n                q.term(lcSearch, {\n                  boost: 10,\n                  wildcard: lunr.Query.wildcard.TRAILING\n                });\n            }).map(function(result) {\n              var doc = searchData[result.ref];\n              doc.url = result.ref;\n              return doc;\n            });\n            sync(results);\n          }\n        }\n      );\n      $form.removeClass('loading');\n      $typeahead.trigger('focus');\n    });\n  });\n\n  var baseURL = searchURL.slice(0, -\"search.json\".length);\n\n  $typeahead.on('typeahead:select', function(e, result) {\n    window.location = baseURL + result.url;\n  });\n});\n"
  },
  {
    "path": "docs/docsets/SwiftJWT.docset/Contents/Resources/Documents/js/typeahead.jquery.js",
    "content": "/*!\n * typeahead.js 1.3.1\n * https://github.com/corejavascript/typeahead.js\n * Copyright 2013-2020 Twitter, Inc. and other contributors; Licensed MIT\n */\n\n\n(function(root, factory) {\n    if (typeof define === \"function\" && define.amd) {\n        define([ \"jquery\" ], function(a0) {\n            return factory(a0);\n        });\n    } else if (typeof module === \"object\" && module.exports) {\n        module.exports = factory(require(\"jquery\"));\n    } else {\n        factory(root[\"jQuery\"]);\n    }\n})(this, function($) {\n    var _ = function() {\n        \"use strict\";\n        return {\n            isMsie: function() {\n                return /(msie|trident)/i.test(navigator.userAgent) ? navigator.userAgent.match(/(msie |rv:)(\\d+(.\\d+)?)/i)[2] : false;\n            },\n            isBlankString: function(str) {\n                return !str || /^\\s*$/.test(str);\n            },\n            escapeRegExChars: function(str) {\n                return str.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g, \"\\\\$&\");\n            },\n            isString: function(obj) {\n                return typeof obj === \"string\";\n            },\n            isNumber: function(obj) {\n                return typeof obj === \"number\";\n            },\n            isArray: $.isArray,\n            isFunction: $.isFunction,\n            isObject: $.isPlainObject,\n            isUndefined: function(obj) {\n                return typeof obj === \"undefined\";\n            },\n            isElement: function(obj) {\n                return !!(obj && obj.nodeType === 1);\n            },\n            isJQuery: function(obj) {\n                return obj instanceof $;\n            },\n            toStr: function toStr(s) {\n                return _.isUndefined(s) || s === null ? \"\" : s + \"\";\n            },\n            bind: $.proxy,\n            each: function(collection, cb) {\n                $.each(collection, reverseArgs);\n                function reverseArgs(index, value) {\n                    return cb(value, index);\n                }\n            },\n            map: $.map,\n            filter: $.grep,\n            every: function(obj, test) {\n                var result = true;\n                if (!obj) {\n                    return result;\n                }\n                $.each(obj, function(key, val) {\n                    if (!(result = test.call(null, val, key, obj))) {\n                        return false;\n                    }\n                });\n                return !!result;\n            },\n            some: function(obj, test) {\n                var result = false;\n                if (!obj) {\n                    return result;\n                }\n                $.each(obj, function(key, val) {\n                    if (result = test.call(null, val, key, obj)) {\n                        return false;\n                    }\n                });\n                return !!result;\n            },\n            mixin: $.extend,\n            identity: function(x) {\n                return x;\n            },\n            clone: function(obj) {\n                return $.extend(true, {}, obj);\n            },\n            getIdGenerator: function() {\n                var counter = 0;\n                return function() {\n                    return counter++;\n                };\n            },\n            templatify: function templatify(obj) {\n                return $.isFunction(obj) ? obj : template;\n                function template() {\n                    return String(obj);\n                }\n            },\n            defer: function(fn) {\n                setTimeout(fn, 0);\n            },\n            debounce: function(func, wait, immediate) {\n                var timeout, result;\n                return function() {\n                    var context = this, args = arguments, later, callNow;\n                    later = function() {\n                        timeout = null;\n                        if (!immediate) {\n                            result = func.apply(context, args);\n                        }\n                    };\n                    callNow = immediate && !timeout;\n                    clearTimeout(timeout);\n                    timeout = setTimeout(later, wait);\n                    if (callNow) {\n                        result = func.apply(context, args);\n                    }\n                    return result;\n                };\n            },\n            throttle: function(func, wait) {\n                var context, args, timeout, result, previous, later;\n                previous = 0;\n                later = function() {\n                    previous = new Date();\n                    timeout = null;\n                    result = func.apply(context, args);\n                };\n                return function() {\n                    var now = new Date(), remaining = wait - (now - previous);\n                    context = this;\n                    args = arguments;\n                    if (remaining <= 0) {\n                        clearTimeout(timeout);\n                        timeout = null;\n                        previous = now;\n                        result = func.apply(context, args);\n                    } else if (!timeout) {\n                        timeout = setTimeout(later, remaining);\n                    }\n                    return result;\n                };\n            },\n            stringify: function(val) {\n                return _.isString(val) ? val : JSON.stringify(val);\n            },\n            guid: function() {\n                function _p8(s) {\n                    var p = (Math.random().toString(16) + \"000000000\").substr(2, 8);\n                    return s ? \"-\" + p.substr(0, 4) + \"-\" + p.substr(4, 4) : p;\n                }\n                return \"tt-\" + _p8() + _p8(true) + _p8(true) + _p8();\n            },\n            noop: function() {}\n        };\n    }();\n    var WWW = function() {\n        \"use strict\";\n        var defaultClassNames = {\n            wrapper: \"twitter-typeahead\",\n            input: \"tt-input\",\n            hint: \"tt-hint\",\n            menu: \"tt-menu\",\n            dataset: \"tt-dataset\",\n            suggestion: \"tt-suggestion\",\n            selectable: \"tt-selectable\",\n            empty: \"tt-empty\",\n            open: \"tt-open\",\n            cursor: \"tt-cursor\",\n            highlight: \"tt-highlight\"\n        };\n        return build;\n        function build(o) {\n            var www, classes;\n            classes = _.mixin({}, defaultClassNames, o);\n            www = {\n                css: buildCss(),\n                classes: classes,\n                html: buildHtml(classes),\n                selectors: buildSelectors(classes)\n            };\n            return {\n                css: www.css,\n                html: www.html,\n                classes: www.classes,\n                selectors: www.selectors,\n                mixin: function(o) {\n                    _.mixin(o, www);\n                }\n            };\n        }\n        function buildHtml(c) {\n            return {\n                wrapper: '<span class=\"' + c.wrapper + '\"></span>',\n                menu: '<div role=\"listbox\" class=\"' + c.menu + '\"></div>'\n            };\n        }\n        function buildSelectors(classes) {\n            var selectors = {};\n            _.each(classes, function(v, k) {\n                selectors[k] = \".\" + v;\n            });\n            return selectors;\n        }\n        function buildCss() {\n            var css = {\n                wrapper: {\n                    position: \"relative\",\n                    display: \"inline-block\"\n                },\n                hint: {\n                    position: \"absolute\",\n                    top: \"0\",\n                    left: \"0\",\n                    borderColor: \"transparent\",\n                    boxShadow: \"none\",\n                    opacity: \"1\"\n                },\n                input: {\n                    position: \"relative\",\n                    verticalAlign: \"top\",\n                    backgroundColor: \"transparent\"\n                },\n                inputWithNoHint: {\n                    position: \"relative\",\n                    verticalAlign: \"top\"\n                },\n                menu: {\n                    position: \"absolute\",\n                    top: \"100%\",\n                    left: \"0\",\n                    zIndex: \"100\",\n                    display: \"none\"\n                },\n                ltr: {\n                    left: \"0\",\n                    right: \"auto\"\n                },\n                rtl: {\n                    left: \"auto\",\n                    right: \" 0\"\n                }\n            };\n            if (_.isMsie()) {\n                _.mixin(css.input, {\n                    backgroundImage: \"url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)\"\n                });\n            }\n            return css;\n        }\n    }();\n    var EventBus = function() {\n        \"use strict\";\n        var namespace, deprecationMap;\n        namespace = \"typeahead:\";\n        deprecationMap = {\n            render: \"rendered\",\n            cursorchange: \"cursorchanged\",\n            select: \"selected\",\n            autocomplete: \"autocompleted\"\n        };\n        function EventBus(o) {\n            if (!o || !o.el) {\n                $.error(\"EventBus initialized without el\");\n            }\n            this.$el = $(o.el);\n        }\n        _.mixin(EventBus.prototype, {\n            _trigger: function(type, args) {\n                var $e = $.Event(namespace + type);\n                this.$el.trigger.call(this.$el, $e, args || []);\n                return $e;\n            },\n            before: function(type) {\n                var args, $e;\n                args = [].slice.call(arguments, 1);\n                $e = this._trigger(\"before\" + type, args);\n                return $e.isDefaultPrevented();\n            },\n            trigger: function(type) {\n                var deprecatedType;\n                this._trigger(type, [].slice.call(arguments, 1));\n                if (deprecatedType = deprecationMap[type]) {\n                    this._trigger(deprecatedType, [].slice.call(arguments, 1));\n                }\n            }\n        });\n        return EventBus;\n    }();\n    var EventEmitter = function() {\n        \"use strict\";\n        var splitter = /\\s+/, nextTick = getNextTick();\n        return {\n            onSync: onSync,\n            onAsync: onAsync,\n            off: off,\n            trigger: trigger\n        };\n        function on(method, types, cb, context) {\n            var type;\n            if (!cb) {\n                return this;\n            }\n            types = types.split(splitter);\n            cb = context ? bindContext(cb, context) : cb;\n            this._callbacks = this._callbacks || {};\n            while (type = types.shift()) {\n                this._callbacks[type] = this._callbacks[type] || {\n                    sync: [],\n                    async: []\n                };\n                this._callbacks[type][method].push(cb);\n            }\n            return this;\n        }\n        function onAsync(types, cb, context) {\n            return on.call(this, \"async\", types, cb, context);\n        }\n        function onSync(types, cb, context) {\n            return on.call(this, \"sync\", types, cb, context);\n        }\n        function off(types) {\n            var type;\n            if (!this._callbacks) {\n                return this;\n            }\n            types = types.split(splitter);\n            while (type = types.shift()) {\n                delete this._callbacks[type];\n            }\n            return this;\n        }\n        function trigger(types) {\n            var type, callbacks, args, syncFlush, asyncFlush;\n            if (!this._callbacks) {\n                return this;\n            }\n            types = types.split(splitter);\n            args = [].slice.call(arguments, 1);\n            while ((type = types.shift()) && (callbacks = this._callbacks[type])) {\n                syncFlush = getFlush(callbacks.sync, this, [ type ].concat(args));\n                asyncFlush = getFlush(callbacks.async, this, [ type ].concat(args));\n                syncFlush() && nextTick(asyncFlush);\n            }\n            return this;\n        }\n        function getFlush(callbacks, context, args) {\n            return flush;\n            function flush() {\n                var cancelled;\n                for (var i = 0, len = callbacks.length; !cancelled && i < len; i += 1) {\n                    cancelled = callbacks[i].apply(context, args) === false;\n                }\n                return !cancelled;\n            }\n        }\n        function getNextTick() {\n            var nextTickFn;\n            if (window.setImmediate) {\n                nextTickFn = function nextTickSetImmediate(fn) {\n                    setImmediate(function() {\n                        fn();\n                    });\n                };\n            } else {\n                nextTickFn = function nextTickSetTimeout(fn) {\n                    setTimeout(function() {\n                        fn();\n                    }, 0);\n                };\n            }\n            return nextTickFn;\n        }\n        function bindContext(fn, context) {\n            return fn.bind ? fn.bind(context) : function() {\n                fn.apply(context, [].slice.call(arguments, 0));\n            };\n        }\n    }();\n    var highlight = function(doc) {\n        \"use strict\";\n        var defaults = {\n            node: null,\n            pattern: null,\n            tagName: \"strong\",\n            className: null,\n            wordsOnly: false,\n            caseSensitive: false,\n            diacriticInsensitive: false\n        };\n        var accented = {\n            A: \"[AaªÀ-Åà-åĀ-ąǍǎȀ-ȃȦȧᴬᵃḀḁẚẠ-ảₐ℀℁℻⒜Ⓐⓐ㍱-㍴㎀-㎄㎈㎉㎩-㎯㏂㏊㏟㏿Ａａ]\",\n            B: \"[BbᴮᵇḂ-ḇℬ⒝Ⓑⓑ㍴㎅-㎇㏃㏈㏔㏝Ｂｂ]\",\n            C: \"[CcÇçĆ-čᶜ℀ℂ℃℅℆ℭⅭⅽ⒞Ⓒⓒ㍶㎈㎉㎝㎠㎤㏄-㏇Ｃｃ]\",\n            D: \"[DdĎďǄ-ǆǱ-ǳᴰᵈḊ-ḓⅅⅆⅮⅾ⒟Ⓓⓓ㋏㍲㍷-㍹㎗㎭-㎯㏅㏈Ｄｄ]\",\n            E: \"[EeÈ-Ëè-ëĒ-ěȄ-ȇȨȩᴱᵉḘ-ḛẸ-ẽₑ℡ℯℰⅇ⒠Ⓔⓔ㉐㋍㋎Ｅｅ]\",\n            F: \"[FfᶠḞḟ℉ℱ℻⒡Ⓕⓕ㎊-㎌㎙ﬀ-ﬄＦｆ]\",\n            G: \"[GgĜ-ģǦǧǴǵᴳᵍḠḡℊ⒢Ⓖⓖ㋌㋍㎇㎍-㎏㎓㎬㏆㏉㏒㏿Ｇｇ]\",\n            H: \"[HhĤĥȞȟʰᴴḢ-ḫẖℋ-ℎ⒣Ⓗⓗ㋌㍱㎐-㎔㏊㏋㏗Ｈｈ]\",\n            I: \"[IiÌ-Ïì-ïĨ-İĲĳǏǐȈ-ȋᴵᵢḬḭỈ-ịⁱℐℑℹⅈⅠ-ⅣⅥ-ⅨⅪⅫⅰ-ⅳⅵ-ⅸⅺⅻ⒤Ⓘⓘ㍺㏌㏕ﬁﬃＩｉ]\",\n            J: \"[JjĲ-ĵǇ-ǌǰʲᴶⅉ⒥ⒿⓙⱼＪｊ]\",\n            K: \"[KkĶķǨǩᴷᵏḰ-ḵK⒦Ⓚⓚ㎄㎅㎉㎏㎑㎘㎞㎢㎦㎪㎸㎾㏀㏆㏍-㏏Ｋｋ]\",\n            L: \"[LlĹ-ŀǇ-ǉˡᴸḶḷḺ-ḽℒℓ℡Ⅼⅼ⒧Ⓛⓛ㋏㎈㎉㏐-㏓㏕㏖㏿ﬂﬄＬｌ]\",\n            M: \"[MmᴹᵐḾ-ṃ℠™ℳⅯⅿ⒨Ⓜⓜ㍷-㍹㎃㎆㎎㎒㎖㎙-㎨㎫㎳㎷㎹㎽㎿㏁㏂㏎㏐㏔-㏖㏘㏙㏞㏟Ｍｍ]\",\n            N: \"[NnÑñŃ-ŉǊ-ǌǸǹᴺṄ-ṋⁿℕ№⒩Ⓝⓝ㎁㎋㎚㎱㎵㎻㏌㏑Ｎｎ]\",\n            O: \"[OoºÒ-Öò-öŌ-őƠơǑǒǪǫȌ-ȏȮȯᴼᵒỌ-ỏₒ℅№ℴ⒪Ⓞⓞ㍵㏇㏒㏖Ｏｏ]\",\n            P: \"[PpᴾᵖṔ-ṗℙ⒫Ⓟⓟ㉐㍱㍶㎀㎊㎩-㎬㎰㎴㎺㏋㏗-㏚Ｐｐ]\",\n            Q: \"[Qqℚ⒬Ⓠⓠ㏃Ｑｑ]\",\n            R: \"[RrŔ-řȐ-ȓʳᴿᵣṘ-ṛṞṟ₨ℛ-ℝ⒭Ⓡⓡ㋍㍴㎭-㎯㏚㏛Ｒｒ]\",\n            S: \"[SsŚ-šſȘșˢṠ-ṣ₨℁℠⒮Ⓢⓢ㎧㎨㎮-㎳㏛㏜ﬆＳｓ]\",\n            T: \"[TtŢ-ťȚțᵀᵗṪ-ṱẗ℡™⒯Ⓣⓣ㉐㋏㎔㏏ﬅﬆＴｔ]\",\n            U: \"[UuÙ-Üù-üŨ-ųƯưǓǔȔ-ȗᵁᵘᵤṲ-ṷỤ-ủ℆⒰Ⓤⓤ㍳㍺Ｕｕ]\",\n            V: \"[VvᵛᵥṼ-ṿⅣ-Ⅷⅳ-ⅷ⒱Ⓥⓥⱽ㋎㍵㎴-㎹㏜㏞Ｖｖ]\",\n            W: \"[WwŴŵʷᵂẀ-ẉẘ⒲Ⓦⓦ㎺-㎿㏝Ｗｗ]\",\n            X: \"[XxˣẊ-ẍₓ℻Ⅸ-Ⅻⅸ-ⅻ⒳Ⓧⓧ㏓Ｘｘ]\",\n            Y: \"[YyÝýÿŶ-ŸȲȳʸẎẏẙỲ-ỹ⒴Ⓨⓨ㏉Ｙｙ]\",\n            Z: \"[ZzŹ-žǱ-ǳᶻẐ-ẕℤℨ⒵Ⓩⓩ㎐-㎔Ｚｚ]\"\n        };\n        return function hightlight(o) {\n            var regex;\n            o = _.mixin({}, defaults, o);\n            if (!o.node || !o.pattern) {\n                return;\n            }\n            o.pattern = _.isArray(o.pattern) ? o.pattern : [ o.pattern ];\n            regex = getRegex(o.pattern, o.caseSensitive, o.wordsOnly, o.diacriticInsensitive);\n            traverse(o.node, hightlightTextNode);\n            function hightlightTextNode(textNode) {\n                var match, patternNode, wrapperNode;\n                if (match = regex.exec(textNode.data)) {\n                    wrapperNode = doc.createElement(o.tagName);\n                    o.className && (wrapperNode.className = o.className);\n                    patternNode = textNode.splitText(match.index);\n                    patternNode.splitText(match[0].length);\n                    wrapperNode.appendChild(patternNode.cloneNode(true));\n                    textNode.parentNode.replaceChild(wrapperNode, patternNode);\n                }\n                return !!match;\n            }\n            function traverse(el, hightlightTextNode) {\n                var childNode, TEXT_NODE_TYPE = 3;\n                for (var i = 0; i < el.childNodes.length; i++) {\n                    childNode = el.childNodes[i];\n                    if (childNode.nodeType === TEXT_NODE_TYPE) {\n                        i += hightlightTextNode(childNode) ? 1 : 0;\n                    } else {\n                        traverse(childNode, hightlightTextNode);\n                    }\n                }\n            }\n        };\n        function accent_replacer(chr) {\n            return accented[chr.toUpperCase()] || chr;\n        }\n        function getRegex(patterns, caseSensitive, wordsOnly, diacriticInsensitive) {\n            var escapedPatterns = [], regexStr;\n            for (var i = 0, len = patterns.length; i < len; i++) {\n                var escapedWord = _.escapeRegExChars(patterns[i]);\n                if (diacriticInsensitive) {\n                    escapedWord = escapedWord.replace(/\\S/g, accent_replacer);\n                }\n                escapedPatterns.push(escapedWord);\n            }\n            regexStr = wordsOnly ? \"\\\\b(\" + escapedPatterns.join(\"|\") + \")\\\\b\" : \"(\" + escapedPatterns.join(\"|\") + \")\";\n            return caseSensitive ? new RegExp(regexStr) : new RegExp(regexStr, \"i\");\n        }\n    }(window.document);\n    var Input = function() {\n        \"use strict\";\n        var specialKeyCodeMap;\n        specialKeyCodeMap = {\n            9: \"tab\",\n            27: \"esc\",\n            37: \"left\",\n            39: \"right\",\n            13: \"enter\",\n            38: \"up\",\n            40: \"down\"\n        };\n        function Input(o, www) {\n            var id;\n            o = o || {};\n            if (!o.input) {\n                $.error(\"input is missing\");\n            }\n            www.mixin(this);\n            this.$hint = $(o.hint);\n            this.$input = $(o.input);\n            this.$menu = $(o.menu);\n            id = this.$input.attr(\"id\") || _.guid();\n            this.$menu.attr(\"id\", id + \"_listbox\");\n            this.$hint.attr({\n                \"aria-hidden\": true\n            });\n            this.$input.attr({\n                \"aria-owns\": id + \"_listbox\",\n                role: \"combobox\",\n                \"aria-autocomplete\": \"list\",\n                \"aria-expanded\": false\n            });\n            this.query = this.$input.val();\n            this.queryWhenFocused = this.hasFocus() ? this.query : null;\n            this.$overflowHelper = buildOverflowHelper(this.$input);\n            this._checkLanguageDirection();\n            if (this.$hint.length === 0) {\n                this.setHint = this.getHint = this.clearHint = this.clearHintIfInvalid = _.noop;\n            }\n            this.onSync(\"cursorchange\", this._updateDescendent);\n        }\n        Input.normalizeQuery = function(str) {\n            return _.toStr(str).replace(/^\\s*/g, \"\").replace(/\\s{2,}/g, \" \");\n        };\n        _.mixin(Input.prototype, EventEmitter, {\n            _onBlur: function onBlur() {\n                this.resetInputValue();\n                this.trigger(\"blurred\");\n            },\n            _onFocus: function onFocus() {\n                this.queryWhenFocused = this.query;\n                this.trigger(\"focused\");\n            },\n            _onKeydown: function onKeydown($e) {\n                var keyName = specialKeyCodeMap[$e.which || $e.keyCode];\n                this._managePreventDefault(keyName, $e);\n                if (keyName && this._shouldTrigger(keyName, $e)) {\n                    this.trigger(keyName + \"Keyed\", $e);\n                }\n            },\n            _onInput: function onInput() {\n                this._setQuery(this.getInputValue());\n                this.clearHintIfInvalid();\n                this._checkLanguageDirection();\n            },\n            _managePreventDefault: function managePreventDefault(keyName, $e) {\n                var preventDefault;\n                switch (keyName) {\n                  case \"up\":\n                  case \"down\":\n                    preventDefault = !withModifier($e);\n                    break;\n\n                  default:\n                    preventDefault = false;\n                }\n                preventDefault && $e.preventDefault();\n            },\n            _shouldTrigger: function shouldTrigger(keyName, $e) {\n                var trigger;\n                switch (keyName) {\n                  case \"tab\":\n                    trigger = !withModifier($e);\n                    break;\n\n                  default:\n                    trigger = true;\n                }\n                return trigger;\n            },\n            _checkLanguageDirection: function checkLanguageDirection() {\n                var dir = (this.$input.css(\"direction\") || \"ltr\").toLowerCase();\n                if (this.dir !== dir) {\n                    this.dir = dir;\n                    this.$hint.attr(\"dir\", dir);\n                    this.trigger(\"langDirChanged\", dir);\n                }\n            },\n            _setQuery: function setQuery(val, silent) {\n                var areEquivalent, hasDifferentWhitespace;\n                areEquivalent = areQueriesEquivalent(val, this.query);\n                hasDifferentWhitespace = areEquivalent ? this.query.length !== val.length : false;\n                this.query = val;\n                if (!silent && !areEquivalent) {\n                    this.trigger(\"queryChanged\", this.query);\n                } else if (!silent && hasDifferentWhitespace) {\n                    this.trigger(\"whitespaceChanged\", this.query);\n                }\n            },\n            _updateDescendent: function updateDescendent(event, id) {\n                this.$input.attr(\"aria-activedescendant\", id);\n            },\n            bind: function() {\n                var that = this, onBlur, onFocus, onKeydown, onInput;\n                onBlur = _.bind(this._onBlur, this);\n                onFocus = _.bind(this._onFocus, this);\n                onKeydown = _.bind(this._onKeydown, this);\n                onInput = _.bind(this._onInput, this);\n                this.$input.on(\"blur.tt\", onBlur).on(\"focus.tt\", onFocus).on(\"keydown.tt\", onKeydown);\n                if (!_.isMsie() || _.isMsie() > 9) {\n                    this.$input.on(\"input.tt\", onInput);\n                } else {\n                    this.$input.on(\"keydown.tt keypress.tt cut.tt paste.tt\", function($e) {\n                        if (specialKeyCodeMap[$e.which || $e.keyCode]) {\n                            return;\n                        }\n                        _.defer(_.bind(that._onInput, that, $e));\n                    });\n                }\n                return this;\n            },\n            focus: function focus() {\n                this.$input.focus();\n            },\n            blur: function blur() {\n                this.$input.blur();\n            },\n            getLangDir: function getLangDir() {\n                return this.dir;\n            },\n            getQuery: function getQuery() {\n                return this.query || \"\";\n            },\n            setQuery: function setQuery(val, silent) {\n                this.setInputValue(val);\n                this._setQuery(val, silent);\n            },\n            hasQueryChangedSinceLastFocus: function hasQueryChangedSinceLastFocus() {\n                return this.query !== this.queryWhenFocused;\n            },\n            getInputValue: function getInputValue() {\n                return this.$input.val();\n            },\n            setInputValue: function setInputValue(value) {\n                this.$input.val(value);\n                this.clearHintIfInvalid();\n                this._checkLanguageDirection();\n            },\n            resetInputValue: function resetInputValue() {\n                this.setInputValue(this.query);\n            },\n            getHint: function getHint() {\n                return this.$hint.val();\n            },\n            setHint: function setHint(value) {\n                this.$hint.val(value);\n            },\n            clearHint: function clearHint() {\n                this.setHint(\"\");\n            },\n            clearHintIfInvalid: function clearHintIfInvalid() {\n                var val, hint, valIsPrefixOfHint, isValid;\n                val = this.getInputValue();\n                hint = this.getHint();\n                valIsPrefixOfHint = val !== hint && hint.indexOf(val) === 0;\n                isValid = val !== \"\" && valIsPrefixOfHint && !this.hasOverflow();\n                !isValid && this.clearHint();\n            },\n            hasFocus: function hasFocus() {\n                return this.$input.is(\":focus\");\n            },\n            hasOverflow: function hasOverflow() {\n                var constraint = this.$input.width() - 2;\n                this.$overflowHelper.text(this.getInputValue());\n                return this.$overflowHelper.width() >= constraint;\n            },\n            isCursorAtEnd: function() {\n                var valueLength, selectionStart, range;\n                valueLength = this.$input.val().length;\n                selectionStart = this.$input[0].selectionStart;\n                if (_.isNumber(selectionStart)) {\n                    return selectionStart === valueLength;\n                } else if (document.selection) {\n                    range = document.selection.createRange();\n                    range.moveStart(\"character\", -valueLength);\n                    return valueLength === range.text.length;\n                }\n                return true;\n            },\n            destroy: function destroy() {\n                this.$hint.off(\".tt\");\n                this.$input.off(\".tt\");\n                this.$overflowHelper.remove();\n                this.$hint = this.$input = this.$overflowHelper = $(\"<div>\");\n            },\n            setAriaExpanded: function setAriaExpanded(value) {\n                this.$input.attr(\"aria-expanded\", value);\n            }\n        });\n        return Input;\n        function buildOverflowHelper($input) {\n            return $('<pre aria-hidden=\"true\"></pre>').css({\n                position: \"absolute\",\n                visibility: \"hidden\",\n                whiteSpace: \"pre\",\n                fontFamily: $input.css(\"font-family\"),\n                fontSize: $input.css(\"font-size\"),\n                fontStyle: $input.css(\"font-style\"),\n                fontVariant: $input.css(\"font-variant\"),\n                fontWeight: $input.css(\"font-weight\"),\n                wordSpacing: $input.css(\"word-spacing\"),\n                letterSpacing: $input.css(\"letter-spacing\"),\n                textIndent: $input.css(\"text-indent\"),\n                textRendering: $input.css(\"text-rendering\"),\n                textTransform: $input.css(\"text-transform\")\n            }).insertAfter($input);\n        }\n        function areQueriesEquivalent(a, b) {\n            return Input.normalizeQuery(a) === Input.normalizeQuery(b);\n        }\n        function withModifier($e) {\n            return $e.altKey || $e.ctrlKey || $e.metaKey || $e.shiftKey;\n        }\n    }();\n    var Dataset = function() {\n        \"use strict\";\n        var keys, nameGenerator;\n        keys = {\n            dataset: \"tt-selectable-dataset\",\n            val: \"tt-selectable-display\",\n            obj: \"tt-selectable-object\"\n        };\n        nameGenerator = _.getIdGenerator();\n        function Dataset(o, www) {\n            o = o || {};\n            o.templates = o.templates || {};\n            o.templates.notFound = o.templates.notFound || o.templates.empty;\n            if (!o.source) {\n                $.error(\"missing source\");\n            }\n            if (!o.node) {\n                $.error(\"missing node\");\n            }\n            if (o.name && !isValidName(o.name)) {\n                $.error(\"invalid dataset name: \" + o.name);\n            }\n            www.mixin(this);\n            this.highlight = !!o.highlight;\n            this.name = _.toStr(o.name || nameGenerator());\n            this.limit = o.limit || 5;\n            this.displayFn = getDisplayFn(o.display || o.displayKey);\n            this.templates = getTemplates(o.templates, this.displayFn);\n            this.source = o.source.__ttAdapter ? o.source.__ttAdapter() : o.source;\n            this.async = _.isUndefined(o.async) ? this.source.length > 2 : !!o.async;\n            this._resetLastSuggestion();\n            this.$el = $(o.node).attr(\"role\", \"presentation\").addClass(this.classes.dataset).addClass(this.classes.dataset + \"-\" + this.name);\n        }\n        Dataset.extractData = function extractData(el) {\n            var $el = $(el);\n            if ($el.data(keys.obj)) {\n                return {\n                    dataset: $el.data(keys.dataset) || \"\",\n                    val: $el.data(keys.val) || \"\",\n                    obj: $el.data(keys.obj) || null\n                };\n            }\n            return null;\n        };\n        _.mixin(Dataset.prototype, EventEmitter, {\n            _overwrite: function overwrite(query, suggestions) {\n                suggestions = suggestions || [];\n                if (suggestions.length) {\n                    this._renderSuggestions(query, suggestions);\n                } else if (this.async && this.templates.pending) {\n                    this._renderPending(query);\n                } else if (!this.async && this.templates.notFound) {\n                    this._renderNotFound(query);\n                } else {\n                    this._empty();\n                }\n                this.trigger(\"rendered\", suggestions, false, this.name);\n            },\n            _append: function append(query, suggestions) {\n                suggestions = suggestions || [];\n                if (suggestions.length && this.$lastSuggestion.length) {\n                    this._appendSuggestions(query, suggestions);\n                } else if (suggestions.length) {\n                    this._renderSuggestions(query, suggestions);\n                } else if (!this.$lastSuggestion.length && this.templates.notFound) {\n                    this._renderNotFound(query);\n                }\n                this.trigger(\"rendered\", suggestions, true, this.name);\n            },\n            _renderSuggestions: function renderSuggestions(query, suggestions) {\n                var $fragment;\n                $fragment = this._getSuggestionsFragment(query, suggestions);\n                this.$lastSuggestion = $fragment.children().last();\n                this.$el.html($fragment).prepend(this._getHeader(query, suggestions)).append(this._getFooter(query, suggestions));\n            },\n            _appendSuggestions: function appendSuggestions(query, suggestions) {\n                var $fragment, $lastSuggestion;\n                $fragment = this._getSuggestionsFragment(query, suggestions);\n                $lastSuggestion = $fragment.children().last();\n                this.$lastSuggestion.after($fragment);\n                this.$lastSuggestion = $lastSuggestion;\n            },\n            _renderPending: function renderPending(query) {\n                var template = this.templates.pending;\n                this._resetLastSuggestion();\n                template && this.$el.html(template({\n                    query: query,\n                    dataset: this.name\n                }));\n            },\n            _renderNotFound: function renderNotFound(query) {\n                var template = this.templates.notFound;\n                this._resetLastSuggestion();\n                template && this.$el.html(template({\n                    query: query,\n                    dataset: this.name\n                }));\n            },\n            _empty: function empty() {\n                this.$el.empty();\n                this._resetLastSuggestion();\n            },\n            _getSuggestionsFragment: function getSuggestionsFragment(query, suggestions) {\n                var that = this, fragment;\n                fragment = document.createDocumentFragment();\n                _.each(suggestions, function getSuggestionNode(suggestion) {\n                    var $el, context;\n                    context = that._injectQuery(query, suggestion);\n                    $el = $(that.templates.suggestion(context)).data(keys.dataset, that.name).data(keys.obj, suggestion).data(keys.val, that.displayFn(suggestion)).addClass(that.classes.suggestion + \" \" + that.classes.selectable);\n                    fragment.appendChild($el[0]);\n                });\n                this.highlight && highlight({\n                    className: this.classes.highlight,\n                    node: fragment,\n                    pattern: query\n                });\n                return $(fragment);\n            },\n            _getFooter: function getFooter(query, suggestions) {\n                return this.templates.footer ? this.templates.footer({\n                    query: query,\n                    suggestions: suggestions,\n                    dataset: this.name\n                }) : null;\n            },\n            _getHeader: function getHeader(query, suggestions) {\n                return this.templates.header ? this.templates.header({\n                    query: query,\n                    suggestions: suggestions,\n                    dataset: this.name\n                }) : null;\n            },\n            _resetLastSuggestion: function resetLastSuggestion() {\n                this.$lastSuggestion = $();\n            },\n            _injectQuery: function injectQuery(query, obj) {\n                return _.isObject(obj) ? _.mixin({\n                    _query: query\n                }, obj) : obj;\n            },\n            update: function update(query) {\n                var that = this, canceled = false, syncCalled = false, rendered = 0;\n                this.cancel();\n                this.cancel = function cancel() {\n                    canceled = true;\n                    that.cancel = $.noop;\n                    that.async && that.trigger(\"asyncCanceled\", query, that.name);\n                };\n                this.source(query, sync, async);\n                !syncCalled && sync([]);\n                function sync(suggestions) {\n                    if (syncCalled) {\n                        return;\n                    }\n                    syncCalled = true;\n                    suggestions = (suggestions || []).slice(0, that.limit);\n                    rendered = suggestions.length;\n                    that._overwrite(query, suggestions);\n                    if (rendered < that.limit && that.async) {\n                        that.trigger(\"asyncRequested\", query, that.name);\n                    }\n                }\n                function async(suggestions) {\n                    suggestions = suggestions || [];\n                    if (!canceled && rendered < that.limit) {\n                        that.cancel = $.noop;\n                        var idx = Math.abs(rendered - that.limit);\n                        rendered += idx;\n                        that._append(query, suggestions.slice(0, idx));\n                        that.async && that.trigger(\"asyncReceived\", query, that.name);\n                    }\n                }\n            },\n            cancel: $.noop,\n            clear: function clear() {\n                this._empty();\n                this.cancel();\n                this.trigger(\"cleared\");\n            },\n            isEmpty: function isEmpty() {\n                return this.$el.is(\":empty\");\n            },\n            destroy: function destroy() {\n                this.$el = $(\"<div>\");\n            }\n        });\n        return Dataset;\n        function getDisplayFn(display) {\n            display = display || _.stringify;\n            return _.isFunction(display) ? display : displayFn;\n            function displayFn(obj) {\n                return obj[display];\n            }\n        }\n        function getTemplates(templates, displayFn) {\n            return {\n                notFound: templates.notFound && _.templatify(templates.notFound),\n                pending: templates.pending && _.templatify(templates.pending),\n                header: templates.header && _.templatify(templates.header),\n                footer: templates.footer && _.templatify(templates.footer),\n                suggestion: templates.suggestion ? userSuggestionTemplate : suggestionTemplate\n            };\n            function userSuggestionTemplate(context) {\n                var template = templates.suggestion;\n                return $(template(context)).attr(\"id\", _.guid());\n            }\n            function suggestionTemplate(context) {\n                return $('<div role=\"option\">').attr(\"id\", _.guid()).text(displayFn(context));\n            }\n        }\n        function isValidName(str) {\n            return /^[_a-zA-Z0-9-]+$/.test(str);\n        }\n    }();\n    var Menu = function() {\n        \"use strict\";\n        function Menu(o, www) {\n            var that = this;\n            o = o || {};\n            if (!o.node) {\n                $.error(\"node is required\");\n            }\n            www.mixin(this);\n            this.$node = $(o.node);\n            this.query = null;\n            this.datasets = _.map(o.datasets, initializeDataset);\n            function initializeDataset(oDataset) {\n                var node = that.$node.find(oDataset.node).first();\n                oDataset.node = node.length ? node : $(\"<div>\").appendTo(that.$node);\n                return new Dataset(oDataset, www);\n            }\n        }\n        _.mixin(Menu.prototype, EventEmitter, {\n            _onSelectableClick: function onSelectableClick($e) {\n                this.trigger(\"selectableClicked\", $($e.currentTarget));\n            },\n            _onRendered: function onRendered(type, dataset, suggestions, async) {\n                this.$node.toggleClass(this.classes.empty, this._allDatasetsEmpty());\n                this.trigger(\"datasetRendered\", dataset, suggestions, async);\n            },\n            _onCleared: function onCleared() {\n                this.$node.toggleClass(this.classes.empty, this._allDatasetsEmpty());\n                this.trigger(\"datasetCleared\");\n            },\n            _propagate: function propagate() {\n                this.trigger.apply(this, arguments);\n            },\n            _allDatasetsEmpty: function allDatasetsEmpty() {\n                return _.every(this.datasets, _.bind(function isDatasetEmpty(dataset) {\n                    var isEmpty = dataset.isEmpty();\n                    this.$node.attr(\"aria-expanded\", !isEmpty);\n                    return isEmpty;\n                }, this));\n            },\n            _getSelectables: function getSelectables() {\n                return this.$node.find(this.selectors.selectable);\n            },\n            _removeCursor: function _removeCursor() {\n                var $selectable = this.getActiveSelectable();\n                $selectable && $selectable.removeClass(this.classes.cursor);\n            },\n            _ensureVisible: function ensureVisible($el) {\n                var elTop, elBottom, nodeScrollTop, nodeHeight;\n                elTop = $el.position().top;\n                elBottom = elTop + $el.outerHeight(true);\n                nodeScrollTop = this.$node.scrollTop();\n                nodeHeight = this.$node.height() + parseInt(this.$node.css(\"paddingTop\"), 10) + parseInt(this.$node.css(\"paddingBottom\"), 10);\n                if (elTop < 0) {\n                    this.$node.scrollTop(nodeScrollTop + elTop);\n                } else if (nodeHeight < elBottom) {\n                    this.$node.scrollTop(nodeScrollTop + (elBottom - nodeHeight));\n                }\n            },\n            bind: function() {\n                var that = this, onSelectableClick;\n                onSelectableClick = _.bind(this._onSelectableClick, this);\n                this.$node.on(\"click.tt\", this.selectors.selectable, onSelectableClick);\n                this.$node.on(\"mouseover\", this.selectors.selectable, function() {\n                    that.setCursor($(this));\n                });\n                this.$node.on(\"mouseleave\", function() {\n                    that._removeCursor();\n                });\n                _.each(this.datasets, function(dataset) {\n                    dataset.onSync(\"asyncRequested\", that._propagate, that).onSync(\"asyncCanceled\", that._propagate, that).onSync(\"asyncReceived\", that._propagate, that).onSync(\"rendered\", that._onRendered, that).onSync(\"cleared\", that._onCleared, that);\n                });\n                return this;\n            },\n            isOpen: function isOpen() {\n                return this.$node.hasClass(this.classes.open);\n            },\n            open: function open() {\n                this.$node.scrollTop(0);\n                this.$node.addClass(this.classes.open);\n            },\n            close: function close() {\n                this.$node.attr(\"aria-expanded\", false);\n                this.$node.removeClass(this.classes.open);\n                this._removeCursor();\n            },\n            setLanguageDirection: function setLanguageDirection(dir) {\n                this.$node.attr(\"dir\", dir);\n            },\n            selectableRelativeToCursor: function selectableRelativeToCursor(delta) {\n                var $selectables, $oldCursor, oldIndex, newIndex;\n                $oldCursor = this.getActiveSelectable();\n                $selectables = this._getSelectables();\n                oldIndex = $oldCursor ? $selectables.index($oldCursor) : -1;\n                newIndex = oldIndex + delta;\n                newIndex = (newIndex + 1) % ($selectables.length + 1) - 1;\n                newIndex = newIndex < -1 ? $selectables.length - 1 : newIndex;\n                return newIndex === -1 ? null : $selectables.eq(newIndex);\n            },\n            setCursor: function setCursor($selectable) {\n                this._removeCursor();\n                if ($selectable = $selectable && $selectable.first()) {\n                    $selectable.addClass(this.classes.cursor);\n                    this._ensureVisible($selectable);\n                }\n            },\n            getSelectableData: function getSelectableData($el) {\n                return $el && $el.length ? Dataset.extractData($el) : null;\n            },\n            getActiveSelectable: function getActiveSelectable() {\n                var $selectable = this._getSelectables().filter(this.selectors.cursor).first();\n                return $selectable.length ? $selectable : null;\n            },\n            getTopSelectable: function getTopSelectable() {\n                var $selectable = this._getSelectables().first();\n                return $selectable.length ? $selectable : null;\n            },\n            update: function update(query) {\n                var isValidUpdate = query !== this.query;\n                if (isValidUpdate) {\n                    this.query = query;\n                    _.each(this.datasets, updateDataset);\n                }\n                return isValidUpdate;\n                function updateDataset(dataset) {\n                    dataset.update(query);\n                }\n            },\n            empty: function empty() {\n                _.each(this.datasets, clearDataset);\n                this.query = null;\n                this.$node.addClass(this.classes.empty);\n                function clearDataset(dataset) {\n                    dataset.clear();\n                }\n            },\n            destroy: function destroy() {\n                this.$node.off(\".tt\");\n                this.$node = $(\"<div>\");\n                _.each(this.datasets, destroyDataset);\n                function destroyDataset(dataset) {\n                    dataset.destroy();\n                }\n            }\n        });\n        return Menu;\n    }();\n    var Status = function() {\n        \"use strict\";\n        function Status(options) {\n            this.$el = $(\"<span></span>\", {\n                role: \"status\",\n                \"aria-live\": \"polite\"\n            }).css({\n                position: \"absolute\",\n                padding: \"0\",\n                border: \"0\",\n                height: \"1px\",\n                width: \"1px\",\n                \"margin-bottom\": \"-1px\",\n                \"margin-right\": \"-1px\",\n                overflow: \"hidden\",\n                clip: \"rect(0 0 0 0)\",\n                \"white-space\": \"nowrap\"\n            });\n            options.$input.after(this.$el);\n            _.each(options.menu.datasets, _.bind(function(dataset) {\n                if (dataset.onSync) {\n                    dataset.onSync(\"rendered\", _.bind(this.update, this));\n                    dataset.onSync(\"cleared\", _.bind(this.cleared, this));\n                }\n            }, this));\n        }\n        _.mixin(Status.prototype, {\n            update: function update(event, suggestions) {\n                var length = suggestions.length;\n                var words;\n                if (length === 1) {\n                    words = {\n                        result: \"result\",\n                        is: \"is\"\n                    };\n                } else {\n                    words = {\n                        result: \"results\",\n                        is: \"are\"\n                    };\n                }\n                this.$el.text(length + \" \" + words.result + \" \" + words.is + \" available, use up and down arrow keys to navigate.\");\n            },\n            cleared: function() {\n                this.$el.text(\"\");\n            }\n        });\n        return Status;\n    }();\n    var DefaultMenu = function() {\n        \"use strict\";\n        var s = Menu.prototype;\n        function DefaultMenu() {\n            Menu.apply(this, [].slice.call(arguments, 0));\n        }\n        _.mixin(DefaultMenu.prototype, Menu.prototype, {\n            open: function open() {\n                !this._allDatasetsEmpty() && this._show();\n                return s.open.apply(this, [].slice.call(arguments, 0));\n            },\n            close: function close() {\n                this._hide();\n                return s.close.apply(this, [].slice.call(arguments, 0));\n            },\n            _onRendered: function onRendered() {\n                if (this._allDatasetsEmpty()) {\n                    this._hide();\n                } else {\n                    this.isOpen() && this._show();\n                }\n                return s._onRendered.apply(this, [].slice.call(arguments, 0));\n            },\n            _onCleared: function onCleared() {\n                if (this._allDatasetsEmpty()) {\n                    this._hide();\n                } else {\n                    this.isOpen() && this._show();\n                }\n                return s._onCleared.apply(this, [].slice.call(arguments, 0));\n            },\n            setLanguageDirection: function setLanguageDirection(dir) {\n                this.$node.css(dir === \"ltr\" ? this.css.ltr : this.css.rtl);\n                return s.setLanguageDirection.apply(this, [].slice.call(arguments, 0));\n            },\n            _hide: function hide() {\n                this.$node.hide();\n            },\n            _show: function show() {\n                this.$node.css(\"display\", \"block\");\n            }\n        });\n        return DefaultMenu;\n    }();\n    var Typeahead = function() {\n        \"use strict\";\n        function Typeahead(o, www) {\n            var onFocused, onBlurred, onEnterKeyed, onTabKeyed, onEscKeyed, onUpKeyed, onDownKeyed, onLeftKeyed, onRightKeyed, onQueryChanged, onWhitespaceChanged;\n            o = o || {};\n            if (!o.input) {\n                $.error(\"missing input\");\n            }\n            if (!o.menu) {\n                $.error(\"missing menu\");\n            }\n            if (!o.eventBus) {\n                $.error(\"missing event bus\");\n            }\n            www.mixin(this);\n            this.eventBus = o.eventBus;\n            this.minLength = _.isNumber(o.minLength) ? o.minLength : 1;\n            this.input = o.input;\n            this.menu = o.menu;\n            this.enabled = true;\n            this.autoselect = !!o.autoselect;\n            this.active = false;\n            this.input.hasFocus() && this.activate();\n            this.dir = this.input.getLangDir();\n            this._hacks();\n            this.menu.bind().onSync(\"selectableClicked\", this._onSelectableClicked, this).onSync(\"asyncRequested\", this._onAsyncRequested, this).onSync(\"asyncCanceled\", this._onAsyncCanceled, this).onSync(\"asyncReceived\", this._onAsyncReceived, this).onSync(\"datasetRendered\", this._onDatasetRendered, this).onSync(\"datasetCleared\", this._onDatasetCleared, this);\n            onFocused = c(this, \"activate\", \"open\", \"_onFocused\");\n            onBlurred = c(this, \"deactivate\", \"_onBlurred\");\n            onEnterKeyed = c(this, \"isActive\", \"isOpen\", \"_onEnterKeyed\");\n            onTabKeyed = c(this, \"isActive\", \"isOpen\", \"_onTabKeyed\");\n            onEscKeyed = c(this, \"isActive\", \"_onEscKeyed\");\n            onUpKeyed = c(this, \"isActive\", \"open\", \"_onUpKeyed\");\n            onDownKeyed = c(this, \"isActive\", \"open\", \"_onDownKeyed\");\n            onLeftKeyed = c(this, \"isActive\", \"isOpen\", \"_onLeftKeyed\");\n            onRightKeyed = c(this, \"isActive\", \"isOpen\", \"_onRightKeyed\");\n            onQueryChanged = c(this, \"_openIfActive\", \"_onQueryChanged\");\n            onWhitespaceChanged = c(this, \"_openIfActive\", \"_onWhitespaceChanged\");\n            this.input.bind().onSync(\"focused\", onFocused, this).onSync(\"blurred\", onBlurred, this).onSync(\"enterKeyed\", onEnterKeyed, this).onSync(\"tabKeyed\", onTabKeyed, this).onSync(\"escKeyed\", onEscKeyed, this).onSync(\"upKeyed\", onUpKeyed, this).onSync(\"downKeyed\", onDownKeyed, this).onSync(\"leftKeyed\", onLeftKeyed, this).onSync(\"rightKeyed\", onRightKeyed, this).onSync(\"queryChanged\", onQueryChanged, this).onSync(\"whitespaceChanged\", onWhitespaceChanged, this).onSync(\"langDirChanged\", this._onLangDirChanged, this);\n        }\n        _.mixin(Typeahead.prototype, {\n            _hacks: function hacks() {\n                var $input, $menu;\n                $input = this.input.$input || $(\"<div>\");\n                $menu = this.menu.$node || $(\"<div>\");\n                $input.on(\"blur.tt\", function($e) {\n                    var active, isActive, hasActive;\n                    active = document.activeElement;\n                    isActive = $menu.is(active);\n                    hasActive = $menu.has(active).length > 0;\n                    if (_.isMsie() && (isActive || hasActive)) {\n                        $e.preventDefault();\n                        $e.stopImmediatePropagation();\n                        _.defer(function() {\n                            $input.focus();\n                        });\n                    }\n                });\n                $menu.on(\"mousedown.tt\", function($e) {\n                    $e.preventDefault();\n                });\n            },\n            _onSelectableClicked: function onSelectableClicked(type, $el) {\n                this.select($el);\n            },\n            _onDatasetCleared: function onDatasetCleared() {\n                this._updateHint();\n            },\n            _onDatasetRendered: function onDatasetRendered(type, suggestions, async, dataset) {\n                this._updateHint();\n                if (this.autoselect) {\n                    var cursorClass = this.selectors.cursor.substr(1);\n                    this.menu.$node.find(this.selectors.suggestion).first().addClass(cursorClass);\n                }\n                this.eventBus.trigger(\"render\", suggestions, async, dataset);\n            },\n            _onAsyncRequested: function onAsyncRequested(type, dataset, query) {\n                this.eventBus.trigger(\"asyncrequest\", query, dataset);\n            },\n            _onAsyncCanceled: function onAsyncCanceled(type, dataset, query) {\n                this.eventBus.trigger(\"asynccancel\", query, dataset);\n            },\n            _onAsyncReceived: function onAsyncReceived(type, dataset, query) {\n                this.eventBus.trigger(\"asyncreceive\", query, dataset);\n            },\n            _onFocused: function onFocused() {\n                this._minLengthMet() && this.menu.update(this.input.getQuery());\n            },\n            _onBlurred: function onBlurred() {\n                if (this.input.hasQueryChangedSinceLastFocus()) {\n                    this.eventBus.trigger(\"change\", this.input.getQuery());\n                }\n            },\n            _onEnterKeyed: function onEnterKeyed(type, $e) {\n                var $selectable;\n                if ($selectable = this.menu.getActiveSelectable()) {\n                    if (this.select($selectable)) {\n                        $e.preventDefault();\n                        $e.stopPropagation();\n                    }\n                } else if (this.autoselect) {\n                    if (this.select(this.menu.getTopSelectable())) {\n                        $e.preventDefault();\n                        $e.stopPropagation();\n                    }\n                }\n            },\n            _onTabKeyed: function onTabKeyed(type, $e) {\n                var $selectable;\n                if ($selectable = this.menu.getActiveSelectable()) {\n                    this.select($selectable) && $e.preventDefault();\n                } else if (this.autoselect) {\n                    if ($selectable = this.menu.getTopSelectable()) {\n                        this.autocomplete($selectable) && $e.preventDefault();\n                    }\n                }\n            },\n            _onEscKeyed: function onEscKeyed() {\n                this.close();\n            },\n            _onUpKeyed: function onUpKeyed() {\n                this.moveCursor(-1);\n            },\n            _onDownKeyed: function onDownKeyed() {\n                this.moveCursor(+1);\n            },\n            _onLeftKeyed: function onLeftKeyed() {\n                if (this.dir === \"rtl\" && this.input.isCursorAtEnd()) {\n                    this.autocomplete(this.menu.getActiveSelectable() || this.menu.getTopSelectable());\n                }\n            },\n            _onRightKeyed: function onRightKeyed() {\n                if (this.dir === \"ltr\" && this.input.isCursorAtEnd()) {\n                    this.autocomplete(this.menu.getActiveSelectable() || this.menu.getTopSelectable());\n                }\n            },\n            _onQueryChanged: function onQueryChanged(e, query) {\n                this._minLengthMet(query) ? this.menu.update(query) : this.menu.empty();\n            },\n            _onWhitespaceChanged: function onWhitespaceChanged() {\n                this._updateHint();\n            },\n            _onLangDirChanged: function onLangDirChanged(e, dir) {\n                if (this.dir !== dir) {\n                    this.dir = dir;\n                    this.menu.setLanguageDirection(dir);\n                }\n            },\n            _openIfActive: function openIfActive() {\n                this.isActive() && this.open();\n            },\n            _minLengthMet: function minLengthMet(query) {\n                query = _.isString(query) ? query : this.input.getQuery() || \"\";\n                return query.length >= this.minLength;\n            },\n            _updateHint: function updateHint() {\n                var $selectable, data, val, query, escapedQuery, frontMatchRegEx, match;\n                $selectable = this.menu.getTopSelectable();\n                data = this.menu.getSelectableData($selectable);\n                val = this.input.getInputValue();\n                if (data && !_.isBlankString(val) && !this.input.hasOverflow()) {\n                    query = Input.normalizeQuery(val);\n                    escapedQuery = _.escapeRegExChars(query);\n                    frontMatchRegEx = new RegExp(\"^(?:\" + escapedQuery + \")(.+$)\", \"i\");\n                    match = frontMatchRegEx.exec(data.val);\n                    match && this.input.setHint(val + match[1]);\n                } else {\n                    this.input.clearHint();\n                }\n            },\n            isEnabled: function isEnabled() {\n                return this.enabled;\n            },\n            enable: function enable() {\n                this.enabled = true;\n            },\n            disable: function disable() {\n                this.enabled = false;\n            },\n            isActive: function isActive() {\n                return this.active;\n            },\n            activate: function activate() {\n                if (this.isActive()) {\n                    return true;\n                } else if (!this.isEnabled() || this.eventBus.before(\"active\")) {\n                    return false;\n                } else {\n                    this.active = true;\n                    this.eventBus.trigger(\"active\");\n                    return true;\n                }\n            },\n            deactivate: function deactivate() {\n                if (!this.isActive()) {\n                    return true;\n                } else if (this.eventBus.before(\"idle\")) {\n                    return false;\n                } else {\n                    this.active = false;\n                    this.close();\n                    this.eventBus.trigger(\"idle\");\n                    return true;\n                }\n            },\n            isOpen: function isOpen() {\n                return this.menu.isOpen();\n            },\n            open: function open() {\n                if (!this.isOpen() && !this.eventBus.before(\"open\")) {\n                    this.input.setAriaExpanded(true);\n                    this.menu.open();\n                    this._updateHint();\n                    this.eventBus.trigger(\"open\");\n                }\n                return this.isOpen();\n            },\n            close: function close() {\n                if (this.isOpen() && !this.eventBus.before(\"close\")) {\n                    this.input.setAriaExpanded(false);\n                    this.menu.close();\n                    this.input.clearHint();\n                    this.input.resetInputValue();\n                    this.eventBus.trigger(\"close\");\n                }\n                return !this.isOpen();\n            },\n            setVal: function setVal(val) {\n                this.input.setQuery(_.toStr(val));\n            },\n            getVal: function getVal() {\n                return this.input.getQuery();\n            },\n            select: function select($selectable) {\n                var data = this.menu.getSelectableData($selectable);\n                if (data && !this.eventBus.before(\"select\", data.obj, data.dataset)) {\n                    this.input.setQuery(data.val, true);\n                    this.eventBus.trigger(\"select\", data.obj, data.dataset);\n                    this.close();\n                    return true;\n                }\n                return false;\n            },\n            autocomplete: function autocomplete($selectable) {\n                var query, data, isValid;\n                query = this.input.getQuery();\n                data = this.menu.getSelectableData($selectable);\n                isValid = data && query !== data.val;\n                if (isValid && !this.eventBus.before(\"autocomplete\", data.obj, data.dataset)) {\n                    this.input.setQuery(data.val);\n                    this.eventBus.trigger(\"autocomplete\", data.obj, data.dataset);\n                    return true;\n                }\n                return false;\n            },\n            moveCursor: function moveCursor(delta) {\n                var query, $candidate, data, suggestion, datasetName, cancelMove, id;\n                query = this.input.getQuery();\n                $candidate = this.menu.selectableRelativeToCursor(delta);\n                data = this.menu.getSelectableData($candidate);\n                suggestion = data ? data.obj : null;\n                datasetName = data ? data.dataset : null;\n                id = $candidate ? $candidate.attr(\"id\") : null;\n                this.input.trigger(\"cursorchange\", id);\n                cancelMove = this._minLengthMet() && this.menu.update(query);\n                if (!cancelMove && !this.eventBus.before(\"cursorchange\", suggestion, datasetName)) {\n                    this.menu.setCursor($candidate);\n                    if (data) {\n                        if (typeof data.val === \"string\") {\n                            this.input.setInputValue(data.val);\n                        }\n                    } else {\n                        this.input.resetInputValue();\n                        this._updateHint();\n                    }\n                    this.eventBus.trigger(\"cursorchange\", suggestion, datasetName);\n                    return true;\n                }\n                return false;\n            },\n            destroy: function destroy() {\n                this.input.destroy();\n                this.menu.destroy();\n            }\n        });\n        return Typeahead;\n        function c(ctx) {\n            var methods = [].slice.call(arguments, 1);\n            return function() {\n                var args = [].slice.call(arguments);\n                _.each(methods, function(method) {\n                    return ctx[method].apply(ctx, args);\n                });\n            };\n        }\n    }();\n    (function() {\n        \"use strict\";\n        var old, keys, methods;\n        old = $.fn.typeahead;\n        keys = {\n            www: \"tt-www\",\n            attrs: \"tt-attrs\",\n            typeahead: \"tt-typeahead\"\n        };\n        methods = {\n            initialize: function initialize(o, datasets) {\n                var www;\n                datasets = _.isArray(datasets) ? datasets : [].slice.call(arguments, 1);\n                o = o || {};\n                www = WWW(o.classNames);\n                return this.each(attach);\n                function attach() {\n                    var $input, $wrapper, $hint, $menu, defaultHint, defaultMenu, eventBus, input, menu, status, typeahead, MenuConstructor;\n                    _.each(datasets, function(d) {\n                        d.highlight = !!o.highlight;\n                    });\n                    $input = $(this);\n                    $wrapper = $(www.html.wrapper);\n                    $hint = $elOrNull(o.hint);\n                    $menu = $elOrNull(o.menu);\n                    defaultHint = o.hint !== false && !$hint;\n                    defaultMenu = o.menu !== false && !$menu;\n                    defaultHint && ($hint = buildHintFromInput($input, www));\n                    defaultMenu && ($menu = $(www.html.menu).css(www.css.menu));\n                    $hint && $hint.val(\"\");\n                    $input = prepInput($input, www);\n                    if (defaultHint || defaultMenu) {\n                        $wrapper.css(www.css.wrapper);\n                        $input.css(defaultHint ? www.css.input : www.css.inputWithNoHint);\n                        $input.wrap($wrapper).parent().prepend(defaultHint ? $hint : null).append(defaultMenu ? $menu : null);\n                    }\n                    MenuConstructor = defaultMenu ? DefaultMenu : Menu;\n                    eventBus = new EventBus({\n                        el: $input\n                    });\n                    input = new Input({\n                        hint: $hint,\n                        input: $input,\n                        menu: $menu\n                    }, www);\n                    menu = new MenuConstructor({\n                        node: $menu,\n                        datasets: datasets\n                    }, www);\n                    status = new Status({\n                        $input: $input,\n                        menu: menu\n                    });\n                    typeahead = new Typeahead({\n                        input: input,\n                        menu: menu,\n                        eventBus: eventBus,\n                        minLength: o.minLength,\n                        autoselect: o.autoselect\n                    }, www);\n                    $input.data(keys.www, www);\n                    $input.data(keys.typeahead, typeahead);\n                }\n            },\n            isEnabled: function isEnabled() {\n                var enabled;\n                ttEach(this.first(), function(t) {\n                    enabled = t.isEnabled();\n                });\n                return enabled;\n            },\n            enable: function enable() {\n                ttEach(this, function(t) {\n                    t.enable();\n                });\n                return this;\n            },\n            disable: function disable() {\n                ttEach(this, function(t) {\n                    t.disable();\n                });\n                return this;\n            },\n            isActive: function isActive() {\n                var active;\n                ttEach(this.first(), function(t) {\n                    active = t.isActive();\n                });\n                return active;\n            },\n            activate: function activate() {\n                ttEach(this, function(t) {\n                    t.activate();\n                });\n                return this;\n            },\n            deactivate: function deactivate() {\n                ttEach(this, function(t) {\n                    t.deactivate();\n                });\n                return this;\n            },\n            isOpen: function isOpen() {\n                var open;\n                ttEach(this.first(), function(t) {\n                    open = t.isOpen();\n                });\n                return open;\n            },\n            open: function open() {\n                ttEach(this, function(t) {\n                    t.open();\n                });\n                return this;\n            },\n            close: function close() {\n                ttEach(this, function(t) {\n                    t.close();\n                });\n                return this;\n            },\n            select: function select(el) {\n                var success = false, $el = $(el);\n                ttEach(this.first(), function(t) {\n                    success = t.select($el);\n                });\n                return success;\n            },\n            autocomplete: function autocomplete(el) {\n                var success = false, $el = $(el);\n                ttEach(this.first(), function(t) {\n                    success = t.autocomplete($el);\n                });\n                return success;\n            },\n            moveCursor: function moveCursoe(delta) {\n                var success = false;\n                ttEach(this.first(), function(t) {\n                    success = t.moveCursor(delta);\n                });\n                return success;\n            },\n            val: function val(newVal) {\n                var query;\n                if (!arguments.length) {\n                    ttEach(this.first(), function(t) {\n                        query = t.getVal();\n                    });\n                    return query;\n                } else {\n                    ttEach(this, function(t) {\n                        t.setVal(_.toStr(newVal));\n                    });\n                    return this;\n                }\n            },\n            destroy: function destroy() {\n                ttEach(this, function(typeahead, $input) {\n                    revert($input);\n                    typeahead.destroy();\n                });\n                return this;\n            }\n        };\n        $.fn.typeahead = function(method) {\n            if (methods[method]) {\n                return methods[method].apply(this, [].slice.call(arguments, 1));\n            } else {\n                return methods.initialize.apply(this, arguments);\n            }\n        };\n        $.fn.typeahead.noConflict = function noConflict() {\n            $.fn.typeahead = old;\n            return this;\n        };\n        function ttEach($els, fn) {\n            $els.each(function() {\n                var $input = $(this), typeahead;\n                (typeahead = $input.data(keys.typeahead)) && fn(typeahead, $input);\n            });\n        }\n        function buildHintFromInput($input, www) {\n            return $input.clone().addClass(www.classes.hint).removeData().css(www.css.hint).css(getBackgroundStyles($input)).prop({\n                readonly: true,\n                required: false\n            }).removeAttr(\"id name placeholder\").removeClass(\"required\").attr({\n                spellcheck: \"false\",\n                tabindex: -1\n            });\n        }\n        function prepInput($input, www) {\n            $input.data(keys.attrs, {\n                dir: $input.attr(\"dir\"),\n                autocomplete: $input.attr(\"autocomplete\"),\n                spellcheck: $input.attr(\"spellcheck\"),\n                style: $input.attr(\"style\")\n            });\n            $input.addClass(www.classes.input).attr({\n                spellcheck: false\n            });\n            try {\n                !$input.attr(\"dir\") && $input.attr(\"dir\", \"auto\");\n            } catch (e) {}\n            return $input;\n        }\n        function getBackgroundStyles($el) {\n            return {\n                backgroundAttachment: $el.css(\"background-attachment\"),\n                backgroundClip: $el.css(\"background-clip\"),\n                backgroundColor: $el.css(\"background-color\"),\n                backgroundImage: $el.css(\"background-image\"),\n                backgroundOrigin: $el.css(\"background-origin\"),\n                backgroundPosition: $el.css(\"background-position\"),\n                backgroundRepeat: $el.css(\"background-repeat\"),\n                backgroundSize: $el.css(\"background-size\")\n            };\n        }\n        function revert($input) {\n            var www, $wrapper;\n            www = $input.data(keys.www);\n            $wrapper = $input.parent().filter(www.selectors.wrapper);\n            _.each($input.data(keys.attrs), function(val, key) {\n                _.isUndefined(val) ? $input.removeAttr(key) : $input.attr(key, val);\n            });\n            $input.removeData(keys.typeahead).removeData(keys.www).removeData(keys.attr).removeClass(www.classes.input);\n            if ($wrapper.length) {\n                $input.detach().insertAfter($wrapper);\n                $wrapper.remove();\n            }\n        }\n        function $elOrNull(obj) {\n            var isValid, $el;\n            isValid = _.isJQuery(obj) || _.isElement(obj);\n            $el = isValid ? $(obj).first() : [];\n            return $el.length ? $el : null;\n        }\n    })();\n});"
  },
  {
    "path": "docs/docsets/SwiftJWT.docset/Contents/Resources/Documents/search.json",
    "content": "{\"Structs/ValidateClaimsResult.html#/s:8SwiftJWT20ValidateClaimsResultV11descriptionSSvp\":{\"name\":\"description\",\"abstract\":\"<p>The human readable description of the ValidateClaimsResult</p>\",\"parent_name\":\"ValidateClaimsResult\"},\"Structs/ValidateClaimsResult.html#/s:8SwiftJWT20ValidateClaimsResultV7successACvpZ\":{\"name\":\"success\",\"abstract\":\"<p>Successful validation.</p>\",\"parent_name\":\"ValidateClaimsResult\"},\"Structs/ValidateClaimsResult.html#/s:8SwiftJWT20ValidateClaimsResultV17invalidExpirationACvpZ\":{\"name\":\"invalidExpiration\",\"abstract\":\"<p>Invalid Expiration claim.</p>\",\"parent_name\":\"ValidateClaimsResult\"},\"Structs/ValidateClaimsResult.html#/s:8SwiftJWT20ValidateClaimsResultV7expiredACvpZ\":{\"name\":\"expired\",\"abstract\":\"<p>Expired token: expiration time claim is in the past.</p>\",\"parent_name\":\"ValidateClaimsResult\"},\"Structs/ValidateClaimsResult.html#/s:8SwiftJWT20ValidateClaimsResultV16invalidNotBeforeACvpZ\":{\"name\":\"invalidNotBefore\",\"abstract\":\"<p>Invalid Not Before claim.</p>\",\"parent_name\":\"ValidateClaimsResult\"},\"Structs/ValidateClaimsResult.html#/s:8SwiftJWT20ValidateClaimsResultV9notBeforeACvpZ\":{\"name\":\"notBefore\",\"abstract\":\"<p>Not Before claim is in the future.</p>\",\"parent_name\":\"ValidateClaimsResult\"},\"Structs/ValidateClaimsResult.html#/s:8SwiftJWT20ValidateClaimsResultV15invalidIssuedAtACvpZ\":{\"name\":\"invalidIssuedAt\",\"abstract\":\"<p>Invalid Issued At claim.</p>\",\"parent_name\":\"ValidateClaimsResult\"},\"Structs/ValidateClaimsResult.html#/s:8SwiftJWT20ValidateClaimsResultV8issuedAtACvpZ\":{\"name\":\"issuedAt\",\"abstract\":\"<p>Issued At claim is in the future.</p>\",\"parent_name\":\"ValidateClaimsResult\"},\"Structs/ValidateClaimsResult.html#/s:8SwiftJWT20ValidateClaimsResultV2eeoiySbAC_ACtFZ\":{\"name\":\"==(_:_:)\",\"abstract\":\"<p>Check if two ValidateClaimsResults are equal. Required for the Equatable protocol</p>\",\"parent_name\":\"ValidateClaimsResult\"},\"Structs/JWTVerifier.html#/s:8SwiftJWT11JWTVerifierV5rs2569publicKeyAC10Foundation4DataV_tFZ\":{\"name\":\"rs256(publicKey:)\",\"abstract\":\"<p>Initialize a JWTVerifier using the RSA 256 bits algorithm and the provided publicKey.</p>\",\"parent_name\":\"JWTVerifier\"},\"Structs/JWTVerifier.html#/s:8SwiftJWT11JWTVerifierV5rs3849publicKeyAC10Foundation4DataV_tFZ\":{\"name\":\"rs384(publicKey:)\",\"abstract\":\"<p>Initialize a JWTVerifier using the RSA 384 bits algorithm and the provided publicKey.</p>\",\"parent_name\":\"JWTVerifier\"},\"Structs/JWTVerifier.html#/s:8SwiftJWT11JWTVerifierV5rs5129publicKeyAC10Foundation4DataV_tFZ\":{\"name\":\"rs512(publicKey:)\",\"abstract\":\"<p>Initialize a JWTVerifier using the RSA 512 bits algorithm and the provided publicKey.</p>\",\"parent_name\":\"JWTVerifier\"},\"Structs/JWTVerifier.html#/s:8SwiftJWT11JWTVerifierV5rs25611certificateAC10Foundation4DataV_tFZ\":{\"name\":\"rs256(certificate:)\",\"abstract\":\"<p>Initialize a JWTVerifier using the RSA 256 bits algorithm and the provided certificate.</p>\",\"parent_name\":\"JWTVerifier\"},\"Structs/JWTVerifier.html#/s:8SwiftJWT11JWTVerifierV5rs38411certificateAC10Foundation4DataV_tFZ\":{\"name\":\"rs384(certificate:)\",\"abstract\":\"<p>Initialize a JWTVerifier using the RSA 384 bits algorithm and the provided certificate.</p>\",\"parent_name\":\"JWTVerifier\"},\"Structs/JWTVerifier.html#/s:8SwiftJWT11JWTVerifierV5rs51211certificateAC10Foundation4DataV_tFZ\":{\"name\":\"rs512(certificate:)\",\"abstract\":\"<p>Initialize a JWTVerifier using the RSA 512 bits algorithm and the provided certificate.</p>\",\"parent_name\":\"JWTVerifier\"},\"Structs/JWTVerifier.html#/s:8SwiftJWT11JWTVerifierV5ps2569publicKeyAC10Foundation4DataV_tFZ\":{\"name\":\"ps256(publicKey:)\",\"abstract\":\"<p>Initialize a JWTVerifier using the RSA-PSS 256 bits algorithm and the provided publicKey.</p>\",\"parent_name\":\"JWTVerifier\"},\"Structs/JWTVerifier.html#/s:8SwiftJWT11JWTVerifierV5ps3849publicKeyAC10Foundation4DataV_tFZ\":{\"name\":\"ps384(publicKey:)\",\"abstract\":\"<p>Initialize a JWTVerifier using the RSA-PSS 384 bits algorithm and the provided publicKey.</p>\",\"parent_name\":\"JWTVerifier\"},\"Structs/JWTVerifier.html#/s:8SwiftJWT11JWTVerifierV5ps5129publicKeyAC10Foundation4DataV_tFZ\":{\"name\":\"ps512(publicKey:)\",\"abstract\":\"<p>Initialize a JWTVerifier using the RSA-PSS 512 bits algorithm and the provided publicKey.\",\"parent_name\":\"JWTVerifier\"},\"Structs/JWTVerifier.html#/s:8SwiftJWT11JWTVerifierV5hs2563keyAC10Foundation4DataV_tFZ\":{\"name\":\"hs256(key:)\",\"abstract\":\"<p>Initialize a JWTSigner using the HMAC 256 bits algorithm and the provided privateKey.</p>\",\"parent_name\":\"JWTVerifier\"},\"Structs/JWTVerifier.html#/s:8SwiftJWT11JWTVerifierV5hs3843keyAC10Foundation4DataV_tFZ\":{\"name\":\"hs384(key:)\",\"abstract\":\"<p>Initialize a JWTSigner using the HMAC 384 bits algorithm and the provided privateKey.</p>\",\"parent_name\":\"JWTVerifier\"},\"Structs/JWTVerifier.html#/s:8SwiftJWT11JWTVerifierV5hs5123keyAC10Foundation4DataV_tFZ\":{\"name\":\"hs512(key:)\",\"abstract\":\"<p>Initialize a JWTSigner using the HMAC 512 bits algorithm and the provided privateKey.</p>\",\"parent_name\":\"JWTVerifier\"},\"Structs/JWTVerifier.html#/s:8SwiftJWT11JWTVerifierV5es2569publicKeyAC10Foundation4DataV_tFZ\":{\"name\":\"es256(publicKey:)\",\"abstract\":\"<p>Initialize a JWTVerifier using the ECDSA SHA 256 algorithm and the provided public key.</p>\",\"parent_name\":\"JWTVerifier\"},\"Structs/JWTVerifier.html#/s:8SwiftJWT11JWTVerifierV5es3849publicKeyAC10Foundation4DataV_tFZ\":{\"name\":\"es384(publicKey:)\",\"abstract\":\"<p>Initialize a JWTVerifier using the ECDSA SHA 384 algorithm and the provided public key.</p>\",\"parent_name\":\"JWTVerifier\"},\"Structs/JWTVerifier.html#/s:8SwiftJWT11JWTVerifierV5es5129publicKeyAC10Foundation4DataV_tFZ\":{\"name\":\"es512(publicKey:)\",\"abstract\":\"<p>Initialize a JWTVerifier using the ECDSA SHA 512 algorithm and the provided public key.</p>\",\"parent_name\":\"JWTVerifier\"},\"Structs/JWTVerifier.html#/s:8SwiftJWT11JWTVerifierV4noneACvpZ\":{\"name\":\"none\",\"abstract\":\"<p>Initialize a JWTVerifier that will always return true when verifying the JWT. This is equivelent to using the &ldquo;none&rdquo; alg header.</p>\",\"parent_name\":\"JWTVerifier\"},\"Structs/JWTSigner.html#/s:8SwiftJWT9JWTSignerV5rs25610privateKeyAC10Foundation4DataV_tFZ\":{\"name\":\"rs256(privateKey:)\",\"abstract\":\"<p>Initialize a JWTSigner using the RSA 256 bits algorithm and the provided privateKey.</p>\",\"parent_name\":\"JWTSigner\"},\"Structs/JWTSigner.html#/s:8SwiftJWT9JWTSignerV5rs38410privateKeyAC10Foundation4DataV_tFZ\":{\"name\":\"rs384(privateKey:)\",\"abstract\":\"<p>Initialize a JWTSigner using the RSA 384 bits algorithm and the provided privateKey.</p>\",\"parent_name\":\"JWTSigner\"},\"Structs/JWTSigner.html#/s:8SwiftJWT9JWTSignerV5rs51210privateKeyAC10Foundation4DataV_tFZ\":{\"name\":\"rs512(privateKey:)\",\"abstract\":\"<p>Initialize a JWTSigner using the RSA 512 bits algorithm and the provided privateKey.</p>\",\"parent_name\":\"JWTSigner\"},\"Structs/JWTSigner.html#/s:8SwiftJWT9JWTSignerV5ps25610privateKeyAC10Foundation4DataV_tFZ\":{\"name\":\"ps256(privateKey:)\",\"abstract\":\"<p>Initialize a JWTSigner using the RSA-PSS 256 bits algorithm and the provided privateKey.</p>\",\"parent_name\":\"JWTSigner\"},\"Structs/JWTSigner.html#/s:8SwiftJWT9JWTSignerV5ps38410privateKeyAC10Foundation4DataV_tFZ\":{\"name\":\"ps384(privateKey:)\",\"abstract\":\"<p>Initialize a JWTSigner using the RSA-PSS 384 bits algorithm and the provided privateKey.</p>\",\"parent_name\":\"JWTSigner\"},\"Structs/JWTSigner.html#/s:8SwiftJWT9JWTSignerV5ps51210privateKeyAC10Foundation4DataV_tFZ\":{\"name\":\"ps512(privateKey:)\",\"abstract\":\"<p>Initialize a JWTSigner using the RSA-PSS 512 bits algorithm and the provided privateKey.\",\"parent_name\":\"JWTSigner\"},\"Structs/JWTSigner.html#/s:8SwiftJWT9JWTSignerV5hs2563keyAC10Foundation4DataV_tFZ\":{\"name\":\"hs256(key:)\",\"abstract\":\"<p>Initialize a JWTSigner using the HMAC 256 bits algorithm and the provided privateKey.</p>\",\"parent_name\":\"JWTSigner\"},\"Structs/JWTSigner.html#/s:8SwiftJWT9JWTSignerV5hs3843keyAC10Foundation4DataV_tFZ\":{\"name\":\"hs384(key:)\",\"abstract\":\"<p>Initialize a JWTSigner using the HMAC 384 bits algorithm and the provided privateKey.</p>\",\"parent_name\":\"JWTSigner\"},\"Structs/JWTSigner.html#/s:8SwiftJWT9JWTSignerV5hs5123keyAC10Foundation4DataV_tFZ\":{\"name\":\"hs512(key:)\",\"abstract\":\"<p>Initialize a JWTSigner using the HMAC 512 bits algorithm and the provided privateKey.</p>\",\"parent_name\":\"JWTSigner\"},\"Structs/JWTSigner.html#/s:8SwiftJWT9JWTSignerV5es25610privateKeyAC10Foundation4DataV_tFZ\":{\"name\":\"es256(privateKey:)\",\"abstract\":\"<p>Initialize a JWTSigner using the ECDSA SHA256 algorithm and the provided privateKey.</p>\",\"parent_name\":\"JWTSigner\"},\"Structs/JWTSigner.html#/s:8SwiftJWT9JWTSignerV5es38410privateKeyAC10Foundation4DataV_tFZ\":{\"name\":\"es384(privateKey:)\",\"abstract\":\"<p>Initialize a JWTSigner using the ECDSA SHA384 algorithm and the provided privateKey.</p>\",\"parent_name\":\"JWTSigner\"},\"Structs/JWTSigner.html#/s:8SwiftJWT9JWTSignerV5es51210privateKeyAC10Foundation4DataV_tFZ\":{\"name\":\"es512(privateKey:)\",\"abstract\":\"<p>Initialize a JWTSigner using the ECDSA SHA512 algorithm and the provided privateKey.</p>\",\"parent_name\":\"JWTSigner\"},\"Structs/JWTSigner.html#/s:8SwiftJWT9JWTSignerV4noneACvpZ\":{\"name\":\"none\",\"abstract\":\"<p>Initialize a JWTSigner that will not sign the JWT. This is equivelent to using the &ldquo;none&rdquo; alg header.</p>\",\"parent_name\":\"JWTSigner\"},\"Structs/JWTError.html#/s:8SwiftJWT8JWTErrorV20localizedDescriptionSSvp\":{\"name\":\"localizedDescription\",\"abstract\":\"<p>A human readable description of the error.</p>\",\"parent_name\":\"JWTError\"},\"Structs/JWTError.html#/s:8SwiftJWT8JWTErrorV16invalidJWTStringACvpZ\":{\"name\":\"invalidJWTString\",\"abstract\":\"<p>Error when an invalid JWT String is provided</p>\",\"parent_name\":\"JWTError\"},\"Structs/JWTError.html#/s:8SwiftJWT8JWTErrorV18failedVerificationACvpZ\":{\"name\":\"failedVerification\",\"abstract\":\"<p>Error when the JWT signiture fails verification.</p>\",\"parent_name\":\"JWTError\"},\"Structs/JWTError.html#/s:8SwiftJWT8JWTErrorV14osVersionToLowACvpZ\":{\"name\":\"osVersionToLow\",\"abstract\":\"<p>Error when using RSA encryption with an OS version that is too low.</p>\",\"parent_name\":\"JWTError\"},\"Structs/JWTError.html#/s:8SwiftJWT8JWTErrorV17invalidPrivateKeyACvpZ\":{\"name\":\"invalidPrivateKey\",\"abstract\":\"<p>Error when an invalid private key is provided for RSA encryption.</p>\",\"parent_name\":\"JWTError\"},\"Structs/JWTError.html#/s:8SwiftJWT8JWTErrorV15invalidUTF8DataACvpZ\":{\"name\":\"invalidUTF8Data\",\"abstract\":\"<p>Error when the provided Data cannot be decoded to a String</p>\",\"parent_name\":\"JWTError\"},\"Structs/JWTError.html#/s:8SwiftJWT8JWTErrorV12invalidKeyIDACvpZ\":{\"name\":\"invalidKeyID\",\"abstract\":\"<p>Error when the KeyID field <code>kid</code> in the JWT header fails to generate a JWTSigner or JWTVerifier</p>\",\"parent_name\":\"JWTError\"},\"Structs/JWTError.html#/s:8SwiftJWT8JWTErrorV17missingPEMHeadersACvpZ\":{\"name\":\"missingPEMHeaders\",\"abstract\":\"<p>Error when a PEM string is provided without the expected PEM headers/footers. (e.g. &mdash;&ndash;BEGIN PRIVATE KEY&mdash;&ndash;)</p>\",\"parent_name\":\"JWTError\"},\"Structs/JWTError.html#/s:8SwiftJWT8JWTErrorV2eeoiySbAC_ACtFZ\":{\"name\":\"==(_:_:)\",\"abstract\":\"<p>Function to check if JWTErrors are equal. Required for equatable protocol.</p>\",\"parent_name\":\"JWTError\"},\"Structs/JWTError.html#/s:8SwiftJWT8JWTErrorV2teoiySbAC_s5Error_ptFZ\":{\"name\":\"~=(_:_:)\",\"abstract\":\"<p>Function to enable pattern matching against generic Errors.</p>\",\"parent_name\":\"JWTError\"},\"Structs/JWT.html#/s:8SwiftJWT0B0V6headerAA6HeaderVvp\":{\"name\":\"header\",\"abstract\":\"<p>The JWT header.</p>\",\"parent_name\":\"JWT\"},\"Structs/JWT.html#/s:8SwiftJWT0B0V6claimsxvp\":{\"name\":\"claims\",\"abstract\":\"<p>The JWT claims</p>\",\"parent_name\":\"JWT\"},\"Structs/JWT.html#/s:8SwiftJWT0B0V6header6claimsACyxGAA6HeaderV_xtcfc\":{\"name\":\"init(header:claims:)\",\"abstract\":\"<p>Initialize a <code>JWT</code> instance from a <code><a href=\\\"36f8f5912051ae747ef441d6511ca4cbStructs/Header.html\\\">Header</a></code> and <code><a href=\\\"36f8f5912051ae747ef441d6511ca4cbProtocols/Claims.html\\\">Claims</a></code>.</p>\",\"parent_name\":\"JWT\"},\"Structs/JWT.html#/s:8SwiftJWT0B0V9jwtString8verifierACyxGSS_AA11JWTVerifierVtKcfc\":{\"name\":\"init(jwtString:verifier:)\",\"abstract\":\"<p>Initialize a <code>JWT</code> instance from a JWT String.\",\"parent_name\":\"JWT\"},\"Structs/JWT.html#/s:8SwiftJWT0B0V4sign5usingSSAA9JWTSignerV_tKF\":{\"name\":\"sign(using:)\",\"abstract\":\"<p>Sign the JWT using the given algorithm and encode the header, claims and signature as a JWT String.</p>\",\"parent_name\":\"JWT\"},\"Structs/JWT.html#/s:8SwiftJWT0B0V6verify_5usingSbSS_AA11JWTVerifierVtFZ\":{\"name\":\"verify(_:using:)\",\"abstract\":\"<p>Verify the signature of the encoded JWT using the given algorithm.</p>\",\"parent_name\":\"JWT\"},\"Structs/JWT.html#/s:8SwiftJWT0B0V14validateClaims6leewayAA08ValidateD6ResultVSd_tF\":{\"name\":\"validateClaims(leeway:)\",\"abstract\":\"<p>Validate the time based standard JWT claims.\",\"parent_name\":\"JWT\"},\"Structs/Header.html#/s:8SwiftJWT6HeaderV3typSSSgvp\":{\"name\":\"typ\",\"abstract\":\"<p>Type Header Parameter</p>\",\"parent_name\":\"Header\"},\"Structs/Header.html#/s:8SwiftJWT6HeaderV3algSSSgvp\":{\"name\":\"alg\",\"abstract\":\"<p>Algorithm Header Parameter</p>\",\"parent_name\":\"Header\"},\"Structs/Header.html#/s:8SwiftJWT6HeaderV3jkuSSSgvp\":{\"name\":\"jku\",\"abstract\":\"<p>JSON Web Token Set URL Header Parameter</p>\",\"parent_name\":\"Header\"},\"Structs/Header.html#/s:8SwiftJWT6HeaderV3jwkSSSgvp\":{\"name\":\"jwk\",\"abstract\":\"<p>JSON Web Key Header Parameter</p>\",\"parent_name\":\"Header\"},\"Structs/Header.html#/s:8SwiftJWT6HeaderV3kidSSSgvp\":{\"name\":\"kid\",\"abstract\":\"<p>Key ID Header Parameter</p>\",\"parent_name\":\"Header\"},\"Structs/Header.html#/s:8SwiftJWT6HeaderV3x5uSSSgvp\":{\"name\":\"x5u\",\"abstract\":\"<p>X.509 URL Header Parameter</p>\",\"parent_name\":\"Header\"},\"Structs/Header.html#/s:8SwiftJWT6HeaderV3x5cSaySSGSgvp\":{\"name\":\"x5c\",\"abstract\":\"<p>X.509 Certificate Chain Header Parameter</p>\",\"parent_name\":\"Header\"},\"Structs/Header.html#/s:8SwiftJWT6HeaderV3x5tSSSgvp\":{\"name\":\"x5t\",\"abstract\":\"<p>X.509 Certificate SHA-1 Thumbprint Header Parameter</p>\",\"parent_name\":\"Header\"},\"Structs/Header.html#/s:8SwiftJWT6HeaderV7x5tS256SSSgvp\":{\"name\":\"x5tS256\",\"abstract\":\"<p>X.509 Certificate SHA-256 Thumbprint Header Parameter</p>\",\"parent_name\":\"Header\"},\"Structs/Header.html#/s:8SwiftJWT6HeaderV3ctySSSgvp\":{\"name\":\"cty\",\"abstract\":\"<p>Content Type Header Parameter</p>\",\"parent_name\":\"Header\"},\"Structs/Header.html#/s:8SwiftJWT6HeaderV4critSaySSGSgvp\":{\"name\":\"crit\",\"abstract\":\"<p>Critical Header Parameter</p>\",\"parent_name\":\"Header\"},\"Structs/Header.html#/s:8SwiftJWT6HeaderV3typ3jku3jwk3kid3x5u3x5c3x5t0J4S2563cty4critACSSSg_A4NSaySSGSgA3nPtcfc\":{\"name\":\"init(typ:jku:jwk:kid:x5u:x5c:x5t:x5tS256:cty:crit:)\",\"abstract\":\"<p>Initialize a <code>Header</code> instance.</p>\",\"parent_name\":\"Header\"},\"Structs/AddressClaim.html#/s:8SwiftJWT12AddressClaimV9formattedSSSgvp\":{\"name\":\"formatted\",\"abstract\":\"<p>Full mailing address, formatted for display or use on a mailing label. This field MAY contain multiple lines, separated by newlines. Newlines can be represented either as a carriage return/line feed pair (&ldquo;\\\\r\\\\n&rdquo;) or as a single line feed character (&ldquo;\\\\n&rdquo;).</p>\",\"parent_name\":\"AddressClaim\"},\"Structs/AddressClaim.html#/s:8SwiftJWT12AddressClaimV14street_addressSSSgvp\":{\"name\":\"street_address\",\"abstract\":\"<p>Full street address component, which MAY include house number, street name, Post Office Box, and multi-line extended street address information. This field MAY contain multiple lines, separated by newlines. Newlines can be represented either as a carriage return/line feed pair (&ldquo;\\\\r\\\\n&rdquo;) or as a single line feed character (&ldquo;\\\\n&rdquo;).</p>\",\"parent_name\":\"AddressClaim\"},\"Structs/AddressClaim.html#/s:8SwiftJWT12AddressClaimV8localitySSSgvp\":{\"name\":\"locality\",\"abstract\":\"<p>City or locality component.</p>\",\"parent_name\":\"AddressClaim\"},\"Structs/AddressClaim.html#/s:8SwiftJWT12AddressClaimV6regionSSSgvp\":{\"name\":\"region\",\"abstract\":\"<p>State, province, prefecture, or region component.</p>\",\"parent_name\":\"AddressClaim\"},\"Structs/AddressClaim.html#/s:8SwiftJWT12AddressClaimV11postal_codeSSSgvp\":{\"name\":\"postal_code\",\"abstract\":\"<p>Zip code or postal code component.</p>\",\"parent_name\":\"AddressClaim\"},\"Structs/AddressClaim.html#/s:8SwiftJWT12AddressClaimV7countrySSSgvp\":{\"name\":\"country\",\"abstract\":\"<p>Country name component.</p>\",\"parent_name\":\"AddressClaim\"},\"Structs/AddressClaim.html\":{\"name\":\"AddressClaim\",\"abstract\":\"<p>Struct representing an AddressClaim as defined in the <a href=\\\"http://openid.net/specs/openid-connect-core-1_0.html\\\">OpenID specs</a>.</p>\"},\"Structs/Header.html\":{\"name\":\"Header\",\"abstract\":\"<p>A representation of a JSON Web Token header.\"},\"Structs/JWT.html\":{\"name\":\"JWT\",\"abstract\":\"<p>A struct representing the <code><a href=\\\"36f8f5912051ae747ef441d6511ca4cbStructs/Header.html\\\">Header</a></code> and <code><a href=\\\"36f8f5912051ae747ef441d6511ca4cbProtocols/Claims.html\\\">Claims</a></code> of a JSON Web Token.</p>\"},\"Structs/JWTError.html\":{\"name\":\"JWTError\",\"abstract\":\"<p>A struct representing the different errors that can be thrown by SwiftJWT</p>\"},\"Structs/JWTSigner.html\":{\"name\":\"JWTSigner\",\"abstract\":\"<p>A struct that will be used to sign the JWT <code><a href=\\\"36f8f5912051ae747ef441d6511ca4cbStructs/Header.html\\\">Header</a></code> and <code><a href=\\\"36f8f5912051ae747ef441d6511ca4cbProtocols/Claims.html\\\">Claims</a></code> and generate a signed JWT.\"},\"Structs/JWTVerifier.html\":{\"name\":\"JWTVerifier\",\"abstract\":\"<p>A struct that will be used to verify the signature of a JWT is valid for the provided <code><a href=\\\"36f8f5912051ae747ef441d6511ca4cbStructs/Header.html\\\">Header</a></code> and <code><a href=\\\"36f8f5912051ae747ef441d6511ca4cbProtocols/Claims.html\\\">Claims</a></code>.\"},\"Structs/ValidateClaimsResult.html\":{\"name\":\"ValidateClaimsResult\",\"abstract\":\"<p>ValidateClaimsResult list the possible results of a call to JWT.validateClaims method.\"},\"Protocols/Claims.html#/s:8SwiftJWT6ClaimsP3exp10Foundation4DateVSgvp\":{\"name\":\"exp\",\"abstract\":\"<p>The &ldquo;exp&rdquo; (expiration time) claim identifies the expiration time on\",\"parent_name\":\"Claims\"},\"Protocols/Claims.html#/s:8SwiftJWT6ClaimsP3nbf10Foundation4DateVSgvp\":{\"name\":\"nbf\",\"abstract\":\"<p>The &ldquo;nbf&rdquo; (not before) claim identifies the time before which the JWT\",\"parent_name\":\"Claims\"},\"Protocols/Claims.html#/s:8SwiftJWT6ClaimsP3iat10Foundation4DateVSgvp\":{\"name\":\"iat\",\"abstract\":\"<p>The &ldquo;iat&rdquo; (issued at) claim identifies the time at which the JWT was\",\"parent_name\":\"Claims\"},\"Protocols/Claims.html#/s:8SwiftJWT6ClaimsP6encodeSSyKF\":{\"name\":\"encode()\",\"abstract\":\"<p>Encode the Claim object as a Base64 String.</p>\",\"parent_name\":\"Claims\"},\"Protocols/Claims.html\":{\"name\":\"Claims\",\"abstract\":\"<p>A protocol for representing the claims on a JSON web token.\"},\"Classes/JWTDecoder.html#/s:8SwiftJWT10JWTDecoderC11jwtVerifierAcA11JWTVerifierV_tcfc\":{\"name\":\"init(jwtVerifier:)\",\"abstract\":\"<p>Initialize a <code>JWTDecoder</code> instance with a single <code><a href=\\\"36f8f5912051ae747ef441d6511ca4cbStructs/JWTVerifier.html\\\">JWTVerifier</a></code>.</p>\",\"parent_name\":\"JWTDecoder\"},\"Classes/JWTDecoder.html#/s:8SwiftJWT10JWTDecoderC15keyIDToVerifierAcA11JWTVerifierVSgSSc_tcfc\":{\"name\":\"init(keyIDToVerifier:)\",\"abstract\":\"<p>Initialize a <code>JWTDecoder</code> instance with a function to generate the <code><a href=\\\"36f8f5912051ae747ef441d6511ca4cbStructs/JWTVerifier.html\\\">JWTVerifier</a></code> from the JWT <code>kid</code> header.</p>\",\"parent_name\":\"JWTDecoder\"},\"Classes/JWTDecoder.html#/s:8SwiftJWT10JWTDecoderC6decode_10fromStringxxm_SStKSeRzlF\":{\"name\":\"decode(_:fromString:)\",\"abstract\":\"<p>Decode a <code><a href=\\\"36f8f5912051ae747ef441d6511ca4cbStructs/JWT.html\\\">JWT</a></code> instance from a JWT String.</p>\",\"parent_name\":\"JWTDecoder\"},\"Classes/JWTDecoder.html#/s:8SwiftJWT10JWTDecoderC6decode_4fromxxm_10Foundation4DataVtKSeRzlF\":{\"name\":\"decode(_:from:)\",\"abstract\":\"<p>Decode a <code><a href=\\\"36f8f5912051ae747ef441d6511ca4cbStructs/JWT.html\\\">JWT</a></code> instance from a utf8 encoded JWT String.</p>\",\"parent_name\":\"JWTDecoder\"},\"Classes/JWTDecoder.html#/s:8SwiftJWT10JWTDecoderC4data16base64urlEncoded10Foundation4DataVSgSS_tFZ\":{\"name\":\"data(base64urlEncoded:)\",\"abstract\":\"<p>Initializes a new <code>Data</code> from the base64url-encoded <code>String</code> provided. The\",\"parent_name\":\"JWTDecoder\"},\"Classes/JWTEncoder.html#/s:8SwiftJWT10JWTEncoderC9jwtSignerAcA9JWTSignerV_tcfc\":{\"name\":\"init(jwtSigner:)\",\"abstract\":\"<p>Initialize a <code>JWTEncoder</code> instance with a single <code><a href=\\\"36f8f5912051ae747ef441d6511ca4cbStructs/JWTSigner.html\\\">JWTSigner</a></code>.</p>\",\"parent_name\":\"JWTEncoder\"},\"Classes/JWTEncoder.html#/s:8SwiftJWT10JWTEncoderC13keyIDToSignerAcA9JWTSignerVSgSSc_tcfc\":{\"name\":\"init(keyIDToSigner:)\",\"abstract\":\"<p>Initialize a <code>JWTEncoder</code> instance with a function to generate the <code><a href=\\\"36f8f5912051ae747ef441d6511ca4cbStructs/JWTSigner.html\\\">JWTSigner</a></code> from the JWT <code>kid</code> header.</p>\",\"parent_name\":\"JWTEncoder\"},\"Classes/JWTEncoder.html#/s:8SwiftJWT10JWTEncoderC6encodey10Foundation4DataVxKSERzlF\":{\"name\":\"encode(_:)\",\"abstract\":\"<p>Encode a <code><a href=\\\"36f8f5912051ae747ef441d6511ca4cbStructs/JWT.html\\\">JWT</a></code> instance into a UTF8 encoded JWT String.</p>\",\"parent_name\":\"JWTEncoder\"},\"Classes/JWTEncoder.html#/s:8SwiftJWT10JWTEncoderC14encodeToStringySSxKSERzlF\":{\"name\":\"encodeToString(_:)\",\"abstract\":\"<p>Encode a <code><a href=\\\"36f8f5912051ae747ef441d6511ca4cbStructs/JWT.html\\\">JWT</a></code> instance as a JWT String.</p>\",\"parent_name\":\"JWTEncoder\"},\"Classes/JWTEncoder.html#/s:8SwiftJWT10JWTEncoderC22base64urlEncodedString4dataSS10Foundation4DataV_tFZ\":{\"name\":\"base64urlEncodedString(data:)\",\"abstract\":\"<p>Returns a <code>String</code> representation of this data, encoded in base64url format\",\"parent_name\":\"JWTEncoder\"},\"Classes/ClaimsStandardJWT.html#/s:8SwiftJWT014ClaimsStandardB0C3iss3sub3aud3exp3nbf3iat3jtiACSSSg_AKSaySSGSg10Foundation4DateVSgA2qKtcfc\":{\"name\":\"init(iss:sub:aud:exp:nbf:iat:jti:)\",\"abstract\":\"<p>Initialize a <code>ClaimsStandardJWT</code></p>\",\"parent_name\":\"ClaimsStandardJWT\"},\"Classes/ClaimsStandardJWT.html#/s:8SwiftJWT014ClaimsStandardB0C3issSSSgvp\":{\"name\":\"iss\",\"abstract\":\"<p>The &ldquo;iss&rdquo; (issuer) claim identifies the principal that issued the\",\"parent_name\":\"ClaimsStandardJWT\"},\"Classes/ClaimsStandardJWT.html#/s:8SwiftJWT014ClaimsStandardB0C3subSSSgvp\":{\"name\":\"sub\",\"abstract\":\"<p>The &ldquo;sub&rdquo; (subject) claim identifies the principal that is the\",\"parent_name\":\"ClaimsStandardJWT\"},\"Classes/ClaimsStandardJWT.html#/s:8SwiftJWT014ClaimsStandardB0C3audSaySSGSgvp\":{\"name\":\"aud\",\"abstract\":\"<p>The &ldquo;aud&rdquo; (audience) claim identifies the recipients that the JWT is\",\"parent_name\":\"ClaimsStandardJWT\"},\"Classes/ClaimsStandardJWT.html#/s:8SwiftJWT014ClaimsStandardB0C3exp10Foundation4DateVSgvp\":{\"name\":\"exp\",\"abstract\":\"<p>The &ldquo;exp&rdquo; (expiration time) claim identifies the expiration time on\",\"parent_name\":\"ClaimsStandardJWT\"},\"Classes/ClaimsStandardJWT.html#/s:8SwiftJWT014ClaimsStandardB0C3nbf10Foundation4DateVSgvp\":{\"name\":\"nbf\",\"abstract\":\"<p>The &ldquo;nbf&rdquo; (not before) claim identifies the time before which the JWT\",\"parent_name\":\"ClaimsStandardJWT\"},\"Classes/ClaimsStandardJWT.html#/s:8SwiftJWT014ClaimsStandardB0C3iat10Foundation4DateVSgvp\":{\"name\":\"iat\",\"abstract\":\"<p>The &ldquo;iat&rdquo; (issued at) claim identifies the time at which the JWT was\",\"parent_name\":\"ClaimsStandardJWT\"},\"Classes/ClaimsStandardJWT.html#/s:8SwiftJWT014ClaimsStandardB0C3jtiSSSgvp\":{\"name\":\"jti\",\"abstract\":\"<p>The &ldquo;jti&rdquo; (JWT ID) claim provides a unique identifier for the JWT.\",\"parent_name\":\"ClaimsStandardJWT\"},\"Classes/ClaimsOpenID.html#/s:8SwiftJWT12ClaimsOpenIDC3iss3sub3aud3exp3iat9auth_time5nonce3acr3amr3azp4name06given_Q007family_Q007middle_Q08nickname18preferred_username7profile7picture7website5email14email_verified6gender9birthdate8zoneinfo6locale12phone_number21phone_number_verified7address10updated_atACSS_SSSaySSG10Foundation4DateVA8_A8_SgSSSgA10_A5_SgA10_A10_A10_A10_A10_A10_A10_A10_A10_A10_A10_SbSgA10_A10_A10_A10_A10_A12_AA12AddressClaimVSgA9_tcfc\":{\"name\":\"init(iss:sub:aud:exp:iat:auth_time:nonce:acr:amr:azp:name:given_name:family_name:middle_name:nickname:preferred_username:profile:picture:website:email:email_verified:gender:birthdate:zoneinfo:locale:phone_number:phone_number_verified:address:updated_at:)\",\"abstract\":\"<p>Initalise the <code>ClaimsOpenID</code></p>\",\"parent_name\":\"ClaimsOpenID\"},\"Classes/ClaimsOpenID.html#/s:8SwiftJWT12ClaimsOpenIDC3issSSvp\":{\"name\":\"iss\",\"abstract\":\"<p>Issuer Identifier for the Issuer of the response. The iss value is a case sensitive URL using the https scheme that contains scheme, host, and optionally, port number and path components and no query or fragment components.</p>\",\"parent_name\":\"ClaimsOpenID\"},\"Classes/ClaimsOpenID.html#/s:8SwiftJWT12ClaimsOpenIDC3subSSvp\":{\"name\":\"sub\",\"abstract\":\"<p>Subject Identifier. A locally unique and never reassigned identifier within the Issuer for the End-User, which is intended to be consumed by the Client, e.g., 24400320 or AItOawmwtWwcT0k51BayewNvutrJUqsvl6qs7A4. It MUST NOT exceed 255 ASCII characters in length. The sub value is case sensitive.</p>\",\"parent_name\":\"ClaimsOpenID\"},\"Classes/ClaimsOpenID.html#/s:8SwiftJWT12ClaimsOpenIDC3audSaySSGvp\":{\"name\":\"aud\",\"abstract\":\"<p>Audience(s) that this ID Token is intended for. It MUST contain the OAuth 2.0 client_id of the Relying Party as an audience value. It MAY also contain identifiers for other audiences.</p>\",\"parent_name\":\"ClaimsOpenID\"},\"Classes/ClaimsOpenID.html#/s:8SwiftJWT12ClaimsOpenIDC3exp10Foundation4DateVvp\":{\"name\":\"exp\",\"abstract\":\"<p>Expiration time on or after which the ID Token MUST NOT be accepted for processing. The processing of this parameter requires that the current date/time MUST be before the expiration date/time listed in the value. Implementers MAY provide for some small leeway, usually no more than a few minutes, to account for clock skew.</p>\",\"parent_name\":\"ClaimsOpenID\"},\"Classes/ClaimsOpenID.html#/s:8SwiftJWT12ClaimsOpenIDC3iat10Foundation4DateVvp\":{\"name\":\"iat\",\"abstract\":\"<p>Time at which the JWT was issued.</p>\",\"parent_name\":\"ClaimsOpenID\"},\"Classes/ClaimsOpenID.html#/s:8SwiftJWT12ClaimsOpenIDC9auth_time10Foundation4DateVSgvp\":{\"name\":\"auth_time\",\"abstract\":\"<p>Time when the End-User authentication occurred.</p>\",\"parent_name\":\"ClaimsOpenID\"},\"Classes/ClaimsOpenID.html#/s:8SwiftJWT12ClaimsOpenIDC5nonceSSSgvp\":{\"name\":\"nonce\",\"abstract\":\"<p>String value used to associate a Client session with an ID Token, and to mitigate replay attacks. The value is passed through unmodified from the Authentication Request to the ID Token. If present in the ID Token, Clients MUST verify that the nonce Claim Value is equal to the value of the nonce parameter sent in the Authentication Request. If present in the Authentication Request, Authorization Servers MUST include a nonce Claim in the ID Token with the Claim Value being the nonce value sent in the Authentication Request. Authorization Servers SHOULD perform no other processing on nonce values used.</p>\",\"parent_name\":\"ClaimsOpenID\"},\"Classes/ClaimsOpenID.html#/s:8SwiftJWT12ClaimsOpenIDC3acrSSSgvp\":{\"name\":\"acr\",\"abstract\":\"<p>Authentication Context Class Reference. String specifying an Authentication Context Class Reference value that identifies the Authentication Context Class that the authentication performed satisfied. The value &ldquo;0&rdquo; indicates the End-User authentication did not meet the requirements of ISO/IEC 29115 level 1. Authentications with level 0 SHOULD NOT be used to authorize access to any resource of any monetary value. Parties using this claim will need to agree upon the meanings of the values used, which may be context-specific.</p>\",\"parent_name\":\"ClaimsOpenID\"},\"Classes/ClaimsOpenID.html#/s:8SwiftJWT12ClaimsOpenIDC3amrSaySSGSgvp\":{\"name\":\"amr\",\"abstract\":\"<p>Authentication Methods References. JSON array of strings that are identifiers for authentication methods used in the authentication. For instance, values might indicate that both password and OTP authentication methods were used. Parties using this claim will need to agree upon the meanings of the values used, which may be context-specific.</p>\",\"parent_name\":\"ClaimsOpenID\"},\"Classes/ClaimsOpenID.html#/s:8SwiftJWT12ClaimsOpenIDC3azpSSSgvp\":{\"name\":\"azp\",\"abstract\":\"<p>Authorized party - the party to which the ID Token was issued. If present, it MUST contain the OAuth 2.0 Client ID of this party. This Claim is only needed when the ID Token has a single audience value and that audience is different than the authorized party. It MAY be included even when the authorized party is the same as the sole audience.</p>\",\"parent_name\":\"ClaimsOpenID\"},\"Classes/ClaimsOpenID.html#/s:8SwiftJWT12ClaimsOpenIDC4nameSSSgvp\":{\"name\":\"name\",\"abstract\":\"<p>End-User&rsquo;s full name in displayable form including all name parts, possibly including titles and suffixes, ordered according to the End-User&rsquo;s locale and preferences.</p>\",\"parent_name\":\"ClaimsOpenID\"},\"Classes/ClaimsOpenID.html#/s:8SwiftJWT12ClaimsOpenIDC10given_nameSSSgvp\":{\"name\":\"given_name\",\"abstract\":\"<p>Given name(s) or first name(s) of the End-User. Note that in some cultures, people can have multiple given names; all can be present, with the names being separated by space characters.</p>\",\"parent_name\":\"ClaimsOpenID\"},\"Classes/ClaimsOpenID.html#/s:8SwiftJWT12ClaimsOpenIDC11family_nameSSSgvp\":{\"name\":\"family_name\",\"abstract\":\"<p>Surname(s) or last name(s) of the End-User. Note that in some cultures, people can have multiple family names or no family name; all can be present, with the names being separated by space characters.</p>\",\"parent_name\":\"ClaimsOpenID\"},\"Classes/ClaimsOpenID.html#/s:8SwiftJWT12ClaimsOpenIDC11middle_nameSSSgvp\":{\"name\":\"middle_name\",\"abstract\":\"<p>Middle name(s) of the End-User. Note that in some cultures, people can have multiple middle names; all can be present, with the names being separated by space characters. Also note that in some cultures, middle names are not used.</p>\",\"parent_name\":\"ClaimsOpenID\"},\"Classes/ClaimsOpenID.html#/s:8SwiftJWT12ClaimsOpenIDC8nicknameSSSgvp\":{\"name\":\"nickname\",\"abstract\":\"<p>Casual name of the End-User that may or may not be the same as the given_name. For instance, a nickname value of Mike might be returned alongside a given_name value of Michael.</p>\",\"parent_name\":\"ClaimsOpenID\"},\"Classes/ClaimsOpenID.html#/s:8SwiftJWT12ClaimsOpenIDC18preferred_usernameSSSgvp\":{\"name\":\"preferred_username\",\"abstract\":\"<p>Shorthand name by which the End-User wishes to be referred to at the RP, such as janedoe or j.doe. This value MAY be any valid JSON string including special characters such as @, /, or whitespace.</p>\",\"parent_name\":\"ClaimsOpenID\"},\"Classes/ClaimsOpenID.html#/s:8SwiftJWT12ClaimsOpenIDC7profileSSSgvp\":{\"name\":\"profile\",\"abstract\":\"<p>URL of the End-User&rsquo;s profile page. The contents of this Web page SHOULD be about the End-User.</p>\",\"parent_name\":\"ClaimsOpenID\"},\"Classes/ClaimsOpenID.html#/s:8SwiftJWT12ClaimsOpenIDC7pictureSSSgvp\":{\"name\":\"picture\",\"abstract\":\"<p>URL of the End-User&rsquo;s profile picture. This URL MUST refer to an image file (for example, a PNG, JPEG, or GIF image file), rather than to a Web page containing an image. Note that this URL SHOULD specifically reference a profile photo of the End-User suitable for displaying when describing the End-User, rather than an arbitrary photo taken by the End-User.</p>\",\"parent_name\":\"ClaimsOpenID\"},\"Classes/ClaimsOpenID.html#/s:8SwiftJWT12ClaimsOpenIDC7websiteSSSgvp\":{\"name\":\"website\",\"abstract\":\"<p>URL of the End-User&rsquo;s Web page or blog. This Web page SHOULD contain information published by the End-User or an organization that the End-User is affiliated with.</p>\",\"parent_name\":\"ClaimsOpenID\"},\"Classes/ClaimsOpenID.html#/s:8SwiftJWT12ClaimsOpenIDC5emailSSSgvp\":{\"name\":\"email\",\"abstract\":\"<p>End-User&rsquo;s preferred e-mail address.</p>\",\"parent_name\":\"ClaimsOpenID\"},\"Classes/ClaimsOpenID.html#/s:8SwiftJWT12ClaimsOpenIDC14email_verifiedSbSgvp\":{\"name\":\"email_verified\",\"abstract\":\"<p>True if the End-User&rsquo;s e-mail address has been verified; otherwise false. When this Claim Value is true, this means that the OP took affirmative steps to ensure that this e-mail address was controlled by the End-User at the time the verification was performed. The means by which an e-mail address is verified is context-specific, and dependent upon the trust framework or contractual agreements within which the parties are operating.</p>\",\"parent_name\":\"ClaimsOpenID\"},\"Classes/ClaimsOpenID.html#/s:8SwiftJWT12ClaimsOpenIDC6genderSSSgvp\":{\"name\":\"gender\",\"abstract\":\"<p>End-User&rsquo;s gender. Values defined by this specification are female and male. Other values MAY be used when neither of the defined values are applicable.</p>\",\"parent_name\":\"ClaimsOpenID\"},\"Classes/ClaimsOpenID.html#/s:8SwiftJWT12ClaimsOpenIDC9birthdateSSSgvp\":{\"name\":\"birthdate\",\"abstract\":\"<p>End-User&rsquo;s birthday, represented as an ISO 8601:2004 YYYY-MM-DD format. The year MAY be 0000, indicating that it is omitted. To represent only the year, YYYY format is allowed.</p>\",\"parent_name\":\"ClaimsOpenID\"},\"Classes/ClaimsOpenID.html#/s:8SwiftJWT12ClaimsOpenIDC8zoneinfoSSSgvp\":{\"name\":\"zoneinfo\",\"abstract\":\"<p>String from zoneinfo time zone database representing the End-User&rsquo;s time zone. For example, Europe/Paris or America/Los_Angeles.</p>\",\"parent_name\":\"ClaimsOpenID\"},\"Classes/ClaimsOpenID.html#/s:8SwiftJWT12ClaimsOpenIDC6localeSSSgvp\":{\"name\":\"locale\",\"abstract\":\"<p>End-User&rsquo;s locale, represented as a BCP47 language tag. This is typically an ISO 639-1 Alpha-2 language code in lowercase and an ISO 3166-1 Alpha-2 country code in uppercase, separated by a dash. For example, en-US or fr-CA. As a compatibility note, some implementations have used an underscore as the separator rather than a dash, for example, en_US; Relying Parties MAY choose to accept this locale syntax as well.</p>\",\"parent_name\":\"ClaimsOpenID\"},\"Classes/ClaimsOpenID.html#/s:8SwiftJWT12ClaimsOpenIDC12phone_numberSSSgvp\":{\"name\":\"phone_number\",\"abstract\":\"<p>End-User&rsquo;s preferred telephone number. E.164 is RECOMMENDED as the format of this Claim, for example, +1 (425) 555-1212 or +56 (2) 687 2400.</p>\",\"parent_name\":\"ClaimsOpenID\"},\"Classes/ClaimsOpenID.html#/s:8SwiftJWT12ClaimsOpenIDC21phone_number_verifiedSbSgvp\":{\"name\":\"phone_number_verified\",\"abstract\":\"<p>True if the End-User&rsquo;s phone number has been verified; otherwise false. When this Claim Value is true, this means that the OP took affirmative steps to ensure that this phone number was controlled by the End-User at the time the verification was performed. The means by which a phone number is verified is context-specific, and dependent upon the trust framework or contractual agreements within which the parties are operating. When true, the phone_number Claim MUST be in E.164 format and any extensions MUST be represented in RFC 3966 format.</p>\",\"parent_name\":\"ClaimsOpenID\"},\"Classes/ClaimsOpenID.html#/s:8SwiftJWT12ClaimsOpenIDC7addressAA12AddressClaimVSgvp\":{\"name\":\"address\",\"abstract\":\"<p>End-User&rsquo;s preferred postal address.</p>\",\"parent_name\":\"ClaimsOpenID\"},\"Classes/ClaimsOpenID.html#/s:8SwiftJWT12ClaimsOpenIDC10updated_at10Foundation4DateVSgvp\":{\"name\":\"updated_at\",\"abstract\":\"<p>Time the End-User&rsquo;s information was last updated.</p>\",\"parent_name\":\"ClaimsOpenID\"},\"Classes/ClaimsMicroProfile.html#/s:8SwiftJWT18ClaimsMicroProfileC3iss3sub3exp3iat3jti3upn6groupsACSS_SS10Foundation4DateVAMS2SSaySSGtcfc\":{\"name\":\"init(iss:sub:exp:iat:jti:upn:groups:)\",\"abstract\":\"<p>Initialize a <code>ClaimsMicroProfile</code></p>\",\"parent_name\":\"ClaimsMicroProfile\"},\"Classes/ClaimsMicroProfile.html#/s:8SwiftJWT18ClaimsMicroProfileC3issSSvp\":{\"name\":\"iss\",\"abstract\":\"<p>The MP-JWT issuer. <a href=\\\"https://tools.ietf.org/html/rfc7519#section-4.1.1\\\">RFC7519, Section 4.1.1</a></p>\",\"parent_name\":\"ClaimsMicroProfile\"},\"Classes/ClaimsMicroProfile.html#/s:8SwiftJWT18ClaimsMicroProfileC3subSSvp\":{\"name\":\"sub\",\"abstract\":\"<p>Identifies the principal that is the subject of the JWT.</p>\",\"parent_name\":\"ClaimsMicroProfile\"},\"Classes/ClaimsMicroProfile.html#/s:8SwiftJWT18ClaimsMicroProfileC3exp10Foundation4DateVvp\":{\"name\":\"exp\",\"abstract\":\"<p>Identifies the expiration time on or after which the JWT MUST NOT be accepted for processing.</p>\",\"parent_name\":\"ClaimsMicroProfile\"},\"Classes/ClaimsMicroProfile.html#/s:8SwiftJWT18ClaimsMicroProfileC3iat10Foundation4DateVvp\":{\"name\":\"iat\",\"abstract\":\"<p>Identifies the time at which the JWT was issued.</p>\",\"parent_name\":\"ClaimsMicroProfile\"},\"Classes/ClaimsMicroProfile.html#/s:8SwiftJWT18ClaimsMicroProfileC3jtiSSvp\":{\"name\":\"jti\",\"abstract\":\"<p>The &ldquo;jti&rdquo; (JWT ID) claim provides a unique identifier for the JWT.\",\"parent_name\":\"ClaimsMicroProfile\"},\"Classes/ClaimsMicroProfile.html#/s:8SwiftJWT18ClaimsMicroProfileC3upnSSSgvp\":{\"name\":\"upn\",\"abstract\":\"<p>This MP-JWT custom claim is the user principal name in the java.security.Principal interface, and is the caller principal name in javax.security.enterprise.identitystore.IdentityStore. If this claim is missing, fallback to the &ldquo;preferred_username&rdquo;, should be attempted, and if that claim is missing, fallback to the &ldquo;sub&rdquo; claim should be used.</p>\",\"parent_name\":\"ClaimsMicroProfile\"},\"Classes/ClaimsMicroProfile.html#/s:8SwiftJWT18ClaimsMicroProfileC18preferred_usernameSSSgvp\":{\"name\":\"preferred_username\",\"abstract\":\"<p>Shorthand name by which the End-User wishes to be referred to at the RP, such as janedoe or j.doe. This value MAY be any valid JSON string including special characters such as @, /, or whitespace.</p>\",\"parent_name\":\"ClaimsMicroProfile\"},\"Classes/ClaimsMicroProfile.html#/s:8SwiftJWT18ClaimsMicroProfileC6groupsSaySSGvp\":{\"name\":\"groups\",\"abstract\":\"<p>This MP-JWT custom claim is the list of group names that have been assigned to the principal of the MP-JWT. This typically will required a mapping at the application container level to application deployment roles, but a one-to-one between group names and application role names is required to be performed in addition to any other mapping.</p>\",\"parent_name\":\"ClaimsMicroProfile\"},\"Classes/ClaimsMicroProfile.html\":{\"name\":\"ClaimsMicroProfile\",\"abstract\":\"<p>A class representing the MicroProfile claims as listed in <a href=\\\"http://microprofile.io/project/eclipse/microprofile-jwt-auth/spec/src/main/asciidoc/interoperability.asciidoc\\\">MicroProfile specs</a>.</p>\"},\"Classes/ClaimsOpenID.html\":{\"name\":\"ClaimsOpenID\",\"abstract\":\"<p>A class representing OpenID related claims as decsribed in <a href=\\\"http://openid.net/specs/openid-connect-core-1_0.html\\\">OpenID specs</a>.</p>\"},\"Classes/ClaimsStandardJWT.html\":{\"name\":\"ClaimsStandardJWT\",\"abstract\":\"<p>A class representing the Standard JWT claims as described in <a href=\\\"https://tools.ietf.org/html/rfc7519#section-4.1\\\">RFC7519</a>.</p>\"},\"Classes/JWTEncoder.html\":{\"name\":\"JWTEncoder\",\"abstract\":\"<p>A thread safe encoder that signs the JWT header and claims using the provided algorithm and encodes a <code><a href=\\\"36f8f5912051ae747ef441d6511ca4cbStructs/JWT.html\\\">JWT</a></code> instance as either Data or a JWT String.</p>\"},\"Classes/JWTDecoder.html\":{\"name\":\"JWTDecoder\",\"abstract\":\"<p>A thread safe decoder that decodes either Data or a JWT String as a <code><a href=\\\"36f8f5912051ae747ef441d6511ca4cbStructs/JWT.html\\\">JWT</a></code> instance and verifies the signiture using the provided algorithm.</p>\"},\"Classes.html\":{\"name\":\"Classes\",\"abstract\":\"<p>The following classes are available globally.</p>\"},\"Protocols.html\":{\"name\":\"Protocols\",\"abstract\":\"<p>The following protocols are available globally.</p>\"},\"Structs.html\":{\"name\":\"Structures\",\"abstract\":\"<p>The following structures are available globally.</p>\"}}"
  },
  {
    "path": "docs/index.html",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n  <head>\n    <title>SwiftJWT  Reference</title>\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"css/jazzy.css\" />\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"css/highlight.css\" />\n    <meta charset=\"utf-8\">\n    <script src=\"js/jquery.min.js\" defer></script>\n    <script src=\"js/jazzy.js\" defer></script>\n    \n    <script src=\"js/lunr.min.js\" defer></script>\n    <script src=\"js/typeahead.jquery.js\" defer></script>\n    <script src=\"js/jazzy.search.js\" defer></script>\n  </head>\n  <body>\n\n\n    <a title=\"SwiftJWT  Reference\"></a>\n\n    <header class=\"header\">\n      <p class=\"header-col header-col--primary\">\n        <a class=\"header-link\" href=\"index.html\">\n          SwiftJWT 3.6.200 Docs\n        </a>\n         (100% documented)\n      </p>\n    \n      <p class=\"header-col--secondary\">\n        <form role=\"search\" action=\"search.json\">\n          <input type=\"text\" placeholder=\"Search documentation\" data-typeahead>\n        </form>\n      </p>\n    \n        <p class=\"header-col header-col--secondary\">\n          <a class=\"header-link\" href=\"https://github.com/Kitura/Swift-JWT/\">\n            <img class=\"header-icon\" src=\"img/gh.png\"/>\n            View on GitHub\n          </a>\n        </p>\n    \n    </header>\n\n    <p class=\"breadcrumbs\">\n      <a class=\"breadcrumb\" href=\"index.html\">SwiftJWT Reference</a>\n      <img class=\"carat\" src=\"img/carat.png\" />\n      SwiftJWT  Reference\n    </p>\n\n    <div class=\"content-wrapper\">\n      <nav class=\"navigation\">\n        <ul class=\"nav-groups\">\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"Classes.html\">Classes</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/ClaimsMicroProfile.html\">ClaimsMicroProfile</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/ClaimsOpenID.html\">ClaimsOpenID</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/ClaimsStandardJWT.html\">ClaimsStandardJWT</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/JWTDecoder.html\">JWTDecoder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/JWTEncoder.html\">JWTEncoder</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"Protocols.html\">Protocols</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Protocols/Claims.html\">Claims</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"Structs.html\">Structures</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Structs/AddressClaim.html\">AddressClaim</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Structs/Header.html\">Header</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Structs/JWT.html\">JWT</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Structs/JWTError.html\">JWTError</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Structs/JWTSigner.html\">JWTSigner</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Structs/JWTVerifier.html\">JWTVerifier</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Structs/ValidateClaimsResult.html\">ValidateClaimsResult</a>\n              </li>\n            </ul>\n          </li>\n        </ul>\n      </nav>\n      <article class=\"main-content\">\n\n        <section class=\"section\">\n          <div class=\"section-content top-matter\">\n            \n            <p align=\"center\">\n<a href=\"http://kitura.io/\">\n<img src=\"https://raw.githubusercontent.com/Kitura/Kitura/master/Sources/Kitura/resources/kitura-bird.svg?sanitize=true\" height=\"100\" alt=\"Kitura\">\n</a>\n</p>\n\n<p align=\"center\">\n<a href=\"https://kitura.github.io/Swift-JWT/index.html\">\n<img src=\"https://img.shields.io/badge/apidoc-SwiftJWT-1FBCE4.svg?style=flat\" alt=\"APIDoc\">\n</a>\n<a href=\"https://travis-ci.org/Kitura/Swift-JWT\">\n<img src=\"https://travis-ci.org/Kitura/Swift-JWT.svg?branch=master\" alt=\"Build Status - Master\">\n</a>\n<img src=\"https://img.shields.io/badge/os-macOS-green.svg?style=flat\" alt=\"macOS\">\n<img src=\"https://img.shields.io/badge/os-linux-green.svg?style=flat\" alt=\"Linux\">\n<img src=\"https://img.shields.io/badge/license-Apache2-blue.svg?style=flat\" alt=\"Apache 2\">\n<a href=\"http://swift-at-ibm-slack.mybluemix.net/\">\n<img src=\"http://swift-at-ibm-slack.mybluemix.net/badge.svg\" alt=\"Slack Status\">\n</a>\n</p>\n<h1 id='swiftjwt' class='heading'>SwiftJWT</h1>\n\n<p>An implementation of <a href=\"https://tools.ietf.org/html/rfc7519\">JSON Web Token</a> using Swift. JWTs offer a lightweight and compact format for transmitting information between parties, and the information can be verified and trusted due to JWTs being digitally signed.</p>\n\n<p>For more information on JSON Web Tokens, their use cases and how they work, we recommend visiting <a href=\"https://jwt.io/introduction/\">jwt.io</a>.</p>\n\n<p><strong>Reminder:</strong> JWTs sent as JWS do <strong>not</strong> encrypt data, so never send anything sensitive or confidential in a JWT. This library does not currently support JWE.</p>\n<h2 id='swift-version' class='heading'>Swift version</h2>\n\n<p>The latest version of Swift-JWT requires <strong>Swift 4.0</strong> or later. You can download this version of the Swift binaries by following this <a href=\"https://swift.org/download/\">link</a>. Compatibility with other Swift versions is not guaranteed.</p>\n<h2 id='usage' class='heading'>Usage</h2>\n<h3 id='swift-package-manager' class='heading'>Swift Package Manager</h3>\n<h4 id='add-dependencies' class='heading'>Add dependencies</h4>\n\n<p>Add the <code>Swift-JWT</code> package to the dependencies within your application’s <code>Package.swift</code> file. Substitute <code>&quot;x.x.x&quot;</code> with the latest <code>Swift-JWT</code> <a href=\"https://github.com/Kitura/Swift-JWT/releases\">release</a>.</p>\n<pre class=\"highlight swift\"><code><span class=\"o\">.</span><span class=\"nf\">package</span><span class=\"p\">(</span><span class=\"nv\">url</span><span class=\"p\">:</span> <span class=\"s\">\"https://github.com/Kitura/Swift-JWT.git\"</span><span class=\"p\">,</span> <span class=\"nv\">from</span><span class=\"p\">:</span> <span class=\"s\">\"x.x.x\"</span><span class=\"p\">)</span>\n</code></pre>\n\n<p>Add <code>SwiftJWT</code> to your target&rsquo;s dependencies:</p>\n<pre class=\"highlight swift\"><code><span class=\"o\">.</span><span class=\"nf\">target</span><span class=\"p\">(</span><span class=\"nv\">name</span><span class=\"p\">:</span> <span class=\"s\">\"example\"</span><span class=\"p\">,</span> <span class=\"nv\">dependencies</span><span class=\"p\">:</span> <span class=\"p\">[</span><span class=\"s\">\"SwiftJWT\"</span><span class=\"p\">]),</span>\n</code></pre>\n<h4 id='import-package' class='heading'>Import package</h4>\n<pre class=\"highlight swift\"><code><span class=\"kd\">import</span> <span class=\"kt\">SwiftJWT</span>\n</code></pre>\n<h3 id='cocoapods' class='heading'>Cocoapods</h3>\n\n<p>To include <code>Swift-JWT</code> in a project using CocoaPods, add <code>SwiftJWT</code> to your Podfile:</p>\n<pre class=\"highlight plaintext\"><code>pod 'SwiftJWT'\n</code></pre>\n<h2 id='getting-started' class='heading'>Getting Started</h2>\n<h3 id='the-jwt-model' class='heading'>The JWT model</h3>\n\n<p>In its compact form, a JSON Web Tokens consist of three sections of Base64Url encoded JSON, separated by dots (.).<br>\nThese section are: Headers, Claims and the Signature.\nTherefore, a JWT typically looks like the following: xxxxx.yyyyy.zzzzz</p>\n<h4 id='header' class='heading'>Header</h4>\n\n<p>The Header struct contains the fields of the JSON Web Token header as defined by <a href=\"https://tools.ietf.org/html/rfc7515#section-4\">RFC7515</a>.<br>\nThe &ldquo;typ&rdquo; header will default to &ldquo;JWT&rdquo;. The &ldquo;alg&rdquo; header will be set to the algorithm name when you sign the JWT.<br>\nThe other Header fields can be set when initializing the Header or by changing them directly on the Header object.</p>\n<pre class=\"highlight swift\"><code><span class=\"k\">let</span> <span class=\"nv\">myHeader</span> <span class=\"o\">=</span> <span class=\"kt\">Header</span><span class=\"p\">(</span><span class=\"nv\">kid</span><span class=\"p\">:</span> <span class=\"s\">\"KeyID1\"</span><span class=\"p\">)</span>\n</code></pre>\n<h4 id='claims' class='heading'>Claims</h4>\n\n<p>Claims are statements about an entity (typically, the user) and additional data.\nThe Claims are defined by creating a Swift type that conforms to the <code><a href=\"Protocols/Claims.html\">Claims</a></code> protocol. The fields of this type represent the information that will be shared using the JWT.  </p>\n\n<p>A list of recommended claims is defined in <a href=\"https://tools.ietf.org/html/rfc7519#section-4.1\">RFC7519</a>.</p>\n<pre class=\"highlight swift\"><code><span class=\"kd\">struct</span> <span class=\"kt\">MyClaims</span><span class=\"p\">:</span> <span class=\"kt\">Claims</span> <span class=\"p\">{</span>\n    <span class=\"k\">let</span> <span class=\"nv\">iss</span><span class=\"p\">:</span> <span class=\"kt\">String</span>\n    <span class=\"k\">let</span> <span class=\"nv\">sub</span><span class=\"p\">:</span> <span class=\"kt\">String</span>\n    <span class=\"k\">let</span> <span class=\"nv\">exp</span><span class=\"p\">:</span> <span class=\"kt\">Date</span>\n    <span class=\"k\">let</span> <span class=\"nv\">admin</span><span class=\"p\">:</span> <span class=\"kt\">Bool</span>\n<span class=\"p\">}</span>\n<span class=\"k\">let</span> <span class=\"nv\">myClaims</span> <span class=\"o\">=</span> <span class=\"kt\">MyClaims</span><span class=\"p\">(</span><span class=\"nv\">iss</span><span class=\"p\">:</span> <span class=\"s\">\"Kitura\"</span><span class=\"p\">,</span> <span class=\"nv\">sub</span><span class=\"p\">:</span> <span class=\"s\">\"John\"</span><span class=\"p\">,</span> <span class=\"nv\">exp</span><span class=\"p\">:</span> <span class=\"kt\">Date</span><span class=\"p\">(</span><span class=\"nv\">timeIntervalSinceNow</span><span class=\"p\">:</span> <span class=\"mi\">3600</span><span class=\"p\">),</span> <span class=\"nv\">admin</span><span class=\"p\">:</span> <span class=\"kc\">true</span><span class=\"p\">)</span>\n</code></pre>\n<h5 id='claimsexamples' class='heading'>ClaimsExamples</h5>\n\n<p>This library includes some example <code><a href=\"Protocols/Claims.html\">Claims</a></code> structs as defined by their online specifications:</p>\n\n<ul>\n<li><code><a href=\"Classes/ClaimsStandardJWT.html\">ClaimsStandardJWT</a></code> as defined in <a href=\"https://tools.ietf.org/html/rfc7519#section-4.1\">RFC7519</a>.</li>\n<li><code><a href=\"Classes/ClaimsMicroProfile.html\">ClaimsMicroProfile</a></code> as defined <a href=\"http://microprofile.io/project/eclipse/microprofile-jwt-auth/spec/src/main/asciidoc/interoperability.asciidoc\">here</a>.</li>\n<li><code>ClaimsOpenID.swift</code> as defined <a href=\"https://openid.net/specs/openid-connect-core-1_0.html#StandardClaims\">here</a>.</li>\n</ul>\n<h4 id='jwt' class='heading'>JWT</h4>\n\n<p>The JWT struct represents the <code><a href=\"Structs/Header.html\">Header</a></code> and <code><a href=\"Protocols/Claims.html\">Claims</a></code> of a JSON Web Token.<br>\nYou can initialize a JWT by decoding a JWT String, or by providing the JWT Header and Claims.</p>\n<pre class=\"highlight swift\"><code><span class=\"k\">let</span> <span class=\"nv\">myJWT</span> <span class=\"o\">=</span> <span class=\"kt\">JWT</span><span class=\"p\">(</span><span class=\"nv\">header</span><span class=\"p\">:</span> <span class=\"n\">myHeader</span><span class=\"p\">,</span> <span class=\"nv\">claims</span><span class=\"p\">:</span> <span class=\"n\">myClaims</span><span class=\"p\">)</span>\n</code></pre>\n<h3 id='signing-and-verifying-json-web-tokens' class='heading'>Signing and Verifying JSON web tokens</h3>\n<h4 id='creating-public-and-private-keys' class='heading'>Creating public and private keys</h4>\n\n<p>To sign and verify a JWT using an RSA algorithm, you must provide a public and private key. This could be the contents of a .key file generated via the following Terminal commands:</p>\n<pre class=\"highlight plaintext\"><code>$ ssh-keygen -t rsa -b 4096 -m PEM -f privateKey.key\n# Don't add a passphrase\n$ openssl rsa -in privateKey.key -pubout -outform PEM -out privateKey.key.pub\n</code></pre>\n\n<p>This will create a public and private key pair on your system, and the contents of the private key can be passed into a Swift variable using the following code:</p>\n<pre class=\"highlight swift\"><code><span class=\"k\">let</span> <span class=\"nv\">privateKeyPath</span> <span class=\"o\">=</span> <span class=\"kt\">URL</span><span class=\"p\">(</span><span class=\"nv\">fileURLWithPath</span><span class=\"p\">:</span> <span class=\"nf\">getAbsolutePath</span><span class=\"p\">(</span><span class=\"nv\">relativePath</span><span class=\"p\">:</span> <span class=\"s\">\"/path/to/privateKey.key\"</span><span class=\"p\">))</span>\n<span class=\"k\">let</span> <span class=\"nv\">privateKey</span><span class=\"p\">:</span> <span class=\"kt\">Data</span> <span class=\"o\">=</span> <span class=\"k\">try</span> <span class=\"kt\">Data</span><span class=\"p\">(</span><span class=\"nv\">contentsOf</span><span class=\"p\">:</span> <span class=\"n\">privateKeyPath</span><span class=\"p\">,</span> <span class=\"nv\">options</span><span class=\"p\">:</span> <span class=\"o\">.</span><span class=\"n\">alwaysMapped</span><span class=\"p\">)</span>\n<span class=\"k\">let</span> <span class=\"nv\">publicKeyPath</span> <span class=\"o\">=</span> <span class=\"kt\">URL</span><span class=\"p\">(</span><span class=\"nv\">fileURLWithPath</span><span class=\"p\">:</span> <span class=\"nf\">getAbsolutePath</span><span class=\"p\">(</span><span class=\"nv\">relativePath</span><span class=\"p\">:</span> <span class=\"s\">\"/path/to/publicKey.key\"</span><span class=\"p\">))</span>\n<span class=\"k\">let</span> <span class=\"nv\">publicKey</span><span class=\"p\">:</span> <span class=\"kt\">Data</span> <span class=\"o\">=</span> <span class=\"k\">try</span> <span class=\"kt\">Data</span><span class=\"p\">(</span><span class=\"nv\">contentsOf</span><span class=\"p\">:</span> <span class=\"n\">publicKeyPath</span><span class=\"p\">,</span> <span class=\"nv\">options</span><span class=\"p\">:</span> <span class=\"o\">.</span><span class=\"n\">alwaysMapped</span><span class=\"p\">)</span>\n</code></pre>\n\n<p>For details on creating elliptic curve public and private keys, view the <a href=\"https://github.com/Kitura/BlueECC\">BlueECC README.txt</a>.</p>\n<h4 id='sign-a-jwt-using-a-jwtsigner' class='heading'>Sign a JWT using a JWTSigner</h4>\n\n<p>The struct JWTSigner contains the algorithms that can be used to sign a JWT.</p>\n\n<p>Initialize a JWTSigner using the static function corresponding to the desired RSA algorithm:</p>\n<pre class=\"highlight swift\"><code><span class=\"k\">let</span> <span class=\"nv\">jwtSigner</span> <span class=\"o\">=</span> <span class=\"kt\">JWTSigner</span><span class=\"o\">.</span><span class=\"nf\">rs256</span><span class=\"p\">(</span><span class=\"nv\">privateKey</span><span class=\"p\">:</span> <span class=\"n\">privateKey</span><span class=\"p\">)</span>\n</code></pre>\n\n<p>To generate a signed JWT string, call the <code>sign</code> function on your JWT instance, passing in a JWTSigner:</p>\n<pre class=\"highlight swift\"><code><span class=\"k\">let</span> <span class=\"nv\">signedJWT</span> <span class=\"o\">=</span> <span class=\"k\">try</span> <span class=\"n\">myJWT</span><span class=\"o\">.</span><span class=\"nf\">sign</span><span class=\"p\">(</span><span class=\"nv\">using</span><span class=\"p\">:</span> <span class=\"n\">jwtSigner</span><span class=\"p\">)</span>\n</code></pre>\n\n<p>The resulting <code>signedJWT</code> will be a <code>String</code> of the form:</p>\n<pre class=\"highlight plaintext\"><code>&lt;encoded header&gt;.&lt;encoded claims&gt;.&lt;signature&gt;\n</code></pre>\n\n<p><strong>Note:</strong> The sign function sets the alg (algorithm) field of the header.</p>\n<h4 id='verify-a-jwt-using-jwtverifier' class='heading'>Verify a JWT using JWTVerifier</h4>\n\n<p>The struct JWTVerifier contains the algorithms that can be used to verify a JWT.</p>\n\n<p>Initialize a JWTVerifier using the static function corresponding to the desired RSA algorithm:</p>\n<pre class=\"highlight swift\"><code><span class=\"k\">let</span> <span class=\"nv\">jwtVerifier</span> <span class=\"o\">=</span> <span class=\"kt\">JWTVerifier</span><span class=\"o\">.</span><span class=\"nf\">rs256</span><span class=\"p\">(</span><span class=\"nv\">publicKey</span><span class=\"p\">:</span> <span class=\"n\">publicKey</span><span class=\"p\">)</span>\n</code></pre>\n\n<p>To verify a signed JWT string, call the static <code>verify</code> function, passing in your JWT string and the JWTVerifier:</p>\n<pre class=\"highlight swift\"><code><span class=\"k\">let</span> <span class=\"nv\">verified</span> <span class=\"o\">=</span> <span class=\"kt\">JWT</span><span class=\"o\">&lt;</span><span class=\"kt\">MyClaims</span><span class=\"o\">&gt;.</span><span class=\"nf\">verify</span><span class=\"p\">(</span><span class=\"n\">signedJWT</span><span class=\"p\">,</span> <span class=\"nv\">using</span><span class=\"p\">:</span> <span class=\"n\">jwtVerifier</span><span class=\"p\">)</span>\n</code></pre>\n\n<p>The <code>verified</code> field will be a <code>bool</code> that is true if the signature is verified.</p>\n<h4 id='supported-algorithms' class='heading'>Supported Algorithms</h4>\n\n<p>The supported algorithms for signing and verifying JWTs are:</p>\n\n<ul>\n<li>RS256 - RSASSA-PKCS1-v1_5 using SHA-256</li>\n<li>RS384 - RSASSA-PKCS1-v1_5 using SHA-384</li>\n<li>RS512 - RSASSA-PKCS1-v1_5 using SHA-512</li>\n<li>HS256 - HMAC using using SHA-256</li>\n<li>HS384 - HMAC using using SHA-384</li>\n<li>HS512 - HMAC using using SHA-512</li>\n<li>ES256 - ECDSA using using SHA-256 and a P-256 curve</li>\n<li>ES384 - ECDSA using using SHA-384 and a P-384 curve</li>\n<li>ES512 - ECDSA using using SHA-512 and a P-521 curve</li>\n<li>PS256 - RSA-PSS using SHA-256</li>\n<li>PS384 - RSA-PSS using SHA-384</li>\n<li>PS512 - RSA-PSS using SHA-512</li>\n<li>none - Don&rsquo;t sign or verify the JWT</li>\n</ul>\n\n<p>Note: ECDSA and RSA-PSS algorithms require a minimum Swift version of 4.1.</p>\n<h3 id='validate-claims' class='heading'>Validate claims</h3>\n\n<p>The <code>validateClaims</code> function validates the standard <code>Date</code> claims of a JWT instance.\nThe following claims are validated if they are present in the <code><a href=\"Protocols/Claims.html\">Claims</a></code> object:</p>\n\n<ul>\n<li>exp (expiration date)</li>\n<li>nbf (not before date)</li>\n<li>iat (issued at date)</li>\n</ul>\n\n<p>The method returns <code><a href=\"Structs/ValidateClaimsResult.html\">ValidateClaimsResult</a></code> - an struct that list the various reasons for validation failure.\nIf the validation succeeds <code><a href=\"Structs/ValidateClaimsResult.html#/s:8SwiftJWT20ValidateClaimsResultV7successACvpZ\">ValidateClaimsResult.success</a></code> is returned.\nThe <code>leeway</code> parameter is the <code>TimeInterval</code> in seconds that a standard <code>Date</code> claim will be valid outside of the specified time. This can be used to account for clock skew between issuers and verifiers.</p>\n<pre class=\"highlight swift\"><code><span class=\"k\">let</span> <span class=\"nv\">validationResult</span> <span class=\"o\">=</span> <span class=\"n\">verified</span><span class=\"o\">.</span><span class=\"nf\">validateClaims</span><span class=\"p\">(</span><span class=\"nv\">leeway</span><span class=\"p\">:</span> <span class=\"mi\">10</span><span class=\"p\">)</span>\n<span class=\"k\">if</span> <span class=\"n\">validationResult</span> <span class=\"o\">!=</span> <span class=\"o\">.</span><span class=\"n\">success</span> <span class=\"p\">{</span>\n    <span class=\"nf\">print</span><span class=\"p\">(</span><span class=\"s\">\"Claims validation failed: \"</span><span class=\"p\">,</span> <span class=\"n\">validationResult</span><span class=\"p\">)</span>\n<span class=\"p\">}</span>\n</code></pre>\n<h3 id='decode-a-jwt-from-a-jwt-string' class='heading'>Decode a JWT from a JWT string</h3>\n\n<p>A JWT struct can be initialized from a JWT string.  If a JWTVerifier is provided it will be used to verify the signature before initialization</p>\n<pre class=\"highlight swift\"><code><span class=\"k\">let</span> <span class=\"nv\">newJWT</span> <span class=\"o\">=</span> <span class=\"k\">try</span> <span class=\"kt\">JWT</span><span class=\"o\">&lt;</span><span class=\"kt\">MyClaims</span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"nv\">jwtString</span><span class=\"p\">:</span> <span class=\"n\">signedJWT</span><span class=\"p\">,</span> <span class=\"nv\">verifier</span><span class=\"p\">:</span> <span class=\"n\">jwtVerifier</span><span class=\"p\">)</span>\n</code></pre>\n<h3 id='jwtencoder-and-jwtdecoder' class='heading'>JWTEncoder and JWTDecoder</h3>\n\n<p>The JWTEncoder and JWTDecoder classes encode and decode JWT Strings using the same API as JSONEncoder and JSONDecoder:</p>\n<pre class=\"highlight swift\"><code> <span class=\"k\">let</span> <span class=\"nv\">jwtEncoder</span> <span class=\"o\">=</span> <span class=\"kt\">JWTEncoder</span><span class=\"p\">(</span><span class=\"nv\">jwtSigner</span><span class=\"p\">:</span> <span class=\"n\">jwtSigner</span><span class=\"p\">)</span>\n <span class=\"k\">let</span> <span class=\"nv\">jwtString</span> <span class=\"o\">=</span> <span class=\"k\">try</span> <span class=\"n\">jwtEncoder</span><span class=\"o\">.</span><span class=\"nf\">encodeToString</span><span class=\"p\">(</span><span class=\"n\">myJWT</span><span class=\"p\">)</span>\n\n <span class=\"k\">let</span> <span class=\"nv\">jwtDecoder</span> <span class=\"o\">=</span> <span class=\"kt\">JWTDecoder</span><span class=\"p\">(</span><span class=\"nv\">jwtVerifier</span><span class=\"p\">:</span> <span class=\"n\">jwtVerifier</span><span class=\"p\">)</span>\n <span class=\"k\">let</span> <span class=\"nv\">jwt</span> <span class=\"o\">=</span> <span class=\"k\">try</span> <span class=\"n\">jwtDecoder</span><span class=\"o\">.</span><span class=\"nf\">decode</span><span class=\"p\">(</span><span class=\"kt\">JWT</span><span class=\"o\">&lt;</span><span class=\"kt\">MyClaims</span><span class=\"o\">&gt;.</span><span class=\"k\">self</span><span class=\"p\">,</span> <span class=\"nv\">fromString</span><span class=\"p\">:</span> <span class=\"n\">jwtString</span><span class=\"p\">)</span>\n</code></pre>\n\n<p>Because JWTEncoder and JWTDecoder conform to <a href=\"https://github.com/Kitura/KituraContracts/blob/master/Sources/KituraContracts/Contracts.swift\">KituraContract&rsquo;s</a> BodyEncoder and BodyDecoder protocols, they can be used as a <a href=\"https://developer.ibm.com/swift/2018/09/01/kitura-custom-encoders-and-decoders/\">custom coder</a> in Codable routes for sending and receiving JWTs:</p>\n<pre class=\"highlight swift\"><code> <span class=\"n\">router</span><span class=\"o\">.</span><span class=\"n\">encoders</span><span class=\"p\">[</span><span class=\"kt\">MediaType</span><span class=\"p\">(</span><span class=\"nv\">type</span><span class=\"p\">:</span> <span class=\"o\">.</span><span class=\"n\">application</span><span class=\"p\">,</span> <span class=\"nv\">subType</span><span class=\"p\">:</span> <span class=\"s\">\"jwt\"</span><span class=\"p\">)]</span> <span class=\"o\">=</span> <span class=\"p\">{</span> <span class=\"k\">return</span> <span class=\"n\">jwtEncoder</span> <span class=\"p\">}</span>\n <span class=\"n\">router</span><span class=\"o\">.</span><span class=\"n\">decoders</span><span class=\"p\">[</span><span class=\"kt\">MediaType</span><span class=\"p\">(</span><span class=\"nv\">type</span><span class=\"p\">:</span> <span class=\"o\">.</span><span class=\"n\">application</span><span class=\"p\">,</span> <span class=\"nv\">subType</span><span class=\"p\">:</span> <span class=\"s\">\"jwt\"</span><span class=\"p\">)]</span> <span class=\"o\">=</span> <span class=\"p\">{</span> <span class=\"k\">return</span> <span class=\"n\">jwtDecoder</span> <span class=\"p\">}</span>\n</code></pre>\n\n<p>This allows for the use of JWT&rsquo;s in information exchange. By sending and receiving JWT&rsquo;s you can ensure the sending is who they say they are and verify the content hasn&rsquo;t been tampered with.</p>\n<h2 id='api-documentation' class='heading'>API Documentation</h2>\n\n<p>For more information visit our <a href=\"https://kitura.github.io/Swift-JWT/index.html\">API reference</a>.</p>\n<h2 id='community' class='heading'>Community</h2>\n\n<p>We love to talk server-side Swift, and Kitura. Join our <a href=\"http://swift-at-ibm-slack.mybluemix.net/\">Slack</a> to meet the team!</p>\n<h2 id='license' class='heading'>License</h2>\n\n<p>This library is licensed under Apache 2.0. Full license text is available in <a href=\"https://github.com/Kitura/Swift-JWT/blob/master/LICENSE\">LICENSE</a>.</p>\n\n          </div>\n        </section>\n\n\n      </article>\n    </div>\n    <section class=\"footer\">\n      <p>&copy; 2020 <a class=\"link\" href=\"https://github.com/Kitura/Swift-JWT\" target=\"_blank\" rel=\"external\">IBM &amp; Kitura Project Contributors</a>. All rights reserved. (Last updated: 2020-11-25)</p>\n      <p>Generated by <a class=\"link\" href=\"https://github.com/realm/jazzy\" target=\"_blank\" rel=\"external\">jazzy ♪♫ v0.13.6</a>, a <a class=\"link\" href=\"https://realm.io\" target=\"_blank\" rel=\"external\">Realm</a> project.</p>\n    </section>\n  </body>\n</div>\n</html>\n"
  },
  {
    "path": "docs/js/jazzy.js",
    "content": "window.jazzy = {'docset': false}\nif (typeof window.dash != 'undefined') {\n  document.documentElement.className += ' dash'\n  window.jazzy.docset = true\n}\nif (navigator.userAgent.match(/xcode/i)) {\n  document.documentElement.className += ' xcode'\n  window.jazzy.docset = true\n}\n\nfunction toggleItem($link, $content) {\n  var animationDuration = 300;\n  $link.toggleClass('token-open');\n  $content.slideToggle(animationDuration);\n}\n\nfunction itemLinkToContent($link) {\n  return $link.parent().parent().next();\n}\n\n// On doc load + hash-change, open any targetted item\nfunction openCurrentItemIfClosed() {\n  if (window.jazzy.docset) {\n    return;\n  }\n  var $link = $(`a[name=\"${location.hash.substring(1)}\"]`).nextAll('.token');\n  $content = itemLinkToContent($link);\n  if ($content.is(':hidden')) {\n    toggleItem($link, $content);\n  }\n}\n\n$(openCurrentItemIfClosed);\n$(window).on('hashchange', openCurrentItemIfClosed);\n\n// On item link ('token') click, toggle its discussion\n$('.token').on('click', function(event) {\n  if (window.jazzy.docset) {\n    return;\n  }\n  var $link = $(this);\n  toggleItem($link, itemLinkToContent($link));\n\n  // Keeps the document from jumping to the hash.\n  var href = $link.attr('href');\n  if (history.pushState) {\n    history.pushState({}, '', href);\n  } else {\n    location.hash = href;\n  }\n  event.preventDefault();\n});\n\n// Clicks on links to the current, closed, item need to open the item\n$(\"a:not('.token')\").on('click', function() {\n  if (location == this.href) {\n    openCurrentItemIfClosed();\n  }\n});\n\n// KaTeX rendering\nif (\"katex\" in window) {\n  $($('.math').each( (_, element) => {\n    katex.render(element.textContent, element, {\n      displayMode: $(element).hasClass('m-block'),\n      throwOnError: false,\n      trust: true\n    });\n  }))\n}\n"
  },
  {
    "path": "docs/js/jazzy.search.js",
    "content": "$(function(){\n  var $typeahead = $('[data-typeahead]');\n  var $form = $typeahead.parents('form');\n  var searchURL = $form.attr('action');\n\n  function displayTemplate(result) {\n    return result.name;\n  }\n\n  function suggestionTemplate(result) {\n    var t = '<div class=\"list-group-item clearfix\">';\n    t += '<span class=\"doc-name\">' + result.name + '</span>';\n    if (result.parent_name) {\n     t += '<span class=\"doc-parent-name label\">' + result.parent_name + '</span>';\n    }\n    t += '</div>';\n    return t;\n  }\n\n  $typeahead.one('focus', function() {\n    $form.addClass('loading');\n\n    $.getJSON(searchURL).then(function(searchData) {\n      const searchIndex = lunr(function() {\n        this.ref('url');\n        this.field('name');\n        this.field('abstract');\n        for (const [url, doc] of Object.entries(searchData)) {\n          this.add({url: url, name: doc.name, abstract: doc.abstract});\n        }\n      });\n\n      $typeahead.typeahead(\n        {\n          highlight: true,\n          minLength: 3,\n          autoselect: true\n        },\n        {\n          limit: 10,\n          display: displayTemplate,\n          templates: { suggestion: suggestionTemplate },\n          source: function(query, sync) {\n            const lcSearch = query.toLowerCase();\n            const results = searchIndex.query(function(q) {\n                q.term(lcSearch, { boost: 100 });\n                q.term(lcSearch, {\n                  boost: 10,\n                  wildcard: lunr.Query.wildcard.TRAILING\n                });\n            }).map(function(result) {\n              var doc = searchData[result.ref];\n              doc.url = result.ref;\n              return doc;\n            });\n            sync(results);\n          }\n        }\n      );\n      $form.removeClass('loading');\n      $typeahead.trigger('focus');\n    });\n  });\n\n  var baseURL = searchURL.slice(0, -\"search.json\".length);\n\n  $typeahead.on('typeahead:select', function(e, result) {\n    window.location = baseURL + result.url;\n  });\n});\n"
  },
  {
    "path": "docs/js/typeahead.jquery.js",
    "content": "/*!\n * typeahead.js 1.3.1\n * https://github.com/corejavascript/typeahead.js\n * Copyright 2013-2020 Twitter, Inc. and other contributors; Licensed MIT\n */\n\n\n(function(root, factory) {\n    if (typeof define === \"function\" && define.amd) {\n        define([ \"jquery\" ], function(a0) {\n            return factory(a0);\n        });\n    } else if (typeof module === \"object\" && module.exports) {\n        module.exports = factory(require(\"jquery\"));\n    } else {\n        factory(root[\"jQuery\"]);\n    }\n})(this, function($) {\n    var _ = function() {\n        \"use strict\";\n        return {\n            isMsie: function() {\n                return /(msie|trident)/i.test(navigator.userAgent) ? navigator.userAgent.match(/(msie |rv:)(\\d+(.\\d+)?)/i)[2] : false;\n            },\n            isBlankString: function(str) {\n                return !str || /^\\s*$/.test(str);\n            },\n            escapeRegExChars: function(str) {\n                return str.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g, \"\\\\$&\");\n            },\n            isString: function(obj) {\n                return typeof obj === \"string\";\n            },\n            isNumber: function(obj) {\n                return typeof obj === \"number\";\n            },\n            isArray: $.isArray,\n            isFunction: $.isFunction,\n            isObject: $.isPlainObject,\n            isUndefined: function(obj) {\n                return typeof obj === \"undefined\";\n            },\n            isElement: function(obj) {\n                return !!(obj && obj.nodeType === 1);\n            },\n            isJQuery: function(obj) {\n                return obj instanceof $;\n            },\n            toStr: function toStr(s) {\n                return _.isUndefined(s) || s === null ? \"\" : s + \"\";\n            },\n            bind: $.proxy,\n            each: function(collection, cb) {\n                $.each(collection, reverseArgs);\n                function reverseArgs(index, value) {\n                    return cb(value, index);\n                }\n            },\n            map: $.map,\n            filter: $.grep,\n            every: function(obj, test) {\n                var result = true;\n                if (!obj) {\n                    return result;\n                }\n                $.each(obj, function(key, val) {\n                    if (!(result = test.call(null, val, key, obj))) {\n                        return false;\n                    }\n                });\n                return !!result;\n            },\n            some: function(obj, test) {\n                var result = false;\n                if (!obj) {\n                    return result;\n                }\n                $.each(obj, function(key, val) {\n                    if (result = test.call(null, val, key, obj)) {\n                        return false;\n                    }\n                });\n                return !!result;\n            },\n            mixin: $.extend,\n            identity: function(x) {\n                return x;\n            },\n            clone: function(obj) {\n                return $.extend(true, {}, obj);\n            },\n            getIdGenerator: function() {\n                var counter = 0;\n                return function() {\n                    return counter++;\n                };\n            },\n            templatify: function templatify(obj) {\n                return $.isFunction(obj) ? obj : template;\n                function template() {\n                    return String(obj);\n                }\n            },\n            defer: function(fn) {\n                setTimeout(fn, 0);\n            },\n            debounce: function(func, wait, immediate) {\n                var timeout, result;\n                return function() {\n                    var context = this, args = arguments, later, callNow;\n                    later = function() {\n                        timeout = null;\n                        if (!immediate) {\n                            result = func.apply(context, args);\n                        }\n                    };\n                    callNow = immediate && !timeout;\n                    clearTimeout(timeout);\n                    timeout = setTimeout(later, wait);\n                    if (callNow) {\n                        result = func.apply(context, args);\n                    }\n                    return result;\n                };\n            },\n            throttle: function(func, wait) {\n                var context, args, timeout, result, previous, later;\n                previous = 0;\n                later = function() {\n                    previous = new Date();\n                    timeout = null;\n                    result = func.apply(context, args);\n                };\n                return function() {\n                    var now = new Date(), remaining = wait - (now - previous);\n                    context = this;\n                    args = arguments;\n                    if (remaining <= 0) {\n                        clearTimeout(timeout);\n                        timeout = null;\n                        previous = now;\n                        result = func.apply(context, args);\n                    } else if (!timeout) {\n                        timeout = setTimeout(later, remaining);\n                    }\n                    return result;\n                };\n            },\n            stringify: function(val) {\n                return _.isString(val) ? val : JSON.stringify(val);\n            },\n            guid: function() {\n                function _p8(s) {\n                    var p = (Math.random().toString(16) + \"000000000\").substr(2, 8);\n                    return s ? \"-\" + p.substr(0, 4) + \"-\" + p.substr(4, 4) : p;\n                }\n                return \"tt-\" + _p8() + _p8(true) + _p8(true) + _p8();\n            },\n            noop: function() {}\n        };\n    }();\n    var WWW = function() {\n        \"use strict\";\n        var defaultClassNames = {\n            wrapper: \"twitter-typeahead\",\n            input: \"tt-input\",\n            hint: \"tt-hint\",\n            menu: \"tt-menu\",\n            dataset: \"tt-dataset\",\n            suggestion: \"tt-suggestion\",\n            selectable: \"tt-selectable\",\n            empty: \"tt-empty\",\n            open: \"tt-open\",\n            cursor: \"tt-cursor\",\n            highlight: \"tt-highlight\"\n        };\n        return build;\n        function build(o) {\n            var www, classes;\n            classes = _.mixin({}, defaultClassNames, o);\n            www = {\n                css: buildCss(),\n                classes: classes,\n                html: buildHtml(classes),\n                selectors: buildSelectors(classes)\n            };\n            return {\n                css: www.css,\n                html: www.html,\n                classes: www.classes,\n                selectors: www.selectors,\n                mixin: function(o) {\n                    _.mixin(o, www);\n                }\n            };\n        }\n        function buildHtml(c) {\n            return {\n                wrapper: '<span class=\"' + c.wrapper + '\"></span>',\n                menu: '<div role=\"listbox\" class=\"' + c.menu + '\"></div>'\n            };\n        }\n        function buildSelectors(classes) {\n            var selectors = {};\n            _.each(classes, function(v, k) {\n                selectors[k] = \".\" + v;\n            });\n            return selectors;\n        }\n        function buildCss() {\n            var css = {\n                wrapper: {\n                    position: \"relative\",\n                    display: \"inline-block\"\n                },\n                hint: {\n                    position: \"absolute\",\n                    top: \"0\",\n                    left: \"0\",\n                    borderColor: \"transparent\",\n                    boxShadow: \"none\",\n                    opacity: \"1\"\n                },\n                input: {\n                    position: \"relative\",\n                    verticalAlign: \"top\",\n                    backgroundColor: \"transparent\"\n                },\n                inputWithNoHint: {\n                    position: \"relative\",\n                    verticalAlign: \"top\"\n                },\n                menu: {\n                    position: \"absolute\",\n                    top: \"100%\",\n                    left: \"0\",\n                    zIndex: \"100\",\n                    display: \"none\"\n                },\n                ltr: {\n                    left: \"0\",\n                    right: \"auto\"\n                },\n                rtl: {\n                    left: \"auto\",\n                    right: \" 0\"\n                }\n            };\n            if (_.isMsie()) {\n                _.mixin(css.input, {\n                    backgroundImage: \"url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)\"\n                });\n            }\n            return css;\n        }\n    }();\n    var EventBus = function() {\n        \"use strict\";\n        var namespace, deprecationMap;\n        namespace = \"typeahead:\";\n        deprecationMap = {\n            render: \"rendered\",\n            cursorchange: \"cursorchanged\",\n            select: \"selected\",\n            autocomplete: \"autocompleted\"\n        };\n        function EventBus(o) {\n            if (!o || !o.el) {\n                $.error(\"EventBus initialized without el\");\n            }\n            this.$el = $(o.el);\n        }\n        _.mixin(EventBus.prototype, {\n            _trigger: function(type, args) {\n                var $e = $.Event(namespace + type);\n                this.$el.trigger.call(this.$el, $e, args || []);\n                return $e;\n            },\n            before: function(type) {\n                var args, $e;\n                args = [].slice.call(arguments, 1);\n                $e = this._trigger(\"before\" + type, args);\n                return $e.isDefaultPrevented();\n            },\n            trigger: function(type) {\n                var deprecatedType;\n                this._trigger(type, [].slice.call(arguments, 1));\n                if (deprecatedType = deprecationMap[type]) {\n                    this._trigger(deprecatedType, [].slice.call(arguments, 1));\n                }\n            }\n        });\n        return EventBus;\n    }();\n    var EventEmitter = function() {\n        \"use strict\";\n        var splitter = /\\s+/, nextTick = getNextTick();\n        return {\n            onSync: onSync,\n            onAsync: onAsync,\n            off: off,\n            trigger: trigger\n        };\n        function on(method, types, cb, context) {\n            var type;\n            if (!cb) {\n                return this;\n            }\n            types = types.split(splitter);\n            cb = context ? bindContext(cb, context) : cb;\n            this._callbacks = this._callbacks || {};\n            while (type = types.shift()) {\n                this._callbacks[type] = this._callbacks[type] || {\n                    sync: [],\n                    async: []\n                };\n                this._callbacks[type][method].push(cb);\n            }\n            return this;\n        }\n        function onAsync(types, cb, context) {\n            return on.call(this, \"async\", types, cb, context);\n        }\n        function onSync(types, cb, context) {\n            return on.call(this, \"sync\", types, cb, context);\n        }\n        function off(types) {\n            var type;\n            if (!this._callbacks) {\n                return this;\n            }\n            types = types.split(splitter);\n            while (type = types.shift()) {\n                delete this._callbacks[type];\n            }\n            return this;\n        }\n        function trigger(types) {\n            var type, callbacks, args, syncFlush, asyncFlush;\n            if (!this._callbacks) {\n                return this;\n            }\n            types = types.split(splitter);\n            args = [].slice.call(arguments, 1);\n            while ((type = types.shift()) && (callbacks = this._callbacks[type])) {\n                syncFlush = getFlush(callbacks.sync, this, [ type ].concat(args));\n                asyncFlush = getFlush(callbacks.async, this, [ type ].concat(args));\n                syncFlush() && nextTick(asyncFlush);\n            }\n            return this;\n        }\n        function getFlush(callbacks, context, args) {\n            return flush;\n            function flush() {\n                var cancelled;\n                for (var i = 0, len = callbacks.length; !cancelled && i < len; i += 1) {\n                    cancelled = callbacks[i].apply(context, args) === false;\n                }\n                return !cancelled;\n            }\n        }\n        function getNextTick() {\n            var nextTickFn;\n            if (window.setImmediate) {\n                nextTickFn = function nextTickSetImmediate(fn) {\n                    setImmediate(function() {\n                        fn();\n                    });\n                };\n            } else {\n                nextTickFn = function nextTickSetTimeout(fn) {\n                    setTimeout(function() {\n                        fn();\n                    }, 0);\n                };\n            }\n            return nextTickFn;\n        }\n        function bindContext(fn, context) {\n            return fn.bind ? fn.bind(context) : function() {\n                fn.apply(context, [].slice.call(arguments, 0));\n            };\n        }\n    }();\n    var highlight = function(doc) {\n        \"use strict\";\n        var defaults = {\n            node: null,\n            pattern: null,\n            tagName: \"strong\",\n            className: null,\n            wordsOnly: false,\n            caseSensitive: false,\n            diacriticInsensitive: false\n        };\n        var accented = {\n            A: \"[AaªÀ-Åà-åĀ-ąǍǎȀ-ȃȦȧᴬᵃḀḁẚẠ-ảₐ℀℁℻⒜Ⓐⓐ㍱-㍴㎀-㎄㎈㎉㎩-㎯㏂㏊㏟㏿Ａａ]\",\n            B: \"[BbᴮᵇḂ-ḇℬ⒝Ⓑⓑ㍴㎅-㎇㏃㏈㏔㏝Ｂｂ]\",\n            C: \"[CcÇçĆ-čᶜ℀ℂ℃℅℆ℭⅭⅽ⒞Ⓒⓒ㍶㎈㎉㎝㎠㎤㏄-㏇Ｃｃ]\",\n            D: \"[DdĎďǄ-ǆǱ-ǳᴰᵈḊ-ḓⅅⅆⅮⅾ⒟Ⓓⓓ㋏㍲㍷-㍹㎗㎭-㎯㏅㏈Ｄｄ]\",\n            E: \"[EeÈ-Ëè-ëĒ-ěȄ-ȇȨȩᴱᵉḘ-ḛẸ-ẽₑ℡ℯℰⅇ⒠Ⓔⓔ㉐㋍㋎Ｅｅ]\",\n            F: \"[FfᶠḞḟ℉ℱ℻⒡Ⓕⓕ㎊-㎌㎙ﬀ-ﬄＦｆ]\",\n            G: \"[GgĜ-ģǦǧǴǵᴳᵍḠḡℊ⒢Ⓖⓖ㋌㋍㎇㎍-㎏㎓㎬㏆㏉㏒㏿Ｇｇ]\",\n            H: \"[HhĤĥȞȟʰᴴḢ-ḫẖℋ-ℎ⒣Ⓗⓗ㋌㍱㎐-㎔㏊㏋㏗Ｈｈ]\",\n            I: \"[IiÌ-Ïì-ïĨ-İĲĳǏǐȈ-ȋᴵᵢḬḭỈ-ịⁱℐℑℹⅈⅠ-ⅣⅥ-ⅨⅪⅫⅰ-ⅳⅵ-ⅸⅺⅻ⒤Ⓘⓘ㍺㏌㏕ﬁﬃＩｉ]\",\n            J: \"[JjĲ-ĵǇ-ǌǰʲᴶⅉ⒥ⒿⓙⱼＪｊ]\",\n            K: \"[KkĶķǨǩᴷᵏḰ-ḵK⒦Ⓚⓚ㎄㎅㎉㎏㎑㎘㎞㎢㎦㎪㎸㎾㏀㏆㏍-㏏Ｋｋ]\",\n            L: \"[LlĹ-ŀǇ-ǉˡᴸḶḷḺ-ḽℒℓ℡Ⅼⅼ⒧Ⓛⓛ㋏㎈㎉㏐-㏓㏕㏖㏿ﬂﬄＬｌ]\",\n            M: \"[MmᴹᵐḾ-ṃ℠™ℳⅯⅿ⒨Ⓜⓜ㍷-㍹㎃㎆㎎㎒㎖㎙-㎨㎫㎳㎷㎹㎽㎿㏁㏂㏎㏐㏔-㏖㏘㏙㏞㏟Ｍｍ]\",\n            N: \"[NnÑñŃ-ŉǊ-ǌǸǹᴺṄ-ṋⁿℕ№⒩Ⓝⓝ㎁㎋㎚㎱㎵㎻㏌㏑Ｎｎ]\",\n            O: \"[OoºÒ-Öò-öŌ-őƠơǑǒǪǫȌ-ȏȮȯᴼᵒỌ-ỏₒ℅№ℴ⒪Ⓞⓞ㍵㏇㏒㏖Ｏｏ]\",\n            P: \"[PpᴾᵖṔ-ṗℙ⒫Ⓟⓟ㉐㍱㍶㎀㎊㎩-㎬㎰㎴㎺㏋㏗-㏚Ｐｐ]\",\n            Q: \"[Qqℚ⒬Ⓠⓠ㏃Ｑｑ]\",\n            R: \"[RrŔ-řȐ-ȓʳᴿᵣṘ-ṛṞṟ₨ℛ-ℝ⒭Ⓡⓡ㋍㍴㎭-㎯㏚㏛Ｒｒ]\",\n            S: \"[SsŚ-šſȘșˢṠ-ṣ₨℁℠⒮Ⓢⓢ㎧㎨㎮-㎳㏛㏜ﬆＳｓ]\",\n            T: \"[TtŢ-ťȚțᵀᵗṪ-ṱẗ℡™⒯Ⓣⓣ㉐㋏㎔㏏ﬅﬆＴｔ]\",\n            U: \"[UuÙ-Üù-üŨ-ųƯưǓǔȔ-ȗᵁᵘᵤṲ-ṷỤ-ủ℆⒰Ⓤⓤ㍳㍺Ｕｕ]\",\n            V: \"[VvᵛᵥṼ-ṿⅣ-Ⅷⅳ-ⅷ⒱Ⓥⓥⱽ㋎㍵㎴-㎹㏜㏞Ｖｖ]\",\n            W: \"[WwŴŵʷᵂẀ-ẉẘ⒲Ⓦⓦ㎺-㎿㏝Ｗｗ]\",\n            X: \"[XxˣẊ-ẍₓ℻Ⅸ-Ⅻⅸ-ⅻ⒳Ⓧⓧ㏓Ｘｘ]\",\n            Y: \"[YyÝýÿŶ-ŸȲȳʸẎẏẙỲ-ỹ⒴Ⓨⓨ㏉Ｙｙ]\",\n            Z: \"[ZzŹ-žǱ-ǳᶻẐ-ẕℤℨ⒵Ⓩⓩ㎐-㎔Ｚｚ]\"\n        };\n        return function hightlight(o) {\n            var regex;\n            o = _.mixin({}, defaults, o);\n            if (!o.node || !o.pattern) {\n                return;\n            }\n            o.pattern = _.isArray(o.pattern) ? o.pattern : [ o.pattern ];\n            regex = getRegex(o.pattern, o.caseSensitive, o.wordsOnly, o.diacriticInsensitive);\n            traverse(o.node, hightlightTextNode);\n            function hightlightTextNode(textNode) {\n                var match, patternNode, wrapperNode;\n                if (match = regex.exec(textNode.data)) {\n                    wrapperNode = doc.createElement(o.tagName);\n                    o.className && (wrapperNode.className = o.className);\n                    patternNode = textNode.splitText(match.index);\n                    patternNode.splitText(match[0].length);\n                    wrapperNode.appendChild(patternNode.cloneNode(true));\n                    textNode.parentNode.replaceChild(wrapperNode, patternNode);\n                }\n                return !!match;\n            }\n            function traverse(el, hightlightTextNode) {\n                var childNode, TEXT_NODE_TYPE = 3;\n                for (var i = 0; i < el.childNodes.length; i++) {\n                    childNode = el.childNodes[i];\n                    if (childNode.nodeType === TEXT_NODE_TYPE) {\n                        i += hightlightTextNode(childNode) ? 1 : 0;\n                    } else {\n                        traverse(childNode, hightlightTextNode);\n                    }\n                }\n            }\n        };\n        function accent_replacer(chr) {\n            return accented[chr.toUpperCase()] || chr;\n        }\n        function getRegex(patterns, caseSensitive, wordsOnly, diacriticInsensitive) {\n            var escapedPatterns = [], regexStr;\n            for (var i = 0, len = patterns.length; i < len; i++) {\n                var escapedWord = _.escapeRegExChars(patterns[i]);\n                if (diacriticInsensitive) {\n                    escapedWord = escapedWord.replace(/\\S/g, accent_replacer);\n                }\n                escapedPatterns.push(escapedWord);\n            }\n            regexStr = wordsOnly ? \"\\\\b(\" + escapedPatterns.join(\"|\") + \")\\\\b\" : \"(\" + escapedPatterns.join(\"|\") + \")\";\n            return caseSensitive ? new RegExp(regexStr) : new RegExp(regexStr, \"i\");\n        }\n    }(window.document);\n    var Input = function() {\n        \"use strict\";\n        var specialKeyCodeMap;\n        specialKeyCodeMap = {\n            9: \"tab\",\n            27: \"esc\",\n            37: \"left\",\n            39: \"right\",\n            13: \"enter\",\n            38: \"up\",\n            40: \"down\"\n        };\n        function Input(o, www) {\n            var id;\n            o = o || {};\n            if (!o.input) {\n                $.error(\"input is missing\");\n            }\n            www.mixin(this);\n            this.$hint = $(o.hint);\n            this.$input = $(o.input);\n            this.$menu = $(o.menu);\n            id = this.$input.attr(\"id\") || _.guid();\n            this.$menu.attr(\"id\", id + \"_listbox\");\n            this.$hint.attr({\n                \"aria-hidden\": true\n            });\n            this.$input.attr({\n                \"aria-owns\": id + \"_listbox\",\n                role: \"combobox\",\n                \"aria-autocomplete\": \"list\",\n                \"aria-expanded\": false\n            });\n            this.query = this.$input.val();\n            this.queryWhenFocused = this.hasFocus() ? this.query : null;\n            this.$overflowHelper = buildOverflowHelper(this.$input);\n            this._checkLanguageDirection();\n            if (this.$hint.length === 0) {\n                this.setHint = this.getHint = this.clearHint = this.clearHintIfInvalid = _.noop;\n            }\n            this.onSync(\"cursorchange\", this._updateDescendent);\n        }\n        Input.normalizeQuery = function(str) {\n            return _.toStr(str).replace(/^\\s*/g, \"\").replace(/\\s{2,}/g, \" \");\n        };\n        _.mixin(Input.prototype, EventEmitter, {\n            _onBlur: function onBlur() {\n                this.resetInputValue();\n                this.trigger(\"blurred\");\n            },\n            _onFocus: function onFocus() {\n                this.queryWhenFocused = this.query;\n                this.trigger(\"focused\");\n            },\n            _onKeydown: function onKeydown($e) {\n                var keyName = specialKeyCodeMap[$e.which || $e.keyCode];\n                this._managePreventDefault(keyName, $e);\n                if (keyName && this._shouldTrigger(keyName, $e)) {\n                    this.trigger(keyName + \"Keyed\", $e);\n                }\n            },\n            _onInput: function onInput() {\n                this._setQuery(this.getInputValue());\n                this.clearHintIfInvalid();\n                this._checkLanguageDirection();\n            },\n            _managePreventDefault: function managePreventDefault(keyName, $e) {\n                var preventDefault;\n                switch (keyName) {\n                  case \"up\":\n                  case \"down\":\n                    preventDefault = !withModifier($e);\n                    break;\n\n                  default:\n                    preventDefault = false;\n                }\n                preventDefault && $e.preventDefault();\n            },\n            _shouldTrigger: function shouldTrigger(keyName, $e) {\n                var trigger;\n                switch (keyName) {\n                  case \"tab\":\n                    trigger = !withModifier($e);\n                    break;\n\n                  default:\n                    trigger = true;\n                }\n                return trigger;\n            },\n            _checkLanguageDirection: function checkLanguageDirection() {\n                var dir = (this.$input.css(\"direction\") || \"ltr\").toLowerCase();\n                if (this.dir !== dir) {\n                    this.dir = dir;\n                    this.$hint.attr(\"dir\", dir);\n                    this.trigger(\"langDirChanged\", dir);\n                }\n            },\n            _setQuery: function setQuery(val, silent) {\n                var areEquivalent, hasDifferentWhitespace;\n                areEquivalent = areQueriesEquivalent(val, this.query);\n                hasDifferentWhitespace = areEquivalent ? this.query.length !== val.length : false;\n                this.query = val;\n                if (!silent && !areEquivalent) {\n                    this.trigger(\"queryChanged\", this.query);\n                } else if (!silent && hasDifferentWhitespace) {\n                    this.trigger(\"whitespaceChanged\", this.query);\n                }\n            },\n            _updateDescendent: function updateDescendent(event, id) {\n                this.$input.attr(\"aria-activedescendant\", id);\n            },\n            bind: function() {\n                var that = this, onBlur, onFocus, onKeydown, onInput;\n                onBlur = _.bind(this._onBlur, this);\n                onFocus = _.bind(this._onFocus, this);\n                onKeydown = _.bind(this._onKeydown, this);\n                onInput = _.bind(this._onInput, this);\n                this.$input.on(\"blur.tt\", onBlur).on(\"focus.tt\", onFocus).on(\"keydown.tt\", onKeydown);\n                if (!_.isMsie() || _.isMsie() > 9) {\n                    this.$input.on(\"input.tt\", onInput);\n                } else {\n                    this.$input.on(\"keydown.tt keypress.tt cut.tt paste.tt\", function($e) {\n                        if (specialKeyCodeMap[$e.which || $e.keyCode]) {\n                            return;\n                        }\n                        _.defer(_.bind(that._onInput, that, $e));\n                    });\n                }\n                return this;\n            },\n            focus: function focus() {\n                this.$input.focus();\n            },\n            blur: function blur() {\n                this.$input.blur();\n            },\n            getLangDir: function getLangDir() {\n                return this.dir;\n            },\n            getQuery: function getQuery() {\n                return this.query || \"\";\n            },\n            setQuery: function setQuery(val, silent) {\n                this.setInputValue(val);\n                this._setQuery(val, silent);\n            },\n            hasQueryChangedSinceLastFocus: function hasQueryChangedSinceLastFocus() {\n                return this.query !== this.queryWhenFocused;\n            },\n            getInputValue: function getInputValue() {\n                return this.$input.val();\n            },\n            setInputValue: function setInputValue(value) {\n                this.$input.val(value);\n                this.clearHintIfInvalid();\n                this._checkLanguageDirection();\n            },\n            resetInputValue: function resetInputValue() {\n                this.setInputValue(this.query);\n            },\n            getHint: function getHint() {\n                return this.$hint.val();\n            },\n            setHint: function setHint(value) {\n                this.$hint.val(value);\n            },\n            clearHint: function clearHint() {\n                this.setHint(\"\");\n            },\n            clearHintIfInvalid: function clearHintIfInvalid() {\n                var val, hint, valIsPrefixOfHint, isValid;\n                val = this.getInputValue();\n                hint = this.getHint();\n                valIsPrefixOfHint = val !== hint && hint.indexOf(val) === 0;\n                isValid = val !== \"\" && valIsPrefixOfHint && !this.hasOverflow();\n                !isValid && this.clearHint();\n            },\n            hasFocus: function hasFocus() {\n                return this.$input.is(\":focus\");\n            },\n            hasOverflow: function hasOverflow() {\n                var constraint = this.$input.width() - 2;\n                this.$overflowHelper.text(this.getInputValue());\n                return this.$overflowHelper.width() >= constraint;\n            },\n            isCursorAtEnd: function() {\n                var valueLength, selectionStart, range;\n                valueLength = this.$input.val().length;\n                selectionStart = this.$input[0].selectionStart;\n                if (_.isNumber(selectionStart)) {\n                    return selectionStart === valueLength;\n                } else if (document.selection) {\n                    range = document.selection.createRange();\n                    range.moveStart(\"character\", -valueLength);\n                    return valueLength === range.text.length;\n                }\n                return true;\n            },\n            destroy: function destroy() {\n                this.$hint.off(\".tt\");\n                this.$input.off(\".tt\");\n                this.$overflowHelper.remove();\n                this.$hint = this.$input = this.$overflowHelper = $(\"<div>\");\n            },\n            setAriaExpanded: function setAriaExpanded(value) {\n                this.$input.attr(\"aria-expanded\", value);\n            }\n        });\n        return Input;\n        function buildOverflowHelper($input) {\n            return $('<pre aria-hidden=\"true\"></pre>').css({\n                position: \"absolute\",\n                visibility: \"hidden\",\n                whiteSpace: \"pre\",\n                fontFamily: $input.css(\"font-family\"),\n                fontSize: $input.css(\"font-size\"),\n                fontStyle: $input.css(\"font-style\"),\n                fontVariant: $input.css(\"font-variant\"),\n                fontWeight: $input.css(\"font-weight\"),\n                wordSpacing: $input.css(\"word-spacing\"),\n                letterSpacing: $input.css(\"letter-spacing\"),\n                textIndent: $input.css(\"text-indent\"),\n                textRendering: $input.css(\"text-rendering\"),\n                textTransform: $input.css(\"text-transform\")\n            }).insertAfter($input);\n        }\n        function areQueriesEquivalent(a, b) {\n            return Input.normalizeQuery(a) === Input.normalizeQuery(b);\n        }\n        function withModifier($e) {\n            return $e.altKey || $e.ctrlKey || $e.metaKey || $e.shiftKey;\n        }\n    }();\n    var Dataset = function() {\n        \"use strict\";\n        var keys, nameGenerator;\n        keys = {\n            dataset: \"tt-selectable-dataset\",\n            val: \"tt-selectable-display\",\n            obj: \"tt-selectable-object\"\n        };\n        nameGenerator = _.getIdGenerator();\n        function Dataset(o, www) {\n            o = o || {};\n            o.templates = o.templates || {};\n            o.templates.notFound = o.templates.notFound || o.templates.empty;\n            if (!o.source) {\n                $.error(\"missing source\");\n            }\n            if (!o.node) {\n                $.error(\"missing node\");\n            }\n            if (o.name && !isValidName(o.name)) {\n                $.error(\"invalid dataset name: \" + o.name);\n            }\n            www.mixin(this);\n            this.highlight = !!o.highlight;\n            this.name = _.toStr(o.name || nameGenerator());\n            this.limit = o.limit || 5;\n            this.displayFn = getDisplayFn(o.display || o.displayKey);\n            this.templates = getTemplates(o.templates, this.displayFn);\n            this.source = o.source.__ttAdapter ? o.source.__ttAdapter() : o.source;\n            this.async = _.isUndefined(o.async) ? this.source.length > 2 : !!o.async;\n            this._resetLastSuggestion();\n            this.$el = $(o.node).attr(\"role\", \"presentation\").addClass(this.classes.dataset).addClass(this.classes.dataset + \"-\" + this.name);\n        }\n        Dataset.extractData = function extractData(el) {\n            var $el = $(el);\n            if ($el.data(keys.obj)) {\n                return {\n                    dataset: $el.data(keys.dataset) || \"\",\n                    val: $el.data(keys.val) || \"\",\n                    obj: $el.data(keys.obj) || null\n                };\n            }\n            return null;\n        };\n        _.mixin(Dataset.prototype, EventEmitter, {\n            _overwrite: function overwrite(query, suggestions) {\n                suggestions = suggestions || [];\n                if (suggestions.length) {\n                    this._renderSuggestions(query, suggestions);\n                } else if (this.async && this.templates.pending) {\n                    this._renderPending(query);\n                } else if (!this.async && this.templates.notFound) {\n                    this._renderNotFound(query);\n                } else {\n                    this._empty();\n                }\n                this.trigger(\"rendered\", suggestions, false, this.name);\n            },\n            _append: function append(query, suggestions) {\n                suggestions = suggestions || [];\n                if (suggestions.length && this.$lastSuggestion.length) {\n                    this._appendSuggestions(query, suggestions);\n                } else if (suggestions.length) {\n                    this._renderSuggestions(query, suggestions);\n                } else if (!this.$lastSuggestion.length && this.templates.notFound) {\n                    this._renderNotFound(query);\n                }\n                this.trigger(\"rendered\", suggestions, true, this.name);\n            },\n            _renderSuggestions: function renderSuggestions(query, suggestions) {\n                var $fragment;\n                $fragment = this._getSuggestionsFragment(query, suggestions);\n                this.$lastSuggestion = $fragment.children().last();\n                this.$el.html($fragment).prepend(this._getHeader(query, suggestions)).append(this._getFooter(query, suggestions));\n            },\n            _appendSuggestions: function appendSuggestions(query, suggestions) {\n                var $fragment, $lastSuggestion;\n                $fragment = this._getSuggestionsFragment(query, suggestions);\n                $lastSuggestion = $fragment.children().last();\n                this.$lastSuggestion.after($fragment);\n                this.$lastSuggestion = $lastSuggestion;\n            },\n            _renderPending: function renderPending(query) {\n                var template = this.templates.pending;\n                this._resetLastSuggestion();\n                template && this.$el.html(template({\n                    query: query,\n                    dataset: this.name\n                }));\n            },\n            _renderNotFound: function renderNotFound(query) {\n                var template = this.templates.notFound;\n                this._resetLastSuggestion();\n                template && this.$el.html(template({\n                    query: query,\n                    dataset: this.name\n                }));\n            },\n            _empty: function empty() {\n                this.$el.empty();\n                this._resetLastSuggestion();\n            },\n            _getSuggestionsFragment: function getSuggestionsFragment(query, suggestions) {\n                var that = this, fragment;\n                fragment = document.createDocumentFragment();\n                _.each(suggestions, function getSuggestionNode(suggestion) {\n                    var $el, context;\n                    context = that._injectQuery(query, suggestion);\n                    $el = $(that.templates.suggestion(context)).data(keys.dataset, that.name).data(keys.obj, suggestion).data(keys.val, that.displayFn(suggestion)).addClass(that.classes.suggestion + \" \" + that.classes.selectable);\n                    fragment.appendChild($el[0]);\n                });\n                this.highlight && highlight({\n                    className: this.classes.highlight,\n                    node: fragment,\n                    pattern: query\n                });\n                return $(fragment);\n            },\n            _getFooter: function getFooter(query, suggestions) {\n                return this.templates.footer ? this.templates.footer({\n                    query: query,\n                    suggestions: suggestions,\n                    dataset: this.name\n                }) : null;\n            },\n            _getHeader: function getHeader(query, suggestions) {\n                return this.templates.header ? this.templates.header({\n                    query: query,\n                    suggestions: suggestions,\n                    dataset: this.name\n                }) : null;\n            },\n            _resetLastSuggestion: function resetLastSuggestion() {\n                this.$lastSuggestion = $();\n            },\n            _injectQuery: function injectQuery(query, obj) {\n                return _.isObject(obj) ? _.mixin({\n                    _query: query\n                }, obj) : obj;\n            },\n            update: function update(query) {\n                var that = this, canceled = false, syncCalled = false, rendered = 0;\n                this.cancel();\n                this.cancel = function cancel() {\n                    canceled = true;\n                    that.cancel = $.noop;\n                    that.async && that.trigger(\"asyncCanceled\", query, that.name);\n                };\n                this.source(query, sync, async);\n                !syncCalled && sync([]);\n                function sync(suggestions) {\n                    if (syncCalled) {\n                        return;\n                    }\n                    syncCalled = true;\n                    suggestions = (suggestions || []).slice(0, that.limit);\n                    rendered = suggestions.length;\n                    that._overwrite(query, suggestions);\n                    if (rendered < that.limit && that.async) {\n                        that.trigger(\"asyncRequested\", query, that.name);\n                    }\n                }\n                function async(suggestions) {\n                    suggestions = suggestions || [];\n                    if (!canceled && rendered < that.limit) {\n                        that.cancel = $.noop;\n                        var idx = Math.abs(rendered - that.limit);\n                        rendered += idx;\n                        that._append(query, suggestions.slice(0, idx));\n                        that.async && that.trigger(\"asyncReceived\", query, that.name);\n                    }\n                }\n            },\n            cancel: $.noop,\n            clear: function clear() {\n                this._empty();\n                this.cancel();\n                this.trigger(\"cleared\");\n            },\n            isEmpty: function isEmpty() {\n                return this.$el.is(\":empty\");\n            },\n            destroy: function destroy() {\n                this.$el = $(\"<div>\");\n            }\n        });\n        return Dataset;\n        function getDisplayFn(display) {\n            display = display || _.stringify;\n            return _.isFunction(display) ? display : displayFn;\n            function displayFn(obj) {\n                return obj[display];\n            }\n        }\n        function getTemplates(templates, displayFn) {\n            return {\n                notFound: templates.notFound && _.templatify(templates.notFound),\n                pending: templates.pending && _.templatify(templates.pending),\n                header: templates.header && _.templatify(templates.header),\n                footer: templates.footer && _.templatify(templates.footer),\n                suggestion: templates.suggestion ? userSuggestionTemplate : suggestionTemplate\n            };\n            function userSuggestionTemplate(context) {\n                var template = templates.suggestion;\n                return $(template(context)).attr(\"id\", _.guid());\n            }\n            function suggestionTemplate(context) {\n                return $('<div role=\"option\">').attr(\"id\", _.guid()).text(displayFn(context));\n            }\n        }\n        function isValidName(str) {\n            return /^[_a-zA-Z0-9-]+$/.test(str);\n        }\n    }();\n    var Menu = function() {\n        \"use strict\";\n        function Menu(o, www) {\n            var that = this;\n            o = o || {};\n            if (!o.node) {\n                $.error(\"node is required\");\n            }\n            www.mixin(this);\n            this.$node = $(o.node);\n            this.query = null;\n            this.datasets = _.map(o.datasets, initializeDataset);\n            function initializeDataset(oDataset) {\n                var node = that.$node.find(oDataset.node).first();\n                oDataset.node = node.length ? node : $(\"<div>\").appendTo(that.$node);\n                return new Dataset(oDataset, www);\n            }\n        }\n        _.mixin(Menu.prototype, EventEmitter, {\n            _onSelectableClick: function onSelectableClick($e) {\n                this.trigger(\"selectableClicked\", $($e.currentTarget));\n            },\n            _onRendered: function onRendered(type, dataset, suggestions, async) {\n                this.$node.toggleClass(this.classes.empty, this._allDatasetsEmpty());\n                this.trigger(\"datasetRendered\", dataset, suggestions, async);\n            },\n            _onCleared: function onCleared() {\n                this.$node.toggleClass(this.classes.empty, this._allDatasetsEmpty());\n                this.trigger(\"datasetCleared\");\n            },\n            _propagate: function propagate() {\n                this.trigger.apply(this, arguments);\n            },\n            _allDatasetsEmpty: function allDatasetsEmpty() {\n                return _.every(this.datasets, _.bind(function isDatasetEmpty(dataset) {\n                    var isEmpty = dataset.isEmpty();\n                    this.$node.attr(\"aria-expanded\", !isEmpty);\n                    return isEmpty;\n                }, this));\n            },\n            _getSelectables: function getSelectables() {\n                return this.$node.find(this.selectors.selectable);\n            },\n            _removeCursor: function _removeCursor() {\n                var $selectable = this.getActiveSelectable();\n                $selectable && $selectable.removeClass(this.classes.cursor);\n            },\n            _ensureVisible: function ensureVisible($el) {\n                var elTop, elBottom, nodeScrollTop, nodeHeight;\n                elTop = $el.position().top;\n                elBottom = elTop + $el.outerHeight(true);\n                nodeScrollTop = this.$node.scrollTop();\n                nodeHeight = this.$node.height() + parseInt(this.$node.css(\"paddingTop\"), 10) + parseInt(this.$node.css(\"paddingBottom\"), 10);\n                if (elTop < 0) {\n                    this.$node.scrollTop(nodeScrollTop + elTop);\n                } else if (nodeHeight < elBottom) {\n                    this.$node.scrollTop(nodeScrollTop + (elBottom - nodeHeight));\n                }\n            },\n            bind: function() {\n                var that = this, onSelectableClick;\n                onSelectableClick = _.bind(this._onSelectableClick, this);\n                this.$node.on(\"click.tt\", this.selectors.selectable, onSelectableClick);\n                this.$node.on(\"mouseover\", this.selectors.selectable, function() {\n                    that.setCursor($(this));\n                });\n                this.$node.on(\"mouseleave\", function() {\n                    that._removeCursor();\n                });\n                _.each(this.datasets, function(dataset) {\n                    dataset.onSync(\"asyncRequested\", that._propagate, that).onSync(\"asyncCanceled\", that._propagate, that).onSync(\"asyncReceived\", that._propagate, that).onSync(\"rendered\", that._onRendered, that).onSync(\"cleared\", that._onCleared, that);\n                });\n                return this;\n            },\n            isOpen: function isOpen() {\n                return this.$node.hasClass(this.classes.open);\n            },\n            open: function open() {\n                this.$node.scrollTop(0);\n                this.$node.addClass(this.classes.open);\n            },\n            close: function close() {\n                this.$node.attr(\"aria-expanded\", false);\n                this.$node.removeClass(this.classes.open);\n                this._removeCursor();\n            },\n            setLanguageDirection: function setLanguageDirection(dir) {\n                this.$node.attr(\"dir\", dir);\n            },\n            selectableRelativeToCursor: function selectableRelativeToCursor(delta) {\n                var $selectables, $oldCursor, oldIndex, newIndex;\n                $oldCursor = this.getActiveSelectable();\n                $selectables = this._getSelectables();\n                oldIndex = $oldCursor ? $selectables.index($oldCursor) : -1;\n                newIndex = oldIndex + delta;\n                newIndex = (newIndex + 1) % ($selectables.length + 1) - 1;\n                newIndex = newIndex < -1 ? $selectables.length - 1 : newIndex;\n                return newIndex === -1 ? null : $selectables.eq(newIndex);\n            },\n            setCursor: function setCursor($selectable) {\n                this._removeCursor();\n                if ($selectable = $selectable && $selectable.first()) {\n                    $selectable.addClass(this.classes.cursor);\n                    this._ensureVisible($selectable);\n                }\n            },\n            getSelectableData: function getSelectableData($el) {\n                return $el && $el.length ? Dataset.extractData($el) : null;\n            },\n            getActiveSelectable: function getActiveSelectable() {\n                var $selectable = this._getSelectables().filter(this.selectors.cursor).first();\n                return $selectable.length ? $selectable : null;\n            },\n            getTopSelectable: function getTopSelectable() {\n                var $selectable = this._getSelectables().first();\n                return $selectable.length ? $selectable : null;\n            },\n            update: function update(query) {\n                var isValidUpdate = query !== this.query;\n                if (isValidUpdate) {\n                    this.query = query;\n                    _.each(this.datasets, updateDataset);\n                }\n                return isValidUpdate;\n                function updateDataset(dataset) {\n                    dataset.update(query);\n                }\n            },\n            empty: function empty() {\n                _.each(this.datasets, clearDataset);\n                this.query = null;\n                this.$node.addClass(this.classes.empty);\n                function clearDataset(dataset) {\n                    dataset.clear();\n                }\n            },\n            destroy: function destroy() {\n                this.$node.off(\".tt\");\n                this.$node = $(\"<div>\");\n                _.each(this.datasets, destroyDataset);\n                function destroyDataset(dataset) {\n                    dataset.destroy();\n                }\n            }\n        });\n        return Menu;\n    }();\n    var Status = function() {\n        \"use strict\";\n        function Status(options) {\n            this.$el = $(\"<span></span>\", {\n                role: \"status\",\n                \"aria-live\": \"polite\"\n            }).css({\n                position: \"absolute\",\n                padding: \"0\",\n                border: \"0\",\n                height: \"1px\",\n                width: \"1px\",\n                \"margin-bottom\": \"-1px\",\n                \"margin-right\": \"-1px\",\n                overflow: \"hidden\",\n                clip: \"rect(0 0 0 0)\",\n                \"white-space\": \"nowrap\"\n            });\n            options.$input.after(this.$el);\n            _.each(options.menu.datasets, _.bind(function(dataset) {\n                if (dataset.onSync) {\n                    dataset.onSync(\"rendered\", _.bind(this.update, this));\n                    dataset.onSync(\"cleared\", _.bind(this.cleared, this));\n                }\n            }, this));\n        }\n        _.mixin(Status.prototype, {\n            update: function update(event, suggestions) {\n                var length = suggestions.length;\n                var words;\n                if (length === 1) {\n                    words = {\n                        result: \"result\",\n                        is: \"is\"\n                    };\n                } else {\n                    words = {\n                        result: \"results\",\n                        is: \"are\"\n                    };\n                }\n                this.$el.text(length + \" \" + words.result + \" \" + words.is + \" available, use up and down arrow keys to navigate.\");\n            },\n            cleared: function() {\n                this.$el.text(\"\");\n            }\n        });\n        return Status;\n    }();\n    var DefaultMenu = function() {\n        \"use strict\";\n        var s = Menu.prototype;\n        function DefaultMenu() {\n            Menu.apply(this, [].slice.call(arguments, 0));\n        }\n        _.mixin(DefaultMenu.prototype, Menu.prototype, {\n            open: function open() {\n                !this._allDatasetsEmpty() && this._show();\n                return s.open.apply(this, [].slice.call(arguments, 0));\n            },\n            close: function close() {\n                this._hide();\n                return s.close.apply(this, [].slice.call(arguments, 0));\n            },\n            _onRendered: function onRendered() {\n                if (this._allDatasetsEmpty()) {\n                    this._hide();\n                } else {\n                    this.isOpen() && this._show();\n                }\n                return s._onRendered.apply(this, [].slice.call(arguments, 0));\n            },\n            _onCleared: function onCleared() {\n                if (this._allDatasetsEmpty()) {\n                    this._hide();\n                } else {\n                    this.isOpen() && this._show();\n                }\n                return s._onCleared.apply(this, [].slice.call(arguments, 0));\n            },\n            setLanguageDirection: function setLanguageDirection(dir) {\n                this.$node.css(dir === \"ltr\" ? this.css.ltr : this.css.rtl);\n                return s.setLanguageDirection.apply(this, [].slice.call(arguments, 0));\n            },\n            _hide: function hide() {\n                this.$node.hide();\n            },\n            _show: function show() {\n                this.$node.css(\"display\", \"block\");\n            }\n        });\n        return DefaultMenu;\n    }();\n    var Typeahead = function() {\n        \"use strict\";\n        function Typeahead(o, www) {\n            var onFocused, onBlurred, onEnterKeyed, onTabKeyed, onEscKeyed, onUpKeyed, onDownKeyed, onLeftKeyed, onRightKeyed, onQueryChanged, onWhitespaceChanged;\n            o = o || {};\n            if (!o.input) {\n                $.error(\"missing input\");\n            }\n            if (!o.menu) {\n                $.error(\"missing menu\");\n            }\n            if (!o.eventBus) {\n                $.error(\"missing event bus\");\n            }\n            www.mixin(this);\n            this.eventBus = o.eventBus;\n            this.minLength = _.isNumber(o.minLength) ? o.minLength : 1;\n            this.input = o.input;\n            this.menu = o.menu;\n            this.enabled = true;\n            this.autoselect = !!o.autoselect;\n            this.active = false;\n            this.input.hasFocus() && this.activate();\n            this.dir = this.input.getLangDir();\n            this._hacks();\n            this.menu.bind().onSync(\"selectableClicked\", this._onSelectableClicked, this).onSync(\"asyncRequested\", this._onAsyncRequested, this).onSync(\"asyncCanceled\", this._onAsyncCanceled, this).onSync(\"asyncReceived\", this._onAsyncReceived, this).onSync(\"datasetRendered\", this._onDatasetRendered, this).onSync(\"datasetCleared\", this._onDatasetCleared, this);\n            onFocused = c(this, \"activate\", \"open\", \"_onFocused\");\n            onBlurred = c(this, \"deactivate\", \"_onBlurred\");\n            onEnterKeyed = c(this, \"isActive\", \"isOpen\", \"_onEnterKeyed\");\n            onTabKeyed = c(this, \"isActive\", \"isOpen\", \"_onTabKeyed\");\n            onEscKeyed = c(this, \"isActive\", \"_onEscKeyed\");\n            onUpKeyed = c(this, \"isActive\", \"open\", \"_onUpKeyed\");\n            onDownKeyed = c(this, \"isActive\", \"open\", \"_onDownKeyed\");\n            onLeftKeyed = c(this, \"isActive\", \"isOpen\", \"_onLeftKeyed\");\n            onRightKeyed = c(this, \"isActive\", \"isOpen\", \"_onRightKeyed\");\n            onQueryChanged = c(this, \"_openIfActive\", \"_onQueryChanged\");\n            onWhitespaceChanged = c(this, \"_openIfActive\", \"_onWhitespaceChanged\");\n            this.input.bind().onSync(\"focused\", onFocused, this).onSync(\"blurred\", onBlurred, this).onSync(\"enterKeyed\", onEnterKeyed, this).onSync(\"tabKeyed\", onTabKeyed, this).onSync(\"escKeyed\", onEscKeyed, this).onSync(\"upKeyed\", onUpKeyed, this).onSync(\"downKeyed\", onDownKeyed, this).onSync(\"leftKeyed\", onLeftKeyed, this).onSync(\"rightKeyed\", onRightKeyed, this).onSync(\"queryChanged\", onQueryChanged, this).onSync(\"whitespaceChanged\", onWhitespaceChanged, this).onSync(\"langDirChanged\", this._onLangDirChanged, this);\n        }\n        _.mixin(Typeahead.prototype, {\n            _hacks: function hacks() {\n                var $input, $menu;\n                $input = this.input.$input || $(\"<div>\");\n                $menu = this.menu.$node || $(\"<div>\");\n                $input.on(\"blur.tt\", function($e) {\n                    var active, isActive, hasActive;\n                    active = document.activeElement;\n                    isActive = $menu.is(active);\n                    hasActive = $menu.has(active).length > 0;\n                    if (_.isMsie() && (isActive || hasActive)) {\n                        $e.preventDefault();\n                        $e.stopImmediatePropagation();\n                        _.defer(function() {\n                            $input.focus();\n                        });\n                    }\n                });\n                $menu.on(\"mousedown.tt\", function($e) {\n                    $e.preventDefault();\n                });\n            },\n            _onSelectableClicked: function onSelectableClicked(type, $el) {\n                this.select($el);\n            },\n            _onDatasetCleared: function onDatasetCleared() {\n                this._updateHint();\n            },\n            _onDatasetRendered: function onDatasetRendered(type, suggestions, async, dataset) {\n                this._updateHint();\n                if (this.autoselect) {\n                    var cursorClass = this.selectors.cursor.substr(1);\n                    this.menu.$node.find(this.selectors.suggestion).first().addClass(cursorClass);\n                }\n                this.eventBus.trigger(\"render\", suggestions, async, dataset);\n            },\n            _onAsyncRequested: function onAsyncRequested(type, dataset, query) {\n                this.eventBus.trigger(\"asyncrequest\", query, dataset);\n            },\n            _onAsyncCanceled: function onAsyncCanceled(type, dataset, query) {\n                this.eventBus.trigger(\"asynccancel\", query, dataset);\n            },\n            _onAsyncReceived: function onAsyncReceived(type, dataset, query) {\n                this.eventBus.trigger(\"asyncreceive\", query, dataset);\n            },\n            _onFocused: function onFocused() {\n                this._minLengthMet() && this.menu.update(this.input.getQuery());\n            },\n            _onBlurred: function onBlurred() {\n                if (this.input.hasQueryChangedSinceLastFocus()) {\n                    this.eventBus.trigger(\"change\", this.input.getQuery());\n                }\n            },\n            _onEnterKeyed: function onEnterKeyed(type, $e) {\n                var $selectable;\n                if ($selectable = this.menu.getActiveSelectable()) {\n                    if (this.select($selectable)) {\n                        $e.preventDefault();\n                        $e.stopPropagation();\n                    }\n                } else if (this.autoselect) {\n                    if (this.select(this.menu.getTopSelectable())) {\n                        $e.preventDefault();\n                        $e.stopPropagation();\n                    }\n                }\n            },\n            _onTabKeyed: function onTabKeyed(type, $e) {\n                var $selectable;\n                if ($selectable = this.menu.getActiveSelectable()) {\n                    this.select($selectable) && $e.preventDefault();\n                } else if (this.autoselect) {\n                    if ($selectable = this.menu.getTopSelectable()) {\n                        this.autocomplete($selectable) && $e.preventDefault();\n                    }\n                }\n            },\n            _onEscKeyed: function onEscKeyed() {\n                this.close();\n            },\n            _onUpKeyed: function onUpKeyed() {\n                this.moveCursor(-1);\n            },\n            _onDownKeyed: function onDownKeyed() {\n                this.moveCursor(+1);\n            },\n            _onLeftKeyed: function onLeftKeyed() {\n                if (this.dir === \"rtl\" && this.input.isCursorAtEnd()) {\n                    this.autocomplete(this.menu.getActiveSelectable() || this.menu.getTopSelectable());\n                }\n            },\n            _onRightKeyed: function onRightKeyed() {\n                if (this.dir === \"ltr\" && this.input.isCursorAtEnd()) {\n                    this.autocomplete(this.menu.getActiveSelectable() || this.menu.getTopSelectable());\n                }\n            },\n            _onQueryChanged: function onQueryChanged(e, query) {\n                this._minLengthMet(query) ? this.menu.update(query) : this.menu.empty();\n            },\n            _onWhitespaceChanged: function onWhitespaceChanged() {\n                this._updateHint();\n            },\n            _onLangDirChanged: function onLangDirChanged(e, dir) {\n                if (this.dir !== dir) {\n                    this.dir = dir;\n                    this.menu.setLanguageDirection(dir);\n                }\n            },\n            _openIfActive: function openIfActive() {\n                this.isActive() && this.open();\n            },\n            _minLengthMet: function minLengthMet(query) {\n                query = _.isString(query) ? query : this.input.getQuery() || \"\";\n                return query.length >= this.minLength;\n            },\n            _updateHint: function updateHint() {\n                var $selectable, data, val, query, escapedQuery, frontMatchRegEx, match;\n                $selectable = this.menu.getTopSelectable();\n                data = this.menu.getSelectableData($selectable);\n                val = this.input.getInputValue();\n                if (data && !_.isBlankString(val) && !this.input.hasOverflow()) {\n                    query = Input.normalizeQuery(val);\n                    escapedQuery = _.escapeRegExChars(query);\n                    frontMatchRegEx = new RegExp(\"^(?:\" + escapedQuery + \")(.+$)\", \"i\");\n                    match = frontMatchRegEx.exec(data.val);\n                    match && this.input.setHint(val + match[1]);\n                } else {\n                    this.input.clearHint();\n                }\n            },\n            isEnabled: function isEnabled() {\n                return this.enabled;\n            },\n            enable: function enable() {\n                this.enabled = true;\n            },\n            disable: function disable() {\n                this.enabled = false;\n            },\n            isActive: function isActive() {\n                return this.active;\n            },\n            activate: function activate() {\n                if (this.isActive()) {\n                    return true;\n                } else if (!this.isEnabled() || this.eventBus.before(\"active\")) {\n                    return false;\n                } else {\n                    this.active = true;\n                    this.eventBus.trigger(\"active\");\n                    return true;\n                }\n            },\n            deactivate: function deactivate() {\n                if (!this.isActive()) {\n                    return true;\n                } else if (this.eventBus.before(\"idle\")) {\n                    return false;\n                } else {\n                    this.active = false;\n                    this.close();\n                    this.eventBus.trigger(\"idle\");\n                    return true;\n                }\n            },\n            isOpen: function isOpen() {\n                return this.menu.isOpen();\n            },\n            open: function open() {\n                if (!this.isOpen() && !this.eventBus.before(\"open\")) {\n                    this.input.setAriaExpanded(true);\n                    this.menu.open();\n                    this._updateHint();\n                    this.eventBus.trigger(\"open\");\n                }\n                return this.isOpen();\n            },\n            close: function close() {\n                if (this.isOpen() && !this.eventBus.before(\"close\")) {\n                    this.input.setAriaExpanded(false);\n                    this.menu.close();\n                    this.input.clearHint();\n                    this.input.resetInputValue();\n                    this.eventBus.trigger(\"close\");\n                }\n                return !this.isOpen();\n            },\n            setVal: function setVal(val) {\n                this.input.setQuery(_.toStr(val));\n            },\n            getVal: function getVal() {\n                return this.input.getQuery();\n            },\n            select: function select($selectable) {\n                var data = this.menu.getSelectableData($selectable);\n                if (data && !this.eventBus.before(\"select\", data.obj, data.dataset)) {\n                    this.input.setQuery(data.val, true);\n                    this.eventBus.trigger(\"select\", data.obj, data.dataset);\n                    this.close();\n                    return true;\n                }\n                return false;\n            },\n            autocomplete: function autocomplete($selectable) {\n                var query, data, isValid;\n                query = this.input.getQuery();\n                data = this.menu.getSelectableData($selectable);\n                isValid = data && query !== data.val;\n                if (isValid && !this.eventBus.before(\"autocomplete\", data.obj, data.dataset)) {\n                    this.input.setQuery(data.val);\n                    this.eventBus.trigger(\"autocomplete\", data.obj, data.dataset);\n                    return true;\n                }\n                return false;\n            },\n            moveCursor: function moveCursor(delta) {\n                var query, $candidate, data, suggestion, datasetName, cancelMove, id;\n                query = this.input.getQuery();\n                $candidate = this.menu.selectableRelativeToCursor(delta);\n                data = this.menu.getSelectableData($candidate);\n                suggestion = data ? data.obj : null;\n                datasetName = data ? data.dataset : null;\n                id = $candidate ? $candidate.attr(\"id\") : null;\n                this.input.trigger(\"cursorchange\", id);\n                cancelMove = this._minLengthMet() && this.menu.update(query);\n                if (!cancelMove && !this.eventBus.before(\"cursorchange\", suggestion, datasetName)) {\n                    this.menu.setCursor($candidate);\n                    if (data) {\n                        if (typeof data.val === \"string\") {\n                            this.input.setInputValue(data.val);\n                        }\n                    } else {\n                        this.input.resetInputValue();\n                        this._updateHint();\n                    }\n                    this.eventBus.trigger(\"cursorchange\", suggestion, datasetName);\n                    return true;\n                }\n                return false;\n            },\n            destroy: function destroy() {\n                this.input.destroy();\n                this.menu.destroy();\n            }\n        });\n        return Typeahead;\n        function c(ctx) {\n            var methods = [].slice.call(arguments, 1);\n            return function() {\n                var args = [].slice.call(arguments);\n                _.each(methods, function(method) {\n                    return ctx[method].apply(ctx, args);\n                });\n            };\n        }\n    }();\n    (function() {\n        \"use strict\";\n        var old, keys, methods;\n        old = $.fn.typeahead;\n        keys = {\n            www: \"tt-www\",\n            attrs: \"tt-attrs\",\n            typeahead: \"tt-typeahead\"\n        };\n        methods = {\n            initialize: function initialize(o, datasets) {\n                var www;\n                datasets = _.isArray(datasets) ? datasets : [].slice.call(arguments, 1);\n                o = o || {};\n                www = WWW(o.classNames);\n                return this.each(attach);\n                function attach() {\n                    var $input, $wrapper, $hint, $menu, defaultHint, defaultMenu, eventBus, input, menu, status, typeahead, MenuConstructor;\n                    _.each(datasets, function(d) {\n                        d.highlight = !!o.highlight;\n                    });\n                    $input = $(this);\n                    $wrapper = $(www.html.wrapper);\n                    $hint = $elOrNull(o.hint);\n                    $menu = $elOrNull(o.menu);\n                    defaultHint = o.hint !== false && !$hint;\n                    defaultMenu = o.menu !== false && !$menu;\n                    defaultHint && ($hint = buildHintFromInput($input, www));\n                    defaultMenu && ($menu = $(www.html.menu).css(www.css.menu));\n                    $hint && $hint.val(\"\");\n                    $input = prepInput($input, www);\n                    if (defaultHint || defaultMenu) {\n                        $wrapper.css(www.css.wrapper);\n                        $input.css(defaultHint ? www.css.input : www.css.inputWithNoHint);\n                        $input.wrap($wrapper).parent().prepend(defaultHint ? $hint : null).append(defaultMenu ? $menu : null);\n                    }\n                    MenuConstructor = defaultMenu ? DefaultMenu : Menu;\n                    eventBus = new EventBus({\n                        el: $input\n                    });\n                    input = new Input({\n                        hint: $hint,\n                        input: $input,\n                        menu: $menu\n                    }, www);\n                    menu = new MenuConstructor({\n                        node: $menu,\n                        datasets: datasets\n                    }, www);\n                    status = new Status({\n                        $input: $input,\n                        menu: menu\n                    });\n                    typeahead = new Typeahead({\n                        input: input,\n                        menu: menu,\n                        eventBus: eventBus,\n                        minLength: o.minLength,\n                        autoselect: o.autoselect\n                    }, www);\n                    $input.data(keys.www, www);\n                    $input.data(keys.typeahead, typeahead);\n                }\n            },\n            isEnabled: function isEnabled() {\n                var enabled;\n                ttEach(this.first(), function(t) {\n                    enabled = t.isEnabled();\n                });\n                return enabled;\n            },\n            enable: function enable() {\n                ttEach(this, function(t) {\n                    t.enable();\n                });\n                return this;\n            },\n            disable: function disable() {\n                ttEach(this, function(t) {\n                    t.disable();\n                });\n                return this;\n            },\n            isActive: function isActive() {\n                var active;\n                ttEach(this.first(), function(t) {\n                    active = t.isActive();\n                });\n                return active;\n            },\n            activate: function activate() {\n                ttEach(this, function(t) {\n                    t.activate();\n                });\n                return this;\n            },\n            deactivate: function deactivate() {\n                ttEach(this, function(t) {\n                    t.deactivate();\n                });\n                return this;\n            },\n            isOpen: function isOpen() {\n                var open;\n                ttEach(this.first(), function(t) {\n                    open = t.isOpen();\n                });\n                return open;\n            },\n            open: function open() {\n                ttEach(this, function(t) {\n                    t.open();\n                });\n                return this;\n            },\n            close: function close() {\n                ttEach(this, function(t) {\n                    t.close();\n                });\n                return this;\n            },\n            select: function select(el) {\n                var success = false, $el = $(el);\n                ttEach(this.first(), function(t) {\n                    success = t.select($el);\n                });\n                return success;\n            },\n            autocomplete: function autocomplete(el) {\n                var success = false, $el = $(el);\n                ttEach(this.first(), function(t) {\n                    success = t.autocomplete($el);\n                });\n                return success;\n            },\n            moveCursor: function moveCursoe(delta) {\n                var success = false;\n                ttEach(this.first(), function(t) {\n                    success = t.moveCursor(delta);\n                });\n                return success;\n            },\n            val: function val(newVal) {\n                var query;\n                if (!arguments.length) {\n                    ttEach(this.first(), function(t) {\n                        query = t.getVal();\n                    });\n                    return query;\n                } else {\n                    ttEach(this, function(t) {\n                        t.setVal(_.toStr(newVal));\n                    });\n                    return this;\n                }\n            },\n            destroy: function destroy() {\n                ttEach(this, function(typeahead, $input) {\n                    revert($input);\n                    typeahead.destroy();\n                });\n                return this;\n            }\n        };\n        $.fn.typeahead = function(method) {\n            if (methods[method]) {\n                return methods[method].apply(this, [].slice.call(arguments, 1));\n            } else {\n                return methods.initialize.apply(this, arguments);\n            }\n        };\n        $.fn.typeahead.noConflict = function noConflict() {\n            $.fn.typeahead = old;\n            return this;\n        };\n        function ttEach($els, fn) {\n            $els.each(function() {\n                var $input = $(this), typeahead;\n                (typeahead = $input.data(keys.typeahead)) && fn(typeahead, $input);\n            });\n        }\n        function buildHintFromInput($input, www) {\n            return $input.clone().addClass(www.classes.hint).removeData().css(www.css.hint).css(getBackgroundStyles($input)).prop({\n                readonly: true,\n                required: false\n            }).removeAttr(\"id name placeholder\").removeClass(\"required\").attr({\n                spellcheck: \"false\",\n                tabindex: -1\n            });\n        }\n        function prepInput($input, www) {\n            $input.data(keys.attrs, {\n                dir: $input.attr(\"dir\"),\n                autocomplete: $input.attr(\"autocomplete\"),\n                spellcheck: $input.attr(\"spellcheck\"),\n                style: $input.attr(\"style\")\n            });\n            $input.addClass(www.classes.input).attr({\n                spellcheck: false\n            });\n            try {\n                !$input.attr(\"dir\") && $input.attr(\"dir\", \"auto\");\n            } catch (e) {}\n            return $input;\n        }\n        function getBackgroundStyles($el) {\n            return {\n                backgroundAttachment: $el.css(\"background-attachment\"),\n                backgroundClip: $el.css(\"background-clip\"),\n                backgroundColor: $el.css(\"background-color\"),\n                backgroundImage: $el.css(\"background-image\"),\n                backgroundOrigin: $el.css(\"background-origin\"),\n                backgroundPosition: $el.css(\"background-position\"),\n                backgroundRepeat: $el.css(\"background-repeat\"),\n                backgroundSize: $el.css(\"background-size\")\n            };\n        }\n        function revert($input) {\n            var www, $wrapper;\n            www = $input.data(keys.www);\n            $wrapper = $input.parent().filter(www.selectors.wrapper);\n            _.each($input.data(keys.attrs), function(val, key) {\n                _.isUndefined(val) ? $input.removeAttr(key) : $input.attr(key, val);\n            });\n            $input.removeData(keys.typeahead).removeData(keys.www).removeData(keys.attr).removeClass(www.classes.input);\n            if ($wrapper.length) {\n                $input.detach().insertAfter($wrapper);\n                $wrapper.remove();\n            }\n        }\n        function $elOrNull(obj) {\n            var isValid, $el;\n            isValid = _.isJQuery(obj) || _.isElement(obj);\n            $el = isValid ? $(obj).first() : [];\n            return $el.length ? $el : null;\n        }\n    })();\n});"
  },
  {
    "path": "docs/search.json",
    "content": "{\"Structs/ValidateClaimsResult.html#/s:8SwiftJWT20ValidateClaimsResultV11descriptionSSvp\":{\"name\":\"description\",\"abstract\":\"<p>The human readable description of the ValidateClaimsResult</p>\",\"parent_name\":\"ValidateClaimsResult\"},\"Structs/ValidateClaimsResult.html#/s:8SwiftJWT20ValidateClaimsResultV7successACvpZ\":{\"name\":\"success\",\"abstract\":\"<p>Successful validation.</p>\",\"parent_name\":\"ValidateClaimsResult\"},\"Structs/ValidateClaimsResult.html#/s:8SwiftJWT20ValidateClaimsResultV17invalidExpirationACvpZ\":{\"name\":\"invalidExpiration\",\"abstract\":\"<p>Invalid Expiration claim.</p>\",\"parent_name\":\"ValidateClaimsResult\"},\"Structs/ValidateClaimsResult.html#/s:8SwiftJWT20ValidateClaimsResultV7expiredACvpZ\":{\"name\":\"expired\",\"abstract\":\"<p>Expired token: expiration time claim is in the past.</p>\",\"parent_name\":\"ValidateClaimsResult\"},\"Structs/ValidateClaimsResult.html#/s:8SwiftJWT20ValidateClaimsResultV16invalidNotBeforeACvpZ\":{\"name\":\"invalidNotBefore\",\"abstract\":\"<p>Invalid Not Before claim.</p>\",\"parent_name\":\"ValidateClaimsResult\"},\"Structs/ValidateClaimsResult.html#/s:8SwiftJWT20ValidateClaimsResultV9notBeforeACvpZ\":{\"name\":\"notBefore\",\"abstract\":\"<p>Not Before claim is in the future.</p>\",\"parent_name\":\"ValidateClaimsResult\"},\"Structs/ValidateClaimsResult.html#/s:8SwiftJWT20ValidateClaimsResultV15invalidIssuedAtACvpZ\":{\"name\":\"invalidIssuedAt\",\"abstract\":\"<p>Invalid Issued At claim.</p>\",\"parent_name\":\"ValidateClaimsResult\"},\"Structs/ValidateClaimsResult.html#/s:8SwiftJWT20ValidateClaimsResultV8issuedAtACvpZ\":{\"name\":\"issuedAt\",\"abstract\":\"<p>Issued At claim is in the future.</p>\",\"parent_name\":\"ValidateClaimsResult\"},\"Structs/ValidateClaimsResult.html#/s:8SwiftJWT20ValidateClaimsResultV2eeoiySbAC_ACtFZ\":{\"name\":\"==(_:_:)\",\"abstract\":\"<p>Check if two ValidateClaimsResults are equal. Required for the Equatable protocol</p>\",\"parent_name\":\"ValidateClaimsResult\"},\"Structs/JWTVerifier.html#/s:8SwiftJWT11JWTVerifierV5rs2569publicKeyAC10Foundation4DataV_tFZ\":{\"name\":\"rs256(publicKey:)\",\"abstract\":\"<p>Initialize a JWTVerifier using the RSA 256 bits algorithm and the provided publicKey.</p>\",\"parent_name\":\"JWTVerifier\"},\"Structs/JWTVerifier.html#/s:8SwiftJWT11JWTVerifierV5rs3849publicKeyAC10Foundation4DataV_tFZ\":{\"name\":\"rs384(publicKey:)\",\"abstract\":\"<p>Initialize a JWTVerifier using the RSA 384 bits algorithm and the provided publicKey.</p>\",\"parent_name\":\"JWTVerifier\"},\"Structs/JWTVerifier.html#/s:8SwiftJWT11JWTVerifierV5rs5129publicKeyAC10Foundation4DataV_tFZ\":{\"name\":\"rs512(publicKey:)\",\"abstract\":\"<p>Initialize a JWTVerifier using the RSA 512 bits algorithm and the provided publicKey.</p>\",\"parent_name\":\"JWTVerifier\"},\"Structs/JWTVerifier.html#/s:8SwiftJWT11JWTVerifierV5rs25611certificateAC10Foundation4DataV_tFZ\":{\"name\":\"rs256(certificate:)\",\"abstract\":\"<p>Initialize a JWTVerifier using the RSA 256 bits algorithm and the provided certificate.</p>\",\"parent_name\":\"JWTVerifier\"},\"Structs/JWTVerifier.html#/s:8SwiftJWT11JWTVerifierV5rs38411certificateAC10Foundation4DataV_tFZ\":{\"name\":\"rs384(certificate:)\",\"abstract\":\"<p>Initialize a JWTVerifier using the RSA 384 bits algorithm and the provided certificate.</p>\",\"parent_name\":\"JWTVerifier\"},\"Structs/JWTVerifier.html#/s:8SwiftJWT11JWTVerifierV5rs51211certificateAC10Foundation4DataV_tFZ\":{\"name\":\"rs512(certificate:)\",\"abstract\":\"<p>Initialize a JWTVerifier using the RSA 512 bits algorithm and the provided certificate.</p>\",\"parent_name\":\"JWTVerifier\"},\"Structs/JWTVerifier.html#/s:8SwiftJWT11JWTVerifierV5ps2569publicKeyAC10Foundation4DataV_tFZ\":{\"name\":\"ps256(publicKey:)\",\"abstract\":\"<p>Initialize a JWTVerifier using the RSA-PSS 256 bits algorithm and the provided publicKey.</p>\",\"parent_name\":\"JWTVerifier\"},\"Structs/JWTVerifier.html#/s:8SwiftJWT11JWTVerifierV5ps3849publicKeyAC10Foundation4DataV_tFZ\":{\"name\":\"ps384(publicKey:)\",\"abstract\":\"<p>Initialize a JWTVerifier using the RSA-PSS 384 bits algorithm and the provided publicKey.</p>\",\"parent_name\":\"JWTVerifier\"},\"Structs/JWTVerifier.html#/s:8SwiftJWT11JWTVerifierV5ps5129publicKeyAC10Foundation4DataV_tFZ\":{\"name\":\"ps512(publicKey:)\",\"abstract\":\"<p>Initialize a JWTVerifier using the RSA-PSS 512 bits algorithm and the provided publicKey.\",\"parent_name\":\"JWTVerifier\"},\"Structs/JWTVerifier.html#/s:8SwiftJWT11JWTVerifierV5hs2563keyAC10Foundation4DataV_tFZ\":{\"name\":\"hs256(key:)\",\"abstract\":\"<p>Initialize a JWTSigner using the HMAC 256 bits algorithm and the provided privateKey.</p>\",\"parent_name\":\"JWTVerifier\"},\"Structs/JWTVerifier.html#/s:8SwiftJWT11JWTVerifierV5hs3843keyAC10Foundation4DataV_tFZ\":{\"name\":\"hs384(key:)\",\"abstract\":\"<p>Initialize a JWTSigner using the HMAC 384 bits algorithm and the provided privateKey.</p>\",\"parent_name\":\"JWTVerifier\"},\"Structs/JWTVerifier.html#/s:8SwiftJWT11JWTVerifierV5hs5123keyAC10Foundation4DataV_tFZ\":{\"name\":\"hs512(key:)\",\"abstract\":\"<p>Initialize a JWTSigner using the HMAC 512 bits algorithm and the provided privateKey.</p>\",\"parent_name\":\"JWTVerifier\"},\"Structs/JWTVerifier.html#/s:8SwiftJWT11JWTVerifierV5es2569publicKeyAC10Foundation4DataV_tFZ\":{\"name\":\"es256(publicKey:)\",\"abstract\":\"<p>Initialize a JWTVerifier using the ECDSA SHA 256 algorithm and the provided public key.</p>\",\"parent_name\":\"JWTVerifier\"},\"Structs/JWTVerifier.html#/s:8SwiftJWT11JWTVerifierV5es3849publicKeyAC10Foundation4DataV_tFZ\":{\"name\":\"es384(publicKey:)\",\"abstract\":\"<p>Initialize a JWTVerifier using the ECDSA SHA 384 algorithm and the provided public key.</p>\",\"parent_name\":\"JWTVerifier\"},\"Structs/JWTVerifier.html#/s:8SwiftJWT11JWTVerifierV5es5129publicKeyAC10Foundation4DataV_tFZ\":{\"name\":\"es512(publicKey:)\",\"abstract\":\"<p>Initialize a JWTVerifier using the ECDSA SHA 512 algorithm and the provided public key.</p>\",\"parent_name\":\"JWTVerifier\"},\"Structs/JWTVerifier.html#/s:8SwiftJWT11JWTVerifierV4noneACvpZ\":{\"name\":\"none\",\"abstract\":\"<p>Initialize a JWTVerifier that will always return true when verifying the JWT. This is equivelent to using the &ldquo;none&rdquo; alg header.</p>\",\"parent_name\":\"JWTVerifier\"},\"Structs/JWTSigner.html#/s:8SwiftJWT9JWTSignerV5rs25610privateKeyAC10Foundation4DataV_tFZ\":{\"name\":\"rs256(privateKey:)\",\"abstract\":\"<p>Initialize a JWTSigner using the RSA 256 bits algorithm and the provided privateKey.</p>\",\"parent_name\":\"JWTSigner\"},\"Structs/JWTSigner.html#/s:8SwiftJWT9JWTSignerV5rs38410privateKeyAC10Foundation4DataV_tFZ\":{\"name\":\"rs384(privateKey:)\",\"abstract\":\"<p>Initialize a JWTSigner using the RSA 384 bits algorithm and the provided privateKey.</p>\",\"parent_name\":\"JWTSigner\"},\"Structs/JWTSigner.html#/s:8SwiftJWT9JWTSignerV5rs51210privateKeyAC10Foundation4DataV_tFZ\":{\"name\":\"rs512(privateKey:)\",\"abstract\":\"<p>Initialize a JWTSigner using the RSA 512 bits algorithm and the provided privateKey.</p>\",\"parent_name\":\"JWTSigner\"},\"Structs/JWTSigner.html#/s:8SwiftJWT9JWTSignerV5ps25610privateKeyAC10Foundation4DataV_tFZ\":{\"name\":\"ps256(privateKey:)\",\"abstract\":\"<p>Initialize a JWTSigner using the RSA-PSS 256 bits algorithm and the provided privateKey.</p>\",\"parent_name\":\"JWTSigner\"},\"Structs/JWTSigner.html#/s:8SwiftJWT9JWTSignerV5ps38410privateKeyAC10Foundation4DataV_tFZ\":{\"name\":\"ps384(privateKey:)\",\"abstract\":\"<p>Initialize a JWTSigner using the RSA-PSS 384 bits algorithm and the provided privateKey.</p>\",\"parent_name\":\"JWTSigner\"},\"Structs/JWTSigner.html#/s:8SwiftJWT9JWTSignerV5ps51210privateKeyAC10Foundation4DataV_tFZ\":{\"name\":\"ps512(privateKey:)\",\"abstract\":\"<p>Initialize a JWTSigner using the RSA-PSS 512 bits algorithm and the provided privateKey.\",\"parent_name\":\"JWTSigner\"},\"Structs/JWTSigner.html#/s:8SwiftJWT9JWTSignerV5hs2563keyAC10Foundation4DataV_tFZ\":{\"name\":\"hs256(key:)\",\"abstract\":\"<p>Initialize a JWTSigner using the HMAC 256 bits algorithm and the provided privateKey.</p>\",\"parent_name\":\"JWTSigner\"},\"Structs/JWTSigner.html#/s:8SwiftJWT9JWTSignerV5hs3843keyAC10Foundation4DataV_tFZ\":{\"name\":\"hs384(key:)\",\"abstract\":\"<p>Initialize a JWTSigner using the HMAC 384 bits algorithm and the provided privateKey.</p>\",\"parent_name\":\"JWTSigner\"},\"Structs/JWTSigner.html#/s:8SwiftJWT9JWTSignerV5hs5123keyAC10Foundation4DataV_tFZ\":{\"name\":\"hs512(key:)\",\"abstract\":\"<p>Initialize a JWTSigner using the HMAC 512 bits algorithm and the provided privateKey.</p>\",\"parent_name\":\"JWTSigner\"},\"Structs/JWTSigner.html#/s:8SwiftJWT9JWTSignerV5es25610privateKeyAC10Foundation4DataV_tFZ\":{\"name\":\"es256(privateKey:)\",\"abstract\":\"<p>Initialize a JWTSigner using the ECDSA SHA256 algorithm and the provided privateKey.</p>\",\"parent_name\":\"JWTSigner\"},\"Structs/JWTSigner.html#/s:8SwiftJWT9JWTSignerV5es38410privateKeyAC10Foundation4DataV_tFZ\":{\"name\":\"es384(privateKey:)\",\"abstract\":\"<p>Initialize a JWTSigner using the ECDSA SHA384 algorithm and the provided privateKey.</p>\",\"parent_name\":\"JWTSigner\"},\"Structs/JWTSigner.html#/s:8SwiftJWT9JWTSignerV5es51210privateKeyAC10Foundation4DataV_tFZ\":{\"name\":\"es512(privateKey:)\",\"abstract\":\"<p>Initialize a JWTSigner using the ECDSA SHA512 algorithm and the provided privateKey.</p>\",\"parent_name\":\"JWTSigner\"},\"Structs/JWTSigner.html#/s:8SwiftJWT9JWTSignerV4noneACvpZ\":{\"name\":\"none\",\"abstract\":\"<p>Initialize a JWTSigner that will not sign the JWT. This is equivelent to using the &ldquo;none&rdquo; alg header.</p>\",\"parent_name\":\"JWTSigner\"},\"Structs/JWTError.html#/s:8SwiftJWT8JWTErrorV20localizedDescriptionSSvp\":{\"name\":\"localizedDescription\",\"abstract\":\"<p>A human readable description of the error.</p>\",\"parent_name\":\"JWTError\"},\"Structs/JWTError.html#/s:8SwiftJWT8JWTErrorV16invalidJWTStringACvpZ\":{\"name\":\"invalidJWTString\",\"abstract\":\"<p>Error when an invalid JWT String is provided</p>\",\"parent_name\":\"JWTError\"},\"Structs/JWTError.html#/s:8SwiftJWT8JWTErrorV18failedVerificationACvpZ\":{\"name\":\"failedVerification\",\"abstract\":\"<p>Error when the JWT signiture fails verification.</p>\",\"parent_name\":\"JWTError\"},\"Structs/JWTError.html#/s:8SwiftJWT8JWTErrorV14osVersionToLowACvpZ\":{\"name\":\"osVersionToLow\",\"abstract\":\"<p>Error when using RSA encryption with an OS version that is too low.</p>\",\"parent_name\":\"JWTError\"},\"Structs/JWTError.html#/s:8SwiftJWT8JWTErrorV17invalidPrivateKeyACvpZ\":{\"name\":\"invalidPrivateKey\",\"abstract\":\"<p>Error when an invalid private key is provided for RSA encryption.</p>\",\"parent_name\":\"JWTError\"},\"Structs/JWTError.html#/s:8SwiftJWT8JWTErrorV15invalidUTF8DataACvpZ\":{\"name\":\"invalidUTF8Data\",\"abstract\":\"<p>Error when the provided Data cannot be decoded to a String</p>\",\"parent_name\":\"JWTError\"},\"Structs/JWTError.html#/s:8SwiftJWT8JWTErrorV12invalidKeyIDACvpZ\":{\"name\":\"invalidKeyID\",\"abstract\":\"<p>Error when the KeyID field <code>kid</code> in the JWT header fails to generate a JWTSigner or JWTVerifier</p>\",\"parent_name\":\"JWTError\"},\"Structs/JWTError.html#/s:8SwiftJWT8JWTErrorV17missingPEMHeadersACvpZ\":{\"name\":\"missingPEMHeaders\",\"abstract\":\"<p>Error when a PEM string is provided without the expected PEM headers/footers. (e.g. &mdash;&ndash;BEGIN PRIVATE KEY&mdash;&ndash;)</p>\",\"parent_name\":\"JWTError\"},\"Structs/JWTError.html#/s:8SwiftJWT8JWTErrorV2eeoiySbAC_ACtFZ\":{\"name\":\"==(_:_:)\",\"abstract\":\"<p>Function to check if JWTErrors are equal. Required for equatable protocol.</p>\",\"parent_name\":\"JWTError\"},\"Structs/JWTError.html#/s:8SwiftJWT8JWTErrorV2teoiySbAC_s5Error_ptFZ\":{\"name\":\"~=(_:_:)\",\"abstract\":\"<p>Function to enable pattern matching against generic Errors.</p>\",\"parent_name\":\"JWTError\"},\"Structs/JWT.html#/s:8SwiftJWT0B0V6headerAA6HeaderVvp\":{\"name\":\"header\",\"abstract\":\"<p>The JWT header.</p>\",\"parent_name\":\"JWT\"},\"Structs/JWT.html#/s:8SwiftJWT0B0V6claimsxvp\":{\"name\":\"claims\",\"abstract\":\"<p>The JWT claims</p>\",\"parent_name\":\"JWT\"},\"Structs/JWT.html#/s:8SwiftJWT0B0V6header6claimsACyxGAA6HeaderV_xtcfc\":{\"name\":\"init(header:claims:)\",\"abstract\":\"<p>Initialize a <code>JWT</code> instance from a <code><a href=\\\"36f8f5912051ae747ef441d6511ca4cbStructs/Header.html\\\">Header</a></code> and <code><a href=\\\"36f8f5912051ae747ef441d6511ca4cbProtocols/Claims.html\\\">Claims</a></code>.</p>\",\"parent_name\":\"JWT\"},\"Structs/JWT.html#/s:8SwiftJWT0B0V9jwtString8verifierACyxGSS_AA11JWTVerifierVtKcfc\":{\"name\":\"init(jwtString:verifier:)\",\"abstract\":\"<p>Initialize a <code>JWT</code> instance from a JWT String.\",\"parent_name\":\"JWT\"},\"Structs/JWT.html#/s:8SwiftJWT0B0V4sign5usingSSAA9JWTSignerV_tKF\":{\"name\":\"sign(using:)\",\"abstract\":\"<p>Sign the JWT using the given algorithm and encode the header, claims and signature as a JWT String.</p>\",\"parent_name\":\"JWT\"},\"Structs/JWT.html#/s:8SwiftJWT0B0V6verify_5usingSbSS_AA11JWTVerifierVtFZ\":{\"name\":\"verify(_:using:)\",\"abstract\":\"<p>Verify the signature of the encoded JWT using the given algorithm.</p>\",\"parent_name\":\"JWT\"},\"Structs/JWT.html#/s:8SwiftJWT0B0V14validateClaims6leewayAA08ValidateD6ResultVSd_tF\":{\"name\":\"validateClaims(leeway:)\",\"abstract\":\"<p>Validate the time based standard JWT claims.\",\"parent_name\":\"JWT\"},\"Structs/Header.html#/s:8SwiftJWT6HeaderV3typSSSgvp\":{\"name\":\"typ\",\"abstract\":\"<p>Type Header Parameter</p>\",\"parent_name\":\"Header\"},\"Structs/Header.html#/s:8SwiftJWT6HeaderV3algSSSgvp\":{\"name\":\"alg\",\"abstract\":\"<p>Algorithm Header Parameter</p>\",\"parent_name\":\"Header\"},\"Structs/Header.html#/s:8SwiftJWT6HeaderV3jkuSSSgvp\":{\"name\":\"jku\",\"abstract\":\"<p>JSON Web Token Set URL Header Parameter</p>\",\"parent_name\":\"Header\"},\"Structs/Header.html#/s:8SwiftJWT6HeaderV3jwkSSSgvp\":{\"name\":\"jwk\",\"abstract\":\"<p>JSON Web Key Header Parameter</p>\",\"parent_name\":\"Header\"},\"Structs/Header.html#/s:8SwiftJWT6HeaderV3kidSSSgvp\":{\"name\":\"kid\",\"abstract\":\"<p>Key ID Header Parameter</p>\",\"parent_name\":\"Header\"},\"Structs/Header.html#/s:8SwiftJWT6HeaderV3x5uSSSgvp\":{\"name\":\"x5u\",\"abstract\":\"<p>X.509 URL Header Parameter</p>\",\"parent_name\":\"Header\"},\"Structs/Header.html#/s:8SwiftJWT6HeaderV3x5cSaySSGSgvp\":{\"name\":\"x5c\",\"abstract\":\"<p>X.509 Certificate Chain Header Parameter</p>\",\"parent_name\":\"Header\"},\"Structs/Header.html#/s:8SwiftJWT6HeaderV3x5tSSSgvp\":{\"name\":\"x5t\",\"abstract\":\"<p>X.509 Certificate SHA-1 Thumbprint Header Parameter</p>\",\"parent_name\":\"Header\"},\"Structs/Header.html#/s:8SwiftJWT6HeaderV7x5tS256SSSgvp\":{\"name\":\"x5tS256\",\"abstract\":\"<p>X.509 Certificate SHA-256 Thumbprint Header Parameter</p>\",\"parent_name\":\"Header\"},\"Structs/Header.html#/s:8SwiftJWT6HeaderV3ctySSSgvp\":{\"name\":\"cty\",\"abstract\":\"<p>Content Type Header Parameter</p>\",\"parent_name\":\"Header\"},\"Structs/Header.html#/s:8SwiftJWT6HeaderV4critSaySSGSgvp\":{\"name\":\"crit\",\"abstract\":\"<p>Critical Header Parameter</p>\",\"parent_name\":\"Header\"},\"Structs/Header.html#/s:8SwiftJWT6HeaderV3typ3jku3jwk3kid3x5u3x5c3x5t0J4S2563cty4critACSSSg_A4NSaySSGSgA3nPtcfc\":{\"name\":\"init(typ:jku:jwk:kid:x5u:x5c:x5t:x5tS256:cty:crit:)\",\"abstract\":\"<p>Initialize a <code>Header</code> instance.</p>\",\"parent_name\":\"Header\"},\"Structs/AddressClaim.html#/s:8SwiftJWT12AddressClaimV9formattedSSSgvp\":{\"name\":\"formatted\",\"abstract\":\"<p>Full mailing address, formatted for display or use on a mailing label. This field MAY contain multiple lines, separated by newlines. Newlines can be represented either as a carriage return/line feed pair (&ldquo;\\\\r\\\\n&rdquo;) or as a single line feed character (&ldquo;\\\\n&rdquo;).</p>\",\"parent_name\":\"AddressClaim\"},\"Structs/AddressClaim.html#/s:8SwiftJWT12AddressClaimV14street_addressSSSgvp\":{\"name\":\"street_address\",\"abstract\":\"<p>Full street address component, which MAY include house number, street name, Post Office Box, and multi-line extended street address information. This field MAY contain multiple lines, separated by newlines. Newlines can be represented either as a carriage return/line feed pair (&ldquo;\\\\r\\\\n&rdquo;) or as a single line feed character (&ldquo;\\\\n&rdquo;).</p>\",\"parent_name\":\"AddressClaim\"},\"Structs/AddressClaim.html#/s:8SwiftJWT12AddressClaimV8localitySSSgvp\":{\"name\":\"locality\",\"abstract\":\"<p>City or locality component.</p>\",\"parent_name\":\"AddressClaim\"},\"Structs/AddressClaim.html#/s:8SwiftJWT12AddressClaimV6regionSSSgvp\":{\"name\":\"region\",\"abstract\":\"<p>State, province, prefecture, or region component.</p>\",\"parent_name\":\"AddressClaim\"},\"Structs/AddressClaim.html#/s:8SwiftJWT12AddressClaimV11postal_codeSSSgvp\":{\"name\":\"postal_code\",\"abstract\":\"<p>Zip code or postal code component.</p>\",\"parent_name\":\"AddressClaim\"},\"Structs/AddressClaim.html#/s:8SwiftJWT12AddressClaimV7countrySSSgvp\":{\"name\":\"country\",\"abstract\":\"<p>Country name component.</p>\",\"parent_name\":\"AddressClaim\"},\"Structs/AddressClaim.html\":{\"name\":\"AddressClaim\",\"abstract\":\"<p>Struct representing an AddressClaim as defined in the <a href=\\\"http://openid.net/specs/openid-connect-core-1_0.html\\\">OpenID specs</a>.</p>\"},\"Structs/Header.html\":{\"name\":\"Header\",\"abstract\":\"<p>A representation of a JSON Web Token header.\"},\"Structs/JWT.html\":{\"name\":\"JWT\",\"abstract\":\"<p>A struct representing the <code><a href=\\\"36f8f5912051ae747ef441d6511ca4cbStructs/Header.html\\\">Header</a></code> and <code><a href=\\\"36f8f5912051ae747ef441d6511ca4cbProtocols/Claims.html\\\">Claims</a></code> of a JSON Web Token.</p>\"},\"Structs/JWTError.html\":{\"name\":\"JWTError\",\"abstract\":\"<p>A struct representing the different errors that can be thrown by SwiftJWT</p>\"},\"Structs/JWTSigner.html\":{\"name\":\"JWTSigner\",\"abstract\":\"<p>A struct that will be used to sign the JWT <code><a href=\\\"36f8f5912051ae747ef441d6511ca4cbStructs/Header.html\\\">Header</a></code> and <code><a href=\\\"36f8f5912051ae747ef441d6511ca4cbProtocols/Claims.html\\\">Claims</a></code> and generate a signed JWT.\"},\"Structs/JWTVerifier.html\":{\"name\":\"JWTVerifier\",\"abstract\":\"<p>A struct that will be used to verify the signature of a JWT is valid for the provided <code><a href=\\\"36f8f5912051ae747ef441d6511ca4cbStructs/Header.html\\\">Header</a></code> and <code><a href=\\\"36f8f5912051ae747ef441d6511ca4cbProtocols/Claims.html\\\">Claims</a></code>.\"},\"Structs/ValidateClaimsResult.html\":{\"name\":\"ValidateClaimsResult\",\"abstract\":\"<p>ValidateClaimsResult list the possible results of a call to JWT.validateClaims method.\"},\"Protocols/Claims.html#/s:8SwiftJWT6ClaimsP3exp10Foundation4DateVSgvp\":{\"name\":\"exp\",\"abstract\":\"<p>The &ldquo;exp&rdquo; (expiration time) claim identifies the expiration time on\",\"parent_name\":\"Claims\"},\"Protocols/Claims.html#/s:8SwiftJWT6ClaimsP3nbf10Foundation4DateVSgvp\":{\"name\":\"nbf\",\"abstract\":\"<p>The &ldquo;nbf&rdquo; (not before) claim identifies the time before which the JWT\",\"parent_name\":\"Claims\"},\"Protocols/Claims.html#/s:8SwiftJWT6ClaimsP3iat10Foundation4DateVSgvp\":{\"name\":\"iat\",\"abstract\":\"<p>The &ldquo;iat&rdquo; (issued at) claim identifies the time at which the JWT was\",\"parent_name\":\"Claims\"},\"Protocols/Claims.html#/s:8SwiftJWT6ClaimsP6encodeSSyKF\":{\"name\":\"encode()\",\"abstract\":\"<p>Encode the Claim object as a Base64 String.</p>\",\"parent_name\":\"Claims\"},\"Protocols/Claims.html\":{\"name\":\"Claims\",\"abstract\":\"<p>A protocol for representing the claims on a JSON web token.\"},\"Classes/JWTDecoder.html#/s:8SwiftJWT10JWTDecoderC11jwtVerifierAcA11JWTVerifierV_tcfc\":{\"name\":\"init(jwtVerifier:)\",\"abstract\":\"<p>Initialize a <code>JWTDecoder</code> instance with a single <code><a href=\\\"36f8f5912051ae747ef441d6511ca4cbStructs/JWTVerifier.html\\\">JWTVerifier</a></code>.</p>\",\"parent_name\":\"JWTDecoder\"},\"Classes/JWTDecoder.html#/s:8SwiftJWT10JWTDecoderC15keyIDToVerifierAcA11JWTVerifierVSgSSc_tcfc\":{\"name\":\"init(keyIDToVerifier:)\",\"abstract\":\"<p>Initialize a <code>JWTDecoder</code> instance with a function to generate the <code><a href=\\\"36f8f5912051ae747ef441d6511ca4cbStructs/JWTVerifier.html\\\">JWTVerifier</a></code> from the JWT <code>kid</code> header.</p>\",\"parent_name\":\"JWTDecoder\"},\"Classes/JWTDecoder.html#/s:8SwiftJWT10JWTDecoderC6decode_10fromStringxxm_SStKSeRzlF\":{\"name\":\"decode(_:fromString:)\",\"abstract\":\"<p>Decode a <code><a href=\\\"36f8f5912051ae747ef441d6511ca4cbStructs/JWT.html\\\">JWT</a></code> instance from a JWT String.</p>\",\"parent_name\":\"JWTDecoder\"},\"Classes/JWTDecoder.html#/s:8SwiftJWT10JWTDecoderC6decode_4fromxxm_10Foundation4DataVtKSeRzlF\":{\"name\":\"decode(_:from:)\",\"abstract\":\"<p>Decode a <code><a href=\\\"36f8f5912051ae747ef441d6511ca4cbStructs/JWT.html\\\">JWT</a></code> instance from a utf8 encoded JWT String.</p>\",\"parent_name\":\"JWTDecoder\"},\"Classes/JWTDecoder.html#/s:8SwiftJWT10JWTDecoderC4data16base64urlEncoded10Foundation4DataVSgSS_tFZ\":{\"name\":\"data(base64urlEncoded:)\",\"abstract\":\"<p>Initializes a new <code>Data</code> from the base64url-encoded <code>String</code> provided. The\",\"parent_name\":\"JWTDecoder\"},\"Classes/JWTEncoder.html#/s:8SwiftJWT10JWTEncoderC9jwtSignerAcA9JWTSignerV_tcfc\":{\"name\":\"init(jwtSigner:)\",\"abstract\":\"<p>Initialize a <code>JWTEncoder</code> instance with a single <code><a href=\\\"36f8f5912051ae747ef441d6511ca4cbStructs/JWTSigner.html\\\">JWTSigner</a></code>.</p>\",\"parent_name\":\"JWTEncoder\"},\"Classes/JWTEncoder.html#/s:8SwiftJWT10JWTEncoderC13keyIDToSignerAcA9JWTSignerVSgSSc_tcfc\":{\"name\":\"init(keyIDToSigner:)\",\"abstract\":\"<p>Initialize a <code>JWTEncoder</code> instance with a function to generate the <code><a href=\\\"36f8f5912051ae747ef441d6511ca4cbStructs/JWTSigner.html\\\">JWTSigner</a></code> from the JWT <code>kid</code> header.</p>\",\"parent_name\":\"JWTEncoder\"},\"Classes/JWTEncoder.html#/s:8SwiftJWT10JWTEncoderC6encodey10Foundation4DataVxKSERzlF\":{\"name\":\"encode(_:)\",\"abstract\":\"<p>Encode a <code><a href=\\\"36f8f5912051ae747ef441d6511ca4cbStructs/JWT.html\\\">JWT</a></code> instance into a UTF8 encoded JWT String.</p>\",\"parent_name\":\"JWTEncoder\"},\"Classes/JWTEncoder.html#/s:8SwiftJWT10JWTEncoderC14encodeToStringySSxKSERzlF\":{\"name\":\"encodeToString(_:)\",\"abstract\":\"<p>Encode a <code><a href=\\\"36f8f5912051ae747ef441d6511ca4cbStructs/JWT.html\\\">JWT</a></code> instance as a JWT String.</p>\",\"parent_name\":\"JWTEncoder\"},\"Classes/JWTEncoder.html#/s:8SwiftJWT10JWTEncoderC22base64urlEncodedString4dataSS10Foundation4DataV_tFZ\":{\"name\":\"base64urlEncodedString(data:)\",\"abstract\":\"<p>Returns a <code>String</code> representation of this data, encoded in base64url format\",\"parent_name\":\"JWTEncoder\"},\"Classes/ClaimsStandardJWT.html#/s:8SwiftJWT014ClaimsStandardB0C3iss3sub3aud3exp3nbf3iat3jtiACSSSg_AKSaySSGSg10Foundation4DateVSgA2qKtcfc\":{\"name\":\"init(iss:sub:aud:exp:nbf:iat:jti:)\",\"abstract\":\"<p>Initialize a <code>ClaimsStandardJWT</code></p>\",\"parent_name\":\"ClaimsStandardJWT\"},\"Classes/ClaimsStandardJWT.html#/s:8SwiftJWT014ClaimsStandardB0C3issSSSgvp\":{\"name\":\"iss\",\"abstract\":\"<p>The &ldquo;iss&rdquo; (issuer) claim identifies the principal that issued the\",\"parent_name\":\"ClaimsStandardJWT\"},\"Classes/ClaimsStandardJWT.html#/s:8SwiftJWT014ClaimsStandardB0C3subSSSgvp\":{\"name\":\"sub\",\"abstract\":\"<p>The &ldquo;sub&rdquo; (subject) claim identifies the principal that is the\",\"parent_name\":\"ClaimsStandardJWT\"},\"Classes/ClaimsStandardJWT.html#/s:8SwiftJWT014ClaimsStandardB0C3audSaySSGSgvp\":{\"name\":\"aud\",\"abstract\":\"<p>The &ldquo;aud&rdquo; (audience) claim identifies the recipients that the JWT is\",\"parent_name\":\"ClaimsStandardJWT\"},\"Classes/ClaimsStandardJWT.html#/s:8SwiftJWT014ClaimsStandardB0C3exp10Foundation4DateVSgvp\":{\"name\":\"exp\",\"abstract\":\"<p>The &ldquo;exp&rdquo; (expiration time) claim identifies the expiration time on\",\"parent_name\":\"ClaimsStandardJWT\"},\"Classes/ClaimsStandardJWT.html#/s:8SwiftJWT014ClaimsStandardB0C3nbf10Foundation4DateVSgvp\":{\"name\":\"nbf\",\"abstract\":\"<p>The &ldquo;nbf&rdquo; (not before) claim identifies the time before which the JWT\",\"parent_name\":\"ClaimsStandardJWT\"},\"Classes/ClaimsStandardJWT.html#/s:8SwiftJWT014ClaimsStandardB0C3iat10Foundation4DateVSgvp\":{\"name\":\"iat\",\"abstract\":\"<p>The &ldquo;iat&rdquo; (issued at) claim identifies the time at which the JWT was\",\"parent_name\":\"ClaimsStandardJWT\"},\"Classes/ClaimsStandardJWT.html#/s:8SwiftJWT014ClaimsStandardB0C3jtiSSSgvp\":{\"name\":\"jti\",\"abstract\":\"<p>The &ldquo;jti&rdquo; (JWT ID) claim provides a unique identifier for the JWT.\",\"parent_name\":\"ClaimsStandardJWT\"},\"Classes/ClaimsOpenID.html#/s:8SwiftJWT12ClaimsOpenIDC3iss3sub3aud3exp3iat9auth_time5nonce3acr3amr3azp4name06given_Q007family_Q007middle_Q08nickname18preferred_username7profile7picture7website5email14email_verified6gender9birthdate8zoneinfo6locale12phone_number21phone_number_verified7address10updated_atACSS_SSSaySSG10Foundation4DateVA8_A8_SgSSSgA10_A5_SgA10_A10_A10_A10_A10_A10_A10_A10_A10_A10_A10_SbSgA10_A10_A10_A10_A10_A12_AA12AddressClaimVSgA9_tcfc\":{\"name\":\"init(iss:sub:aud:exp:iat:auth_time:nonce:acr:amr:azp:name:given_name:family_name:middle_name:nickname:preferred_username:profile:picture:website:email:email_verified:gender:birthdate:zoneinfo:locale:phone_number:phone_number_verified:address:updated_at:)\",\"abstract\":\"<p>Initalise the <code>ClaimsOpenID</code></p>\",\"parent_name\":\"ClaimsOpenID\"},\"Classes/ClaimsOpenID.html#/s:8SwiftJWT12ClaimsOpenIDC3issSSvp\":{\"name\":\"iss\",\"abstract\":\"<p>Issuer Identifier for the Issuer of the response. The iss value is a case sensitive URL using the https scheme that contains scheme, host, and optionally, port number and path components and no query or fragment components.</p>\",\"parent_name\":\"ClaimsOpenID\"},\"Classes/ClaimsOpenID.html#/s:8SwiftJWT12ClaimsOpenIDC3subSSvp\":{\"name\":\"sub\",\"abstract\":\"<p>Subject Identifier. A locally unique and never reassigned identifier within the Issuer for the End-User, which is intended to be consumed by the Client, e.g., 24400320 or AItOawmwtWwcT0k51BayewNvutrJUqsvl6qs7A4. It MUST NOT exceed 255 ASCII characters in length. The sub value is case sensitive.</p>\",\"parent_name\":\"ClaimsOpenID\"},\"Classes/ClaimsOpenID.html#/s:8SwiftJWT12ClaimsOpenIDC3audSaySSGvp\":{\"name\":\"aud\",\"abstract\":\"<p>Audience(s) that this ID Token is intended for. It MUST contain the OAuth 2.0 client_id of the Relying Party as an audience value. It MAY also contain identifiers for other audiences.</p>\",\"parent_name\":\"ClaimsOpenID\"},\"Classes/ClaimsOpenID.html#/s:8SwiftJWT12ClaimsOpenIDC3exp10Foundation4DateVvp\":{\"name\":\"exp\",\"abstract\":\"<p>Expiration time on or after which the ID Token MUST NOT be accepted for processing. The processing of this parameter requires that the current date/time MUST be before the expiration date/time listed in the value. Implementers MAY provide for some small leeway, usually no more than a few minutes, to account for clock skew.</p>\",\"parent_name\":\"ClaimsOpenID\"},\"Classes/ClaimsOpenID.html#/s:8SwiftJWT12ClaimsOpenIDC3iat10Foundation4DateVvp\":{\"name\":\"iat\",\"abstract\":\"<p>Time at which the JWT was issued.</p>\",\"parent_name\":\"ClaimsOpenID\"},\"Classes/ClaimsOpenID.html#/s:8SwiftJWT12ClaimsOpenIDC9auth_time10Foundation4DateVSgvp\":{\"name\":\"auth_time\",\"abstract\":\"<p>Time when the End-User authentication occurred.</p>\",\"parent_name\":\"ClaimsOpenID\"},\"Classes/ClaimsOpenID.html#/s:8SwiftJWT12ClaimsOpenIDC5nonceSSSgvp\":{\"name\":\"nonce\",\"abstract\":\"<p>String value used to associate a Client session with an ID Token, and to mitigate replay attacks. The value is passed through unmodified from the Authentication Request to the ID Token. If present in the ID Token, Clients MUST verify that the nonce Claim Value is equal to the value of the nonce parameter sent in the Authentication Request. If present in the Authentication Request, Authorization Servers MUST include a nonce Claim in the ID Token with the Claim Value being the nonce value sent in the Authentication Request. Authorization Servers SHOULD perform no other processing on nonce values used.</p>\",\"parent_name\":\"ClaimsOpenID\"},\"Classes/ClaimsOpenID.html#/s:8SwiftJWT12ClaimsOpenIDC3acrSSSgvp\":{\"name\":\"acr\",\"abstract\":\"<p>Authentication Context Class Reference. String specifying an Authentication Context Class Reference value that identifies the Authentication Context Class that the authentication performed satisfied. The value &ldquo;0&rdquo; indicates the End-User authentication did not meet the requirements of ISO/IEC 29115 level 1. Authentications with level 0 SHOULD NOT be used to authorize access to any resource of any monetary value. Parties using this claim will need to agree upon the meanings of the values used, which may be context-specific.</p>\",\"parent_name\":\"ClaimsOpenID\"},\"Classes/ClaimsOpenID.html#/s:8SwiftJWT12ClaimsOpenIDC3amrSaySSGSgvp\":{\"name\":\"amr\",\"abstract\":\"<p>Authentication Methods References. JSON array of strings that are identifiers for authentication methods used in the authentication. For instance, values might indicate that both password and OTP authentication methods were used. Parties using this claim will need to agree upon the meanings of the values used, which may be context-specific.</p>\",\"parent_name\":\"ClaimsOpenID\"},\"Classes/ClaimsOpenID.html#/s:8SwiftJWT12ClaimsOpenIDC3azpSSSgvp\":{\"name\":\"azp\",\"abstract\":\"<p>Authorized party - the party to which the ID Token was issued. If present, it MUST contain the OAuth 2.0 Client ID of this party. This Claim is only needed when the ID Token has a single audience value and that audience is different than the authorized party. It MAY be included even when the authorized party is the same as the sole audience.</p>\",\"parent_name\":\"ClaimsOpenID\"},\"Classes/ClaimsOpenID.html#/s:8SwiftJWT12ClaimsOpenIDC4nameSSSgvp\":{\"name\":\"name\",\"abstract\":\"<p>End-User&rsquo;s full name in displayable form including all name parts, possibly including titles and suffixes, ordered according to the End-User&rsquo;s locale and preferences.</p>\",\"parent_name\":\"ClaimsOpenID\"},\"Classes/ClaimsOpenID.html#/s:8SwiftJWT12ClaimsOpenIDC10given_nameSSSgvp\":{\"name\":\"given_name\",\"abstract\":\"<p>Given name(s) or first name(s) of the End-User. Note that in some cultures, people can have multiple given names; all can be present, with the names being separated by space characters.</p>\",\"parent_name\":\"ClaimsOpenID\"},\"Classes/ClaimsOpenID.html#/s:8SwiftJWT12ClaimsOpenIDC11family_nameSSSgvp\":{\"name\":\"family_name\",\"abstract\":\"<p>Surname(s) or last name(s) of the End-User. Note that in some cultures, people can have multiple family names or no family name; all can be present, with the names being separated by space characters.</p>\",\"parent_name\":\"ClaimsOpenID\"},\"Classes/ClaimsOpenID.html#/s:8SwiftJWT12ClaimsOpenIDC11middle_nameSSSgvp\":{\"name\":\"middle_name\",\"abstract\":\"<p>Middle name(s) of the End-User. Note that in some cultures, people can have multiple middle names; all can be present, with the names being separated by space characters. Also note that in some cultures, middle names are not used.</p>\",\"parent_name\":\"ClaimsOpenID\"},\"Classes/ClaimsOpenID.html#/s:8SwiftJWT12ClaimsOpenIDC8nicknameSSSgvp\":{\"name\":\"nickname\",\"abstract\":\"<p>Casual name of the End-User that may or may not be the same as the given_name. For instance, a nickname value of Mike might be returned alongside a given_name value of Michael.</p>\",\"parent_name\":\"ClaimsOpenID\"},\"Classes/ClaimsOpenID.html#/s:8SwiftJWT12ClaimsOpenIDC18preferred_usernameSSSgvp\":{\"name\":\"preferred_username\",\"abstract\":\"<p>Shorthand name by which the End-User wishes to be referred to at the RP, such as janedoe or j.doe. This value MAY be any valid JSON string including special characters such as @, /, or whitespace.</p>\",\"parent_name\":\"ClaimsOpenID\"},\"Classes/ClaimsOpenID.html#/s:8SwiftJWT12ClaimsOpenIDC7profileSSSgvp\":{\"name\":\"profile\",\"abstract\":\"<p>URL of the End-User&rsquo;s profile page. The contents of this Web page SHOULD be about the End-User.</p>\",\"parent_name\":\"ClaimsOpenID\"},\"Classes/ClaimsOpenID.html#/s:8SwiftJWT12ClaimsOpenIDC7pictureSSSgvp\":{\"name\":\"picture\",\"abstract\":\"<p>URL of the End-User&rsquo;s profile picture. This URL MUST refer to an image file (for example, a PNG, JPEG, or GIF image file), rather than to a Web page containing an image. Note that this URL SHOULD specifically reference a profile photo of the End-User suitable for displaying when describing the End-User, rather than an arbitrary photo taken by the End-User.</p>\",\"parent_name\":\"ClaimsOpenID\"},\"Classes/ClaimsOpenID.html#/s:8SwiftJWT12ClaimsOpenIDC7websiteSSSgvp\":{\"name\":\"website\",\"abstract\":\"<p>URL of the End-User&rsquo;s Web page or blog. This Web page SHOULD contain information published by the End-User or an organization that the End-User is affiliated with.</p>\",\"parent_name\":\"ClaimsOpenID\"},\"Classes/ClaimsOpenID.html#/s:8SwiftJWT12ClaimsOpenIDC5emailSSSgvp\":{\"name\":\"email\",\"abstract\":\"<p>End-User&rsquo;s preferred e-mail address.</p>\",\"parent_name\":\"ClaimsOpenID\"},\"Classes/ClaimsOpenID.html#/s:8SwiftJWT12ClaimsOpenIDC14email_verifiedSbSgvp\":{\"name\":\"email_verified\",\"abstract\":\"<p>True if the End-User&rsquo;s e-mail address has been verified; otherwise false. When this Claim Value is true, this means that the OP took affirmative steps to ensure that this e-mail address was controlled by the End-User at the time the verification was performed. The means by which an e-mail address is verified is context-specific, and dependent upon the trust framework or contractual agreements within which the parties are operating.</p>\",\"parent_name\":\"ClaimsOpenID\"},\"Classes/ClaimsOpenID.html#/s:8SwiftJWT12ClaimsOpenIDC6genderSSSgvp\":{\"name\":\"gender\",\"abstract\":\"<p>End-User&rsquo;s gender. Values defined by this specification are female and male. Other values MAY be used when neither of the defined values are applicable.</p>\",\"parent_name\":\"ClaimsOpenID\"},\"Classes/ClaimsOpenID.html#/s:8SwiftJWT12ClaimsOpenIDC9birthdateSSSgvp\":{\"name\":\"birthdate\",\"abstract\":\"<p>End-User&rsquo;s birthday, represented as an ISO 8601:2004 YYYY-MM-DD format. The year MAY be 0000, indicating that it is omitted. To represent only the year, YYYY format is allowed.</p>\",\"parent_name\":\"ClaimsOpenID\"},\"Classes/ClaimsOpenID.html#/s:8SwiftJWT12ClaimsOpenIDC8zoneinfoSSSgvp\":{\"name\":\"zoneinfo\",\"abstract\":\"<p>String from zoneinfo time zone database representing the End-User&rsquo;s time zone. For example, Europe/Paris or America/Los_Angeles.</p>\",\"parent_name\":\"ClaimsOpenID\"},\"Classes/ClaimsOpenID.html#/s:8SwiftJWT12ClaimsOpenIDC6localeSSSgvp\":{\"name\":\"locale\",\"abstract\":\"<p>End-User&rsquo;s locale, represented as a BCP47 language tag. This is typically an ISO 639-1 Alpha-2 language code in lowercase and an ISO 3166-1 Alpha-2 country code in uppercase, separated by a dash. For example, en-US or fr-CA. As a compatibility note, some implementations have used an underscore as the separator rather than a dash, for example, en_US; Relying Parties MAY choose to accept this locale syntax as well.</p>\",\"parent_name\":\"ClaimsOpenID\"},\"Classes/ClaimsOpenID.html#/s:8SwiftJWT12ClaimsOpenIDC12phone_numberSSSgvp\":{\"name\":\"phone_number\",\"abstract\":\"<p>End-User&rsquo;s preferred telephone number. E.164 is RECOMMENDED as the format of this Claim, for example, +1 (425) 555-1212 or +56 (2) 687 2400.</p>\",\"parent_name\":\"ClaimsOpenID\"},\"Classes/ClaimsOpenID.html#/s:8SwiftJWT12ClaimsOpenIDC21phone_number_verifiedSbSgvp\":{\"name\":\"phone_number_verified\",\"abstract\":\"<p>True if the End-User&rsquo;s phone number has been verified; otherwise false. When this Claim Value is true, this means that the OP took affirmative steps to ensure that this phone number was controlled by the End-User at the time the verification was performed. The means by which a phone number is verified is context-specific, and dependent upon the trust framework or contractual agreements within which the parties are operating. When true, the phone_number Claim MUST be in E.164 format and any extensions MUST be represented in RFC 3966 format.</p>\",\"parent_name\":\"ClaimsOpenID\"},\"Classes/ClaimsOpenID.html#/s:8SwiftJWT12ClaimsOpenIDC7addressAA12AddressClaimVSgvp\":{\"name\":\"address\",\"abstract\":\"<p>End-User&rsquo;s preferred postal address.</p>\",\"parent_name\":\"ClaimsOpenID\"},\"Classes/ClaimsOpenID.html#/s:8SwiftJWT12ClaimsOpenIDC10updated_at10Foundation4DateVSgvp\":{\"name\":\"updated_at\",\"abstract\":\"<p>Time the End-User&rsquo;s information was last updated.</p>\",\"parent_name\":\"ClaimsOpenID\"},\"Classes/ClaimsMicroProfile.html#/s:8SwiftJWT18ClaimsMicroProfileC3iss3sub3exp3iat3jti3upn6groupsACSS_SS10Foundation4DateVAMS2SSaySSGtcfc\":{\"name\":\"init(iss:sub:exp:iat:jti:upn:groups:)\",\"abstract\":\"<p>Initialize a <code>ClaimsMicroProfile</code></p>\",\"parent_name\":\"ClaimsMicroProfile\"},\"Classes/ClaimsMicroProfile.html#/s:8SwiftJWT18ClaimsMicroProfileC3issSSvp\":{\"name\":\"iss\",\"abstract\":\"<p>The MP-JWT issuer. <a href=\\\"https://tools.ietf.org/html/rfc7519#section-4.1.1\\\">RFC7519, Section 4.1.1</a></p>\",\"parent_name\":\"ClaimsMicroProfile\"},\"Classes/ClaimsMicroProfile.html#/s:8SwiftJWT18ClaimsMicroProfileC3subSSvp\":{\"name\":\"sub\",\"abstract\":\"<p>Identifies the principal that is the subject of the JWT.</p>\",\"parent_name\":\"ClaimsMicroProfile\"},\"Classes/ClaimsMicroProfile.html#/s:8SwiftJWT18ClaimsMicroProfileC3exp10Foundation4DateVvp\":{\"name\":\"exp\",\"abstract\":\"<p>Identifies the expiration time on or after which the JWT MUST NOT be accepted for processing.</p>\",\"parent_name\":\"ClaimsMicroProfile\"},\"Classes/ClaimsMicroProfile.html#/s:8SwiftJWT18ClaimsMicroProfileC3iat10Foundation4DateVvp\":{\"name\":\"iat\",\"abstract\":\"<p>Identifies the time at which the JWT was issued.</p>\",\"parent_name\":\"ClaimsMicroProfile\"},\"Classes/ClaimsMicroProfile.html#/s:8SwiftJWT18ClaimsMicroProfileC3jtiSSvp\":{\"name\":\"jti\",\"abstract\":\"<p>The &ldquo;jti&rdquo; (JWT ID) claim provides a unique identifier for the JWT.\",\"parent_name\":\"ClaimsMicroProfile\"},\"Classes/ClaimsMicroProfile.html#/s:8SwiftJWT18ClaimsMicroProfileC3upnSSSgvp\":{\"name\":\"upn\",\"abstract\":\"<p>This MP-JWT custom claim is the user principal name in the java.security.Principal interface, and is the caller principal name in javax.security.enterprise.identitystore.IdentityStore. If this claim is missing, fallback to the &ldquo;preferred_username&rdquo;, should be attempted, and if that claim is missing, fallback to the &ldquo;sub&rdquo; claim should be used.</p>\",\"parent_name\":\"ClaimsMicroProfile\"},\"Classes/ClaimsMicroProfile.html#/s:8SwiftJWT18ClaimsMicroProfileC18preferred_usernameSSSgvp\":{\"name\":\"preferred_username\",\"abstract\":\"<p>Shorthand name by which the End-User wishes to be referred to at the RP, such as janedoe or j.doe. This value MAY be any valid JSON string including special characters such as @, /, or whitespace.</p>\",\"parent_name\":\"ClaimsMicroProfile\"},\"Classes/ClaimsMicroProfile.html#/s:8SwiftJWT18ClaimsMicroProfileC6groupsSaySSGvp\":{\"name\":\"groups\",\"abstract\":\"<p>This MP-JWT custom claim is the list of group names that have been assigned to the principal of the MP-JWT. This typically will required a mapping at the application container level to application deployment roles, but a one-to-one between group names and application role names is required to be performed in addition to any other mapping.</p>\",\"parent_name\":\"ClaimsMicroProfile\"},\"Classes/ClaimsMicroProfile.html\":{\"name\":\"ClaimsMicroProfile\",\"abstract\":\"<p>A class representing the MicroProfile claims as listed in <a href=\\\"http://microprofile.io/project/eclipse/microprofile-jwt-auth/spec/src/main/asciidoc/interoperability.asciidoc\\\">MicroProfile specs</a>.</p>\"},\"Classes/ClaimsOpenID.html\":{\"name\":\"ClaimsOpenID\",\"abstract\":\"<p>A class representing OpenID related claims as decsribed in <a href=\\\"http://openid.net/specs/openid-connect-core-1_0.html\\\">OpenID specs</a>.</p>\"},\"Classes/ClaimsStandardJWT.html\":{\"name\":\"ClaimsStandardJWT\",\"abstract\":\"<p>A class representing the Standard JWT claims as described in <a href=\\\"https://tools.ietf.org/html/rfc7519#section-4.1\\\">RFC7519</a>.</p>\"},\"Classes/JWTEncoder.html\":{\"name\":\"JWTEncoder\",\"abstract\":\"<p>A thread safe encoder that signs the JWT header and claims using the provided algorithm and encodes a <code><a href=\\\"36f8f5912051ae747ef441d6511ca4cbStructs/JWT.html\\\">JWT</a></code> instance as either Data or a JWT String.</p>\"},\"Classes/JWTDecoder.html\":{\"name\":\"JWTDecoder\",\"abstract\":\"<p>A thread safe decoder that decodes either Data or a JWT String as a <code><a href=\\\"36f8f5912051ae747ef441d6511ca4cbStructs/JWT.html\\\">JWT</a></code> instance and verifies the signiture using the provided algorithm.</p>\"},\"Classes.html\":{\"name\":\"Classes\",\"abstract\":\"<p>The following classes are available globally.</p>\"},\"Protocols.html\":{\"name\":\"Protocols\",\"abstract\":\"<p>The following protocols are available globally.</p>\"},\"Structs.html\":{\"name\":\"Structures\",\"abstract\":\"<p>The following structures are available globally.</p>\"}}"
  },
  {
    "path": "docs/undocumented.json",
    "content": "{\n  \"warnings\": [\n\n  ],\n  \"source_directory\": \"/Users/dannys/projects/kitura/Swift-JWT\"\n}"
  },
  {
    "path": "migration.md",
    "content": "## Upgrading to Swift-JWT 3.0\n\nSwift-JWT version 3.0 adds Codable conformance to JWT's for easier encoding and decoding. This release includes breaking changes to the Swift-JWT API and the following is a guide for converting from Swift-JWT 2.0 to Swift-JWT 3.0\n\n### Header:\n\nThe `Header` struct is now Codable and has fixed fields representing the possible headers. As a result, the Header is now intialized by setting the field values:\n\n```swift\n// Swift-JWT 2.0\nlet header = Header([.typ:\"JWT\", .kid:\"KeyID\"])\n\n// Swift-JWT 3.0\nlet header = Header(typ: \"JWT\", kid: \"KeyID\")\n```\nThese values can then accessed directly:\n```swift\n// Swift-JWT 2.0\nlet keyID = header[\"kid\"]\n\n// Swift-JWT 3.0\nlet keyID = header.kid\n```\n\n### Claims:\nThe JWT `Claims` has been changed to be a protocol. This means that instead of intializing a fixed `Claims` struct with a `[String: Any]` dictionary, you define and intialize your own object that conforms to claims. Alternatively, you can use one of the [example Claims implementations](https://github.com/Kitura/Swift-JWT/tree/master/Sources/SwiftJWT/ClaimsExamples) provided.\n\n```swift\n// Swift-JWT 2.0\nlet myClaims = Claims([\"iss\":\"Kitura\"])\n\n// Swift-JWT 3.0, User defined claims\nstruct MyClaims: Claims {\n    let sub: String\n}\nlet myClaims = MyClaims(iss: \"Kitura\")\n\n// Swift-JWT 3.0, Using Standard Claims\nlet myClaims = ClaimsStandardJWT(iss: \"Kitura\")\n```\n\n### Algorithm:\n\nThe `Algorithm` enum has been removed and replaced with `JWTSigner` and `JWTVerfier` structs. This change removes the requirement to specify the Key type and allows more signing and verifying algorithms to be added later.\n\n```swift\nlet privateKey = \"<PrivateKey>\".data(using: .utf8)!\nlet publicKey = \"<PublicKey>\".data(using: .utf8)!\n\n// Swift-JWT 2.0\nlet signer = Algorithm.rs256(privateKey, .privateKey)\nlet verifier = Algorithm.rs256(publicKey, .publicKey)\n\n// Swift-JWT 3.0\nlet signer = JWTSigner.rs256(privateKey: privateKey)\nlet verifier = JWTVerifier.rs256(publicKey: publicKey)\n```\n\n - The `isSupported` function has been removed. To see supported Algorithms, check the [README](https://github.com/Kitura/Swift-JWT#supported-algorithms) or inspect the initialisers for `JWTSigner` and `JWTVerifier`.\n\n### JWT:\n\n - The `JWT` Struct is now generic over a `Claims` object.\n \n ```swift\n // Swift-JWT 2.0\n let myJWT: JWT\n \n // Swift-JWT 3.0\n let myJWT: JWT<MyClaims>\n ```\n \n - The `sign` function takes a `JWTSigner` and returns `String` instead of `String?`.  \n \n ```swift\n // Swift-JWT 2.0\nlet signedJWT: String? = try jwt.sign(using: Algorithm.rs256(key, .privateKey))\n\n // Swift-JWT 3.0\n let signedJWT: String = try jwt.sign(using: JWTSigner.rs256(privateKey: key))\n```\n \n - The `verify` function takes a `JWTVerifier` and no longer throws.\n \n ```swift\n // Swift-JWT 2.0\n let verified = try JWT.verify(signedJWT, using: Algorithm.rs256(key, .publicKey))\n \n // Swift-JWT 3.0\n let verified = JWT<MyClaims>.verify(signedJWT, using: JWTVerifier.rs256(publicKey: key))\n```\n \n - The `validateClaims` function now only checks the `iat`, `exp`, and `nbf` claims are valid at the current point in time.  \n \n ```swift\n // Swift-JWT 2.0\n let validationResult = jwt.validateClaims(issuer: \"issuer\", audience: \"clientID\")\n\n // Swift-JWT 3.0\n let validationResult = jwt.validateClaims()\n let validateOthers = jwt.iss == \"issuer\" && jwt.aud == \"clientID\"\n ```\n\nThe `encode()` function has been removed. To encode a JWT without signing it use the `none` JWTSigner:\n\n```swift\n// Swift-JWT 2.0\nlet encodedJWT = try jwt.encoded()\n\n// Swift-JWT 3.0\nlet encodedJWT = try jwt.sign(using: .none)\n```\n\nThe `decode()` function has been replaced with an init from String:\n```swift\n// Swift-JWT 2.0\nlet decodedJWT = try JWT.decode(encodedJWT)\n\n// Swift-JWT 3.0\nlet decodedJWT = try JWT<MyClaims>(jwtString: encodedJWT)\n```\n\n\n## Removed APIs\n As a result of the new API, a number of types are now redundant and have been removed. These include:\n\n - `Supported`\n - `Base64URL` \n -  `Hash` \n - `RSAKeyType` \n - `ClaimKeys` \n"
  }
]