Comparison

util/sasl/scram.lua @ 8095:57192cf193c7

util.sasl.plain,scram: Record username in sasl state earlier
author Kim Alvefur <zash@zash.se>
date Wed, 19 Apr 2017 06:47:02 +0200
parent 7218:6226307f6ac4
child 8382:e5d00bf4a4d5
comparison
equal deleted inserted replaced
8094:dcda2ae4569d 8095:57192cf193c7
144 username = validate_username(username, self.profile.nodeprep); 144 username = validate_username(username, self.profile.nodeprep);
145 if not username then 145 if not username then
146 log("debug", "Username violates either SASLprep or contains forbidden character sequences.") 146 log("debug", "Username violates either SASLprep or contains forbidden character sequences.")
147 return "failure", "malformed-request", "Invalid username."; 147 return "failure", "malformed-request", "Invalid username.";
148 end 148 end
149 self.username = username;
149 150
150 -- retreive credentials 151 -- retreive credentials
151 local stored_key, server_key, salt, iteration_count; 152 local stored_key, server_key, salt, iteration_count;
152 if self.profile.plain then 153 if self.profile.plain then
153 local password, status = self.profile.plain(self, username, self.realm) 154 local password, status = self.profile.plain(self, username, self.realm)
223 local ClientKey = binaryXOR(ClientSignature, base64.decode(proof)) 224 local ClientKey = binaryXOR(ClientSignature, base64.decode(proof))
224 local ServerSignature = HMAC_f(ServerKey, AuthMessage) 225 local ServerSignature = HMAC_f(ServerKey, AuthMessage)
225 226
226 if StoredKey == H_f(ClientKey) then 227 if StoredKey == H_f(ClientKey) then
227 local server_final_message = "v="..base64.encode(ServerSignature); 228 local server_final_message = "v="..base64.encode(ServerSignature);
228 self["username"] = state.username;
229 return "success", server_final_message; 229 return "success", server_final_message;
230 else 230 else
231 return "failure", "not-authorized", "The response provided by the client doesn't match the one we calculated."; 231 return "failure", "not-authorized", "The response provided by the client doesn't match the one we calculated.";
232 end 232 end
233 end 233 end