Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(645)

Side by Side Diff: crypto/nss_util.cc

Issue 8216025: Merge 104421 - Fix library paths for preloading NSS on Ubuntu 11.10. (Closed) Base URL: svn://svn.chromium.org/chrome/branches/874/src/
Patch Set: Created 9 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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 <plarena.h> 9 #include <plarena.h>
10 #include <prerror.h> 10 #include <prerror.h>
(...skipping 11 matching lines...) Expand all
22 22
23 #include "base/environment.h" 23 #include "base/environment.h"
24 #include "base/file_path.h" 24 #include "base/file_path.h"
25 #include "base/file_util.h" 25 #include "base/file_util.h"
26 #include "base/lazy_instance.h" 26 #include "base/lazy_instance.h"
27 #include "base/logging.h" 27 #include "base/logging.h"
28 #include "base/memory/scoped_ptr.h" 28 #include "base/memory/scoped_ptr.h"
29 #include "base/native_library.h" 29 #include "base/native_library.h"
30 #include "base/stringprintf.h" 30 #include "base/stringprintf.h"
31 #include "base/threading/thread_restrictions.h" 31 #include "base/threading/thread_restrictions.h"
32 #include "build/build_config.h"
32 #include "crypto/scoped_nss_types.h" 33 #include "crypto/scoped_nss_types.h"
33 34
34 // USE_NSS means we use NSS for everything crypto-related. If USE_NSS is not 35 // USE_NSS means we use NSS for everything crypto-related. If USE_NSS is not
35 // defined, such as on Mac and Windows, we use NSS for SSL only -- we don't 36 // defined, such as on Mac and Windows, we use NSS for SSL only -- we don't
36 // use NSS for crypto or certificate verification, and we don't use the NSS 37 // use NSS for crypto or certificate verification, and we don't use the NSS
37 // certificate and key databases. 38 // certificate and key databases.
38 #if defined(USE_NSS) 39 #if defined(USE_NSS)
39 #include "base/synchronization/lock.h" 40 #include "base/synchronization/lock.h"
40 #include "crypto/crypto_module_blocking_password_delegate.h" 41 #include "crypto/crypto_module_blocking_password_delegate.h"
41 #endif // defined(USE_NSS) 42 #endif // defined(USE_NSS)
(...skipping 554 matching lines...) Expand 10 before | Expand all | Expand 10 after
596 597
597 void LoadNSSLibraries() { 598 void LoadNSSLibraries() {
598 // Some NSS libraries are linked dynamically so load them here. 599 // Some NSS libraries are linked dynamically so load them here.
599 #if defined(USE_NSS) 600 #if defined(USE_NSS)
600 // Try to search for multiple directories to load the libraries. 601 // Try to search for multiple directories to load the libraries.
601 std::vector<FilePath> paths; 602 std::vector<FilePath> paths;
602 603
603 // Use relative path to Search PATH for the library files. 604 // Use relative path to Search PATH for the library files.
604 paths.push_back(FilePath()); 605 paths.push_back(FilePath());
605 606
606 // For Debian derivaties NSS libraries are located here. 607 // For Debian derivatives NSS libraries are located here.
607 paths.push_back(FilePath("/usr/lib/nss")); 608 paths.push_back(FilePath("/usr/lib/nss"));
608 609
610 // Ubuntu 11.10 (Oneiric) places the libraries here.
611 #if defined(ARCH_CPU_X86_64)
612 paths.push_back(FilePath("/usr/lib/x86_64-linux-gnu/nss"));
613 #elif defined(ARCH_CPU_X86)
614 paths.push_back(FilePath("/usr/lib/i386-linux-gnu/nss"));
615 #elif defined(ARCH_CPU_ARMEL)
616 paths.push_back(FilePath("/usr/lib/arm-linux-gnueabi/nss"));
617 #endif
618
609 // A list of library files to load. 619 // A list of library files to load.
610 std::vector<std::string> libs; 620 std::vector<std::string> libs;
611 libs.push_back("libsoftokn3.so"); 621 libs.push_back("libsoftokn3.so");
612 libs.push_back("libfreebl3.so"); 622 libs.push_back("libfreebl3.so");
613 623
614 // For each combination of library file and path, check for existence and 624 // For each combination of library file and path, check for existence and
615 // then load. 625 // then load.
616 size_t loaded = 0; 626 size_t loaded = 0;
617 for (size_t i = 0; i < libs.size(); ++i) { 627 for (size_t i = 0; i < libs.size(); ++i) {
618 for (size_t j = 0; j < paths.size(); ++j) { 628 for (size_t j = 0; j < paths.size(); ++j) {
619 FilePath path = paths[j].Append(libs[i]); 629 FilePath path = paths[j].Append(libs[i]);
620 base::NativeLibrary lib = base::LoadNativeLibrary(path, NULL); 630 base::NativeLibrary lib = base::LoadNativeLibrary(path, NULL);
621 if (lib) { 631 if (lib) {
622 ++loaded; 632 ++loaded;
623 break; 633 break;
624 } 634 }
625 } 635 }
626 } 636 }
627 637
628 if (loaded == libs.size()) { 638 if (loaded == libs.size()) {
629 VLOG(3) << "NSS libraries loaded."; 639 VLOG(3) << "NSS libraries loaded.";
630 } else { 640 } else {
631 LOG(WARNING) << "Failed to load NSS libraries."; 641 LOG(ERROR) << "Failed to load NSS libraries.";
632 } 642 }
633 #endif 643 #endif
634 } 644 }
635 645
636 bool CheckNSSVersion(const char* version) { 646 bool CheckNSSVersion(const char* version) {
637 return !!NSS_VersionCheck(version); 647 return !!NSS_VersionCheck(version);
638 } 648 }
639 649
640 #if defined(USE_NSS) 650 #if defined(USE_NSS)
641 bool OpenTestNSSDB(const FilePath& path, const char* description) { 651 bool OpenTestNSSDB(const FilePath& path, const char* description) {
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after
725 735
726 PK11SlotInfo* GetPublicNSSKeySlot() { 736 PK11SlotInfo* GetPublicNSSKeySlot() {
727 return g_nss_singleton.Get().GetPublicNSSKeySlot(); 737 return g_nss_singleton.Get().GetPublicNSSKeySlot();
728 } 738 }
729 739
730 PK11SlotInfo* GetPrivateNSSKeySlot() { 740 PK11SlotInfo* GetPrivateNSSKeySlot() {
731 return g_nss_singleton.Get().GetPrivateNSSKeySlot(); 741 return g_nss_singleton.Get().GetPrivateNSSKeySlot();
732 } 742 }
733 743
734 } // namespace crypto 744 } // namespace crypto
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698