spring-jekyll-theme 0.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
 - data/README.md +49 -0
 - data/_includes/disqus.html +17 -0
 - data/_includes/disqus_comments.html +20 -0
 - data/_includes/footer.html +23 -0
 - data/_includes/google-analytics.html +9 -0
 - data/_includes/head.html +21 -0
 - data/_includes/header.html +31 -0
 - data/_includes/profile.html +21 -0
 - data/_includes/social.html +19 -0
 - data/_layouts/default.html +20 -0
 - data/_layouts/home.html +34 -0
 - data/_layouts/page.html +14 -0
 - data/_layouts/post.html +43 -0
 - data/_sass/spring/_base.scss +272 -0
 - data/_sass/spring/_layout.scss +290 -0
 - data/_sass/spring/_syntax-highlighting.scss +71 -0
 - data/_sass/spring.scss +56 -0
 - data/assets/3rd-party/crypto-js/CONTRIBUTING.md +28 -0
 - data/assets/3rd-party/crypto-js/LICENSE +24 -0
 - data/assets/3rd-party/crypto-js/README.md +249 -0
 - data/assets/3rd-party/crypto-js/aes.js +234 -0
 - data/assets/3rd-party/crypto-js/bower.json +35 -0
 - data/assets/3rd-party/crypto-js/cipher-core.js +890 -0
 - data/assets/3rd-party/crypto-js/core.js +797 -0
 - data/assets/3rd-party/crypto-js/crypto-js.js +6059 -0
 - data/assets/3rd-party/crypto-js/docs/QuickStartGuide.wiki +470 -0
 - data/assets/3rd-party/crypto-js/enc-base64.js +136 -0
 - data/assets/3rd-party/crypto-js/enc-hex.js +18 -0
 - data/assets/3rd-party/crypto-js/enc-latin1.js +18 -0
 - data/assets/3rd-party/crypto-js/enc-utf16.js +149 -0
 - data/assets/3rd-party/crypto-js/enc-utf8.js +18 -0
 - data/assets/3rd-party/crypto-js/evpkdf.js +134 -0
 - data/assets/3rd-party/crypto-js/format-hex.js +66 -0
 - data/assets/3rd-party/crypto-js/format-openssl.js +18 -0
 - data/assets/3rd-party/crypto-js/hmac-md5.js +18 -0
 - data/assets/3rd-party/crypto-js/hmac-ripemd160.js +18 -0
 - data/assets/3rd-party/crypto-js/hmac-sha1.js +18 -0
 - data/assets/3rd-party/crypto-js/hmac-sha224.js +18 -0
 - data/assets/3rd-party/crypto-js/hmac-sha256.js +18 -0
 - data/assets/3rd-party/crypto-js/hmac-sha3.js +18 -0
 - data/assets/3rd-party/crypto-js/hmac-sha384.js +18 -0
 - data/assets/3rd-party/crypto-js/hmac-sha512.js +18 -0
 - data/assets/3rd-party/crypto-js/hmac.js +143 -0
 - data/assets/3rd-party/crypto-js/index.js +18 -0
 - data/assets/3rd-party/crypto-js/lib-typedarrays.js +76 -0
 - data/assets/3rd-party/crypto-js/md5.js +268 -0
 - data/assets/3rd-party/crypto-js/mode-cfb.js +80 -0
 - data/assets/3rd-party/crypto-js/mode-ctr-gladman.js +116 -0
 - data/assets/3rd-party/crypto-js/mode-ctr.js +58 -0
 - data/assets/3rd-party/crypto-js/mode-ecb.js +40 -0
 - data/assets/3rd-party/crypto-js/mode-ofb.js +54 -0
 - data/assets/3rd-party/crypto-js/package.json +66 -0
 - data/assets/3rd-party/crypto-js/pad-ansix923.js +49 -0
 - data/assets/3rd-party/crypto-js/pad-iso10126.js +44 -0
 - data/assets/3rd-party/crypto-js/pad-iso97971.js +40 -0
 - data/assets/3rd-party/crypto-js/pad-nopadding.js +30 -0
 - data/assets/3rd-party/crypto-js/pad-pkcs7.js +18 -0
 - data/assets/3rd-party/crypto-js/pad-zeropadding.js +47 -0
 - data/assets/3rd-party/crypto-js/pbkdf2.js +145 -0
 - data/assets/3rd-party/crypto-js/rabbit-legacy.js +190 -0
 - data/assets/3rd-party/crypto-js/rabbit.js +192 -0
 - data/assets/3rd-party/crypto-js/rc4.js +139 -0
 - data/assets/3rd-party/crypto-js/ripemd160.js +267 -0
 - data/assets/3rd-party/crypto-js/sha1.js +150 -0
 - data/assets/3rd-party/crypto-js/sha224.js +80 -0
 - data/assets/3rd-party/crypto-js/sha256.js +199 -0
 - data/assets/3rd-party/crypto-js/sha3.js +326 -0
 - data/assets/3rd-party/crypto-js/sha384.js +83 -0
 - data/assets/3rd-party/crypto-js/sha512.js +326 -0
 - data/assets/3rd-party/crypto-js/tripledes.js +779 -0
 - data/assets/3rd-party/crypto-js/x64-core.js +304 -0
 - data/assets/css/style.scss +5 -0
 - data/assets/ecmascripts/index.js +25 -0
 - data/assets/images/avatar.png +0 -0
 - data/assets/images/background.jpg +0 -0
 - data/assets/social-icons.svg +28 -0
 - metadata +176 -0
 
| 
         @@ -0,0 +1,54 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            ;(function (root, factory, undef) {
         
     | 
| 
      
 2 
     | 
    
         
            +
            	if (typeof exports === "object") {
         
     | 
| 
      
 3 
     | 
    
         
            +
            		// CommonJS
         
     | 
| 
      
 4 
     | 
    
         
            +
            		module.exports = exports = factory(require("./core"), require("./cipher-core"));
         
     | 
| 
      
 5 
     | 
    
         
            +
            	}
         
     | 
| 
      
 6 
     | 
    
         
            +
            	else if (typeof define === "function" && define.amd) {
         
     | 
| 
      
 7 
     | 
    
         
            +
            		// AMD
         
     | 
| 
      
 8 
     | 
    
         
            +
            		define(["./core", "./cipher-core"], factory);
         
     | 
| 
      
 9 
     | 
    
         
            +
            	}
         
     | 
| 
      
 10 
     | 
    
         
            +
            	else {
         
     | 
| 
      
 11 
     | 
    
         
            +
            		// Global (browser)
         
     | 
| 
      
 12 
     | 
    
         
            +
            		factory(root.CryptoJS);
         
     | 
| 
      
 13 
     | 
    
         
            +
            	}
         
     | 
| 
      
 14 
     | 
    
         
            +
            }(this, function (CryptoJS) {
         
     | 
| 
      
 15 
     | 
    
         
            +
             
     | 
| 
      
 16 
     | 
    
         
            +
            	/**
         
     | 
| 
      
 17 
     | 
    
         
            +
            	 * Output Feedback block mode.
         
     | 
| 
      
 18 
     | 
    
         
            +
            	 */
         
     | 
| 
      
 19 
     | 
    
         
            +
            	CryptoJS.mode.OFB = (function () {
         
     | 
| 
      
 20 
     | 
    
         
            +
            	    var OFB = CryptoJS.lib.BlockCipherMode.extend();
         
     | 
| 
      
 21 
     | 
    
         
            +
             
     | 
| 
      
 22 
     | 
    
         
            +
            	    var Encryptor = OFB.Encryptor = OFB.extend({
         
     | 
| 
      
 23 
     | 
    
         
            +
            	        processBlock: function (words, offset) {
         
     | 
| 
      
 24 
     | 
    
         
            +
            	            // Shortcuts
         
     | 
| 
      
 25 
     | 
    
         
            +
            	            var cipher = this._cipher
         
     | 
| 
      
 26 
     | 
    
         
            +
            	            var blockSize = cipher.blockSize;
         
     | 
| 
      
 27 
     | 
    
         
            +
            	            var iv = this._iv;
         
     | 
| 
      
 28 
     | 
    
         
            +
            	            var keystream = this._keystream;
         
     | 
| 
      
 29 
     | 
    
         
            +
             
     | 
| 
      
 30 
     | 
    
         
            +
            	            // Generate keystream
         
     | 
| 
      
 31 
     | 
    
         
            +
            	            if (iv) {
         
     | 
| 
      
 32 
     | 
    
         
            +
            	                keystream = this._keystream = iv.slice(0);
         
     | 
| 
      
 33 
     | 
    
         
            +
             
     | 
| 
      
 34 
     | 
    
         
            +
            	                // Remove IV for subsequent blocks
         
     | 
| 
      
 35 
     | 
    
         
            +
            	                this._iv = undefined;
         
     | 
| 
      
 36 
     | 
    
         
            +
            	            }
         
     | 
| 
      
 37 
     | 
    
         
            +
            	            cipher.encryptBlock(keystream, 0);
         
     | 
| 
      
 38 
     | 
    
         
            +
             
     | 
| 
      
 39 
     | 
    
         
            +
            	            // Encrypt
         
     | 
| 
      
 40 
     | 
    
         
            +
            	            for (var i = 0; i < blockSize; i++) {
         
     | 
| 
      
 41 
     | 
    
         
            +
            	                words[offset + i] ^= keystream[i];
         
     | 
| 
      
 42 
     | 
    
         
            +
            	            }
         
     | 
| 
      
 43 
     | 
    
         
            +
            	        }
         
     | 
| 
      
 44 
     | 
    
         
            +
            	    });
         
     | 
| 
      
 45 
     | 
    
         
            +
             
     | 
| 
      
 46 
     | 
    
         
            +
            	    OFB.Decryptor = Encryptor;
         
     | 
| 
      
 47 
     | 
    
         
            +
             
     | 
| 
      
 48 
     | 
    
         
            +
            	    return OFB;
         
     | 
| 
      
 49 
     | 
    
         
            +
            	}());
         
     | 
| 
      
 50 
     | 
    
         
            +
             
     | 
| 
      
 51 
     | 
    
         
            +
             
     | 
| 
      
 52 
     | 
    
         
            +
            	return CryptoJS.mode.OFB;
         
     | 
| 
      
 53 
     | 
    
         
            +
             
     | 
| 
      
 54 
     | 
    
         
            +
            }));
         
     | 
