From cac818173050ec1e18d73d0f880c826901cf4abd Mon Sep 17 00:00:00 2001 From: Matthew Miller Date: Tue, 2 Jun 2020 11:51:28 -0700 Subject: Add new Base64URL<->Buffer helper methods --- .../browser/src/helpers/bufferToBase64URLString.ts | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 packages/browser/src/helpers/bufferToBase64URLString.ts (limited to 'packages/browser/src/helpers/bufferToBase64URLString.ts') 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, ''); +} -- cgit v1.2.3