OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "net/http/http_auth_handler_ntlm.h" | 5 #include "net/http/http_auth_handler_ntlm.h" |
6 | 6 |
7 #include <stdlib.h> | 7 #include <stdlib.h> |
8 // For gethostname | 8 // For gethostname |
9 #if defined(OS_POSIX) | 9 #if defined(OS_POSIX) |
10 #include <unistd.h> | 10 #include <unistd.h> |
(...skipping 617 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
628 // [MS-NTHT]. | 628 // [MS-NTHT]. |
629 | 629 |
630 // static | 630 // static |
631 HttpAuthHandlerNTLM::GenerateRandomProc | 631 HttpAuthHandlerNTLM::GenerateRandomProc |
632 HttpAuthHandlerNTLM::generate_random_proc_ = GenerateRandom; | 632 HttpAuthHandlerNTLM::generate_random_proc_ = GenerateRandom; |
633 | 633 |
634 // static | 634 // static |
635 HttpAuthHandlerNTLM::HostNameProc | 635 HttpAuthHandlerNTLM::HostNameProc |
636 HttpAuthHandlerNTLM::get_host_name_proc_ = GetHostName; | 636 HttpAuthHandlerNTLM::get_host_name_proc_ = GetHostName; |
637 | 637 |
638 HttpAuthHandlerNTLM::HttpAuthHandlerNTLM() { | 638 HttpAuthHandlerNTLM::HttpAuthHandlerNTLM() : HttpAuthHandler("ntlm") {} |
639 } | |
640 | 639 |
641 bool HttpAuthHandlerNTLM::NeedsIdentity() { | 640 bool HttpAuthHandlerNTLM::NeedsIdentity() { |
642 // This gets called for each round-trip. Only require identity on | 641 // This gets called for each round-trip. Only require identity on |
643 // the first call (when auth_data_ is empty). On subsequent calls, | 642 // the first call (when auth_data_ is empty). On subsequent calls, |
644 // we use the initially established identity. | 643 // we use the initially established identity. |
645 return auth_data_.empty(); | 644 return auth_data_.empty(); |
646 } | 645 } |
647 | 646 |
648 bool HttpAuthHandlerNTLM::AllowsDefaultCredentials() { | 647 bool HttpAuthHandlerNTLM::AllowsDefaultCredentials() { |
649 // Default credentials are not supported in the portable implementation of | 648 // Default credentials are not supported in the portable implementation of |
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
703 } else { | 702 } else { |
704 rv = GenerateType1Msg(out_token, out_token_len); | 703 rv = GenerateType1Msg(out_token, out_token_len); |
705 } | 704 } |
706 | 705 |
707 if (rv == OK) | 706 if (rv == OK) |
708 LogToken("out-token", *out_token, *out_token_len); | 707 LogToken("out-token", *out_token, *out_token_len); |
709 | 708 |
710 return rv; | 709 return rv; |
711 } | 710 } |
712 | 711 |
713 int HttpAuthHandlerNTLM::Factory::CreateAuthHandler( | 712 scoped_ptr<HttpAuthHandler> |
714 const HttpAuthChallengeTokenizer& challenge, | 713 HttpAuthHandlerNTLM::Factory::CreateAuthHandlerForScheme( |
715 HttpAuth::Target target, | 714 const std::string& scheme) { |
716 const GURL& origin, | 715 DCHECK(HttpAuth::IsValidNormalizedScheme(scheme)); |
717 CreateReason reason, | 716 if (scheme != "ntlm") |
718 int digest_nonce_count, | 717 return scoped_ptr<HttpAuthHandler>(); |
719 const BoundNetLog& net_log, | 718 // TODO(cbentzel): Move towards model of parsing in the factory method and |
720 scoped_ptr<HttpAuthHandler>* handler) { | 719 // only constructing when valid. NOTE: Default credentials are not supported |
721 if (reason == CREATE_PREEMPTIVE) | 720 // for the portable implementation of NTLM. |
722 return ERR_UNSUPPORTED_AUTH_SCHEME; | 721 return make_scoped_ptr(new HttpAuthHandlerNTLM); |
723 // TODO(cbentzel): Move towards model of parsing in the factory | |
724 // method and only constructing when valid. | |
725 // NOTE: Default credentials are not supported for the portable implementation | |
726 // of NTLM. | |
727 scoped_ptr<HttpAuthHandler> tmp_handler(new HttpAuthHandlerNTLM); | |
728 int result = | |
729 tmp_handler->HandleInitialChallenge(challenge, target, origin, net_log); | |
730 if (result == OK) | |
731 handler->swap(tmp_handler); | |
732 return result; | |
733 } | 722 } |
734 | 723 |
735 } // namespace net | 724 } // namespace net |
OLD | NEW |