Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(82)

Side by Side Diff: net/url_request/url_request_unittest.cc

Issue 2337253004: Update Token Binding code to the latest drafts (Closed)
Patch Set: Add call to CBS_len() Created 4 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « net/url_request/url_request_job.cc ('k') | net/websockets/websocket_basic_handshake_stream.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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
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
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
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
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
OLDNEW
« no previous file with comments | « net/url_request/url_request_job.cc ('k') | net/websockets/websocket_basic_handshake_stream.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698