#ifndef NET_CERT_NSS_CERT_DATABASE_CHROMEOS_H_
#define NET_CERT_NSS_CERT_DATABASE_CHROMEOS_H_
#include "base/functional/callback.h"
#include "crypto/scoped_nss_types.h"
#include "net/base/net_export.h"
#include "net/cert/nss_cert_database.h"
#include "net/cert/nss_profile_filter_chromeos.h"
namespace net {
class NET_EXPORT NSSCertDatabaseChromeOS : public NSSCertDatabase {
public:
NSSCertDatabaseChromeOS(crypto::ScopedPK11Slot public_slot,
crypto::ScopedPK11Slot private_slot);
NSSCertDatabaseChromeOS(const NSSCertDatabaseChromeOS&) = delete;
NSSCertDatabaseChromeOS& operator=(const NSSCertDatabaseChromeOS&) = delete;
~NSSCertDatabaseChromeOS() override;
void SetSystemSlot(crypto::ScopedPK11Slot system_slot);
void ListCerts(NSSCertDatabase::ListCertsCallback callback) override;
crypto::ScopedPK11Slot GetSystemSlot() const override;
void ListModules(std::vector<crypto::ScopedPK11Slot>* modules,
bool need_rw) const override;
bool SetCertTrust(CERTCertificate* cert,
CertType type,
TrustBits trust_bits) override;
private:
static ScopedCERTCertificateList ListCertsImpl(
const NSSProfileFilterChromeOS& profile_filter);
NSSProfileFilterChromeOS profile_filter_;
crypto::ScopedPK11Slot system_slot_;
};
}
#endif