Chromium Code Reviews
Help | Chromium Project | Sign in
(385)

Side by Side Diff: crypto/nss_util.cc

Issue 8143012: Fix library paths for preloading NSS on Ubuntu 11.10. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Add ARM support. Created 2 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Please Sign in to add in-line comments.
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 #if defined(OS_CHROMEOS) 35 #if defined(OS_CHROMEOS)
35 #include "crypto/symmetric_key.h" 36 #include "crypto/symmetric_key.h"
36 #endif 37 #endif
37 38
38 // USE_NSS means we use NSS for everything crypto-related. If USE_NSS is not 39 // USE_NSS means we use NSS for everything crypto-related. If USE_NSS is not
39 // defined, such as on Mac and Windows, we use NSS for SSL only -- we don't 40 // defined, such as on Mac and Windows, we use NSS for SSL only -- we don't
40 // use NSS for crypto or certificate verification, and we don't use the NSS 41 // use NSS for crypto or certificate verification, and we don't use the NSS
41 // certificate and key databases. 42 // certificate and key databases.
(...skipping 601 matching lines...) Expand 10 before | Expand all | Expand 10 after
643 644
644 void LoadNSSLibraries() { 645 void LoadNSSLibraries() {
645 // Some NSS libraries are linked dynamically so load them here. 646 // Some NSS libraries are linked dynamically so load them here.
646 #if defined(USE_NSS) 647 #if defined(USE_NSS)
647 // Try to search for multiple directories to load the libraries. 648 // Try to search for multiple directories to load the libraries.
648 std::vector<FilePath> paths; 649 std::vector<FilePath> paths;
649 650
650 // Use relative path to Search PATH for the library files. 651 // Use relative path to Search PATH for the library files.
651 paths.push_back(FilePath()); 652 paths.push_back(FilePath());
652 653
653 // For Debian derivaties NSS libraries are located here. 654 // For Debian derivatives NSS libraries are located here.
654 paths.push_back(FilePath("/usr/lib/nss")); 655 paths.push_back(FilePath("/usr/lib/nss"));
655 656
657 // Ubuntu 11.10 (Oneiric) places the libraries here.
658 #if defined(ARCH_CPU_X86_64)
659 paths.push_back(FilePath("/usr/lib/x86_64-linux-gnu/nss"));
660 #elif defined(ARCH_CPU_X86)
661 paths.push_back(FilePath("/usr/lib/i386-linux-gnu/nss"));
662 #elif defined(ARCH_CPU_ARMEL)
663 paths.push_back(FilePath("/usr/lib/arm-linux-gnueabi/nss"));
664 #endif
665
656 // A list of library files to load. 666 // A list of library files to load.
657 std::vector<std::string> libs; 667 std::vector<std::string> libs;
658 libs.push_back("libsoftokn3.so"); 668 libs.push_back("libsoftokn3.so");
659 libs.push_back("libfreebl3.so"); 669 libs.push_back("libfreebl3.so");
660 670
661 // For each combination of library file and path, check for existence and 671 // For each combination of library file and path, check for existence and
662 // then load. 672 // then load.
663 size_t loaded = 0; 673 size_t loaded = 0;
664 for (size_t i = 0; i < libs.size(); ++i) { 674 for (size_t i = 0; i < libs.size(); ++i) {
665 for (size_t j = 0; j < paths.size(); ++j) { 675 for (size_t j = 0; j < paths.size(); ++j) {
666 FilePath path = paths[j].Append(libs[i]); 676 FilePath path = paths[j].Append(libs[i]);
667 base::NativeLibrary lib = base::LoadNativeLibrary(path, NULL); 677 base::NativeLibrary lib = base::LoadNativeLibrary(path, NULL);
668 if (lib) { 678 if (lib) {
669 ++loaded; 679 ++loaded;
670 break; 680 break;
671 } 681 }
672 } 682 }
673 } 683 }
674 684
675 if (loaded == libs.size()) { 685 if (loaded == libs.size()) {
676 VLOG(3) << "NSS libraries loaded."; 686 VLOG(3) << "NSS libraries loaded.";
677 } else { 687 } else {
678 LOG(WARNING) << "Failed to load NSS libraries."; 688 LOG(ERROR) << "Failed to load NSS libraries.";
679 } 689 }
680 #endif 690 #endif
681 } 691 }
682 692
683 bool CheckNSSVersion(const char* version) { 693 bool CheckNSSVersion(const char* version) {
684 return !!NSS_VersionCheck(version); 694 return !!NSS_VersionCheck(version);
685 } 695 }
686 696
687 #if defined(USE_NSS) 697 #if defined(USE_NSS)
688 bool OpenTestNSSDB(const FilePath& path, const char* description) { 698 bool OpenTestNSSDB(const FilePath& path, const char* description) {
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after
775 785
776 PK11SlotInfo* GetPublicNSSKeySlot() { 786 PK11SlotInfo* GetPublicNSSKeySlot() {
777 return g_nss_singleton.Get().GetPublicNSSKeySlot(); 787 return g_nss_singleton.Get().GetPublicNSSKeySlot();
778 } 788 }
779 789
780 PK11SlotInfo* GetPrivateNSSKeySlot() { 790 PK11SlotInfo* GetPrivateNSSKeySlot() {
781 return g_nss_singleton.Get().GetPrivateNSSKeySlot(); 791 return g_nss_singleton.Get().GetPrivateNSSKeySlot();
782 } 792 }
783 793
784 } // namespace crypto 794 } // namespace crypto
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
RSS Feeds Recent Issues | This issue
This is Rietveld 1280:2d3e6564b7b6