JWTVerifier
public struct JWTVerifier
A struct that will be used to verify the signature of a JWT is valid for the provided Header
and Claims
.
For RSA and ECDSA, the provided key should be a .utf8 encoded PEM String.
Usage Example:
let pemString = """
-----BEGIN PUBLIC KEY-----
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDdlatRjRjogo3WojgGHFHYLugd
UWAY9iR3fy4arWNA1KoS8kVw33cJibXr8bvwUAUparCwlvdbH6dvEOfou0/gCFQs
HUfQrSDv+MuSUMAe8jzKE4qW+jK+xQU9a03GUnKHkkle+Q0pX/g6jXZ7r1/xAK5D
o2kQ+X5xK9cipRgEKwIDAQAB
-----END PUBLIC KEY-----
"""
let signedJWT = "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJuYW1lIjoiS2l0dXJhIn0.o2Rv_w1W6qfkldgb6FwzC3tAFEzo7WyYcLyykijCEqDbW8A7TwoFev85KGo_Bi7eNaSgZ6Q8jgkA31r8EDQWtSRg3_o5Zlq-ZCndyVeibgbyM2BMVUGcGzkUD2ikARfnb6GNGHr2waVeFSDehTN8WTLl0mGFxUE6wx5ZugR7My0"
struct MyClaims: Claims {
var name: String
}
let jwt = JWT(claims: MyClaims(name: "Kitura"))
let publicKey = pemString.data(using: .utf8)!
let jwtVerifier = JWTVerifier.rs256(publicKey: publicKey)
let verified: Bool = jwt.verify(signedJWT, using: jwtVerifier)
-
Initialize a JWTVerifier using the RSA 256 bits algorithm and the provided publicKey.
Declaration
Swift
public static func rs256(publicKey: Data) -> JWTVerifier
Parameters
publicKey
The UTF8 encoded PEM public key, with a “BEGIN PUBLIC KEY” header.
-
Initialize a JWTVerifier using the RSA 384 bits algorithm and the provided publicKey.
Declaration
Swift
public static func rs384(publicKey: Data) -> JWTVerifier
Parameters
publicKey
The UTF8 encoded PEM public key, with a “BEGIN PUBLIC KEY” header.
-
Initialize a JWTVerifier using the RSA 512 bits algorithm and the provided publicKey.
Declaration
Swift
public static func rs512(publicKey: Data) -> JWTVerifier
Parameters
publicKey
The UTF8 encoded PEM public key, with a “BEGIN PUBLIC KEY” header.
-
Initialize a JWTVerifier using the RSA 256 bits algorithm and the provided certificate.
Declaration
Swift
public static func rs256(certificate: Data) -> JWTVerifier
Parameters
publicKey
The UTF8 encoded PEM public key, with a “BEGIN CERTIFICATE” header.
-
Initialize a JWTVerifier using the RSA 384 bits algorithm and the provided certificate.
Declaration
Swift
public static func rs384(certificate: Data) -> JWTVerifier
Parameters
publicKey
The UTF8 encoded PEM public key, with a “BEGIN CERTIFICATE” header.
-
Initialize a JWTVerifier using the RSA 512 bits algorithm and the provided certificate.
Declaration
Swift
public static func rs512(certificate: Data) -> JWTVerifier
Parameters
publicKey
The UTF8 encoded PEM public key, with a “BEGIN CERTIFICATE” header.
-
Initialize a JWTVerifier using the RSA-PSS 256 bits algorithm and the provided publicKey.
Declaration
Swift
public static func ps256(publicKey: Data) -> JWTVerifier
Parameters
publicKey
The UTF8 encoded PEM public key, with a “BEGIN PUBLIC KEY” header.
-
Initialize a JWTVerifier using the RSA-PSS 384 bits algorithm and the provided publicKey.
Declaration
Swift
public static func ps384(publicKey: Data) -> JWTVerifier
Parameters
publicKey
The UTF8 encoded PEM public key, with a “BEGIN PUBLIC KEY” header.
-
Initialize a JWTVerifier using the RSA-PSS 512 bits algorithm and the provided publicKey. This verifier requires at least a 2048 bit RSA key.
Declaration
Swift
public static func ps512(publicKey: Data) -> JWTVerifier
Parameters
publicKey
The UTF8 encoded PEM public key, with a “BEGIN PUBLIC KEY” header.
-
Initialize a JWTSigner using the HMAC 256 bits algorithm and the provided privateKey.
Declaration
Swift
public static func hs256(key: Data) -> JWTVerifier
Parameters
key
The HMAC symmetric password data.
-
Initialize a JWTSigner using the HMAC 384 bits algorithm and the provided privateKey.
Declaration
Swift
public static func hs384(key: Data) -> JWTVerifier
Parameters
key
The HMAC symmetric password data.
-
Initialize a JWTSigner using the HMAC 512 bits algorithm and the provided privateKey.
Declaration
Swift
public static func hs512(key: Data) -> JWTVerifier
Parameters
key
The HMAC symmetric password data.
-
Initialize a JWTVerifier using the ECDSA SHA 256 algorithm and the provided public key.
Declaration
Swift
@available(macOS 10.13, iOS 11, tvOS 11.0, watchOS 4.0, *) public static func es256(publicKey: Data) -> JWTVerifier
Parameters
publicKey
The UTF8 encoded PEM public key, with a “BEGIN PUBLIC KEY” header.
-
Initialize a JWTVerifier using the ECDSA SHA 384 algorithm and the provided public key.
Declaration
Swift
@available(macOS 10.13, iOS 11, tvOS 11.0, watchOS 4.0, *) public static func es384(publicKey: Data) -> JWTVerifier
Parameters
publicKey
The UTF8 encoded PEM public key, with a “BEGIN PUBLIC KEY” header.
-
Initialize a JWTVerifier using the ECDSA SHA 512 algorithm and the provided public key.
Declaration
Swift
@available(macOS 10.13, iOS 11, tvOS 11.0, watchOS 4.0, *) public static func es512(publicKey: Data) -> JWTVerifier
Parameters
publicKey
The UTF8 encoded PEM public key, with a “BEGIN PUBLIC KEY” header.
-
Initialize a JWTVerifier that will always return true when verifying the JWT. This is equivelent to using the “none” alg header.
Declaration
Swift
public static let none: JWTVerifier