OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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 #ifndef NET_QUIC_CRYPTO_PROOF_VERIFIER_CHROMIUM_H_ | 5 #ifndef NET_QUIC_CRYPTO_PROOF_VERIFIER_CHROMIUM_H_ |
6 #define NET_QUIC_CRYPTO_PROOF_VERIFIER_CHROMIUM_H_ | 6 #define NET_QUIC_CRYPTO_PROOF_VERIFIER_CHROMIUM_H_ |
7 | 7 |
8 #include <set> | 8 #include <set> |
9 #include <string> | 9 #include <string> |
10 #include <vector> | 10 #include <vector> |
11 | 11 |
12 #include "base/basictypes.h" | 12 #include "base/basictypes.h" |
13 #include "base/compiler_specific.h" | 13 #include "base/compiler_specific.h" |
14 #include "base/memory/scoped_ptr.h" | 14 #include "base/memory/scoped_ptr.h" |
15 #include "net/base/net_export.h" | 15 #include "net/base/net_export.h" |
16 #include "net/base/net_log.h" | 16 #include "net/base/net_log.h" |
17 #include "net/cert/cert_verify_result.h" | 17 #include "net/cert/cert_verify_result.h" |
18 #include "net/cert/x509_certificate.h" | 18 #include "net/cert/x509_certificate.h" |
19 #include "net/quic/crypto/proof_verifier.h" | 19 #include "net/quic/crypto/proof_verifier.h" |
20 | 20 |
21 namespace net { | 21 namespace net { |
22 | 22 |
23 class CertVerifier; | 23 class CertVerifier; |
| 24 class TransportSecurityState; |
24 | 25 |
25 // ProofVerifyDetailsChromium is the implementation-specific information that a | 26 // ProofVerifyDetailsChromium is the implementation-specific information that a |
26 // ProofVerifierChromium returns about a certificate verification. | 27 // ProofVerifierChromium returns about a certificate verification. |
27 class NET_EXPORT_PRIVATE ProofVerifyDetailsChromium | 28 class NET_EXPORT_PRIVATE ProofVerifyDetailsChromium |
28 : public ProofVerifyDetails { | 29 : public ProofVerifyDetails { |
29 public: | 30 public: |
30 | 31 |
31 // ProofVerifyDetails implementation | 32 // ProofVerifyDetails implementation |
32 virtual ProofVerifyDetails* Clone() const OVERRIDE; | 33 virtual ProofVerifyDetails* Clone() const OVERRIDE; |
33 | 34 |
34 CertVerifyResult cert_verify_result; | 35 CertVerifyResult cert_verify_result; |
| 36 |
| 37 // pinning_failure_log contains a message produced by |
| 38 // TransportSecurityState::DomainState::CheckPublicKeyPins in the event of a |
| 39 // pinning failure. It is a (somewhat) human-readable string. |
| 40 std::string pinning_failure_log; |
35 }; | 41 }; |
36 | 42 |
37 // ProofVerifyContextChromium is the implementation-specific information that a | 43 // ProofVerifyContextChromium is the implementation-specific information that a |
38 // ProofVerifierChromium needs in order to log correctly. | 44 // ProofVerifierChromium needs in order to log correctly. |
39 struct ProofVerifyContextChromium : public ProofVerifyContext { | 45 struct ProofVerifyContextChromium : public ProofVerifyContext { |
40 public: | 46 public: |
41 explicit ProofVerifyContextChromium(const BoundNetLog& net_log) | 47 explicit ProofVerifyContextChromium(const BoundNetLog& net_log) |
42 : net_log(net_log) {} | 48 : net_log(net_log) {} |
43 | 49 |
44 BoundNetLog net_log; | 50 BoundNetLog net_log; |
45 }; | 51 }; |
46 | 52 |
47 // ProofVerifierChromium implements the QUIC ProofVerifier interface. It is | 53 // ProofVerifierChromium implements the QUIC ProofVerifier interface. It is |
48 // capable of handling multiple simultaneous requests. | 54 // capable of handling multiple simultaneous requests. |
49 class NET_EXPORT_PRIVATE ProofVerifierChromium : public ProofVerifier { | 55 class NET_EXPORT_PRIVATE ProofVerifierChromium : public ProofVerifier { |
50 public: | 56 public: |
51 explicit ProofVerifierChromium(CertVerifier* cert_verifier); | 57 ProofVerifierChromium(CertVerifier* cert_verifier, |
| 58 TransportSecurityState* transport_security_state); |
52 virtual ~ProofVerifierChromium(); | 59 virtual ~ProofVerifierChromium(); |
53 | 60 |
54 // ProofVerifier interface | 61 // ProofVerifier interface |
55 virtual QuicAsyncStatus VerifyProof( | 62 virtual QuicAsyncStatus VerifyProof( |
56 const std::string& hostname, | 63 const std::string& hostname, |
57 const std::string& server_config, | 64 const std::string& server_config, |
58 const std::vector<std::string>& certs, | 65 const std::vector<std::string>& certs, |
59 const std::string& signature, | 66 const std::string& signature, |
60 const ProofVerifyContext* verify_context, | 67 const ProofVerifyContext* verify_context, |
61 std::string* error_details, | 68 std::string* error_details, |
62 scoped_ptr<ProofVerifyDetails>* verify_details, | 69 scoped_ptr<ProofVerifyDetails>* verify_details, |
63 ProofVerifierCallback* callback) OVERRIDE; | 70 ProofVerifierCallback* callback) OVERRIDE; |
64 | 71 |
65 private: | 72 private: |
66 class Job; | 73 class Job; |
67 typedef std::set<Job*> JobSet; | 74 typedef std::set<Job*> JobSet; |
68 | 75 |
69 void OnJobComplete(Job* job); | 76 void OnJobComplete(Job* job); |
70 | 77 |
71 // Set owning pointers to active jobs. | 78 // Set owning pointers to active jobs. |
72 JobSet active_jobs_; | 79 JobSet active_jobs_; |
73 | 80 |
74 // Underlying verifier used to verify certificates. | 81 // Underlying verifier used to verify certificates. |
75 CertVerifier* const cert_verifier_; | 82 CertVerifier* const cert_verifier_; |
76 | 83 |
| 84 TransportSecurityState* transport_security_state_; |
| 85 |
77 DISALLOW_COPY_AND_ASSIGN(ProofVerifierChromium); | 86 DISALLOW_COPY_AND_ASSIGN(ProofVerifierChromium); |
78 }; | 87 }; |
79 | 88 |
80 } // namespace net | 89 } // namespace net |
81 | 90 |
82 #endif // NET_QUIC_CRYPTO_PROOF_VERIFIER_CHROMIUM_H_ | 91 #endif // NET_QUIC_CRYPTO_PROOF_VERIFIER_CHROMIUM_H_ |
OLD | NEW |