module ActionController::HttpAuthentication::Digest

def expected_response(http_method, uri, credentials, password, password_is_ha1 = true)

of a plain-text password.
Optional parameter +password_is_ha1+ is set to +true+ by default, since best practice is to store ha1 digest instead
Returns the expected response for a request of +http_method+ to +uri+ with the decoded +credentials+ and the expected +password+
def expected_response(http_method, uri, credentials, password, password_is_ha1 = true)
  ha1 = password_is_ha1 ? password : ha1(credentials, password)
  ha2 = ::Digest::MD5.hexdigest([http_method.to_s.upcase, uri].join(":"))
  ::Digest::MD5.hexdigest([ha1, credentials[:nonce], credentials[:nc], credentials[:cnonce], credentials[:qop], ha2].join(":"))
end