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 <memory> | 5 #include <memory> |
6 #include <utility> | 6 #include <utility> |
7 | 7 |
8 #include "base/memory/ptr_util.h" | 8 #include "base/memory/ptr_util.h" |
9 #include "base/run_loop.h" | 9 #include "base/run_loop.h" |
10 #include "build/build_config.h" | 10 #include "build/build_config.h" |
(...skipping 3403 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3414 base::RunLoop().Run(); | 3414 base::RunLoop().Run(); |
3415 | 3415 |
3416 EXPECT_EQ(OK, d.request_status()); | 3416 EXPECT_EQ(OK, d.request_status()); |
3417 | 3417 |
3418 HttpRequestHeaders headers; | 3418 HttpRequestHeaders headers; |
3419 std::string token_binding_header, token_binding_message; | 3419 std::string token_binding_header, token_binding_message; |
3420 EXPECT_TRUE(r->GetFullRequestHeaders(&headers)); | 3420 EXPECT_TRUE(r->GetFullRequestHeaders(&headers)); |
3421 EXPECT_TRUE(headers.GetHeader(HttpRequestHeaders::kTokenBinding, | 3421 EXPECT_TRUE(headers.GetHeader(HttpRequestHeaders::kTokenBinding, |
3422 &token_binding_header)); | 3422 &token_binding_header)); |
3423 EXPECT_TRUE(base::Base64UrlDecode( | 3423 EXPECT_TRUE(base::Base64UrlDecode( |
3424 token_binding_header, base::Base64UrlDecodePolicy::REQUIRE_PADDING, | 3424 token_binding_header, base::Base64UrlDecodePolicy::DISALLOW_PADDING, |
3425 &token_binding_message)); | 3425 &token_binding_message)); |
3426 std::vector<TokenBinding> token_bindings; | 3426 std::vector<TokenBinding> token_bindings; |
3427 ASSERT_TRUE( | 3427 ASSERT_TRUE( |
3428 ParseTokenBindingMessage(token_binding_message, &token_bindings)); | 3428 ParseTokenBindingMessage(token_binding_message, &token_bindings)); |
3429 ASSERT_EQ(1ull, token_bindings.size()); | 3429 ASSERT_EQ(1ull, token_bindings.size()); |
3430 | 3430 |
3431 EXPECT_GT(d.bytes_received(), 0); | 3431 EXPECT_GT(d.bytes_received(), 0); |
3432 std::string ekm = d.data_received(); | 3432 std::string ekm = d.data_received(); |
3433 | 3433 |
3434 EXPECT_EQ(TokenBindingType::PROVIDED, token_bindings[0].type); | 3434 EXPECT_EQ(TokenBindingType::PROVIDED, token_bindings[0].type); |
3435 EXPECT_TRUE(VerifyEKMSignature(token_bindings[0].ec_point, | 3435 EXPECT_TRUE(VerifyTokenBindingSignature(token_bindings[0].ec_point, |
3436 token_bindings[0].signature, ekm)); | 3436 token_bindings[0].signature, |
| 3437 TokenBindingType::PROVIDED, ekm)); |
3437 } | 3438 } |
3438 } | 3439 } |
3439 | 3440 |
3440 TEST_F(TokenBindingURLRequestTest, ForwardTokenBinding) { | 3441 TEST_F(TokenBindingURLRequestTest, ForwardTokenBinding) { |
3441 SpawnedTestServer::SSLOptions ssl_options; | 3442 SpawnedTestServer::SSLOptions ssl_options; |
3442 ssl_options.supported_token_binding_params.push_back(TB_PARAM_ECDSAP256); | 3443 ssl_options.supported_token_binding_params.push_back(TB_PARAM_ECDSAP256); |
3443 SpawnedTestServer https_test_server(SpawnedTestServer::TYPE_HTTPS, | 3444 SpawnedTestServer https_test_server(SpawnedTestServer::TYPE_HTTPS, |
3444 ssl_options, | 3445 ssl_options, |
3445 base::FilePath(kTestFilePath)); | 3446 base::FilePath(kTestFilePath)); |
3446 ASSERT_TRUE(https_test_server.Start()); | 3447 ASSERT_TRUE(https_test_server.Start()); |
(...skipping 10 matching lines...) Expand all Loading... |
3457 base::RunLoop().Run(); | 3458 base::RunLoop().Run(); |
3458 | 3459 |
3459 EXPECT_EQ(OK, d.request_status()); | 3460 EXPECT_EQ(OK, d.request_status()); |
3460 | 3461 |
3461 HttpRequestHeaders headers; | 3462 HttpRequestHeaders headers; |
3462 std::string token_binding_header, token_binding_message; | 3463 std::string token_binding_header, token_binding_message; |
3463 EXPECT_TRUE(r->GetFullRequestHeaders(&headers)); | 3464 EXPECT_TRUE(r->GetFullRequestHeaders(&headers)); |
3464 EXPECT_TRUE(headers.GetHeader(HttpRequestHeaders::kTokenBinding, | 3465 EXPECT_TRUE(headers.GetHeader(HttpRequestHeaders::kTokenBinding, |
3465 &token_binding_header)); | 3466 &token_binding_header)); |
3466 EXPECT_TRUE(base::Base64UrlDecode( | 3467 EXPECT_TRUE(base::Base64UrlDecode( |
3467 token_binding_header, base::Base64UrlDecodePolicy::REQUIRE_PADDING, | 3468 token_binding_header, base::Base64UrlDecodePolicy::DISALLOW_PADDING, |
3468 &token_binding_message)); | 3469 &token_binding_message)); |
3469 std::vector<TokenBinding> token_bindings; | 3470 std::vector<TokenBinding> token_bindings; |
3470 ASSERT_TRUE( | 3471 ASSERT_TRUE( |
3471 ParseTokenBindingMessage(token_binding_message, &token_bindings)); | 3472 ParseTokenBindingMessage(token_binding_message, &token_bindings)); |
3472 ASSERT_EQ(2ull, token_bindings.size()); | 3473 ASSERT_EQ(2ull, token_bindings.size()); |
3473 | 3474 |
3474 EXPECT_GT(d.bytes_received(), 0); | 3475 EXPECT_GT(d.bytes_received(), 0); |
3475 std::string ekm = d.data_received(); | 3476 std::string ekm = d.data_received(); |
3476 | 3477 |
3477 EXPECT_EQ(TokenBindingType::PROVIDED, token_bindings[0].type); | 3478 EXPECT_EQ(TokenBindingType::PROVIDED, token_bindings[0].type); |
3478 EXPECT_TRUE(VerifyEKMSignature(token_bindings[0].ec_point, | 3479 EXPECT_TRUE(VerifyTokenBindingSignature(token_bindings[0].ec_point, |
3479 token_bindings[0].signature, ekm)); | 3480 token_bindings[0].signature, |
| 3481 TokenBindingType::PROVIDED, ekm)); |
3480 EXPECT_EQ(TokenBindingType::REFERRED, token_bindings[1].type); | 3482 EXPECT_EQ(TokenBindingType::REFERRED, token_bindings[1].type); |
3481 EXPECT_TRUE(VerifyEKMSignature(token_bindings[1].ec_point, | 3483 EXPECT_TRUE(VerifyTokenBindingSignature(token_bindings[1].ec_point, |
3482 token_bindings[1].signature, ekm)); | 3484 token_bindings[1].signature, |
| 3485 TokenBindingType::REFERRED, ekm)); |
3483 } | 3486 } |
3484 } | 3487 } |
3485 | 3488 |
3486 // TODO(nharper): Remove this #ifdef and replace SpawnedTestServer with | 3489 // TODO(nharper): Remove this #ifdef and replace SpawnedTestServer with |
3487 // EmbeddedTestServer once crbug.com/599187 is resolved. | 3490 // EmbeddedTestServer once crbug.com/599187 is resolved. |
3488 #if !defined(OS_ANDROID) | 3491 #if !defined(OS_ANDROID) |
3489 TEST_F(TokenBindingURLRequestTest, DontForwardHeaderFromHttp) { | 3492 TEST_F(TokenBindingURLRequestTest, DontForwardHeaderFromHttp) { |
3490 SpawnedTestServer http_server(SpawnedTestServer::TYPE_HTTP, | 3493 SpawnedTestServer http_server(SpawnedTestServer::TYPE_HTTP, |
3491 SpawnedTestServer::kLocalhost, | 3494 SpawnedTestServer::kLocalhost, |
3492 base::FilePath()); | 3495 base::FilePath()); |
(...skipping 17 matching lines...) Expand all Loading... |
3510 base::RunLoop().Run(); | 3513 base::RunLoop().Run(); |
3511 | 3514 |
3512 EXPECT_EQ(OK, d.request_status()); | 3515 EXPECT_EQ(OK, d.request_status()); |
3513 | 3516 |
3514 HttpRequestHeaders headers; | 3517 HttpRequestHeaders headers; |
3515 std::string token_binding_header, token_binding_message; | 3518 std::string token_binding_header, token_binding_message; |
3516 EXPECT_TRUE(r->GetFullRequestHeaders(&headers)); | 3519 EXPECT_TRUE(r->GetFullRequestHeaders(&headers)); |
3517 EXPECT_TRUE(headers.GetHeader(HttpRequestHeaders::kTokenBinding, | 3520 EXPECT_TRUE(headers.GetHeader(HttpRequestHeaders::kTokenBinding, |
3518 &token_binding_header)); | 3521 &token_binding_header)); |
3519 EXPECT_TRUE(base::Base64UrlDecode( | 3522 EXPECT_TRUE(base::Base64UrlDecode( |
3520 token_binding_header, base::Base64UrlDecodePolicy::REQUIRE_PADDING, | 3523 token_binding_header, base::Base64UrlDecodePolicy::DISALLOW_PADDING, |
3521 &token_binding_message)); | 3524 &token_binding_message)); |
3522 std::vector<TokenBinding> token_bindings; | 3525 std::vector<TokenBinding> token_bindings; |
3523 ASSERT_TRUE( | 3526 ASSERT_TRUE( |
3524 ParseTokenBindingMessage(token_binding_message, &token_bindings)); | 3527 ParseTokenBindingMessage(token_binding_message, &token_bindings)); |
3525 ASSERT_EQ(1ull, token_bindings.size()); | 3528 ASSERT_EQ(1ull, token_bindings.size()); |
3526 | 3529 |
3527 EXPECT_GT(d.bytes_received(), 0); | 3530 EXPECT_GT(d.bytes_received(), 0); |
3528 std::string ekm = d.data_received(); | 3531 std::string ekm = d.data_received(); |
3529 | 3532 |
3530 EXPECT_EQ(TokenBindingType::PROVIDED, token_bindings[0].type); | 3533 EXPECT_EQ(TokenBindingType::PROVIDED, token_bindings[0].type); |
3531 EXPECT_TRUE(VerifyEKMSignature(token_bindings[0].ec_point, | 3534 EXPECT_TRUE(VerifyTokenBindingSignature(token_bindings[0].ec_point, |
3532 token_bindings[0].signature, ekm)); | 3535 token_bindings[0].signature, |
| 3536 TokenBindingType::PROVIDED, ekm)); |
3533 } | 3537 } |
3534 } | 3538 } |
3535 | 3539 |
3536 // Test that if a server supporting Token Binding redirects (with | 3540 // Test that if a server supporting Token Binding redirects (with |
3537 // Include-Referred-Token-Binding-ID) to an https url on a server that does not | 3541 // Include-Referred-Token-Binding-ID) to an https url on a server that does not |
3538 // support Token Binding, then we do not send a Sec-Token-Binding when following | 3542 // support Token Binding, then we do not send a Sec-Token-Binding when following |
3539 // the redirect. | 3543 // the redirect. |
3540 TEST_F(TokenBindingURLRequestTest, ForwardWithoutTokenBinding) { | 3544 TEST_F(TokenBindingURLRequestTest, ForwardWithoutTokenBinding) { |
3541 SpawnedTestServer::SSLOptions ssl_options; | 3545 SpawnedTestServer::SSLOptions ssl_options; |
3542 SpawnedTestServer https_test_server(SpawnedTestServer::TYPE_HTTPS, | 3546 SpawnedTestServer https_test_server(SpawnedTestServer::TYPE_HTTPS, |
(...skipping 6645 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
10188 AddTestInterceptor()->set_main_intercept_job(std::move(job)); | 10192 AddTestInterceptor()->set_main_intercept_job(std::move(job)); |
10189 | 10193 |
10190 req->Start(); | 10194 req->Start(); |
10191 req->Cancel(); | 10195 req->Cancel(); |
10192 base::RunLoop().RunUntilIdle(); | 10196 base::RunLoop().RunUntilIdle(); |
10193 EXPECT_EQ(ERR_ABORTED, d.request_status()); | 10197 EXPECT_EQ(ERR_ABORTED, d.request_status()); |
10194 EXPECT_EQ(0, d.received_redirect_count()); | 10198 EXPECT_EQ(0, d.received_redirect_count()); |
10195 } | 10199 } |
10196 | 10200 |
10197 } // namespace net | 10201 } // namespace net |
OLD | NEW |