1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #ifndef NET_SSL_CLIENT_CERT_STORE_CHROMEOS_H_
6 #define NET_SSL_CLIENT_CERT_STORE_CHROMEOS_H_
10 #include "base/memory/scoped_ptr.h"
11 #include "net/ssl/client_cert_store_nss.h"
15 class X509Certificate
;
17 class NET_EXPORT ClientCertStoreChromeOS
: public ClientCertStoreNSS
{
21 virtual ~CertFilter() {}
23 // Initializes this filter. Returns true if it finished initialization,
24 // otherwise returns false and calls |callback| once the initialization is
26 // Must be called at most once.
27 virtual bool Init(const base::Closure
& callback
) = 0;
29 // Returns true if |cert| is allowed to be used as a client certificate
30 // (e.g. for a certain browser context or user).
31 // This is only called once initialization is finished, see Init().
32 virtual bool IsCertAllowed(
33 const scoped_refptr
<X509Certificate
>& cert
) const = 0;
36 // This ClientCertStore will return only client certs that pass the filter
38 ClientCertStoreChromeOS(
39 scoped_ptr
<CertFilter
> cert_filter
,
40 const PasswordDelegateFactory
& password_delegate_factory
);
41 ~ClientCertStoreChromeOS() override
;
43 // ClientCertStoreNSS:
44 void GetClientCerts(const SSLCertRequestInfo
& cert_request_info
,
45 CertificateList
* selected_certs
,
46 const base::Closure
& callback
) override
;
49 // ClientCertStoreNSS:
50 void GetClientCertsImpl(CERTCertList
* cert_list
,
51 const SSLCertRequestInfo
& request
,
53 CertificateList
* selected_certs
) override
;
56 void CertFilterInitialized(const SSLCertRequestInfo
* request
,
57 CertificateList
* selected_certs
,
58 const base::Closure
& callback
);
60 scoped_ptr
<CertFilter
> cert_filter_
;
62 DISALLOW_COPY_AND_ASSIGN(ClientCertStoreChromeOS
);
67 #endif // NET_SSL_CLIENT_CERT_STORE_CHROMEOS_H_