| 
         @@ -0,0 +1,66 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            {
         
     | 
| 
      
 2 
     | 
    
         
            +
              "_from": "crypto-js",
         
     | 
| 
      
 3 
     | 
    
         
            +
              "_id": "crypto-js@4.0.0",
         
     | 
| 
      
 4 
     | 
    
         
            +
              "_inBundle": false,
         
     | 
| 
      
 5 
     | 
    
         
            +
              "_integrity": "sha1-KQSrJnep0EKFai6i74DekuSjbcw=",
         
     | 
| 
      
 6 
     | 
    
         
            +
              "_location": "/crypto-js",
         
     | 
| 
      
 7 
     | 
    
         
            +
              "_phantomChildren": {},
         
     | 
| 
      
 8 
     | 
    
         
            +
              "_requested": {
         
     | 
| 
      
 9 
     | 
    
         
            +
                "type": "tag",
         
     | 
| 
      
 10 
     | 
    
         
            +
                "registry": true,
         
     | 
| 
      
 11 
     | 
    
         
            +
                "raw": "crypto-js",
         
     | 
| 
      
 12 
     | 
    
         
            +
                "name": "crypto-js",
         
     | 
| 
      
 13 
     | 
    
         
            +
                "escapedName": "crypto-js",
         
     | 
| 
      
 14 
     | 
    
         
            +
                "rawSpec": "",
         
     | 
| 
      
 15 
     | 
    
         
            +
                "saveSpec": null,
         
     | 
| 
      
 16 
     | 
    
         
            +
                "fetchSpec": "latest"
         
     | 
| 
      
 17 
     | 
    
         
            +
              },
         
     | 
| 
      
 18 
     | 
    
         
            +
              "_requiredBy": [
         
     | 
| 
      
 19 
     | 
    
         
            +
                "#USER"
         
     | 
| 
      
 20 
     | 
    
         
            +
              ],
         
     | 
| 
      
 21 
     | 
    
         
            +
              "_resolved": "https://registry.nlark.com/crypto-js/download/crypto-js-4.0.0.tgz",
         
     | 
| 
      
 22 
     | 
    
         
            +
              "_shasum": "2904ab2677a9d042856a2ea2ef80de92e4a36dcc",
         
     | 
| 
      
 23 
     | 
    
         
            +
              "_spec": "crypto-js",
         
     | 
| 
      
 24 
     | 
    
         
            +
              "_where": "E:\\git\\cbtpro.github.io",
         
     | 
| 
      
 25 
     | 
    
         
            +
              "author": {
         
     | 
| 
      
 26 
     | 
    
         
            +
                "name": "Evan Vosberg",
         
     | 
| 
      
 27 
     | 
    
         
            +
                "url": "http://github.com/evanvosberg"
         
     | 
| 
      
 28 
     | 
    
         
            +
              },
         
     | 
| 
      
 29 
     | 
    
         
            +
              "bugs": {
         
     | 
| 
      
 30 
     | 
    
         
            +
                "url": "https://github.com/brix/crypto-js/issues"
         
     | 
| 
      
 31 
     | 
    
         
            +
              },
         
     | 
| 
      
 32 
     | 
    
         
            +
              "bundleDependencies": false,
         
     | 
| 
      
 33 
     | 
    
         
            +
              "dependencies": {},
         
     | 
| 
      
 34 
     | 
    
         
            +
              "deprecated": false,
         
     | 
| 
      
 35 
     | 
    
         
            +
              "description": "JavaScript library of crypto standards.",
         
     | 
| 
      
 36 
     | 
    
         
            +
              "homepage": "http://github.com/brix/crypto-js",
         
     | 
| 
      
 37 
     | 
    
         
            +
              "keywords": [
         
     | 
| 
      
 38 
     | 
    
         
            +
                "security",
         
     | 
| 
      
 39 
     | 
    
         
            +
                "crypto",
         
     | 
| 
      
 40 
     | 
    
         
            +
                "Hash",
         
     | 
| 
      
 41 
     | 
    
         
            +
                "MD5",
         
     | 
| 
      
 42 
     | 
    
         
            +
                "SHA1",
         
     | 
| 
      
 43 
     | 
    
         
            +
                "SHA-1",
         
     | 
| 
      
 44 
     | 
    
         
            +
                "SHA256",
         
     | 
| 
      
 45 
     | 
    
         
            +
                "SHA-256",
         
     | 
| 
      
 46 
     | 
    
         
            +
                "RC4",
         
     | 
| 
      
 47 
     | 
    
         
            +
                "Rabbit",
         
     | 
| 
      
 48 
     | 
    
         
            +
                "AES",
         
     | 
| 
      
 49 
     | 
    
         
            +
                "DES",
         
     | 
| 
      
 50 
     | 
    
         
            +
                "PBKDF2",
         
     | 
| 
      
 51 
     | 
    
         
            +
                "HMAC",
         
     | 
| 
      
 52 
     | 
    
         
            +
                "OFB",
         
     | 
| 
      
 53 
     | 
    
         
            +
                "CFB",
         
     | 
| 
      
 54 
     | 
    
         
            +
                "CTR",
         
     | 
| 
      
 55 
     | 
    
         
            +
                "CBC",
         
     | 
| 
      
 56 
     | 
    
         
            +
                "Base64"
         
     | 
| 
      
 57 
     | 
    
         
            +
              ],
         
     | 
| 
      
 58 
     | 
    
         
            +
              "license": "MIT",
         
     | 
| 
      
 59 
     | 
    
         
            +
              "main": "index.js",
         
     | 
| 
      
 60 
     | 
    
         
            +
              "name": "crypto-js",
         
     | 
| 
      
 61 
     | 
    
         
            +
              "repository": {
         
     | 
| 
      
 62 
     | 
    
         
            +
                "type": "git",
         
     | 
| 
      
 63 
     | 
    
         
            +
                "url": "git+ssh://git@github.com/brix/crypto-js.git"
         
     | 
| 
      
 64 
     | 
    
         
            +
              },
         
     | 
| 
      
 65 
     | 
    
         
            +
              "version": "4.0.0"
         
     | 
| 
      
 66 
     | 
    
         
            +
            }
         
     | 
