diff options
Diffstat (limited to 'packages/browser/src')
-rw-r--r-- | packages/browser/src/helpers/supportsWebauthn.ts | 9 | ||||
-rw-r--r-- | packages/browser/src/helpers/toBase64String.ts | 9 | ||||
-rw-r--r-- | packages/browser/src/helpers/toUint8Array.ts | 7 |
3 files changed, 25 insertions, 0 deletions
diff --git a/packages/browser/src/helpers/supportsWebauthn.ts b/packages/browser/src/helpers/supportsWebauthn.ts new file mode 100644 index 0000000..f566942 --- /dev/null +++ b/packages/browser/src/helpers/supportsWebauthn.ts @@ -0,0 +1,9 @@ +/** + * Determine if the browser is capable of Webauthn + */ +export default function supportsWebauthn(): boolean { + return ( + window.PublicKeyCredential !== undefined + && typeof window.PublicKeyCredential === 'function' + ); +} diff --git a/packages/browser/src/helpers/toBase64String.ts b/packages/browser/src/helpers/toBase64String.ts new file mode 100644 index 0000000..8234002 --- /dev/null +++ b/packages/browser/src/helpers/toBase64String.ts @@ -0,0 +1,9 @@ +import base64js from 'base64-js'; + +export default function toBase64String(buffer: ArrayBuffer): string { + // TODO: Make sure converting buffer to Uint8Array() is correct + return base64js.fromByteArray(new Uint8Array(buffer)) + .replace(/\+/g, "-") + .replace(/\//g, "_") + .replace(/=/g, ""); +} diff --git a/packages/browser/src/helpers/toUint8Array.ts b/packages/browser/src/helpers/toUint8Array.ts new file mode 100644 index 0000000..a807a88 --- /dev/null +++ b/packages/browser/src/helpers/toUint8Array.ts @@ -0,0 +1,7 @@ +/** + * A helper method to convert a string sent from the server to a Uint8Array the authenticator will + * expect. + */ +export default function toUint8Array(value: string): Uint8Array { + return Uint8Array.from(value, c => c.charCodeAt(0)); +} |