def _digest_auth_for(headers, username, password): fields = { 'qop': 'auth', 'uri': '/', 'nc':'00000001', 'cnonce':'FFFFFFFF', 'username' : username } for k in [ 'realm', 'nonce', 'opaque' ]: fields[k] = headers[k] HA1 = digest( username + ':' + fields['realm'] + ':' + password ) HA2 = digest( 'GET:' + fields['uri'] ) fields['response'] = digest( ':'.join([ HA1, fields['nonce'], fields['nc'], fields['cnonce'], fields['qop'], HA2 ])) return "Digest " + ','.join([ '%s="%s"' % (k, v) for k, v in fields.items() ])
def _(user, realm): if user != username: raise KeyError return digest(':'.join([username, realm, password]))