| Index: chrome/browser/importer/nss_decryptor_mac.h
|
| ===================================================================
|
| --- chrome/browser/importer/nss_decryptor_mac.h (revision 21221)
|
| +++ chrome/browser/importer/nss_decryptor_mac.h (working copy)
|
| @@ -2,83 +2,15 @@
|
| // Use of this source code is governed by a BSD-style license that can be
|
| // found in the LICENSE file.
|
|
|
| -#ifndef CHROME_BROWSER_IMPORTER_FIREFOX_IMPORTER_UTILS_H_
|
| -#define CHROME_BROWSER_IMPORTER_FIREFOX_IMPORTER_UTILS_H_
|
| +#ifndef CHROME_BROWSER_IMPORTER_NSS_DECRYPTOR_MAC_H_
|
| +#define CHROME_BROWSER_IMPORTER_NSS_DECRYPTOR_MAC_H_
|
|
|
| +#include <string>
|
| #include <vector>
|
|
|
| #include "base/basictypes.h"
|
| -#include "base/file_path.h"
|
| -#include "base/native_library.h"
|
| -#include "build/build_config.h"
|
| +#include "base/logging.h"
|
|
|
| -class DictionaryValue;
|
| -class GURL;
|
| -class TemplateURL;
|
| -
|
| -namespace webkit_glue {
|
| -struct PasswordForm;
|
| -}
|
| -
|
| -#if defined(OS_WIN)
|
| -// Detects which version of Firefox is installed from registry. Returns its
|
| -// major version, and drops the minor version. Returns 0 if
|
| -// failed. If there are indicators of both FF2 and FF3 it is
|
| -// biased to return the biggest version.
|
| -int GetCurrentFirefoxMajorVersionFromRegistry();
|
| -
|
| -// Detects where Firefox lives. Returns a empty string if Firefox
|
| -// is not installed.
|
| -std::wstring GetFirefoxInstallPathFromRegistry();
|
| -#endif
|
| -
|
| -// Detects version of Firefox and installation path from given Firefox profile
|
| -bool GetFirefoxVersionAndPathFromProfile(const std::wstring& profile_path,
|
| - int* version,
|
| - std::wstring* app_path);
|
| -
|
| -// Gets the full path of the profiles.ini file. This file records
|
| -// the profiles that can be used by Firefox. Returns an empty
|
| -// string if failed.
|
| -FilePath GetProfilesINI();
|
| -
|
| -// Parses the profile.ini file, and stores its information in |root|.
|
| -// This file is a plain-text file. Key/value pairs are stored one per
|
| -// line, and they are separeated in different sections. For example:
|
| -// [General]
|
| -// StartWithLastProfile=1
|
| -//
|
| -// [Profile0]
|
| -// Name=default
|
| -// IsRelative=1
|
| -// Path=Profiles/abcdefeg.default
|
| -// We set "[value]" in path "<Section>.<Key>". For example, the path
|
| -// "Genenral.StartWithLastProfile" has the value "1".
|
| -void ParseProfileINI(std::wstring file, DictionaryValue* root);
|
| -
|
| -// Returns true if we want to add the URL to the history. We filter
|
| -// out the URL with a unsupported scheme.
|
| -bool CanImportURL(const GURL& url);
|
| -
|
| -// Parses the OpenSearch XML files in |xml_files| and populates |search_engines|
|
| -// with the resulting TemplateURLs.
|
| -void ParseSearchEnginesFromXMLFiles(const std::vector<std::wstring>& xml_files,
|
| - std::vector<TemplateURL*>* search_engines);
|
| -
|
| -// Returns the index of the default search engine in the |search_engines| list.
|
| -// If none is found, -1 is returned.
|
| -int GetFirefoxDefaultSearchEngineIndex(
|
| - const std::vector<TemplateURL*>& search_engines,
|
| - const std::wstring& profile_path);
|
| -
|
| -// Returns the home page set in Firefox in a particular profile.
|
| -GURL GetHomepage(const std::wstring& profile_path);
|
| -
|
| -// Checks to see if this home page is a default home page, as specified by
|
| -// the resource file browserconfig.properties in the Firefox application
|
| -// directory.
|
| -bool IsDefaultHomepage(const GURL& homepage, const std::wstring& app_path);
|
| -
|
| // The following declarations of functions and types are from Firefox
|
| // NSS library.
|
| // source code:
|
| @@ -170,21 +102,30 @@
|
| typedef void (*SECITEMFreeItemFunc)(SECItem *item, PRBool free_it);
|
| typedef void (*PLArenaFinishFunc)(void);
|
| typedef PRStatus (*PRCleanupFunc)(void);
|
| +namespace webkit_glue {
|
| +struct PasswordForm;
|
| +}
|
|
|
| // A wrapper for Firefox NSS decrypt component.
|
| class NSSDecryptor {
|
| public:
|
| - NSSDecryptor();
|
| - ~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),
|
| + is_nss_initialized_(false) {}
|
| + ~NSSDecryptor() {}
|
|
|
| - // Loads NSS3 library and returns true if successful.
|
| - // |dll_path| indicates the location of NSS3 DLL files, and |db_path|
|
| - // is the location of the database file that stores the keys.
|
| - bool Init(const std::wstring& dll_path, const std::wstring& db_path);
|
| + // Initializes NSS if it hasn't already been initialized.
|
| + bool Init(const std::wstring& /* dll_path */,
|
| + const std::wstring& /* db_path */) {
|
| + // TODO(port): Load the NSS libraries and call InitNSS()
|
| + // http://code.google.com/p/chromium/issues/detail?id=15455
|
| + NOTIMPLEMENTED();
|
| + return false;
|
| + }
|
|
|
| - // Frees the libraries.
|
| - void Free();
|
| -
|
| // Decrypts Firefox stored passwords. Before using this method,
|
| // make sure Init() returns true.
|
| std::wstring Decrypt(const std::string& crypt) const;
|
| @@ -196,11 +137,6 @@
|
| std::vector<webkit_glue::PasswordForm>* forms);
|
|
|
| private:
|
| - // Performs tasks common across all platforms to initialize NSS.
|
| - bool InitNSS(const std::wstring& db_path,
|
| - base::NativeLibrary plds4_dll,
|
| - base::NativeLibrary nspr4_dll);
|
| -
|
| // Methods in Firefox security components.
|
| NSSInitFunc NSS_Init;
|
| NSSShutdownFunc NSS_Shutdown;
|
| @@ -213,20 +149,10 @@
|
| PLArenaFinishFunc PL_ArenaFinish;
|
| PRCleanupFunc PR_Cleanup;
|
|
|
| - // Libraries necessary for decrypting the passwords.
|
| - static const wchar_t kNSS3Library[];
|
| - static const wchar_t kSoftokn3Library[];
|
| - static const wchar_t kPLDS4Library[];
|
| - static const wchar_t kNSPR4Library[];
|
| -
|
| - // NSS3 module handles.
|
| - base::NativeLibrary nss3_dll_;
|
| - base::NativeLibrary softokn3_dll_;
|
| -
|
| // True if NSS_Init() has been called
|
| bool is_nss_initialized_;
|
|
|
| DISALLOW_COPY_AND_ASSIGN(NSSDecryptor);
|
| };
|
|
|
| -#endif // CHROME_BROWSER_IMPORTER_FIREFOX_IMPORTER_UTILS_H_
|
| +#endif // CHROME_BROWSER_IMPORTER_NSS_DECRYPTOR_MAC_H_
|
|
|