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 #include "crypto/nss_util_internal.h" | 6 #include "crypto/nss_util_internal.h" |
7 | 7 |
8 #include <nss.h> | 8 #include <nss.h> |
9 #include <pk11pub.h> | 9 #include <pk11pub.h> |
10 #include <plarena.h> | 10 #include <plarena.h> |
(...skipping 338 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
349 | 349 |
350 done: | 350 done: |
351 if (slot) | 351 if (slot) |
352 PK11_FreeSlot(slot); | 352 PK11_FreeSlot(slot); |
353 | 353 |
354 return key ? SymmetricKey::CreateFromKey(key) : NULL; | 354 return key ? SymmetricKey::CreateFromKey(key) : NULL; |
355 } | 355 } |
356 #endif // defined(OS_CHROMEOS) | 356 #endif // defined(OS_CHROMEOS) |
357 | 357 |
358 | 358 |
359 bool OpenTestNSSDB() { | 359 bool OpenTestNSSDB() { |
Ryan Sleevi
2013/05/22 19:50:59
I'm not fully sure I understood - is this a failur
Robert Sesek
2013/05/23 16:55:16
This is a failure on Linux with GYP_DEFINES=chrome
| |
360 if (test_slot_) | 360 if (test_slot_) |
361 return true; | 361 return true; |
362 if (!g_test_nss_db_dir.Get().CreateUniqueTempDir()) | 362 if (!g_test_nss_db_dir.Get().CreateUniqueTempDir()) |
363 return false; | 363 return false; |
364 test_slot_ = OpenUserDB(g_test_nss_db_dir.Get().path(), "Test DB"); | 364 test_slot_ = OpenUserDB(g_test_nss_db_dir.Get().path(), "Test DB"); |
Ryan Sleevi
2013/05/22 19:50:59
if (test_slot_)
PK11_UserEnableSlot(test_slot_);
| |
365 return !!test_slot_; | 365 return !!test_slot_; |
366 } | 366 } |
367 | 367 |
368 void CloseTestNSSDB() { | 368 void CloseTestNSSDB() { |
369 if (test_slot_) { | 369 if (test_slot_) { |
Ryan Sleevi
2013/05/22 19:50:59
if (!test_slot_)
return;
PK11_UserDisableSlot(t
| |
370 SECStatus status = SECMOD_CloseUserDB(test_slot_); | 370 SECStatus status = SECMOD_CloseUserDB(test_slot_); |
371 if (status != SECSuccess) | 371 if (status != SECSuccess) |
372 PLOG(ERROR) << "SECMOD_CloseUserDB failed: " << PORT_GetError(); | 372 PLOG(ERROR) << "SECMOD_CloseUserDB failed: " << PORT_GetError(); |
373 PK11_FreeSlot(test_slot_); | 373 PK11_FreeSlot(test_slot_); |
374 test_slot_ = NULL; | 374 test_slot_ = NULL; |
375 ignore_result(g_test_nss_db_dir.Get().Delete()); | 375 ignore_result(g_test_nss_db_dir.Get().Delete()); |
376 } | 376 } |
377 } | 377 } |
378 | 378 |
379 PK11SlotInfo* GetPublicNSSKeySlot() { | 379 PK11SlotInfo* GetPublicNSSKeySlot() { |
(...skipping 359 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
739 bool CheckNSSVersion(const char* version) { | 739 bool CheckNSSVersion(const char* version) { |
740 return !!NSS_VersionCheck(version); | 740 return !!NSS_VersionCheck(version); |
741 } | 741 } |
742 | 742 |
743 #if defined(USE_NSS) | 743 #if defined(USE_NSS) |
744 ScopedTestNSSDB::ScopedTestNSSDB() | 744 ScopedTestNSSDB::ScopedTestNSSDB() |
745 : is_open_(g_nss_singleton.Get().OpenTestNSSDB()) { | 745 : is_open_(g_nss_singleton.Get().OpenTestNSSDB()) { |
746 } | 746 } |
747 | 747 |
748 ScopedTestNSSDB::~ScopedTestNSSDB() { | 748 ScopedTestNSSDB::~ScopedTestNSSDB() { |
749 // TODO(mattm): Close the dababase once NSS 3.14 is required, | 749 if (NSS_VersionCheck("3.14")) |
750 // which fixes https://bugzilla.mozilla.org/show_bug.cgi?id=588269 | 750 g_nss_singleton.Get().CloseTestNSSDB(); |
751 // Resource leaks are suppressed. http://crbug.com/156433 . | |
752 } | 751 } |
753 | 752 |
754 base::Lock* GetNSSWriteLock() { | 753 base::Lock* GetNSSWriteLock() { |
755 return g_nss_singleton.Get().write_lock(); | 754 return g_nss_singleton.Get().write_lock(); |
756 } | 755 } |
757 | 756 |
758 AutoNSSWriteLock::AutoNSSWriteLock() : lock_(GetNSSWriteLock()) { | 757 AutoNSSWriteLock::AutoNSSWriteLock() : lock_(GetNSSWriteLock()) { |
759 // May be NULL if the lock is not needed in our version of NSS. | 758 // May be NULL if the lock is not needed in our version of NSS. |
760 if (lock_) | 759 if (lock_) |
761 lock_->Acquire(); | 760 lock_->Acquire(); |
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
817 | 816 |
818 PK11SlotInfo* GetPublicNSSKeySlot() { | 817 PK11SlotInfo* GetPublicNSSKeySlot() { |
819 return g_nss_singleton.Get().GetPublicNSSKeySlot(); | 818 return g_nss_singleton.Get().GetPublicNSSKeySlot(); |
820 } | 819 } |
821 | 820 |
822 PK11SlotInfo* GetPrivateNSSKeySlot() { | 821 PK11SlotInfo* GetPrivateNSSKeySlot() { |
823 return g_nss_singleton.Get().GetPrivateNSSKeySlot(); | 822 return g_nss_singleton.Get().GetPrivateNSSKeySlot(); |
824 } | 823 } |
825 | 824 |
826 } // namespace crypto | 825 } // namespace crypto |
OLD | NEW |