summaryrefslogtreecommitdiffhomepage
path: root/packages/browser/src
diff options
context:
space:
mode:
Diffstat (limited to 'packages/browser/src')
-rw-r--r--packages/browser/src/helpers/supportsWebauthn.ts9
-rw-r--r--packages/browser/src/helpers/toBase64String.ts9
-rw-r--r--packages/browser/src/helpers/toUint8Array.ts7
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));
+}