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

Side by Side Diff: net/quic/test_tools/crypto_test_utils.cc

Issue 2338013004: Simplify lifetime management of ValidateClientHelloResultCallback::Result objects (Closed)
Patch Set: 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
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 "net/quic/test_tools/crypto_test_utils.h" 5 #include "net/quic/test_tools/crypto_test_utils.h"
6 6
7 #include <openssl/bn.h> 7 #include <openssl/bn.h>
8 #include <openssl/ec.h> 8 #include <openssl/ec.h>
9 #include <openssl/ecdsa.h> 9 #include <openssl/ecdsa.h>
10 #include <openssl/evp.h> 10 #include <openssl/evp.h>
(...skipping 273 matching lines...) Expand 10 before | Expand all | Expand 10 after
284 QuicCompressedCertsCache* compressed_certs_cache, 284 QuicCompressedCertsCache* compressed_certs_cache,
285 CryptoHandshakeMessage* out) 285 CryptoHandshakeMessage* out)
286 : crypto_config_(crypto_config), 286 : crypto_config_(crypto_config),
287 server_ip_(server_ip), 287 server_ip_(server_ip),
288 client_addr_(client_addr), 288 client_addr_(client_addr),
289 clock_(clock), 289 clock_(clock),
290 proof_(proof), 290 proof_(proof),
291 compressed_certs_cache_(compressed_certs_cache), 291 compressed_certs_cache_(compressed_certs_cache),
292 out_(out) {} 292 out_(out) {}
293 293
294 void RunImpl(const CryptoHandshakeMessage& client_hello, 294 void RunImpl(
295 const ValidateClientHelloResultCallback::Result& result, 295 std::unique_ptr<ValidateClientHelloResultCallback::Result> result,
296 std::unique_ptr<ProofSource::Details> /* details */) override { 296 std::unique_ptr<ProofSource::Details> /* details */) override {
297 QuicCryptoNegotiatedParameters params; 297 QuicCryptoNegotiatedParameters params;
298 string error_details; 298 string error_details;
299 DiversificationNonce diversification_nonce; 299 DiversificationNonce diversification_nonce;
300 CryptoHandshakeMessage rej; 300 CryptoHandshakeMessage rej;
301 crypto_config_->ProcessClientHello( 301 crypto_config_->ProcessClientHello(
302 result, /*reject_only=*/false, /*connection_id=*/1, server_ip_, 302 *result, /*reject_only=*/false, /*connection_id=*/1, server_ip_,
303 client_addr_, AllSupportedVersions().front(), AllSupportedVersions(), 303 client_addr_, AllSupportedVersions().front(), AllSupportedVersions(),
304 /*use_stateless_rejects=*/true, /*server_designated_connection_id=*/0, 304 /*use_stateless_rejects=*/true, /*server_designated_connection_id=*/0,
305 clock_, QuicRandom::GetInstance(), compressed_certs_cache_, &params, 305 clock_, QuicRandom::GetInstance(), compressed_certs_cache_, &params,
306 proof_, /*total_framing_overhead=*/50, kDefaultMaxPacketSize, &rej, 306 proof_, /*total_framing_overhead=*/50, kDefaultMaxPacketSize, &rej,
307 &diversification_nonce, &error_details); 307 &diversification_nonce, &error_details);
308 // Verify output is a REJ or SREJ. 308 // Verify output is a REJ or SREJ.
309 EXPECT_THAT(rej.tag(), 309 EXPECT_THAT(rej.tag(),
310 testing::AnyOf(testing::Eq(kSREJ), testing::Eq(kREJ))); 310 testing::AnyOf(testing::Eq(kSREJ), testing::Eq(kREJ)));
311 311
312 VLOG(1) << "Extract valid STK and SCID from\n" << rej.DebugString(); 312 VLOG(1) << "Extract valid STK and SCID from\n" << rej.DebugString();
313 StringPiece srct; 313 StringPiece srct;
314 ASSERT_TRUE(rej.GetStringPiece(kSourceAddressTokenTag, &srct)); 314 ASSERT_TRUE(rej.GetStringPiece(kSourceAddressTokenTag, &srct));
315 315
316 StringPiece scfg; 316 StringPiece scfg;
317 ASSERT_TRUE(rej.GetStringPiece(kSCFG, &scfg)); 317 ASSERT_TRUE(rej.GetStringPiece(kSCFG, &scfg));
318 std::unique_ptr<CryptoHandshakeMessage> server_config( 318 std::unique_ptr<CryptoHandshakeMessage> server_config(
319 CryptoFramer::ParseMessage(scfg)); 319 CryptoFramer::ParseMessage(scfg));
320 320
321 StringPiece scid; 321 StringPiece scid;
322 ASSERT_TRUE(server_config->GetStringPiece(kSCID, &scid)); 322 ASSERT_TRUE(server_config->GetStringPiece(kSCID, &scid));
323 323
324 *out_ = client_hello; 324 *out_ = result->client_hello;
325 out_->SetStringPiece(kSCID, scid); 325 out_->SetStringPiece(kSCID, scid);
326 out_->SetStringPiece(kSourceAddressTokenTag, srct); 326 out_->SetStringPiece(kSourceAddressTokenTag, srct);
327 uint64_t xlct = CryptoTestUtils::LeafCertHashForTesting(); 327 uint64_t xlct = CryptoTestUtils::LeafCertHashForTesting();
328 out_->SetValue(kXLCT, xlct); 328 out_->SetValue(kXLCT, xlct);
329 } 329 }
330 330
331 protected: 331 protected:
332 QuicCryptoServerConfig* crypto_config_; 332 QuicCryptoServerConfig* crypto_config_;
333 IPAddress server_ip_; 333 IPAddress server_ip_;
334 IPEndPoint client_addr_; 334 IPEndPoint client_addr_;
(...skipping 630 matching lines...) Expand 10 before | Expand all | Expand 10 after
965 CryptoHandshakeMessage* out) { 965 CryptoHandshakeMessage* out) {
966 // Pass a inchoate CHLO. 966 // Pass a inchoate CHLO.
967 crypto_config->ValidateClientHello( 967 crypto_config->ValidateClientHello(
968 inchoate_chlo, client_addr.address(), server_ip, version, clock, proof, 968 inchoate_chlo, client_addr.address(), server_ip, version, clock, proof,
969 new FullChloGenerator(crypto_config, server_ip, client_addr, clock, proof, 969 new FullChloGenerator(crypto_config, server_ip, client_addr, clock, proof,
970 compressed_certs_cache, out)); 970 compressed_certs_cache, out));
971 } 971 }
972 972
973 } // namespace test 973 } // namespace test
974 } // namespace net 974 } // namespace net
OLDNEW
« no previous file with comments | « net/quic/core/quic_crypto_server_stream.cc ('k') | net/quic/test_tools/crypto_test_utils_test.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698