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

Unified Diff: crypto/ec_private_key.h

Issue 956613002: Reland "Cut down /crypto and switch what is left of it to boringssl". (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Rebase. Created 5 years, 10 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « crypto/curve25519_unittest.cc ('k') | crypto/ec_private_key_nss.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: crypto/ec_private_key.h
diff --git a/crypto/ec_private_key.h b/crypto/ec_private_key.h
deleted file mode 100644
index 9fd8ffdfb62230ac2dac10afb56818baba96bd8e..0000000000000000000000000000000000000000
--- a/crypto/ec_private_key.h
+++ /dev/null
@@ -1,157 +0,0 @@
-// Copyright (c) 2012 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef CRYPTO_EC_PRIVATE_KEY_H_
-#define CRYPTO_EC_PRIVATE_KEY_H_
-
-#include <string>
-#include <vector>
-
-#include "base/basictypes.h"
-#include "build/build_config.h"
-#include "crypto/crypto_export.h"
-
-#if defined(USE_OPENSSL)
-// Forward declaration for openssl/*.h
-typedef struct evp_pkey_st EVP_PKEY;
-#else
-// Forward declaration.
-typedef struct CERTSubjectPublicKeyInfoStr CERTSubjectPublicKeyInfo;
-typedef struct PK11SlotInfoStr PK11SlotInfo;
-typedef struct SECKEYPrivateKeyStr SECKEYPrivateKey;
-typedef struct SECKEYPublicKeyStr SECKEYPublicKey;
-#endif
-
-namespace crypto {
-
-// Encapsulates an elliptic curve (EC) private key. Can be used to generate new
-// keys, export keys to other formats, or to extract a public key.
-// TODO(mattm): make this and RSAPrivateKey implement some PrivateKey interface.
-// (The difference in types of key() and public_key() make this a little
-// tricky.)
-class CRYPTO_EXPORT ECPrivateKey {
- public:
- ~ECPrivateKey();
-
- // Returns whether the system supports elliptic curve cryptography.
- static bool IsSupported();
-
- // Creates a new random instance. Can return NULL if initialization fails.
- // The created key will use the NIST P-256 curve.
- // TODO(mattm): Add a curve parameter.
- static ECPrivateKey* Create();
-
-#if defined(USE_NSS)
- // Creates a new random instance in |slot|. Can return NULL if initialization
- // fails. The created key is permanent and is not exportable in plaintext
- // form.
- static ECPrivateKey* CreateSensitive(PK11SlotInfo* slot);
-#endif
-
- // 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.
- static ECPrivateKey* CreateFromEncryptedPrivateKeyInfo(
- const std::string& password,
- const std::vector<uint8>& encrypted_private_key_info,
- const std::vector<uint8>& subject_public_key_info);
-
-#if defined(USE_NSS)
- // Creates a new instance in |slot| 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.
- // This can return NULL if initialization fails. The created key is permanent
- // and is not exportable in plaintext form.
- static ECPrivateKey* CreateSensitiveFromEncryptedPrivateKeyInfo(
- PK11SlotInfo* slot,
- const std::string& password,
- const std::vector<uint8>& encrypted_private_key_info,
- const std::vector<uint8>& subject_public_key_info);
-#endif
-
-#if !defined(USE_OPENSSL)
- // Imports the key pair into |slot| and returns in |public_key| and |key|.
- // Shortcut for code that needs to keep a reference directly to NSS types
- // without having to create a ECPrivateKey object and make a copy of them.
- // TODO(mattm): move this function to some NSS util file.
- static bool ImportFromEncryptedPrivateKeyInfo(
- PK11SlotInfo* slot,
- const std::string& password,
- const uint8* encrypted_private_key_info,
- size_t encrypted_private_key_info_len,
- CERTSubjectPublicKeyInfo* decoded_spki,
- bool permanent,
- bool sensitive,
- SECKEYPrivateKey** key,
- SECKEYPublicKey** public_key);
-
- // Returns a copy of the object.
- ECPrivateKey* Copy() const;
-#endif
-
-#if defined(USE_OPENSSL)
- EVP_PKEY* key() { return key_; }
-#else
- SECKEYPrivateKey* key() { return key_; }
- SECKEYPublicKey* public_key() { return public_key_; }
-#endif
-
- // 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.
- bool ExportEncryptedPrivateKey(const std::string& password,
- int iterations,
- std::vector<uint8>* output);
-
- // Exports the public key to an X.509 SubjectPublicKeyInfo block.
- bool ExportPublicKey(std::vector<uint8>* output);
-
- // 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 ExportValue(std::vector<uint8>* output);
- bool ExportECParams(std::vector<uint8>* output);
-
- private:
- // Constructor is private. Use one of the Create*() methods above instead.
- ECPrivateKey();
-
-#if !defined(USE_OPENSSL)
- // Shared helper for Create() and CreateSensitive().
- // TODO(cmasone): consider replacing |permanent| and |sensitive| with a
- // flags arg created by ORing together some enumerated values.
- static ECPrivateKey* CreateWithParams(PK11SlotInfo* slot,
- bool permanent,
- bool sensitive);
-
- // Shared helper for CreateFromEncryptedPrivateKeyInfo() and
- // CreateSensitiveFromEncryptedPrivateKeyInfo().
- static ECPrivateKey* CreateFromEncryptedPrivateKeyInfoWithParams(
- PK11SlotInfo* slot,
- const std::string& password,
- const std::vector<uint8>& encrypted_private_key_info,
- const std::vector<uint8>& subject_public_key_info,
- bool permanent,
- bool sensitive);
-#endif
-
-#if defined(USE_OPENSSL)
- EVP_PKEY* key_;
-#else
- SECKEYPrivateKey* key_;
- SECKEYPublicKey* public_key_;
-#endif
-
- DISALLOW_COPY_AND_ASSIGN(ECPrivateKey);
-};
-
-
-} // namespace crypto
-
-#endif // CRYPTO_EC_PRIVATE_KEY_H_
« no previous file with comments | « crypto/curve25519_unittest.cc ('k') | crypto/ec_private_key_nss.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698