File Explorer

/var/runtime/node_modules/@aws-sdk/node_modules/crypto-js

This explorer reads the filesystem of the server it runs on, so /workspace/user isn't present here. Browsing and the terminal still work against this server's own disk from /.

1 dir
55 files
pbkdf2.js4.5 KB · 145 lines
;(function (root, factory, undef) {	if (typeof exports === "object") {		// CommonJS		module.exports = exports = factory(require("./core"), require("./sha256"), require("./hmac"));	}	else if (typeof define === "function" && define.amd) {		// AMD		define(["./core", "./sha256", "./hmac"], factory);	}	else {		// Global (browser)		factory(root.CryptoJS);	}}(this, function (CryptoJS) { 	(function () {	    // Shortcuts	    var C = CryptoJS;	    var C_lib = C.lib;	    var Base = C_lib.Base;	    var WordArray = C_lib.WordArray;	    var C_algo = C.algo;	    var SHA256 = C_algo.SHA256;	    var HMAC = C_algo.HMAC; 	    /**	     * Password-Based Key Derivation Function 2 algorithm.	     */	    var PBKDF2 = C_algo.PBKDF2 = Base.extend({	        /**	         * Configuration options.	         *	         * @property {number} keySize The key size in words to generate. Default: 4 (128 bits)	         * @property {Hasher} hasher The hasher to use. Default: SHA256	         * @property {number} iterations The number of iterations to perform. Default: 250000	         */	        cfg: Base.extend({	            keySize: 128/32,	            hasher: SHA256,	            iterations: 250000	        }), 	        /**	         * Initializes a newly created key derivation function.	         *	         * @param {Object} cfg (Optional) The configuration options to use for the derivation.	         *	         * @example	         *	         *     var kdf = CryptoJS.algo.PBKDF2.create();	         *     var kdf = CryptoJS.algo.PBKDF2.create({ keySize: 8 });	         *     var kdf = CryptoJS.algo.PBKDF2.create({ keySize: 8, iterations: 1000 });	         */	        init: function (cfg) {	            this.cfg = this.cfg.extend(cfg);	        }, 	        /**	         * Computes the Password-Based Key Derivation Function 2.	         *	         * @param {WordArray|string} password The password.	         * @param {WordArray|string} salt A salt.	         *	         * @return {WordArray} The derived key.	         *	         * @example	         *	         *     var key = kdf.compute(password, salt);	         */	        compute: function (password, salt) {	            // Shortcut	            var cfg = this.cfg; 	            // Init HMAC	            var hmac = HMAC.create(cfg.hasher, password); 	            // Initial values	            var derivedKey = WordArray.create();	            var blockIndex = WordArray.create([0x00000001]); 	            // Shortcuts	            var derivedKeyWords = derivedKey.words;	            var blockIndexWords = blockIndex.words;	            var keySize = cfg.keySize;	            var iterations = cfg.iterations; 	            // Generate key	            while (derivedKeyWords.length < keySize) {	                var block = hmac.update(salt).finalize(blockIndex);	                hmac.reset(); 	                // Shortcuts	                var blockWords = block.words;	                var blockWordsLength = blockWords.length; 	                // Iterations	                var intermediate = block;	                for (var i = 1; i < iterations; i++) {	                    intermediate = hmac.finalize(intermediate);	                    hmac.reset(); 	                    // Shortcut	                    var intermediateWords = intermediate.words; 	                    // XOR intermediate with block	                    for (var j = 0; j < blockWordsLength; j++) {	                        blockWords[j] ^= intermediateWords[j];	                    }	                } 	                derivedKey.concat(block);	                blockIndexWords[0]++;	            }	            derivedKey.sigBytes = keySize * 4; 	            return derivedKey;	        }	    }); 	    /**	     * Computes the Password-Based Key Derivation Function 2.	     *	     * @param {WordArray|string} password The password.	     * @param {WordArray|string} salt A salt.	     * @param {Object} cfg (Optional) The configuration options to use for this computation.	     *	     * @return {WordArray} The derived key.	     *	     * @static	     *	     * @example	     *	     *     var key = CryptoJS.PBKDF2(password, salt);	     *     var key = CryptoJS.PBKDF2(password, salt, { keySize: 8 });	     *     var key = CryptoJS.PBKDF2(password, salt, { keySize: 8, iterations: 1000 });	     */	    C.PBKDF2 = function (password, salt, cfg) {	        return PBKDF2.create(cfg).compute(password, salt);	    };	}());  	return CryptoJS.PBKDF2; }));