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 14namespace net { 15 16class 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