| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "crypto/nss_util.h" | 5 #include "crypto/nss_util.h" |
| 6 | 6 |
| 7 #include <nss.h> | 7 #include <nss.h> |
| 8 #include <pk11pub.h> | 8 #include <pk11pub.h> |
| 9 #include <plarena.h> | 9 #include <plarena.h> |
| 10 #include <prerror.h> | 10 #include <prerror.h> |
| (...skipping 154 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 165 env->SetVar(kUseCacheEnvVar, "yes"); | 165 env->SetVar(kUseCacheEnvVar, "yes"); |
| 166 } | 166 } |
| 167 } | 167 } |
| 168 | 168 |
| 169 // A singleton to initialize/deinitialize NSPR. | 169 // A singleton to initialize/deinitialize NSPR. |
| 170 // Separate from the NSS singleton because we initialize NSPR on the UI thread. | 170 // Separate from the NSS singleton because we initialize NSPR on the UI thread. |
| 171 // Now that we're leaking the singleton, we could merge back with the NSS | 171 // Now that we're leaking the singleton, we could merge back with the NSS |
| 172 // singleton. | 172 // singleton. |
| 173 class NSPRInitSingleton { | 173 class NSPRInitSingleton { |
| 174 private: | 174 private: |
| 175 friend struct base::DefaultLazyInstanceTraits<NSPRInitSingleton>; | 175 friend struct base::LazyInstanceTraitsBase<NSPRInitSingleton>; |
| 176 | 176 |
| 177 NSPRInitSingleton() { | 177 NSPRInitSingleton() { |
| 178 PR_Init(PR_USER_THREAD, PR_PRIORITY_NORMAL, 0); | 178 PR_Init(PR_USER_THREAD, PR_PRIORITY_NORMAL, 0); |
| 179 } | 179 } |
| 180 | 180 |
| 181 // NOTE(willchan): We don't actually execute this code since we leak NSS to | 181 // NOTE(willchan): We don't actually execute this code since we leak NSS to |
| 182 // prevent non-joinable threads from using NSS after it's already been shut | 182 // prevent non-joinable threads from using NSS after it's already been shut |
| 183 // down. | 183 // down. |
| 184 ~NSPRInitSingleton() { | 184 ~NSPRInitSingleton() { |
| 185 PL_ArenaFinish(); | 185 PL_ArenaFinish(); |
| (...skipping 464 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 650 return ScopedPK11Slot(PK11_ReferenceSlot(tpm_slot_.get())); | 650 return ScopedPK11Slot(PK11_ReferenceSlot(tpm_slot_.get())); |
| 651 return ScopedPK11Slot(); | 651 return ScopedPK11Slot(); |
| 652 } | 652 } |
| 653 #endif | 653 #endif |
| 654 | 654 |
| 655 base::Lock* write_lock() { | 655 base::Lock* write_lock() { |
| 656 return &write_lock_; | 656 return &write_lock_; |
| 657 } | 657 } |
| 658 | 658 |
| 659 private: | 659 private: |
| 660 friend struct base::DefaultLazyInstanceTraits<NSSInitSingleton>; | 660 friend struct base::LazyInstanceTraitsBase<NSSInitSingleton>; |
| 661 | 661 |
| 662 NSSInitSingleton() | 662 NSSInitSingleton() |
| 663 : tpm_token_enabled_for_nss_(false), | 663 : tpm_token_enabled_for_nss_(false), |
| 664 initializing_tpm_token_(false), | 664 initializing_tpm_token_(false), |
| 665 chaps_module_(nullptr), | 665 chaps_module_(nullptr), |
| 666 root_(nullptr) { | 666 root_(nullptr) { |
| 667 // It's safe to construct on any thread, since LazyInstance will prevent any | 667 // It's safe to construct on any thread, since LazyInstance will prevent any |
| 668 // other threads from accessing until the constructor is done. | 668 // other threads from accessing until the constructor is done. |
| 669 thread_checker_.DetachFromThread(); | 669 thread_checker_.DetachFromThread(); |
| 670 | 670 |
| (...skipping 304 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 975 return time.ToInternalValue() - base::Time::UnixEpoch().ToInternalValue(); | 975 return time.ToInternalValue() - base::Time::UnixEpoch().ToInternalValue(); |
| 976 } | 976 } |
| 977 | 977 |
| 978 #if !defined(OS_CHROMEOS) | 978 #if !defined(OS_CHROMEOS) |
| 979 PK11SlotInfo* GetPersistentNSSKeySlot() { | 979 PK11SlotInfo* GetPersistentNSSKeySlot() { |
| 980 return g_nss_singleton.Get().GetPersistentNSSKeySlot(); | 980 return g_nss_singleton.Get().GetPersistentNSSKeySlot(); |
| 981 } | 981 } |
| 982 #endif | 982 #endif |
| 983 | 983 |
| 984 } // namespace crypto | 984 } // namespace crypto |
| OLD | NEW |