示例#1
0
    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
示例#2
0
    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))