| 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_network_transaction.h" | 5 #include "net/http/http_network_transaction.h" |
| 6 | 6 |
| 7 #include <set> | 7 #include <set> |
| 8 #include <utility> | 8 #include <utility> |
| 9 #include <vector> | 9 #include <vector> |
| 10 | 10 |
| (...skipping 592 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 603 return request_->url.SchemeIsCryptographic(); | 603 return request_->url.SchemeIsCryptographic(); |
| 604 } | 604 } |
| 605 | 605 |
| 606 bool HttpNetworkTransaction::IsTokenBindingEnabled() const { | 606 bool HttpNetworkTransaction::IsTokenBindingEnabled() const { |
| 607 if (!IsSecureRequest()) | 607 if (!IsSecureRequest()) |
| 608 return false; | 608 return false; |
| 609 SSLInfo ssl_info; | 609 SSLInfo ssl_info; |
| 610 stream_->GetSSLInfo(&ssl_info); | 610 stream_->GetSSLInfo(&ssl_info); |
| 611 return ssl_info.token_binding_negotiated && | 611 return ssl_info.token_binding_negotiated && |
| 612 ssl_info.token_binding_key_param == TB_PARAM_ECDSAP256 && | 612 ssl_info.token_binding_key_param == TB_PARAM_ECDSAP256 && |
| 613 session_->params().channel_id_service; | 613 session_->context().channel_id_service; |
| 614 } | 614 } |
| 615 | 615 |
| 616 void HttpNetworkTransaction::RecordTokenBindingSupport() const { | 616 void HttpNetworkTransaction::RecordTokenBindingSupport() const { |
| 617 // This enum is used for an UMA histogram - do not change or re-use values. | 617 // This enum is used for an UMA histogram - do not change or re-use values. |
| 618 enum { | 618 enum { |
| 619 DISABLED = 0, | 619 DISABLED = 0, |
| 620 CLIENT_ONLY = 1, | 620 CLIENT_ONLY = 1, |
| 621 CLIENT_AND_SERVER = 2, | 621 CLIENT_AND_SERVER = 2, |
| 622 CLIENT_NO_CHANNEL_ID_SERVICE = 3, | 622 CLIENT_NO_CHANNEL_ID_SERVICE = 3, |
| 623 TOKEN_BINDING_SUPPORT_MAX | 623 TOKEN_BINDING_SUPPORT_MAX |
| 624 } supported; | 624 } supported; |
| 625 if (!IsSecureRequest()) | 625 if (!IsSecureRequest()) |
| 626 return; | 626 return; |
| 627 SSLInfo ssl_info; | 627 SSLInfo ssl_info; |
| 628 stream_->GetSSLInfo(&ssl_info); | 628 stream_->GetSSLInfo(&ssl_info); |
| 629 if (!session_->params().enable_token_binding) { | 629 if (!session_->params().enable_token_binding) { |
| 630 supported = DISABLED; | 630 supported = DISABLED; |
| 631 } else if (!session_->params().channel_id_service) { | 631 } else if (!session_->context().channel_id_service) { |
| 632 supported = CLIENT_NO_CHANNEL_ID_SERVICE; | 632 supported = CLIENT_NO_CHANNEL_ID_SERVICE; |
| 633 } else if (ssl_info.token_binding_negotiated) { | 633 } else if (ssl_info.token_binding_negotiated) { |
| 634 supported = CLIENT_AND_SERVER; | 634 supported = CLIENT_AND_SERVER; |
| 635 } else { | 635 } else { |
| 636 supported = CLIENT_ONLY; | 636 supported = CLIENT_ONLY; |
| 637 } | 637 } |
| 638 UMA_HISTOGRAM_ENUMERATION("Net.TokenBinding.Support", supported, | 638 UMA_HISTOGRAM_ENUMERATION("Net.TokenBinding.Support", supported, |
| 639 TOKEN_BINDING_SUPPORT_MAX); | 639 TOKEN_BINDING_SUPPORT_MAX); |
| 640 } | 640 } |
| 641 | 641 |
| (...skipping 320 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 962 next_state_ = STATE_GET_PROVIDED_TOKEN_BINDING_KEY; | 962 next_state_ = STATE_GET_PROVIDED_TOKEN_BINDING_KEY; |
| 963 return rv; | 963 return rv; |
| 964 } | 964 } |
| 965 | 965 |
| 966 int HttpNetworkTransaction::DoGetProvidedTokenBindingKey() { | 966 int HttpNetworkTransaction::DoGetProvidedTokenBindingKey() { |
| 967 next_state_ = STATE_GET_PROVIDED_TOKEN_BINDING_KEY_COMPLETE; | 967 next_state_ = STATE_GET_PROVIDED_TOKEN_BINDING_KEY_COMPLETE; |
| 968 if (!IsTokenBindingEnabled()) | 968 if (!IsTokenBindingEnabled()) |
| 969 return OK; | 969 return OK; |
| 970 | 970 |
| 971 net_log_.BeginEvent(NetLogEventType::HTTP_TRANSACTION_GET_TOKEN_BINDING_KEY); | 971 net_log_.BeginEvent(NetLogEventType::HTTP_TRANSACTION_GET_TOKEN_BINDING_KEY); |
| 972 ChannelIDService* channel_id_service = session_->params().channel_id_service; | 972 ChannelIDService* channel_id_service = session_->context().channel_id_service; |
| 973 return channel_id_service->GetOrCreateChannelID( | 973 return channel_id_service->GetOrCreateChannelID( |
| 974 request_->url.host(), &provided_token_binding_key_, io_callback_, | 974 request_->url.host(), &provided_token_binding_key_, io_callback_, |
| 975 &token_binding_request_); | 975 &token_binding_request_); |
| 976 } | 976 } |
| 977 | 977 |
| 978 int HttpNetworkTransaction::DoGetProvidedTokenBindingKeyComplete(int rv) { | 978 int HttpNetworkTransaction::DoGetProvidedTokenBindingKeyComplete(int rv) { |
| 979 DCHECK_NE(ERR_IO_PENDING, rv); | 979 DCHECK_NE(ERR_IO_PENDING, rv); |
| 980 if (IsTokenBindingEnabled()) { | 980 if (IsTokenBindingEnabled()) { |
| 981 net_log_.EndEventWithNetErrorCode( | 981 net_log_.EndEventWithNetErrorCode( |
| 982 NetLogEventType::HTTP_TRANSACTION_GET_TOKEN_BINDING_KEY, rv); | 982 NetLogEventType::HTTP_TRANSACTION_GET_TOKEN_BINDING_KEY, rv); |
| 983 } | 983 } |
| 984 | 984 |
| 985 if (rv == OK) | 985 if (rv == OK) |
| 986 next_state_ = STATE_GET_REFERRED_TOKEN_BINDING_KEY; | 986 next_state_ = STATE_GET_REFERRED_TOKEN_BINDING_KEY; |
| 987 return rv; | 987 return rv; |
| 988 } | 988 } |
| 989 | 989 |
| 990 int HttpNetworkTransaction::DoGetReferredTokenBindingKey() { | 990 int HttpNetworkTransaction::DoGetReferredTokenBindingKey() { |
| 991 next_state_ = STATE_GET_REFERRED_TOKEN_BINDING_KEY_COMPLETE; | 991 next_state_ = STATE_GET_REFERRED_TOKEN_BINDING_KEY_COMPLETE; |
| 992 if (!IsTokenBindingEnabled() || request_->token_binding_referrer.empty()) | 992 if (!IsTokenBindingEnabled() || request_->token_binding_referrer.empty()) |
| 993 return OK; | 993 return OK; |
| 994 | 994 |
| 995 net_log_.BeginEvent(NetLogEventType::HTTP_TRANSACTION_GET_TOKEN_BINDING_KEY); | 995 net_log_.BeginEvent(NetLogEventType::HTTP_TRANSACTION_GET_TOKEN_BINDING_KEY); |
| 996 ChannelIDService* channel_id_service = session_->params().channel_id_service; | 996 ChannelIDService* channel_id_service = session_->context().channel_id_service; |
| 997 return channel_id_service->GetOrCreateChannelID( | 997 return channel_id_service->GetOrCreateChannelID( |
| 998 request_->token_binding_referrer, &referred_token_binding_key_, | 998 request_->token_binding_referrer, &referred_token_binding_key_, |
| 999 io_callback_, &token_binding_request_); | 999 io_callback_, &token_binding_request_); |
| 1000 } | 1000 } |
| 1001 | 1001 |
| 1002 int HttpNetworkTransaction::DoGetReferredTokenBindingKeyComplete(int rv) { | 1002 int HttpNetworkTransaction::DoGetReferredTokenBindingKeyComplete(int rv) { |
| 1003 DCHECK_NE(ERR_IO_PENDING, rv); | 1003 DCHECK_NE(ERR_IO_PENDING, rv); |
| 1004 if (IsTokenBindingEnabled() && !request_->token_binding_referrer.empty()) { | 1004 if (IsTokenBindingEnabled() && !request_->token_binding_referrer.empty()) { |
| 1005 net_log_.EndEventWithNetErrorCode( | 1005 net_log_.EndEventWithNetErrorCode( |
| 1006 NetLogEventType::HTTP_TRANSACTION_GET_TOKEN_BINDING_KEY, rv); | 1006 NetLogEventType::HTTP_TRANSACTION_GET_TOKEN_BINDING_KEY, rv); |
| (...skipping 764 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1771 if (headers->IsRedirect(nullptr)) { | 1771 if (headers->IsRedirect(nullptr)) { |
| 1772 UMA_HISTOGRAM_BOOLEAN("Net.RedirectWithUnadvertisedContentEncoding", | 1772 UMA_HISTOGRAM_BOOLEAN("Net.RedirectWithUnadvertisedContentEncoding", |
| 1773 !result); | 1773 !result); |
| 1774 return true; | 1774 return true; |
| 1775 } | 1775 } |
| 1776 | 1776 |
| 1777 return result; | 1777 return result; |
| 1778 } | 1778 } |
| 1779 | 1779 |
| 1780 } // namespace net | 1780 } // namespace net |
| OLD | NEW |