| Index: net/cert/x509_util.h
|
| ===================================================================
|
| --- net/cert/x509_util.h (revision 228925)
|
| +++ net/cert/x509_util.h (working copy)
|
| @@ -9,6 +9,7 @@
|
|
|
| #include "base/memory/ref_counted.h"
|
| #include "base/time/time.h"
|
| +#include "crypto/hmac.h"
|
| #include "net/base/net_export.h"
|
|
|
| namespace crypto {
|
| @@ -30,25 +31,35 @@
|
| NET_EXPORT_PRIVATE bool IsSupportedValidityRange(base::Time not_valid_before,
|
| base::Time not_valid_after);
|
|
|
| -// Creates a server bound certificate containing the public key in |key|.
|
| +// Creates a private keypair and server bound certificate.
|
| // Domain, serial number and validity period are given as
|
| // parameters. The certificate is signed by the private key in |key|.
|
| -// The hashing algorithm for the signature is SHA-1.
|
| +// The signature algorithm may be updated periodically to match best practices.
|
| //
|
| // See Internet Draft draft-balfanz-tls-obc-00 for more details:
|
| // http://tools.ietf.org/html/draft-balfanz-tls-obc-00
|
| -NET_EXPORT_PRIVATE bool CreateDomainBoundCertEC(
|
| +NET_EXPORT_PRIVATE bool CreateKeyAndDomainBoundCertEC(
|
| + const std::string& domain,
|
| + uint32 serial_number,
|
| + base::Time not_valid_before,
|
| + base::Time not_valid_after,
|
| + crypto::ECPrivateKey** key,
|
| + std::string* der_cert);
|
| +
|
| +// Helper function for CreateKeyAndDomainBoundCertEC
|
| +NET_EXPORT_PRIVATE bool CreateDomainBoundCertECInternal(
|
| crypto::ECPrivateKey* key,
|
| + crypto::HMAC::HashAlgorithm alg,
|
| const std::string& domain,
|
| uint32 serial_number,
|
| base::Time not_valid_before,
|
| base::Time not_valid_after,
|
| std::string* der_cert);
|
|
|
| -// Create a self-signed certificate containing the public key in |key|.
|
| +// Creates a public-private keypair and a self-signed certificate.
|
| // Subject, serial number and validity period are given as parameters.
|
| -// The certificate is signed by the private key in |key|. The hashing
|
| -// algorithm for the signature is SHA-1.
|
| +// The certificate is signed by the private key in |key|. The key length and
|
| +// signature algorithm may be updated periodically to match best practices.
|
| //
|
| // |subject| is a distinguished name defined in RFC4514.
|
| //
|
| @@ -63,13 +74,34 @@
|
| // 2. Self-signed certificates cannot be revoked.
|
| //
|
| // Use this certificate only after the above risks are acknowledged.
|
| -NET_EXPORT bool CreateSelfSignedCert(crypto::RSAPrivateKey* key,
|
| - const std::string& subject,
|
| - uint32 serial_number,
|
| - base::Time not_valid_before,
|
| - base::Time not_valid_after,
|
| - std::string* der_cert);
|
| +NET_EXPORT bool CreateKeyAndSelfSignedCert(const std::string& subject,
|
| + uint32 serial_number,
|
| + base::Time not_valid_before,
|
| + base::Time not_valid_after,
|
| + crypto::RSAPrivateKey** key,
|
| + std::string* der_cert);
|
|
|
| +// Helper function for CreateKeyAndSelfSignedCert.
|
| +NET_EXPORT_PRIVATE bool CreateSelfSignedCertInternal(
|
| + crypto::RSAPrivateKey* key,
|
| + crypto::HMAC::HashAlgorithm alg,
|
| + const std::string& subject,
|
| + uint32 serial_number,
|
| + base::Time not_valid_before,
|
| + base::Time not_valid_after,
|
| + std::string* der_cert);
|
| +
|
| +// Legacy certificate signing function. This function is preserved here because
|
| +// best practices suggest that keys signed with one hash algorithm should not be
|
| +// signed again later with a different algorithm. Eventually, all users of this
|
| +// function should migrate to CreateKeyAndSelfSignedCert.
|
| +NET_EXPORT bool CreateSha1SelfSignedCert(crypto::RSAPrivateKey* key,
|
| + const std::string& subject,
|
| + uint32 serial_number,
|
| + base::Time not_valid_before,
|
| + base::Time not_valid_after,
|
| + std::string* der_cert);
|
| +
|
| // Comparator for use in STL algorithms that will sort client certificates by
|
| // order of preference.
|
| // Returns true if |a| is more preferable than |b|, allowing it to be used
|
|
|