[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