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 |