summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorazul <azul@riseup.net>2013-07-06 07:47:19 -0700
committerazul <azul@riseup.net>2013-07-06 07:47:19 -0700
commit926a5d5960db51903e33c8496487da59f9f41242 (patch)
treedc504596bef7b18bace664626334947e62e91214
parente7a0b830b8f994316a560001a9e7397422b184b1 (diff)
parentbd6d60789bfb97041d0d219f645c08b7b479b782 (diff)
Merge pull request #2 from elijh/feature/always-use-v1
always use the API-only controller for all requests.
-rw-r--r--src/jqueryRest.js18
-rw-r--r--src/srp_account.js8
-rw-r--r--src/srp_session.js11
3 files changed, 21 insertions, 16 deletions
diff --git a/src/jqueryRest.js b/src/jqueryRest.js
index c1eb3c1..85ef0ca 100644
--- a/src/jqueryRest.js
+++ b/src/jqueryRest.js
@@ -3,24 +3,24 @@ srp.remote = (function(){
// TODO: Do we need to differentiate between PUT and POST?
function register(session) {
- return $.post("/users.json", {user: session.signup() });
+ return $.post("/1/users.json", {user: session.signup() });
}
- function update(url, session) {
+ function update(session) {
return $.ajax({
- url: url,
+ url: "/1/users/" + session.id() + ".json",
type: 'PUT',
data: {user: session.signup() }
});
}
function handshake(session) {
- return $.post("/sessions.json", session.handshake());
+ return $.post("/1/sessions.json", session.handshake());
}
function authenticate(session) {
return $.ajax({
- url: "/sessions/" + session.login() + ".json",
+ url: "/1/sessions/" + session.login() + ".json",
type: 'PUT',
data: {client_auth: session.getM()}
});
@@ -43,7 +43,7 @@ srp.remote = (function(){
function update(submitEvent){
var form = submitEvent.target;
- jqueryRest.update(form.action, srp.session)
+ jqueryRest.update(srp.session)
.done(srp.updated)
.fail(error)
};
@@ -62,8 +62,8 @@ srp.remote = (function(){
}
else if(! response.salt || response.salt === 0) {
srp.error("Server failed to send salt - could not login.");
- }
- else
+ }
+ else
{
srp.session.calculations(response.salt, response.B);
jqueryRest.authenticate(srp.session)
@@ -85,7 +85,7 @@ srp.remote = (function(){
// The server will send error messages as json alongside
// the http error response.
function error(xhr, text, thrown)
- {
+ {
if (xhr.responseText && xhr.responseText != "")
srp.error($.parseJSON(xhr.responseText));
else
diff --git a/src/srp_account.js b/src/srp_account.js
index 336e013..e949f12 100644
--- a/src/srp_account.js
+++ b/src/srp_account.js
@@ -1,5 +1,5 @@
-srp.Account = function(login, password) {
-
+srp.Account = function(login, password, id) {
+
// Returns the user's identity
this.login = function() {
return login || document.getElementById("srp_username").value;
@@ -10,4 +10,8 @@ srp.Account = function(login, password) {
return password || document.getElementById("srp_password").value;
};
+ // The user's id
+ this.id = function() {
+ return id || document.getElementById("user_param").value;
+ };
}
diff --git a/src/srp_session.js b/src/srp_session.js
index 5d1f829..0648959 100644
--- a/src/srp_session.js
+++ b/src/srp_session.js
@@ -33,8 +33,8 @@ srp.Session = function(account, calculate) {
};
this.handshake = function() {
- return {
- login: account.login(),
+ return {
+ login: account.login(),
A: this.getA()
};
};
@@ -43,19 +43,20 @@ srp.Session = function(account, calculate) {
return A;
}
- // Delegate login so it can be used when talking to the remote
+ // Delegate login & id so they can be used when talking to the remote
this.login = account.login;
+ this.id = account.id;
// Calculate S, M, and M2
// This is the client side of the SRP specification
this.calculations = function(salt, ephemeral)
- {
+ {
//S -> C: s | B
var B = ephemeral;
var x = calculate.X(account.login(), account.password(), salt);
S = calculate.S(a, A, B, x);
K = calculate.K(S);
-
+
// M = H(H(N) xor H(g), H(I), s, A, B, K)
var xor = calculate.nXorG();
var hash_i = calculate.hash(account.login())