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
This commit is contained in:
Hailey
2024-04-10 12:58:41 -07:00
parent 310d865440
commit 13607edd43
27 changed files with 1502 additions and 0 deletions
@@ -0,0 +1,43 @@
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))
}
}
}