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

Side by Side Diff: net/cert/x509_certificate.h

Issue 2913253003: Convert Windows to use X509CertificateBytes. (Closed)
Patch Set: rebase Created 3 years, 6 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/cert/test_root_certs_win.cc ('k') | net/cert/x509_certificate_win.cc » ('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 #ifndef NET_CERT_X509_CERTIFICATE_H_ 5 #ifndef NET_CERT_X509_CERTIFICATE_H_
6 #define NET_CERT_X509_CERTIFICATE_H_ 6 #define NET_CERT_X509_CERTIFICATE_H_
7 7
8 #include <stddef.h> 8 #include <stddef.h>
9 #include <string.h> 9 #include <string.h>
10 10
(...skipping 217 matching lines...) Expand 10 before | Expand all | Expand 10 after
228 // Ownership follows the "get" rule: it is the caller's responsibility to 228 // Ownership follows the "get" rule: it is the caller's responsibility to
229 // retain the elements of the result. 229 // retain the elements of the result.
230 const OSCertHandles& GetIntermediateCertificates() const { 230 const OSCertHandles& GetIntermediateCertificates() const {
231 return intermediate_ca_certs_; 231 return intermediate_ca_certs_;
232 } 232 }
233 233
234 // Do any of the given issuer names appear in this cert's chain of trust? 234 // Do any of the given issuer names appear in this cert's chain of trust?
235 // |valid_issuers| is a list of DER-encoded X.509 DistinguishedNames. 235 // |valid_issuers| is a list of DER-encoded X.509 DistinguishedNames.
236 bool IsIssuedByEncoded(const std::vector<std::string>& valid_issuers); 236 bool IsIssuedByEncoded(const std::vector<std::string>& valid_issuers);
237 237
238 #if defined(OS_WIN)
239 // Returns a new PCCERT_CONTEXT containing this certificate and its
240 // intermediate certificates, or NULL on failure. The returned
241 // PCCERT_CONTEXT *MUST NOT* be stored in an X509Certificate, as this will
242 // cause os_cert_handle() to return incorrect results. This function is only
243 // necessary if the CERT_CONTEXT.hCertStore member will be accessed or
244 // enumerated, which is generally true for any CryptoAPI functions involving
245 // certificate chains, including validation or certificate display.
246 //
247 // Remarks:
248 // Depending on the CryptoAPI function, Windows may need to access the
249 // HCERTSTORE that the passed-in PCCERT_CONTEXT belongs to, such as to
250 // locate additional intermediates. However, all certificate handles are added
251 // to a NULL HCERTSTORE, allowing the system to manage the resources. As a
252 // result, intermediates for |cert_handle_| cannot be located simply via
253 // |cert_handle_->hCertStore|, as it refers to a magic value indicating
254 // "only this certificate".
255 //
256 // To avoid this problems, a new in-memory HCERTSTORE is created containing
257 // just this certificate and its intermediates. The handle to the version of
258 // the current certificate in the new HCERTSTORE is then returned, with the
259 // PCCERT_CONTEXT's HCERTSTORE set to be automatically freed when the returned
260 // certificate handle is freed.
261 //
262 // This function is only needed when the HCERTSTORE of the os_cert_handle()
263 // will be accessed, which is generally only during certificate validation
264 // or display. While the returned PCCERT_CONTEXT and its HCERTSTORE can
265 // safely be used on multiple threads if no further modifications happen, it
266 // is generally preferable for each thread that needs such a context to
267 // obtain its own, rather than risk thread-safety issues by sharing.
268 //
269 // Because of how X509Certificate caching is implemented, attempting to
270 // create an X509Certificate from the returned PCCERT_CONTEXT may result in
271 // the original handle (and thus the originall HCERTSTORE) being returned by
272 // os_cert_handle(). For this reason, the returned PCCERT_CONTEXT *MUST NOT*
273 // be stored in an X509Certificate.
274 PCCERT_CONTEXT CreateOSCertChainForCert() const;
275 #endif
276
277 #if defined(USE_OPENSSL_CERTS) 238 #if defined(USE_OPENSSL_CERTS)
278 // Returns a handle to a global, in-memory certificate store. We 239 // Returns a handle to a global, in-memory certificate store. We
279 // use it for test code, e.g. importing the test server's certificate. 240 // use it for test code, e.g. importing the test server's certificate.
280 static X509_STORE* cert_store(); 241 static X509_STORE* cert_store();
281 #endif 242 #endif
282 243
283 // Verifies that |hostname| matches this certificate. 244 // Verifies that |hostname| matches this certificate.
284 // Does not verify that the certificate is valid, only that the certificate 245 // Does not verify that the certificate is valid, only that the certificate
285 // matches this host. 246 // matches this host.
286 // If |allow_common_name_fallback| is set to true, and iff no SANs are 247 // If |allow_common_name_fallback| is set to true, and iff no SANs are
(...skipping 165 matching lines...) Expand 10 before | Expand all | Expand 10 after
452 // Untrusted intermediate certificates associated with this certificate 413 // Untrusted intermediate certificates associated with this certificate
453 // that may be needed for chain building. 414 // that may be needed for chain building.
454 OSCertHandles intermediate_ca_certs_; 415 OSCertHandles intermediate_ca_certs_;
455 416
456 DISALLOW_COPY_AND_ASSIGN(X509Certificate); 417 DISALLOW_COPY_AND_ASSIGN(X509Certificate);
457 }; 418 };
458 419
459 } // namespace net 420 } // namespace net
460 421
461 #endif // NET_CERT_X509_CERTIFICATE_H_ 422 #endif // NET_CERT_X509_CERTIFICATE_H_
OLDNEW
« no previous file with comments | « net/cert/test_root_certs_win.cc ('k') | net/cert/x509_certificate_win.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698