// Copyright (c) 2013 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef CHROME_BROWSER_NET_NSS_CONTEXT_H_ #define CHROME_BROWSER_NET_NSS_CONTEXT_H_ #include #include "base/callback.h" #include "base/compiler_specific.h" #include "crypto/scoped_nss_types.h" class Profile; namespace net { class NSSCertDatabase; } namespace content { class ResourceContext; } // namespace content // Returns a reference to the public slot for the user associated with // |context|. Should be called only on the IO thread. crypto::ScopedPK11Slot GetPublicNSSKeySlotForResourceContext( content::ResourceContext* context); // Returns a reference to the private slot for the user associated with // |context|, if it is loaded. If it is not loaded and |callback| is non-null, // the |callback| will be run once the slot is loaded. // Should be called only on the IO thread. crypto::ScopedPK11Slot GetPrivateNSSKeySlotForResourceContext( content::ResourceContext* context, const base::Callback& callback) WARN_UNUSED_RESULT; // Returns a pointer to the NSSCertDatabase for the user associated with // |context|, if it is ready. If it is not ready and |callback| is non-null, the // |callback| will be run once the DB is initialized. Ownership is not // transferred, but the caller may save the pointer, which will remain valid for // the lifetime of the ResourceContext. // Must be called only on the IO thread. net::NSSCertDatabase* GetNSSCertDatabaseForResourceContext( content::ResourceContext* context, const base::Callback& callback) WARN_UNUSED_RESULT; #if defined(OS_CHROMEOS) // Enables the system key slot in the NSSCertDatabase for the user associated // with |context|. // Must be called only on the IO thread. void EnableNSSSystemKeySlotForResourceContext( content::ResourceContext* context); #endif // Gets a pointer to the NSSCertDatabase for the user associated with |context|. // It's a wrapper around |GetNSSCertDatabaseForResourceContext| which makes // sure it's called on IO thread (with |profile|'s resource context). The // callback will be called on the originating message loop. // It's accessing profile, so it should be called on the UI thread. void GetNSSCertDatabaseForProfile( Profile* profile, const base::Callback& callback); #endif // CHROME_BROWSER_NET_NSS_CONTEXT_H_