| Index: net/base/openssl_private_key_store.h
|
| diff --git a/net/base/openssl_private_key_store.h b/net/base/openssl_private_key_store.h
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..17f8fe1b05215271b2006fa09f79e241df63ee59
|
| --- /dev/null
|
| +++ b/net/base/openssl_private_key_store.h
|
| @@ -0,0 +1,51 @@
|
| +// Copyright (c) 2010 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 NET_BASE_OPENSSL_PRIVATE_KEY_STORE_H_
|
| +#define NET_BASE_OPENSSL_PRIVATE_KEY_STORE_H_
|
| +#pragma once
|
| +
|
| +#include "base/basictypes.h"
|
| +
|
| +typedef struct evp_pkey_st EVP_PKEY;
|
| +
|
| +class GURL;
|
| +
|
| +namespace net {
|
| +
|
| +// Defines an abstract store for private keys; the OpenSSL library does not
|
| +// provide this service so it is left to individual platforms to provide it.
|
| +//
|
| +// The contract is that the private key will be stored in an appropriate secure
|
| +// system location, and be available to the SSLClientSocketOpenSSL when using a
|
| +// client certificate created against the associated public key for client
|
| +// authentication.
|
| +class OpenSSLPrivateKeyStore {
|
| + public:
|
| + // Platforms must define this factory function as appropriate.
|
| + static OpenSSLPrivateKeyStore* GetInstance();
|
| +
|
| + virtual ~OpenSSLPrivateKeyStore() {}
|
| +
|
| + // Called to store a private key generated via <keygen> while visiting |url|.
|
| + // Does not takes ownership of |pkey|, the caller reamins responsible to
|
| + // EVP_PKEY_free it. (Internally, a copy maybe made or the reference count
|
| + // incremented).
|
| + // Returns false if an error occurred whilst attempting to store the key.
|
| + virtual bool StorePrivateKey(const GURL& url, EVP_PKEY* pkey) = 0;
|
| +
|
| + // Given a |public_key| part returns the corresponding private key, or NULL
|
| + // if no key found. Does NOT return ownership.
|
| + virtual EVP_PKEY* FetchPrivateKey(EVP_PKEY* public_key) = 0;
|
| +
|
| + protected:
|
| + OpenSSLPrivateKeyStore() {}
|
| +
|
| + private:
|
| + DISALLOW_COPY_AND_ASSIGN(OpenSSLPrivateKeyStore);
|
| +};
|
| +
|
| +} // namespace net
|
| +
|
| +#endif // NET_BASE_OPENSSL_PRIVATE_KEY_STORE_H_
|
|
|