diff options
author | Matthew Miller <matthew@millerti.me> | 2020-06-02 11:51:28 -0700 |
---|---|---|
committer | Matthew Miller <matthew@millerti.me> | 2020-06-02 11:51:28 -0700 |
commit | cac818173050ec1e18d73d0f880c826901cf4abd (patch) | |
tree | fcc2e378c500d933ea710b0b2efc3eea8627ada2 /packages/browser/src/helpers/bufferToBase64URLString.ts | |
parent | 063282c49fc31570565348a0f1123b3d18a1e4b2 (diff) |
Add new Base64URL<->Buffer helper methods
Diffstat (limited to 'packages/browser/src/helpers/bufferToBase64URLString.ts')
-rw-r--r-- | packages/browser/src/helpers/bufferToBase64URLString.ts | 21 |
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, ''); +} |