swift impl
This commit is contained in:
@@ -1,3 +1,4 @@
|
||||
import ExpoModulesCore
|
||||
import JOSESwift
|
||||
|
||||
class JWTUtil {
|
||||
@@ -34,7 +35,7 @@ class JWTUtil {
|
||||
public static func createJwt(header: JWTHeader, payload: JWTPayload, jwk: JWK) -> String? {
|
||||
guard let header = try? header.toJWSHeader(),
|
||||
let payload = try? payload.toPayload(),
|
||||
let key = try? jwk.toSecKey()
|
||||
let key = try? jwk.toPrivateSecKey()
|
||||
else {
|
||||
print("didn't have one")
|
||||
return nil
|
||||
@@ -52,15 +53,34 @@ class JWTUtil {
|
||||
return jws.compactSerializedString
|
||||
}
|
||||
|
||||
public static func verifyJwt(_ jwkString: String, token tokenString: String, options optionsString: String?) -> Bool {
|
||||
guard let key = try? jsonToPublicKey(jwkString),
|
||||
let jws = try? JWS(compactSerialization: tokenString),
|
||||
public static func verifyJwt(token: String, jwk: JWK) -> JWTVerifyResponse? {
|
||||
guard let key = try? jwk.toPublicSecKey(),
|
||||
let jws = try? JWS(compactSerialization: token),
|
||||
let verifier = Verifier(verifyingAlgorithm: .ES256, key: key),
|
||||
let isVerified = try? jws.validate(using: verifier).isValid(for: verifier)
|
||||
let validation = try? jws.validate(using: verifier)
|
||||
else {
|
||||
return false
|
||||
return nil
|
||||
}
|
||||
|
||||
return isVerified
|
||||
let header = validation.header
|
||||
let serializedHeader = JWTHeader(
|
||||
alg: "ES256",
|
||||
jku: Field(wrappedValue: header.jku?.absoluteString),
|
||||
kid: Field(wrappedValue:header.kid),
|
||||
typ: Field(wrappedValue: header.typ),
|
||||
cty: Field(wrappedValue: header.cty),
|
||||
crit: Field(wrappedValue: header.cty)
|
||||
)
|
||||
|
||||
let payload = String(data: validation.payload.data(), encoding: .utf8)
|
||||
|
||||
guard let payload = payload else {
|
||||
return nil
|
||||
}
|
||||
|
||||
return JWTVerifyResponse(
|
||||
protectedHeader: serializedHeader.toField(),
|
||||
payload: payload.toField()
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user