| 
         @@ -0,0 +1,49 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            ;(function (root, factory, undef) {
         
     | 
| 
      
 2 
     | 
    
         
            +
            	if (typeof exports === "object") {
         
     | 
| 
      
 3 
     | 
    
         
            +
            		// CommonJS
         
     | 
| 
      
 4 
     | 
    
         
            +
            		module.exports = exports = factory(require("./core"), require("./cipher-core"));
         
     | 
| 
      
 5 
     | 
    
         
            +
            	}
         
     | 
| 
      
 6 
     | 
    
         
            +
            	else if (typeof define === "function" && define.amd) {
         
     | 
| 
      
 7 
     | 
    
         
            +
            		// AMD
         
     | 
| 
      
 8 
     | 
    
         
            +
            		define(["./core", "./cipher-core"], factory);
         
     | 
| 
      
 9 
     | 
    
         
            +
            	}
         
     | 
| 
      
 10 
     | 
    
         
            +
            	else {
         
     | 
| 
      
 11 
     | 
    
         
            +
            		// Global (browser)
         
     | 
| 
      
 12 
     | 
    
         
            +
            		factory(root.CryptoJS);
         
     | 
| 
      
 13 
     | 
    
         
            +
            	}
         
     | 
| 
      
 14 
     | 
    
         
            +
            }(this, function (CryptoJS) {
         
     | 
| 
      
 15 
     | 
    
         
            +
             
     | 
| 
      
 16 
     | 
    
         
            +
            	/**
         
     | 
| 
      
 17 
     | 
    
         
            +
            	 * ANSI X.923 padding strategy.
         
     | 
| 
      
 18 
     | 
    
         
            +
            	 */
         
     | 
| 
      
 19 
     | 
    
         
            +
            	CryptoJS.pad.AnsiX923 = {
         
     | 
| 
      
 20 
     | 
    
         
            +
            	    pad: function (data, blockSize) {
         
     | 
| 
      
 21 
     | 
    
         
            +
            	        // Shortcuts
         
     | 
| 
      
 22 
     | 
    
         
            +
            	        var dataSigBytes = data.sigBytes;
         
     | 
| 
      
 23 
     | 
    
         
            +
            	        var blockSizeBytes = blockSize * 4;
         
     | 
| 
      
 24 
     | 
    
         
            +
             
     | 
| 
      
 25 
     | 
    
         
            +
            	        // Count padding bytes
         
     | 
| 
      
 26 
     | 
    
         
            +
            	        var nPaddingBytes = blockSizeBytes - dataSigBytes % blockSizeBytes;
         
     | 
| 
      
 27 
     | 
    
         
            +
             
     | 
| 
      
 28 
     | 
    
         
            +
            	        // Compute last byte position
         
     | 
| 
      
 29 
     | 
    
         
            +
            	        var lastBytePos = dataSigBytes + nPaddingBytes - 1;
         
     | 
| 
      
 30 
     | 
    
         
            +
             
     | 
| 
      
 31 
     | 
    
         
            +
            	        // Pad
         
     | 
| 
      
 32 
     | 
    
         
            +
            	        data.clamp();
         
     | 
| 
      
 33 
     | 
    
         
            +
            	        data.words[lastBytePos >>> 2] |= nPaddingBytes << (24 - (lastBytePos % 4) * 8);
         
     | 
| 
      
 34 
     | 
    
         
            +
            	        data.sigBytes += nPaddingBytes;
         
     | 
| 
      
 35 
     | 
    
         
            +
            	    },
         
     | 
| 
      
 36 
     | 
    
         
            +
             
     | 
| 
      
 37 
     | 
    
         
            +
            	    unpad: function (data) {
         
     | 
| 
      
 38 
     | 
    
         
            +
            	        // Get number of padding bytes from last byte
         
     | 
| 
      
 39 
     | 
    
         
            +
            	        var nPaddingBytes = data.words[(data.sigBytes - 1) >>> 2] & 0xff;
         
     | 
| 
      
 40 
     | 
    
         
            +
             
     | 
| 
      
 41 
     | 
    
         
            +
            	        // Remove padding
         
     | 
| 
      
 42 
     | 
    
         
            +
            	        data.sigBytes -= nPaddingBytes;
         
     | 
| 
      
 43 
     | 
    
         
            +
            	    }
         
     | 
| 
      
 44 
     | 
    
         
            +
            	};
         
     | 
| 
      
 45 
     | 
    
         
            +
             
     | 
| 
      
 46 
     | 
    
         
            +
             
     | 
| 
      
 47 
     | 
    
         
            +
            	return CryptoJS.pad.Ansix923;
         
     | 
| 
      
 48 
     | 
    
         
            +
             
     | 
| 
      
 49 
     | 
    
         
            +
            }));
         
     | 
| 
         @@ -0,0 +1,44 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            ;(function (root, factory, undef) {
         
     | 
| 
      
 2 
     | 
    
         
            +
            	if (typeof exports === "object") {
         
     | 
| 
      
 3 
     | 
    
         
            +
            		// CommonJS
         
     | 
| 
      
 4 
     | 
    
         
            +
            		module.exports = exports = factory(require("./core"), require("./cipher-core"));
         
     | 
| 
      
 5 
     | 
    
         
            +
            	}
         
     | 
| 
      
 6 
     | 
    
         
            +
            	else if (typeof define === "function" && define.amd) {
         
     | 
| 
      
 7 
     | 
    
         
            +
            		// AMD
         
     | 
| 
      
 8 
     | 
    
         
            +
            		define(["./core", "./cipher-core"], factory);
         
     | 
| 
      
 9 
     | 
    
         
            +
            	}
         
     | 
| 
      
 10 
     | 
    
         
            +
            	else {
         
     | 
| 
      
 11 
     | 
    
         
            +
            		// Global (browser)
         
     | 
| 
      
 12 
     | 
    
         
            +
            		factory(root.CryptoJS);
         
     | 
| 
      
 13 
     | 
    
         
            +
            	}
         
     | 
| 
      
 14 
     | 
    
         
            +
            }(this, function (CryptoJS) {
         
     | 
| 
      
 15 
     | 
    
         
            +
             
     | 
| 
      
 16 
     | 
    
         
            +
            	/**
         
     | 
| 
      
 17 
     | 
    
         
            +
            	 * ISO 10126 padding strategy.
         
     | 
| 
      
 18 
     | 
    
         
            +
            	 */
         
     | 
| 
      
 19 
     | 
    
         
            +
            	CryptoJS.pad.Iso10126 = {
         
     | 
| 
      
 20 
     | 
    
         
            +
            	    pad: function (data, blockSize) {
         
     | 
| 
      
 21 
     | 
    
         
            +
            	        // Shortcut
         
     | 
| 
      
 22 
     | 
    
         
            +
            	        var blockSizeBytes = blockSize * 4;
         
     | 
| 
      
 23 
     | 
    
         
            +
             
     | 
| 
      
 24 
     | 
    
         
            +
            	        // Count padding bytes
         
     | 
| 
      
 25 
     | 
    
         
            +
            	        var nPaddingBytes = blockSizeBytes - data.sigBytes % blockSizeBytes;
         
     | 
| 
      
 26 
     | 
    
         
            +
             
     | 
| 
      
 27 
     | 
    
         
            +
            	        // Pad
         
     | 
| 
      
 28 
     | 
    
         
            +
            	        data.concat(CryptoJS.lib.WordArray.random(nPaddingBytes - 1)).
         
     | 
| 
      
 29 
     | 
    
         
            +
            	             concat(CryptoJS.lib.WordArray.create([nPaddingBytes << 24], 1));
         
     | 
| 
      
 30 
     | 
    
         
            +
            	    },
         
     | 
| 
      
 31 
     | 
    
         
            +
             
     | 
| 
      
 32 
     | 
    
         
            +
            	    unpad: function (data) {
         
     | 
| 
      
 33 
     | 
    
         
            +
            	        // Get number of padding bytes from last byte
         
     | 
| 
      
 34 
     | 
    
         
            +
            	        var nPaddingBytes = data.words[(data.sigBytes - 1) >>> 2] & 0xff;
         
     | 
| 
      
 35 
     | 
    
         
            +
             
     | 
| 
      
 36 
     | 
    
         
            +
            	        // Remove padding
         
     | 
| 
      
 37 
     | 
    
         
            +
            	        data.sigBytes -= nPaddingBytes;
         
     | 
| 
      
 38 
     | 
    
         
            +
            	    }
         
     | 
| 
      
 39 
     | 
    
         
            +
            	};
         
     | 
| 
      
 40 
     | 
    
         
            +
             
     | 
| 
      
 41 
     | 
    
         
            +
             
     | 
| 
      
 42 
     | 
    
         
            +
            	return CryptoJS.pad.Iso10126;
         
     | 
| 
      
 43 
     | 
    
         
            +
             
     | 
| 
      
 44 
     | 
    
         
            +
            }));
         
     | 
| 
         @@ -0,0 +1,40 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            ;(function (root, factory, undef) {
         
     | 
| 
      
 2 
     | 
    
         
            +
            	if (typeof exports === "object") {
         
     | 
| 
      
 3 
     | 
    
         
            +
            		// CommonJS
         
     | 
| 
      
 4 
     | 
    
         
            +
            		module.exports = exports = factory(require("./core"), require("./cipher-core"));
         
     | 
| 
      
 5 
     | 
    
         
            +
            	}
         
     | 
| 
      
 6 
     | 
    
         
            +
            	else if (typeof define === "function" && define.amd) {
         
     | 
| 
      
 7 
     | 
    
         
            +
            		// AMD
         
     | 
| 
      
 8 
     | 
    
         
            +
            		define(["./core", "./cipher-core"], factory);
         
     | 
| 
      
 9 
     | 
    
         
            +
            	}
         
     | 
| 
      
 10 
     | 
    
         
            +
            	else {
         
     | 
| 
      
 11 
     | 
    
         
            +
            		// Global (browser)
         
     | 
| 
      
 12 
     | 
    
         
            +
            		factory(root.CryptoJS);
         
     | 
| 
      
 13 
     | 
    
         
            +
            	}
         
     | 
| 
      
 14 
     | 
    
         
            +
            }(this, function (CryptoJS) {
         
     | 
| 
      
 15 
     | 
    
         
            +
             
     | 
| 
      
 16 
     | 
    
         
            +
            	/**
         
     | 
| 
      
 17 
     | 
    
         
            +
            	 * ISO/IEC 9797-1 Padding Method 2.
         
     | 
| 
      
 18 
     | 
    
         
            +
            	 */
         
     | 
| 
      
 19 
     | 
    
         
            +
            	CryptoJS.pad.Iso97971 = {
         
     | 
| 
      
 20 
     | 
    
         
            +
            	    pad: function (data, blockSize) {
         
     | 
| 
      
 21 
     | 
    
         
            +
            	        // Add 0x80 byte
         
     | 
| 
      
 22 
     | 
    
         
            +
            	        data.concat(CryptoJS.lib.WordArray.create([0x80000000], 1));
         
     | 
| 
      
 23 
     | 
    
         
            +
             
     | 
| 
      
 24 
     | 
    
         
            +
            	        // Zero pad the rest
         
     | 
| 
      
 25 
     | 
    
         
            +
            	        CryptoJS.pad.ZeroPadding.pad(data, blockSize);
         
     | 
| 
      
 26 
     | 
    
         
            +
            	    },
         
     | 
| 
      
 27 
     | 
    
         
            +
             
     | 
| 
      
 28 
     | 
    
         
            +
            	    unpad: function (data) {
         
     | 
| 
      
 29 
     | 
    
         
            +
            	        // Remove zero padding
         
     | 
| 
      
 30 
     | 
    
         
            +
            	        CryptoJS.pad.ZeroPadding.unpad(data);
         
     | 
| 
      
 31 
     | 
    
         
            +
             
     | 
| 
      
 32 
     | 
    
         
            +
            	        // Remove one more byte -- the 0x80 byte
         
     | 
| 
      
 33 
     | 
    
         
            +
            	        data.sigBytes--;
         
     | 
| 
      
 34 
     | 
    
         
            +
            	    }
         
     | 
| 
      
 35 
     | 
    
         
            +
            	};
         
     | 
| 
      
 36 
     | 
    
         
            +
             
     | 
| 
      
 37 
     | 
    
         
            +
             
     | 
| 
      
 38 
     | 
    
         
            +
            	return CryptoJS.pad.Iso97971;
         
     | 
| 
      
 39 
     | 
    
         
            +
             
     | 
| 
      
 40 
     | 
    
         
            +
            }));
         
     | 
