diff options
author | timonson <54777088+timonson@users.noreply.github.com> | 2020-10-13 03:12:10 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-10-13 12:12:10 +1100 |
commit | 1956cb81372b96bc476e74ab43a62a6e60861277 (patch) | |
tree | 014dd7c132239eab61cceb0d31b6d27304a8ead5 /std/encoding/base64url.ts | |
parent | 26639b3bac463768c65f7fc40a1c53317549e1eb (diff) |
fix(std/encoding): base64 properly encodes mbc and handles Uint8Arrays (#7807)
Fixes #6094
Fixes #4794
Diffstat (limited to 'std/encoding/base64url.ts')
-rw-r--r-- | std/encoding/base64url.ts | 31 |
1 files changed, 13 insertions, 18 deletions
diff --git a/std/encoding/base64url.ts b/std/encoding/base64url.ts index b20878554..fe8019a29 100644 --- a/std/encoding/base64url.ts +++ b/std/encoding/base64url.ts @@ -1,13 +1,11 @@ // Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. -import { - decode as convertBase64ToArrayBuffer, - encode as convertArrayBufferToBase64, -} from "./base64.ts"; +import * as base64 from "./base64.ts"; /* * Some variants allow or require omitting the padding '=' signs: * https://en.wikipedia.org/wiki/Base64#URL_applications + * @param base64url */ export function addPaddingToBase64url(base64url: string): string { if (base64url.length % 4 === 2) return base64url + "=="; @@ -18,29 +16,26 @@ export function addPaddingToBase64url(base64url: string): string { return base64url; } -function convertBase64urlToBase64(base64url: string): string { - return addPaddingToBase64url(base64url) - .replace(/\-/g, "+") - .replace(/_/g, "/"); +function convertBase64urlToBase64(b64url: string): string { + return addPaddingToBase64url(b64url).replace(/\-/g, "+").replace(/_/g, "/"); } -function convertBase64ToBase64url(base64: string): string { - return base64.replace(/=/g, "").replace(/\+/g, "-").replace(/\//g, "_"); +function convertBase64ToBase64url(b64: string): string { + return b64.replace(/=/g, "").replace(/\+/g, "-").replace(/\//g, "_"); } /** - * Converts given data with base64url encoding. - * Removes paddings '='. - * @param data input to encode + * Encodes a given Uint8Array into a base64url representation + * @param uint8 */ -export function encode(data: string | ArrayBuffer): string { - return convertBase64ToBase64url(convertArrayBufferToBase64(data)); +export function encode(uint8: Uint8Array): string { + return convertBase64ToBase64url(base64.encode(uint8)); } /** * Converts given base64url encoded data back to original - * @param data input to decode + * @param b64url */ -export function decode(data: string): ArrayBuffer { - return convertBase64ToArrayBuffer(convertBase64urlToBase64(data)); +export function decode(b64url: string): Uint8Array { + return base64.decode(convertBase64urlToBase64(b64url)); } |