OLD | NEW |
---|---|
1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 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_CERT_INTERNAL_TRUST_STORE_H_ | 5 #ifndef NET_CERT_INTERNAL_TRUST_STORE_H_ |
6 #define NET_CERT_INTERNAL_TRUST_STORE_H_ | 6 #define NET_CERT_INTERNAL_TRUST_STORE_H_ |
7 | 7 |
8 #include <vector> | 8 #include <vector> |
9 | 9 |
10 #include "base/callback.h" | |
10 #include "base/memory/ref_counted.h" | 11 #include "base/memory/ref_counted.h" |
11 #include "net/base/net_export.h" | 12 #include "net/base/net_export.h" |
12 #include "net/cert/internal/parsed_certificate.h" | 13 #include "net/cert/internal/parsed_certificate.h" |
13 | 14 |
14 namespace net { | 15 namespace net { |
15 | 16 |
16 namespace der { | 17 namespace der { |
17 class Input; | 18 class Input; |
18 } | 19 } |
19 | 20 |
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
107 | 108 |
108 scoped_refptr<ParsedCertificate> cert_; | 109 scoped_refptr<ParsedCertificate> cert_; |
109 bool enforces_constraints_ = false; | 110 bool enforces_constraints_ = false; |
110 }; | 111 }; |
111 | 112 |
112 using TrustAnchors = std::vector<scoped_refptr<TrustAnchor>>; | 113 using TrustAnchors = std::vector<scoped_refptr<TrustAnchor>>; |
113 | 114 |
114 // Interface for finding trust anchors. | 115 // Interface for finding trust anchors. |
115 class NET_EXPORT TrustStore { | 116 class NET_EXPORT TrustStore { |
116 public: | 117 public: |
118 class NET_EXPORT Request { | |
119 public: | |
120 Request() = default; | |
121 // Destruction of the Request cancels it. | |
122 virtual ~Request() = default; | |
eroman
2016/08/23 18:30:10
can this be moved to the .cc file?
mattm
2016/08/26 02:24:43
Done.
| |
123 }; | |
124 | |
117 TrustStore(); | 125 TrustStore(); |
118 virtual ~TrustStore(); | 126 virtual ~TrustStore(); |
119 | 127 |
120 // Returns the trust anchors that match |name| in |*matches|, if any. | 128 using TrustAnchorCallback = |
121 virtual void FindTrustAnchorsByNormalizedName( | 129 base::Callback<void(std::unique_ptr<TrustAnchors>)>; |
eroman
2016/08/23 18:30:10
Did you consider a pass-by-value of TrustAnchors?
mattm
2016/08/26 02:24:42
Done.
| |
122 const der::Input& normalized_name, | 130 |
123 TrustAnchors* matches) const = 0; | 131 // Returns the trust anchors that match |cert|'s issuer name in |*out_matches| |
eroman
2016/08/23 18:30:10
Document that |cert| and |out_matches| must be non
mattm
2016/08/26 02:24:42
Done.
| |
132 // and/or through |callback|. | |
133 // | |
134 // If results are available synchronously, they will be returned in | |
135 // |*out_matches|. | |
eroman
2016/08/23 18:30:10
Can you mention that |out_matches| is *not* used i
mattm
2016/08/26 02:24:43
Done.
| |
136 // | |
137 // If |callback| is not null and results may be available asynchronously, | |
eroman
2016/08/23 18:30:10
Note when reading this I assume completion was *ei
mattm
2016/08/26 02:24:43
The first line does say results are returned in "|
| |
138 // |*out_req| will be filled with a Request, and |callback| will be called | |
eroman
2016/08/23 18:30:10
Please clarify what "filled" means.
My assumption
mattm
2016/08/26 02:24:42
out_req is assigned (it's the unique_ptr<Request>)
| |
139 // when results are available. The Request may be destroyed to cancel | |
eroman
2016/08/23 18:30:10
Suggest clarifying that |out_req| can be null in t
mattm
2016/08/26 02:24:43
Currently it must always be non-null. But allowing
| |
140 // the callback if it has not occurred yet. | |
141 virtual void FindTrustAnchorsForCert( | |
142 const ParsedCertificate* cert, | |
143 const TrustAnchorCallback& callback, | |
144 TrustAnchors* out_matches, | |
eroman
2016/08/23 18:30:10
Suggest renaming this to something more like "sync
mattm
2016/08/26 02:24:43
Done.
| |
145 std::unique_ptr<Request>* out_req) const = 0; | |
eroman
2016/08/23 18:30:10
side-comment: Should the API allow for a probing u
mattm
2016/08/26 02:24:43
The current pathbuilder impl doesn't need it, so I
| |
124 | 146 |
125 private: | 147 private: |
126 DISALLOW_COPY_AND_ASSIGN(TrustStore); | 148 DISALLOW_COPY_AND_ASSIGN(TrustStore); |
127 }; | 149 }; |
128 | 150 |
129 } // namespace net | 151 } // namespace net |
130 | 152 |
131 #endif // NET_CERT_INTERNAL_TRUST_STORE_H_ | 153 #endif // NET_CERT_INTERNAL_TRUST_STORE_H_ |
OLD | NEW |