Index: crypto/ec_private_key.h |
diff --git a/crypto/ec_private_key.h b/crypto/ec_private_key.h |
index 6ebe21d01028c73b574ca1a46d903db82f96bd18..3e543d3db18a3d818851963ce1bb97ae5a20c037 100644 |
--- a/crypto/ec_private_key.h |
+++ b/crypto/ec_private_key.h |
@@ -8,6 +8,7 @@ |
#include <stddef.h> |
#include <stdint.h> |
+#include <memory> |
#include <string> |
#include <vector> |
@@ -34,10 +35,19 @@ class CRYPTO_EXPORT ECPrivateKey { |
// TODO(mattm): Add a curve parameter. |
static ECPrivateKey* Create(); |
+ // Create a new instance by importing an existing private key. The format is |
+ // an ASN.1-encoded PrivateKeyInfo block from PKCS #8. This can return |
+ // nullptr if initialization fails. |
+ static std::unique_ptr<ECPrivateKey> CreateFromPrivateKeyInfo( |
+ const std::vector<uint8_t>& input); |
+ |
// Creates a new instance by importing an existing key pair. |
// The key pair is given as an ASN.1-encoded PKCS #8 EncryptedPrivateKeyInfo |
// block and an X.509 SubjectPublicKeyInfo block. |
// Returns NULL if initialization fails. |
+ // |
+ // This function is deprecated. Use CreateFromPrivateKeyInfo for new code. |
+ // See https://crbug.com/603319. |
static ECPrivateKey* CreateFromEncryptedPrivateKeyInfo( |
const std::string& password, |
const std::vector<uint8_t>& encrypted_private_key_info, |
@@ -48,24 +58,26 @@ class CRYPTO_EXPORT ECPrivateKey { |
EVP_PKEY* key() { return key_; } |
+ // Exports the private key to a PKCS #8 PrivateKeyInfo block. |
+ bool ExportPrivateKey(std::vector<uint8_t>* output) const; |
+ |
// Exports the private key as an ASN.1-encoded PKCS #8 EncryptedPrivateKeyInfo |
// block and the public key as an X.509 SubjectPublicKeyInfo block. |
// The |password| and |iterations| are used as inputs to the key derivation |
// function for generating the encryption key. PKCS #5 recommends a minimum |
// of 1000 iterations, on modern systems a larger value may be preferrable. |
+ // |
+ // This function is deprecated. Use ExportPrivateKey for new code. See |
+ // https://crbug.com/603319. |
bool ExportEncryptedPrivateKey(const std::string& password, |
int iterations, |
- std::vector<uint8_t>* output); |
+ std::vector<uint8_t>* output) const; |
// Exports the public key to an X.509 SubjectPublicKeyInfo block. |
- bool ExportPublicKey(std::vector<uint8_t>* output); |
+ bool ExportPublicKey(std::vector<uint8_t>* output) const; |
// Exports the public key as an EC point in the uncompressed point format. |
- bool ExportRawPublicKey(std::string* output); |
- |
- // Exports private key data for testing. The format of data stored into output |
- // doesn't matter other than that it is consistent for the same key. |
- bool ExportValueForTesting(std::vector<uint8_t>* output); |
+ bool ExportRawPublicKey(std::string* output) const; |
private: |
// Constructor is private. Use one of the Create*() methods above instead. |