Diffstat (limited to 'frontend/beta/js/Clipperz/PM/Connection.js') (more/less context) (show whitespace changes)
-rw-r--r-- | frontend/beta/js/Clipperz/PM/Connection.js | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/frontend/beta/js/Clipperz/PM/Connection.js b/frontend/beta/js/Clipperz/PM/Connection.js index 85aea21..e81c7a6 100644 --- a/frontend/beta/js/Clipperz/PM/Connection.js +++ b/frontend/beta/js/Clipperz/PM/Connection.js @@ -251,101 +251,105 @@ Clipperz.PM.Connection.SRP['1.0'].prototype = MochiKit.Base.update(new Clipperz. //MochiKit.Logging.logDebug("--- Connection.login - srp.a: " + aConnection.srpConnection().a().asString(16)); return args; }); //deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("1.3.3 - Connection.login - 3: "/* + res*/); return res;}); //deferredResult.addErrback(function(res) {MochiKit.Logging.logDebug("ERROR: " + res); return res;}); deferredResult.addCallback(MochiKit.Base.method(Clipperz.PM.Proxy.defaultProxy, 'handshake')); //deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("1.3.4 - Connection.login - 4: "/* + res*/); return res;}); //deferredResult.addErrback(function(res) {MochiKit.Logging.logDebug("ERROR: " + res); return res;}); deferredResult.addCallback(Clipperz.NotificationCenter.deferredNotification, this, 'updatedProgressState', 'connection_credentialVerification'); //deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("1.3.5 - Connection.login - 5: "/* + res*/); return res;}); //deferredResult.addErrback(function(res) {MochiKit.Logging.logDebug("ERROR: " + res); return res;}); deferredResult.addErrback(MochiKit.Base.bind(function(res) {MochiKit.Logging.logDebug("ERROR - c: " + this.srpConnection().C() + " # version: " + this.clipperz_pm_crypto_version()); return res;}, this)); deferredResult.addCallback(MochiKit.Base.bind(function(someParameters) { var args; this.srpConnection().set_s(new Clipperz.Crypto.BigInt(someParameters['s'], 16)); this.srpConnection().set_B(new Clipperz.Crypto.BigInt(someParameters['B'], 16)); if (typeof(someParameters['oneTimePassword']) != 'undefined') { this.setOneTimePassword(someParameters['oneTimePassword']); } args = {}; args.message = 'credentialCheck'; args.version = this.clipperz_pm_crypto_version(); args.parameters = {}; args.parameters['M1'] = this.srpConnection().M1(); return args; }, this)); //deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("1.3.6 - Connection.login - 6: "/* + res*/); return res;}); //deferredResult.addErrback(function(res) {MochiKit.Logging.logDebug("ERROR: " + res); return res;}); deferredResult.addCallback(MochiKit.Base.method(Clipperz.PM.Proxy.defaultProxy, 'handshake')); //deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("1.3.7 - Connection.login - 7: "/* + res*/); return res;}); //deferredResult.addErrback(function(res) {MochiKit.Logging.logDebug("ERROR: " + res); return res;}); //# deferredResult.addCallback(MochiKit.Base.method(this, 'loginDone')); deferredResult.addCallback(MochiKit.Base.bind(function(someParameters) { var result; //MochiKit.Logging.logDebug(">>> Connection.loginDone: " + this + " (M2: " + this.srpConnection().M2() + ")"); if (someParameters['M2'] == this.srpConnection().M2()) { result = new MochiKit.Async.Deferred(); //MochiKit.Logging.logDebug("--- Connection.loginDone - someParameters: " + Clipperz.Base.serializeJSON(someParameters)); this.setConnectionId(someParameters['connectionId']); this.user().setLoginInfo(someParameters['loginInfo']); this.user().setShouldDownloadOfflineCopy(someParameters['offlineCopyNeeded']); - this.user().setLock(someParameters['lock']); + + if ((isReconnecting == true) && (this.user().lock() != someParameters['lock'])) { + throw Clipperz.PM.Connection.exception.StaleData; + } if (this.oneTimePassword() != null) { result.addCallback(MochiKit.Base.method(this.user().oneTimePasswordManager(), 'archiveOneTimePassword', this.oneTimePassword())); } + result.addCallback(Clipperz.NotificationCenter.deferredNotification, this, 'updatedProgressState', 'connection_loggedIn'); result.addCallback(MochiKit.Async.succeed, someParameters); result.callback(); //MochiKit.Logging.logDebug("--- Connection.loginDone - 1 - result: "/* + Clipperz.Base.serializeJSON(result)*/); } else { //MochiKit.Logging.logDebug("--- Connection.loginDone - 2 - ERROR"); //deferredResult.addErrback(function(res) {MochiKit.Logging.logDebug("ERROR: " + res); return res;}); result = MochiKit.Async.fail(Clipperz.PM.Connection.exception.WrongChecksum); } //MochiKit.Logging.logDebug("<<< Connection.loginDone - result: " + Clipperz.Base.serializeJSON(result)); return result; }, this)); //deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("1.3.8 - Connection.login - 8: "/* + res*/); return res;}); //deferredResult.addErrback(function(res) {MochiKit.Logging.logDebug("ERROR: " + res); return res;}); deferredResult.callback(this); //MochiKit.Logging.logDebug("<<< Connection.login"); return deferredResult; }, //========================================================================= 'logout': function() { var deferredResult; //MochiKit.Logging.logDebug(">>> Connection.logout: " + this); deferredResult = new MochiKit.Async.Deferred(); //deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Connection.logout - 1: " + res); return res;}); deferredResult.addCallback(MochiKit.Base.method(Clipperz.PM.Proxy.defaultProxy, 'logout'), {}); //deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Connection.logout - 2: " + res); return res;}); deferredResult.addCallback(MochiKit.Base.method(this, 'resetSrpConnection')); //deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("Connection.logout - 3: " + res); return res;}); deferredResult.callback(); //MochiKit.Logging.logDebug("<<< Connection.logout"); return deferredResult; }, //========================================================================= 'message': function(aMessageName, someParameters) { var args; var deferredResult; //MochiKit.Logging.logDebug(">>> Connection.message: " + this); @@ -532,50 +536,51 @@ deferredResult.addErrback(MochiKit.Base.bind(function(res) {MochiKit.Logging.log // //----------------------------------------------------------------------------- Clipperz.PM.Connection.SRP['1.1'] = function (args) { args = args || {}; Clipperz.PM.Connection.SRP['1.0'].call(this, args); return this; } Clipperz.PM.Connection.SRP['1.1'].prototype = MochiKit.Base.update(new Clipperz.PM.Connection.SRP['1.0'](), { 'version': function() { return '1.1'; }, //----------------------------------------------------------------------------- 'C': function() { if (this._C == null) { this._C = this.hash()(new Clipperz.ByteArray(this.user().username() + this.user().passphrase())).toHexString().substring(2); } return this._C; }, //----------------------------------------------------------------------------- 'P': function() { if (this._P == null) { this._P = this.hash()(new Clipperz.ByteArray(this.user().passphrase() + this.user().username())).toHexString().substring(2); } return this._P; }, //----------------------------------------------------------------------------- 'hash': function() { return Clipperz.PM.Crypto.encryptingFunctions.versions['0.2'].hash; }, //----------------------------------------------------------------------------- __syntaxFix__: "syntax fix" }); Clipperz.PM.Connection.exception = { - WrongChecksum: new MochiKit.Base.NamedError("Clipperz.ByteArray.exception.InvalidValue") + WrongChecksum: new MochiKit.Base.NamedError("Clipperz.ByteArray.exception.InvalidValue"), + StaleData: new MochiKit.Base.NamedError("Stale data") }; |