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 |