better implementation

This commit is contained in:
Hailey
2024-04-14 23:27:27 -07:00
parent 71f1e44653
commit 2ada0cbd0d
12 changed files with 136 additions and 62 deletions
@@ -14,22 +14,24 @@ public class ExpoBlueskyOAuthClientModule: Module {
return CryptoUtil.getRandomValues(byteLength: byteLength)
}
AsyncFunction ("generateKeyPair") { (kid: String?, promise: Promise) in
let keypair = try? CryptoUtil.generateKeyPair(kid: kid)
AsyncFunction ("generateJwk") { (algo: String?, promise: Promise) in
if algo != "ES256" {
promise.reject("GenerateKeyError", "Algorithim not supported.")
return
}
let keypair = try? CryptoUtil.generateKeyPair()
guard let keypair = keypair else {
guard keypair != nil else {
promise.reject("GenerateKeyError", "Error generating JWK.")
return
}
promise.resolve([
"publicKey": keypair.publicJWK.toJson(),
"privateKey": keypair.privateJWK.toJson()
])
promise.resolve(keypair)
}
AsyncFunction("createJwt") { (jwk: String, header: String, payload: String, promise: Promise) in
guard let jwt = JWTUtil.createJwt(jwk, header: header, payload: payload) else {
AsyncFunction("createJwt") { (header: JWTHeader, payload: JWTPayload, jwk: JWK, promise: Promise) in
guard let jwt = JWTUtil.createJwt(header: header, payload: payload, jwk: jwk) else {
promise.reject("JWTError", "Error creating JWT.")
return
}