From b218225be10402658ec0fe4a09ccbdc5e1a3e873 Mon Sep 17 00:00:00 2001 From: Wolfgang Faust Date: Mon, 1 Jul 2019 16:20:43 -0400 Subject: [PATCH] Add support for decoding base64url variant. --- lib/base64-arraybuffer.js | 3 +++ test/base64-arraybuffer_test.js | 1 + 2 files changed, 4 insertions(+) diff --git a/lib/base64-arraybuffer.js b/lib/base64-arraybuffer.js index e6b6306..5ab7aeb 100644 --- a/lib/base64-arraybuffer.js +++ b/lib/base64-arraybuffer.js @@ -15,6 +15,9 @@ for (var i = 0; i < chars.length; i++) { lookup[chars.charCodeAt(i)] = i; } + // base64url equivalents + lookup['-'.charCodeAt(0)] = 62; + lookup['_'.charCodeAt(0)] = 63; exports.encode = function(arraybuffer) { var bytes = new Uint8Array(arraybuffer), diff --git a/test/base64-arraybuffer_test.js b/test/base64-arraybuffer_test.js index 76d22ae..da85a1e 100644 --- a/test/base64-arraybuffer_test.js +++ b/test/base64-arraybuffer_test.js @@ -53,4 +53,5 @@ describe('decode', () => { it('decode "Hello world"', () => ok(testArrayBuffers(decode("SGVsbG8gd29ybGQ="), stringArrayBuffer("Hello world")))); it('decode "Hello worlds!"', () => ok(testArrayBuffers(decode("SGVsbG8gd29ybGRzIQ=="), stringArrayBuffer("Hello worlds!")))); it('decode all binary characters', () => ok(testArrayBuffers(decode("AAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHh8gISIjJCUmJygpKissLS4vMDEyMzQ1Njc4OTo7PD0+P0BBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWltcXV5fYGFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6e3x9fn+AgYKDhIWGh4iJiouMjY6PkJGSk5SVlpeYmZqbnJ2en6ChoqOkpaanqKmqq6ytrq+wsbKztLW2t7i5uru8vb6/wMHCw8TFxsfIycrLzM3Oz9DR0tPU1dbX2Nna29zd3t/g4eLj5OXm5+jp6uvs7e7v8PHy8/T19vf4+fr7/P3+/w=="), rangeArrayBuffer()))); + it('decode all binary characters from base64url', () => ok(testArrayBuffers(decode("AAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHh8gISIjJCUmJygpKissLS4vMDEyMzQ1Njc4OTo7PD0-P0BBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWltcXV5fYGFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6e3x9fn-AgYKDhIWGh4iJiouMjY6PkJGSk5SVlpeYmZqbnJ2en6ChoqOkpaanqKmqq6ytrq-wsbKztLW2t7i5uru8vb6_wMHCw8TFxsfIycrLzM3Oz9DR0tPU1dbX2Nna29zd3t_g4eLj5OXm5-jp6uvs7e7v8PHy8_T19vf4-fr7_P3-_w=="), rangeArrayBuffer()))); });