|
|
@ -1,11 +1,24 @@ |
|
|
|
"use strict"; |
|
|
|
|
|
|
|
const b64Alphabet = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=' |
|
|
|
// var b64Alphabet = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';
|
|
|
|
|
|
|
|
function toCharCode(ch) { |
|
|
|
return ch.charCodeAt(0); |
|
|
|
} |
|
|
|
|
|
|
|
function isValidB64Char(charCode) { |
|
|
|
return charCode >= toCharCode('A') && charCode <= toCharCode('Z') |
|
|
|
|| charCode >= toCharCode('a') && charCode <= toCharCode('z') |
|
|
|
|| charCode >= toCharCode('0') && charCode <= toCharCode('9') |
|
|
|
|| charCode === toCharCode('+') |
|
|
|
|| charCode === toCharCode('/') |
|
|
|
|| charCode === toCharCode('='); |
|
|
|
} |
|
|
|
|
|
|
|
function atob(str) { |
|
|
|
for (const ch of str) |
|
|
|
if (!b64Alphabet.includes(ch)) |
|
|
|
throw new Error(`Invalid character '${ch}' in base64 String`); |
|
|
|
for (var idx in str) |
|
|
|
if (!isValidB64Char(str.charCodeAt(idx))) |
|
|
|
throw new Error('Invalid character ' + str.charAt(idx) + ' in base64 String'); |
|
|
|
return Buffer.from(str, 'base64').toString('binary'); |
|
|
|
} |
|
|
|
|
|
|
|