13607edd43
fix android module name import fixes fix some imports use `@atproto/jwk` over local zod schema preview oauth client rename package alignment more alignment database implementation cleanup some types alignment switch implementation for es256 half of `verifyJwt` for android half of `verifyJwt` for iOS rm log `createJwt` android `createJwt` ios rm print cleanup native impl silence some warnings reorg, finish web impl follow the `CryptoImplementation` move some more things around normalize some names rename func add generate on android add android dep rm bool add alg better implementation ios jwk generation fix index.ts add `getRandomValues()` on native web `getRandomValues` silence ts error for missing crypto on web add `digest` for web add `digest` add module
44 lines
1.4 KiB
Swift
44 lines
1.4 KiB
Swift
import ExpoModulesCore
|
|
import JOSESwift
|
|
|
|
public class ExpoBlueskyOAuthClientModule: Module {
|
|
public func definition() -> ModuleDefinition {
|
|
Name("ExpoBlueskyOAuthClient")
|
|
|
|
AsyncFunction("digest") { (data: Data, promise: Promise) in
|
|
promise.resolve(CryptoUtil.digest(data: data))
|
|
}
|
|
|
|
// We are going to leave this as sync to line up the APIs. It's fast, so not a big deal.
|
|
Function("getRandomValues") { (byteLength: Int) in
|
|
return CryptoUtil.getRandomValues(byteLength: byteLength)
|
|
}
|
|
|
|
AsyncFunction ("generateKeyPair") { (kid: String?, promise: Promise) in
|
|
let keypair = try? CryptoUtil.generateKeyPair(kid: kid)
|
|
|
|
guard let keypair = keypair else {
|
|
promise.reject("GenerateKeyError", "Error generating JWK.")
|
|
return
|
|
}
|
|
|
|
promise.resolve([
|
|
"publicKey": keypair.publicJWK.toJson(),
|
|
"privateKey": keypair.privateJWK.toJson()
|
|
])
|
|
}
|
|
|
|
AsyncFunction("createJwt") { (jwk: String, header: String, payload: String, promise: Promise) in
|
|
guard let jwt = JWTUtil.createJwt(jwk, header: header, payload: payload) else {
|
|
promise.reject("JWTError", "Error creating JWT.")
|
|
return
|
|
}
|
|
promise.resolve(jwt)
|
|
}
|
|
|
|
AsyncFunction("verifyJwt") { (jwk: String, token: String, options: String?, promise: Promise) in
|
|
promise.resolve(JWTUtil.verifyJwt(jwk, token: token, options: options))
|
|
}
|
|
}
|
|
}
|