[email protected] | 190933f | 2014-07-28 09:56:51 | [diff] [blame] | 1 | // Copyright 2014 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 CRYPTO_SCOPED_TEST_SYSTEM_NSS_KEY_SLOT_H_ | ||||
6 | #define CRYPTO_SCOPED_TEST_SYSTEM_NSS_KEY_SLOT_H_ | ||||
7 | |||||
thakis | d1a1847 | 2016-04-08 22:30:41 | [diff] [blame] | 8 | #include <memory> |
9 | |||||
[email protected] | 190933f | 2014-07-28 09:56:51 | [diff] [blame] | 10 | #include "base/macros.h" |
[email protected] | 190933f | 2014-07-28 09:56:51 | [diff] [blame] | 11 | #include "crypto/crypto_export.h" |
12 | |||||
[email protected] | 442233d4 | 2014-08-02 07:37:24 | [diff] [blame] | 13 | // Forward declaration, from <pk11pub.h> |
14 | typedef struct PK11SlotInfoStr PK11SlotInfo; | ||||
15 | |||||
[email protected] | 190933f | 2014-07-28 09:56:51 | [diff] [blame] | 16 | namespace crypto { |
17 | |||||
18 | class ScopedTestNSSDB; | ||||
19 | |||||
20 | // Opens a persistent NSS software database in a temporary directory and sets | ||||
21 | // the test system slot to the opened database. This helper should be created in | ||||
[email protected] | 442233d4 | 2014-08-02 07:37:24 | [diff] [blame] | 22 | // tests to fake the system token that is usually provided by the Chaps module. |
23 | // |slot| is exposed through |GetSystemNSSKeySlot| and |IsTPMTokenReady| will | ||||
24 | // return true. | ||||
25 | // |InitializeTPMTokenAndSystemSlot|, which triggers the TPM initialization, | ||||
26 | // does not have to be called if this helper is used. | ||||
[email protected] | 190933f | 2014-07-28 09:56:51 | [diff] [blame] | 27 | // At most one instance of this helper must be used at a time. |
xhwang | 3e9ca56 | 2015-11-06 18:50:36 | [diff] [blame] | 28 | class CRYPTO_EXPORT ScopedTestSystemNSSKeySlot { |
[email protected] | 190933f | 2014-07-28 09:56:51 | [diff] [blame] | 29 | public: |
davidben | 6004dc5 | 2017-02-03 04:15:29 | [diff] [blame] | 30 | ScopedTestSystemNSSKeySlot(); |
[email protected] | 190933f | 2014-07-28 09:56:51 | [diff] [blame] | 31 | ~ScopedTestSystemNSSKeySlot(); |
32 | |||||
33 | bool ConstructedSuccessfully() const; | ||||
[email protected] | 442233d4 | 2014-08-02 07:37:24 | [diff] [blame] | 34 | PK11SlotInfo* slot() const; |
[email protected] | 190933f | 2014-07-28 09:56:51 | [diff] [blame] | 35 | |
36 | private: | ||||
thakis | d1a1847 | 2016-04-08 22:30:41 | [diff] [blame] | 37 | std::unique_ptr<ScopedTestNSSDB> test_db_; |
[email protected] | 190933f | 2014-07-28 09:56:51 | [diff] [blame] | 38 | |
39 | DISALLOW_COPY_AND_ASSIGN(ScopedTestSystemNSSKeySlot); | ||||
40 | }; | ||||
41 | |||||
42 | } // namespace crypto | ||||
43 | |||||
44 | #endif // CRYPTO_SCOPED_TEST_SYSTEM_NSS_KEY_SLOT_H_ |