| Index: net/base/openssl_private_key_store_memory.cc
|
| diff --git a/net/base/openssl_memory_private_key_store.cc b/net/base/openssl_private_key_store_memory.cc
|
| similarity index 56%
|
| rename from net/base/openssl_memory_private_key_store.cc
|
| rename to net/base/openssl_private_key_store_memory.cc
|
| index 92716f236e1d341edc1f392bdcaa40bd44c0f726..0913e460bd2ab0263fd016a075dfacf19dfcd947 100644
|
| --- a/net/base/openssl_memory_private_key_store.cc
|
| +++ b/net/base/openssl_private_key_store_memory.cc
|
| @@ -4,28 +4,30 @@
|
|
|
| // Defines an in-memory private key store, primarily used for testing.
|
|
|
| -#include <openssl/evp.h>
|
| -
|
| #include "net/base/openssl_private_key_store.h"
|
|
|
| +#include <openssl/evp.h>
|
| +
|
| #include "base/logging.h"
|
| #include "base/memory/singleton.h"
|
| #include "base/synchronization/lock.h"
|
| -#include "net/base/x509_certificate.h"
|
|
|
| namespace net {
|
|
|
| namespace {
|
|
|
| -class OpenSSLMemoryKeyStore : public OpenSSLPrivateKeyStore {
|
| +// A small in-memory store for public/private key pairs held in
|
| +// a single EVP_PKEY object. This is intentionally distinct from
|
| +// net::SSLClientKeyStore.
|
| +class MemoryKeyPairStore {
|
| public:
|
| - OpenSSLMemoryKeyStore() {}
|
| + MemoryKeyPairStore() {}
|
|
|
| - static OpenSSLMemoryKeyStore* GetInstance() {
|
| - return Singleton<OpenSSLMemoryKeyStore>::get();
|
| + static MemoryKeyPairStore* GetInstance() {
|
| + return Singleton<MemoryKeyPairStore>::get();
|
| }
|
|
|
| - virtual ~OpenSSLMemoryKeyStore() {
|
| + ~MemoryKeyPairStore() {
|
| base::AutoLock lock(lock_);
|
| for (std::vector<EVP_PKEY*>::iterator it = keys_.begin();
|
| it != keys_.end(); ++it) {
|
| @@ -33,35 +35,39 @@ class OpenSSLMemoryKeyStore : public OpenSSLPrivateKeyStore {
|
| }
|
| }
|
|
|
| - virtual bool StorePrivateKey(const GURL& url, EVP_PKEY* pkey) {
|
| + bool StoreKeyPair(EVP_PKEY* pkey) {
|
| CRYPTO_add(&pkey->references, 1, CRYPTO_LOCK_EVP_PKEY);
|
| base::AutoLock lock(lock_);
|
| keys_.push_back(pkey);
|
| return true;
|
| }
|
|
|
| - virtual EVP_PKEY* FetchPrivateKey(EVP_PKEY* pkey) {
|
| + bool HasPrivateKey(EVP_PKEY* pkey) {
|
| base::AutoLock lock(lock_);
|
| for (std::vector<EVP_PKEY*>::iterator it = keys_.begin();
|
| it != keys_.end(); ++it) {
|
| if (EVP_PKEY_cmp(*it, pkey) == 1)
|
| - return *it;
|
| + return true;
|
| }
|
| - return NULL;
|
| + return false;
|
| }
|
|
|
| private:
|
| std::vector<EVP_PKEY*> keys_;
|
| base::Lock lock_;
|
|
|
| - DISALLOW_COPY_AND_ASSIGN(OpenSSLMemoryKeyStore);
|
| + DISALLOW_COPY_AND_ASSIGN(MemoryKeyPairStore);
|
| };
|
|
|
| } // namespace
|
|
|
| -// static
|
| -OpenSSLPrivateKeyStore* OpenSSLPrivateKeyStore::GetInstance() {
|
| - return OpenSSLMemoryKeyStore::GetInstance();
|
| +bool OpenSSLPrivateKeyStore::StoreKeyPair(const GURL& url,
|
| + EVP_PKEY* pkey) {
|
| + return MemoryKeyPairStore::GetInstance()->StoreKeyPair(pkey);
|
| +}
|
| +
|
| +bool OpenSSLPrivateKeyStore::HasPrivateKey(EVP_PKEY* pub_key) {
|
| + return MemoryKeyPairStore::GetInstance()->HasPrivateKey(pub_key);
|
| }
|
|
|
| } // namespace net
|
|
|