• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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_
56