| 
         @@ -0,0 +1,30 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            ;(function (root, factory, undef) {
         
     | 
| 
      
 2 
     | 
    
         
            +
            	if (typeof exports === "object") {
         
     | 
| 
      
 3 
     | 
    
         
            +
            		// CommonJS
         
     | 
| 
      
 4 
     | 
    
         
            +
            		module.exports = exports = factory(require("./core"), require("./cipher-core"));
         
     | 
| 
      
 5 
     | 
    
         
            +
            	}
         
     | 
| 
      
 6 
     | 
    
         
            +
            	else if (typeof define === "function" && define.amd) {
         
     | 
| 
      
 7 
     | 
    
         
            +
            		// AMD
         
     | 
| 
      
 8 
     | 
    
         
            +
            		define(["./core", "./cipher-core"], factory);
         
     | 
| 
      
 9 
     | 
    
         
            +
            	}
         
     | 
| 
      
 10 
     | 
    
         
            +
            	else {
         
     | 
| 
      
 11 
     | 
    
         
            +
            		// Global (browser)
         
     | 
| 
      
 12 
     | 
    
         
            +
            		factory(root.CryptoJS);
         
     | 
| 
      
 13 
     | 
    
         
            +
            	}
         
     | 
| 
      
 14 
     | 
    
         
            +
            }(this, function (CryptoJS) {
         
     | 
| 
      
 15 
     | 
    
         
            +
             
     | 
| 
      
 16 
     | 
    
         
            +
            	/**
         
     | 
| 
      
 17 
     | 
    
         
            +
            	 * A noop padding strategy.
         
     | 
| 
      
 18 
     | 
    
         
            +
            	 */
         
     | 
| 
      
 19 
     | 
    
         
            +
            	CryptoJS.pad.NoPadding = {
         
     | 
| 
      
 20 
     | 
    
         
            +
            	    pad: function () {
         
     | 
| 
      
 21 
     | 
    
         
            +
            	    },
         
     | 
| 
      
 22 
     | 
    
         
            +
             
     | 
| 
      
 23 
     | 
    
         
            +
            	    unpad: function () {
         
     | 
| 
      
 24 
     | 
    
         
            +
            	    }
         
     | 
| 
      
 25 
     | 
    
         
            +
            	};
         
     | 
| 
      
 26 
     | 
    
         
            +
             
     | 
| 
      
 27 
     | 
    
         
            +
             
     | 
| 
      
 28 
     | 
    
         
            +
            	return CryptoJS.pad.NoPadding;
         
     | 
| 
      
 29 
     | 
    
         
            +
             
     | 
| 
      
 30 
     | 
    
         
            +
            }));
         
     | 
| 
         @@ -0,0 +1,18 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            ;(function (root, factory, undef) {
         
     | 
| 
      
 2 
     | 
    
         
            +
            	if (typeof exports === "object") {
         
     | 
| 
      
 3 
     | 
    
         
            +
            		// CommonJS
         
     | 
| 
      
 4 
     | 
    
         
            +
            		module.exports = exports = factory(require("./core"), require("./cipher-core"));
         
     | 
| 
      
 5 
     | 
    
         
            +
            	}
         
     | 
| 
      
 6 
     | 
    
         
            +
            	else if (typeof define === "function" && define.amd) {
         
     | 
| 
      
 7 
     | 
    
         
            +
            		// AMD
         
     | 
| 
      
 8 
     | 
    
         
            +
            		define(["./core", "./cipher-core"], factory);
         
     | 
| 
      
 9 
     | 
    
         
            +
            	}
         
     | 
| 
      
 10 
     | 
    
         
            +
            	else {
         
     | 
| 
      
 11 
     | 
    
         
            +
            		// Global (browser)
         
     | 
| 
      
 12 
     | 
    
         
            +
            		factory(root.CryptoJS);
         
     | 
| 
      
 13 
     | 
    
         
            +
            	}
         
     | 
| 
      
 14 
     | 
    
         
            +
            }(this, function (CryptoJS) {
         
     | 
| 
      
 15 
     | 
    
         
            +
             
     | 
| 
      
 16 
     | 
    
         
            +
            	return CryptoJS.pad.Pkcs7;
         
     | 
| 
      
 17 
     | 
    
         
            +
             
     | 
| 
      
 18 
     | 
    
         
            +
            }));
         
     | 
