Code cleanup
Lightweight JSON Web Tokens library for iOS/macOS written in Swift.
The main goal of the library to be simple as possible:
Add EEJWT package to the dependencies in your Package.swift file.
EEJWT
.package(url: "https://github.com/eugeneego/EEJWT-Swift.git", from: "1.0.0")
Just copy Sources/EEJWT/EEJWT.swift file to your project.
Sources/EEJWT/EEJWT.swift
let jwt = JWT() struct Header: JWTHeader { var typ: String? var alg: String = "" } struct Claims: Encodable { var iss: String? var sub: String? var aud: [String]? var exp: Date? var nbf: Date? var iat: Date? var jti: String? } // HMAC and dictionary payload let algHS = JWT.Algorithm.hs256(key: Data("test".utf8)) let tokenHS = try jwt.sign(header: ["test": "Test"], claims: ["iss": "Issuer", "sub": "123"], algorithm: algHS) print(tokenHS) // RSA with encodable payload let privateKeyRS = """ -----BEGIN PRIVATE KEY----- ...private key data here... -----END PRIVATE KEY----- """ let algRS = JWT.Algorithm.rs384(privateKey: privateKeyRS, publicKey: "") let tokenRS = try jwt.sign(header: Header(), claims: Claims(iss: "Issuer", sub: "123"), algorithm: algRS) print(tokenRS) // Elliptic curve with raw data payload let privateKeyES = """ -----BEGIN PRIVATE KEY----- ...private key data here... -----END PRIVATE KEY----- """ let algES = JWT.Algorithm.es512(privateKey: privateKeyES, publicKey: "") let tokenES = try jwt.sign(header: Data(), claims: Data(), algorithm: algES) print(tokenES)
let jwt = JWT() let token = "abc.def.ghi" // HMAC let algHS = JWT.Algorithm.hs256(key: Data("test".utf8)) let isValidHS = jwt.verify(token: token, algorithms: [algHS]) print(isValidHS) // RSA let publicKeyRS = """ -----BEGIN PUBLIC KEY----- ...public key data here... -----END PUBLIC KEY----- """ let algRS = JWT.Algorithm.rs256(privateKey: "", publicKey: publicKeyRS) let isValidRS = jwt.verify(token: token, algorithms: [algRS]) print(isValidRS)
let jwt = JWT() let token = "abc.def.ghi" // As JSON data let data = try jwt.decodeAsData(token: token) print(data.header, data.claims) // As JSON strings let strings = try jwt.decodeAsString(token: token) print(strings.header, strings.claims) // As parsed dictionaries let dictionaries = try jwt.decodeAsDictionary(token: token) print(dictionaries.header, dictionaries.claims) // As decodable objects struct Header: Decodable { /* ... */ } struct Claims: Decodable { /* ... */ } let objects: (header: Header, claims: Claims) = try jwt.decodeAsObject(token: token) print(objects.header, objects.claims)
This library is licensed under Apache 2.0. Full license text is available in LICENSE.
The library uses portions of modified code for private and public keys parsing from BlueRSA and BlueECC.
©Copyright 2023 CCF 开源发展委员会 Powered by Trustie& IntelliDE 京ICP备13000930号
EEJWT
Lightweight JSON Web Tokens library for iOS/macOS written in Swift.
The main goal of the library to be simple as possible:
Suppoted JWT algorithms:
Installation
Swift Package Manager
Add
EEJWT
package to the dependencies in your Package.swift file.Manual
Just copy
Sources/EEJWT/EEJWT.swift
file to your project.Usage
Signing
Verifying
Decoding payload
License
This library is licensed under Apache 2.0. Full license text is available in LICENSE.
The library uses portions of modified code for private and public keys parsing from BlueRSA and BlueECC.