var v1 = require('./src/v1'); var v2 = require('./src/v2'); var pbkdf2 = require('./src/pbkdf2'); var objectAssign = require('object-assign'); module.exports = { encryptLogin: v1.encryptLogin, renderPassword: v1.renderPassword, createFingerprint: v1.createFingerprint, _deriveEncryptedLogin: v1._deriveEncryptedLogin, _getPasswordTemplate: v1._getPasswordTemplate, _prettyPrint: v1._prettyPrint, _string2charCodes: v1._string2charCodes, _getCharType: v1._getCharType, _getPasswordChar: v1._getPasswordChar, _createHmac: v1._createHmac, generatePassword: generatePassword, _calcEntropy: v2._calcEntropy, _consumeEntropy: v2._consumeEntropy, _getSetOfCharacters: v2._getSetOfCharacters, _getConfiguredRules: v2._getConfiguredRules, _insertStringPseudoRandomly: v2._insertStringPseudoRandomly, _getOneCharPerRule: v2._getOneCharPerRule, _renderPassword: v2._renderPassword, pbkdf2: pbkdf2 }; var defaultPasswordProfile = { version: 2, lowercase: true, digits: true, uppercase: true, symbols: true, keylen: 32, digest: 'sha256', length: 16, index: 1, iterations: 100000 }; function generatePassword(site, login, masterPassword, passwordProfile) { var _passwordProfile = objectAssign({}, defaultPasswordProfile, passwordProfile); if (_passwordProfile.version === 1) { var options = { counter: _passwordProfile.index, length: _passwordProfile.length, lowercase: _passwordProfile.lowercase, uppercase: _passwordProfile.uppercase, numbers: _passwordProfile.digits, symbols: _passwordProfile.symbols }; return v1.encryptLogin(login, masterPassword) .then(function (encryptedLogin) { return v1.renderPassword(encryptedLogin, site, options).then(generatedPassword => { return generatedPassword }); }); } if (_passwordProfile.version === 2) { return v2.generatePassword(site, login, masterPassword, _passwordProfile); } }