4498 lines
207 KiB
JavaScript
4498 lines
207 KiB
JavaScript
import {
|
|
__commonJS
|
|
} from "./chunk-V4OQ3NZ2.js";
|
|
|
|
// ../node_modules/.pnpm/secure-ls@2.0.0/node_modules/secure-ls/dist/secure-ls.js
|
|
var require_secure_ls = __commonJS({
|
|
"../node_modules/.pnpm/secure-ls@2.0.0/node_modules/secure-ls/dist/secure-ls.js"(exports, module) {
|
|
(function webpackUniversalModuleDefinition(root, factory) {
|
|
if (typeof exports === "object" && typeof module === "object") module.exports = factory();
|
|
else if (typeof define === "function" && define.amd) define([], factory);
|
|
else if (typeof exports === "object") exports["SecureLS"] = factory();
|
|
else root["SecureLS"] = factory();
|
|
})(exports, () => {
|
|
return (
|
|
/******/
|
|
(() => {
|
|
var __webpack_modules__ = {
|
|
/***/
|
|
"./src/Base64.js": (
|
|
/*!***********************!*\
|
|
!*** ./src/Base64.js ***!
|
|
\***********************/
|
|
/***/
|
|
(__unused_webpack_module, __webpack_exports__2, __webpack_require__2) => {
|
|
"use strict";
|
|
__webpack_require__2.r(__webpack_exports__2);
|
|
__webpack_require__2.d(__webpack_exports__2, {
|
|
/* harmony export */
|
|
default: () => __WEBPACK_DEFAULT_EXPORT__
|
|
/* harmony export */
|
|
});
|
|
const Base64 = {
|
|
_keyStr: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",
|
|
encode: function(e) {
|
|
let t = "";
|
|
let n, r, i, s, o, u, a;
|
|
let f = 0;
|
|
e = Base64._utf8Encode(e);
|
|
while (f < e.length) {
|
|
n = e.charCodeAt(f++);
|
|
r = e.charCodeAt(f++);
|
|
i = e.charCodeAt(f++);
|
|
s = n >> 2;
|
|
o = (n & 3) << 4 | r >> 4;
|
|
u = (r & 15) << 2 | i >> 6;
|
|
a = i & 63;
|
|
if (isNaN(r)) {
|
|
u = a = 64;
|
|
} else if (isNaN(i)) {
|
|
a = 64;
|
|
}
|
|
t = t + this._keyStr.charAt(s) + this._keyStr.charAt(o) + this._keyStr.charAt(u) + this._keyStr.charAt(a);
|
|
}
|
|
return t;
|
|
},
|
|
decode: function(e) {
|
|
let t = "";
|
|
let n, r, i;
|
|
let s, o, u, a;
|
|
let f = 0;
|
|
e = e.replace(/[^A-Za-z0-9+/=]/g, "");
|
|
while (f < e.length) {
|
|
s = this._keyStr.indexOf(e.charAt(f++));
|
|
o = this._keyStr.indexOf(e.charAt(f++));
|
|
u = this._keyStr.indexOf(e.charAt(f++));
|
|
a = this._keyStr.indexOf(e.charAt(f++));
|
|
n = s << 2 | o >> 4;
|
|
r = (o & 15) << 4 | u >> 2;
|
|
i = (u & 3) << 6 | a;
|
|
t = t + String.fromCharCode(n);
|
|
if (u !== 64) {
|
|
t = t + String.fromCharCode(r);
|
|
}
|
|
if (a !== 64) {
|
|
t = t + String.fromCharCode(i);
|
|
}
|
|
}
|
|
t = Base64._utf8Decode(t);
|
|
return t;
|
|
},
|
|
_utf8Encode: function(e) {
|
|
e = e.replace(/\r\n/g, "\n");
|
|
let t = "";
|
|
for (let n = 0; n < e.length; n++) {
|
|
let r = e.charCodeAt(n);
|
|
if (r < 128) {
|
|
t += String.fromCharCode(r);
|
|
} else if (r > 127 && r < 2048) {
|
|
t += String.fromCharCode(r >> 6 | 192);
|
|
t += String.fromCharCode(r & 63 | 128);
|
|
} else {
|
|
t += String.fromCharCode(r >> 12 | 224);
|
|
t += String.fromCharCode(r >> 6 & 63 | 128);
|
|
t += String.fromCharCode(r & 63 | 128);
|
|
}
|
|
}
|
|
return t;
|
|
},
|
|
_utf8Decode: function(e) {
|
|
let t = "";
|
|
let n = 0;
|
|
let r, c2, c3;
|
|
r = c2 = 0;
|
|
while (n < e.length) {
|
|
r = e.charCodeAt(n);
|
|
if (r < 128) {
|
|
t += String.fromCharCode(r);
|
|
n++;
|
|
} else if (r > 191 && r < 224) {
|
|
c2 = e.charCodeAt(n + 1);
|
|
t += String.fromCharCode((r & 31) << 6 | c2 & 63);
|
|
n += 2;
|
|
} else {
|
|
c2 = e.charCodeAt(n + 1);
|
|
c3 = e.charCodeAt(n + 2);
|
|
t += String.fromCharCode((r & 15) << 12 | (c2 & 63) << 6 | c3 & 63);
|
|
n += 3;
|
|
}
|
|
}
|
|
return t;
|
|
}
|
|
};
|
|
const __WEBPACK_DEFAULT_EXPORT__ = Base64;
|
|
}
|
|
),
|
|
/***/
|
|
"./src/SecureLS.js": (
|
|
/*!*************************!*\
|
|
!*** ./src/SecureLS.js ***!
|
|
\*************************/
|
|
/***/
|
|
(__unused_webpack_module, __webpack_exports__2, __webpack_require__2) => {
|
|
"use strict";
|
|
__webpack_require__2.r(__webpack_exports__2);
|
|
__webpack_require__2.d(__webpack_exports__2, {
|
|
/* harmony export */
|
|
SecureLS: () => (
|
|
/* binding */
|
|
SecureLS
|
|
)
|
|
/* harmony export */
|
|
});
|
|
var _constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__2(
|
|
/*! ./constants */
|
|
"./src/constants.js"
|
|
);
|
|
var _enc_utf8__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__2(
|
|
/*! ./enc-utf8 */
|
|
"./src/enc-utf8.js"
|
|
);
|
|
var _utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__2(
|
|
/*! ./utils */
|
|
"./src/utils.js"
|
|
);
|
|
var crypto_js_aes__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__2(
|
|
/*! crypto-js/aes */
|
|
"./node_modules/crypto-js/aes.js"
|
|
);
|
|
var crypto_js_aes__WEBPACK_IMPORTED_MODULE_3___default = __webpack_require__2.n(crypto_js_aes__WEBPACK_IMPORTED_MODULE_3__);
|
|
var crypto_js_rabbit__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__2(
|
|
/*! crypto-js/rabbit */
|
|
"./node_modules/crypto-js/rabbit.js"
|
|
);
|
|
var crypto_js_rabbit__WEBPACK_IMPORTED_MODULE_4___default = __webpack_require__2.n(crypto_js_rabbit__WEBPACK_IMPORTED_MODULE_4__);
|
|
var crypto_js_rc4__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__2(
|
|
/*! crypto-js/rc4 */
|
|
"./node_modules/crypto-js/rc4.js"
|
|
);
|
|
var crypto_js_rc4__WEBPACK_IMPORTED_MODULE_5___default = __webpack_require__2.n(crypto_js_rc4__WEBPACK_IMPORTED_MODULE_5__);
|
|
var crypto_js_tripledes__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__2(
|
|
/*! crypto-js/tripledes */
|
|
"./node_modules/crypto-js/tripledes.js"
|
|
);
|
|
var crypto_js_tripledes__WEBPACK_IMPORTED_MODULE_6___default = __webpack_require__2.n(crypto_js_tripledes__WEBPACK_IMPORTED_MODULE_6__);
|
|
var lz_string_libs_lz_string__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__2(
|
|
/*! lz-string/libs/lz-string */
|
|
"./node_modules/lz-string/libs/lz-string.js"
|
|
);
|
|
var lz_string_libs_lz_string__WEBPACK_IMPORTED_MODULE_7___default = __webpack_require__2.n(lz_string_libs_lz_string__WEBPACK_IMPORTED_MODULE_7__);
|
|
var _Base64__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__2(
|
|
/*! ./Base64 */
|
|
"./src/Base64.js"
|
|
);
|
|
const encryptors = {
|
|
[_constants__WEBPACK_IMPORTED_MODULE_0__["default"].EncrytionTypes.AES]: crypto_js_aes__WEBPACK_IMPORTED_MODULE_3___default(),
|
|
[_constants__WEBPACK_IMPORTED_MODULE_0__["default"].EncrytionTypes.DES]: crypto_js_tripledes__WEBPACK_IMPORTED_MODULE_6___default(),
|
|
[_constants__WEBPACK_IMPORTED_MODULE_0__["default"].EncrytionTypes.RABBIT]: crypto_js_rabbit__WEBPACK_IMPORTED_MODULE_4___default(),
|
|
[_constants__WEBPACK_IMPORTED_MODULE_0__["default"].EncrytionTypes.RC4]: crypto_js_rc4__WEBPACK_IMPORTED_MODULE_5___default()
|
|
};
|
|
class SecureLS {
|
|
constructor({
|
|
encryptionSecret = "",
|
|
encryptionNamespace = "",
|
|
isCompression = true,
|
|
encodingType = _constants__WEBPACK_IMPORTED_MODULE_0__["default"].EncrytionTypes.BASE64,
|
|
storage = localStorage,
|
|
metaKey = _constants__WEBPACK_IMPORTED_MODULE_0__["default"].metaKey
|
|
} = {}) {
|
|
Object.assign(this, {
|
|
_name: "secure-ls",
|
|
Base64: _Base64__WEBPACK_IMPORTED_MODULE_8__["default"],
|
|
LZString: {
|
|
compressToUTF16: lz_string_libs_lz_string__WEBPACK_IMPORTED_MODULE_7__.compressToUTF16,
|
|
decompressFromUTF16: lz_string_libs_lz_string__WEBPACK_IMPORTED_MODULE_7__.decompressFromUTF16
|
|
},
|
|
AES: crypto_js_aes__WEBPACK_IMPORTED_MODULE_3___default(),
|
|
DES: crypto_js_tripledes__WEBPACK_IMPORTED_MODULE_6___default(),
|
|
RABBIT: crypto_js_rabbit__WEBPACK_IMPORTED_MODULE_4___default(),
|
|
RC4: crypto_js_rc4__WEBPACK_IMPORTED_MODULE_5___default(),
|
|
enc: _enc_utf8__WEBPACK_IMPORTED_MODULE_1__["default"]
|
|
});
|
|
this.config = {
|
|
encryptionSecret,
|
|
encryptionNamespace,
|
|
isCompression,
|
|
encodingType: encodingType.toLowerCase(),
|
|
storage,
|
|
metaKey
|
|
};
|
|
this.encryptionSecret = encryptionSecret;
|
|
this.storage = storage;
|
|
this.metaKey = metaKey;
|
|
this.init();
|
|
}
|
|
init() {
|
|
let metaData = this.getMetaData();
|
|
this._isBase64 = this._isBase64EncryptionType();
|
|
this._isAES = this._isAESEncryptionType();
|
|
this._isDES = this._isDESEncryptionType();
|
|
this._isRabbit = this._isRabbitEncryptionType();
|
|
this._isRC4 = this._isRC4EncryptionType();
|
|
this._isCompression = this._isDataCompressionEnabled();
|
|
this.allKeys = metaData.keys || this.resetAllKeys();
|
|
}
|
|
_isBase64EncryptionType() {
|
|
return _Base64__WEBPACK_IMPORTED_MODULE_8__["default"] && (typeof this.config.encodingType === "undefined" || this.config.encodingType === _constants__WEBPACK_IMPORTED_MODULE_0__["default"].EncrytionTypes.BASE64);
|
|
}
|
|
_isAESEncryptionType() {
|
|
return crypto_js_aes__WEBPACK_IMPORTED_MODULE_3___default() && this.config.encodingType === _constants__WEBPACK_IMPORTED_MODULE_0__["default"].EncrytionTypes.AES;
|
|
}
|
|
_isDESEncryptionType() {
|
|
return crypto_js_tripledes__WEBPACK_IMPORTED_MODULE_6___default() && this.config.encodingType === _constants__WEBPACK_IMPORTED_MODULE_0__["default"].EncrytionTypes.DES;
|
|
}
|
|
_isRabbitEncryptionType() {
|
|
return crypto_js_rabbit__WEBPACK_IMPORTED_MODULE_4___default() && this.config.encodingType === _constants__WEBPACK_IMPORTED_MODULE_0__["default"].EncrytionTypes.RABBIT;
|
|
}
|
|
_isRC4EncryptionType() {
|
|
return crypto_js_rc4__WEBPACK_IMPORTED_MODULE_5___default() && this.config.encodingType === _constants__WEBPACK_IMPORTED_MODULE_0__["default"].EncrytionTypes.RC4;
|
|
}
|
|
_isDataCompressionEnabled() {
|
|
return this.config.isCompression;
|
|
}
|
|
getEncryptionSecret(key) {
|
|
let metaData = this.getMetaData();
|
|
let obj = _utils__WEBPACK_IMPORTED_MODULE_2__["default"].getObjectFromKey(metaData.keys, key);
|
|
if (!obj) {
|
|
return;
|
|
}
|
|
if (this._isAES || this._isDES || this._isRabbit || this._isRC4) {
|
|
if (typeof this.config.encryptionSecret === "undefined") {
|
|
this.encryptionSecret = obj.s;
|
|
if (!this.encryptionSecret) {
|
|
this.encryptionSecret = _utils__WEBPACK_IMPORTED_MODULE_2__["default"].generateSecretKey();
|
|
this.setMetaData();
|
|
}
|
|
} else {
|
|
this.encryptionSecret = this.config.encryptionSecret || obj.s || "";
|
|
}
|
|
}
|
|
}
|
|
getEncryptionType() {
|
|
const encodingType = this.config.encodingType;
|
|
return encodingType ? encodingType.toLowerCase() : _constants__WEBPACK_IMPORTED_MODULE_0__["default"].EncrytionTypes.BASE64;
|
|
}
|
|
getDataFromLocalStorage(key) {
|
|
return this.storage.getItem(key, true);
|
|
}
|
|
setDataToLocalStorage(key, data) {
|
|
this.storage.setItem(key, data);
|
|
}
|
|
setMetaData() {
|
|
let dataToStore = this.processData(
|
|
{
|
|
keys: this.allKeys
|
|
},
|
|
true
|
|
);
|
|
this.setDataToLocalStorage(this.getMetaKey(), dataToStore);
|
|
}
|
|
getMetaData() {
|
|
return this.get(this.getMetaKey(), true) || {};
|
|
}
|
|
getMetaKey() {
|
|
return this.metaKey + (this.config.encryptionNamespace ? "__" + this.config.encryptionNamespace : "");
|
|
}
|
|
resetAllKeys() {
|
|
this.allKeys = [];
|
|
return [];
|
|
}
|
|
processData(data, isAllKeysData) {
|
|
if (data === null || data === void 0 || data === "") {
|
|
return "";
|
|
}
|
|
let jsonData;
|
|
try {
|
|
jsonData = JSON.stringify(data);
|
|
} catch (err) {
|
|
throw new Error("Could not stringify data", err);
|
|
}
|
|
let encodedData = jsonData;
|
|
if (this._isBase64 || isAllKeysData) {
|
|
encodedData = _Base64__WEBPACK_IMPORTED_MODULE_8__["default"].encode(jsonData);
|
|
} else {
|
|
const encryptor = encryptors[this.getEncryptionType()];
|
|
if (encryptor) {
|
|
encodedData = encryptor.encrypt(jsonData, this.encryptionSecret);
|
|
}
|
|
encodedData = encodedData && encodedData.toString();
|
|
}
|
|
let compressedData = encodedData;
|
|
if (this._isCompression || isAllKeysData) {
|
|
compressedData = this.LZString.compressToUTF16(encodedData);
|
|
}
|
|
return compressedData;
|
|
}
|
|
// PUBLIC APIs
|
|
getAllKeys() {
|
|
let data = this.getMetaData();
|
|
return _utils__WEBPACK_IMPORTED_MODULE_2__["default"].extractKeyNames(data) || [];
|
|
}
|
|
get(key, isAllKeysData) {
|
|
let decodedData = "";
|
|
let jsonData = "";
|
|
if (!_utils__WEBPACK_IMPORTED_MODULE_2__["default"].is(key)) {
|
|
_utils__WEBPACK_IMPORTED_MODULE_2__["default"].warn(
|
|
_constants__WEBPACK_IMPORTED_MODULE_0__["default"].WarningEnum.KEY_NOT_PROVIDED
|
|
);
|
|
return jsonData;
|
|
}
|
|
let data = this.getDataFromLocalStorage(key);
|
|
if (!data) {
|
|
return jsonData;
|
|
}
|
|
let deCompressedData = data;
|
|
if (this._isCompression || isAllKeysData) {
|
|
deCompressedData = this.LZString.decompressFromUTF16(data);
|
|
}
|
|
decodedData = deCompressedData;
|
|
if (this._isBase64 || isAllKeysData) {
|
|
decodedData = _Base64__WEBPACK_IMPORTED_MODULE_8__["default"].decode(deCompressedData);
|
|
} else {
|
|
this.getEncryptionSecret(key);
|
|
const encryptor = encryptors[this.getEncryptionType()];
|
|
if (encryptor) {
|
|
const bytes = encryptor.decrypt(deCompressedData.toString(), this.encryptionSecret);
|
|
if (bytes) {
|
|
decodedData = bytes.toString(_enc_utf8__WEBPACK_IMPORTED_MODULE_1__["default"]._Utf8);
|
|
}
|
|
}
|
|
}
|
|
try {
|
|
jsonData = JSON.parse(decodedData);
|
|
} catch (err) {
|
|
throw new Error("Could not parse JSON", err);
|
|
}
|
|
return jsonData;
|
|
}
|
|
set(key, data) {
|
|
let dataToStore = "";
|
|
if (!_utils__WEBPACK_IMPORTED_MODULE_2__["default"].is(key)) {
|
|
_utils__WEBPACK_IMPORTED_MODULE_2__["default"].warn(
|
|
_constants__WEBPACK_IMPORTED_MODULE_0__["default"].WarningEnum.KEY_NOT_PROVIDED
|
|
);
|
|
return;
|
|
}
|
|
this.getEncryptionSecret(key);
|
|
if (!(String(key) === String(this.metaKey))) {
|
|
if (!_utils__WEBPACK_IMPORTED_MODULE_2__["default"].isKeyPresent(this.allKeys, key)) {
|
|
this.allKeys.push({
|
|
k: key,
|
|
s: this.encryptionSecret
|
|
});
|
|
this.setMetaData();
|
|
}
|
|
}
|
|
dataToStore = this.processData(data);
|
|
this.setDataToLocalStorage(key, dataToStore);
|
|
}
|
|
remove(key) {
|
|
if (!_utils__WEBPACK_IMPORTED_MODULE_2__["default"].is(key)) {
|
|
_utils__WEBPACK_IMPORTED_MODULE_2__["default"].warn(
|
|
_constants__WEBPACK_IMPORTED_MODULE_0__["default"].WarningEnum.KEY_NOT_PROVIDED
|
|
);
|
|
return;
|
|
}
|
|
if (key === this.metaKey && this.getAllKeys().length) {
|
|
_utils__WEBPACK_IMPORTED_MODULE_2__["default"].warn(
|
|
_constants__WEBPACK_IMPORTED_MODULE_0__["default"].WarningEnum.META_KEY_REMOVE
|
|
);
|
|
return;
|
|
}
|
|
if (_utils__WEBPACK_IMPORTED_MODULE_2__["default"].isKeyPresent(this.allKeys, key)) {
|
|
_utils__WEBPACK_IMPORTED_MODULE_2__["default"].removeFromKeysList(this.allKeys, key);
|
|
this.setMetaData();
|
|
}
|
|
this.storage.removeItem(key);
|
|
}
|
|
removeAll() {
|
|
let keys = this.getAllKeys();
|
|
for (let i = 0; i < keys.length; i++) {
|
|
this.storage.removeItem(keys[i]);
|
|
}
|
|
this.storage.removeItem(this.metaKey);
|
|
this.resetAllKeys();
|
|
}
|
|
clear() {
|
|
this.storage.clear();
|
|
this.resetAllKeys();
|
|
}
|
|
}
|
|
}
|
|
),
|
|
/***/
|
|
"./src/WordArray.js": (
|
|
/*!**************************!*\
|
|
!*** ./src/WordArray.js ***!
|
|
\**************************/
|
|
/***/
|
|
(__unused_webpack_module, __webpack_exports__2, __webpack_require__2) => {
|
|
"use strict";
|
|
__webpack_require__2.r(__webpack_exports__2);
|
|
__webpack_require__2.d(__webpack_exports__2, {
|
|
/* harmony export */
|
|
default: () => __WEBPACK_DEFAULT_EXPORT__
|
|
/* harmony export */
|
|
});
|
|
let CryptoJSWordArray = {
|
|
random: function(nBytes) {
|
|
let words = [];
|
|
let r = function(mw) {
|
|
let mz = 987654321;
|
|
let mask = 4294967295;
|
|
return function() {
|
|
mz = 36969 * (mz & 65535) + (mz >> 16) & mask;
|
|
mw = 18e3 * (mw & 65535) + (mw >> 16) & mask;
|
|
let result = (mz << 16) + mw & mask;
|
|
result /= 4294967296;
|
|
result += 0.5;
|
|
return result * (Math.random() > 0.5 ? 1 : -1);
|
|
};
|
|
};
|
|
for (let i = 0, rcache; i < nBytes; i += 4) {
|
|
let _r = r((rcache || Math.random()) * 4294967296);
|
|
rcache = _r() * 987654071;
|
|
words.push(_r() * 4294967296 | 0);
|
|
}
|
|
return new CryptoJSWordArray.Set(words, nBytes);
|
|
},
|
|
Set: function(words, sigBytes) {
|
|
words = this.words = words || [];
|
|
if (sigBytes !== void 0) {
|
|
this.sigBytes = sigBytes;
|
|
} else {
|
|
this.sigBytes = words.length * 8;
|
|
}
|
|
}
|
|
};
|
|
const __WEBPACK_DEFAULT_EXPORT__ = CryptoJSWordArray;
|
|
}
|
|
),
|
|
/***/
|
|
"./src/constants.js": (
|
|
/*!**************************!*\
|
|
!*** ./src/constants.js ***!
|
|
\**************************/
|
|
/***/
|
|
(__unused_webpack_module, __webpack_exports__2, __webpack_require__2) => {
|
|
"use strict";
|
|
__webpack_require__2.r(__webpack_exports__2);
|
|
__webpack_require__2.d(__webpack_exports__2, {
|
|
/* harmony export */
|
|
default: () => __WEBPACK_DEFAULT_EXPORT__
|
|
/* harmony export */
|
|
});
|
|
const WarningEnum = {
|
|
KEY_NOT_PROVIDED: "keyNotProvided",
|
|
META_KEY_REMOVE: "metaKeyRemove",
|
|
DEFAULT_TEXT: "defaultText"
|
|
};
|
|
const WarningTypes = {};
|
|
WarningTypes[WarningEnum.KEY_NOT_PROVIDED] = "Secure LS: Key not provided. Aborting operation!";
|
|
WarningTypes[WarningEnum.META_KEY_REMOVE] = `Secure LS: Meta key can not be removed
|
|
unless all keys created by Secure LS are removed!`;
|
|
WarningTypes[WarningEnum.DEFAULT_TEXT] = `Unexpected output`;
|
|
const constants = {
|
|
WarningEnum,
|
|
WarningTypes,
|
|
EncrytionTypes: {
|
|
BASE64: "base64",
|
|
AES: "aes",
|
|
DES: "des",
|
|
RABBIT: "rabbit",
|
|
RC4: "rc4"
|
|
},
|
|
metaKey: "_secure__ls__metadata",
|
|
secretPhrase: "s3cr3t$#@135^&*246"
|
|
};
|
|
const __WEBPACK_DEFAULT_EXPORT__ = constants;
|
|
}
|
|
),
|
|
/***/
|
|
"./src/enc-utf8.js": (
|
|
/*!*************************!*\
|
|
!*** ./src/enc-utf8.js ***!
|
|
\*************************/
|
|
/***/
|
|
(__unused_webpack_module, __webpack_exports__2, __webpack_require__2) => {
|
|
"use strict";
|
|
__webpack_require__2.r(__webpack_exports__2);
|
|
__webpack_require__2.d(__webpack_exports__2, {
|
|
/* harmony export */
|
|
default: () => __WEBPACK_DEFAULT_EXPORT__
|
|
/* harmony export */
|
|
});
|
|
const enc = {
|
|
Latin1: {
|
|
stringify: (wordArray) => {
|
|
let words = wordArray.words;
|
|
let sigBytes = wordArray.sigBytes;
|
|
let latin1Chars = [], i, bite;
|
|
for (i = 0; i < sigBytes; i++) {
|
|
bite = words[i >>> 2] >>> 24 - i % 4 * 8 & 255;
|
|
latin1Chars.push(String.fromCharCode(bite));
|
|
}
|
|
return latin1Chars.join("");
|
|
}
|
|
},
|
|
_Utf8: {
|
|
stringify: (wordArray) => {
|
|
try {
|
|
return decodeURIComponent(escape(enc.Latin1.stringify(wordArray)));
|
|
} catch (err) {
|
|
throw new Error("Malformed UTF-8 data", err);
|
|
}
|
|
}
|
|
}
|
|
};
|
|
const __WEBPACK_DEFAULT_EXPORT__ = enc;
|
|
}
|
|
),
|
|
/***/
|
|
"./src/utils.js": (
|
|
/*!**********************!*\
|
|
!*** ./src/utils.js ***!
|
|
\**********************/
|
|
/***/
|
|
(__unused_webpack_module, __webpack_exports__2, __webpack_require__2) => {
|
|
"use strict";
|
|
__webpack_require__2.r(__webpack_exports__2);
|
|
__webpack_require__2.d(__webpack_exports__2, {
|
|
/* harmony export */
|
|
default: () => __WEBPACK_DEFAULT_EXPORT__
|
|
/* harmony export */
|
|
});
|
|
var crypto_js_pbkdf2__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__2(
|
|
/*! crypto-js/pbkdf2 */
|
|
"./node_modules/crypto-js/pbkdf2.js"
|
|
);
|
|
var crypto_js_pbkdf2__WEBPACK_IMPORTED_MODULE_0___default = __webpack_require__2.n(crypto_js_pbkdf2__WEBPACK_IMPORTED_MODULE_0__);
|
|
var _constants__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__2(
|
|
/*! ./constants */
|
|
"./src/constants.js"
|
|
);
|
|
var _WordArray__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__2(
|
|
/*! ./WordArray */
|
|
"./src/WordArray.js"
|
|
);
|
|
const utils = {
|
|
is: (key) => !!key,
|
|
warn: (reason = _constants__WEBPACK_IMPORTED_MODULE_1__["default"].WarningEnum.DEFAULT_TEXT) => {
|
|
console.warn(_constants__WEBPACK_IMPORTED_MODULE_1__["default"].WarningTypes[reason]);
|
|
},
|
|
generateSecretKey: () => {
|
|
const salt = _WordArray__WEBPACK_IMPORTED_MODULE_2__["default"].random(128 / 8);
|
|
const key128Bits = crypto_js_pbkdf2__WEBPACK_IMPORTED_MODULE_0___default()(
|
|
_constants__WEBPACK_IMPORTED_MODULE_1__["default"].secretPhrase,
|
|
salt,
|
|
{
|
|
keySize: 128 / 32
|
|
}
|
|
);
|
|
return key128Bits.toString();
|
|
},
|
|
getObjectFromKey: (data = [], key) => {
|
|
return data.find((item) => item.k === key) || {};
|
|
},
|
|
extractKeyNames: ({ keys = [] } = {}) => {
|
|
return keys.map(({ k }) => k);
|
|
},
|
|
isKeyPresent: (allKeys = [], key) => {
|
|
return allKeys.some((item) => String(item.k) === String(key));
|
|
},
|
|
removeFromKeysList: (allKeys = [], key) => {
|
|
const index = allKeys.findIndex((item) => item.k === key);
|
|
if (index !== -1) {
|
|
allKeys.splice(index, 1);
|
|
}
|
|
return index;
|
|
}
|
|
};
|
|
const __WEBPACK_DEFAULT_EXPORT__ = utils;
|
|
}
|
|
),
|
|
/***/
|
|
"./node_modules/crypto-js/aes.js": (
|
|
/*!***************************************!*\
|
|
!*** ./node_modules/crypto-js/aes.js ***!
|
|
\***************************************/
|
|
/***/
|
|
function(module2, exports2, __webpack_require__2) {
|
|
(function(root, factory, undef) {
|
|
if (true) {
|
|
module2.exports = exports2 = factory(
|
|
__webpack_require__2(
|
|
/*! ./core */
|
|
"./node_modules/crypto-js/core.js"
|
|
),
|
|
__webpack_require__2(
|
|
/*! ./enc-base64 */
|
|
"./node_modules/crypto-js/enc-base64.js"
|
|
),
|
|
__webpack_require__2(
|
|
/*! ./md5 */
|
|
"./node_modules/crypto-js/md5.js"
|
|
),
|
|
__webpack_require__2(
|
|
/*! ./evpkdf */
|
|
"./node_modules/crypto-js/evpkdf.js"
|
|
),
|
|
__webpack_require__2(
|
|
/*! ./cipher-core */
|
|
"./node_modules/crypto-js/cipher-core.js"
|
|
)
|
|
);
|
|
} else {
|
|
}
|
|
})(this, function(CryptoJS) {
|
|
(function() {
|
|
var C = CryptoJS;
|
|
var C_lib = C.lib;
|
|
var BlockCipher = C_lib.BlockCipher;
|
|
var C_algo = C.algo;
|
|
var SBOX = [];
|
|
var INV_SBOX = [];
|
|
var SUB_MIX_0 = [];
|
|
var SUB_MIX_1 = [];
|
|
var SUB_MIX_2 = [];
|
|
var SUB_MIX_3 = [];
|
|
var INV_SUB_MIX_0 = [];
|
|
var INV_SUB_MIX_1 = [];
|
|
var INV_SUB_MIX_2 = [];
|
|
var INV_SUB_MIX_3 = [];
|
|
(function() {
|
|
var d = [];
|
|
for (var i = 0; i < 256; i++) {
|
|
if (i < 128) {
|
|
d[i] = i << 1;
|
|
} else {
|
|
d[i] = i << 1 ^ 283;
|
|
}
|
|
}
|
|
var x = 0;
|
|
var xi = 0;
|
|
for (var i = 0; i < 256; i++) {
|
|
var sx = xi ^ xi << 1 ^ xi << 2 ^ xi << 3 ^ xi << 4;
|
|
sx = sx >>> 8 ^ sx & 255 ^ 99;
|
|
SBOX[x] = sx;
|
|
INV_SBOX[sx] = x;
|
|
var x2 = d[x];
|
|
var x4 = d[x2];
|
|
var x8 = d[x4];
|
|
var t = d[sx] * 257 ^ sx * 16843008;
|
|
SUB_MIX_0[x] = t << 24 | t >>> 8;
|
|
SUB_MIX_1[x] = t << 16 | t >>> 16;
|
|
SUB_MIX_2[x] = t << 8 | t >>> 24;
|
|
SUB_MIX_3[x] = t;
|
|
var t = x8 * 16843009 ^ x4 * 65537 ^ x2 * 257 ^ x * 16843008;
|
|
INV_SUB_MIX_0[sx] = t << 24 | t >>> 8;
|
|
INV_SUB_MIX_1[sx] = t << 16 | t >>> 16;
|
|
INV_SUB_MIX_2[sx] = t << 8 | t >>> 24;
|
|
INV_SUB_MIX_3[sx] = t;
|
|
if (!x) {
|
|
x = xi = 1;
|
|
} else {
|
|
x = x2 ^ d[d[d[x8 ^ x2]]];
|
|
xi ^= d[d[xi]];
|
|
}
|
|
}
|
|
})();
|
|
var RCON = [0, 1, 2, 4, 8, 16, 32, 64, 128, 27, 54];
|
|
var AES = C_algo.AES = BlockCipher.extend({
|
|
_doReset: function() {
|
|
var t;
|
|
if (this._nRounds && this._keyPriorReset === this._key) {
|
|
return;
|
|
}
|
|
var key = this._keyPriorReset = this._key;
|
|
var keyWords = key.words;
|
|
var keySize = key.sigBytes / 4;
|
|
var nRounds = this._nRounds = keySize + 6;
|
|
var ksRows = (nRounds + 1) * 4;
|
|
var keySchedule = this._keySchedule = [];
|
|
for (var ksRow = 0; ksRow < ksRows; ksRow++) {
|
|
if (ksRow < keySize) {
|
|
keySchedule[ksRow] = keyWords[ksRow];
|
|
} else {
|
|
t = keySchedule[ksRow - 1];
|
|
if (!(ksRow % keySize)) {
|
|
t = t << 8 | t >>> 24;
|
|
t = SBOX[t >>> 24] << 24 | SBOX[t >>> 16 & 255] << 16 | SBOX[t >>> 8 & 255] << 8 | SBOX[t & 255];
|
|
t ^= RCON[ksRow / keySize | 0] << 24;
|
|
} else if (keySize > 6 && ksRow % keySize == 4) {
|
|
t = SBOX[t >>> 24] << 24 | SBOX[t >>> 16 & 255] << 16 | SBOX[t >>> 8 & 255] << 8 | SBOX[t & 255];
|
|
}
|
|
keySchedule[ksRow] = keySchedule[ksRow - keySize] ^ t;
|
|
}
|
|
}
|
|
var invKeySchedule = this._invKeySchedule = [];
|
|
for (var invKsRow = 0; invKsRow < ksRows; invKsRow++) {
|
|
var ksRow = ksRows - invKsRow;
|
|
if (invKsRow % 4) {
|
|
var t = keySchedule[ksRow];
|
|
} else {
|
|
var t = keySchedule[ksRow - 4];
|
|
}
|
|
if (invKsRow < 4 || ksRow <= 4) {
|
|
invKeySchedule[invKsRow] = t;
|
|
} else {
|
|
invKeySchedule[invKsRow] = INV_SUB_MIX_0[SBOX[t >>> 24]] ^ INV_SUB_MIX_1[SBOX[t >>> 16 & 255]] ^ INV_SUB_MIX_2[SBOX[t >>> 8 & 255]] ^ INV_SUB_MIX_3[SBOX[t & 255]];
|
|
}
|
|
}
|
|
},
|
|
encryptBlock: function(M, offset) {
|
|
this._doCryptBlock(M, offset, this._keySchedule, SUB_MIX_0, SUB_MIX_1, SUB_MIX_2, SUB_MIX_3, SBOX);
|
|
},
|
|
decryptBlock: function(M, offset) {
|
|
var t = M[offset + 1];
|
|
M[offset + 1] = M[offset + 3];
|
|
M[offset + 3] = t;
|
|
this._doCryptBlock(
|
|
M,
|
|
offset,
|
|
this._invKeySchedule,
|
|
INV_SUB_MIX_0,
|
|
INV_SUB_MIX_1,
|
|
INV_SUB_MIX_2,
|
|
INV_SUB_MIX_3,
|
|
INV_SBOX
|
|
);
|
|
var t = M[offset + 1];
|
|
M[offset + 1] = M[offset + 3];
|
|
M[offset + 3] = t;
|
|
},
|
|
_doCryptBlock: function(M, offset, keySchedule, SUB_MIX_02, SUB_MIX_12, SUB_MIX_22, SUB_MIX_32, SBOX2) {
|
|
var nRounds = this._nRounds;
|
|
var s0 = M[offset] ^ keySchedule[0];
|
|
var s1 = M[offset + 1] ^ keySchedule[1];
|
|
var s2 = M[offset + 2] ^ keySchedule[2];
|
|
var s3 = M[offset + 3] ^ keySchedule[3];
|
|
var ksRow = 4;
|
|
for (var round = 1; round < nRounds; round++) {
|
|
var t0 = SUB_MIX_02[s0 >>> 24] ^ SUB_MIX_12[s1 >>> 16 & 255] ^ SUB_MIX_22[s2 >>> 8 & 255] ^ SUB_MIX_32[s3 & 255] ^ keySchedule[ksRow++];
|
|
var t1 = SUB_MIX_02[s1 >>> 24] ^ SUB_MIX_12[s2 >>> 16 & 255] ^ SUB_MIX_22[s3 >>> 8 & 255] ^ SUB_MIX_32[s0 & 255] ^ keySchedule[ksRow++];
|
|
var t2 = SUB_MIX_02[s2 >>> 24] ^ SUB_MIX_12[s3 >>> 16 & 255] ^ SUB_MIX_22[s0 >>> 8 & 255] ^ SUB_MIX_32[s1 & 255] ^ keySchedule[ksRow++];
|
|
var t3 = SUB_MIX_02[s3 >>> 24] ^ SUB_MIX_12[s0 >>> 16 & 255] ^ SUB_MIX_22[s1 >>> 8 & 255] ^ SUB_MIX_32[s2 & 255] ^ keySchedule[ksRow++];
|
|
s0 = t0;
|
|
s1 = t1;
|
|
s2 = t2;
|
|
s3 = t3;
|
|
}
|
|
var t0 = (SBOX2[s0 >>> 24] << 24 | SBOX2[s1 >>> 16 & 255] << 16 | SBOX2[s2 >>> 8 & 255] << 8 | SBOX2[s3 & 255]) ^ keySchedule[ksRow++];
|
|
var t1 = (SBOX2[s1 >>> 24] << 24 | SBOX2[s2 >>> 16 & 255] << 16 | SBOX2[s3 >>> 8 & 255] << 8 | SBOX2[s0 & 255]) ^ keySchedule[ksRow++];
|
|
var t2 = (SBOX2[s2 >>> 24] << 24 | SBOX2[s3 >>> 16 & 255] << 16 | SBOX2[s0 >>> 8 & 255] << 8 | SBOX2[s1 & 255]) ^ keySchedule[ksRow++];
|
|
var t3 = (SBOX2[s3 >>> 24] << 24 | SBOX2[s0 >>> 16 & 255] << 16 | SBOX2[s1 >>> 8 & 255] << 8 | SBOX2[s2 & 255]) ^ keySchedule[ksRow++];
|
|
M[offset] = t0;
|
|
M[offset + 1] = t1;
|
|
M[offset + 2] = t2;
|
|
M[offset + 3] = t3;
|
|
},
|
|
keySize: 256 / 32
|
|
});
|
|
C.AES = BlockCipher._createHelper(AES);
|
|
})();
|
|
return CryptoJS.AES;
|
|
});
|
|
}
|
|
),
|
|
/***/
|
|
"./node_modules/crypto-js/cipher-core.js": (
|
|
/*!***********************************************!*\
|
|
!*** ./node_modules/crypto-js/cipher-core.js ***!
|
|
\***********************************************/
|
|
/***/
|
|
function(module2, exports2, __webpack_require__2) {
|
|
(function(root, factory, undef) {
|
|
if (true) {
|
|
module2.exports = exports2 = factory(
|
|
__webpack_require__2(
|
|
/*! ./core */
|
|
"./node_modules/crypto-js/core.js"
|
|
),
|
|
__webpack_require__2(
|
|
/*! ./evpkdf */
|
|
"./node_modules/crypto-js/evpkdf.js"
|
|
)
|
|
);
|
|
} else {
|
|
}
|
|
})(this, function(CryptoJS) {
|
|
CryptoJS.lib.Cipher || function(undefined2) {
|
|
var C = CryptoJS;
|
|
var C_lib = C.lib;
|
|
var Base = C_lib.Base;
|
|
var WordArray = C_lib.WordArray;
|
|
var BufferedBlockAlgorithm = C_lib.BufferedBlockAlgorithm;
|
|
var C_enc = C.enc;
|
|
var Utf8 = C_enc.Utf8;
|
|
var Base64 = C_enc.Base64;
|
|
var C_algo = C.algo;
|
|
var EvpKDF = C_algo.EvpKDF;
|
|
var Cipher = C_lib.Cipher = BufferedBlockAlgorithm.extend({
|
|
/**
|
|
* Configuration options.
|
|
*
|
|
* @property {WordArray} iv The IV to use for this operation.
|
|
*/
|
|
cfg: Base.extend(),
|
|
/**
|
|
* Creates this cipher in encryption mode.
|
|
*
|
|
* @param {WordArray} key The key.
|
|
* @param {Object} cfg (Optional) The configuration options to use for this operation.
|
|
*
|
|
* @return {Cipher} A cipher instance.
|
|
*
|
|
* @static
|
|
*
|
|
* @example
|
|
*
|
|
* var cipher = CryptoJS.algo.AES.createEncryptor(keyWordArray, { iv: ivWordArray });
|
|
*/
|
|
createEncryptor: function(key, cfg) {
|
|
return this.create(this._ENC_XFORM_MODE, key, cfg);
|
|
},
|
|
/**
|
|
* Creates this cipher in decryption mode.
|
|
*
|
|
* @param {WordArray} key The key.
|
|
* @param {Object} cfg (Optional) The configuration options to use for this operation.
|
|
*
|
|
* @return {Cipher} A cipher instance.
|
|
*
|
|
* @static
|
|
*
|
|
* @example
|
|
*
|
|
* var cipher = CryptoJS.algo.AES.createDecryptor(keyWordArray, { iv: ivWordArray });
|
|
*/
|
|
createDecryptor: function(key, cfg) {
|
|
return this.create(this._DEC_XFORM_MODE, key, cfg);
|
|
},
|
|
/**
|
|
* Initializes a newly created cipher.
|
|
*
|
|
* @param {number} xformMode Either the encryption or decryption transormation mode constant.
|
|
* @param {WordArray} key The key.
|
|
* @param {Object} cfg (Optional) The configuration options to use for this operation.
|
|
*
|
|
* @example
|
|
*
|
|
* var cipher = CryptoJS.algo.AES.create(CryptoJS.algo.AES._ENC_XFORM_MODE, keyWordArray, { iv: ivWordArray });
|
|
*/
|
|
init: function(xformMode, key, cfg) {
|
|
this.cfg = this.cfg.extend(cfg);
|
|
this._xformMode = xformMode;
|
|
this._key = key;
|
|
this.reset();
|
|
},
|
|
/**
|
|
* Resets this cipher to its initial state.
|
|
*
|
|
* @example
|
|
*
|
|
* cipher.reset();
|
|
*/
|
|
reset: function() {
|
|
BufferedBlockAlgorithm.reset.call(this);
|
|
this._doReset();
|
|
},
|
|
/**
|
|
* Adds data to be encrypted or decrypted.
|
|
*
|
|
* @param {WordArray|string} dataUpdate The data to encrypt or decrypt.
|
|
*
|
|
* @return {WordArray} The data after processing.
|
|
*
|
|
* @example
|
|
*
|
|
* var encrypted = cipher.process('data');
|
|
* var encrypted = cipher.process(wordArray);
|
|
*/
|
|
process: function(dataUpdate) {
|
|
this._append(dataUpdate);
|
|
return this._process();
|
|
},
|
|
/**
|
|
* Finalizes the encryption or decryption process.
|
|
* Note that the finalize operation is effectively a destructive, read-once operation.
|
|
*
|
|
* @param {WordArray|string} dataUpdate The final data to encrypt or decrypt.
|
|
*
|
|
* @return {WordArray} The data after final processing.
|
|
*
|
|
* @example
|
|
*
|
|
* var encrypted = cipher.finalize();
|
|
* var encrypted = cipher.finalize('data');
|
|
* var encrypted = cipher.finalize(wordArray);
|
|
*/
|
|
finalize: function(dataUpdate) {
|
|
if (dataUpdate) {
|
|
this._append(dataUpdate);
|
|
}
|
|
var finalProcessedData = this._doFinalize();
|
|
return finalProcessedData;
|
|
},
|
|
keySize: 128 / 32,
|
|
ivSize: 128 / 32,
|
|
_ENC_XFORM_MODE: 1,
|
|
_DEC_XFORM_MODE: 2,
|
|
/**
|
|
* Creates shortcut functions to a cipher's object interface.
|
|
*
|
|
* @param {Cipher} cipher The cipher to create a helper for.
|
|
*
|
|
* @return {Object} An object with encrypt and decrypt shortcut functions.
|
|
*
|
|
* @static
|
|
*
|
|
* @example
|
|
*
|
|
* var AES = CryptoJS.lib.Cipher._createHelper(CryptoJS.algo.AES);
|
|
*/
|
|
_createHelper: /* @__PURE__ */ function() {
|
|
function selectCipherStrategy(key) {
|
|
if (typeof key == "string") {
|
|
return PasswordBasedCipher;
|
|
} else {
|
|
return SerializableCipher;
|
|
}
|
|
}
|
|
return function(cipher) {
|
|
return {
|
|
encrypt: function(message, key, cfg) {
|
|
return selectCipherStrategy(key).encrypt(cipher, message, key, cfg);
|
|
},
|
|
decrypt: function(ciphertext, key, cfg) {
|
|
return selectCipherStrategy(key).decrypt(cipher, ciphertext, key, cfg);
|
|
}
|
|
};
|
|
};
|
|
}()
|
|
});
|
|
var StreamCipher = C_lib.StreamCipher = Cipher.extend({
|
|
_doFinalize: function() {
|
|
var finalProcessedBlocks = this._process(true);
|
|
return finalProcessedBlocks;
|
|
},
|
|
blockSize: 1
|
|
});
|
|
var C_mode = C.mode = {};
|
|
var BlockCipherMode = C_lib.BlockCipherMode = Base.extend({
|
|
/**
|
|
* Creates this mode for encryption.
|
|
*
|
|
* @param {Cipher} cipher A block cipher instance.
|
|
* @param {Array} iv The IV words.
|
|
*
|
|
* @static
|
|
*
|
|
* @example
|
|
*
|
|
* var mode = CryptoJS.mode.CBC.createEncryptor(cipher, iv.words);
|
|
*/
|
|
createEncryptor: function(cipher, iv) {
|
|
return this.Encryptor.create(cipher, iv);
|
|
},
|
|
/**
|
|
* Creates this mode for decryption.
|
|
*
|
|
* @param {Cipher} cipher A block cipher instance.
|
|
* @param {Array} iv The IV words.
|
|
*
|
|
* @static
|
|
*
|
|
* @example
|
|
*
|
|
* var mode = CryptoJS.mode.CBC.createDecryptor(cipher, iv.words);
|
|
*/
|
|
createDecryptor: function(cipher, iv) {
|
|
return this.Decryptor.create(cipher, iv);
|
|
},
|
|
/**
|
|
* Initializes a newly created mode.
|
|
*
|
|
* @param {Cipher} cipher A block cipher instance.
|
|
* @param {Array} iv The IV words.
|
|
*
|
|
* @example
|
|
*
|
|
* var mode = CryptoJS.mode.CBC.Encryptor.create(cipher, iv.words);
|
|
*/
|
|
init: function(cipher, iv) {
|
|
this._cipher = cipher;
|
|
this._iv = iv;
|
|
}
|
|
});
|
|
var CBC = C_mode.CBC = function() {
|
|
var CBC2 = BlockCipherMode.extend();
|
|
CBC2.Encryptor = CBC2.extend({
|
|
/**
|
|
* Processes the data block at offset.
|
|
*
|
|
* @param {Array} words The data words to operate on.
|
|
* @param {number} offset The offset where the block starts.
|
|
*
|
|
* @example
|
|
*
|
|
* mode.processBlock(data.words, offset);
|
|
*/
|
|
processBlock: function(words, offset) {
|
|
var cipher = this._cipher;
|
|
var blockSize = cipher.blockSize;
|
|
xorBlock.call(this, words, offset, blockSize);
|
|
cipher.encryptBlock(words, offset);
|
|
this._prevBlock = words.slice(offset, offset + blockSize);
|
|
}
|
|
});
|
|
CBC2.Decryptor = CBC2.extend({
|
|
/**
|
|
* Processes the data block at offset.
|
|
*
|
|
* @param {Array} words The data words to operate on.
|
|
* @param {number} offset The offset where the block starts.
|
|
*
|
|
* @example
|
|
*
|
|
* mode.processBlock(data.words, offset);
|
|
*/
|
|
processBlock: function(words, offset) {
|
|
var cipher = this._cipher;
|
|
var blockSize = cipher.blockSize;
|
|
var thisBlock = words.slice(offset, offset + blockSize);
|
|
cipher.decryptBlock(words, offset);
|
|
xorBlock.call(this, words, offset, blockSize);
|
|
this._prevBlock = thisBlock;
|
|
}
|
|
});
|
|
function xorBlock(words, offset, blockSize) {
|
|
var block;
|
|
var iv = this._iv;
|
|
if (iv) {
|
|
block = iv;
|
|
this._iv = undefined2;
|
|
} else {
|
|
block = this._prevBlock;
|
|
}
|
|
for (var i = 0; i < blockSize; i++) {
|
|
words[offset + i] ^= block[i];
|
|
}
|
|
}
|
|
return CBC2;
|
|
}();
|
|
var C_pad = C.pad = {};
|
|
var Pkcs7 = C_pad.Pkcs7 = {
|
|
/**
|
|
* Pads data using the algorithm defined in PKCS #5/7.
|
|
*
|
|
* @param {WordArray} data The data to pad.
|
|
* @param {number} blockSize The multiple that the data should be padded to.
|
|
*
|
|
* @static
|
|
*
|
|
* @example
|
|
*
|
|
* CryptoJS.pad.Pkcs7.pad(wordArray, 4);
|
|
*/
|
|
pad: function(data, blockSize) {
|
|
var blockSizeBytes = blockSize * 4;
|
|
var nPaddingBytes = blockSizeBytes - data.sigBytes % blockSizeBytes;
|
|
var paddingWord = nPaddingBytes << 24 | nPaddingBytes << 16 | nPaddingBytes << 8 | nPaddingBytes;
|
|
var paddingWords = [];
|
|
for (var i = 0; i < nPaddingBytes; i += 4) {
|
|
paddingWords.push(paddingWord);
|
|
}
|
|
var padding = WordArray.create(paddingWords, nPaddingBytes);
|
|
data.concat(padding);
|
|
},
|
|
/**
|
|
* Unpads data that had been padded using the algorithm defined in PKCS #5/7.
|
|
*
|
|
* @param {WordArray} data The data to unpad.
|
|
*
|
|
* @static
|
|
*
|
|
* @example
|
|
*
|
|
* CryptoJS.pad.Pkcs7.unpad(wordArray);
|
|
*/
|
|
unpad: function(data) {
|
|
var nPaddingBytes = data.words[data.sigBytes - 1 >>> 2] & 255;
|
|
data.sigBytes -= nPaddingBytes;
|
|
}
|
|
};
|
|
var BlockCipher = C_lib.BlockCipher = Cipher.extend({
|
|
/**
|
|
* Configuration options.
|
|
*
|
|
* @property {Mode} mode The block mode to use. Default: CBC
|
|
* @property {Padding} padding The padding strategy to use. Default: Pkcs7
|
|
*/
|
|
cfg: Cipher.cfg.extend({
|
|
mode: CBC,
|
|
padding: Pkcs7
|
|
}),
|
|
reset: function() {
|
|
var modeCreator;
|
|
Cipher.reset.call(this);
|
|
var cfg = this.cfg;
|
|
var iv = cfg.iv;
|
|
var mode = cfg.mode;
|
|
if (this._xformMode == this._ENC_XFORM_MODE) {
|
|
modeCreator = mode.createEncryptor;
|
|
} else {
|
|
modeCreator = mode.createDecryptor;
|
|
this._minBufferSize = 1;
|
|
}
|
|
if (this._mode && this._mode.__creator == modeCreator) {
|
|
this._mode.init(this, iv && iv.words);
|
|
} else {
|
|
this._mode = modeCreator.call(mode, this, iv && iv.words);
|
|
this._mode.__creator = modeCreator;
|
|
}
|
|
},
|
|
_doProcessBlock: function(words, offset) {
|
|
this._mode.processBlock(words, offset);
|
|
},
|
|
_doFinalize: function() {
|
|
var finalProcessedBlocks;
|
|
var padding = this.cfg.padding;
|
|
if (this._xformMode == this._ENC_XFORM_MODE) {
|
|
padding.pad(this._data, this.blockSize);
|
|
finalProcessedBlocks = this._process(true);
|
|
} else {
|
|
finalProcessedBlocks = this._process(true);
|
|
padding.unpad(finalProcessedBlocks);
|
|
}
|
|
return finalProcessedBlocks;
|
|
},
|
|
blockSize: 128 / 32
|
|
});
|
|
var CipherParams = C_lib.CipherParams = Base.extend({
|
|
/**
|
|
* Initializes a newly created cipher params object.
|
|
*
|
|
* @param {Object} cipherParams An object with any of the possible cipher parameters.
|
|
*
|
|
* @example
|
|
*
|
|
* var cipherParams = CryptoJS.lib.CipherParams.create({
|
|
* ciphertext: ciphertextWordArray,
|
|
* key: keyWordArray,
|
|
* iv: ivWordArray,
|
|
* salt: saltWordArray,
|
|
* algorithm: CryptoJS.algo.AES,
|
|
* mode: CryptoJS.mode.CBC,
|
|
* padding: CryptoJS.pad.PKCS7,
|
|
* blockSize: 4,
|
|
* formatter: CryptoJS.format.OpenSSL
|
|
* });
|
|
*/
|
|
init: function(cipherParams) {
|
|
this.mixIn(cipherParams);
|
|
},
|
|
/**
|
|
* Converts this cipher params object to a string.
|
|
*
|
|
* @param {Format} formatter (Optional) The formatting strategy to use.
|
|
*
|
|
* @return {string} The stringified cipher params.
|
|
*
|
|
* @throws Error If neither the formatter nor the default formatter is set.
|
|
*
|
|
* @example
|
|
*
|
|
* var string = cipherParams + '';
|
|
* var string = cipherParams.toString();
|
|
* var string = cipherParams.toString(CryptoJS.format.OpenSSL);
|
|
*/
|
|
toString: function(formatter) {
|
|
return (formatter || this.formatter).stringify(this);
|
|
}
|
|
});
|
|
var C_format = C.format = {};
|
|
var OpenSSLFormatter = C_format.OpenSSL = {
|
|
/**
|
|
* Converts a cipher params object to an OpenSSL-compatible string.
|
|
*
|
|
* @param {CipherParams} cipherParams The cipher params object.
|
|
*
|
|
* @return {string} The OpenSSL-compatible string.
|
|
*
|
|
* @static
|
|
*
|
|
* @example
|
|
*
|
|
* var openSSLString = CryptoJS.format.OpenSSL.stringify(cipherParams);
|
|
*/
|
|
stringify: function(cipherParams) {
|
|
var wordArray;
|
|
var ciphertext = cipherParams.ciphertext;
|
|
var salt = cipherParams.salt;
|
|
if (salt) {
|
|
wordArray = WordArray.create([1398893684, 1701076831]).concat(salt).concat(ciphertext);
|
|
} else {
|
|
wordArray = ciphertext;
|
|
}
|
|
return wordArray.toString(Base64);
|
|
},
|
|
/**
|
|
* Converts an OpenSSL-compatible string to a cipher params object.
|
|
*
|
|
* @param {string} openSSLStr The OpenSSL-compatible string.
|
|
*
|
|
* @return {CipherParams} The cipher params object.
|
|
*
|
|
* @static
|
|
*
|
|
* @example
|
|
*
|
|
* var cipherParams = CryptoJS.format.OpenSSL.parse(openSSLString);
|
|
*/
|
|
parse: function(openSSLStr) {
|
|
var salt;
|
|
var ciphertext = Base64.parse(openSSLStr);
|
|
var ciphertextWords = ciphertext.words;
|
|
if (ciphertextWords[0] == 1398893684 && ciphertextWords[1] == 1701076831) {
|
|
salt = WordArray.create(ciphertextWords.slice(2, 4));
|
|
ciphertextWords.splice(0, 4);
|
|
ciphertext.sigBytes -= 16;
|
|
}
|
|
return CipherParams.create({ ciphertext, salt });
|
|
}
|
|
};
|
|
var SerializableCipher = C_lib.SerializableCipher = Base.extend({
|
|
/**
|
|
* Configuration options.
|
|
*
|
|
* @property {Formatter} format The formatting strategy to convert cipher param objects to and from a string. Default: OpenSSL
|
|
*/
|
|
cfg: Base.extend({
|
|
format: OpenSSLFormatter
|
|
}),
|
|
/**
|
|
* Encrypts a message.
|
|
*
|
|
* @param {Cipher} cipher The cipher algorithm to use.
|
|
* @param {WordArray|string} message The message to encrypt.
|
|
* @param {WordArray} key The key.
|
|
* @param {Object} cfg (Optional) The configuration options to use for this operation.
|
|
*
|
|
* @return {CipherParams} A cipher params object.
|
|
*
|
|
* @static
|
|
*
|
|
* @example
|
|
*
|
|
* var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key);
|
|
* var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key, { iv: iv });
|
|
* var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key, { iv: iv, format: CryptoJS.format.OpenSSL });
|
|
*/
|
|
encrypt: function(cipher, message, key, cfg) {
|
|
cfg = this.cfg.extend(cfg);
|
|
var encryptor = cipher.createEncryptor(key, cfg);
|
|
var ciphertext = encryptor.finalize(message);
|
|
var cipherCfg = encryptor.cfg;
|
|
return CipherParams.create({
|
|
ciphertext,
|
|
key,
|
|
iv: cipherCfg.iv,
|
|
algorithm: cipher,
|
|
mode: cipherCfg.mode,
|
|
padding: cipherCfg.padding,
|
|
blockSize: cipher.blockSize,
|
|
formatter: cfg.format
|
|
});
|
|
},
|
|
/**
|
|
* Decrypts serialized ciphertext.
|
|
*
|
|
* @param {Cipher} cipher The cipher algorithm to use.
|
|
* @param {CipherParams|string} ciphertext The ciphertext to decrypt.
|
|
* @param {WordArray} key The key.
|
|
* @param {Object} cfg (Optional) The configuration options to use for this operation.
|
|
*
|
|
* @return {WordArray} The plaintext.
|
|
*
|
|
* @static
|
|
*
|
|
* @example
|
|
*
|
|
* var plaintext = CryptoJS.lib.SerializableCipher.decrypt(CryptoJS.algo.AES, formattedCiphertext, key, { iv: iv, format: CryptoJS.format.OpenSSL });
|
|
* var plaintext = CryptoJS.lib.SerializableCipher.decrypt(CryptoJS.algo.AES, ciphertextParams, key, { iv: iv, format: CryptoJS.format.OpenSSL });
|
|
*/
|
|
decrypt: function(cipher, ciphertext, key, cfg) {
|
|
cfg = this.cfg.extend(cfg);
|
|
ciphertext = this._parse(ciphertext, cfg.format);
|
|
var plaintext = cipher.createDecryptor(key, cfg).finalize(ciphertext.ciphertext);
|
|
return plaintext;
|
|
},
|
|
/**
|
|
* Converts serialized ciphertext to CipherParams,
|
|
* else assumed CipherParams already and returns ciphertext unchanged.
|
|
*
|
|
* @param {CipherParams|string} ciphertext The ciphertext.
|
|
* @param {Formatter} format The formatting strategy to use to parse serialized ciphertext.
|
|
*
|
|
* @return {CipherParams} The unserialized ciphertext.
|
|
*
|
|
* @static
|
|
*
|
|
* @example
|
|
*
|
|
* var ciphertextParams = CryptoJS.lib.SerializableCipher._parse(ciphertextStringOrParams, format);
|
|
*/
|
|
_parse: function(ciphertext, format) {
|
|
if (typeof ciphertext == "string") {
|
|
return format.parse(ciphertext, this);
|
|
} else {
|
|
return ciphertext;
|
|
}
|
|
}
|
|
});
|
|
var C_kdf = C.kdf = {};
|
|
var OpenSSLKdf = C_kdf.OpenSSL = {
|
|
/**
|
|
* Derives a key and IV from a password.
|
|
*
|
|
* @param {string} password The password to derive from.
|
|
* @param {number} keySize The size in words of the key to generate.
|
|
* @param {number} ivSize The size in words of the IV to generate.
|
|
* @param {WordArray|string} salt (Optional) A 64-bit salt to use. If omitted, a salt will be generated randomly.
|
|
*
|
|
* @return {CipherParams} A cipher params object with the key, IV, and salt.
|
|
*
|
|
* @static
|
|
*
|
|
* @example
|
|
*
|
|
* var derivedParams = CryptoJS.kdf.OpenSSL.execute('Password', 256/32, 128/32);
|
|
* var derivedParams = CryptoJS.kdf.OpenSSL.execute('Password', 256/32, 128/32, 'saltsalt');
|
|
*/
|
|
execute: function(password, keySize, ivSize, salt, hasher) {
|
|
if (!salt) {
|
|
salt = WordArray.random(64 / 8);
|
|
}
|
|
if (!hasher) {
|
|
var key = EvpKDF.create({ keySize: keySize + ivSize }).compute(password, salt);
|
|
} else {
|
|
var key = EvpKDF.create({ keySize: keySize + ivSize, hasher }).compute(password, salt);
|
|
}
|
|
var iv = WordArray.create(key.words.slice(keySize), ivSize * 4);
|
|
key.sigBytes = keySize * 4;
|
|
return CipherParams.create({ key, iv, salt });
|
|
}
|
|
};
|
|
var PasswordBasedCipher = C_lib.PasswordBasedCipher = SerializableCipher.extend({
|
|
/**
|
|
* Configuration options.
|
|
*
|
|
* @property {KDF} kdf The key derivation function to use to generate a key and IV from a password. Default: OpenSSL
|
|
*/
|
|
cfg: SerializableCipher.cfg.extend({
|
|
kdf: OpenSSLKdf
|
|
}),
|
|
/**
|
|
* Encrypts a message using a password.
|
|
*
|
|
* @param {Cipher} cipher The cipher algorithm to use.
|
|
* @param {WordArray|string} message The message to encrypt.
|
|
* @param {string} password The password.
|
|
* @param {Object} cfg (Optional) The configuration options to use for this operation.
|
|
*
|
|
* @return {CipherParams} A cipher params object.
|
|
*
|
|
* @static
|
|
*
|
|
* @example
|
|
*
|
|
* var ciphertextParams = CryptoJS.lib.PasswordBasedCipher.encrypt(CryptoJS.algo.AES, message, 'password');
|
|
* var ciphertextParams = CryptoJS.lib.PasswordBasedCipher.encrypt(CryptoJS.algo.AES, message, 'password', { format: CryptoJS.format.OpenSSL });
|
|
*/
|
|
encrypt: function(cipher, message, password, cfg) {
|
|
cfg = this.cfg.extend(cfg);
|
|
var derivedParams = cfg.kdf.execute(password, cipher.keySize, cipher.ivSize, cfg.salt, cfg.hasher);
|
|
cfg.iv = derivedParams.iv;
|
|
var ciphertext = SerializableCipher.encrypt.call(this, cipher, message, derivedParams.key, cfg);
|
|
ciphertext.mixIn(derivedParams);
|
|
return ciphertext;
|
|
},
|
|
/**
|
|
* Decrypts serialized ciphertext using a password.
|
|
*
|
|
* @param {Cipher} cipher The cipher algorithm to use.
|
|
* @param {CipherParams|string} ciphertext The ciphertext to decrypt.
|
|
* @param {string} password The password.
|
|
* @param {Object} cfg (Optional) The configuration options to use for this operation.
|
|
*
|
|
* @return {WordArray} The plaintext.
|
|
*
|
|
* @static
|
|
*
|
|
* @example
|
|
*
|
|
* var plaintext = CryptoJS.lib.PasswordBasedCipher.decrypt(CryptoJS.algo.AES, formattedCiphertext, 'password', { format: CryptoJS.format.OpenSSL });
|
|
* var plaintext = CryptoJS.lib.PasswordBasedCipher.decrypt(CryptoJS.algo.AES, ciphertextParams, 'password', { format: CryptoJS.format.OpenSSL });
|
|
*/
|
|
decrypt: function(cipher, ciphertext, password, cfg) {
|
|
cfg = this.cfg.extend(cfg);
|
|
ciphertext = this._parse(ciphertext, cfg.format);
|
|
var derivedParams = cfg.kdf.execute(
|
|
password,
|
|
cipher.keySize,
|
|
cipher.ivSize,
|
|
ciphertext.salt,
|
|
cfg.hasher
|
|
);
|
|
cfg.iv = derivedParams.iv;
|
|
var plaintext = SerializableCipher.decrypt.call(this, cipher, ciphertext, derivedParams.key, cfg);
|
|
return plaintext;
|
|
}
|
|
});
|
|
}();
|
|
});
|
|
}
|
|
),
|
|
/***/
|
|
"./node_modules/crypto-js/core.js": (
|
|
/*!****************************************!*\
|
|
!*** ./node_modules/crypto-js/core.js ***!
|
|
\****************************************/
|
|
/***/
|
|
function(module2, exports2, __webpack_require__2) {
|
|
(function(root, factory) {
|
|
if (true) {
|
|
module2.exports = exports2 = factory();
|
|
} else {
|
|
}
|
|
})(this, function() {
|
|
var CryptoJS = CryptoJS || function(Math2, undefined2) {
|
|
var crypto;
|
|
if (typeof window !== "undefined" && window.crypto) {
|
|
crypto = window.crypto;
|
|
}
|
|
if (typeof self !== "undefined" && self.crypto) {
|
|
crypto = self.crypto;
|
|
}
|
|
if (typeof globalThis !== "undefined" && globalThis.crypto) {
|
|
crypto = globalThis.crypto;
|
|
}
|
|
if (!crypto && typeof window !== "undefined" && window.msCrypto) {
|
|
crypto = window.msCrypto;
|
|
}
|
|
if (!crypto && typeof __webpack_require__2.g !== "undefined" && __webpack_require__2.g.crypto) {
|
|
crypto = __webpack_require__2.g.crypto;
|
|
}
|
|
if (!crypto && true) {
|
|
try {
|
|
crypto = __webpack_require__2(
|
|
/*! crypto */
|
|
"?9157"
|
|
);
|
|
} catch (err) {
|
|
}
|
|
}
|
|
var cryptoSecureRandomInt = function() {
|
|
if (crypto) {
|
|
if (typeof crypto.getRandomValues === "function") {
|
|
try {
|
|
return crypto.getRandomValues(new Uint32Array(1))[0];
|
|
} catch (err) {
|
|
}
|
|
}
|
|
if (typeof crypto.randomBytes === "function") {
|
|
try {
|
|
return crypto.randomBytes(4).readInt32LE();
|
|
} catch (err) {
|
|
}
|
|
}
|
|
}
|
|
throw new Error("Native crypto module could not be used to get secure random number.");
|
|
};
|
|
var create = Object.create || /* @__PURE__ */ function() {
|
|
function F() {
|
|
}
|
|
return function(obj) {
|
|
var subtype;
|
|
F.prototype = obj;
|
|
subtype = new F();
|
|
F.prototype = null;
|
|
return subtype;
|
|
};
|
|
}();
|
|
var C = {};
|
|
var C_lib = C.lib = {};
|
|
var Base = C_lib.Base = /* @__PURE__ */ function() {
|
|
return {
|
|
/**
|
|
* Creates a new object that inherits from this object.
|
|
*
|
|
* @param {Object} overrides Properties to copy into the new object.
|
|
*
|
|
* @return {Object} The new object.
|
|
*
|
|
* @static
|
|
*
|
|
* @example
|
|
*
|
|
* var MyType = CryptoJS.lib.Base.extend({
|
|
* field: 'value',
|
|
*
|
|
* method: function () {
|
|
* }
|
|
* });
|
|
*/
|
|
extend: function(overrides) {
|
|
var subtype = create(this);
|
|
if (overrides) {
|
|
subtype.mixIn(overrides);
|
|
}
|
|
if (!subtype.hasOwnProperty("init") || this.init === subtype.init) {
|
|
subtype.init = function() {
|
|
subtype.$super.init.apply(this, arguments);
|
|
};
|
|
}
|
|
subtype.init.prototype = subtype;
|
|
subtype.$super = this;
|
|
return subtype;
|
|
},
|
|
/**
|
|
* Extends this object and runs the init method.
|
|
* Arguments to create() will be passed to init().
|
|
*
|
|
* @return {Object} The new object.
|
|
*
|
|
* @static
|
|
*
|
|
* @example
|
|
*
|
|
* var instance = MyType.create();
|
|
*/
|
|
create: function() {
|
|
var instance = this.extend();
|
|
instance.init.apply(instance, arguments);
|
|
return instance;
|
|
},
|
|
/**
|
|
* Initializes a newly created object.
|
|
* Override this method to add some logic when your objects are created.
|
|
*
|
|
* @example
|
|
*
|
|
* var MyType = CryptoJS.lib.Base.extend({
|
|
* init: function () {
|
|
* // ...
|
|
* }
|
|
* });
|
|
*/
|
|
init: function() {
|
|
},
|
|
/**
|
|
* Copies properties into this object.
|
|
*
|
|
* @param {Object} properties The properties to mix in.
|
|
*
|
|
* @example
|
|
*
|
|
* MyType.mixIn({
|
|
* field: 'value'
|
|
* });
|
|
*/
|
|
mixIn: function(properties) {
|
|
for (var propertyName in properties) {
|
|
if (properties.hasOwnProperty(propertyName)) {
|
|
this[propertyName] = properties[propertyName];
|
|
}
|
|
}
|
|
if (properties.hasOwnProperty("toString")) {
|
|
this.toString = properties.toString;
|
|
}
|
|
},
|
|
/**
|
|
* Creates a copy of this object.
|
|
*
|
|
* @return {Object} The clone.
|
|
*
|
|
* @example
|
|
*
|
|
* var clone = instance.clone();
|
|
*/
|
|
clone: function() {
|
|
return this.init.prototype.extend(this);
|
|
}
|
|
};
|
|
}();
|
|
var WordArray = C_lib.WordArray = Base.extend({
|
|
/**
|
|
* Initializes a newly created word array.
|
|
*
|
|
* @param {Array} words (Optional) An array of 32-bit words.
|
|
* @param {number} sigBytes (Optional) The number of significant bytes in the words.
|
|
*
|
|
* @example
|
|
*
|
|
* var wordArray = CryptoJS.lib.WordArray.create();
|
|
* var wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607]);
|
|
* var wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607], 6);
|
|
*/
|
|
init: function(words, sigBytes) {
|
|
words = this.words = words || [];
|
|
if (sigBytes != undefined2) {
|
|
this.sigBytes = sigBytes;
|
|
} else {
|
|
this.sigBytes = words.length * 4;
|
|
}
|
|
},
|
|
/**
|
|
* Converts this word array to a string.
|
|
*
|
|
* @param {Encoder} encoder (Optional) The encoding strategy to use. Default: CryptoJS.enc.Hex
|
|
*
|
|
* @return {string} The stringified word array.
|
|
*
|
|
* @example
|
|
*
|
|
* var string = wordArray + '';
|
|
* var string = wordArray.toString();
|
|
* var string = wordArray.toString(CryptoJS.enc.Utf8);
|
|
*/
|
|
toString: function(encoder) {
|
|
return (encoder || Hex).stringify(this);
|
|
},
|
|
/**
|
|
* Concatenates a word array to this word array.
|
|
*
|
|
* @param {WordArray} wordArray The word array to append.
|
|
*
|
|
* @return {WordArray} This word array.
|
|
*
|
|
* @example
|
|
*
|
|
* wordArray1.concat(wordArray2);
|
|
*/
|
|
concat: function(wordArray) {
|
|
var thisWords = this.words;
|
|
var thatWords = wordArray.words;
|
|
var thisSigBytes = this.sigBytes;
|
|
var thatSigBytes = wordArray.sigBytes;
|
|
this.clamp();
|
|
if (thisSigBytes % 4) {
|
|
for (var i = 0; i < thatSigBytes; i++) {
|
|
var thatByte = thatWords[i >>> 2] >>> 24 - i % 4 * 8 & 255;
|
|
thisWords[thisSigBytes + i >>> 2] |= thatByte << 24 - (thisSigBytes + i) % 4 * 8;
|
|
}
|
|
} else {
|
|
for (var j = 0; j < thatSigBytes; j += 4) {
|
|
thisWords[thisSigBytes + j >>> 2] = thatWords[j >>> 2];
|
|
}
|
|
}
|
|
this.sigBytes += thatSigBytes;
|
|
return this;
|
|
},
|
|
/**
|
|
* Removes insignificant bits.
|
|
*
|
|
* @example
|
|
*
|
|
* wordArray.clamp();
|
|
*/
|
|
clamp: function() {
|
|
var words = this.words;
|
|
var sigBytes = this.sigBytes;
|
|
words[sigBytes >>> 2] &= 4294967295 << 32 - sigBytes % 4 * 8;
|
|
words.length = Math2.ceil(sigBytes / 4);
|
|
},
|
|
/**
|
|
* Creates a copy of this word array.
|
|
*
|
|
* @return {WordArray} The clone.
|
|
*
|
|
* @example
|
|
*
|
|
* var clone = wordArray.clone();
|
|
*/
|
|
clone: function() {
|
|
var clone = Base.clone.call(this);
|
|
clone.words = this.words.slice(0);
|
|
return clone;
|
|
},
|
|
/**
|
|
* Creates a word array filled with random bytes.
|
|
*
|
|
* @param {number} nBytes The number of random bytes to generate.
|
|
*
|
|
* @return {WordArray} The random word array.
|
|
*
|
|
* @static
|
|
*
|
|
* @example
|
|
*
|
|
* var wordArray = CryptoJS.lib.WordArray.random(16);
|
|
*/
|
|
random: function(nBytes) {
|
|
var words = [];
|
|
for (var i = 0; i < nBytes; i += 4) {
|
|
words.push(cryptoSecureRandomInt());
|
|
}
|
|
return new WordArray.init(words, nBytes);
|
|
}
|
|
});
|
|
var C_enc = C.enc = {};
|
|
var Hex = C_enc.Hex = {
|
|
/**
|
|
* Converts a word array to a hex string.
|
|
*
|
|
* @param {WordArray} wordArray The word array.
|
|
*
|
|
* @return {string} The hex string.
|
|
*
|
|
* @static
|
|
*
|
|
* @example
|
|
*
|
|
* var hexString = CryptoJS.enc.Hex.stringify(wordArray);
|
|
*/
|
|
stringify: function(wordArray) {
|
|
var words = wordArray.words;
|
|
var sigBytes = wordArray.sigBytes;
|
|
var hexChars = [];
|
|
for (var i = 0; i < sigBytes; i++) {
|
|
var bite = words[i >>> 2] >>> 24 - i % 4 * 8 & 255;
|
|
hexChars.push((bite >>> 4).toString(16));
|
|
hexChars.push((bite & 15).toString(16));
|
|
}
|
|
return hexChars.join("");
|
|
},
|
|
/**
|
|
* Converts a hex string to a word array.
|
|
*
|
|
* @param {string} hexStr The hex string.
|
|
*
|
|
* @return {WordArray} The word array.
|
|
*
|
|
* @static
|
|
*
|
|
* @example
|
|
*
|
|
* var wordArray = CryptoJS.enc.Hex.parse(hexString);
|
|
*/
|
|
parse: function(hexStr) {
|
|
var hexStrLength = hexStr.length;
|
|
var words = [];
|
|
for (var i = 0; i < hexStrLength; i += 2) {
|
|
words[i >>> 3] |= parseInt(hexStr.substr(i, 2), 16) << 24 - i % 8 * 4;
|
|
}
|
|
return new WordArray.init(words, hexStrLength / 2);
|
|
}
|
|
};
|
|
var Latin1 = C_enc.Latin1 = {
|
|
/**
|
|
* Converts a word array to a Latin1 string.
|
|
*
|
|
* @param {WordArray} wordArray The word array.
|
|
*
|
|
* @return {string} The Latin1 string.
|
|
*
|
|
* @static
|
|
*
|
|
* @example
|
|
*
|
|
* var latin1String = CryptoJS.enc.Latin1.stringify(wordArray);
|
|
*/
|
|
stringify: function(wordArray) {
|
|
var words = wordArray.words;
|
|
var sigBytes = wordArray.sigBytes;
|
|
var latin1Chars = [];
|
|
for (var i = 0; i < sigBytes; i++) {
|
|
var bite = words[i >>> 2] >>> 24 - i % 4 * 8 & 255;
|
|
latin1Chars.push(String.fromCharCode(bite));
|
|
}
|
|
return latin1Chars.join("");
|
|
},
|
|
/**
|
|
* Converts a Latin1 string to a word array.
|
|
*
|
|
* @param {string} latin1Str The Latin1 string.
|
|
*
|
|
* @return {WordArray} The word array.
|
|
*
|
|
* @static
|
|
*
|
|
* @example
|
|
*
|
|
* var wordArray = CryptoJS.enc.Latin1.parse(latin1String);
|
|
*/
|
|
parse: function(latin1Str) {
|
|
var latin1StrLength = latin1Str.length;
|
|
var words = [];
|
|
for (var i = 0; i < latin1StrLength; i++) {
|
|
words[i >>> 2] |= (latin1Str.charCodeAt(i) & 255) << 24 - i % 4 * 8;
|
|
}
|
|
return new WordArray.init(words, latin1StrLength);
|
|
}
|
|
};
|
|
var Utf8 = C_enc.Utf8 = {
|
|
/**
|
|
* Converts a word array to a UTF-8 string.
|
|
*
|
|
* @param {WordArray} wordArray The word array.
|
|
*
|
|
* @return {string} The UTF-8 string.
|
|
*
|
|
* @static
|
|
*
|
|
* @example
|
|
*
|
|
* var utf8String = CryptoJS.enc.Utf8.stringify(wordArray);
|
|
*/
|
|
stringify: function(wordArray) {
|
|
try {
|
|
return decodeURIComponent(escape(Latin1.stringify(wordArray)));
|
|
} catch (e) {
|
|
throw new Error("Malformed UTF-8 data");
|
|
}
|
|
},
|
|
/**
|
|
* Converts a UTF-8 string to a word array.
|
|
*
|
|
* @param {string} utf8Str The UTF-8 string.
|
|
*
|
|
* @return {WordArray} The word array.
|
|
*
|
|
* @static
|
|
*
|
|
* @example
|
|
*
|
|
* var wordArray = CryptoJS.enc.Utf8.parse(utf8String);
|
|
*/
|
|
parse: function(utf8Str) {
|
|
return Latin1.parse(unescape(encodeURIComponent(utf8Str)));
|
|
}
|
|
};
|
|
var BufferedBlockAlgorithm = C_lib.BufferedBlockAlgorithm = Base.extend({
|
|
/**
|
|
* Resets this block algorithm's data buffer to its initial state.
|
|
*
|
|
* @example
|
|
*
|
|
* bufferedBlockAlgorithm.reset();
|
|
*/
|
|
reset: function() {
|
|
this._data = new WordArray.init();
|
|
this._nDataBytes = 0;
|
|
},
|
|
/**
|
|
* Adds new data to this block algorithm's buffer.
|
|
*
|
|
* @param {WordArray|string} data The data to append. Strings are converted to a WordArray using UTF-8.
|
|
*
|
|
* @example
|
|
*
|
|
* bufferedBlockAlgorithm._append('data');
|
|
* bufferedBlockAlgorithm._append(wordArray);
|
|
*/
|
|
_append: function(data) {
|
|
if (typeof data == "string") {
|
|
data = Utf8.parse(data);
|
|
}
|
|
this._data.concat(data);
|
|
this._nDataBytes += data.sigBytes;
|
|
},
|
|
/**
|
|
* Processes available data blocks.
|
|
*
|
|
* This method invokes _doProcessBlock(offset), which must be implemented by a concrete subtype.
|
|
*
|
|
* @param {boolean} doFlush Whether all blocks and partial blocks should be processed.
|
|
*
|
|
* @return {WordArray} The processed data.
|
|
*
|
|
* @example
|
|
*
|
|
* var processedData = bufferedBlockAlgorithm._process();
|
|
* var processedData = bufferedBlockAlgorithm._process(!!'flush');
|
|
*/
|
|
_process: function(doFlush) {
|
|
var processedWords;
|
|
var data = this._data;
|
|
var dataWords = data.words;
|
|
var dataSigBytes = data.sigBytes;
|
|
var blockSize = this.blockSize;
|
|
var blockSizeBytes = blockSize * 4;
|
|
var nBlocksReady = dataSigBytes / blockSizeBytes;
|
|
if (doFlush) {
|
|
nBlocksReady = Math2.ceil(nBlocksReady);
|
|
} else {
|
|
nBlocksReady = Math2.max((nBlocksReady | 0) - this._minBufferSize, 0);
|
|
}
|
|
var nWordsReady = nBlocksReady * blockSize;
|
|
var nBytesReady = Math2.min(nWordsReady * 4, dataSigBytes);
|
|
if (nWordsReady) {
|
|
for (var offset = 0; offset < nWordsReady; offset += blockSize) {
|
|
this._doProcessBlock(dataWords, offset);
|
|
}
|
|
processedWords = dataWords.splice(0, nWordsReady);
|
|
data.sigBytes -= nBytesReady;
|
|
}
|
|
return new WordArray.init(processedWords, nBytesReady);
|
|
},
|
|
/**
|
|
* Creates a copy of this object.
|
|
*
|
|
* @return {Object} The clone.
|
|
*
|
|
* @example
|
|
*
|
|
* var clone = bufferedBlockAlgorithm.clone();
|
|
*/
|
|
clone: function() {
|
|
var clone = Base.clone.call(this);
|
|
clone._data = this._data.clone();
|
|
return clone;
|
|
},
|
|
_minBufferSize: 0
|
|
});
|
|
var Hasher = C_lib.Hasher = BufferedBlockAlgorithm.extend({
|
|
/**
|
|
* Configuration options.
|
|
*/
|
|
cfg: Base.extend(),
|
|
/**
|
|
* Initializes a newly created hasher.
|
|
*
|
|
* @param {Object} cfg (Optional) The configuration options to use for this hash computation.
|
|
*
|
|
* @example
|
|
*
|
|
* var hasher = CryptoJS.algo.SHA256.create();
|
|
*/
|
|
init: function(cfg) {
|
|
this.cfg = this.cfg.extend(cfg);
|
|
this.reset();
|
|
},
|
|
/**
|
|
* Resets this hasher to its initial state.
|
|
*
|
|
* @example
|
|
*
|
|
* hasher.reset();
|
|
*/
|
|
reset: function() {
|
|
BufferedBlockAlgorithm.reset.call(this);
|
|
this._doReset();
|
|
},
|
|
/**
|
|
* Updates this hasher with a message.
|
|
*
|
|
* @param {WordArray|string} messageUpdate The message to append.
|
|
*
|
|
* @return {Hasher} This hasher.
|
|
*
|
|
* @example
|
|
*
|
|
* hasher.update('message');
|
|
* hasher.update(wordArray);
|
|
*/
|
|
update: function(messageUpdate) {
|
|
this._append(messageUpdate);
|
|
this._process();
|
|
return this;
|
|
},
|
|
/**
|
|
* Finalizes the hash computation.
|
|
* Note that the finalize operation is effectively a destructive, read-once operation.
|
|
*
|
|
* @param {WordArray|string} messageUpdate (Optional) A final message update.
|
|
*
|
|
* @return {WordArray} The hash.
|
|
*
|
|
* @example
|
|
*
|
|
* var hash = hasher.finalize();
|
|
* var hash = hasher.finalize('message');
|
|
* var hash = hasher.finalize(wordArray);
|
|
*/
|
|
finalize: function(messageUpdate) {
|
|
if (messageUpdate) {
|
|
this._append(messageUpdate);
|
|
}
|
|
var hash = this._doFinalize();
|
|
return hash;
|
|
},
|
|
blockSize: 512 / 32,
|
|
/**
|
|
* Creates a shortcut function to a hasher's object interface.
|
|
*
|
|
* @param {Hasher} hasher The hasher to create a helper for.
|
|
*
|
|
* @return {Function} The shortcut function.
|
|
*
|
|
* @static
|
|
*
|
|
* @example
|
|
*
|
|
* var SHA256 = CryptoJS.lib.Hasher._createHelper(CryptoJS.algo.SHA256);
|
|
*/
|
|
_createHelper: function(hasher) {
|
|
return function(message, cfg) {
|
|
return new hasher.init(cfg).finalize(message);
|
|
};
|
|
},
|
|
/**
|
|
* Creates a shortcut function to the HMAC's object interface.
|
|
*
|
|
* @param {Hasher} hasher The hasher to use in this HMAC helper.
|
|
*
|
|
* @return {Function} The shortcut function.
|
|
*
|
|
* @static
|
|
*
|
|
* @example
|
|
*
|
|
* var HmacSHA256 = CryptoJS.lib.Hasher._createHmacHelper(CryptoJS.algo.SHA256);
|
|
*/
|
|
_createHmacHelper: function(hasher) {
|
|
return function(message, key) {
|
|
return new C_algo.HMAC.init(hasher, key).finalize(message);
|
|
};
|
|
}
|
|
});
|
|
var C_algo = C.algo = {};
|
|
return C;
|
|
}(Math);
|
|
return CryptoJS;
|
|
});
|
|
}
|
|
),
|
|
/***/
|
|
"./node_modules/crypto-js/enc-base64.js": (
|
|
/*!**********************************************!*\
|
|
!*** ./node_modules/crypto-js/enc-base64.js ***!
|
|
\**********************************************/
|
|
/***/
|
|
function(module2, exports2, __webpack_require__2) {
|
|
(function(root, factory) {
|
|
if (true) {
|
|
module2.exports = exports2 = factory(__webpack_require__2(
|
|
/*! ./core */
|
|
"./node_modules/crypto-js/core.js"
|
|
));
|
|
} else {
|
|
}
|
|
})(this, function(CryptoJS) {
|
|
(function() {
|
|
var C = CryptoJS;
|
|
var C_lib = C.lib;
|
|
var WordArray = C_lib.WordArray;
|
|
var C_enc = C.enc;
|
|
var Base64 = C_enc.Base64 = {
|
|
/**
|
|
* Converts a word array to a Base64 string.
|
|
*
|
|
* @param {WordArray} wordArray The word array.
|
|
*
|
|
* @return {string} The Base64 string.
|
|
*
|
|
* @static
|
|
*
|
|
* @example
|
|
*
|
|
* var base64String = CryptoJS.enc.Base64.stringify(wordArray);
|
|
*/
|
|
stringify: function(wordArray) {
|
|
var words = wordArray.words;
|
|
var sigBytes = wordArray.sigBytes;
|
|
var map = this._map;
|
|
wordArray.clamp();
|
|
var base64Chars = [];
|
|
for (var i = 0; i < sigBytes; i += 3) {
|
|
var byte1 = words[i >>> 2] >>> 24 - i % 4 * 8 & 255;
|
|
var byte2 = words[i + 1 >>> 2] >>> 24 - (i + 1) % 4 * 8 & 255;
|
|
var byte3 = words[i + 2 >>> 2] >>> 24 - (i + 2) % 4 * 8 & 255;
|
|
var triplet = byte1 << 16 | byte2 << 8 | byte3;
|
|
for (var j = 0; j < 4 && i + j * 0.75 < sigBytes; j++) {
|
|
base64Chars.push(map.charAt(triplet >>> 6 * (3 - j) & 63));
|
|
}
|
|
}
|
|
var paddingChar = map.charAt(64);
|
|
if (paddingChar) {
|
|
while (base64Chars.length % 4) {
|
|
base64Chars.push(paddingChar);
|
|
}
|
|
}
|
|
return base64Chars.join("");
|
|
},
|
|
/**
|
|
* Converts a Base64 string to a word array.
|
|
*
|
|
* @param {string} base64Str The Base64 string.
|
|
*
|
|
* @return {WordArray} The word array.
|
|
*
|
|
* @static
|
|
*
|
|
* @example
|
|
*
|
|
* var wordArray = CryptoJS.enc.Base64.parse(base64String);
|
|
*/
|
|
parse: function(base64Str) {
|
|
var base64StrLength = base64Str.length;
|
|
var map = this._map;
|
|
var reverseMap = this._reverseMap;
|
|
if (!reverseMap) {
|
|
reverseMap = this._reverseMap = [];
|
|
for (var j = 0; j < map.length; j++) {
|
|
reverseMap[map.charCodeAt(j)] = j;
|
|
}
|
|
}
|
|
var paddingChar = map.charAt(64);
|
|
if (paddingChar) {
|
|
var paddingIndex = base64Str.indexOf(paddingChar);
|
|
if (paddingIndex !== -1) {
|
|
base64StrLength = paddingIndex;
|
|
}
|
|
}
|
|
return parseLoop(base64Str, base64StrLength, reverseMap);
|
|
},
|
|
_map: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="
|
|
};
|
|
function parseLoop(base64Str, base64StrLength, reverseMap) {
|
|
var words = [];
|
|
var nBytes = 0;
|
|
for (var i = 0; i < base64StrLength; i++) {
|
|
if (i % 4) {
|
|
var bits1 = reverseMap[base64Str.charCodeAt(i - 1)] << i % 4 * 2;
|
|
var bits2 = reverseMap[base64Str.charCodeAt(i)] >>> 6 - i % 4 * 2;
|
|
var bitsCombined = bits1 | bits2;
|
|
words[nBytes >>> 2] |= bitsCombined << 24 - nBytes % 4 * 8;
|
|
nBytes++;
|
|
}
|
|
}
|
|
return WordArray.create(words, nBytes);
|
|
}
|
|
})();
|
|
return CryptoJS.enc.Base64;
|
|
});
|
|
}
|
|
),
|
|
/***/
|
|
"./node_modules/crypto-js/evpkdf.js": (
|
|
/*!******************************************!*\
|
|
!*** ./node_modules/crypto-js/evpkdf.js ***!
|
|
\******************************************/
|
|
/***/
|
|
function(module2, exports2, __webpack_require__2) {
|
|
(function(root, factory, undef) {
|
|
if (true) {
|
|
module2.exports = exports2 = factory(
|
|
__webpack_require__2(
|
|
/*! ./core */
|
|
"./node_modules/crypto-js/core.js"
|
|
),
|
|
__webpack_require__2(
|
|
/*! ./sha1 */
|
|
"./node_modules/crypto-js/sha1.js"
|
|
),
|
|
__webpack_require__2(
|
|
/*! ./hmac */
|
|
"./node_modules/crypto-js/hmac.js"
|
|
)
|
|
);
|
|
} else {
|
|
}
|
|
})(this, function(CryptoJS) {
|
|
(function() {
|
|
var C = CryptoJS;
|
|
var C_lib = C.lib;
|
|
var Base = C_lib.Base;
|
|
var WordArray = C_lib.WordArray;
|
|
var C_algo = C.algo;
|
|
var MD5 = C_algo.MD5;
|
|
var EvpKDF = C_algo.EvpKDF = Base.extend({
|
|
/**
|
|
* Configuration options.
|
|
*
|
|
* @property {number} keySize The key size in words to generate. Default: 4 (128 bits)
|
|
* @property {Hasher} hasher The hash algorithm to use. Default: MD5
|
|
* @property {number} iterations The number of iterations to perform. Default: 1
|
|
*/
|
|
cfg: Base.extend({
|
|
keySize: 128 / 32,
|
|
hasher: MD5,
|
|
iterations: 1
|
|
}),
|
|
/**
|
|
* Initializes a newly created key derivation function.
|
|
*
|
|
* @param {Object} cfg (Optional) The configuration options to use for the derivation.
|
|
*
|
|
* @example
|
|
*
|
|
* var kdf = CryptoJS.algo.EvpKDF.create();
|
|
* var kdf = CryptoJS.algo.EvpKDF.create({ keySize: 8 });
|
|
* var kdf = CryptoJS.algo.EvpKDF.create({ keySize: 8, iterations: 1000 });
|
|
*/
|
|
init: function(cfg) {
|
|
this.cfg = this.cfg.extend(cfg);
|
|
},
|
|
/**
|
|
* Derives a key from a password.
|
|
*
|
|
* @param {WordArray|string} password The password.
|
|
* @param {WordArray|string} salt A salt.
|
|
*
|
|
* @return {WordArray} The derived key.
|
|
*
|
|
* @example
|
|
*
|
|
* var key = kdf.compute(password, salt);
|
|
*/
|
|
compute: function(password, salt) {
|
|
var block;
|
|
var cfg = this.cfg;
|
|
var hasher = cfg.hasher.create();
|
|
var derivedKey = WordArray.create();
|
|
var derivedKeyWords = derivedKey.words;
|
|
var keySize = cfg.keySize;
|
|
var iterations = cfg.iterations;
|
|
while (derivedKeyWords.length < keySize) {
|
|
if (block) {
|
|
hasher.update(block);
|
|
}
|
|
block = hasher.update(password).finalize(salt);
|
|
hasher.reset();
|
|
for (var i = 1; i < iterations; i++) {
|
|
block = hasher.finalize(block);
|
|
hasher.reset();
|
|
}
|
|
derivedKey.concat(block);
|
|
}
|
|
derivedKey.sigBytes = keySize * 4;
|
|
return derivedKey;
|
|
}
|
|
});
|
|
C.EvpKDF = function(password, salt, cfg) {
|
|
return EvpKDF.create(cfg).compute(password, salt);
|
|
};
|
|
})();
|
|
return CryptoJS.EvpKDF;
|
|
});
|
|
}
|
|
),
|
|
/***/
|
|
"./node_modules/crypto-js/hmac.js": (
|
|
/*!****************************************!*\
|
|
!*** ./node_modules/crypto-js/hmac.js ***!
|
|
\****************************************/
|
|
/***/
|
|
function(module2, exports2, __webpack_require__2) {
|
|
(function(root, factory) {
|
|
if (true) {
|
|
module2.exports = exports2 = factory(__webpack_require__2(
|
|
/*! ./core */
|
|
"./node_modules/crypto-js/core.js"
|
|
));
|
|
} else {
|
|
}
|
|
})(this, function(CryptoJS) {
|
|
(function() {
|
|
var C = CryptoJS;
|
|
var C_lib = C.lib;
|
|
var Base = C_lib.Base;
|
|
var C_enc = C.enc;
|
|
var Utf8 = C_enc.Utf8;
|
|
var C_algo = C.algo;
|
|
var HMAC = C_algo.HMAC = Base.extend({
|
|
/**
|
|
* Initializes a newly created HMAC.
|
|
*
|
|
* @param {Hasher} hasher The hash algorithm to use.
|
|
* @param {WordArray|string} key The secret key.
|
|
*
|
|
* @example
|
|
*
|
|
* var hmacHasher = CryptoJS.algo.HMAC.create(CryptoJS.algo.SHA256, key);
|
|
*/
|
|
init: function(hasher, key) {
|
|
hasher = this._hasher = new hasher.init();
|
|
if (typeof key == "string") {
|
|
key = Utf8.parse(key);
|
|
}
|
|
var hasherBlockSize = hasher.blockSize;
|
|
var hasherBlockSizeBytes = hasherBlockSize * 4;
|
|
if (key.sigBytes > hasherBlockSizeBytes) {
|
|
key = hasher.finalize(key);
|
|
}
|
|
key.clamp();
|
|
var oKey = this._oKey = key.clone();
|
|
var iKey = this._iKey = key.clone();
|
|
var oKeyWords = oKey.words;
|
|
var iKeyWords = iKey.words;
|
|
for (var i = 0; i < hasherBlockSize; i++) {
|
|
oKeyWords[i] ^= 1549556828;
|
|
iKeyWords[i] ^= 909522486;
|
|
}
|
|
oKey.sigBytes = iKey.sigBytes = hasherBlockSizeBytes;
|
|
this.reset();
|
|
},
|
|
/**
|
|
* Resets this HMAC to its initial state.
|
|
*
|
|
* @example
|
|
*
|
|
* hmacHasher.reset();
|
|
*/
|
|
reset: function() {
|
|
var hasher = this._hasher;
|
|
hasher.reset();
|
|
hasher.update(this._iKey);
|
|
},
|
|
/**
|
|
* Updates this HMAC with a message.
|
|
*
|
|
* @param {WordArray|string} messageUpdate The message to append.
|
|
*
|
|
* @return {HMAC} This HMAC instance.
|
|
*
|
|
* @example
|
|
*
|
|
* hmacHasher.update('message');
|
|
* hmacHasher.update(wordArray);
|
|
*/
|
|
update: function(messageUpdate) {
|
|
this._hasher.update(messageUpdate);
|
|
return this;
|
|
},
|
|
/**
|
|
* Finalizes the HMAC computation.
|
|
* Note that the finalize operation is effectively a destructive, read-once operation.
|
|
*
|
|
* @param {WordArray|string} messageUpdate (Optional) A final message update.
|
|
*
|
|
* @return {WordArray} The HMAC.
|
|
*
|
|
* @example
|
|
*
|
|
* var hmac = hmacHasher.finalize();
|
|
* var hmac = hmacHasher.finalize('message');
|
|
* var hmac = hmacHasher.finalize(wordArray);
|
|
*/
|
|
finalize: function(messageUpdate) {
|
|
var hasher = this._hasher;
|
|
var innerHash = hasher.finalize(messageUpdate);
|
|
hasher.reset();
|
|
var hmac = hasher.finalize(this._oKey.clone().concat(innerHash));
|
|
return hmac;
|
|
}
|
|
});
|
|
})();
|
|
});
|
|
}
|
|
),
|
|
/***/
|
|
"./node_modules/crypto-js/md5.js": (
|
|
/*!***************************************!*\
|
|
!*** ./node_modules/crypto-js/md5.js ***!
|
|
\***************************************/
|
|
/***/
|
|
function(module2, exports2, __webpack_require__2) {
|
|
(function(root, factory) {
|
|
if (true) {
|
|
module2.exports = exports2 = factory(__webpack_require__2(
|
|
/*! ./core */
|
|
"./node_modules/crypto-js/core.js"
|
|
));
|
|
} else {
|
|
}
|
|
})(this, function(CryptoJS) {
|
|
(function(Math2) {
|
|
var C = CryptoJS;
|
|
var C_lib = C.lib;
|
|
var WordArray = C_lib.WordArray;
|
|
var Hasher = C_lib.Hasher;
|
|
var C_algo = C.algo;
|
|
var T = [];
|
|
(function() {
|
|
for (var i = 0; i < 64; i++) {
|
|
T[i] = Math2.abs(Math2.sin(i + 1)) * 4294967296 | 0;
|
|
}
|
|
})();
|
|
var MD5 = C_algo.MD5 = Hasher.extend({
|
|
_doReset: function() {
|
|
this._hash = new WordArray.init([1732584193, 4023233417, 2562383102, 271733878]);
|
|
},
|
|
_doProcessBlock: function(M, offset) {
|
|
for (var i = 0; i < 16; i++) {
|
|
var offset_i = offset + i;
|
|
var M_offset_i = M[offset_i];
|
|
M[offset_i] = (M_offset_i << 8 | M_offset_i >>> 24) & 16711935 | (M_offset_i << 24 | M_offset_i >>> 8) & 4278255360;
|
|
}
|
|
var H = this._hash.words;
|
|
var M_offset_0 = M[offset + 0];
|
|
var M_offset_1 = M[offset + 1];
|
|
var M_offset_2 = M[offset + 2];
|
|
var M_offset_3 = M[offset + 3];
|
|
var M_offset_4 = M[offset + 4];
|
|
var M_offset_5 = M[offset + 5];
|
|
var M_offset_6 = M[offset + 6];
|
|
var M_offset_7 = M[offset + 7];
|
|
var M_offset_8 = M[offset + 8];
|
|
var M_offset_9 = M[offset + 9];
|
|
var M_offset_10 = M[offset + 10];
|
|
var M_offset_11 = M[offset + 11];
|
|
var M_offset_12 = M[offset + 12];
|
|
var M_offset_13 = M[offset + 13];
|
|
var M_offset_14 = M[offset + 14];
|
|
var M_offset_15 = M[offset + 15];
|
|
var a = H[0];
|
|
var b = H[1];
|
|
var c = H[2];
|
|
var d = H[3];
|
|
a = FF(a, b, c, d, M_offset_0, 7, T[0]);
|
|
d = FF(d, a, b, c, M_offset_1, 12, T[1]);
|
|
c = FF(c, d, a, b, M_offset_2, 17, T[2]);
|
|
b = FF(b, c, d, a, M_offset_3, 22, T[3]);
|
|
a = FF(a, b, c, d, M_offset_4, 7, T[4]);
|
|
d = FF(d, a, b, c, M_offset_5, 12, T[5]);
|
|
c = FF(c, d, a, b, M_offset_6, 17, T[6]);
|
|
b = FF(b, c, d, a, M_offset_7, 22, T[7]);
|
|
a = FF(a, b, c, d, M_offset_8, 7, T[8]);
|
|
d = FF(d, a, b, c, M_offset_9, 12, T[9]);
|
|
c = FF(c, d, a, b, M_offset_10, 17, T[10]);
|
|
b = FF(b, c, d, a, M_offset_11, 22, T[11]);
|
|
a = FF(a, b, c, d, M_offset_12, 7, T[12]);
|
|
d = FF(d, a, b, c, M_offset_13, 12, T[13]);
|
|
c = FF(c, d, a, b, M_offset_14, 17, T[14]);
|
|
b = FF(b, c, d, a, M_offset_15, 22, T[15]);
|
|
a = GG(a, b, c, d, M_offset_1, 5, T[16]);
|
|
d = GG(d, a, b, c, M_offset_6, 9, T[17]);
|
|
c = GG(c, d, a, b, M_offset_11, 14, T[18]);
|
|
b = GG(b, c, d, a, M_offset_0, 20, T[19]);
|
|
a = GG(a, b, c, d, M_offset_5, 5, T[20]);
|
|
d = GG(d, a, b, c, M_offset_10, 9, T[21]);
|
|
c = GG(c, d, a, b, M_offset_15, 14, T[22]);
|
|
b = GG(b, c, d, a, M_offset_4, 20, T[23]);
|
|
a = GG(a, b, c, d, M_offset_9, 5, T[24]);
|
|
d = GG(d, a, b, c, M_offset_14, 9, T[25]);
|
|
c = GG(c, d, a, b, M_offset_3, 14, T[26]);
|
|
b = GG(b, c, d, a, M_offset_8, 20, T[27]);
|
|
a = GG(a, b, c, d, M_offset_13, 5, T[28]);
|
|
d = GG(d, a, b, c, M_offset_2, 9, T[29]);
|
|
c = GG(c, d, a, b, M_offset_7, 14, T[30]);
|
|
b = GG(b, c, d, a, M_offset_12, 20, T[31]);
|
|
a = HH(a, b, c, d, M_offset_5, 4, T[32]);
|
|
d = HH(d, a, b, c, M_offset_8, 11, T[33]);
|
|
c = HH(c, d, a, b, M_offset_11, 16, T[34]);
|
|
b = HH(b, c, d, a, M_offset_14, 23, T[35]);
|
|
a = HH(a, b, c, d, M_offset_1, 4, T[36]);
|
|
d = HH(d, a, b, c, M_offset_4, 11, T[37]);
|
|
c = HH(c, d, a, b, M_offset_7, 16, T[38]);
|
|
b = HH(b, c, d, a, M_offset_10, 23, T[39]);
|
|
a = HH(a, b, c, d, M_offset_13, 4, T[40]);
|
|
d = HH(d, a, b, c, M_offset_0, 11, T[41]);
|
|
c = HH(c, d, a, b, M_offset_3, 16, T[42]);
|
|
b = HH(b, c, d, a, M_offset_6, 23, T[43]);
|
|
a = HH(a, b, c, d, M_offset_9, 4, T[44]);
|
|
d = HH(d, a, b, c, M_offset_12, 11, T[45]);
|
|
c = HH(c, d, a, b, M_offset_15, 16, T[46]);
|
|
b = HH(b, c, d, a, M_offset_2, 23, T[47]);
|
|
a = II(a, b, c, d, M_offset_0, 6, T[48]);
|
|
d = II(d, a, b, c, M_offset_7, 10, T[49]);
|
|
c = II(c, d, a, b, M_offset_14, 15, T[50]);
|
|
b = II(b, c, d, a, M_offset_5, 21, T[51]);
|
|
a = II(a, b, c, d, M_offset_12, 6, T[52]);
|
|
d = II(d, a, b, c, M_offset_3, 10, T[53]);
|
|
c = II(c, d, a, b, M_offset_10, 15, T[54]);
|
|
b = II(b, c, d, a, M_offset_1, 21, T[55]);
|
|
a = II(a, b, c, d, M_offset_8, 6, T[56]);
|
|
d = II(d, a, b, c, M_offset_15, 10, T[57]);
|
|
c = II(c, d, a, b, M_offset_6, 15, T[58]);
|
|
b = II(b, c, d, a, M_offset_13, 21, T[59]);
|
|
a = II(a, b, c, d, M_offset_4, 6, T[60]);
|
|
d = II(d, a, b, c, M_offset_11, 10, T[61]);
|
|
c = II(c, d, a, b, M_offset_2, 15, T[62]);
|
|
b = II(b, c, d, a, M_offset_9, 21, T[63]);
|
|
H[0] = H[0] + a | 0;
|
|
H[1] = H[1] + b | 0;
|
|
H[2] = H[2] + c | 0;
|
|
H[3] = H[3] + d | 0;
|
|
},
|
|
_doFinalize: function() {
|
|
var data = this._data;
|
|
var dataWords = data.words;
|
|
var nBitsTotal = this._nDataBytes * 8;
|
|
var nBitsLeft = data.sigBytes * 8;
|
|
dataWords[nBitsLeft >>> 5] |= 128 << 24 - nBitsLeft % 32;
|
|
var nBitsTotalH = Math2.floor(nBitsTotal / 4294967296);
|
|
var nBitsTotalL = nBitsTotal;
|
|
dataWords[(nBitsLeft + 64 >>> 9 << 4) + 15] = (nBitsTotalH << 8 | nBitsTotalH >>> 24) & 16711935 | (nBitsTotalH << 24 | nBitsTotalH >>> 8) & 4278255360;
|
|
dataWords[(nBitsLeft + 64 >>> 9 << 4) + 14] = (nBitsTotalL << 8 | nBitsTotalL >>> 24) & 16711935 | (nBitsTotalL << 24 | nBitsTotalL >>> 8) & 4278255360;
|
|
data.sigBytes = (dataWords.length + 1) * 4;
|
|
this._process();
|
|
var hash = this._hash;
|
|
var H = hash.words;
|
|
for (var i = 0; i < 4; i++) {
|
|
var H_i = H[i];
|
|
H[i] = (H_i << 8 | H_i >>> 24) & 16711935 | (H_i << 24 | H_i >>> 8) & 4278255360;
|
|
}
|
|
return hash;
|
|
},
|
|
clone: function() {
|
|
var clone = Hasher.clone.call(this);
|
|
clone._hash = this._hash.clone();
|
|
return clone;
|
|
}
|
|
});
|
|
function FF(a, b, c, d, x, s, t) {
|
|
var n = a + (b & c | ~b & d) + x + t;
|
|
return (n << s | n >>> 32 - s) + b;
|
|
}
|
|
function GG(a, b, c, d, x, s, t) {
|
|
var n = a + (b & d | c & ~d) + x + t;
|
|
return (n << s | n >>> 32 - s) + b;
|
|
}
|
|
function HH(a, b, c, d, x, s, t) {
|
|
var n = a + (b ^ c ^ d) + x + t;
|
|
return (n << s | n >>> 32 - s) + b;
|
|
}
|
|
function II(a, b, c, d, x, s, t) {
|
|
var n = a + (c ^ (b | ~d)) + x + t;
|
|
return (n << s | n >>> 32 - s) + b;
|
|
}
|
|
C.MD5 = Hasher._createHelper(MD5);
|
|
C.HmacMD5 = Hasher._createHmacHelper(MD5);
|
|
})(Math);
|
|
return CryptoJS.MD5;
|
|
});
|
|
}
|
|
),
|
|
/***/
|
|
"./node_modules/crypto-js/pbkdf2.js": (
|
|
/*!******************************************!*\
|
|
!*** ./node_modules/crypto-js/pbkdf2.js ***!
|
|
\******************************************/
|
|
/***/
|
|
function(module2, exports2, __webpack_require__2) {
|
|
(function(root, factory, undef) {
|
|
if (true) {
|
|
module2.exports = exports2 = factory(
|
|
__webpack_require__2(
|
|
/*! ./core */
|
|
"./node_modules/crypto-js/core.js"
|
|
),
|
|
__webpack_require__2(
|
|
/*! ./sha256 */
|
|
"./node_modules/crypto-js/sha256.js"
|
|
),
|
|
__webpack_require__2(
|
|
/*! ./hmac */
|
|
"./node_modules/crypto-js/hmac.js"
|
|
)
|
|
);
|
|
} else {
|
|
}
|
|
})(this, function(CryptoJS) {
|
|
(function() {
|
|
var C = CryptoJS;
|
|
var C_lib = C.lib;
|
|
var Base = C_lib.Base;
|
|
var WordArray = C_lib.WordArray;
|
|
var C_algo = C.algo;
|
|
var SHA256 = C_algo.SHA256;
|
|
var HMAC = C_algo.HMAC;
|
|
var PBKDF2 = C_algo.PBKDF2 = Base.extend({
|
|
/**
|
|
* Configuration options.
|
|
*
|
|
* @property {number} keySize The key size in words to generate. Default: 4 (128 bits)
|
|
* @property {Hasher} hasher The hasher to use. Default: SHA256
|
|
* @property {number} iterations The number of iterations to perform. Default: 250000
|
|
*/
|
|
cfg: Base.extend({
|
|
keySize: 128 / 32,
|
|
hasher: SHA256,
|
|
iterations: 25e4
|
|
}),
|
|
/**
|
|
* Initializes a newly created key derivation function.
|
|
*
|
|
* @param {Object} cfg (Optional) The configuration options to use for the derivation.
|
|
*
|
|
* @example
|
|
*
|
|
* var kdf = CryptoJS.algo.PBKDF2.create();
|
|
* var kdf = CryptoJS.algo.PBKDF2.create({ keySize: 8 });
|
|
* var kdf = CryptoJS.algo.PBKDF2.create({ keySize: 8, iterations: 1000 });
|
|
*/
|
|
init: function(cfg) {
|
|
this.cfg = this.cfg.extend(cfg);
|
|
},
|
|
/**
|
|
* Computes the Password-Based Key Derivation Function 2.
|
|
*
|
|
* @param {WordArray|string} password The password.
|
|
* @param {WordArray|string} salt A salt.
|
|
*
|
|
* @return {WordArray} The derived key.
|
|
*
|
|
* @example
|
|
*
|
|
* var key = kdf.compute(password, salt);
|
|
*/
|
|
compute: function(password, salt) {
|
|
var cfg = this.cfg;
|
|
var hmac = HMAC.create(cfg.hasher, password);
|
|
var derivedKey = WordArray.create();
|
|
var blockIndex = WordArray.create([1]);
|
|
var derivedKeyWords = derivedKey.words;
|
|
var blockIndexWords = blockIndex.words;
|
|
var keySize = cfg.keySize;
|
|
var iterations = cfg.iterations;
|
|
while (derivedKeyWords.length < keySize) {
|
|
var block = hmac.update(salt).finalize(blockIndex);
|
|
hmac.reset();
|
|
var blockWords = block.words;
|
|
var blockWordsLength = blockWords.length;
|
|
var intermediate = block;
|
|
for (var i = 1; i < iterations; i++) {
|
|
intermediate = hmac.finalize(intermediate);
|
|
hmac.reset();
|
|
var intermediateWords = intermediate.words;
|
|
for (var j = 0; j < blockWordsLength; j++) {
|
|
blockWords[j] ^= intermediateWords[j];
|
|
}
|
|
}
|
|
derivedKey.concat(block);
|
|
blockIndexWords[0]++;
|
|
}
|
|
derivedKey.sigBytes = keySize * 4;
|
|
return derivedKey;
|
|
}
|
|
});
|
|
C.PBKDF2 = function(password, salt, cfg) {
|
|
return PBKDF2.create(cfg).compute(password, salt);
|
|
};
|
|
})();
|
|
return CryptoJS.PBKDF2;
|
|
});
|
|
}
|
|
),
|
|
/***/
|
|
"./node_modules/crypto-js/rabbit.js": (
|
|
/*!******************************************!*\
|
|
!*** ./node_modules/crypto-js/rabbit.js ***!
|
|
\******************************************/
|
|
/***/
|
|
function(module2, exports2, __webpack_require__2) {
|
|
(function(root, factory, undef) {
|
|
if (true) {
|
|
module2.exports = exports2 = factory(
|
|
__webpack_require__2(
|
|
/*! ./core */
|
|
"./node_modules/crypto-js/core.js"
|
|
),
|
|
__webpack_require__2(
|
|
/*! ./enc-base64 */
|
|
"./node_modules/crypto-js/enc-base64.js"
|
|
),
|
|
__webpack_require__2(
|
|
/*! ./md5 */
|
|
"./node_modules/crypto-js/md5.js"
|
|
),
|
|
__webpack_require__2(
|
|
/*! ./evpkdf */
|
|
"./node_modules/crypto-js/evpkdf.js"
|
|
),
|
|
__webpack_require__2(
|
|
/*! ./cipher-core */
|
|
"./node_modules/crypto-js/cipher-core.js"
|
|
)
|
|
);
|
|
} else {
|
|
}
|
|
})(this, function(CryptoJS) {
|
|
(function() {
|
|
var C = CryptoJS;
|
|
var C_lib = C.lib;
|
|
var StreamCipher = C_lib.StreamCipher;
|
|
var C_algo = C.algo;
|
|
var S = [];
|
|
var C_ = [];
|
|
var G = [];
|
|
var Rabbit = C_algo.Rabbit = StreamCipher.extend({
|
|
_doReset: function() {
|
|
var K = this._key.words;
|
|
var iv = this.cfg.iv;
|
|
for (var i = 0; i < 4; i++) {
|
|
K[i] = (K[i] << 8 | K[i] >>> 24) & 16711935 | (K[i] << 24 | K[i] >>> 8) & 4278255360;
|
|
}
|
|
var X = this._X = [
|
|
K[0],
|
|
K[3] << 16 | K[2] >>> 16,
|
|
K[1],
|
|
K[0] << 16 | K[3] >>> 16,
|
|
K[2],
|
|
K[1] << 16 | K[0] >>> 16,
|
|
K[3],
|
|
K[2] << 16 | K[1] >>> 16
|
|
];
|
|
var C2 = this._C = [
|
|
K[2] << 16 | K[2] >>> 16,
|
|
K[0] & 4294901760 | K[1] & 65535,
|
|
K[3] << 16 | K[3] >>> 16,
|
|
K[1] & 4294901760 | K[2] & 65535,
|
|
K[0] << 16 | K[0] >>> 16,
|
|
K[2] & 4294901760 | K[3] & 65535,
|
|
K[1] << 16 | K[1] >>> 16,
|
|
K[3] & 4294901760 | K[0] & 65535
|
|
];
|
|
this._b = 0;
|
|
for (var i = 0; i < 4; i++) {
|
|
nextState.call(this);
|
|
}
|
|
for (var i = 0; i < 8; i++) {
|
|
C2[i] ^= X[i + 4 & 7];
|
|
}
|
|
if (iv) {
|
|
var IV = iv.words;
|
|
var IV_0 = IV[0];
|
|
var IV_1 = IV[1];
|
|
var i0 = (IV_0 << 8 | IV_0 >>> 24) & 16711935 | (IV_0 << 24 | IV_0 >>> 8) & 4278255360;
|
|
var i2 = (IV_1 << 8 | IV_1 >>> 24) & 16711935 | (IV_1 << 24 | IV_1 >>> 8) & 4278255360;
|
|
var i1 = i0 >>> 16 | i2 & 4294901760;
|
|
var i3 = i2 << 16 | i0 & 65535;
|
|
C2[0] ^= i0;
|
|
C2[1] ^= i1;
|
|
C2[2] ^= i2;
|
|
C2[3] ^= i3;
|
|
C2[4] ^= i0;
|
|
C2[5] ^= i1;
|
|
C2[6] ^= i2;
|
|
C2[7] ^= i3;
|
|
for (var i = 0; i < 4; i++) {
|
|
nextState.call(this);
|
|
}
|
|
}
|
|
},
|
|
_doProcessBlock: function(M, offset) {
|
|
var X = this._X;
|
|
nextState.call(this);
|
|
S[0] = X[0] ^ X[5] >>> 16 ^ X[3] << 16;
|
|
S[1] = X[2] ^ X[7] >>> 16 ^ X[5] << 16;
|
|
S[2] = X[4] ^ X[1] >>> 16 ^ X[7] << 16;
|
|
S[3] = X[6] ^ X[3] >>> 16 ^ X[1] << 16;
|
|
for (var i = 0; i < 4; i++) {
|
|
S[i] = (S[i] << 8 | S[i] >>> 24) & 16711935 | (S[i] << 24 | S[i] >>> 8) & 4278255360;
|
|
M[offset + i] ^= S[i];
|
|
}
|
|
},
|
|
blockSize: 128 / 32,
|
|
ivSize: 64 / 32
|
|
});
|
|
function nextState() {
|
|
var X = this._X;
|
|
var C2 = this._C;
|
|
for (var i = 0; i < 8; i++) {
|
|
C_[i] = C2[i];
|
|
}
|
|
C2[0] = C2[0] + 1295307597 + this._b | 0;
|
|
C2[1] = C2[1] + 3545052371 + (C2[0] >>> 0 < C_[0] >>> 0 ? 1 : 0) | 0;
|
|
C2[2] = C2[2] + 886263092 + (C2[1] >>> 0 < C_[1] >>> 0 ? 1 : 0) | 0;
|
|
C2[3] = C2[3] + 1295307597 + (C2[2] >>> 0 < C_[2] >>> 0 ? 1 : 0) | 0;
|
|
C2[4] = C2[4] + 3545052371 + (C2[3] >>> 0 < C_[3] >>> 0 ? 1 : 0) | 0;
|
|
C2[5] = C2[5] + 886263092 + (C2[4] >>> 0 < C_[4] >>> 0 ? 1 : 0) | 0;
|
|
C2[6] = C2[6] + 1295307597 + (C2[5] >>> 0 < C_[5] >>> 0 ? 1 : 0) | 0;
|
|
C2[7] = C2[7] + 3545052371 + (C2[6] >>> 0 < C_[6] >>> 0 ? 1 : 0) | 0;
|
|
this._b = C2[7] >>> 0 < C_[7] >>> 0 ? 1 : 0;
|
|
for (var i = 0; i < 8; i++) {
|
|
var gx = X[i] + C2[i];
|
|
var ga = gx & 65535;
|
|
var gb = gx >>> 16;
|
|
var gh = ((ga * ga >>> 17) + ga * gb >>> 15) + gb * gb;
|
|
var gl = ((gx & 4294901760) * gx | 0) + ((gx & 65535) * gx | 0);
|
|
G[i] = gh ^ gl;
|
|
}
|
|
X[0] = G[0] + (G[7] << 16 | G[7] >>> 16) + (G[6] << 16 | G[6] >>> 16) | 0;
|
|
X[1] = G[1] + (G[0] << 8 | G[0] >>> 24) + G[7] | 0;
|
|
X[2] = G[2] + (G[1] << 16 | G[1] >>> 16) + (G[0] << 16 | G[0] >>> 16) | 0;
|
|
X[3] = G[3] + (G[2] << 8 | G[2] >>> 24) + G[1] | 0;
|
|
X[4] = G[4] + (G[3] << 16 | G[3] >>> 16) + (G[2] << 16 | G[2] >>> 16) | 0;
|
|
X[5] = G[5] + (G[4] << 8 | G[4] >>> 24) + G[3] | 0;
|
|
X[6] = G[6] + (G[5] << 16 | G[5] >>> 16) + (G[4] << 16 | G[4] >>> 16) | 0;
|
|
X[7] = G[7] + (G[6] << 8 | G[6] >>> 24) + G[5] | 0;
|
|
}
|
|
C.Rabbit = StreamCipher._createHelper(Rabbit);
|
|
})();
|
|
return CryptoJS.Rabbit;
|
|
});
|
|
}
|
|
),
|
|
/***/
|
|
"./node_modules/crypto-js/rc4.js": (
|
|
/*!***************************************!*\
|
|
!*** ./node_modules/crypto-js/rc4.js ***!
|
|
\***************************************/
|
|
/***/
|
|
function(module2, exports2, __webpack_require__2) {
|
|
(function(root, factory, undef) {
|
|
if (true) {
|
|
module2.exports = exports2 = factory(
|
|
__webpack_require__2(
|
|
/*! ./core */
|
|
"./node_modules/crypto-js/core.js"
|
|
),
|
|
__webpack_require__2(
|
|
/*! ./enc-base64 */
|
|
"./node_modules/crypto-js/enc-base64.js"
|
|
),
|
|
__webpack_require__2(
|
|
/*! ./md5 */
|
|
"./node_modules/crypto-js/md5.js"
|
|
),
|
|
__webpack_require__2(
|
|
/*! ./evpkdf */
|
|
"./node_modules/crypto-js/evpkdf.js"
|
|
),
|
|
__webpack_require__2(
|
|
/*! ./cipher-core */
|
|
"./node_modules/crypto-js/cipher-core.js"
|
|
)
|
|
);
|
|
} else {
|
|
}
|
|
})(this, function(CryptoJS) {
|
|
(function() {
|
|
var C = CryptoJS;
|
|
var C_lib = C.lib;
|
|
var StreamCipher = C_lib.StreamCipher;
|
|
var C_algo = C.algo;
|
|
var RC4 = C_algo.RC4 = StreamCipher.extend({
|
|
_doReset: function() {
|
|
var key = this._key;
|
|
var keyWords = key.words;
|
|
var keySigBytes = key.sigBytes;
|
|
var S = this._S = [];
|
|
for (var i = 0; i < 256; i++) {
|
|
S[i] = i;
|
|
}
|
|
for (var i = 0, j = 0; i < 256; i++) {
|
|
var keyByteIndex = i % keySigBytes;
|
|
var keyByte = keyWords[keyByteIndex >>> 2] >>> 24 - keyByteIndex % 4 * 8 & 255;
|
|
j = (j + S[i] + keyByte) % 256;
|
|
var t = S[i];
|
|
S[i] = S[j];
|
|
S[j] = t;
|
|
}
|
|
this._i = this._j = 0;
|
|
},
|
|
_doProcessBlock: function(M, offset) {
|
|
M[offset] ^= generateKeystreamWord.call(this);
|
|
},
|
|
keySize: 256 / 32,
|
|
ivSize: 0
|
|
});
|
|
function generateKeystreamWord() {
|
|
var S = this._S;
|
|
var i = this._i;
|
|
var j = this._j;
|
|
var keystreamWord = 0;
|
|
for (var n = 0; n < 4; n++) {
|
|
i = (i + 1) % 256;
|
|
j = (j + S[i]) % 256;
|
|
var t = S[i];
|
|
S[i] = S[j];
|
|
S[j] = t;
|
|
keystreamWord |= S[(S[i] + S[j]) % 256] << 24 - n * 8;
|
|
}
|
|
this._i = i;
|
|
this._j = j;
|
|
return keystreamWord;
|
|
}
|
|
C.RC4 = StreamCipher._createHelper(RC4);
|
|
var RC4Drop = C_algo.RC4Drop = RC4.extend({
|
|
/**
|
|
* Configuration options.
|
|
*
|
|
* @property {number} drop The number of keystream words to drop. Default 192
|
|
*/
|
|
cfg: RC4.cfg.extend({
|
|
drop: 192
|
|
}),
|
|
_doReset: function() {
|
|
RC4._doReset.call(this);
|
|
for (var i = this.cfg.drop; i > 0; i--) {
|
|
generateKeystreamWord.call(this);
|
|
}
|
|
}
|
|
});
|
|
C.RC4Drop = StreamCipher._createHelper(RC4Drop);
|
|
})();
|
|
return CryptoJS.RC4;
|
|
});
|
|
}
|
|
),
|
|
/***/
|
|
"./node_modules/crypto-js/sha1.js": (
|
|
/*!****************************************!*\
|
|
!*** ./node_modules/crypto-js/sha1.js ***!
|
|
\****************************************/
|
|
/***/
|
|
function(module2, exports2, __webpack_require__2) {
|
|
(function(root, factory) {
|
|
if (true) {
|
|
module2.exports = exports2 = factory(__webpack_require__2(
|
|
/*! ./core */
|
|
"./node_modules/crypto-js/core.js"
|
|
));
|
|
} else {
|
|
}
|
|
})(this, function(CryptoJS) {
|
|
(function() {
|
|
var C = CryptoJS;
|
|
var C_lib = C.lib;
|
|
var WordArray = C_lib.WordArray;
|
|
var Hasher = C_lib.Hasher;
|
|
var C_algo = C.algo;
|
|
var W = [];
|
|
var SHA1 = C_algo.SHA1 = Hasher.extend({
|
|
_doReset: function() {
|
|
this._hash = new WordArray.init([1732584193, 4023233417, 2562383102, 271733878, 3285377520]);
|
|
},
|
|
_doProcessBlock: function(M, offset) {
|
|
var H = this._hash.words;
|
|
var a = H[0];
|
|
var b = H[1];
|
|
var c = H[2];
|
|
var d = H[3];
|
|
var e = H[4];
|
|
for (var i = 0; i < 80; i++) {
|
|
if (i < 16) {
|
|
W[i] = M[offset + i] | 0;
|
|
} else {
|
|
var n = W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16];
|
|
W[i] = n << 1 | n >>> 31;
|
|
}
|
|
var t = (a << 5 | a >>> 27) + e + W[i];
|
|
if (i < 20) {
|
|
t += (b & c | ~b & d) + 1518500249;
|
|
} else if (i < 40) {
|
|
t += (b ^ c ^ d) + 1859775393;
|
|
} else if (i < 60) {
|
|
t += (b & c | b & d | c & d) - 1894007588;
|
|
} else {
|
|
t += (b ^ c ^ d) - 899497514;
|
|
}
|
|
e = d;
|
|
d = c;
|
|
c = b << 30 | b >>> 2;
|
|
b = a;
|
|
a = t;
|
|
}
|
|
H[0] = H[0] + a | 0;
|
|
H[1] = H[1] + b | 0;
|
|
H[2] = H[2] + c | 0;
|
|
H[3] = H[3] + d | 0;
|
|
H[4] = H[4] + e | 0;
|
|
},
|
|
_doFinalize: function() {
|
|
var data = this._data;
|
|
var dataWords = data.words;
|
|
var nBitsTotal = this._nDataBytes * 8;
|
|
var nBitsLeft = data.sigBytes * 8;
|
|
dataWords[nBitsLeft >>> 5] |= 128 << 24 - nBitsLeft % 32;
|
|
dataWords[(nBitsLeft + 64 >>> 9 << 4) + 14] = Math.floor(nBitsTotal / 4294967296);
|
|
dataWords[(nBitsLeft + 64 >>> 9 << 4) + 15] = nBitsTotal;
|
|
data.sigBytes = dataWords.length * 4;
|
|
this._process();
|
|
return this._hash;
|
|
},
|
|
clone: function() {
|
|
var clone = Hasher.clone.call(this);
|
|
clone._hash = this._hash.clone();
|
|
return clone;
|
|
}
|
|
});
|
|
C.SHA1 = Hasher._createHelper(SHA1);
|
|
C.HmacSHA1 = Hasher._createHmacHelper(SHA1);
|
|
})();
|
|
return CryptoJS.SHA1;
|
|
});
|
|
}
|
|
),
|
|
/***/
|
|
"./node_modules/crypto-js/sha256.js": (
|
|
/*!******************************************!*\
|
|
!*** ./node_modules/crypto-js/sha256.js ***!
|
|
\******************************************/
|
|
/***/
|
|
function(module2, exports2, __webpack_require__2) {
|
|
(function(root, factory) {
|
|
if (true) {
|
|
module2.exports = exports2 = factory(__webpack_require__2(
|
|
/*! ./core */
|
|
"./node_modules/crypto-js/core.js"
|
|
));
|
|
} else {
|
|
}
|
|
})(this, function(CryptoJS) {
|
|
(function(Math2) {
|
|
var C = CryptoJS;
|
|
var C_lib = C.lib;
|
|
var WordArray = C_lib.WordArray;
|
|
var Hasher = C_lib.Hasher;
|
|
var C_algo = C.algo;
|
|
var H = [];
|
|
var K = [];
|
|
(function() {
|
|
function isPrime(n2) {
|
|
var sqrtN = Math2.sqrt(n2);
|
|
for (var factor = 2; factor <= sqrtN; factor++) {
|
|
if (!(n2 % factor)) {
|
|
return false;
|
|
}
|
|
}
|
|
return true;
|
|
}
|
|
function getFractionalBits(n2) {
|
|
return (n2 - (n2 | 0)) * 4294967296 | 0;
|
|
}
|
|
var n = 2;
|
|
var nPrime = 0;
|
|
while (nPrime < 64) {
|
|
if (isPrime(n)) {
|
|
if (nPrime < 8) {
|
|
H[nPrime] = getFractionalBits(Math2.pow(n, 1 / 2));
|
|
}
|
|
K[nPrime] = getFractionalBits(Math2.pow(n, 1 / 3));
|
|
nPrime++;
|
|
}
|
|
n++;
|
|
}
|
|
})();
|
|
var W = [];
|
|
var SHA256 = C_algo.SHA256 = Hasher.extend({
|
|
_doReset: function() {
|
|
this._hash = new WordArray.init(H.slice(0));
|
|
},
|
|
_doProcessBlock: function(M, offset) {
|
|
var H2 = this._hash.words;
|
|
var a = H2[0];
|
|
var b = H2[1];
|
|
var c = H2[2];
|
|
var d = H2[3];
|
|
var e = H2[4];
|
|
var f = H2[5];
|
|
var g = H2[6];
|
|
var h = H2[7];
|
|
for (var i = 0; i < 64; i++) {
|
|
if (i < 16) {
|
|
W[i] = M[offset + i] | 0;
|
|
} else {
|
|
var gamma0x = W[i - 15];
|
|
var gamma0 = (gamma0x << 25 | gamma0x >>> 7) ^ (gamma0x << 14 | gamma0x >>> 18) ^ gamma0x >>> 3;
|
|
var gamma1x = W[i - 2];
|
|
var gamma1 = (gamma1x << 15 | gamma1x >>> 17) ^ (gamma1x << 13 | gamma1x >>> 19) ^ gamma1x >>> 10;
|
|
W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16];
|
|
}
|
|
var ch = e & f ^ ~e & g;
|
|
var maj = a & b ^ a & c ^ b & c;
|
|
var sigma0 = (a << 30 | a >>> 2) ^ (a << 19 | a >>> 13) ^ (a << 10 | a >>> 22);
|
|
var sigma1 = (e << 26 | e >>> 6) ^ (e << 21 | e >>> 11) ^ (e << 7 | e >>> 25);
|
|
var t1 = h + sigma1 + ch + K[i] + W[i];
|
|
var t2 = sigma0 + maj;
|
|
h = g;
|
|
g = f;
|
|
f = e;
|
|
e = d + t1 | 0;
|
|
d = c;
|
|
c = b;
|
|
b = a;
|
|
a = t1 + t2 | 0;
|
|
}
|
|
H2[0] = H2[0] + a | 0;
|
|
H2[1] = H2[1] + b | 0;
|
|
H2[2] = H2[2] + c | 0;
|
|
H2[3] = H2[3] + d | 0;
|
|
H2[4] = H2[4] + e | 0;
|
|
H2[5] = H2[5] + f | 0;
|
|
H2[6] = H2[6] + g | 0;
|
|
H2[7] = H2[7] + h | 0;
|
|
},
|
|
_doFinalize: function() {
|
|
var data = this._data;
|
|
var dataWords = data.words;
|
|
var nBitsTotal = this._nDataBytes * 8;
|
|
var nBitsLeft = data.sigBytes * 8;
|
|
dataWords[nBitsLeft >>> 5] |= 128 << 24 - nBitsLeft % 32;
|
|
dataWords[(nBitsLeft + 64 >>> 9 << 4) + 14] = Math2.floor(nBitsTotal / 4294967296);
|
|
dataWords[(nBitsLeft + 64 >>> 9 << 4) + 15] = nBitsTotal;
|
|
data.sigBytes = dataWords.length * 4;
|
|
this._process();
|
|
return this._hash;
|
|
},
|
|
clone: function() {
|
|
var clone = Hasher.clone.call(this);
|
|
clone._hash = this._hash.clone();
|
|
return clone;
|
|
}
|
|
});
|
|
C.SHA256 = Hasher._createHelper(SHA256);
|
|
C.HmacSHA256 = Hasher._createHmacHelper(SHA256);
|
|
})(Math);
|
|
return CryptoJS.SHA256;
|
|
});
|
|
}
|
|
),
|
|
/***/
|
|
"./node_modules/crypto-js/tripledes.js": (
|
|
/*!*********************************************!*\
|
|
!*** ./node_modules/crypto-js/tripledes.js ***!
|
|
\*********************************************/
|
|
/***/
|
|
function(module2, exports2, __webpack_require__2) {
|
|
(function(root, factory, undef) {
|
|
if (true) {
|
|
module2.exports = exports2 = factory(
|
|
__webpack_require__2(
|
|
/*! ./core */
|
|
"./node_modules/crypto-js/core.js"
|
|
),
|
|
__webpack_require__2(
|
|
/*! ./enc-base64 */
|
|
"./node_modules/crypto-js/enc-base64.js"
|
|
),
|
|
__webpack_require__2(
|
|
/*! ./md5 */
|
|
"./node_modules/crypto-js/md5.js"
|
|
),
|
|
__webpack_require__2(
|
|
/*! ./evpkdf */
|
|
"./node_modules/crypto-js/evpkdf.js"
|
|
),
|
|
__webpack_require__2(
|
|
/*! ./cipher-core */
|
|
"./node_modules/crypto-js/cipher-core.js"
|
|
)
|
|
);
|
|
} else {
|
|
}
|
|
})(this, function(CryptoJS) {
|
|
(function() {
|
|
var C = CryptoJS;
|
|
var C_lib = C.lib;
|
|
var WordArray = C_lib.WordArray;
|
|
var BlockCipher = C_lib.BlockCipher;
|
|
var C_algo = C.algo;
|
|
var PC1 = [
|
|
57,
|
|
49,
|
|
41,
|
|
33,
|
|
25,
|
|
17,
|
|
9,
|
|
1,
|
|
58,
|
|
50,
|
|
42,
|
|
34,
|
|
26,
|
|
18,
|
|
10,
|
|
2,
|
|
59,
|
|
51,
|
|
43,
|
|
35,
|
|
27,
|
|
19,
|
|
11,
|
|
3,
|
|
60,
|
|
52,
|
|
44,
|
|
36,
|
|
63,
|
|
55,
|
|
47,
|
|
39,
|
|
31,
|
|
23,
|
|
15,
|
|
7,
|
|
62,
|
|
54,
|
|
46,
|
|
38,
|
|
30,
|
|
22,
|
|
14,
|
|
6,
|
|
61,
|
|
53,
|
|
45,
|
|
37,
|
|
29,
|
|
21,
|
|
13,
|
|
5,
|
|
28,
|
|
20,
|
|
12,
|
|
4
|
|
];
|
|
var PC2 = [
|
|
14,
|
|
17,
|
|
11,
|
|
24,
|
|
1,
|
|
5,
|
|
3,
|
|
28,
|
|
15,
|
|
6,
|
|
21,
|
|
10,
|
|
23,
|
|
19,
|
|
12,
|
|
4,
|
|
26,
|
|
8,
|
|
16,
|
|
7,
|
|
27,
|
|
20,
|
|
13,
|
|
2,
|
|
41,
|
|
52,
|
|
31,
|
|
37,
|
|
47,
|
|
55,
|
|
30,
|
|
40,
|
|
51,
|
|
45,
|
|
33,
|
|
48,
|
|
44,
|
|
49,
|
|
39,
|
|
56,
|
|
34,
|
|
53,
|
|
46,
|
|
42,
|
|
50,
|
|
36,
|
|
29,
|
|
32
|
|
];
|
|
var BIT_SHIFTS = [1, 2, 4, 6, 8, 10, 12, 14, 15, 17, 19, 21, 23, 25, 27, 28];
|
|
var SBOX_P = [
|
|
{
|
|
0: 8421888,
|
|
268435456: 32768,
|
|
536870912: 8421378,
|
|
805306368: 2,
|
|
1073741824: 512,
|
|
1342177280: 8421890,
|
|
1610612736: 8389122,
|
|
1879048192: 8388608,
|
|
2147483648: 514,
|
|
2415919104: 8389120,
|
|
2684354560: 33280,
|
|
2952790016: 8421376,
|
|
3221225472: 32770,
|
|
3489660928: 8388610,
|
|
3758096384: 0,
|
|
4026531840: 33282,
|
|
134217728: 0,
|
|
402653184: 8421890,
|
|
671088640: 33282,
|
|
939524096: 32768,
|
|
1207959552: 8421888,
|
|
1476395008: 512,
|
|
1744830464: 8421378,
|
|
2013265920: 2,
|
|
2281701376: 8389120,
|
|
2550136832: 33280,
|
|
2818572288: 8421376,
|
|
3087007744: 8389122,
|
|
3355443200: 8388610,
|
|
3623878656: 32770,
|
|
3892314112: 514,
|
|
4160749568: 8388608,
|
|
1: 32768,
|
|
268435457: 2,
|
|
536870913: 8421888,
|
|
805306369: 8388608,
|
|
1073741825: 8421378,
|
|
1342177281: 33280,
|
|
1610612737: 512,
|
|
1879048193: 8389122,
|
|
2147483649: 8421890,
|
|
2415919105: 8421376,
|
|
2684354561: 8388610,
|
|
2952790017: 33282,
|
|
3221225473: 514,
|
|
3489660929: 8389120,
|
|
3758096385: 32770,
|
|
4026531841: 0,
|
|
134217729: 8421890,
|
|
402653185: 8421376,
|
|
671088641: 8388608,
|
|
939524097: 512,
|
|
1207959553: 32768,
|
|
1476395009: 8388610,
|
|
1744830465: 2,
|
|
2013265921: 33282,
|
|
2281701377: 32770,
|
|
2550136833: 8389122,
|
|
2818572289: 514,
|
|
3087007745: 8421888,
|
|
3355443201: 8389120,
|
|
3623878657: 0,
|
|
3892314113: 33280,
|
|
4160749569: 8421378
|
|
},
|
|
{
|
|
0: 1074282512,
|
|
16777216: 16384,
|
|
33554432: 524288,
|
|
50331648: 1074266128,
|
|
67108864: 1073741840,
|
|
83886080: 1074282496,
|
|
100663296: 1073758208,
|
|
117440512: 16,
|
|
134217728: 540672,
|
|
150994944: 1073758224,
|
|
167772160: 1073741824,
|
|
184549376: 540688,
|
|
201326592: 524304,
|
|
218103808: 0,
|
|
234881024: 16400,
|
|
251658240: 1074266112,
|
|
8388608: 1073758208,
|
|
25165824: 540688,
|
|
41943040: 16,
|
|
58720256: 1073758224,
|
|
75497472: 1074282512,
|
|
92274688: 1073741824,
|
|
109051904: 524288,
|
|
125829120: 1074266128,
|
|
142606336: 524304,
|
|
159383552: 0,
|
|
176160768: 16384,
|
|
192937984: 1074266112,
|
|
209715200: 1073741840,
|
|
226492416: 540672,
|
|
243269632: 1074282496,
|
|
260046848: 16400,
|
|
268435456: 0,
|
|
285212672: 1074266128,
|
|
301989888: 1073758224,
|
|
318767104: 1074282496,
|
|
335544320: 1074266112,
|
|
352321536: 16,
|
|
369098752: 540688,
|
|
385875968: 16384,
|
|
402653184: 16400,
|
|
419430400: 524288,
|
|
436207616: 524304,
|
|
452984832: 1073741840,
|
|
469762048: 540672,
|
|
486539264: 1073758208,
|
|
503316480: 1073741824,
|
|
520093696: 1074282512,
|
|
276824064: 540688,
|
|
293601280: 524288,
|
|
310378496: 1074266112,
|
|
327155712: 16384,
|
|
343932928: 1073758208,
|
|
360710144: 1074282512,
|
|
377487360: 16,
|
|
394264576: 1073741824,
|
|
411041792: 1074282496,
|
|
427819008: 1073741840,
|
|
444596224: 1073758224,
|
|
461373440: 524304,
|
|
478150656: 0,
|
|
494927872: 16400,
|
|
511705088: 1074266128,
|
|
528482304: 540672
|
|
},
|
|
{
|
|
0: 260,
|
|
1048576: 0,
|
|
2097152: 67109120,
|
|
3145728: 65796,
|
|
4194304: 65540,
|
|
5242880: 67108868,
|
|
6291456: 67174660,
|
|
7340032: 67174400,
|
|
8388608: 67108864,
|
|
9437184: 67174656,
|
|
10485760: 65792,
|
|
11534336: 67174404,
|
|
12582912: 67109124,
|
|
13631488: 65536,
|
|
14680064: 4,
|
|
15728640: 256,
|
|
524288: 67174656,
|
|
1572864: 67174404,
|
|
2621440: 0,
|
|
3670016: 67109120,
|
|
4718592: 67108868,
|
|
5767168: 65536,
|
|
6815744: 65540,
|
|
7864320: 260,
|
|
8912896: 4,
|
|
9961472: 256,
|
|
11010048: 67174400,
|
|
12058624: 65796,
|
|
13107200: 65792,
|
|
14155776: 67109124,
|
|
15204352: 67174660,
|
|
16252928: 67108864,
|
|
16777216: 67174656,
|
|
17825792: 65540,
|
|
18874368: 65536,
|
|
19922944: 67109120,
|
|
20971520: 256,
|
|
22020096: 67174660,
|
|
23068672: 67108868,
|
|
24117248: 0,
|
|
25165824: 67109124,
|
|
26214400: 67108864,
|
|
27262976: 4,
|
|
28311552: 65792,
|
|
29360128: 67174400,
|
|
30408704: 260,
|
|
31457280: 65796,
|
|
32505856: 67174404,
|
|
17301504: 67108864,
|
|
18350080: 260,
|
|
19398656: 67174656,
|
|
20447232: 0,
|
|
21495808: 65540,
|
|
22544384: 67109120,
|
|
23592960: 256,
|
|
24641536: 67174404,
|
|
25690112: 65536,
|
|
26738688: 67174660,
|
|
27787264: 65796,
|
|
28835840: 67108868,
|
|
29884416: 67109124,
|
|
30932992: 67174400,
|
|
31981568: 4,
|
|
33030144: 65792
|
|
},
|
|
{
|
|
0: 2151682048,
|
|
65536: 2147487808,
|
|
131072: 4198464,
|
|
196608: 2151677952,
|
|
262144: 0,
|
|
327680: 4198400,
|
|
393216: 2147483712,
|
|
458752: 4194368,
|
|
524288: 2147483648,
|
|
589824: 4194304,
|
|
655360: 64,
|
|
720896: 2147487744,
|
|
786432: 2151678016,
|
|
851968: 4160,
|
|
917504: 4096,
|
|
983040: 2151682112,
|
|
32768: 2147487808,
|
|
98304: 64,
|
|
163840: 2151678016,
|
|
229376: 2147487744,
|
|
294912: 4198400,
|
|
360448: 2151682112,
|
|
425984: 0,
|
|
491520: 2151677952,
|
|
557056: 4096,
|
|
622592: 2151682048,
|
|
688128: 4194304,
|
|
753664: 4160,
|
|
819200: 2147483648,
|
|
884736: 4194368,
|
|
950272: 4198464,
|
|
1015808: 2147483712,
|
|
1048576: 4194368,
|
|
1114112: 4198400,
|
|
1179648: 2147483712,
|
|
1245184: 0,
|
|
1310720: 4160,
|
|
1376256: 2151678016,
|
|
1441792: 2151682048,
|
|
1507328: 2147487808,
|
|
1572864: 2151682112,
|
|
1638400: 2147483648,
|
|
1703936: 2151677952,
|
|
1769472: 4198464,
|
|
1835008: 2147487744,
|
|
1900544: 4194304,
|
|
1966080: 64,
|
|
2031616: 4096,
|
|
1081344: 2151677952,
|
|
1146880: 2151682112,
|
|
1212416: 0,
|
|
1277952: 4198400,
|
|
1343488: 4194368,
|
|
1409024: 2147483648,
|
|
1474560: 2147487808,
|
|
1540096: 64,
|
|
1605632: 2147483712,
|
|
1671168: 4096,
|
|
1736704: 2147487744,
|
|
1802240: 2151678016,
|
|
1867776: 4160,
|
|
1933312: 2151682048,
|
|
1998848: 4194304,
|
|
2064384: 4198464
|
|
},
|
|
{
|
|
0: 128,
|
|
4096: 17039360,
|
|
8192: 262144,
|
|
12288: 536870912,
|
|
16384: 537133184,
|
|
20480: 16777344,
|
|
24576: 553648256,
|
|
28672: 262272,
|
|
32768: 16777216,
|
|
36864: 537133056,
|
|
40960: 536871040,
|
|
45056: 553910400,
|
|
49152: 553910272,
|
|
53248: 0,
|
|
57344: 17039488,
|
|
61440: 553648128,
|
|
2048: 17039488,
|
|
6144: 553648256,
|
|
10240: 128,
|
|
14336: 17039360,
|
|
18432: 262144,
|
|
22528: 537133184,
|
|
26624: 553910272,
|
|
30720: 536870912,
|
|
34816: 537133056,
|
|
38912: 0,
|
|
43008: 553910400,
|
|
47104: 16777344,
|
|
51200: 536871040,
|
|
55296: 553648128,
|
|
59392: 16777216,
|
|
63488: 262272,
|
|
65536: 262144,
|
|
69632: 128,
|
|
73728: 536870912,
|
|
77824: 553648256,
|
|
81920: 16777344,
|
|
86016: 553910272,
|
|
90112: 537133184,
|
|
94208: 16777216,
|
|
98304: 553910400,
|
|
102400: 553648128,
|
|
106496: 17039360,
|
|
110592: 537133056,
|
|
114688: 262272,
|
|
118784: 536871040,
|
|
122880: 0,
|
|
126976: 17039488,
|
|
67584: 553648256,
|
|
71680: 16777216,
|
|
75776: 17039360,
|
|
79872: 537133184,
|
|
83968: 536870912,
|
|
88064: 17039488,
|
|
92160: 128,
|
|
96256: 553910272,
|
|
100352: 262272,
|
|
104448: 553910400,
|
|
108544: 0,
|
|
112640: 553648128,
|
|
116736: 16777344,
|
|
120832: 262144,
|
|
124928: 537133056,
|
|
129024: 536871040
|
|
},
|
|
{
|
|
0: 268435464,
|
|
256: 8192,
|
|
512: 270532608,
|
|
768: 270540808,
|
|
1024: 268443648,
|
|
1280: 2097152,
|
|
1536: 2097160,
|
|
1792: 268435456,
|
|
2048: 0,
|
|
2304: 268443656,
|
|
2560: 2105344,
|
|
2816: 8,
|
|
3072: 270532616,
|
|
3328: 2105352,
|
|
3584: 8200,
|
|
3840: 270540800,
|
|
128: 270532608,
|
|
384: 270540808,
|
|
640: 8,
|
|
896: 2097152,
|
|
1152: 2105352,
|
|
1408: 268435464,
|
|
1664: 268443648,
|
|
1920: 8200,
|
|
2176: 2097160,
|
|
2432: 8192,
|
|
2688: 268443656,
|
|
2944: 270532616,
|
|
3200: 0,
|
|
3456: 270540800,
|
|
3712: 2105344,
|
|
3968: 268435456,
|
|
4096: 268443648,
|
|
4352: 270532616,
|
|
4608: 270540808,
|
|
4864: 8200,
|
|
5120: 2097152,
|
|
5376: 268435456,
|
|
5632: 268435464,
|
|
5888: 2105344,
|
|
6144: 2105352,
|
|
6400: 0,
|
|
6656: 8,
|
|
6912: 270532608,
|
|
7168: 8192,
|
|
7424: 268443656,
|
|
7680: 270540800,
|
|
7936: 2097160,
|
|
4224: 8,
|
|
4480: 2105344,
|
|
4736: 2097152,
|
|
4992: 268435464,
|
|
5248: 268443648,
|
|
5504: 8200,
|
|
5760: 270540808,
|
|
6016: 270532608,
|
|
6272: 270540800,
|
|
6528: 270532616,
|
|
6784: 8192,
|
|
7040: 2105352,
|
|
7296: 2097160,
|
|
7552: 0,
|
|
7808: 268435456,
|
|
8064: 268443656
|
|
},
|
|
{
|
|
0: 1048576,
|
|
16: 33555457,
|
|
32: 1024,
|
|
48: 1049601,
|
|
64: 34604033,
|
|
80: 0,
|
|
96: 1,
|
|
112: 34603009,
|
|
128: 33555456,
|
|
144: 1048577,
|
|
160: 33554433,
|
|
176: 34604032,
|
|
192: 34603008,
|
|
208: 1025,
|
|
224: 1049600,
|
|
240: 33554432,
|
|
8: 34603009,
|
|
24: 0,
|
|
40: 33555457,
|
|
56: 34604032,
|
|
72: 1048576,
|
|
88: 33554433,
|
|
104: 33554432,
|
|
120: 1025,
|
|
136: 1049601,
|
|
152: 33555456,
|
|
168: 34603008,
|
|
184: 1048577,
|
|
200: 1024,
|
|
216: 34604033,
|
|
232: 1,
|
|
248: 1049600,
|
|
256: 33554432,
|
|
272: 1048576,
|
|
288: 33555457,
|
|
304: 34603009,
|
|
320: 1048577,
|
|
336: 33555456,
|
|
352: 34604032,
|
|
368: 1049601,
|
|
384: 1025,
|
|
400: 34604033,
|
|
416: 1049600,
|
|
432: 1,
|
|
448: 0,
|
|
464: 34603008,
|
|
480: 33554433,
|
|
496: 1024,
|
|
264: 1049600,
|
|
280: 33555457,
|
|
296: 34603009,
|
|
312: 1,
|
|
328: 33554432,
|
|
344: 1048576,
|
|
360: 1025,
|
|
376: 34604032,
|
|
392: 33554433,
|
|
408: 34603008,
|
|
424: 0,
|
|
440: 34604033,
|
|
456: 1049601,
|
|
472: 1024,
|
|
488: 33555456,
|
|
504: 1048577
|
|
},
|
|
{
|
|
0: 134219808,
|
|
1: 131072,
|
|
2: 134217728,
|
|
3: 32,
|
|
4: 131104,
|
|
5: 134350880,
|
|
6: 134350848,
|
|
7: 2048,
|
|
8: 134348800,
|
|
9: 134219776,
|
|
10: 133120,
|
|
11: 134348832,
|
|
12: 2080,
|
|
13: 0,
|
|
14: 134217760,
|
|
15: 133152,
|
|
2147483648: 2048,
|
|
2147483649: 134350880,
|
|
2147483650: 134219808,
|
|
2147483651: 134217728,
|
|
2147483652: 134348800,
|
|
2147483653: 133120,
|
|
2147483654: 133152,
|
|
2147483655: 32,
|
|
2147483656: 134217760,
|
|
2147483657: 2080,
|
|
2147483658: 131104,
|
|
2147483659: 134350848,
|
|
2147483660: 0,
|
|
2147483661: 134348832,
|
|
2147483662: 134219776,
|
|
2147483663: 131072,
|
|
16: 133152,
|
|
17: 134350848,
|
|
18: 32,
|
|
19: 2048,
|
|
20: 134219776,
|
|
21: 134217760,
|
|
22: 134348832,
|
|
23: 131072,
|
|
24: 0,
|
|
25: 131104,
|
|
26: 134348800,
|
|
27: 134219808,
|
|
28: 134350880,
|
|
29: 133120,
|
|
30: 2080,
|
|
31: 134217728,
|
|
2147483664: 131072,
|
|
2147483665: 2048,
|
|
2147483666: 134348832,
|
|
2147483667: 133152,
|
|
2147483668: 32,
|
|
2147483669: 134348800,
|
|
2147483670: 134217728,
|
|
2147483671: 134219808,
|
|
2147483672: 134350880,
|
|
2147483673: 134217760,
|
|
2147483674: 134219776,
|
|
2147483675: 0,
|
|
2147483676: 133120,
|
|
2147483677: 2080,
|
|
2147483678: 131104,
|
|
2147483679: 134350848
|
|
}
|
|
];
|
|
var SBOX_MASK = [
|
|
4160749569,
|
|
528482304,
|
|
33030144,
|
|
2064384,
|
|
129024,
|
|
8064,
|
|
504,
|
|
2147483679
|
|
];
|
|
var DES = C_algo.DES = BlockCipher.extend({
|
|
_doReset: function() {
|
|
var key = this._key;
|
|
var keyWords = key.words;
|
|
var keyBits = [];
|
|
for (var i = 0; i < 56; i++) {
|
|
var keyBitPos = PC1[i] - 1;
|
|
keyBits[i] = keyWords[keyBitPos >>> 5] >>> 31 - keyBitPos % 32 & 1;
|
|
}
|
|
var subKeys = this._subKeys = [];
|
|
for (var nSubKey = 0; nSubKey < 16; nSubKey++) {
|
|
var subKey = subKeys[nSubKey] = [];
|
|
var bitShift = BIT_SHIFTS[nSubKey];
|
|
for (var i = 0; i < 24; i++) {
|
|
subKey[i / 6 | 0] |= keyBits[(PC2[i] - 1 + bitShift) % 28] << 31 - i % 6;
|
|
subKey[4 + (i / 6 | 0)] |= keyBits[28 + (PC2[i + 24] - 1 + bitShift) % 28] << 31 - i % 6;
|
|
}
|
|
subKey[0] = subKey[0] << 1 | subKey[0] >>> 31;
|
|
for (var i = 1; i < 7; i++) {
|
|
subKey[i] = subKey[i] >>> (i - 1) * 4 + 3;
|
|
}
|
|
subKey[7] = subKey[7] << 5 | subKey[7] >>> 27;
|
|
}
|
|
var invSubKeys = this._invSubKeys = [];
|
|
for (var i = 0; i < 16; i++) {
|
|
invSubKeys[i] = subKeys[15 - i];
|
|
}
|
|
},
|
|
encryptBlock: function(M, offset) {
|
|
this._doCryptBlock(M, offset, this._subKeys);
|
|
},
|
|
decryptBlock: function(M, offset) {
|
|
this._doCryptBlock(M, offset, this._invSubKeys);
|
|
},
|
|
_doCryptBlock: function(M, offset, subKeys) {
|
|
this._lBlock = M[offset];
|
|
this._rBlock = M[offset + 1];
|
|
exchangeLR.call(this, 4, 252645135);
|
|
exchangeLR.call(this, 16, 65535);
|
|
exchangeRL.call(this, 2, 858993459);
|
|
exchangeRL.call(this, 8, 16711935);
|
|
exchangeLR.call(this, 1, 1431655765);
|
|
for (var round = 0; round < 16; round++) {
|
|
var subKey = subKeys[round];
|
|
var lBlock = this._lBlock;
|
|
var rBlock = this._rBlock;
|
|
var f = 0;
|
|
for (var i = 0; i < 8; i++) {
|
|
f |= SBOX_P[i][((rBlock ^ subKey[i]) & SBOX_MASK[i]) >>> 0];
|
|
}
|
|
this._lBlock = rBlock;
|
|
this._rBlock = lBlock ^ f;
|
|
}
|
|
var t = this._lBlock;
|
|
this._lBlock = this._rBlock;
|
|
this._rBlock = t;
|
|
exchangeLR.call(this, 1, 1431655765);
|
|
exchangeRL.call(this, 8, 16711935);
|
|
exchangeRL.call(this, 2, 858993459);
|
|
exchangeLR.call(this, 16, 65535);
|
|
exchangeLR.call(this, 4, 252645135);
|
|
M[offset] = this._lBlock;
|
|
M[offset + 1] = this._rBlock;
|
|
},
|
|
keySize: 64 / 32,
|
|
ivSize: 64 / 32,
|
|
blockSize: 64 / 32
|
|
});
|
|
function exchangeLR(offset, mask) {
|
|
var t = (this._lBlock >>> offset ^ this._rBlock) & mask;
|
|
this._rBlock ^= t;
|
|
this._lBlock ^= t << offset;
|
|
}
|
|
function exchangeRL(offset, mask) {
|
|
var t = (this._rBlock >>> offset ^ this._lBlock) & mask;
|
|
this._lBlock ^= t;
|
|
this._rBlock ^= t << offset;
|
|
}
|
|
C.DES = BlockCipher._createHelper(DES);
|
|
var TripleDES = C_algo.TripleDES = BlockCipher.extend({
|
|
_doReset: function() {
|
|
var key = this._key;
|
|
var keyWords = key.words;
|
|
if (keyWords.length !== 2 && keyWords.length !== 4 && keyWords.length < 6) {
|
|
throw new Error("Invalid key length - 3DES requires the key length to be 64, 128, 192 or >192.");
|
|
}
|
|
var key1 = keyWords.slice(0, 2);
|
|
var key2 = keyWords.length < 4 ? keyWords.slice(0, 2) : keyWords.slice(2, 4);
|
|
var key3 = keyWords.length < 6 ? keyWords.slice(0, 2) : keyWords.slice(4, 6);
|
|
this._des1 = DES.createEncryptor(WordArray.create(key1));
|
|
this._des2 = DES.createEncryptor(WordArray.create(key2));
|
|
this._des3 = DES.createEncryptor(WordArray.create(key3));
|
|
},
|
|
encryptBlock: function(M, offset) {
|
|
this._des1.encryptBlock(M, offset);
|
|
this._des2.decryptBlock(M, offset);
|
|
this._des3.encryptBlock(M, offset);
|
|
},
|
|
decryptBlock: function(M, offset) {
|
|
this._des3.decryptBlock(M, offset);
|
|
this._des2.encryptBlock(M, offset);
|
|
this._des1.decryptBlock(M, offset);
|
|
},
|
|
keySize: 192 / 32,
|
|
ivSize: 64 / 32,
|
|
blockSize: 64 / 32
|
|
});
|
|
C.TripleDES = BlockCipher._createHelper(TripleDES);
|
|
})();
|
|
return CryptoJS.TripleDES;
|
|
});
|
|
}
|
|
),
|
|
/***/
|
|
"./node_modules/lz-string/libs/lz-string.js": (
|
|
/*!**************************************************!*\
|
|
!*** ./node_modules/lz-string/libs/lz-string.js ***!
|
|
\**************************************************/
|
|
/***/
|
|
(module2, exports2, __webpack_require__2) => {
|
|
var __WEBPACK_AMD_DEFINE_RESULT__;
|
|
var LZString = function() {
|
|
var f = String.fromCharCode;
|
|
var keyStrBase64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
|
|
var keyStrUriSafe = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+-$";
|
|
var baseReverseDic = {};
|
|
function getBaseValue(alphabet, character) {
|
|
if (!baseReverseDic[alphabet]) {
|
|
baseReverseDic[alphabet] = {};
|
|
for (var i = 0; i < alphabet.length; i++) {
|
|
baseReverseDic[alphabet][alphabet.charAt(i)] = i;
|
|
}
|
|
}
|
|
return baseReverseDic[alphabet][character];
|
|
}
|
|
var LZString2 = {
|
|
compressToBase64: function(input) {
|
|
if (input == null) return "";
|
|
var res = LZString2._compress(input, 6, function(a) {
|
|
return keyStrBase64.charAt(a);
|
|
});
|
|
switch (res.length % 4) {
|
|
default:
|
|
// When could this happen ?
|
|
case 0:
|
|
return res;
|
|
case 1:
|
|
return res + "===";
|
|
case 2:
|
|
return res + "==";
|
|
case 3:
|
|
return res + "=";
|
|
}
|
|
},
|
|
decompressFromBase64: function(input) {
|
|
if (input == null) return "";
|
|
if (input == "") return null;
|
|
return LZString2._decompress(input.length, 32, function(index) {
|
|
return getBaseValue(keyStrBase64, input.charAt(index));
|
|
});
|
|
},
|
|
compressToUTF16: function(input) {
|
|
if (input == null) return "";
|
|
return LZString2._compress(input, 15, function(a) {
|
|
return f(a + 32);
|
|
}) + " ";
|
|
},
|
|
decompressFromUTF16: function(compressed) {
|
|
if (compressed == null) return "";
|
|
if (compressed == "") return null;
|
|
return LZString2._decompress(compressed.length, 16384, function(index) {
|
|
return compressed.charCodeAt(index) - 32;
|
|
});
|
|
},
|
|
//compress into uint8array (UCS-2 big endian format)
|
|
compressToUint8Array: function(uncompressed) {
|
|
var compressed = LZString2.compress(uncompressed);
|
|
var buf = new Uint8Array(compressed.length * 2);
|
|
for (var i = 0, TotalLen = compressed.length; i < TotalLen; i++) {
|
|
var current_value = compressed.charCodeAt(i);
|
|
buf[i * 2] = current_value >>> 8;
|
|
buf[i * 2 + 1] = current_value % 256;
|
|
}
|
|
return buf;
|
|
},
|
|
//decompress from uint8array (UCS-2 big endian format)
|
|
decompressFromUint8Array: function(compressed) {
|
|
if (compressed === null || compressed === void 0) {
|
|
return LZString2.decompress(compressed);
|
|
} else {
|
|
var buf = new Array(compressed.length / 2);
|
|
for (var i = 0, TotalLen = buf.length; i < TotalLen; i++) {
|
|
buf[i] = compressed[i * 2] * 256 + compressed[i * 2 + 1];
|
|
}
|
|
var result = [];
|
|
buf.forEach(function(c) {
|
|
result.push(f(c));
|
|
});
|
|
return LZString2.decompress(result.join(""));
|
|
}
|
|
},
|
|
//compress into a string that is already URI encoded
|
|
compressToEncodedURIComponent: function(input) {
|
|
if (input == null) return "";
|
|
return LZString2._compress(input, 6, function(a) {
|
|
return keyStrUriSafe.charAt(a);
|
|
});
|
|
},
|
|
//decompress from an output of compressToEncodedURIComponent
|
|
decompressFromEncodedURIComponent: function(input) {
|
|
if (input == null) return "";
|
|
if (input == "") return null;
|
|
input = input.replace(/ /g, "+");
|
|
return LZString2._decompress(input.length, 32, function(index) {
|
|
return getBaseValue(keyStrUriSafe, input.charAt(index));
|
|
});
|
|
},
|
|
compress: function(uncompressed) {
|
|
return LZString2._compress(uncompressed, 16, function(a) {
|
|
return f(a);
|
|
});
|
|
},
|
|
_compress: function(uncompressed, bitsPerChar, getCharFromInt) {
|
|
if (uncompressed == null) return "";
|
|
var i, value, context_dictionary = {}, context_dictionaryToCreate = {}, context_c = "", context_wc = "", context_w = "", context_enlargeIn = 2, context_dictSize = 3, context_numBits = 2, context_data = [], context_data_val = 0, context_data_position = 0, ii;
|
|
for (ii = 0; ii < uncompressed.length; ii += 1) {
|
|
context_c = uncompressed.charAt(ii);
|
|
if (!Object.prototype.hasOwnProperty.call(context_dictionary, context_c)) {
|
|
context_dictionary[context_c] = context_dictSize++;
|
|
context_dictionaryToCreate[context_c] = true;
|
|
}
|
|
context_wc = context_w + context_c;
|
|
if (Object.prototype.hasOwnProperty.call(context_dictionary, context_wc)) {
|
|
context_w = context_wc;
|
|
} else {
|
|
if (Object.prototype.hasOwnProperty.call(context_dictionaryToCreate, context_w)) {
|
|
if (context_w.charCodeAt(0) < 256) {
|
|
for (i = 0; i < context_numBits; i++) {
|
|
context_data_val = context_data_val << 1;
|
|
if (context_data_position == bitsPerChar - 1) {
|
|
context_data_position = 0;
|
|
context_data.push(getCharFromInt(context_data_val));
|
|
context_data_val = 0;
|
|
} else {
|
|
context_data_position++;
|
|
}
|
|
}
|
|
value = context_w.charCodeAt(0);
|
|
for (i = 0; i < 8; i++) {
|
|
context_data_val = context_data_val << 1 | value & 1;
|
|
if (context_data_position == bitsPerChar - 1) {
|
|
context_data_position = 0;
|
|
context_data.push(getCharFromInt(context_data_val));
|
|
context_data_val = 0;
|
|
} else {
|
|
context_data_position++;
|
|
}
|
|
value = value >> 1;
|
|
}
|
|
} else {
|
|
value = 1;
|
|
for (i = 0; i < context_numBits; i++) {
|
|
context_data_val = context_data_val << 1 | value;
|
|
if (context_data_position == bitsPerChar - 1) {
|
|
context_data_position = 0;
|
|
context_data.push(getCharFromInt(context_data_val));
|
|
context_data_val = 0;
|
|
} else {
|
|
context_data_position++;
|
|
}
|
|
value = 0;
|
|
}
|
|
value = context_w.charCodeAt(0);
|
|
for (i = 0; i < 16; i++) {
|
|
context_data_val = context_data_val << 1 | value & 1;
|
|
if (context_data_position == bitsPerChar - 1) {
|
|
context_data_position = 0;
|
|
context_data.push(getCharFromInt(context_data_val));
|
|
context_data_val = 0;
|
|
} else {
|
|
context_data_position++;
|
|
}
|
|
value = value >> 1;
|
|
}
|
|
}
|
|
context_enlargeIn--;
|
|
if (context_enlargeIn == 0) {
|
|
context_enlargeIn = Math.pow(2, context_numBits);
|
|
context_numBits++;
|
|
}
|
|
delete context_dictionaryToCreate[context_w];
|
|
} else {
|
|
value = context_dictionary[context_w];
|
|
for (i = 0; i < context_numBits; i++) {
|
|
context_data_val = context_data_val << 1 | value & 1;
|
|
if (context_data_position == bitsPerChar - 1) {
|
|
context_data_position = 0;
|
|
context_data.push(getCharFromInt(context_data_val));
|
|
context_data_val = 0;
|
|
} else {
|
|
context_data_position++;
|
|
}
|
|
value = value >> 1;
|
|
}
|
|
}
|
|
context_enlargeIn--;
|
|
if (context_enlargeIn == 0) {
|
|
context_enlargeIn = Math.pow(2, context_numBits);
|
|
context_numBits++;
|
|
}
|
|
context_dictionary[context_wc] = context_dictSize++;
|
|
context_w = String(context_c);
|
|
}
|
|
}
|
|
if (context_w !== "") {
|
|
if (Object.prototype.hasOwnProperty.call(context_dictionaryToCreate, context_w)) {
|
|
if (context_w.charCodeAt(0) < 256) {
|
|
for (i = 0; i < context_numBits; i++) {
|
|
context_data_val = context_data_val << 1;
|
|
if (context_data_position == bitsPerChar - 1) {
|
|
context_data_position = 0;
|
|
context_data.push(getCharFromInt(context_data_val));
|
|
context_data_val = 0;
|
|
} else {
|
|
context_data_position++;
|
|
}
|
|
}
|
|
value = context_w.charCodeAt(0);
|
|
for (i = 0; i < 8; i++) {
|
|
context_data_val = context_data_val << 1 | value & 1;
|
|
if (context_data_position == bitsPerChar - 1) {
|
|
context_data_position = 0;
|
|
context_data.push(getCharFromInt(context_data_val));
|
|
context_data_val = 0;
|
|
} else {
|
|
context_data_position++;
|
|
}
|
|
value = value >> 1;
|
|
}
|
|
} else {
|
|
value = 1;
|
|
for (i = 0; i < context_numBits; i++) {
|
|
context_data_val = context_data_val << 1 | value;
|
|
if (context_data_position == bitsPerChar - 1) {
|
|
context_data_position = 0;
|
|
context_data.push(getCharFromInt(context_data_val));
|
|
context_data_val = 0;
|
|
} else {
|
|
context_data_position++;
|
|
}
|
|
value = 0;
|
|
}
|
|
value = context_w.charCodeAt(0);
|
|
for (i = 0; i < 16; i++) {
|
|
context_data_val = context_data_val << 1 | value & 1;
|
|
if (context_data_position == bitsPerChar - 1) {
|
|
context_data_position = 0;
|
|
context_data.push(getCharFromInt(context_data_val));
|
|
context_data_val = 0;
|
|
} else {
|
|
context_data_position++;
|
|
}
|
|
value = value >> 1;
|
|
}
|
|
}
|
|
context_enlargeIn--;
|
|
if (context_enlargeIn == 0) {
|
|
context_enlargeIn = Math.pow(2, context_numBits);
|
|
context_numBits++;
|
|
}
|
|
delete context_dictionaryToCreate[context_w];
|
|
} else {
|
|
value = context_dictionary[context_w];
|
|
for (i = 0; i < context_numBits; i++) {
|
|
context_data_val = context_data_val << 1 | value & 1;
|
|
if (context_data_position == bitsPerChar - 1) {
|
|
context_data_position = 0;
|
|
context_data.push(getCharFromInt(context_data_val));
|
|
context_data_val = 0;
|
|
} else {
|
|
context_data_position++;
|
|
}
|
|
value = value >> 1;
|
|
}
|
|
}
|
|
context_enlargeIn--;
|
|
if (context_enlargeIn == 0) {
|
|
context_enlargeIn = Math.pow(2, context_numBits);
|
|
context_numBits++;
|
|
}
|
|
}
|
|
value = 2;
|
|
for (i = 0; i < context_numBits; i++) {
|
|
context_data_val = context_data_val << 1 | value & 1;
|
|
if (context_data_position == bitsPerChar - 1) {
|
|
context_data_position = 0;
|
|
context_data.push(getCharFromInt(context_data_val));
|
|
context_data_val = 0;
|
|
} else {
|
|
context_data_position++;
|
|
}
|
|
value = value >> 1;
|
|
}
|
|
while (true) {
|
|
context_data_val = context_data_val << 1;
|
|
if (context_data_position == bitsPerChar - 1) {
|
|
context_data.push(getCharFromInt(context_data_val));
|
|
break;
|
|
} else context_data_position++;
|
|
}
|
|
return context_data.join("");
|
|
},
|
|
decompress: function(compressed) {
|
|
if (compressed == null) return "";
|
|
if (compressed == "") return null;
|
|
return LZString2._decompress(compressed.length, 32768, function(index) {
|
|
return compressed.charCodeAt(index);
|
|
});
|
|
},
|
|
_decompress: function(length, resetValue, getNextValue) {
|
|
var dictionary = [], next, enlargeIn = 4, dictSize = 4, numBits = 3, entry = "", result = [], i, w, bits, resb, maxpower, power, c, data = { val: getNextValue(0), position: resetValue, index: 1 };
|
|
for (i = 0; i < 3; i += 1) {
|
|
dictionary[i] = i;
|
|
}
|
|
bits = 0;
|
|
maxpower = Math.pow(2, 2);
|
|
power = 1;
|
|
while (power != maxpower) {
|
|
resb = data.val & data.position;
|
|
data.position >>= 1;
|
|
if (data.position == 0) {
|
|
data.position = resetValue;
|
|
data.val = getNextValue(data.index++);
|
|
}
|
|
bits |= (resb > 0 ? 1 : 0) * power;
|
|
power <<= 1;
|
|
}
|
|
switch (next = bits) {
|
|
case 0:
|
|
bits = 0;
|
|
maxpower = Math.pow(2, 8);
|
|
power = 1;
|
|
while (power != maxpower) {
|
|
resb = data.val & data.position;
|
|
data.position >>= 1;
|
|
if (data.position == 0) {
|
|
data.position = resetValue;
|
|
data.val = getNextValue(data.index++);
|
|
}
|
|
bits |= (resb > 0 ? 1 : 0) * power;
|
|
power <<= 1;
|
|
}
|
|
c = f(bits);
|
|
break;
|
|
case 1:
|
|
bits = 0;
|
|
maxpower = Math.pow(2, 16);
|
|
power = 1;
|
|
while (power != maxpower) {
|
|
resb = data.val & data.position;
|
|
data.position >>= 1;
|
|
if (data.position == 0) {
|
|
data.position = resetValue;
|
|
data.val = getNextValue(data.index++);
|
|
}
|
|
bits |= (resb > 0 ? 1 : 0) * power;
|
|
power <<= 1;
|
|
}
|
|
c = f(bits);
|
|
break;
|
|
case 2:
|
|
return "";
|
|
}
|
|
dictionary[3] = c;
|
|
w = c;
|
|
result.push(c);
|
|
while (true) {
|
|
if (data.index > length) {
|
|
return "";
|
|
}
|
|
bits = 0;
|
|
maxpower = Math.pow(2, numBits);
|
|
power = 1;
|
|
while (power != maxpower) {
|
|
resb = data.val & data.position;
|
|
data.position >>= 1;
|
|
if (data.position == 0) {
|
|
data.position = resetValue;
|
|
data.val = getNextValue(data.index++);
|
|
}
|
|
bits |= (resb > 0 ? 1 : 0) * power;
|
|
power <<= 1;
|
|
}
|
|
switch (c = bits) {
|
|
case 0:
|
|
bits = 0;
|
|
maxpower = Math.pow(2, 8);
|
|
power = 1;
|
|
while (power != maxpower) {
|
|
resb = data.val & data.position;
|
|
data.position >>= 1;
|
|
if (data.position == 0) {
|
|
data.position = resetValue;
|
|
data.val = getNextValue(data.index++);
|
|
}
|
|
bits |= (resb > 0 ? 1 : 0) * power;
|
|
power <<= 1;
|
|
}
|
|
dictionary[dictSize++] = f(bits);
|
|
c = dictSize - 1;
|
|
enlargeIn--;
|
|
break;
|
|
case 1:
|
|
bits = 0;
|
|
maxpower = Math.pow(2, 16);
|
|
power = 1;
|
|
while (power != maxpower) {
|
|
resb = data.val & data.position;
|
|
data.position >>= 1;
|
|
if (data.position == 0) {
|
|
data.position = resetValue;
|
|
data.val = getNextValue(data.index++);
|
|
}
|
|
bits |= (resb > 0 ? 1 : 0) * power;
|
|
power <<= 1;
|
|
}
|
|
dictionary[dictSize++] = f(bits);
|
|
c = dictSize - 1;
|
|
enlargeIn--;
|
|
break;
|
|
case 2:
|
|
return result.join("");
|
|
}
|
|
if (enlargeIn == 0) {
|
|
enlargeIn = Math.pow(2, numBits);
|
|
numBits++;
|
|
}
|
|
if (dictionary[c]) {
|
|
entry = dictionary[c];
|
|
} else {
|
|
if (c === dictSize) {
|
|
entry = w + w.charAt(0);
|
|
} else {
|
|
return null;
|
|
}
|
|
}
|
|
result.push(entry);
|
|
dictionary[dictSize++] = w + entry.charAt(0);
|
|
enlargeIn--;
|
|
w = entry;
|
|
if (enlargeIn == 0) {
|
|
enlargeIn = Math.pow(2, numBits);
|
|
numBits++;
|
|
}
|
|
}
|
|
}
|
|
};
|
|
return LZString2;
|
|
}();
|
|
if (true) {
|
|
!(__WEBPACK_AMD_DEFINE_RESULT__ = (function() {
|
|
return LZString;
|
|
}).call(exports2, __webpack_require__2, exports2, module2), __WEBPACK_AMD_DEFINE_RESULT__ !== void 0 && (module2.exports = __WEBPACK_AMD_DEFINE_RESULT__));
|
|
} else {
|
|
}
|
|
}
|
|
),
|
|
/***/
|
|
"?9157": (
|
|
/*!************************!*\
|
|
!*** crypto (ignored) ***!
|
|
\************************/
|
|
/***/
|
|
() => {
|
|
}
|
|
)
|
|
/******/
|
|
};
|
|
var __webpack_module_cache__ = {};
|
|
function __webpack_require__(moduleId) {
|
|
var cachedModule = __webpack_module_cache__[moduleId];
|
|
if (cachedModule !== void 0) {
|
|
return cachedModule.exports;
|
|
}
|
|
var module2 = __webpack_module_cache__[moduleId] = {
|
|
/******/
|
|
// no module.id needed
|
|
/******/
|
|
// no module.loaded needed
|
|
/******/
|
|
exports: {}
|
|
/******/
|
|
};
|
|
__webpack_modules__[moduleId].call(module2.exports, module2, module2.exports, __webpack_require__);
|
|
return module2.exports;
|
|
}
|
|
(() => {
|
|
__webpack_require__.n = (module2) => {
|
|
var getter = module2 && module2.__esModule ? (
|
|
/******/
|
|
() => module2["default"]
|
|
) : (
|
|
/******/
|
|
() => module2
|
|
);
|
|
__webpack_require__.d(getter, { a: getter });
|
|
return getter;
|
|
};
|
|
})();
|
|
(() => {
|
|
__webpack_require__.d = (exports2, definition) => {
|
|
for (var key in definition) {
|
|
if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports2, key)) {
|
|
Object.defineProperty(exports2, key, { enumerable: true, get: definition[key] });
|
|
}
|
|
}
|
|
};
|
|
})();
|
|
(() => {
|
|
__webpack_require__.g = function() {
|
|
if (typeof globalThis === "object") return globalThis;
|
|
try {
|
|
return this || new Function("return this")();
|
|
} catch (e) {
|
|
if (typeof window === "object") return window;
|
|
}
|
|
}();
|
|
})();
|
|
(() => {
|
|
__webpack_require__.o = (obj, prop) => Object.prototype.hasOwnProperty.call(obj, prop);
|
|
})();
|
|
(() => {
|
|
__webpack_require__.r = (exports2) => {
|
|
if (typeof Symbol !== "undefined" && Symbol.toStringTag) {
|
|
Object.defineProperty(exports2, Symbol.toStringTag, { value: "Module" });
|
|
}
|
|
Object.defineProperty(exports2, "__esModule", { value: true });
|
|
};
|
|
})();
|
|
var __webpack_exports__ = {};
|
|
(() => {
|
|
"use strict";
|
|
__webpack_require__.r(__webpack_exports__);
|
|
__webpack_require__.d(__webpack_exports__, {
|
|
/* harmony export */
|
|
default: () => __WEBPACK_DEFAULT_EXPORT__
|
|
/* harmony export */
|
|
});
|
|
var _SecureLS__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(
|
|
/*! ./SecureLS */
|
|
"./src/SecureLS.js"
|
|
);
|
|
const __WEBPACK_DEFAULT_EXPORT__ = _SecureLS__WEBPACK_IMPORTED_MODULE_0__.SecureLS;
|
|
})();
|
|
return __webpack_exports__;
|
|
})()
|
|
);
|
|
});
|
|
}
|
|
});
|
|
export default require_secure_ls();
|
|
//# sourceMappingURL=secure-ls.js.map
|