| Index: third_party/twisted_8_1/twisted/cred/credentials.py
|
| diff --git a/third_party/twisted_8_1/twisted/cred/credentials.py b/third_party/twisted_8_1/twisted/cred/credentials.py
|
| deleted file mode 100644
|
| index 141ebc2230a1fd6aeacada71529501bb762f7d81..0000000000000000000000000000000000000000
|
| --- a/third_party/twisted_8_1/twisted/cred/credentials.py
|
| +++ /dev/null
|
| @@ -1,198 +0,0 @@
|
| -# -*- test-case-name: twisted.test.test_newcred-*-
|
| -
|
| -# Copyright (c) 2001-2008 Twisted Matrix Laboratories.
|
| -# See LICENSE for details.
|
| -
|
| -
|
| -from zope.interface import implements, Interface
|
| -
|
| -import hmac
|
| -import time
|
| -import random
|
| -
|
| -
|
| -
|
| -class ICredentials(Interface):
|
| - """
|
| - I check credentials.
|
| -
|
| - Implementors _must_ specify which sub-interfaces of ICredentials
|
| - to which it conforms, using zope.interface.implements().
|
| - """
|
| -
|
| -
|
| -
|
| -class IUsernameHashedPassword(ICredentials):
|
| - """
|
| - I encapsulate a username and a hashed password.
|
| -
|
| - This credential is used when a hashed password is received from the
|
| - party requesting authentication. CredentialCheckers which check this
|
| - kind of credential must store the passwords in plaintext (or as
|
| - password-equivalent hashes) form so that they can be hashed in a manner
|
| - appropriate for the particular credentials class.
|
| -
|
| - @type username: C{str}
|
| - @ivar username: The username associated with these credentials.
|
| - """
|
| -
|
| - def checkPassword(password):
|
| - """Validate these credentials against the correct password.
|
| -
|
| - @param password: The correct, plaintext password against which to
|
| - check.
|
| -
|
| - @return: a deferred which becomes, or a boolean indicating if the
|
| - password matches.
|
| - """
|
| -
|
| -
|
| -
|
| -class IUsernamePassword(ICredentials):
|
| - """
|
| - I encapsulate a username and a plaintext password.
|
| -
|
| - This encapsulates the case where the password received over the network
|
| - has been hashed with the identity function (That is, not at all). The
|
| - CredentialsChecker may store the password in whatever format it desires,
|
| - it need only transform the stored password in a similar way before
|
| - performing the comparison.
|
| -
|
| - @type username: C{str}
|
| - @ivar username: The username associated with these credentials.
|
| -
|
| - @type password: C{str}
|
| - @ivar password: The password associated with these credentials.
|
| - """
|
| -
|
| - def checkPassword(password):
|
| - """Validate these credentials against the correct password.
|
| -
|
| - @param password: The correct, plaintext password against which to
|
| - check.
|
| -
|
| - @return: a deferred which becomes, or a boolean indicating if the
|
| - password matches.
|
| - """
|
| -
|
| -
|
| -
|
| -class IAnonymous(ICredentials):
|
| - """
|
| - I am an explicitly anonymous request for access.
|
| - """
|
| -
|
| -
|
| -
|
| -class CramMD5Credentials:
|
| - implements(IUsernameHashedPassword)
|
| -
|
| - challenge = ''
|
| - response = ''
|
| -
|
| - def __init__(self, host=None):
|
| - self.host = host
|
| -
|
| - def getChallenge(self):
|
| - if self.challenge:
|
| - return self.challenge
|
| - # The data encoded in the first ready response contains an
|
| - # presumptively arbitrary string of random digits, a timestamp, and
|
| - # the fully-qualified primary host name of the server. The syntax of
|
| - # the unencoded form must correspond to that of an RFC 822 'msg-id'
|
| - # [RFC822] as described in [POP3].
|
| - # -- RFC 2195
|
| - r = random.randrange(0x7fffffff)
|
| - t = time.time()
|
| - self.challenge = '<%d.%d@%s>' % (r, t, self.host)
|
| - return self.challenge
|
| -
|
| - def setResponse(self, response):
|
| - self.username, self.response = response.split(None, 1)
|
| -
|
| - def moreChallenges(self):
|
| - return False
|
| -
|
| - def checkPassword(self, password):
|
| - verify = hmac.HMAC(password, self.challenge).hexdigest()
|
| - return verify == self.response
|
| -
|
| -
|
| -class UsernameHashedPassword:
|
| - implements(IUsernameHashedPassword)
|
| -
|
| - def __init__(self, username, hashed):
|
| - self.username = username
|
| - self.hashed = hashed
|
| -
|
| - def checkPassword(self, password):
|
| - return self.hashed == password
|
| -
|
| -
|
| -class UsernamePassword:
|
| - implements(IUsernamePassword)
|
| -
|
| - def __init__(self, username, password):
|
| - self.username = username
|
| - self.password = password
|
| -
|
| - def checkPassword(self, password):
|
| - return self.password == password
|
| -
|
| -
|
| -class Anonymous:
|
| - implements(IAnonymous)
|
| -
|
| -
|
| -
|
| -class ISSHPrivateKey(ICredentials):
|
| - """
|
| - I encapsulate an SSH public key to be checked against a users private
|
| - key.
|
| -
|
| - @ivar username: Duh?
|
| -
|
| - @ivar algName: The algorithm name for the blob.
|
| -
|
| - @ivar blob: The public key blob as sent by the client.
|
| -
|
| - @ivar sigData: The data the signature was made from.
|
| -
|
| - @ivar signature: The signed data. This is checked to verify that the user
|
| - owns the private key.
|
| - """
|
| -
|
| -
|
| -
|
| -class SSHPrivateKey:
|
| - implements(ISSHPrivateKey)
|
| - def __init__(self, username, algName, blob, sigData, signature):
|
| - self.username = username
|
| - self.algName = algName
|
| - self.blob = blob
|
| - self.sigData = sigData
|
| - self.signature = signature
|
| -
|
| -
|
| -class IPluggableAuthenticationModules(ICredentials):
|
| - """I encapsulate the authentication of a user via PAM (Pluggable
|
| - Authentication Modules. I use PyPAM (available from
|
| - http://www.tummy.com/Software/PyPam/index.html).
|
| -
|
| - @ivar username: The username for the user being logged in.
|
| -
|
| - @ivar pamConversion: A function that is called with a list of tuples
|
| - (message, messageType). See the PAM documentation
|
| - for the meaning of messageType. The function
|
| - returns a Deferred which will fire with a list
|
| - of (response, 0), one for each message. The 0 is
|
| - currently unused, but is required by the PAM library.
|
| - """
|
| -
|
| -class PluggableAuthenticationModules:
|
| - implements(IPluggableAuthenticationModules)
|
| -
|
| - def __init__(self, username, pamConversion):
|
| - self.username = username
|
| - self.pamConversion = pamConversion
|
| -
|
|
|