blob: feb178ca7c8a1de8e17a6fbb905f18d4603ff56b [file] [log] [blame]
[email protected]557737f72013-12-06 22:24:071// Copyright (c) 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 CHROME_BROWSER_NET_NSS_CONTEXT_H_
6#define CHROME_BROWSER_NET_NSS_CONTEXT_H_
7
8#include <string>
9
10#include "base/callback.h"
11#include "base/compiler_specific.h"
12#include "crypto/scoped_nss_types.h"
13
[email protected]69295ba2014-01-28 06:17:0014class Profile;
15
[email protected]057ad5f2013-12-20 19:00:5716namespace net {
17class NSSCertDatabase;
18}
19
[email protected]557737f72013-12-06 22:24:0720namespace content {
21class ResourceContext;
22} // namespace content
23
24// Returns a reference to the public slot for the user associated with
25// |context|. Should be called only on the IO thread.
26crypto::ScopedPK11Slot GetPublicNSSKeySlotForResourceContext(
27 content::ResourceContext* context);
28
29// Returns a reference to the private slot for the user associated with
30// |context|, if it is loaded. If it is not loaded and |callback| is non-null,
31// the |callback| will be run once the slot is loaded.
32// Should be called only on the IO thread.
33crypto::ScopedPK11Slot GetPrivateNSSKeySlotForResourceContext(
34 content::ResourceContext* context,
35 const base::Callback<void(crypto::ScopedPK11Slot)>& callback)
36 WARN_UNUSED_RESULT;
37
[email protected]057ad5f2013-12-20 19:00:5738// Returns a pointer to the NSSCertDatabase for the user associated with
39// |context|, if it is ready. If it is not ready and |callback| is non-null, the
40// |callback| will be run once the DB is initialized. Ownership is not
41// transferred, but the caller may save the pointer, which will remain valid for
42// the lifetime of the ResourceContext.
43// Should be called only on the IO thread.
44net::NSSCertDatabase* GetNSSCertDatabaseForResourceContext(
45 content::ResourceContext* context,
46 const base::Callback<void(net::NSSCertDatabase*)>& callback)
47 WARN_UNUSED_RESULT;
48
[email protected]69295ba2014-01-28 06:17:0049// Gets a pointer to the NSSCertDatabase for the user associated with |context|.
50// It's a wrapper around |GetNSSCertDatabaseForResourceContext| which makes
51// sure it's called on IO thread (with |profile|'s resource context). The
52// callback will be called on the originating message loop.
53// It's accessing profile, so it should be called on the UI thread.
54void GetNSSCertDatabaseForProfile(
55 Profile* profile,
56 const base::Callback<void(net::NSSCertDatabase*)>& callback);
57
[email protected]557737f72013-12-06 22:24:0758#endif // CHROME_BROWSER_NET_NSS_CONTEXT_H_