"+" as part of a SASL handshake is irc-specific so remove it from scram.py

This commit is contained in:
jesopo 2019-02-06 11:07:50 +00:00
parent 6b4bb7cdba
commit a7554b835e
2 changed files with 7 additions and 5 deletions

View file

@ -78,10 +78,12 @@ class Module(ModuleManager.BaseModule):
if current_scram.state == scram.SCRAMState.ClientFirst: if current_scram.state == scram.SCRAMState.ClientFirst:
auth_text = current_scram.server_first(data) auth_text = current_scram.server_first(data)
elif current_scram.state == scram.SCRAMState.ClientFinal: elif current_scram.state == scram.SCRAMState.ClientFinal:
auth_text = current_scram.server_final(data) verified = current_scram.server_final(data)
del event["server"]._scram del event["server"]._scram
if current_scram.state == scram.SCRAMState.VerifyFailed: if verified:
auth_text = "+"
else:
event["server"].disconnect() event["server"].disconnect()
raise ValueError("Server SCRAM verification failed") raise ValueError("Server SCRAM verification failed")

View file

@ -73,7 +73,7 @@ class SCRAM(object):
return auth_noproof + (b",p=%s" % client_proof) return auth_noproof + (b",p=%s" % client_proof)
def server_final(self, data: bytes) -> bytes: def server_final(self, data: bytes) -> bool:
# server-final-message # server-final-message
pieces = self._get_pieces(data) pieces = self._get_pieces(data)
verifier = pieces[b"v"] verifier = pieces[b"v"]
@ -83,7 +83,7 @@ class SCRAM(object):
if server_signature != base64.b64decode(verifier): if server_signature != base64.b64decode(verifier):
self.state = SCRAMState.VerifyFailed self.state = SCRAMState.VerifyFailed
return None return False
else: else:
self.state = SCRAMState.Success self.state = SCRAMState.Success
return "+" return True