#include "net/http/http_auth_handler_negotiate.h"
#include <utility>
#include "base/check_op.h"
#include "base/functional/bind.h"
#include "base/functional/callback_helpers.h"
#include "base/logging.h"
#include "base/strings/string_number_conversions.h"
#include "base/strings/string_util.h"
#include "base/strings/stringprintf.h"
#include "base/values.h"
#include "build/build_config.h"
#include "build/chromeos_buildflags.h"
#include "net/base/address_family.h"
#include "net/base/address_list.h"
#include "net/base/host_port_pair.h"
#include "net/base/net_errors.h"
#include "net/cert/x509_util.h"
#include "net/dns/host_resolver.h"
#include "net/http/http_auth.h"
#include "net/http/http_auth_filter.h"
#include "net/http/http_auth_preferences.h"
#include "net/log/net_log_capture_mode.h"
#include "net/log/net_log_event_type.h"
#include "net/log/net_log_with_source.h"
#include "net/ssl/ssl_info.h"
#include "url/scheme_host_port.h"
namespace net {
DelegationType;
namespace {
base::Value::Dict NetLogParameterChannelBindings(
const std::string& channel_binding_token,
NetLogCaptureMode capture_mode) { … }
std::unique_ptr<HttpAuthMechanism> CreateAuthSystem(
#if !BUILDFLAG(IS_ANDROID)
HttpAuthHandlerNegotiate::AuthLibrary* auth_library,
#endif
const HttpAuthPreferences* prefs,
HttpAuthMechanismFactory negotiate_auth_system_factory) { … }
}
HttpAuthHandlerNegotiate::Factory::Factory(
HttpAuthMechanismFactory negotiate_auth_system_factory)
: … { … }
HttpAuthHandlerNegotiate::Factory::~Factory() = default;
#if !BUILDFLAG(IS_ANDROID) && BUILDFLAG(IS_POSIX)
const std::string& HttpAuthHandlerNegotiate::Factory::GetLibraryNameForTesting()
const { … }
#endif
int HttpAuthHandlerNegotiate::Factory::CreateAuthHandler(
HttpAuthChallengeTokenizer* challenge,
HttpAuth::Target target,
const SSLInfo& ssl_info,
const NetworkAnonymizationKey& network_anonymization_key,
const url::SchemeHostPort& scheme_host_port,
CreateReason reason,
int digest_nonce_count,
const NetLogWithSource& net_log,
HostResolver* host_resolver,
std::unique_ptr<HttpAuthHandler>* handler) { … }
HttpAuthHandlerNegotiate::HttpAuthHandlerNegotiate(
std::unique_ptr<HttpAuthMechanism> auth_system,
const HttpAuthPreferences* prefs,
HostResolver* resolver)
: … { … }
HttpAuthHandlerNegotiate::~HttpAuthHandlerNegotiate() = default;
bool HttpAuthHandlerNegotiate::NeedsIdentity() { … }
bool HttpAuthHandlerNegotiate::AllowsDefaultCredentials() { … }
bool HttpAuthHandlerNegotiate::AllowsExplicitCredentials() { … }
bool HttpAuthHandlerNegotiate::Init(
HttpAuthChallengeTokenizer* challenge,
const SSLInfo& ssl_info,
const NetworkAnonymizationKey& network_anonymization_key) { … }
int HttpAuthHandlerNegotiate::GenerateAuthTokenImpl(
const AuthCredentials* credentials,
const HttpRequestInfo* request,
CompletionOnceCallback callback,
std::string* auth_token) { … }
HttpAuth::AuthorizationResult
HttpAuthHandlerNegotiate::HandleAnotherChallengeImpl(
HttpAuthChallengeTokenizer* challenge) { … }
std::string HttpAuthHandlerNegotiate::CreateSPN(
const std::string& server,
const url::SchemeHostPort& scheme_host_port) { … }
void HttpAuthHandlerNegotiate::OnIOComplete(int result) { … }
void HttpAuthHandlerNegotiate::DoCallback(int rv) { … }
int HttpAuthHandlerNegotiate::DoLoop(int result) { … }
int HttpAuthHandlerNegotiate::DoResolveCanonicalName() { … }
int HttpAuthHandlerNegotiate::DoResolveCanonicalNameComplete(int rv) { … }
int HttpAuthHandlerNegotiate::DoGenerateAuthToken() { … }
int HttpAuthHandlerNegotiate::DoGenerateAuthTokenComplete(int rv) { … }
DelegationType HttpAuthHandlerNegotiate::GetDelegationType() const { … }
}