// Copyright 2011 The Chromium Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #include "net/http/http_auth_handler_ntlm.h" #include "net/base/url_util.h" #include "net/cert/x509_util.h" #include "net/http/http_auth_scheme.h" #include "net/ssl/ssl_info.h" namespace net { HttpAuthHandlerNTLM::Factory::Factory() = default; HttpAuthHandlerNTLM::Factory::~Factory() = default; bool HttpAuthHandlerNTLM::Init( HttpAuthChallengeTokenizer* tok, const SSLInfo& ssl_info, const NetworkAnonymizationKey& network_anonymization_key) { auth_scheme_ = HttpAuth::AUTH_SCHEME_NTLM; score_ = 3; properties_ = ENCRYPTS_IDENTITY | IS_CONNECTION_BASED; if (ssl_info.is_valid()) x509_util::GetTLSServerEndPointChannelBinding(*ssl_info.cert, &channel_bindings_); return ParseChallenge(tok) == HttpAuth::AUTHORIZATION_RESULT_ACCEPT; } HttpAuth::AuthorizationResult HttpAuthHandlerNTLM::HandleAnotherChallengeImpl( HttpAuthChallengeTokenizer* challenge) { return ParseChallenge(challenge); } // static std::string HttpAuthHandlerNTLM::CreateSPN( const url::SchemeHostPort& scheme_host_port) { // The service principal name of the destination server. See // http://msdn.microsoft.com/en-us/library/ms677949%28VS.85%29.aspx std::string target("HTTP/"); target.append(GetHostAndOptionalPort(scheme_host_port)); return target; } } // namespace net