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

Unified Diff: chrome/browser/importer/nss_decryptor_win.cc

Issue 18501013: Move most importer code to chrome/utility/importer (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: another gyp attempt Created 7 years, 5 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/browser/importer/nss_decryptor_win.h ('k') | chrome/browser/importer/pstore_declarations.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/importer/nss_decryptor_win.cc
diff --git a/chrome/browser/importer/nss_decryptor_win.cc b/chrome/browser/importer/nss_decryptor_win.cc
deleted file mode 100644
index a426ce0fda23d0d6754586b7c74407fba5bde182..0000000000000000000000000000000000000000
--- a/chrome/browser/importer/nss_decryptor_win.cc
+++ /dev/null
@@ -1,177 +0,0 @@
-// Copyright (c) 2011 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "chrome/browser/importer/nss_decryptor_win.h"
-
-#include "base/files/file_path.h"
-#include "base/strings/sys_string_conversions.h"
-
-namespace {
-
-typedef BOOL (WINAPI* SetDllDirectoryFunc)(LPCTSTR lpPathName);
-
-// A helper class whose destructor calls SetDllDirectory(NULL) to undo the
-// effects of a previous SetDllDirectory call.
-class SetDllDirectoryCaller {
- public:
- explicit SetDllDirectoryCaller() : func_(NULL) { }
-
- ~SetDllDirectoryCaller() {
- if (func_)
- func_(NULL);
- }
-
- // Sets the SetDllDirectory function pointer to activates this object.
- void set_func(SetDllDirectoryFunc func) { func_ = func; }
-
- private:
- SetDllDirectoryFunc func_;
-};
-
-} // namespace
-
-// static
-const wchar_t NSSDecryptor::kNSS3Library[] = L"nss3.dll";
-const wchar_t NSSDecryptor::kSoftokn3Library[] = L"softokn3.dll";
-const wchar_t NSSDecryptor::kPLDS4Library[] = L"plds4.dll";
-const wchar_t NSSDecryptor::kNSPR4Library[] = L"nspr4.dll";
-
-bool NSSDecryptor::Init(const base::FilePath& dll_path,
- const base::FilePath& db_path) {
- // We call SetDllDirectory to work around a Purify bug (GetModuleHandle
- // fails inside Purify under certain conditions). SetDllDirectory only
- // exists on Windows XP SP1 or later, so we look up its address at run time.
- HMODULE kernel32_dll = GetModuleHandle(L"kernel32.dll");
- if (kernel32_dll == NULL)
- return false;
- SetDllDirectoryFunc set_dll_directory =
- (SetDllDirectoryFunc)GetProcAddress(kernel32_dll, "SetDllDirectoryW");
- SetDllDirectoryCaller caller;
-
- if (set_dll_directory != NULL) {
- if (!set_dll_directory(dll_path.value().c_str()))
- return false;
- caller.set_func(set_dll_directory);
- nss3_dll_ = LoadLibrary(kNSS3Library);
- if (nss3_dll_ == NULL)
- return false;
- } else {
- // Fall back on LoadLibraryEx if SetDllDirectory isn't available. We
- // actually prefer this method because it doesn't change the DLL search
- // path, which is a process-wide property.
- base::FilePath path = dll_path.Append(kNSS3Library);
- nss3_dll_ = LoadLibraryEx(path.value().c_str(), NULL,
- LOAD_WITH_ALTERED_SEARCH_PATH);
- if (nss3_dll_ == NULL)
- return false;
-
- // Firefox 2 uses NSS 3.11. Firefox 3 uses NSS 3.12. NSS 3.12 has two
- // changes in its DLLs:
- // 1. nss3.dll is not linked with softokn3.dll at build time, but rather
- // loads softokn3.dll using LoadLibrary in NSS_Init.
- // 2. softokn3.dll has a new dependency sqlite3.dll.
- // NSS_Init's LoadLibrary call has trouble finding sqlite3.dll. To help
- // it out, we preload softokn3.dll using LoadLibraryEx with the
- // LOAD_WITH_ALTERED_SEARCH_PATH flag. This helps because LoadLibrary
- // doesn't load a DLL again if it's already loaded. This workaround is
- // harmless for NSS 3.11.
- path = base::FilePath(dll_path).Append(kSoftokn3Library);
- softokn3_dll_ = LoadLibraryEx(path.value().c_str(), NULL,
- LOAD_WITH_ALTERED_SEARCH_PATH);
- if (softokn3_dll_ == NULL) {
- Free();
- return false;
- }
- }
- HMODULE plds4_dll = GetModuleHandle(kPLDS4Library);
- HMODULE nspr4_dll = GetModuleHandle(kNSPR4Library);
-
- return InitNSS(db_path, plds4_dll, nspr4_dll);
-}
-
-NSSDecryptor::NSSDecryptor()
- : NSS_Init(NULL), NSS_Shutdown(NULL), PK11_GetInternalKeySlot(NULL),
- PK11_CheckUserPassword(NULL), PK11_FreeSlot(NULL),
- PK11_Authenticate(NULL), PK11SDR_Decrypt(NULL), SECITEM_FreeItem(NULL),
- PL_ArenaFinish(NULL), PR_Cleanup(NULL),
- nss3_dll_(NULL), softokn3_dll_(NULL),
- is_nss_initialized_(false) {
-}
-
-NSSDecryptor::~NSSDecryptor() {
- Free();
-}
-
-bool NSSDecryptor::InitNSS(const base::FilePath& db_path,
- base::NativeLibrary plds4_dll,
- base::NativeLibrary nspr4_dll) {
- // NSPR DLLs are already loaded now.
- if (plds4_dll == NULL || nspr4_dll == NULL) {
- Free();
- return false;
- }
-
- // Gets the function address.
- NSS_Init = (NSSInitFunc)
- base::GetFunctionPointerFromNativeLibrary(nss3_dll_, "NSS_Init");
- NSS_Shutdown = (NSSShutdownFunc)
- base::GetFunctionPointerFromNativeLibrary(nss3_dll_, "NSS_Shutdown");
- PK11_GetInternalKeySlot = (PK11GetInternalKeySlotFunc)
- base::GetFunctionPointerFromNativeLibrary(nss3_dll_,
- "PK11_GetInternalKeySlot");
- PK11_FreeSlot = (PK11FreeSlotFunc)
- base::GetFunctionPointerFromNativeLibrary(nss3_dll_, "PK11_FreeSlot");
- PK11_Authenticate = (PK11AuthenticateFunc)
- base::GetFunctionPointerFromNativeLibrary(nss3_dll_, "PK11_Authenticate");
- PK11SDR_Decrypt = (PK11SDRDecryptFunc)
- base::GetFunctionPointerFromNativeLibrary(nss3_dll_, "PK11SDR_Decrypt");
- SECITEM_FreeItem = (SECITEMFreeItemFunc)
- base::GetFunctionPointerFromNativeLibrary(nss3_dll_, "SECITEM_FreeItem");
- PL_ArenaFinish = (PLArenaFinishFunc)
- base::GetFunctionPointerFromNativeLibrary(plds4_dll, "PL_ArenaFinish");
- PR_Cleanup = (PRCleanupFunc)
- base::GetFunctionPointerFromNativeLibrary(nspr4_dll, "PR_Cleanup");
-
- if (NSS_Init == NULL || NSS_Shutdown == NULL ||
- PK11_GetInternalKeySlot == NULL || PK11_FreeSlot == NULL ||
- PK11_Authenticate == NULL || PK11SDR_Decrypt == NULL ||
- SECITEM_FreeItem == NULL || PL_ArenaFinish == NULL ||
- PR_Cleanup == NULL) {
- Free();
- return false;
- }
-
- SECStatus result = NSS_Init(base::SysWideToNativeMB(db_path.value()).c_str());
- if (result != SECSuccess) {
- Free();
- return false;
- }
-
- is_nss_initialized_ = true;
- return true;
-}
-
-void NSSDecryptor::Free() {
- if (is_nss_initialized_) {
- NSS_Shutdown();
- PL_ArenaFinish();
- PR_Cleanup();
- is_nss_initialized_ = false;
- }
- if (softokn3_dll_ != NULL)
- base::UnloadNativeLibrary(softokn3_dll_);
- if (nss3_dll_ != NULL)
- base::UnloadNativeLibrary(nss3_dll_);
- NSS_Init = NULL;
- NSS_Shutdown = NULL;
- PK11_GetInternalKeySlot = NULL;
- PK11_FreeSlot = NULL;
- PK11_Authenticate = NULL;
- PK11SDR_Decrypt = NULL;
- SECITEM_FreeItem = NULL;
- PL_ArenaFinish = NULL;
- PR_Cleanup = NULL;
- nss3_dll_ = NULL;
- softokn3_dll_ = NULL;
-}
« no previous file with comments | « chrome/browser/importer/nss_decryptor_win.h ('k') | chrome/browser/importer/pstore_declarations.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698