From cc67d12c57e38ce87b2b73b43abeba363f0a60f6 Mon Sep 17 00:00:00 2001 From: Kyle Spearrin Date: Mon, 5 Sep 2016 00:03:49 -0400 Subject: [PATCH] hashpassword with callback --- src/popup/app/services/loginService.js | 30 ++++++++++++++------------ src/services/cryptoService.js | 20 +++++++++-------- 2 files changed, 27 insertions(+), 23 deletions(-) diff --git a/src/popup/app/services/loginService.js b/src/popup/app/services/loginService.js index 918520c9f7..79feb30358 100644 --- a/src/popup/app/services/loginService.js +++ b/src/popup/app/services/loginService.js @@ -6,26 +6,28 @@ _service.logIn = function (email, masterPassword) { var key = cryptoService.makeKey(masterPassword, email); - var request = new TokenRequest(email, cryptoService.hashPassword(masterPassword, key)); + cryptoService.hashPassword(masterPassword, key, function (hashedPassword) { + var request = new TokenRequest(email, hashedPassword); - var deferred = $q.defer(); - apiService.postToken(request, function (response) { - if (!response || !response.token) { - return; - } + var deferred = $q.defer(); + apiService.postToken(request, function (response) { + if (!response || !response.token) { + return; + } - tokenService.setToken(response.token, function () { - cryptoService.setKey(key, function () { - userService.setUserProfile(response.profile, function () { - deferred.resolve(response); + tokenService.setToken(response.token, function () { + cryptoService.setKey(key, function () { + userService.setUserProfile(response.profile, function () { + deferred.resolve(response); + }); }); }); + }, function (error) { + deferred.reject(error); }); - }, function (error) { - deferred.reject(error); - }); - return deferred.promise; + return deferred.promise; + }); }; _service.logInTwoFactor = function (code, provider) { diff --git a/src/services/cryptoService.js b/src/services/cryptoService.js index 4649f17a16..200d5ae55a 100644 --- a/src/services/cryptoService.js +++ b/src/services/cryptoService.js @@ -67,17 +67,19 @@ function initCryptoService() { return key; }; - CryptoService.prototype.hashPassword = function (password, key) { - if (!key) { - key = this.getKey(); - } + CryptoService.prototype.hashPassword = function (password, key, callback) { + this.getKey(false, function (storedKey) { + if (!key) { + key = storedKey; + } - if (!password || !key) { - throw 'Invalid parameters.'; - } + if (!password || !key) { + throw 'Invalid parameters.'; + } - var hashBits = sjcl.misc.pbkdf2(key, password, 1, 256, null); - return sjcl.codec.base64.fromBits(hashBits); + var hashBits = sjcl.misc.pbkdf2(key, password, 1, 256, null); + callback(sjcl.codec.base64.fromBits(hashBits)); + }); }; CryptoService.prototype.getAes = function (callback) {