summaryrefslogtreecommitdiffhomepage
path: root/packages/browser/src/helpers/bufferToBase64URLString.ts
diff options
context:
space:
mode:
Diffstat (limited to 'packages/browser/src/helpers/bufferToBase64URLString.ts')
-rw-r--r--packages/browser/src/helpers/bufferToBase64URLString.ts21
1 files changed, 21 insertions, 0 deletions
diff --git a/packages/browser/src/helpers/bufferToBase64URLString.ts b/packages/browser/src/helpers/bufferToBase64URLString.ts
new file mode 100644
index 0000000..954f4b0
--- /dev/null
+++ b/packages/browser/src/helpers/bufferToBase64URLString.ts
@@ -0,0 +1,21 @@
+/**
+ * Convert the given array buffer into a Base64URL-encoded string. Ideal for converting various
+ * credential response ArrayBuffers to string for sending back to the server as JSON.
+ *
+ * Helper method to compliment `base64URLStringToBuffer`
+ */
+export default function bufferToBase64URLString(buffer: ArrayBuffer): string {
+ const bytes = new Uint8Array(buffer);
+ let str = '';
+
+ for (const charCode of bytes) {
+ str += String.fromCharCode(charCode);
+ }
+
+ const base64String = btoa(str);
+
+ return base64String
+ .replace(/\+/g, '-')
+ .replace(/\//g, '_')
+ .replace(/=/g, '');
+}