changeset 45ddc3ed41bf in /home/hg/repos/gajim

details:http://hg.gajim.org/gajim?cmd=changeset;node=45ddc3ed41bf
description: Code improvments for the SCRAM-SHA-1 implementation

diffstat:

 src/common/xmpp/auth_nb.py |  26 ++++++++++++++------------
 1 files changed, 14 insertions(+), 12 deletions(-)

diffs (79 lines):

diff -r 355e8047326f -r 45ddc3ed41bf src/common/xmpp/auth_nb.py
--- a/src/common/xmpp/auth_nb.py        Thu Feb 25 11:59:12 2010 +0100
+++ b/src/common/xmpp/auth_nb.py        Thu Feb 25 13:02:28 2010 +0200
@@ -116,9 +116,7 @@
     return dict_
 
 def scram_parse(chatter):
-    stuff = {}
-    for k, v in [s.split('=', 1) for s in chatter.split(',')]:
-        stuff[k] = v
+    stuff = dict(s.split('=', 1) for s in chatter.split(','))
     return stuff
 
 class SASL(PlugIn):
@@ -255,7 +253,7 @@
         if 'PLAIN' in self.mecs:
             self.mecs.remove('PLAIN')
             self.mechanism = 'PLAIN'
-            self._owner._caller.get_password(self.set_password, 'PLAIN')
+            self._owner._caller.get_password(self.set_password, self.mechanism)
             self.startsasl = SASL_IN_PROCESS
             raise NodeProcessed
         self.startsasl = SASL_FAILURE
@@ -331,31 +329,34 @@
             raise NodeProcessed
         if self.mechanism == 'SCRAM-SHA-1':
             hashfn = hashlib.sha1
+
             def HMAC(k, s):
                 return hmac.HMAC(key=k, msg=s, digestmod=hashfn).digest()
+
             def XOR(x, y):
-                r = []
-                for i in range(len(x)):
-                    r.append(chr(ord(x[i]) ^ ord(y[i])))
+                r = [chr(ord(px) ^ ord(py)) for px, py in zip(x, y)]
                 return ''.join(r)
+
             def Hi(s, salt, iters):
                 ii = 1
-                p = s
                 try:
-                    p = s.encode('utf-8')
+                    s = s.encode('utf-8')
                 except:
                     pass
-                ui_1 = HMAC(p, salt + '\0\0\0\01')
+                ui_1 = HMAC(s, salt + '\0\0\0\01')
                 ui = ui_1
                 for i in range(iters - 1):
                     ii += 1
-                    ui_1 = HMAC(p, ui_1)
+                    ui_1 = HMAC(s, ui_1)
                     ui = XOR(ui, ui_1)
                 return ui
+
             def H(s):
                 return hashfn(s).digest()
+
             def scram_base64(s):
                 return ''.join(s.encode('base64').split('\n'))
+
             if self.scram_step == 0:
                 self.scram_step = 1
                 self.scram_soup += ',' + data + ','
@@ -381,11 +382,12 @@
                     payload=[sasl_data])
                 self._owner.send(str(node))
                 raise NodeProcessed
+
             if self.scram_step == 1:
                 data = scram_parse(data)
                 if data['v'].decode('base64') != self.scram_ServerSignature:
                     # TODO: Not clear what to do here - need to abort.
-                    raise 'Hell'
+                    raise Exception
                 node = Node('response', attrs={'xmlns': NS_SASL});
                 self._owner.send(str(node))
                 raise NodeProcessed
_______________________________________________
Commits mailing list
[email protected]
http://lists.gajim.org/cgi-bin/listinfo/commits

Reply via email to