From 2e365cba5263ec50f10fb074c054ef19adb8f7b0 Mon Sep 17 00:00:00 2001 From: Azul Date: Mon, 19 Nov 2012 17:36:49 +0100 Subject: first step at cleaning up the srp --- src/jqueryRest.js | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++ src/srp.js | 19 +++++++++++++++++++ 2 files changed, 69 insertions(+) (limited to 'src') diff --git a/src/jqueryRest.js b/src/jqueryRest.js index a7928d5..29f737c 100644 --- a/src/jqueryRest.js +++ b/src/jqueryRest.js @@ -35,3 +35,53 @@ jqueryRest = function() { authenticate: authenticate }; }; + +srp.remote = (function(){ + + function signup(){ + jqueryRest().register(srp.session) + .success(srp.signedUp) + .error(srp.error) + }; + + function login(){ + jqueryRest().handshake(srp.session) + .success(receiveSalts) + .error(srp.error) + }; + + function receiveSalts(response){ + // B = 0 will make the algorithm always succeed + // -> refuse such a server answer + if(response.B === 0) { + srp.error("Server send random number 0 - could not login."); + } + else if(! response.salt || response.salt === 0) { + srp.error("Server failed to send salt - could not login."); + } + else + { + srp.session.calculations(response.salt, response.B); + jqueryRest().authenticate(srp.session) + .success(confirmAuthentication) + .error(srp.error); + } + }; + + // Receive M2 from the server and verify it + // If an error occurs, raise it as an alert. + function confirmAuthentication(response) + { + if (srp.session.validate(response.M2)) + srp.loggedIn(); + else + srp.error("Server key does not match"); + }; + + + return { + signup: signup, + login: login + } + +}()); diff --git a/src/srp.js b/src/srp.js index 6a377ce..5b76a88 100644 --- a/src/srp.js +++ b/src/srp.js @@ -1,3 +1,22 @@ +var srp = (function(){ + + function signup() + { + this.remote.signup(); + }; + + function login() + { + this.remote.login(); + }; + + return { + signup: signup, + login: login + } +}()); + + function SRP(remote, session) { var srp = this; -- cgit v1.2.3