summaryrefslogtreecommitdiff
path: root/backend/node
Unidiff
Diffstat (limited to 'backend/node') (more/less context) (ignore whitespace changes)
-rw-r--r--backend/node/src/clipperz.js2
1 files changed, 1 insertions, 1 deletions
diff --git a/backend/node/src/clipperz.js b/backend/node/src/clipperz.js
index 6bf56bb..c6d776a 100644
--- a/backend/node/src/clipperz.js
+++ b/backend/node/src/clipperz.js
@@ -144,33 +144,33 @@ var CLIPPERZ = module.exports = function(CONFIG) {
144 req.session.B = BIGNUM(req.session.v,16).add(srp_g.powm(BIGNUM(req.session.b,16),srp_n)).toString(16); 144 req.session.B = BIGNUM(req.session.v,16).add(srp_g.powm(BIGNUM(req.session.b,16),srp_n)).toString(16);
145 var rv = {s:req.session.s,B:req.session.B} 145 var rv = {s:req.session.s,B:req.session.B}
146 if(r.otp && r.otp.otp_ref) rv.oneTimePassword=r.otp.otp_ref; 146 if(r.otp && r.otp.otp_ref) rv.oneTimePassword=r.otp.otp_ref;
147 res.res(rv); 147 res.res(rv);
148 }); 148 });
149 149
150 case 'credentialCheck': 150 case 'credentialCheck':
151 var u = clipperz_hash(BIGNUM(req.session.B,16).toString(10)); 151 var u = clipperz_hash(BIGNUM(req.session.B,16).toString(10));
152 var A = BIGNUM(req.session.A,16); 152 var A = BIGNUM(req.session.A,16);
153 var S = A.mul(BIGNUM(req.session.v,16).powm(BIGNUM(u,16),srp_n)).powm( 153 var S = A.mul(BIGNUM(req.session.v,16).powm(BIGNUM(u,16),srp_n)).powm(
154 BIGNUM(req.session.b,16), srp_n); 154 BIGNUM(req.session.b,16), srp_n);
155 var K = clipperz_hash(S.toString(10)); 155 var K = clipperz_hash(S.toString(10));
156 var M1 = clipperz_hash(A.toString(10)+BIGNUM(req.session.B,16).toString(10)+K.toString(16)); 156 var M1 = clipperz_hash(A.toString(10)+BIGNUM(req.session.B,16).toString(10)+K.toString(16));
157 if(M1!=ppp.M1) return res.res({error:'?'}); 157 if(M1!=ppp.M1) return res.res({error:'?'});
158 req.session.K = K; 158 req.session.K = K;
159 var M2 = clipperz_hash(A.toString(10)+M1+K.toString(16)); 159 var M2 = clipperz_hash(A.toString(10)+M1+K.toString(16));
160 return res.res({M2:M2,connectionId:'',loginInfo:{latest:{},current:{}},offlineCopyNeededd:false,lock:'----'}); 160 return res.res({M2:M2,connectionId:'',loginInfo:{latest:{},current:{}},offlineCopyNeeded:false,lock:'----'});
161 161
162 case 'oneTimePassword': return PG.Q( 162 case 'oneTimePassword': return PG.Q(
163 "UPDATE clipperz.theotp AS otp" 163 "UPDATE clipperz.theotp AS otp"
164 +" SET" 164 +" SET"
165 +" otps_id = CASE WHEN s.otps_code!='ACTIVE' THEN s.otps_id ELSE (" 165 +" otps_id = CASE WHEN s.otps_code!='ACTIVE' THEN s.otps_id ELSE ("
166 +" SELECT ss.otps_id FROM clipperz.otpstatus AS ss WHERE ss.otps_code=CASE" 166 +" SELECT ss.otps_id FROM clipperz.otpstatus AS ss WHERE ss.otps_code=CASE"
167 +" WHEN otp.otp_key_checksum=$2 THEN 'REQUESTED'" 167 +" WHEN otp.otp_key_checksum=$2 THEN 'REQUESTED'"
168 +" ELSE 'DISABLED' END" 168 +" ELSE 'DISABLED' END"
169 +" ) END," 169 +" ) END,"
170 +" otp_data = CASE WHEN s.otps_code='ACTIVE' THEN '' ELSE otp.otp_data END," 170 +" otp_data = CASE WHEN s.otps_code='ACTIVE' THEN '' ELSE otp.otp_data END,"
171 +" otp_utime = current_timestamp," 171 +" otp_utime = current_timestamp,"
172 +" otp_rtime = CASE WHEN otp.otp_key_checksum=$2 THEN current_timestamp ELSE otp.otp_rtime END" 172 +" otp_rtime = CASE WHEN otp.otp_key_checksum=$2 THEN current_timestamp ELSE otp.otp_rtime END"
173 +" FROM clipperz.otpstatus AS s, clipperz.theotp AS o" 173 +" FROM clipperz.otpstatus AS s, clipperz.theotp AS o"
174 +" WHERE" 174 +" WHERE"
175 +" o.otp_id=otp.otp_id AND otp.otps_id=s.otps_id AND otp.otp_key=$1" 175 +" o.otp_id=otp.otp_id AND otp.otps_id=s.otps_id AND otp.otp_key=$1"
176 +" RETURNING otp.u_id, s.otps_code, otp.otp_id, otp.otp_key_checksum, o.otp_data, otp.otp_version", 176 +" RETURNING otp.u_id, s.otps_code, otp.otp_id, otp.otp_key_checksum, o.otp_data, otp.otp_version",