diff options
author | Matthew Miller <matthew@millerti.me> | 2020-05-20 23:37:52 -0700 |
---|---|---|
committer | Matthew Miller <matthew@millerti.me> | 2020-05-20 23:37:52 -0700 |
commit | acfc8822607a95e58fff085d3905ecb29346b270 (patch) | |
tree | 801a687af961d2732b0325d7e8566ffb49c1a116 /packages/browser/src | |
parent | c80d7f59b94119b87b5dbd16029ecd5b1cb55ea8 (diff) |
Add some browser helpers
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)); +} |