| 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 <memory> | 7 #include <memory> |
| 8 #include <set> | 8 #include <set> |
| 9 #include <utility> | 9 #include <utility> |
| 10 #include <vector> | 10 #include <vector> |
| (...skipping 1011 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1022 | 1022 |
| 1023 response_.did_use_http_auth = | 1023 response_.did_use_http_auth = |
| 1024 request_headers_.HasHeader(HttpRequestHeaders::kAuthorization) || | 1024 request_headers_.HasHeader(HttpRequestHeaders::kAuthorization) || |
| 1025 request_headers_.HasHeader(HttpRequestHeaders::kProxyAuthorization); | 1025 request_headers_.HasHeader(HttpRequestHeaders::kProxyAuthorization); |
| 1026 return OK; | 1026 return OK; |
| 1027 } | 1027 } |
| 1028 | 1028 |
| 1029 int HttpNetworkTransaction::BuildTokenBindingHeader(std::string* out) { | 1029 int HttpNetworkTransaction::BuildTokenBindingHeader(std::string* out) { |
| 1030 base::TimeTicks start = base::TimeTicks::Now(); | 1030 base::TimeTicks start = base::TimeTicks::Now(); |
| 1031 std::vector<uint8_t> signed_ekm; | 1031 std::vector<uint8_t> signed_ekm; |
| 1032 int rv = stream_->GetSignedEKMForTokenBinding( | 1032 int rv = stream_->GetTokenBindingSignature(provided_token_binding_key_.get(), |
| 1033 provided_token_binding_key_.get(), &signed_ekm); | 1033 TokenBindingType::PROVIDED, |
| 1034 &signed_ekm); |
| 1034 if (rv != OK) | 1035 if (rv != OK) |
| 1035 return rv; | 1036 return rv; |
| 1036 std::string provided_token_binding; | 1037 std::string provided_token_binding; |
| 1037 rv = BuildTokenBinding(TokenBindingType::PROVIDED, | 1038 rv = BuildTokenBinding(TokenBindingType::PROVIDED, |
| 1038 provided_token_binding_key_.get(), signed_ekm, | 1039 provided_token_binding_key_.get(), signed_ekm, |
| 1039 &provided_token_binding); | 1040 &provided_token_binding); |
| 1040 if (rv != OK) | 1041 if (rv != OK) |
| 1041 return rv; | 1042 return rv; |
| 1042 | 1043 |
| 1043 std::vector<base::StringPiece> token_bindings; | 1044 std::vector<base::StringPiece> token_bindings; |
| 1044 token_bindings.push_back(provided_token_binding); | 1045 token_bindings.push_back(provided_token_binding); |
| 1045 | 1046 |
| 1046 std::string referred_token_binding; | 1047 std::string referred_token_binding; |
| 1047 if (referred_token_binding_key_) { | 1048 if (referred_token_binding_key_) { |
| 1048 std::vector<uint8_t> referred_signed_ekm; | 1049 std::vector<uint8_t> referred_signed_ekm; |
| 1049 int rv = stream_->GetSignedEKMForTokenBinding( | 1050 int rv = stream_->GetTokenBindingSignature( |
| 1050 referred_token_binding_key_.get(), &referred_signed_ekm); | 1051 referred_token_binding_key_.get(), TokenBindingType::REFERRED, |
| 1052 &referred_signed_ekm); |
| 1051 if (rv != OK) | 1053 if (rv != OK) |
| 1052 return rv; | 1054 return rv; |
| 1053 rv = BuildTokenBinding(TokenBindingType::REFERRED, | 1055 rv = BuildTokenBinding(TokenBindingType::REFERRED, |
| 1054 referred_token_binding_key_.get(), | 1056 referred_token_binding_key_.get(), |
| 1055 referred_signed_ekm, &referred_token_binding); | 1057 referred_signed_ekm, &referred_token_binding); |
| 1056 if (rv != OK) | 1058 if (rv != OK) |
| 1057 return rv; | 1059 return rv; |
| 1058 token_bindings.push_back(referred_token_binding); | 1060 token_bindings.push_back(referred_token_binding); |
| 1059 } | 1061 } |
| 1060 std::string header; | 1062 std::string header; |
| 1061 rv = BuildTokenBindingMessageFromTokenBindings(token_bindings, &header); | 1063 rv = BuildTokenBindingMessageFromTokenBindings(token_bindings, &header); |
| 1062 if (rv != OK) | 1064 if (rv != OK) |
| 1063 return rv; | 1065 return rv; |
| 1064 base::Base64UrlEncode(header, base::Base64UrlEncodePolicy::INCLUDE_PADDING, | 1066 base::Base64UrlEncode(header, base::Base64UrlEncodePolicy::OMIT_PADDING, out); |
| 1065 out); | |
| 1066 base::TimeDelta header_creation_time = base::TimeTicks::Now() - start; | 1067 base::TimeDelta header_creation_time = base::TimeTicks::Now() - start; |
| 1067 UMA_HISTOGRAM_CUSTOM_TIMES("Net.TokenBinding.HeaderCreationTime", | 1068 UMA_HISTOGRAM_CUSTOM_TIMES("Net.TokenBinding.HeaderCreationTime", |
| 1068 header_creation_time, | 1069 header_creation_time, |
| 1069 base::TimeDelta::FromMilliseconds(1), | 1070 base::TimeDelta::FromMilliseconds(1), |
| 1070 base::TimeDelta::FromMinutes(1), 50); | 1071 base::TimeDelta::FromMinutes(1), 50); |
| 1071 return OK; | 1072 return OK; |
| 1072 } | 1073 } |
| 1073 | 1074 |
| 1074 int HttpNetworkTransaction::DoInitRequestBody() { | 1075 int HttpNetworkTransaction::DoInitRequestBody() { |
| 1075 next_state_ = STATE_INIT_REQUEST_BODY_COMPLETE; | 1076 next_state_ = STATE_INIT_REQUEST_BODY_COMPLETE; |
| (...skipping 560 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1636 DCHECK(stream_request_); | 1637 DCHECK(stream_request_); |
| 1637 | 1638 |
| 1638 // Since the transaction can restart with auth credentials, it may create a | 1639 // Since the transaction can restart with auth credentials, it may create a |
| 1639 // stream more than once. Accumulate all of the connection attempts across | 1640 // stream more than once. Accumulate all of the connection attempts across |
| 1640 // those streams by appending them to the vector: | 1641 // those streams by appending them to the vector: |
| 1641 for (const auto& attempt : stream_request_->connection_attempts()) | 1642 for (const auto& attempt : stream_request_->connection_attempts()) |
| 1642 connection_attempts_.push_back(attempt); | 1643 connection_attempts_.push_back(attempt); |
| 1643 } | 1644 } |
| 1644 | 1645 |
| 1645 } // namespace net | 1646 } // namespace net |
| OLD | NEW |