def getDigestResponseComma(self, challenge, ncount): """ Calculate the response for the given challenge """ nonce = challenge.get('nonce') algo = challenge.get('algorithm').lower() qop = challenge.get('qop') if qop: expected = digest.calcResponse( digest.calcHA1( algo, "user,name", "test realm", "password", nonce, cnonce ), algo, nonce, ncount, cnonce, qop, "GET", "/write/1,2.txt", None ) else: expected = digest.calcResponse( digest.calcHA1( algo, "user,name", "test realm", "password", nonce, cnonce ), algo, nonce, None, None, None, "GET", "/write/1,2.txt", None ) return expected
def test_verifyCredentials_digest(self): """ IDirectoryRecord.verifyCredentials() with digest """ if not self.users: raise SkipTest("No users") service = self.service() for user in self.users: for good in (True, True, False, False, True): userRecord = service.recordWithShortName(DirectoryService.recordType_users, user) # I'm glad this is so simple... response = calcResponse( calcHA1( "md5", user, service.realmName, self.users[user]["password"], "booger", "phlegm", ), "md5", "booger", None, "phlegm", "auth", "GET", "/", None, ) if good: noise = "" else: noise = "blah" credentials = DigestedCredentials( user, "GET", service.realmName, { "response": response, "uri": "/", "nonce": "booger" + noise, "cnonce": "phlegm", "nc": None, }, ) if good: self.failUnless(userRecord.verifyCredentials(credentials)) else: self.failIf(userRecord.verifyCredentials(credentials))