Chromium Code Reviews| 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 <string> | 5 #include <string> |
| 6 #include <vector> | 6 #include <vector> |
| 7 | 7 |
| 8 #include "base/memory/ref_counted.h" | 8 #include "base/memory/ref_counted.h" |
| 9 #include "base/memory/scoped_ptr.h" | 9 #include "base/memory/scoped_ptr.h" |
| 10 #include "net/base/request_priority.h" | 10 #include "net/base/request_priority.h" |
| (...skipping 154 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 165 SSLSocketDataProvider ssl_data(ASYNC, OK); | 165 SSLSocketDataProvider ssl_data(ASYNC, OK); |
| 166 ssl_data.token_binding_negotiated = true; | 166 ssl_data.token_binding_negotiated = true; |
| 167 ssl_data.token_binding_key_param = TB_PARAM_ECDSAP256; | 167 ssl_data.token_binding_key_param = TB_PARAM_ECDSAP256; |
| 168 mock_socket_factory_.AddSSLSocketDataProvider(&ssl_data); | 168 mock_socket_factory_.AddSSLSocketDataProvider(&ssl_data); |
| 169 MockRead mock_reads[] = {MockRead("HTTP/1.1 200 OK\r\n\r\n"), | 169 MockRead mock_reads[] = {MockRead("HTTP/1.1 200 OK\r\n\r\n"), |
| 170 MockRead(SYNCHRONOUS, OK)}; | 170 MockRead(SYNCHRONOUS, OK)}; |
| 171 StaticSocketDataProvider data(mock_reads, arraysize(mock_reads), NULL, 0); | 171 StaticSocketDataProvider data(mock_reads, arraysize(mock_reads), NULL, 0); |
| 172 mock_socket_factory_.AddSocketDataProvider(&data); | 172 mock_socket_factory_.AddSocketDataProvider(&data); |
| 173 | 173 |
| 174 HttpNetworkSession session(session_params_); | 174 HttpNetworkSession session(session_params_); |
| 175 HttpNetworkTransaction trans(DEFAULT_PRIORITY, &session); | 175 HttpNetworkTransaction trans1(DEFAULT_PRIORITY, &session); |
| 176 | 176 |
| 177 TestCompletionCallback callback; | 177 TestCompletionCallback callback; |
| 178 int rv = | 178 int rv = callback.GetResult( |
| 179 callback.GetResult(trans.Start(GetRequestInfo("https://www.example.com/"), | 179 trans1.Start(GetRequestInfo("https://www.example.com/"), |
| 180 callback.callback(), BoundNetLog())); | 180 callback.callback(), BoundNetLog())); |
| 181 EXPECT_EQ(OK, rv); | 181 EXPECT_EQ(OK, rv); |
| 182 | 182 |
| 183 HttpRequestHeaders headers1; | 183 HttpRequestHeaders headers1; |
| 184 ASSERT_TRUE(trans.GetFullRequestHeaders(&headers1)); | 184 ASSERT_TRUE(trans1.GetFullRequestHeaders(&headers1)); |
| 185 std::string token_binding_header1; | 185 std::string token_binding_header1; |
| 186 EXPECT_TRUE(headers1.GetHeader(HttpRequestHeaders::kTokenBinding, | 186 EXPECT_TRUE(headers1.GetHeader(HttpRequestHeaders::kTokenBinding, |
| 187 &token_binding_header1)); | 187 &token_binding_header1)); |
| 188 | 188 |
| 189 // Send a second request and verify that the token binding header is the same | 189 // Send a second request and verify that the token binding header is the same |
| 190 // as in the first request. | 190 // as in the first request. |
| 191 mock_socket_factory_.AddSSLSocketDataProvider(&ssl_data); | 191 mock_socket_factory_.AddSSLSocketDataProvider(&ssl_data); |
| 192 StaticSocketDataProvider data2(mock_reads, arraysize(mock_reads), NULL, 0); | 192 StaticSocketDataProvider data2(mock_reads, arraysize(mock_reads), NULL, 0); |
| 193 mock_socket_factory_.AddSocketDataProvider(&data2); | 193 mock_socket_factory_.AddSocketDataProvider(&data2); |
| 194 HttpNetworkTransaction trans2(DEFAULT_PRIORITY, &session); | |
| 194 | 195 |
| 195 rv = | 196 rv = callback.GetResult( |
| 196 callback.GetResult(trans.Start(GetRequestInfo("https://www.example.com/"), | 197 trans2.Start(GetRequestInfo("https://www.example.com/"), |
| 197 callback.callback(), BoundNetLog())); | 198 callback.callback(), BoundNetLog())); |
| 198 EXPECT_EQ(OK, rv); | 199 EXPECT_EQ(OK, rv); |
| 199 | 200 |
| 200 HttpRequestHeaders headers2; | 201 HttpRequestHeaders headers2; |
| 201 ASSERT_TRUE(trans.GetFullRequestHeaders(&headers2)); | 202 ASSERT_TRUE(trans2.GetFullRequestHeaders(&headers2)); |
| 202 std::string token_binding_header2; | 203 std::string token_binding_header2; |
| 203 EXPECT_TRUE(headers2.GetHeader(HttpRequestHeaders::kTokenBinding, | 204 EXPECT_TRUE(headers2.GetHeader(HttpRequestHeaders::kTokenBinding, |
| 204 &token_binding_header2)); | 205 &token_binding_header2)); |
| 205 | 206 |
| 206 EXPECT_EQ(token_binding_header1, token_binding_header2); | 207 EXPECT_EQ(token_binding_header1, token_binding_header2); |
| 207 } | 208 } |
| 209 | |
| 210 TEST_F(HttpNetworkTransactionSSLTest, NoTokenBindingOverHttp) { | |
| 211 ssl_config_service_ = new TokenBindingSSLConfigService; | |
| 212 session_params_.ssl_config_service = ssl_config_service_.get(); | |
| 213 ChannelIDService channel_id_service(new DefaultChannelIDStore(NULL), | |
| 214 base::ThreadTaskRunnerHandle::Get()); | |
| 215 session_params_.channel_id_service = &channel_id_service; | |
| 216 | |
| 217 SSLSocketDataProvider ssl_data(ASYNC, OK); | |
| 218 ssl_data.token_binding_negotiated = true; | |
| 219 ssl_data.token_binding_key_param = TB_PARAM_ECDSAP256; | |
| 220 mock_socket_factory_.AddSSLSocketDataProvider(&ssl_data); | |
| 221 MockRead mock_reads[] = {MockRead("HTTP/1.1 200 OK\r\n\r\n"), | |
| 222 MockRead(SYNCHRONOUS, OK)}; | |
| 223 StaticSocketDataProvider data(mock_reads, arraysize(mock_reads), NULL, 0); | |
| 224 mock_socket_factory_.AddSocketDataProvider(&data); | |
| 225 | |
| 226 HttpNetworkSession session(session_params_); | |
| 227 HttpNetworkTransaction trans(DEFAULT_PRIORITY, &session); | |
| 228 | |
| 229 TestCompletionCallback callback; | |
| 230 int rv = | |
| 231 callback.GetResult(trans.Start(GetRequestInfo("http://www.example.com/"), | |
| 232 callback.callback(), BoundNetLog())); | |
|
davidben
2016/03/24 20:53:52
What is this testing? It looks like we've got a re
nharper
2016/03/25 01:34:29
This is testing that we don't send a Token-Binding
| |
| 233 EXPECT_EQ(OK, rv); | |
| 234 | |
| 235 HttpRequestHeaders headers; | |
| 236 ASSERT_TRUE(trans.GetFullRequestHeaders(&headers)); | |
| 237 std::string token_binding_header; | |
| 238 EXPECT_FALSE(headers.GetHeader(HttpRequestHeaders::kTokenBinding, | |
| 239 &token_binding_header)); | |
| 240 } | |
| 208 #endif // !defined(OS_IOS) | 241 #endif // !defined(OS_IOS) |
| 209 | 242 |
| 210 } // namespace net | 243 } // namespace net |
| OLD | NEW |