Index: net/base/openssl_private_key_store_android.cc |
diff --git a/net/base/openssl_private_key_store_android.cc b/net/base/openssl_private_key_store_android.cc |
index 4bf1f3fedcb555fd316acfa0a183f0972079146b..cf197cd15c1d6f95e66d59b2807e3c8b0fa80001 100644 |
--- a/net/base/openssl_private_key_store_android.cc |
+++ b/net/base/openssl_private_key_store_android.cc |
@@ -9,18 +9,26 @@ |
#include "base/logging.h" |
#include "base/memory/singleton.h" |
-#include "crypto/openssl_util.h" |
#include "net/android/network_library.h" |
namespace net { |
namespace { |
-class OpenSSLKeyStoreAndroid : public OpenSSLPrivateKeyStore { |
+// Android-specific implementation of OpenSSLPrivateKeyStore. |
+// This uses platform APIs to store the private/public keygened |
+// pair to the system's keychain. |
+class OpenSSLPrivateKeyStoreAndroid : public OpenSSLPrivateKeyStore { |
public: |
- ~OpenSSLKeyStoreAndroid() {} |
+ OpenSSLPrivateKeyStoreAndroid() {} |
- virtual bool StorePrivateKey(const GURL& url, EVP_PKEY* pkey) { |
+ virtual ~OpenSSLPrivateKeyStoreAndroid() {} |
+ |
+ static OpenSSLPrivateKeyStoreAndroid* GetInstance() { |
+ return Singleton<OpenSSLPrivateKeyStoreAndroid>::get(); |
+ } |
+ |
+ virtual bool StoreKeyPair(const GURL& url, EVP_PKEY* pkey) OVERRIDE { |
// Always clear openssl errors on exit. |
crypto::OpenSSLErrStackTracer err_trace(FROM_HERE); |
@@ -45,41 +53,21 @@ class OpenSSLKeyStoreAndroid : public OpenSSLPrivateKeyStore { |
static_cast<const uint8*>(public_key), public_len, |
static_cast<const uint8*>(private_key), private_len); |
} |
- LOG_IF(ERROR, !ret) << "StorePrivateKey failed. pub len = " << public_len |
+ LOG_IF(ERROR, !ret) << "StoreKeyPair failed. pub len = " << public_len |
<< " priv len = " << private_len; |
OPENSSL_free(public_key); |
OPENSSL_free(private_key); |
return ret; |
} |
- virtual EVP_PKEY* FetchPrivateKey(EVP_PKEY* pkey) { |
- // TODO(joth): Implement when client authentication is required. |
- NOTIMPLEMENTED(); |
- return NULL; |
- } |
- |
- static OpenSSLKeyStoreAndroid* GetInstance() { |
- // Leak the OpenSSL key store as it is used from a non-joinable worker |
- // thread that may still be running at shutdown. |
- return Singleton< |
- OpenSSLKeyStoreAndroid, |
- OpenSSLKeyStoreAndroidLeakyTraits>::get(); |
- } |
- |
private: |
- friend struct DefaultSingletonTraits<OpenSSLKeyStoreAndroid>; |
- typedef LeakySingletonTraits<OpenSSLKeyStoreAndroid> |
- OpenSSLKeyStoreAndroidLeakyTraits; |
- |
- OpenSSLKeyStoreAndroid() {} |
- |
- DISALLOW_COPY_AND_ASSIGN(OpenSSLKeyStoreAndroid); |
+ DISALLOW_COPY_AND_ASSIGN(OpenSSLPrivateKeyStoreAndroid); |
}; |
} // namespace |
OpenSSLPrivateKeyStore* OpenSSLPrivateKeyStore::GetInstance() { |
- return OpenSSLKeyStoreAndroid::GetInstance(); |
+ return OpenSSLPrivateKeyStoreAndroid::GetInstance(); |
} |
} // namespace net |