[CalendarServer-changes] [14345] CalDAVTester/trunk/src/request.py

source_changes at macosforge.org source_changes at macosforge.org
Mon Jan 26 13:13:28 PST 2015


Revision: 14345
          http://trac.calendarserver.org//changeset/14345
Author:   cdaboo at apple.com
Date:     2015-01-26 13:13:27 -0800 (Mon, 26 Jan 2015)
Log Message:
-----------
Fix digest auth with qop value present.

Modified Paths:
--------------
    CalDAVTester/trunk/src/request.py

Modified: CalDAVTester/trunk/src/request.py
===================================================================
--- CalDAVTester/trunk/src/request.py	2015-01-26 18:53:22 UTC (rev 14344)
+++ CalDAVTester/trunk/src/request.py	2015-01-26 21:13:27 UTC (rev 14345)
@@ -140,6 +140,8 @@
     be used to determine a satisfactory output or not.
     """
 
+    nc = {} # Keep track of nonce count
+
     def __init__(self, manager):
         self.manager = manager
         self.host = self.manager.server_info.host
@@ -245,7 +247,7 @@
 
                 wwwauthorize = response.msg.getheaders("WWW-Authenticate")
                 for item in wwwauthorize:
-                    if not item.startswith("digest "):
+                    if not item.lower().startswith("digest "):
                         continue
                     wwwauthorize = item[7:]
                     def unq(s):
@@ -263,9 +265,18 @@
                     break
 
         if details:
+            if details.get('qop'):
+                if self.nc.get(details.get('nonce')) is None:
+                    self.nc[details.get('nonce')] = 1
+                else:
+                    self.nc[details.get('nonce')] += 1
+                details['nc'] = "%08x" % self.nc[details.get('nonce')]
+                if details.get('cnonce') is None:
+                    details['cnonce'] = "D4AAE4FF-ADA1-4149-BFE2-B506F9264318"
+
             digest = calcResponse(
-                calcHA1(details.get('algorithm'), user, details.get('realm'), pswd, details.get('nonce'), details.get('cnonce')),
-                details.get('algorithm'), details.get('nonce'), details.get('nc'), details.get('cnonce'), details.get('qop'), self.method, self.getURI(si), None
+                calcHA1(details.get('algorithm', 'md5'), user, details.get('realm'), pswd, details.get('nonce'), details.get('cnonce')),
+                details.get('algorithm', 'md5'), details.get('nonce'), details.get('nc'), details.get('cnonce'), details.get('qop'), self.method, self.getURI(si), None
             )
 
             if details.get('qop'):
@@ -273,7 +284,7 @@
                     'Digest username="%s", realm="%s", '
                     'nonce="%s", uri="%s", '
                     'response=%s, algorithm=%s, cnonce="%s", qop=%s, nc=%s' %
-                    (user, details.get('realm'), details.get('nonce'), self.getURI(si), digest, details.get('algorithm'), details.get('cnonce'), details.get('qop'), details.get('nc'),)
+                    (user, details.get('realm'), details.get('nonce'), self.getURI(si), digest, details.get('algorithm', 'md5'), details.get('cnonce'), details.get('qop'), details.get('nc'),)
                 )
             else:
                 response = (
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.macosforge.org/pipermail/calendarserver-changes/attachments/20150126/2322fc70/attachment.html>


More information about the calendarserver-changes mailing list