Chromium Code Reviews| OLD | NEW |
|---|---|
| 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_BASE_X509_CERTIFICATE_H_ | 5 #ifndef NET_BASE_X509_CERTIFICATE_H_ |
| 6 #define NET_BASE_X509_CERTIFICATE_H_ | 6 #define NET_BASE_X509_CERTIFICATE_H_ |
| 7 #pragma once | 7 #pragma once |
| 8 | 8 |
| 9 #include <string.h> | 9 #include <string.h> |
| 10 | 10 |
| (...skipping 29 matching lines...) Expand all Loading... | |
| 40 | 40 |
| 41 namespace crypto { | 41 namespace crypto { |
| 42 class RSAPrivateKey; | 42 class RSAPrivateKey; |
| 43 } // namespace crypto | 43 } // namespace crypto |
| 44 | 44 |
| 45 namespace net { | 45 namespace net { |
| 46 | 46 |
| 47 class CRLSet; | 47 class CRLSet; |
| 48 class CertVerifyResult; | 48 class CertVerifyResult; |
| 49 | 49 |
| 50 // In the future there will be a generic Fingerprint type, with at least two | |
| 51 // implementations: SHA1 and SHA256. See http://crbug.com/117914. Until that | |
| 52 // work is done (in a separate patch) this typedef bridges the gap. | |
| 53 typedef SHA1Fingerprint Fingerprint; | |
| 54 | |
| 55 typedef std::vector<Fingerprint> FingerprintVector; | |
|
Ryan Sleevi
2012/03/28 00:50:32
Both of these belong in x509_cert_types.h.
palmer
2012/04/10 23:25:51
Done.
| |
| 56 | |
| 50 typedef std::vector<scoped_refptr<X509Certificate> > CertificateList; | 57 typedef std::vector<scoped_refptr<X509Certificate> > CertificateList; |
| 51 | 58 |
| 52 // X509Certificate represents a X.509 certificate, which is comprised a | 59 // X509Certificate represents a X.509 certificate, which is comprised a |
| 53 // particular identity or end-entity certificate, such as an SSL server | 60 // particular identity or end-entity certificate, such as an SSL server |
| 54 // identity or an SSL client certificate, and zero or more intermediate | 61 // identity or an SSL client certificate, and zero or more intermediate |
| 55 // certificates that may be used to build a path to a root certificate. | 62 // certificates that may be used to build a path to a root certificate. |
| 56 class NET_EXPORT X509Certificate | 63 class NET_EXPORT X509Certificate |
| 57 : public base::RefCountedThreadSafe<X509Certificate> { | 64 : public base::RefCountedThreadSafe<X509Certificate> { |
| 58 public: | 65 public: |
| 59 // An OSCertHandle is a handle to a certificate object in the underlying | 66 // An OSCertHandle is a handle to a certificate object in the underlying |
| (...skipping 153 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 213 // 1. Encryption without authentication and thus vulnerable to | 220 // 1. Encryption without authentication and thus vulnerable to |
| 214 // man-in-the-middle attacks. | 221 // man-in-the-middle attacks. |
| 215 // 2. Self-signed certificates cannot be revoked. | 222 // 2. Self-signed certificates cannot be revoked. |
| 216 // | 223 // |
| 217 // Use this certificate only after the above risks are acknowledged. | 224 // Use this certificate only after the above risks are acknowledged. |
| 218 static X509Certificate* CreateSelfSigned(crypto::RSAPrivateKey* key, | 225 static X509Certificate* CreateSelfSigned(crypto::RSAPrivateKey* key, |
| 219 const std::string& subject, | 226 const std::string& subject, |
| 220 uint32 serial_number, | 227 uint32 serial_number, |
| 221 base::TimeDelta valid_duration); | 228 base::TimeDelta valid_duration); |
| 222 | 229 |
| 230 // Parses |cert|'s Subject Public Key Info structure, hashes it, | |
|
Ryan Sleevi
2012/03/28 00:50:32
nit:
// Compute the SHA1Fingerprint of the Subjec
palmer
2012/04/10 23:25:51
Done.
| |
| 231 // populates |fingerprint|, and returns true. Returns false if there are | |
| 232 // any parse errors. | |
| 233 static bool GetPublicKeyHash(const OSCertHandle& cert, | |
| 234 SHA1Fingerprint* fingerprint); | |
| 235 | |
| 223 // Appends a representation of this object to the given pickle. | 236 // Appends a representation of this object to the given pickle. |
| 224 void Persist(Pickle* pickle); | 237 void Persist(Pickle* pickle); |
| 225 | 238 |
| 226 // The serial number, DER encoded, possibly including a leading 00 byte. | 239 // The serial number, DER encoded, possibly including a leading 00 byte. |
| 227 const std::string& serial_number() const { return serial_number_; } | 240 const std::string& serial_number() const { return serial_number_; } |
| 228 | 241 |
| 229 // The subject of the certificate. For HTTPS server certificates, this | 242 // The subject of the certificate. For HTTPS server certificates, this |
| 230 // represents the web server. The common name of the subject should match | 243 // represents the web server. The common name of the subject should match |
| 231 // the host name of the web server. | 244 // the host name of the web server. |
| 232 const CertPrincipal& subject() const { return subject_; } | 245 const CertPrincipal& subject() const { return subject_; } |
| (...skipping 278 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 511 // based on the type of the certificate. | 524 // based on the type of the certificate. |
| 512 std::string default_nickname_; | 525 std::string default_nickname_; |
| 513 #endif | 526 #endif |
| 514 | 527 |
| 515 DISALLOW_COPY_AND_ASSIGN(X509Certificate); | 528 DISALLOW_COPY_AND_ASSIGN(X509Certificate); |
| 516 }; | 529 }; |
| 517 | 530 |
| 518 } // namespace net | 531 } // namespace net |
| 519 | 532 |
| 520 #endif // NET_BASE_X509_CERTIFICATE_H_ | 533 #endif // NET_BASE_X509_CERTIFICATE_H_ |
| OLD | NEW |