Remove JS dependencies (#1430)
parent
16fd5c53a7
commit
a697ea68d0
@ -1,760 +0,0 @@ |
||||
;(function (root, factory) { |
||||
if (typeof exports === "object") { |
||||
// CommonJS
|
||||
module.exports = exports = factory(); |
||||
} |
||||
else if (typeof define === "function" && define.amd) { |
||||
// AMD
|
||||
define([], factory); |
||||
} |
||||
else { |
||||
// Global (browser)
|
||||
root.CryptoJS = factory(); |
||||
} |
||||
}(this, function () { |
||||
|
||||
/** |
||||
* CryptoJS core components. |
||||
*/ |
||||
var CryptoJS = CryptoJS || (function (Math, undefined) { |
||||
/* |
||||
* Local polyfil of Object.create |
||||
*/ |
||||
var create = Object.create || (function () { |
||||
function F() {}; |
||||
|
||||
return function (obj) { |
||||
var subtype; |
||||
|
||||
F.prototype = obj; |
||||
|
||||
subtype = new F(); |
||||
|
||||
F.prototype = null; |
||||
|
||||
return subtype; |
||||
}; |
||||
}()) |
||||
|
||||
/** |
||||
* CryptoJS namespace. |
||||
*/ |
||||
var C = {}; |
||||
|
||||
/** |
||||
* Library namespace. |
||||
*/ |
||||
var C_lib = C.lib = {}; |
||||
|
||||
/** |
||||
* Base object for prototypal inheritance. |
||||
*/ |
||||
var Base = C_lib.Base = (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) { |
||||
// Spawn
|
||||
var subtype = create(this); |
||||
|
||||
// Augment
|
||||
if (overrides) { |
||||
subtype.mixIn(overrides); |
||||
} |
||||
|
||||
// Create default initializer
|
||||
if (!subtype.hasOwnProperty('init') || this.init === subtype.init) { |
||||
subtype.init = function () { |
||||
subtype.$super.init.apply(this, arguments); |
||||
}; |
||||
} |
||||
|
||||
// Initializer's prototype is the subtype object
|
||||
subtype.init.prototype = subtype; |
||||
|
||||
// Reference supertype
|
||||
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]; |
||||
} |
||||
} |
||||
|
||||
// IE won't copy toString using the loop above
|
||||
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); |
||||
} |
||||
}; |
||||
}()); |
||||
|
||||
/** |
||||
* An array of 32-bit words. |
||||
* |
||||
* @property {Array} words The array of 32-bit words. |
||||
* @property {number} sigBytes The number of significant bytes in this word array. |
||||
*/ |
||||
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 != undefined) { |
||||
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) { |
||||
// Shortcuts
|
||||
var thisWords = this.words; |
||||
var thatWords = wordArray.words; |
||||
var thisSigBytes = this.sigBytes; |
||||
var thatSigBytes = wordArray.sigBytes; |
||||
|
||||
// Clamp excess bits
|
||||
this.clamp(); |
||||
|
||||
// Concat
|
||||
if (thisSigBytes % 4) { |
||||
// Copy one byte at a time
|
||||
for (var i = 0; i < thatSigBytes; i++) { |
||||
var thatByte = (thatWords[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff; |
||||
thisWords[(thisSigBytes + i) >>> 2] |= thatByte << (24 - ((thisSigBytes + i) % 4) * 8); |
||||
} |
||||
} else { |
||||
// Copy one word at a time
|
||||
for (var i = 0; i < thatSigBytes; i += 4) { |
||||
thisWords[(thisSigBytes + i) >>> 2] = thatWords[i >>> 2]; |
||||
} |
||||
} |
||||
this.sigBytes += thatSigBytes; |
||||
|
||||
// Chainable
|
||||
return this; |
||||
}, |
||||
|
||||
/** |
||||
* Removes insignificant bits. |
||||
* |
||||
* @example |
||||
* |
||||
* wordArray.clamp(); |
||||
*/ |
||||
clamp: function () { |
||||
// Shortcuts
|
||||
var words = this.words; |
||||
var sigBytes = this.sigBytes; |
||||
|
||||
// Clamp
|
||||
words[sigBytes >>> 2] &= 0xffffffff << (32 - (sigBytes % 4) * 8); |
||||
words.length = Math.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 = []; |
||||
|
||||
var r = (function (m_w) { |
||||
var m_w = m_w; |
||||
var m_z = 0x3ade68b1; |
||||
var mask = 0xffffffff; |
||||
|
||||
return function () { |
||||
m_z = (0x9069 * (m_z & 0xFFFF) + (m_z >> 0x10)) & mask; |
||||
m_w = (0x4650 * (m_w & 0xFFFF) + (m_w >> 0x10)) & mask; |
||||
var result = ((m_z << 0x10) + m_w) & mask; |
||||
result /= 0x100000000; |
||||
result += 0.5; |
||||
return result * (Math.random() > .5 ? 1 : -1); |
||||
} |
||||
}); |
||||
|
||||
for (var i = 0, rcache; i < nBytes; i += 4) { |
||||
var _r = r((rcache || Math.random()) * 0x100000000); |
||||
|
||||
rcache = _r() * 0x3ade67b7; |
||||
words.push((_r() * 0x100000000) | 0); |
||||
} |
||||
|
||||
return new WordArray.init(words, nBytes); |
||||
} |
||||
}); |
||||
|
||||
/** |
||||
* Encoder namespace. |
||||
*/ |
||||
var C_enc = C.enc = {}; |
||||
|
||||
/** |
||||
* Hex encoding strategy. |
||||
*/ |
||||
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) { |
||||
// Shortcuts
|
||||
var words = wordArray.words; |
||||
var sigBytes = wordArray.sigBytes; |
||||
|
||||
// Convert
|
||||
var hexChars = []; |
||||
for (var i = 0; i < sigBytes; i++) { |
||||
var bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff; |
||||
hexChars.push((bite >>> 4).toString(16)); |
||||
hexChars.push((bite & 0x0f).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) { |
||||
// Shortcut
|
||||
var hexStrLength = hexStr.length; |
||||
|
||||
// Convert
|
||||
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); |
||||
} |
||||
}; |
||||
|
||||
/** |
||||
* Latin1 encoding strategy. |
||||
*/ |
||||
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) { |
||||
// Shortcuts
|
||||
var words = wordArray.words; |
||||
var sigBytes = wordArray.sigBytes; |
||||
|
||||
// Convert
|
||||
var latin1Chars = []; |
||||
for (var i = 0; i < sigBytes; i++) { |
||||
var bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff; |
||||
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) { |
||||
// Shortcut
|
||||
var latin1StrLength = latin1Str.length; |
||||
|
||||
// Convert
|
||||
var words = []; |
||||
for (var i = 0; i < latin1StrLength; i++) { |
||||
words[i >>> 2] |= (latin1Str.charCodeAt(i) & 0xff) << (24 - (i % 4) * 8); |
||||
} |
||||
|
||||
return new WordArray.init(words, latin1StrLength); |
||||
} |
||||
}; |
||||
|
||||
/** |
||||
* UTF-8 encoding strategy. |
||||
*/ |
||||
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))); |
||||
} |
||||
}; |
||||
|
||||
/** |
||||
* Abstract buffered block algorithm template. |
||||
* |
||||
* The property blockSize must be implemented in a concrete subtype. |
||||
* |
||||
* @property {number} _minBufferSize The number of blocks that should be kept unprocessed in the buffer. Default: 0 |
||||
*/ |
||||
var BufferedBlockAlgorithm = C_lib.BufferedBlockAlgorithm = Base.extend({ |
||||
/** |
||||
* Resets this block algorithm's data buffer to its initial state. |
||||
* |
||||
* @example |
||||
* |
||||
* bufferedBlockAlgorithm.reset(); |
||||
*/ |
||||
reset: function () { |
||||
// Initial values
|
||||
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) { |
||||
// Convert string to WordArray, else assume WordArray already
|
||||
if (typeof data == 'string') { |
||||
data = Utf8.parse(data); |
||||
} |
||||
|
||||
// Append
|
||||
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) { |
||||
// Shortcuts
|
||||
var data = this._data; |
||||
var dataWords = data.words; |
||||
var dataSigBytes = data.sigBytes; |
||||
var blockSize = this.blockSize; |
||||
var blockSizeBytes = blockSize * 4; |
||||
|
||||
// Count blocks ready
|
||||
var nBlocksReady = dataSigBytes / blockSizeBytes; |
||||
if (doFlush) { |
||||
// Round up to include partial blocks
|
||||
nBlocksReady = Math.ceil(nBlocksReady); |
||||
} else { |
||||
// Round down to include only full blocks,
|
||||
// less the number of blocks that must remain in the buffer
|
||||
nBlocksReady = Math.max((nBlocksReady | 0) - this._minBufferSize, 0); |
||||
} |
||||
|
||||
// Count words ready
|
||||
var nWordsReady = nBlocksReady * blockSize; |
||||
|
||||
// Count bytes ready
|
||||
var nBytesReady = Math.min(nWordsReady * 4, dataSigBytes); |
||||
|
||||
// Process blocks
|
||||
if (nWordsReady) { |
||||
for (var offset = 0; offset < nWordsReady; offset += blockSize) { |
||||
// Perform concrete-algorithm logic
|
||||
this._doProcessBlock(dataWords, offset); |
||||
} |
||||
|
||||
// Remove processed words
|
||||
var processedWords = dataWords.splice(0, nWordsReady); |
||||
data.sigBytes -= nBytesReady; |
||||
} |
||||
|
||||
// Return processed words
|
||||
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 |
||||
}); |
||||
|
||||
/** |
||||
* Abstract hasher template. |
||||
* |
||||
* @property {number} blockSize The number of 32-bit words this hasher operates on. Default: 16 (512 bits) |
||||
*/ |
||||
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) { |
||||
// Apply config defaults
|
||||
this.cfg = this.cfg.extend(cfg); |
||||
|
||||
// Set initial values
|
||||
this.reset(); |
||||
}, |
||||
|
||||
/** |
||||
* Resets this hasher to its initial state. |
||||
* |
||||
* @example |
||||
* |
||||
* hasher.reset(); |
||||
*/ |
||||
reset: function () { |
||||
// Reset data buffer
|
||||
BufferedBlockAlgorithm.reset.call(this); |
||||
|
||||
// Perform concrete-hasher logic
|
||||
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) { |
||||
// Append
|
||||
this._append(messageUpdate); |
||||
|
||||
// Update the hash
|
||||
this._process(); |
||||
|
||||
// Chainable
|
||||
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) { |
||||
// Final message update
|
||||
if (messageUpdate) { |
||||
this._append(messageUpdate); |
||||
} |
||||
|
||||
// Perform concrete-hasher logic
|
||||
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); |
||||
}; |
||||
} |
||||
}); |
||||
|
||||
/** |
||||
* Algorithm namespace. |
||||
*/ |
||||
var C_algo = C.algo = {}; |
||||
|
||||
return C; |
||||
}(Math)); |
||||
|
||||
|
||||
return CryptoJS; |
||||
|
||||
})); |
@ -1,2 +0,0 @@ |
||||
!function(t,n){"object"==typeof exports?module.exports=exports=n():"function"==typeof define&&define.amd?define([],n):t.CryptoJS=n()}(this,function(){var t=t||function(t,n){var i=Object.create||function(){function t(){}return function(n){var i;return t.prototype=n,i=new t,t.prototype=null,i}}(),e={},r=e.lib={},o=r.Base=function(){return{extend:function(t){var n=i(this);return t&&n.mixIn(t),n.hasOwnProperty("init")&&this.init!==n.init||(n.init=function(){n.$super.init.apply(this,arguments)}),n.init.prototype=n,n.$super=this,n},create:function(){var t=this.extend();return t.init.apply(t,arguments),t},init:function(){},mixIn:function(t){for(var n in t)t.hasOwnProperty(n)&&(this[n]=t[n]);t.hasOwnProperty("toString")&&(this.toString=t.toString)},clone:function(){return this.init.prototype.extend(this)}}}(),s=r.WordArray=o.extend({init:function(t,i){t=this.words=t||[],i!=n?this.sigBytes=i:this.sigBytes=4*t.length},toString:function(t){return(t||c).stringify(this)},concat:function(t){var n=this.words,i=t.words,e=this.sigBytes,r=t.sigBytes;if(this.clamp(),e%4)for(var o=0;o<r;o++){var s=i[o>>>2]>>>24-o%4*8&255;n[e+o>>>2]|=s<<24-(e+o)%4*8}else for(var o=0;o<r;o+=4)n[e+o>>>2]=i[o>>>2];return this.sigBytes+=r,this},clamp:function(){var n=this.words,i=this.sigBytes;n[i>>>2]&=4294967295<<32-i%4*8,n.length=t.ceil(i/4)},clone:function(){var t=o.clone.call(this);return t.words=this.words.slice(0),t},random:function(n){for(var i,e=[],r=function(n){var n=n,i=987654321,e=4294967295;return function(){i=36969*(65535&i)+(i>>16)&e,n=18e3*(65535&n)+(n>>16)&e;var r=(i<<16)+n&e;return r/=4294967296,r+=.5,r*(t.random()>.5?1:-1)}},o=0;o<n;o+=4){var a=r(4294967296*(i||t.random()));i=987654071*a(),e.push(4294967296*a()|0)}return new s.init(e,n)}}),a=e.enc={},c=a.Hex={stringify:function(t){for(var n=t.words,i=t.sigBytes,e=[],r=0;r<i;r++){var o=n[r>>>2]>>>24-r%4*8&255;e.push((o>>>4).toString(16)),e.push((15&o).toString(16))}return e.join("")},parse:function(t){for(var n=t.length,i=[],e=0;e<n;e+=2)i[e>>>3]|=parseInt(t.substr(e,2),16)<<24-e%8*4;return new s.init(i,n/2)}},u=a.Latin1={stringify:function(t){for(var n=t.words,i=t.sigBytes,e=[],r=0;r<i;r++){var o=n[r>>>2]>>>24-r%4*8&255;e.push(String.fromCharCode(o))}return e.join("")},parse:function(t){for(var n=t.length,i=[],e=0;e<n;e++)i[e>>>2]|=(255&t.charCodeAt(e))<<24-e%4*8;return new s.init(i,n)}},f=a.Utf8={stringify:function(t){try{return decodeURIComponent(escape(u.stringify(t)))}catch(t){throw new Error("Malformed UTF-8 data")}},parse:function(t){return u.parse(unescape(encodeURIComponent(t)))}},h=r.BufferedBlockAlgorithm=o.extend({reset:function(){this._data=new s.init,this._nDataBytes=0},_append:function(t){"string"==typeof t&&(t=f.parse(t)),this._data.concat(t),this._nDataBytes+=t.sigBytes},_process:function(n){var i=this._data,e=i.words,r=i.sigBytes,o=this.blockSize,a=4*o,c=r/a;c=n?t.ceil(c):t.max((0|c)-this._minBufferSize,0);var u=c*o,f=t.min(4*u,r);if(u){for(var h=0;h<u;h+=o)this._doProcessBlock(e,h);var p=e.splice(0,u);i.sigBytes-=f}return new s.init(p,f)},clone:function(){var t=o.clone.call(this);return t._data=this._data.clone(),t},_minBufferSize:0}),p=(r.Hasher=h.extend({cfg:o.extend(),init:function(t){this.cfg=this.cfg.extend(t),this.reset()},reset:function(){h.reset.call(this),this._doReset()},update:function(t){return this._append(t),this._process(),this},finalize:function(t){t&&this._append(t);var n=this._doFinalize();return n},blockSize:16,_createHelper:function(t){return function(n,i){return new t.init(i).finalize(n)}},_createHmacHelper:function(t){return function(n,i){return new p.HMAC.init(t,i).finalize(n)}}}),e.algo={});return e}(Math);return t}); |
||||
//# sourceMappingURL=core.min.js.map
|
@ -1,135 +0,0 @@ |
||||
;(function (root, factory) { |
||||
if (typeof exports === "object") { |
||||
// CommonJS
|
||||
module.exports = exports = factory(require("./core")); |
||||
} |
||||
else if (typeof define === "function" && define.amd) { |
||||
// AMD
|
||||
define(["./core"], factory); |
||||
} |
||||
else { |
||||
// Global (browser)
|
||||
factory(root.CryptoJS); |
||||
} |
||||
}(this, function (CryptoJS) { |
||||
|
||||
(function () { |
||||
// Shortcuts
|
||||
var C = CryptoJS; |
||||
var C_lib = C.lib; |
||||
var WordArray = C_lib.WordArray; |
||||
var C_enc = C.enc; |
||||
|
||||
/** |
||||
* Base64 encoding strategy. |
||||
*/ |
||||
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) { |
||||
// Shortcuts
|
||||
var words = wordArray.words; |
||||
var sigBytes = wordArray.sigBytes; |
||||
var map = this._map; |
||||
|
||||
// Clamp excess bits
|
||||
wordArray.clamp(); |
||||
|
||||
// Convert
|
||||
var base64Chars = []; |
||||
for (var i = 0; i < sigBytes; i += 3) { |
||||
var byte1 = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff; |
||||
var byte2 = (words[(i + 1) >>> 2] >>> (24 - ((i + 1) % 4) * 8)) & 0xff; |
||||
var byte3 = (words[(i + 2) >>> 2] >>> (24 - ((i + 2) % 4) * 8)) & 0xff; |
||||
|
||||
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))) & 0x3f)); |
||||
} |
||||
} |
||||
|
||||
// Add padding
|
||||
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) { |
||||
// Shortcuts
|
||||
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; |
||||
} |
||||
} |
||||
|
||||
// Ignore padding
|
||||
var paddingChar = map.charAt(64); |
||||
if (paddingChar) { |
||||
var paddingIndex = base64Str.indexOf(paddingChar); |
||||
if (paddingIndex !== -1) { |
||||
base64StrLength = paddingIndex; |
||||
} |
||||
} |
||||
|
||||
// Convert
|
||||
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); |
||||
words[nBytes >>> 2] |= (bits1 | bits2) << (24 - (nBytes % 4) * 8); |
||||
nBytes++; |
||||
} |
||||
} |
||||
return WordArray.create(words, nBytes); |
||||
} |
||||
}()); |
||||
|
||||
|
||||
return CryptoJS.enc.Base64; |
||||
|
||||
})); |
@ -1 +0,0 @@ |
||||
(function(root,factory){if(typeof exports==="object"){module.exports=exports=factory(require("./core"))}else if(typeof define==="function"&&define.amd){define(["./core"],factory)}else{factory(root.CryptoJS)}})(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={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*.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("")},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;words[nBytes>>>2]|=(bits1|bits2)<<24-nBytes%4*8;nBytes++}}return WordArray.create(words,nBytes)}})();return CryptoJS.enc.Base64}); |
@ -1,199 +0,0 @@ |
||||
;(function (root, factory) { |
||||
if (typeof exports === "object") { |
||||
// CommonJS
|
||||
module.exports = exports = factory(require("./core")); |
||||
} |
||||
else if (typeof define === "function" && define.amd) { |
||||
// AMD
|
||||
define(["./core"], factory); |
||||
} |
||||
else { |
||||
// Global (browser)
|
||||
factory(root.CryptoJS); |
||||
} |
||||
}(this, function (CryptoJS) { |
||||
|
||||
(function (Math) { |
||||
// Shortcuts
|
||||
var C = CryptoJS; |
||||
var C_lib = C.lib; |
||||
var WordArray = C_lib.WordArray; |
||||
var Hasher = C_lib.Hasher; |
||||
var C_algo = C.algo; |
||||
|
||||
// Initialization and round constants tables
|
||||
var H = []; |
||||
var K = []; |
||||
|
||||
// Compute constants
|
||||
(function () { |
||||
function isPrime(n) { |
||||
var sqrtN = Math.sqrt(n); |
||||
for (var factor = 2; factor <= sqrtN; factor++) { |
||||
if (!(n % factor)) { |
||||
return false; |
||||
} |
||||
} |
||||
|
||||
return true; |
||||
} |
||||
|
||||
function getFractionalBits(n) { |
||||
return ((n - (n | 0)) * 0x100000000) | 0; |
||||
} |
||||
|
||||
var n = 2; |
||||
var nPrime = 0; |
||||
while (nPrime < 64) { |
||||
if (isPrime(n)) { |
||||
if (nPrime < 8) { |
||||
H[nPrime] = getFractionalBits(Math.pow(n, 1 / 2)); |
||||
} |
||||
K[nPrime] = getFractionalBits(Math.pow(n, 1 / 3)); |
||||
|
||||
nPrime++; |
||||
} |
||||
|
||||
n++; |
||||
} |
||||
}()); |
||||
|
||||
// Reusable object
|
||||
var W = []; |
||||
|
||||
/** |
||||
* SHA-256 hash algorithm. |
||||
*/ |
||||
var SHA256 = C_algo.SHA256 = Hasher.extend({ |
||||
_doReset: function () { |
||||
this._hash = new WordArray.init(H.slice(0)); |
||||
}, |
||||
|
||||
_doProcessBlock: function (M, offset) { |
||||
// Shortcut
|
||||
var H = this._hash.words; |
||||
|
||||
// Working variables
|
||||
var a = H[0]; |
||||
var b = H[1]; |
||||
var c = H[2]; |
||||
var d = H[3]; |
||||
var e = H[4]; |
||||
var f = H[5]; |
||||
var g = H[6]; |
||||
var h = H[7]; |
||||
|
||||
// Computation
|
||||
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; |
||||
} |
||||
|
||||
// Intermediate hash value
|
||||
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; |
||||
H[5] = (H[5] + f) | 0; |
||||
H[6] = (H[6] + g) | 0; |
||||
H[7] = (H[7] + h) | 0; |
||||
}, |
||||
|
||||
_doFinalize: function () { |
||||
// Shortcuts
|
||||
var data = this._data; |
||||
var dataWords = data.words; |
||||
|
||||
var nBitsTotal = this._nDataBytes * 8; |
||||
var nBitsLeft = data.sigBytes * 8; |
||||
|
||||
// Add padding
|
||||
dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32); |
||||
dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = Math.floor(nBitsTotal / 0x100000000); |
||||
dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 15] = nBitsTotal; |
||||
data.sigBytes = dataWords.length * 4; |
||||
|
||||
// Hash final blocks
|
||||
this._process(); |
||||
|
||||
// Return final computed hash
|
||||
return this._hash; |
||||
}, |
||||
|
||||
clone: function () { |
||||
var clone = Hasher.clone.call(this); |
||||
clone._hash = this._hash.clone(); |
||||
|
||||
return clone; |
||||
} |
||||
}); |
||||
|
||||
/** |
||||
* Shortcut function to the hasher's object interface. |
||||
* |
||||
* @param {WordArray|string} message The message to hash. |
||||
* |
||||
* @return {WordArray} The hash. |
||||
* |
||||
* @static |
||||
* |
||||
* @example |
||||
* |
||||
* var hash = CryptoJS.SHA256('message'); |
||||
* var hash = CryptoJS.SHA256(wordArray); |
||||
*/ |
||||
C.SHA256 = Hasher._createHelper(SHA256); |
||||
|
||||
/** |
||||
* Shortcut function to the HMAC's object interface. |
||||
* |
||||
* @param {WordArray|string} message The message to hash. |
||||
* @param {WordArray|string} key The secret key. |
||||
* |
||||
* @return {WordArray} The HMAC. |
||||
* |
||||
* @static |
||||
* |
||||
* @example |
||||
* |
||||
* var hmac = CryptoJS.HmacSHA256(message, key); |
||||
*/ |
||||
C.HmacSHA256 = Hasher._createHmacHelper(SHA256); |
||||
}(Math)); |
||||
|
||||
|
||||
return CryptoJS.SHA256; |
||||
|
||||
})); |
@ -1 +0,0 @@ |
||||
(function(root,factory){if(typeof exports==="object"){module.exports=exports=factory(require("./core"))}else if(typeof define==="function"&&define.amd){define(["./core"],factory)}else{factory(root.CryptoJS)}})(this,function(CryptoJS){(function(Math){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(n){var sqrtN=Math.sqrt(n);for(var factor=2;factor<=sqrtN;factor++){if(!(n%factor)){return false}}return true}function getFractionalBits(n){return(n-(n|0))*4294967296|0}var n=2;var nPrime=0;while(nPrime<64){if(isPrime(n)){if(nPrime<8){H[nPrime]=getFractionalBits(Math.pow(n,1/2))}K[nPrime]=getFractionalBits(Math.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 H=this._hash.words;var a=H[0];var b=H[1];var c=H[2];var d=H[3];var e=H[4];var f=H[5];var g=H[6];var h=H[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}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;H[5]=H[5]+f|0;H[6]=H[6]+g|0;H[7]=H[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]=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.SHA256=Hasher._createHelper(SHA256);C.HmacSHA256=Hasher._createHmacHelper(SHA256)})(Math);return CryptoJS.SHA256}); |
@ -1 +1 @@ |
||||
(function(){var values;values={};$(document).ready(function(){$("script[type='application/init']").each(function(){var e,k,results,tmp;try{tmp=JSON.parse($(this).text());results=[];for(k in tmp){results.push(values[k]=tmp[k])}return results}catch(error){e=error;return console.log("Parsing error",e)}});return window.addEventListener("message",function(e){var client_id,message,salt,session_state,ss,stat,word;message=e.data;console.log("message=",message);client_id=decodeURIComponent(message.split(" ")[0]);session_state=decodeURIComponent(message.split(" ")[1]);salt=decodeURIComponent(session_state.split(".")[1]);word=CryptoJS.enc.Utf8.parse(client_id+" "+e.origin+" "+salt);ss=CryptoJS.enc.Base64.stringify(word)+"."+salt;if(session_state===ss){stat="unchanged"}else{stat="changed"}return e.source.postMessage(stat,e.origin)},false)})}).call(this); |
||||
(function(){var values;values={};$(document).ready(function(){$("script[type='application/init']").each(function(){var e,k,results,tmp;try{tmp=JSON.parse($(this).text());results=[];for(k in tmp){results.push(values[k]=tmp[k])}return results}catch(error){e=error;return console.log("Parsing error",e)}});return window.addEventListener("message",function(e){var client_id,message,salt,session_state,ss,stat;message=e.data;console.log("message=",message);client_id=decodeURIComponent(message.split(" ")[0]);session_state=decodeURIComponent(message.split(" ")[1]);salt=decodeURIComponent(session_state.split(".")[1]);ss=btoa(client_id+" "+e.origin+" "+salt)+"."+salt;if(session_state===ss){stat="unchanged"}else{stat="changed"}return e.source.postMessage(stat,e.origin)},false)})}).call(this); |
||||
|
Loading…
Reference in new issue