Show More
Commit Description:
change to encrypted cookies
Commit Description:
change to encrypted cookies
References:
File last commit:
Show/Diff file:
Action:
node_modules/crypto-js/enc-base64.js
| 134 lines
| 3.9 KiB
| application/javascript
| JavascriptLexer
|
r789 | ;(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; | |||
})); |