@0xbigboss/react-native-passkeys
Version:
A library for using (webauthn) passkeys on iOS, Android & web with a single api
44 lines (38 loc) • 1.57 kB
text/typescript
import type {
AuthenticationCredential,
AuthenticationExtensionsLargeBlobInputs,
AuthenticationExtensionsLargeBlobOutputs,
AuthenticationResponseJSON,
Base64URLString,
PublicKeyCredentialCreationOptionsJSON,
PublicKeyCredentialRequestOptionsJSON,
RegistrationCredential,
RegistrationResponseJSON,
} from './ReactNativePasskeys.types'
// Import the native module. On web, it will be resolved to ReactNativePasskeys.web.ts
// and on native platforms to ReactNativePasskeys.ts
import ReactNativePasskeysModule from './ReactNativePasskeysModule'
export function isSupported(): boolean {
return ReactNativePasskeysModule.isSupported()
}
export function isAutoFillAvalilable(): boolean {
return ReactNativePasskeysModule.isAutoFillAvalilable()
}
export async function create(
request: Omit<PublicKeyCredentialCreationOptionsJSON, 'extensions'> & {
// - only largeBlob is supported currently on iOS
// - no extensions are currently supported on Android
extensions?: { largeBlob?: AuthenticationExtensionsLargeBlobInputs }
} & Pick<CredentialCreationOptions, 'signal'>,
): Promise<RegistrationResponseJSON | null> {
return await ReactNativePasskeysModule.create(request)
}
export async function get(
request: Omit<PublicKeyCredentialRequestOptionsJSON, 'extensions'> & {
// - only largeBlob is supported currently on iOS
// - no extensions are currently supported on Android
extensions?: { largeBlob?: AuthenticationExtensionsLargeBlobInputs }
},
): Promise<AuthenticationResponseJSON | null> {
return ReactNativePasskeysModule.get(request)
}