this repo has no description
1import type { Key, RuntimeImplementation } from '@atproto/oauth-client'
2import { default as NativeModule } from './ExpoAtprotoAuthModule'
3import { generateJwk } from './expo-key'
4
5export class ExpoRuntimeImplementation implements RuntimeImplementation {
6 async createKey(algs: string[]): Promise<Key> {
7 if (!algs.includes('ES256')) {
8 throw TypeError('ES256 is the only supported algo')
9 }
10 // @ts-expect-error TODO:
11 return generateJwk('ES256')
12 }
13
14 getRandomValues(length: number): Uint8Array | PromiseLike<Uint8Array> {
15 return NativeModule.getRandomValues(length)
16 }
17
18 digest(
19 bytes: Uint8Array,
20 algorithim: { name: string }
21 ): Uint8Array | PromiseLike<Uint8Array> {
22 if (algorithim.name === 'sha256') {
23 return NativeModule.digest(bytes, algorithim.name)
24 }
25
26 throw new TypeError(`Unsupported algorithim: ${algorithim.name}`)
27 }
28}