Upstream version 9.38.198.0
[platform/framework/web/crosswalk.git] / src / net / ssl / client_cert_store_chromeos.h
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.
4
5 #ifndef NET_SSL_CLIENT_CERT_STORE_CHROMEOS_H_
6 #define NET_SSL_CLIENT_CERT_STORE_CHROMEOS_H_
7
8 #include <string>
9
10 #include "crypto/scoped_nss_types.h"
11 #include "net/cert/nss_profile_filter_chromeos.h"
12 #include "net/ssl/client_cert_store_nss.h"
13
14 namespace net {
15
16 class NET_EXPORT ClientCertStoreChromeOS : public ClientCertStoreNSS {
17  public:
18   // Constructs a ClientCertStore that will return client certs available on
19   // the user's private and public slots. If |use_system_slot| is true, certs on
20   // the system slot will also be returned.
21   ClientCertStoreChromeOS(
22       bool use_system_slot,
23       const std::string& username_hash,
24       const PasswordDelegateFactory& password_delegate_factory);
25   virtual ~ClientCertStoreChromeOS();
26
27   // ClientCertStoreNSS:
28   virtual void GetClientCerts(const SSLCertRequestInfo& cert_request_info,
29                               CertificateList* selected_certs,
30                               const base::Closure& callback) OVERRIDE;
31
32  protected:
33   // ClientCertStoreNSS:
34   virtual void GetClientCertsImpl(CERTCertList* cert_list,
35                                   const SSLCertRequestInfo& request,
36                                   bool query_nssdb,
37                                   CertificateList* selected_certs) OVERRIDE;
38
39  private:
40   void DidGetSystemAndPrivateSlot(const SSLCertRequestInfo* request,
41                                   CertificateList* selected_certs,
42                                   const base::Closure& callback,
43                                   crypto::ScopedPK11Slot system_slot,
44                                   crypto::ScopedPK11Slot private_slot);
45
46   bool use_system_slot_;
47   std::string username_hash_;
48   NSSProfileFilterChromeOS profile_filter_;
49
50   DISALLOW_COPY_AND_ASSIGN(ClientCertStoreChromeOS);
51 };
52
53 }  // namespace net
54
55 #endif  // NET_SSL_CLIENT_CERT_STORE_CHROMEOS_H_