Skip to content
This repository was archived by the owner on Oct 25, 2024. It is now read-only.

Commit e98b74b

Browse files
committed
Adjust code about unused cert
1 parent 29128b1 commit e98b74b

File tree

1 file changed

+75
-34
lines changed

1 file changed

+75
-34
lines changed

src/wrapper/quic_raw_lib.cc

Lines changed: 75 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -42,18 +42,50 @@
4242

4343
namespace net {
4444

45-
using net::CertVerifier;
46-
using net::CTVerifier;
47-
using net::MultiLogCTVerifier;
48-
using quic::ProofVerifier;
49-
using net::ProofVerifierChromium;
50-
using quic::QuicStringPiece;
51-
using net::TransportSecurityState;
5245
using std::cout;
5346
using std::cerr;
5447
using std::endl;
5548
using std::string;
5649

50+
// FakeProofSource for server
51+
class FakeProofSource : public quic::ProofSource {
52+
public:
53+
FakeProofSource() {}
54+
~FakeProofSource() override {}
55+
56+
void GetProof(const quic::QuicSocketAddress& server_address,
57+
const std::string& hostname,
58+
const std::string& server_config,
59+
quic::QuicTransportVersion transport_version,
60+
quic::QuicStringPiece chlo_hash,
61+
std::unique_ptr<Callback> callback) override {
62+
quic::QuicReferenceCountedPointer<ProofSource::Chain> chain =
63+
GetCertChain(server_address, hostname);
64+
quic::QuicCryptoProof proof;
65+
proof.signature = "fake signature";
66+
proof.leaf_cert_scts = "fake timestamp";
67+
callback->Run(true, chain, proof, nullptr);
68+
}
69+
70+
quic::QuicReferenceCountedPointer<Chain> GetCertChain(
71+
const quic::QuicSocketAddress& server_address,
72+
const std::string& hostname) override {
73+
std::vector<std::string> certs;
74+
certs.push_back("fake cert");
75+
return quic::QuicReferenceCountedPointer<ProofSource::Chain>(
76+
new ProofSource::Chain(certs));
77+
}
78+
79+
void ComputeTlsSignature(
80+
const quic::QuicSocketAddress& server_address,
81+
const std::string& hostname,
82+
uint16_t signature_algorithm,
83+
quic::QuicStringPiece in,
84+
std::unique_ptr<SignatureCallback> callback) override {
85+
callback->Run(true, "fake signature");
86+
}
87+
};
88+
5789
// FakeProofVerifier for client
5890
class FakeProofVerifier : public quic::ProofVerifier {
5991
public:
@@ -171,6 +203,26 @@ class RawClientImpl : public RQuicClientInterface,
171203
}
172204
}
173205
private:
206+
std::unique_ptr<quic::ProofVerifier> CreateProofVerifier() {
207+
std::unique_ptr<quic::ProofVerifier> proof_verifier;
208+
bool disable_cert = true;
209+
if (disable_cert) {
210+
proof_verifier.reset(new FakeProofVerifier());
211+
} else {
212+
// For secure QUIC we need to verify the cert chain.
213+
std::unique_ptr<net::CertVerifier> cert_verifier(net::CertVerifier::CreateDefault());
214+
std::unique_ptr<net::TransportSecurityState> transport_security_state(
215+
new net::TransportSecurityState);
216+
std::unique_ptr<net::MultiLogCTVerifier> ct_verifier(new net::MultiLogCTVerifier());
217+
std::unique_ptr<net::CTPolicyEnforcer> ct_policy_enforcer(
218+
new net::DefaultCTPolicyEnforcer());
219+
proof_verifier.reset(new net::ProofVerifierChromium(
220+
cert_verifier.get(), ct_policy_enforcer.get(),
221+
transport_security_state.get(), ct_verifier.get()));
222+
}
223+
return proof_verifier;
224+
}
225+
174226
void InitAndRun(std::string host, int port) {
175227
base::MessageLoopForIO message_loop;
176228
base::RunLoop run_loop;
@@ -196,26 +248,8 @@ class RawClientImpl : public RQuicClientInterface,
196248
net::PRIVACY_MODE_DISABLED);
197249
quic::ParsedQuicVersionVector versions = quic::CurrentSupportedVersions();
198250

199-
// For secure QUIC we need to verify the cert chain.
200-
std::unique_ptr<CertVerifier> cert_verifier(CertVerifier::CreateDefault());
201-
std::unique_ptr<TransportSecurityState> transport_security_state(
202-
new TransportSecurityState);
203-
std::unique_ptr<MultiLogCTVerifier> ct_verifier(new MultiLogCTVerifier());
204-
std::unique_ptr<net::CTPolicyEnforcer> ct_policy_enforcer(
205-
new net::DefaultCTPolicyEnforcer());
206-
std::unique_ptr<quic::ProofVerifier> proof_verifier;
207-
208-
bool disable_cert = true;
209-
if (disable_cert) {
210-
proof_verifier.reset(new FakeProofVerifier());
211-
} else {
212-
proof_verifier.reset(new ProofVerifierChromium(
213-
cert_verifier.get(), ct_policy_enforcer.get(),
214-
transport_security_state.get(), ct_verifier.get()));
215-
}
216-
217251
net::QuicRawClient client(quic::QuicSocketAddress(ip_addr, port),
218-
server_id, versions, std::move(proof_verifier));
252+
server_id, versions, CreateProofVerifier());
219253

220254
client.set_initial_max_packet_length(quic::kDefaultMaxPacketSize);
221255
if (!client.Initialize()) {
@@ -397,13 +431,20 @@ class RawServerImpl : public RQuicServerInterface,
397431
}
398432

399433
private:
400-
std::unique_ptr<quic::ProofSource> CreateProofSource(
401-
const base::FilePath& cert_path,
402-
const base::FilePath& key_path) {
403-
std::unique_ptr<net::ProofSourceChromium> proof_source(
404-
new net::ProofSourceChromium());
405-
CHECK(proof_source->Initialize(cert_path, key_path, base::FilePath()));
406-
return std::move(proof_source);
434+
std::unique_ptr<quic::ProofSource> CreateProofSource() {
435+
bool disable_cert = true;
436+
if (disable_cert) {
437+
std::unique_ptr<FakeProofSource> proof_source(
438+
new FakeProofSource());
439+
return proof_source;
440+
} else {
441+
std::unique_ptr<net::ProofSourceChromium> proof_source(
442+
new net::ProofSourceChromium());
443+
CHECK(proof_source->Initialize(
444+
base::FilePath(cert_file_),
445+
base::FilePath(key_file_), base::FilePath()));
446+
return proof_source;
447+
}
407448
}
408449

409450
void InitAndRun(int port) {
@@ -415,7 +456,7 @@ class RawServerImpl : public RQuicServerInterface,
415456

416457
quic::QuicConfig config;
417458
net::QuicRawServer server(
418-
CreateProofSource(base::FilePath(cert_file_), base::FilePath(key_file_)),
459+
CreateProofSource(),
419460
config, quic::QuicCryptoServerConfig::ConfigOptions(),
420461
quic::AllSupportedVersions());
421462

0 commit comments

Comments
 (0)