Index: net/ssl/client_cert_store_nss.h |
diff --git a/net/ssl/client_cert_store_nss.h b/net/ssl/client_cert_store_nss.h |
index f6d80993a4e2e9f77e17482c7d0f64f87b080302..cb560f1ca1845cd87c1013fc28b7a25232eda43e 100644 |
--- a/net/ssl/client_cert_store_nss.h |
+++ b/net/ssl/client_cert_store_nss.h |
@@ -5,12 +5,11 @@ |
#ifndef NET_SSL_CLIENT_CERT_STORE_NSS_H_ |
#define NET_SSL_CLIENT_CERT_STORE_NSS_H_ |
-#include "base/basictypes.h" |
#include "base/callback.h" |
-#include "base/gtest_prod_util.h" |
+#include "base/macros.h" |
+#include "base/memory/scoped_ptr.h" |
#include "net/base/net_export.h" |
#include "net/ssl/client_cert_store.h" |
-#include "net/ssl/ssl_cert_request_info.h" |
typedef struct CERTCertListStr CERTCertList; |
@@ -19,6 +18,8 @@ class CryptoModuleBlockingPasswordDelegate; |
} |
namespace net { |
+class HostPortPair; |
+class SSLCertRequestInfo; |
class NET_EXPORT ClientCertStoreNSS : public ClientCertStore { |
public: |
@@ -34,37 +35,35 @@ class NET_EXPORT ClientCertStoreNSS : public ClientCertStore { |
CertificateList* selected_certs, |
const base::Closure& callback) override; |
- protected: |
- // Examines the certificates in |cert_list| to find all certificates that |
- // match the client certificate request in |request|, storing the matching |
- // certificates in |selected_certs|. |
+ // Examines the certificates in |certs| to find all certificates that match |
+ // the client certificate request in |request|, storing the matching |
+ // certificates in |filtered_certs|. Any previous content of |filtered_certs| |
+ // will be removed. |
// If |query_nssdb| is true, NSS will be queried to construct full certificate |
// chains. If it is false, only the certificate will be considered. |
- virtual void GetClientCertsImpl(CERTCertList* cert_list, |
- const SSLCertRequestInfo& request, |
- bool query_nssdb, |
- CertificateList* selected_certs); |
+ // Must be called from a worker thread. |
+ static void FilterCertsOnWorkerThread(const CertificateList& certs, |
+ const SSLCertRequestInfo& request, |
+ bool query_nssdb, |
+ CertificateList* filtered_certs); |
+ |
+ // Retrieves all client certificates that are stored by NSS and adds them to |
+ // |certs|. |password_delegate| is used to unlock slots if required. |
+ // Must be called from a worker thread. |
+ static void GetPlatformCertsOnWorkerThread( |
+ scoped_ptr<crypto::CryptoModuleBlockingPasswordDelegate> |
+ password_delegate, |
+ net::CertificateList* certs); |
private: |
- friend class ClientCertStoreNSSTestDelegate; |
- |
- void GetClientCertsOnWorkerThread( |
+ void GetAndFilterCertsOnWorkerThread( |
scoped_ptr<crypto::CryptoModuleBlockingPasswordDelegate> |
password_delegate, |
const SSLCertRequestInfo* request, |
CertificateList* selected_certs); |
- // A hook for testing. Filters |input_certs| using the logic being used to |
- // filter the system store when GetClientCerts() is called. |
- // Implemented by creating a list of certificates that otherwise would be |
- // extracted from the system store and filtering it using the common logic |
- // (less adequate than the approach used on Windows). |
- bool SelectClientCertsForTesting(const CertificateList& input_certs, |
- const SSLCertRequestInfo& cert_request_info, |
- CertificateList* selected_certs); |
- |
// The factory for creating the delegate for requesting a password to a |
- // PKCS #11 token. May be null. |
+ // PKCS#11 token. May be null. |
PasswordDelegateFactory password_delegate_factory_; |
DISALLOW_COPY_AND_ASSIGN(ClientCertStoreNSS); |