summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/jqueryRest.js50
-rw-r--r--src/srp.js19
2 files changed, 69 insertions, 0 deletions
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;