@okta/okta-auth-js
Version:
The Okta Auth SDK
81 lines (75 loc) • 2.71 kB
JavaScript
;
exports.base64ToBase64Url = base64ToBase64Url;
exports.base64UrlDecode = base64UrlDecode;
exports.base64UrlToBase64 = base64UrlToBase64;
exports.base64UrlToBuffer = base64UrlToBuffer;
exports.base64UrlToString = base64UrlToString;
exports.bufferToBase64Url = bufferToBase64Url;
exports.stringToBase64Url = stringToBase64Url;
exports.stringToBuffer = stringToBuffer;
var _errors = require("../errors");
var _webcrypto = require("./webcrypto");
/*!
* Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.
* The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the "License.")
*
* You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
*
* See the License for the specific language governing permissions and limitations under the License.
*/
// converts a string to base64 (url/filename safe variant)
function stringToBase64Url(str) {
var b64 = (0, _webcrypto.btoa)(str);
return base64ToBase64Url(b64);
}
// converts a standard base64-encoded string to a "url/filename safe" variant
function base64ToBase64Url(b64) {
return b64.replace(/\+/g, '-').replace(/\//g, '_').replace(/=+$/, '');
}
// converts a "url/filename safe" base64 string to a "standard" base64 string
function base64UrlToBase64(b64u) {
return b64u.replace(/-/g, '+').replace(/_/g, '/');
}
function base64UrlToString(b64u) {
var b64 = base64UrlToBase64(b64u);
switch (b64.length % 4) {
case 0:
break;
case 2:
b64 += '==';
break;
case 3:
b64 += '=';
break;
default:
throw new _errors.AuthSdkError('Not a valid Base64Url');
}
var utf8 = (0, _webcrypto.atob)(b64);
try {
return decodeURIComponent(escape(utf8));
} catch (e) {
return utf8;
}
}
function stringToBuffer(str) {
var buffer = new Uint8Array(str.length);
for (var i = 0; i < str.length; i++) {
buffer[i] = str.charCodeAt(i);
}
return buffer;
}
function base64UrlDecode(str) {
return (0, _webcrypto.atob)(base64UrlToBase64(str));
}
// Converts base64 string to binary data view
function base64UrlToBuffer(b64u) {
return Uint8Array.from(base64UrlDecode(b64u), c => c.charCodeAt(0));
}
// Converts an ArrayBuffer object that contains binary data to base64 encoded string
function bufferToBase64Url(bin) {
return (0, _webcrypto.btoa)(new Uint8Array(bin).reduce((s, byte) => s + String.fromCharCode(byte), ''));
}
//# sourceMappingURL=base64.js.map