| 
         @@ -0,0 +1,47 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            ;(function (root, factory, undef) {
         
     | 
| 
      
 2 
     | 
    
         
            +
            	if (typeof exports === "object") {
         
     | 
| 
      
 3 
     | 
    
         
            +
            		// CommonJS
         
     | 
| 
      
 4 
     | 
    
         
            +
            		module.exports = exports = factory(require("./core"), require("./cipher-core"));
         
     | 
| 
      
 5 
     | 
    
         
            +
            	}
         
     | 
| 
      
 6 
     | 
    
         
            +
            	else if (typeof define === "function" && define.amd) {
         
     | 
| 
      
 7 
     | 
    
         
            +
            		// AMD
         
     | 
| 
      
 8 
     | 
    
         
            +
            		define(["./core", "./cipher-core"], factory);
         
     | 
| 
      
 9 
     | 
    
         
            +
            	}
         
     | 
| 
      
 10 
     | 
    
         
            +
            	else {
         
     | 
| 
      
 11 
     | 
    
         
            +
            		// Global (browser)
         
     | 
| 
      
 12 
     | 
    
         
            +
            		factory(root.CryptoJS);
         
     | 
| 
      
 13 
     | 
    
         
            +
            	}
         
     | 
| 
      
 14 
     | 
    
         
            +
            }(this, function (CryptoJS) {
         
     | 
| 
      
 15 
     | 
    
         
            +
             
     | 
| 
      
 16 
     | 
    
         
            +
            	/**
         
     | 
| 
      
 17 
     | 
    
         
            +
            	 * Zero padding strategy.
         
     | 
| 
      
 18 
     | 
    
         
            +
            	 */
         
     | 
| 
      
 19 
     | 
    
         
            +
            	CryptoJS.pad.ZeroPadding = {
         
     | 
| 
      
 20 
     | 
    
         
            +
            	    pad: function (data, blockSize) {
         
     | 
| 
      
 21 
     | 
    
         
            +
            	        // Shortcut
         
     | 
| 
      
 22 
     | 
    
         
            +
            	        var blockSizeBytes = blockSize * 4;
         
     | 
| 
      
 23 
     | 
    
         
            +
             
     | 
| 
      
 24 
     | 
    
         
            +
            	        // Pad
         
     | 
| 
      
 25 
     | 
    
         
            +
            	        data.clamp();
         
     | 
| 
      
 26 
     | 
    
         
            +
            	        data.sigBytes += blockSizeBytes - ((data.sigBytes % blockSizeBytes) || blockSizeBytes);
         
     | 
| 
      
 27 
     | 
    
         
            +
            	    },
         
     | 
| 
      
 28 
     | 
    
         
            +
             
     | 
| 
      
 29 
     | 
    
         
            +
            	    unpad: function (data) {
         
     | 
| 
      
 30 
     | 
    
         
            +
            	        // Shortcut
         
     | 
| 
      
 31 
     | 
    
         
            +
            	        var dataWords = data.words;
         
     | 
| 
      
 32 
     | 
    
         
            +
             
     | 
| 
      
 33 
     | 
    
         
            +
            	        // Unpad
         
     | 
| 
      
 34 
     | 
    
         
            +
            	        var i = data.sigBytes - 1;
         
     | 
| 
      
 35 
     | 
    
         
            +
            	        for (var i = data.sigBytes - 1; i >= 0; i--) {
         
     | 
| 
      
 36 
     | 
    
         
            +
            	            if (((dataWords[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff)) {
         
     | 
| 
      
 37 
     | 
    
         
            +
            	                data.sigBytes = i + 1;
         
     | 
| 
      
 38 
     | 
    
         
            +
            	                break;
         
     | 
| 
      
 39 
     | 
    
         
            +
            	            }
         
     | 
| 
      
 40 
     | 
    
         
            +
            	        }
         
     | 
| 
      
 41 
     | 
    
         
            +
            	    }
         
     | 
| 
      
 42 
     | 
    
         
            +
            	};
         
     | 
| 
      
 43 
     | 
    
         
            +
             
     | 
| 
      
 44 
     | 
    
         
            +
             
     | 
| 
      
 45 
     | 
    
         
            +
            	return CryptoJS.pad.ZeroPadding;
         
     | 
| 
      
 46 
     | 
    
         
            +
             
     | 
| 
      
 47 
     | 
    
         
            +
            }));
         
     | 
| 
         @@ -0,0 +1,145 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            ;(function (root, factory, undef) {
         
     | 
| 
      
 2 
     | 
    
         
            +
            	if (typeof exports === "object") {
         
     | 
| 
      
 3 
     | 
    
         
            +
            		// CommonJS
         
     | 
| 
      
 4 
     | 
    
         
            +
            		module.exports = exports = factory(require("./core"), require("./sha1"), require("./hmac"));
         
     | 
| 
      
 5 
     | 
    
         
            +
            	}
         
     | 
| 
      
 6 
     | 
    
         
            +
            	else if (typeof define === "function" && define.amd) {
         
     | 
| 
      
 7 
     | 
    
         
            +
            		// AMD
         
     | 
| 
      
 8 
     | 
    
         
            +
            		define(["./core", "./sha1", "./hmac"], factory);
         
     | 
| 
      
 9 
     | 
    
         
            +
            	}
         
     | 
| 
      
 10 
     | 
    
         
            +
            	else {
         
     | 
| 
      
 11 
     | 
    
         
            +
            		// Global (browser)
         
     | 
| 
      
 12 
     | 
    
         
            +
            		factory(root.CryptoJS);
         
     | 
| 
      
 13 
     | 
    
         
            +
            	}
         
     | 
| 
      
 14 
     | 
    
         
            +
            }(this, function (CryptoJS) {
         
     | 
| 
      
 15 
     | 
    
         
            +
             
     | 
| 
      
 16 
     | 
    
         
            +
            	(function () {
         
     | 
| 
      
 17 
     | 
    
         
            +
            	    // Shortcuts
         
     | 
| 
      
 18 
     | 
    
         
            +
            	    var C = CryptoJS;
         
     | 
| 
      
 19 
     | 
    
         
            +
            	    var C_lib = C.lib;
         
     | 
| 
      
 20 
     | 
    
         
            +
            	    var Base = C_lib.Base;
         
     | 
| 
      
 21 
     | 
    
         
            +
            	    var WordArray = C_lib.WordArray;
         
     | 
| 
      
 22 
     | 
    
         
            +
            	    var C_algo = C.algo;
         
     | 
| 
      
 23 
     | 
    
         
            +
            	    var SHA1 = C_algo.SHA1;
         
     | 
| 
      
 24 
     | 
    
         
            +
            	    var HMAC = C_algo.HMAC;
         
     | 
| 
      
 25 
     | 
    
         
            +
             
     | 
| 
      
 26 
     | 
    
         
            +
            	    /**
         
     | 
| 
      
 27 
     | 
    
         
            +
            	     * Password-Based Key Derivation Function 2 algorithm.
         
     | 
| 
      
 28 
     | 
    
         
            +
            	     */
         
     | 
| 
      
 29 
     | 
    
         
            +
            	    var PBKDF2 = C_algo.PBKDF2 = Base.extend({
         
     | 
| 
      
 30 
     | 
    
         
            +
            	        /**
         
     | 
| 
      
 31 
     | 
    
         
            +
            	         * Configuration options.
         
     | 
| 
      
 32 
     | 
    
         
            +
            	         *
         
     | 
| 
      
 33 
     | 
    
         
            +
            	         * @property {number} keySize The key size in words to generate. Default: 4 (128 bits)
         
     | 
| 
      
 34 
     | 
    
         
            +
            	         * @property {Hasher} hasher The hasher to use. Default: SHA1
         
     | 
| 
      
 35 
     | 
    
         
            +
            	         * @property {number} iterations The number of iterations to perform. Default: 1
         
     | 
| 
      
 36 
     | 
    
         
            +
            	         */
         
     | 
| 
      
 37 
     | 
    
         
            +
            	        cfg: Base.extend({
         
     | 
| 
      
 38 
     | 
    
         
            +
            	            keySize: 128/32,
         
     | 
| 
      
 39 
     | 
    
         
            +
            	            hasher: SHA1,
         
     | 
| 
      
 40 
     | 
    
         
            +
            	            iterations: 1
         
     | 
| 
      
 41 
     | 
    
         
            +
            	        }),
         
     | 
| 
      
 42 
     | 
    
         
            +
             
     | 
| 
      
 43 
     | 
    
         
            +
            	        /**
         
     | 
| 
      
 44 
     | 
    
         
            +
            	         * Initializes a newly created key derivation function.
         
     | 
| 
      
 45 
     | 
    
         
            +
            	         *
         
     | 
| 
      
 46 
     | 
    
         
            +
            	         * @param {Object} cfg (Optional) The configuration options to use for the derivation.
         
     | 
| 
      
 47 
     | 
    
         
            +
            	         *
         
     | 
| 
      
 48 
     | 
    
         
            +
            	         * @example
         
     | 
| 
      
 49 
     | 
    
         
            +
            	         *
         
     | 
| 
      
 50 
     | 
    
         
            +
            	         *     var kdf = CryptoJS.algo.PBKDF2.create();
         
     | 
| 
      
 51 
     | 
    
         
            +
            	         *     var kdf = CryptoJS.algo.PBKDF2.create({ keySize: 8 });
         
     | 
| 
      
 52 
     | 
    
         
            +
            	         *     var kdf = CryptoJS.algo.PBKDF2.create({ keySize: 8, iterations: 1000 });
         
     | 
| 
      
 53 
     | 
    
         
            +
            	         */
         
     | 
| 
      
 54 
     | 
    
         
            +
            	        init: function (cfg) {
         
     | 
| 
      
 55 
     | 
    
         
            +
            	            this.cfg = this.cfg.extend(cfg);
         
     | 
| 
      
 56 
     | 
    
         
            +
            	        },
         
     | 
| 
      
 57 
     | 
    
         
            +
             
     | 
| 
      
 58 
     | 
    
         
            +
            	        /**
         
     | 
| 
      
 59 
     | 
    
         
            +
            	         * Computes the Password-Based Key Derivation Function 2.
         
     | 
| 
      
 60 
     | 
    
         
            +
            	         *
         
     | 
| 
      
 61 
     | 
    
         
            +
            	         * @param {WordArray|string} password The password.
         
     | 
| 
      
 62 
     | 
    
         
            +
            	         * @param {WordArray|string} salt A salt.
         
     | 
| 
      
 63 
     | 
    
         
            +
            	         *
         
     | 
| 
      
 64 
     | 
    
         
            +
            	         * @return {WordArray} The derived key.
         
     | 
| 
      
 65 
     | 
    
         
            +
            	         *
         
     | 
| 
      
 66 
     | 
    
         
            +
            	         * @example
         
     | 
| 
      
 67 
     | 
    
         
            +
            	         *
         
     | 
| 
      
 68 
     | 
    
         
            +
            	         *     var key = kdf.compute(password, salt);
         
     | 
| 
      
 69 
     | 
    
         
            +
            	         */
         
     | 
| 
      
 70 
     | 
    
         
            +
            	        compute: function (password, salt) {
         
     | 
| 
      
 71 
     | 
    
         
            +
            	            // Shortcut
         
     | 
| 
      
 72 
     | 
    
         
            +
            	            var cfg = this.cfg;
         
     | 
| 
      
 73 
     | 
    
         
            +
             
     | 
| 
      
 74 
     | 
    
         
            +
            	            // Init HMAC
         
     | 
| 
      
 75 
     | 
    
         
            +
            	            var hmac = HMAC.create(cfg.hasher, password);
         
     | 
| 
      
 76 
     | 
    
         
            +
             
     | 
| 
      
 77 
     | 
    
         
            +
            	            // Initial values
         
     | 
| 
      
 78 
     | 
    
         
            +
            	            var derivedKey = WordArray.create();
         
     | 
| 
      
 79 
     | 
    
         
            +
            	            var blockIndex = WordArray.create([0x00000001]);
         
     | 
| 
      
 80 
     | 
    
         
            +
             
     | 
| 
      
 81 
     | 
    
         
            +
            	            // Shortcuts
         
     | 
| 
      
 82 
     | 
    
         
            +
            	            var derivedKeyWords = derivedKey.words;
         
     | 
| 
      
 83 
     | 
    
         
            +
            	            var blockIndexWords = blockIndex.words;
         
     | 
| 
      
 84 
     | 
    
         
            +
            	            var keySize = cfg.keySize;
         
     | 
| 
      
 85 
     | 
    
         
            +
            	            var iterations = cfg.iterations;
         
     | 
| 
      
 86 
     | 
    
         
            +
             
     | 
| 
      
 87 
     | 
    
         
            +
            	            // Generate key
         
     | 
| 
      
 88 
     | 
    
         
            +
            	            while (derivedKeyWords.length < keySize) {
         
     | 
| 
      
 89 
     | 
    
         
            +
            	                var block = hmac.update(salt).finalize(blockIndex);
         
     | 
| 
      
 90 
     | 
    
         
            +
            	                hmac.reset();
         
     | 
| 
      
 91 
     | 
    
         
            +
             
     | 
| 
      
 92 
     | 
    
         
            +
            	                // Shortcuts
         
     | 
| 
      
 93 
     | 
    
         
            +
            	                var blockWords = block.words;
         
     | 
| 
      
 94 
     | 
    
         
            +
            	                var blockWordsLength = blockWords.length;
         
     | 
| 
      
 95 
     | 
    
         
            +
             
     | 
| 
      
 96 
     | 
    
         
            +
            	                // Iterations
         
     | 
| 
      
 97 
     | 
    
         
            +
            	                var intermediate = block;
         
     | 
| 
      
 98 
     | 
    
         
            +
            	                for (var i = 1; i < iterations; i++) {
         
     | 
| 
      
 99 
     | 
    
         
            +
            	                    intermediate = hmac.finalize(intermediate);
         
     | 
| 
      
 100 
     | 
    
         
            +
            	                    hmac.reset();
         
     | 
| 
      
 101 
     | 
    
         
            +
             
     | 
| 
      
 102 
     | 
    
         
            +
            	                    // Shortcut
         
     | 
| 
      
 103 
     | 
    
         
            +
            	                    var intermediateWords = intermediate.words;
         
     | 
| 
      
 104 
     | 
    
         
            +
             
     | 
| 
      
 105 
     | 
    
         
            +
            	                    // XOR intermediate with block
         
     | 
| 
      
 106 
     | 
    
         
            +
            	                    for (var j = 0; j < blockWordsLength; j++) {
         
     | 
| 
      
 107 
     | 
    
         
            +
            	                        blockWords[j] ^= intermediateWords[j];
         
     | 
| 
      
 108 
     | 
    
         
            +
            	                    }
         
     | 
| 
      
 109 
     | 
    
         
            +
            	                }
         
     | 
| 
      
 110 
     | 
    
         
            +
             
     | 
| 
      
 111 
     | 
    
         
            +
            	                derivedKey.concat(block);
         
     | 
| 
      
 112 
     | 
    
         
            +
            	                blockIndexWords[0]++;
         
     | 
| 
      
 113 
     | 
    
         
            +
            	            }
         
     | 
| 
      
 114 
     | 
    
         
            +
            	            derivedKey.sigBytes = keySize * 4;
         
     | 
| 
      
 115 
     | 
    
         
            +
             
     | 
| 
      
 116 
     | 
    
         
            +
            	            return derivedKey;
         
     | 
| 
      
 117 
     | 
    
         
            +
            	        }
         
     | 
| 
      
 118 
     | 
    
         
            +
            	    });
         
     | 
| 
      
 119 
     | 
    
         
            +
             
     | 
| 
      
 120 
     | 
    
         
            +
            	    /**
         
     | 
| 
      
 121 
     | 
    
         
            +
            	     * Computes the Password-Based Key Derivation Function 2.
         
     | 
| 
      
 122 
     | 
    
         
            +
            	     *
         
     | 
| 
      
 123 
     | 
    
         
            +
            	     * @param {WordArray|string} password The password.
         
     | 
| 
      
 124 
     | 
    
         
            +
            	     * @param {WordArray|string} salt A salt.
         
     | 
| 
      
 125 
     | 
    
         
            +
            	     * @param {Object} cfg (Optional) The configuration options to use for this computation.
         
     | 
| 
      
 126 
     | 
    
         
            +
            	     *
         
     | 
| 
      
 127 
     | 
    
         
            +
            	     * @return {WordArray} The derived key.
         
     | 
| 
      
 128 
     | 
    
         
            +
            	     *
         
     | 
| 
      
 129 
     | 
    
         
            +
            	     * @static
         
     | 
| 
      
 130 
     | 
    
         
            +
            	     *
         
     | 
| 
      
 131 
     | 
    
         
            +
            	     * @example
         
     | 
| 
      
 132 
     | 
    
         
            +
            	     *
         
     | 
| 
      
 133 
     | 
    
         
            +
            	     *     var key = CryptoJS.PBKDF2(password, salt);
         
     | 
| 
      
 134 
     | 
    
         
            +
            	     *     var key = CryptoJS.PBKDF2(password, salt, { keySize: 8 });
         
     | 
| 
      
 135 
     | 
    
         
            +
            	     *     var key = CryptoJS.PBKDF2(password, salt, { keySize: 8, iterations: 1000 });
         
     | 
| 
      
 136 
     | 
    
         
            +
            	     */
         
     | 
| 
      
 137 
     | 
    
         
            +
            	    C.PBKDF2 = function (password, salt, cfg) {
         
     | 
| 
      
 138 
     | 
    
         
            +
            	        return PBKDF2.create(cfg).compute(password, salt);
         
     | 
| 
      
 139 
     | 
    
         
            +
            	    };
         
     | 
| 
      
 140 
     | 
    
         
            +
            	}());
         
     | 
| 
      
 141 
     | 
    
         
            +
             
     | 
| 
      
 142 
     | 
    
         
            +
             
     | 
| 
      
 143 
     | 
    
         
            +
            	return CryptoJS.PBKDF2;
         
     | 
| 
      
 144 
     | 
    
         
            +
             
     | 
| 
      
 145 
     | 
    
         
            +
            }));
         
     | 
| 
         @@ -0,0 +1,190 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            ;(function (root, factory, undef) {
         
     | 
| 
      
 2 
     | 
    
         
            +
            	if (typeof exports === "object") {
         
     | 
| 
      
 3 
     | 
    
         
            +
            		// CommonJS
         
     | 
| 
      
 4 
     | 
    
         
            +
            		module.exports = exports = factory(require("./core"), require("./enc-base64"), require("./md5"), require("./evpkdf"), require("./cipher-core"));
         
     | 
| 
      
 5 
     | 
    
         
            +
            	}
         
     | 
| 
      
 6 
     | 
    
         
            +
            	else if (typeof define === "function" && define.amd) {
         
     | 
| 
      
 7 
     | 
    
         
            +
            		// AMD
         
     | 
| 
      
 8 
     | 
    
         
            +
            		define(["./core", "./enc-base64", "./md5", "./evpkdf", "./cipher-core"], factory);
         
     | 
| 
      
 9 
     | 
    
         
            +
            	}
         
     | 
| 
      
 10 
     | 
    
         
            +
            	else {
         
     | 
| 
      
 11 
     | 
    
         
            +
            		// Global (browser)
         
     | 
| 
      
 12 
     | 
    
         
            +
            		factory(root.CryptoJS);
         
     | 
| 
      
 13 
     | 
    
         
            +
            	}
         
     | 
| 
      
 14 
     | 
    
         
            +
            }(this, function (CryptoJS) {
         
     | 
| 
      
 15 
     | 
    
         
            +
             
     | 
| 
      
 16 
     | 
    
         
            +
            	(function () {
         
     | 
| 
      
 17 
     | 
    
         
            +
            	    // Shortcuts
         
     | 
| 
      
 18 
     | 
    
         
            +
            	    var C = CryptoJS;
         
     | 
| 
      
 19 
     | 
    
         
            +
            	    var C_lib = C.lib;
         
     | 
| 
      
 20 
     | 
    
         
            +
            	    var StreamCipher = C_lib.StreamCipher;
         
     | 
| 
      
 21 
     | 
    
         
            +
            	    var C_algo = C.algo;
         
     | 
| 
      
 22 
     | 
    
         
            +
             
     | 
| 
      
 23 
     | 
    
         
            +
            	    // Reusable objects
         
     | 
| 
      
 24 
     | 
    
         
            +
            	    var S  = [];
         
     | 
| 
      
 25 
     | 
    
         
            +
            	    var C_ = [];
         
     | 
| 
      
 26 
     | 
    
         
            +
            	    var G  = [];
         
     | 
| 
      
 27 
     | 
    
         
            +
             
     | 
| 
      
 28 
     | 
    
         
            +
            	    /**
         
     | 
| 
      
 29 
     | 
    
         
            +
            	     * Rabbit stream cipher algorithm.
         
     | 
| 
      
 30 
     | 
    
         
            +
            	     *
         
     | 
| 
      
 31 
     | 
    
         
            +
            	     * This is a legacy version that neglected to convert the key to little-endian.
         
     | 
| 
      
 32 
     | 
    
         
            +
            	     * This error doesn't affect the cipher's security,
         
     | 
| 
      
 33 
     | 
    
         
            +
            	     * but it does affect its compatibility with other implementations.
         
     | 
| 
      
 34 
     | 
    
         
            +
            	     */
         
     | 
| 
      
 35 
     | 
    
         
            +
            	    var RabbitLegacy = C_algo.RabbitLegacy = StreamCipher.extend({
         
     | 
| 
      
 36 
     | 
    
         
            +
            	        _doReset: function () {
         
     | 
| 
      
 37 
     | 
    
         
            +
            	            // Shortcuts
         
     | 
| 
      
 38 
     | 
    
         
            +
            	            var K = this._key.words;
         
     | 
| 
      
 39 
     | 
    
         
            +
            	            var iv = this.cfg.iv;
         
     | 
| 
      
 40 
     | 
    
         
            +
             
     | 
| 
      
 41 
     | 
    
         
            +
            	            // Generate initial state values
         
     | 
| 
      
 42 
     | 
    
         
            +
            	            var X = this._X = [
         
     | 
| 
      
 43 
     | 
    
         
            +
            	                K[0], (K[3] << 16) | (K[2] >>> 16),
         
     | 
| 
      
 44 
     | 
    
         
            +
            	                K[1], (K[0] << 16) | (K[3] >>> 16),
         
     | 
| 
      
 45 
     | 
    
         
            +
            	                K[2], (K[1] << 16) | (K[0] >>> 16),
         
     | 
| 
      
 46 
     | 
    
         
            +
            	                K[3], (K[2] << 16) | (K[1] >>> 16)
         
     | 
| 
      
 47 
     | 
    
         
            +
            	            ];
         
     | 
| 
      
 48 
     | 
    
         
            +
             
     | 
| 
      
 49 
     | 
    
         
            +
            	            // Generate initial counter values
         
     | 
| 
      
 50 
     | 
    
         
            +
            	            var C = this._C = [
         
     | 
| 
      
 51 
     | 
    
         
            +
            	                (K[2] << 16) | (K[2] >>> 16), (K[0] & 0xffff0000) | (K[1] & 0x0000ffff),
         
     | 
| 
      
 52 
     | 
    
         
            +
            	                (K[3] << 16) | (K[3] >>> 16), (K[1] & 0xffff0000) | (K[2] & 0x0000ffff),
         
     | 
| 
      
 53 
     | 
    
         
            +
            	                (K[0] << 16) | (K[0] >>> 16), (K[2] & 0xffff0000) | (K[3] & 0x0000ffff),
         
     | 
| 
      
 54 
     | 
    
         
            +
            	                (K[1] << 16) | (K[1] >>> 16), (K[3] & 0xffff0000) | (K[0] & 0x0000ffff)
         
     | 
| 
      
 55 
     | 
    
         
            +
            	            ];
         
     | 
| 
      
 56 
     | 
    
         
            +
             
     | 
| 
      
 57 
     | 
    
         
            +
            	            // Carry bit
         
     | 
| 
      
 58 
     | 
    
         
            +
            	            this._b = 0;
         
     | 
| 
      
 59 
     | 
    
         
            +
             
     | 
| 
      
 60 
     | 
    
         
            +
            	            // Iterate the system four times
         
     | 
| 
      
 61 
     | 
    
         
            +
            	            for (var i = 0; i < 4; i++) {
         
     | 
| 
      
 62 
     | 
    
         
            +
            	                nextState.call(this);
         
     | 
| 
      
 63 
     | 
    
         
            +
            	            }
         
     | 
| 
      
 64 
     | 
    
         
            +
             
     | 
| 
      
 65 
     | 
    
         
            +
            	            // Modify the counters
         
     | 
| 
      
 66 
     | 
    
         
            +
            	            for (var i = 0; i < 8; i++) {
         
     | 
| 
      
 67 
     | 
    
         
            +
            	                C[i] ^= X[(i + 4) & 7];
         
     | 
| 
      
 68 
     | 
    
         
            +
            	            }
         
     | 
| 
      
 69 
     | 
    
         
            +
             
     | 
| 
      
 70 
     | 
    
         
            +
            	            // IV setup
         
     | 
| 
      
 71 
     | 
    
         
            +
            	            if (iv) {
         
     | 
| 
      
 72 
     | 
    
         
            +
            	                // Shortcuts
         
     | 
| 
      
 73 
     | 
    
         
            +
            	                var IV = iv.words;
         
     | 
| 
      
 74 
     | 
    
         
            +
            	                var IV_0 = IV[0];
         
     | 
| 
      
 75 
     | 
    
         
            +
            	                var IV_1 = IV[1];
         
     | 
| 
      
 76 
     | 
    
         
            +
             
     | 
| 
      
 77 
     | 
    
         
            +
            	                // Generate four subvectors
         
     | 
| 
      
 78 
     | 
    
         
            +
            	                var i0 = (((IV_0 << 8) | (IV_0 >>> 24)) & 0x00ff00ff) | (((IV_0 << 24) | (IV_0 >>> 8)) & 0xff00ff00);
         
     | 
| 
      
 79 
     | 
    
         
            +
            	                var i2 = (((IV_1 << 8) | (IV_1 >>> 24)) & 0x00ff00ff) | (((IV_1 << 24) | (IV_1 >>> 8)) & 0xff00ff00);
         
     | 
| 
      
 80 
     | 
    
         
            +
            	                var i1 = (i0 >>> 16) | (i2 & 0xffff0000);
         
     | 
| 
      
 81 
     | 
    
         
            +
            	                var i3 = (i2 << 16)  | (i0 & 0x0000ffff);
         
     | 
| 
      
 82 
     | 
    
         
            +
             
     | 
| 
      
 83 
     | 
    
         
            +
            	                // Modify counter values
         
     | 
| 
      
 84 
     | 
    
         
            +
            	                C[0] ^= i0;
         
     | 
| 
      
 85 
     | 
    
         
            +
            	                C[1] ^= i1;
         
     | 
| 
      
 86 
     | 
    
         
            +
            	                C[2] ^= i2;
         
     | 
| 
      
 87 
     | 
    
         
            +
            	                C[3] ^= i3;
         
     | 
| 
      
 88 
     | 
    
         
            +
            	                C[4] ^= i0;
         
     | 
| 
      
 89 
     | 
    
         
            +
            	                C[5] ^= i1;
         
     | 
| 
      
 90 
     | 
    
         
            +
            	                C[6] ^= i2;
         
     | 
| 
      
 91 
     | 
    
         
            +
            	                C[7] ^= i3;
         
     | 
| 
      
 92 
     | 
    
         
            +
             
     | 
| 
      
 93 
     | 
    
         
            +
            	                // Iterate the system four times
         
     | 
| 
      
 94 
     | 
    
         
            +
            	                for (var i = 0; i < 4; i++) {
         
     | 
| 
      
 95 
     | 
    
         
            +
            	                    nextState.call(this);
         
     | 
| 
      
 96 
     | 
    
         
            +
            	                }
         
     | 
| 
      
 97 
     | 
    
         
            +
            	            }
         
     | 
| 
      
 98 
     | 
    
         
            +
            	        },
         
     | 
| 
      
 99 
     | 
    
         
            +
             
     | 
| 
      
 100 
     | 
    
         
            +
            	        _doProcessBlock: function (M, offset) {
         
     | 
| 
      
 101 
     | 
    
         
            +
            	            // Shortcut
         
     | 
| 
      
 102 
     | 
    
         
            +
            	            var X = this._X;
         
     | 
| 
      
 103 
     | 
    
         
            +
             
     | 
| 
      
 104 
     | 
    
         
            +
            	            // Iterate the system
         
     | 
| 
      
 105 
     | 
    
         
            +
            	            nextState.call(this);
         
     | 
| 
      
 106 
     | 
    
         
            +
             
     | 
| 
      
 107 
     | 
    
         
            +
            	            // Generate four keystream words
         
     | 
| 
      
 108 
     | 
    
         
            +
            	            S[0] = X[0] ^ (X[5] >>> 16) ^ (X[3] << 16);
         
     | 
| 
      
 109 
     | 
    
         
            +
            	            S[1] = X[2] ^ (X[7] >>> 16) ^ (X[5] << 16);
         
     | 
| 
      
 110 
     | 
    
         
            +
            	            S[2] = X[4] ^ (X[1] >>> 16) ^ (X[7] << 16);
         
     | 
| 
      
 111 
     | 
    
         
            +
            	            S[3] = X[6] ^ (X[3] >>> 16) ^ (X[1] << 16);
         
     | 
| 
      
 112 
     | 
    
         
            +
             
     | 
| 
      
 113 
     | 
    
         
            +
            	            for (var i = 0; i < 4; i++) {
         
     | 
| 
      
 114 
     | 
    
         
            +
            	                // Swap endian
         
     | 
| 
      
 115 
     | 
    
         
            +
            	                S[i] = (((S[i] << 8)  | (S[i] >>> 24)) & 0x00ff00ff) |
         
     | 
| 
      
 116 
     | 
    
         
            +
            	                       (((S[i] << 24) | (S[i] >>> 8))  & 0xff00ff00);
         
     | 
| 
      
 117 
     | 
    
         
            +
             
     | 
| 
      
 118 
     | 
    
         
            +
            	                // Encrypt
         
     | 
| 
      
 119 
     | 
    
         
            +
            	                M[offset + i] ^= S[i];
         
     | 
| 
      
 120 
     | 
    
         
            +
            	            }
         
     | 
| 
      
 121 
     | 
    
         
            +
            	        },
         
     | 
| 
      
 122 
     | 
    
         
            +
             
     | 
| 
      
 123 
     | 
    
         
            +
            	        blockSize: 128/32,
         
     | 
| 
      
 124 
     | 
    
         
            +
             
     | 
| 
      
 125 
     | 
    
         
            +
            	        ivSize: 64/32
         
     | 
| 
      
 126 
     | 
    
         
            +
            	    });
         
     | 
| 
      
 127 
     | 
    
         
            +
             
     | 
| 
      
 128 
     | 
    
         
            +
            	    function nextState() {
         
     | 
| 
      
 129 
     | 
    
         
            +
            	        // Shortcuts
         
     | 
| 
      
 130 
     | 
    
         
            +
            	        var X = this._X;
         
     | 
| 
      
 131 
     | 
    
         
            +
            	        var C = this._C;
         
     | 
| 
      
 132 
     | 
    
         
            +
             
     | 
| 
      
 133 
     | 
    
         
            +
            	        // Save old counter values
         
     | 
| 
      
 134 
     | 
    
         
            +
            	        for (var i = 0; i < 8; i++) {
         
     | 
| 
      
 135 
     | 
    
         
            +
            	            C_[i] = C[i];
         
     | 
| 
      
 136 
     | 
    
         
            +
            	        }
         
     | 
| 
      
 137 
     | 
    
         
            +
             
     | 
| 
      
 138 
     | 
    
         
            +
            	        // Calculate new counter values
         
     | 
| 
      
 139 
     | 
    
         
            +
            	        C[0] = (C[0] + 0x4d34d34d + this._b) | 0;
         
     | 
| 
      
 140 
     | 
    
         
            +
            	        C[1] = (C[1] + 0xd34d34d3 + ((C[0] >>> 0) < (C_[0] >>> 0) ? 1 : 0)) | 0;
         
     | 
| 
      
 141 
     | 
    
         
            +
            	        C[2] = (C[2] + 0x34d34d34 + ((C[1] >>> 0) < (C_[1] >>> 0) ? 1 : 0)) | 0;
         
     | 
| 
      
 142 
     | 
    
         
            +
            	        C[3] = (C[3] + 0x4d34d34d + ((C[2] >>> 0) < (C_[2] >>> 0) ? 1 : 0)) | 0;
         
     | 
| 
      
 143 
     | 
    
         
            +
            	        C[4] = (C[4] + 0xd34d34d3 + ((C[3] >>> 0) < (C_[3] >>> 0) ? 1 : 0)) | 0;
         
     | 
| 
      
 144 
     | 
    
         
            +
            	        C[5] = (C[5] + 0x34d34d34 + ((C[4] >>> 0) < (C_[4] >>> 0) ? 1 : 0)) | 0;
         
     | 
| 
      
 145 
     | 
    
         
            +
            	        C[6] = (C[6] + 0x4d34d34d + ((C[5] >>> 0) < (C_[5] >>> 0) ? 1 : 0)) | 0;
         
     | 
| 
      
 146 
     | 
    
         
            +
            	        C[7] = (C[7] + 0xd34d34d3 + ((C[6] >>> 0) < (C_[6] >>> 0) ? 1 : 0)) | 0;
         
     | 
| 
      
 147 
     | 
    
         
            +
            	        this._b = (C[7] >>> 0) < (C_[7] >>> 0) ? 1 : 0;
         
     | 
| 
      
 148 
     | 
    
         
            +
             
     | 
| 
      
 149 
     | 
    
         
            +
            	        // Calculate the g-values
         
     | 
| 
      
 150 
     | 
    
         
            +
            	        for (var i = 0; i < 8; i++) {
         
     | 
| 
      
 151 
     | 
    
         
            +
            	            var gx = X[i] + C[i];
         
     | 
| 
      
 152 
     | 
    
         
            +
             
     | 
| 
      
 153 
     | 
    
         
            +
            	            // Construct high and low argument for squaring
         
     | 
| 
      
 154 
     | 
    
         
            +
            	            var ga = gx & 0xffff;
         
     | 
| 
      
 155 
     | 
    
         
            +
            	            var gb = gx >>> 16;
         
     | 
| 
      
 156 
     | 
    
         
            +
             
     | 
| 
      
 157 
     | 
    
         
            +
            	            // Calculate high and low result of squaring
         
     | 
| 
      
 158 
     | 
    
         
            +
            	            var gh = ((((ga * ga) >>> 17) + ga * gb) >>> 15) + gb * gb;
         
     | 
| 
      
 159 
     | 
    
         
            +
            	            var gl = (((gx & 0xffff0000) * gx) | 0) + (((gx & 0x0000ffff) * gx) | 0);
         
     | 
| 
      
 160 
     | 
    
         
            +
             
     | 
| 
      
 161 
     | 
    
         
            +
            	            // High XOR low
         
     | 
| 
      
 162 
     | 
    
         
            +
            	            G[i] = gh ^ gl;
         
     | 
| 
      
 163 
     | 
    
         
            +
            	        }
         
     | 
| 
      
 164 
     | 
    
         
            +
             
     | 
| 
      
 165 
     | 
    
         
            +
            	        // Calculate new state values
         
     | 
| 
      
 166 
     | 
    
         
            +
            	        X[0] = (G[0] + ((G[7] << 16) | (G[7] >>> 16)) + ((G[6] << 16) | (G[6] >>> 16))) | 0;
         
     | 
| 
      
 167 
     | 
    
         
            +
            	        X[1] = (G[1] + ((G[0] << 8)  | (G[0] >>> 24)) + G[7]) | 0;
         
     | 
| 
      
 168 
     | 
    
         
            +
            	        X[2] = (G[2] + ((G[1] << 16) | (G[1] >>> 16)) + ((G[0] << 16) | (G[0] >>> 16))) | 0;
         
     | 
| 
      
 169 
     | 
    
         
            +
            	        X[3] = (G[3] + ((G[2] << 8)  | (G[2] >>> 24)) + G[1]) | 0;
         
     | 
| 
      
 170 
     | 
    
         
            +
            	        X[4] = (G[4] + ((G[3] << 16) | (G[3] >>> 16)) + ((G[2] << 16) | (G[2] >>> 16))) | 0;
         
     | 
| 
      
 171 
     | 
    
         
            +
            	        X[5] = (G[5] + ((G[4] << 8)  | (G[4] >>> 24)) + G[3]) | 0;
         
     | 
| 
      
 172 
     | 
    
         
            +
            	        X[6] = (G[6] + ((G[5] << 16) | (G[5] >>> 16)) + ((G[4] << 16) | (G[4] >>> 16))) | 0;
         
     | 
| 
      
 173 
     | 
    
         
            +
            	        X[7] = (G[7] + ((G[6] << 8)  | (G[6] >>> 24)) + G[5]) | 0;
         
     | 
| 
      
 174 
     | 
    
         
            +
            	    }
         
     | 
| 
      
 175 
     | 
    
         
            +
             
     | 
| 
      
 176 
     | 
    
         
            +
            	    /**
         
     | 
| 
      
 177 
     | 
    
         
            +
            	     * Shortcut functions to the cipher's object interface.
         
     | 
| 
      
 178 
     | 
    
         
            +
            	     *
         
     | 
| 
      
 179 
     | 
    
         
            +
            	     * @example
         
     | 
| 
      
 180 
     | 
    
         
            +
            	     *
         
     | 
| 
      
 181 
     | 
    
         
            +
            	     *     var ciphertext = CryptoJS.RabbitLegacy.encrypt(message, key, cfg);
         
     | 
| 
      
 182 
     | 
    
         
            +
            	     *     var plaintext  = CryptoJS.RabbitLegacy.decrypt(ciphertext, key, cfg);
         
     | 
| 
      
 183 
     | 
    
         
            +
            	     */
         
     | 
| 
      
 184 
     | 
    
         
            +
            	    C.RabbitLegacy = StreamCipher._createHelper(RabbitLegacy);
         
     | 
| 
      
 185 
     | 
    
         
            +
            	}());
         
     | 
| 
      
 186 
     | 
    
         
            +
             
     | 
| 
      
 187 
     | 
    
         
            +
             
     | 
| 
      
 188 
     | 
    
         
            +
            	return CryptoJS.RabbitLegacy;
         
     | 
| 
      
 189 
     | 
    
         
            +
             
     | 
| 
      
 190 
     | 
    
         
            +
            }));
         
     |