// Copyright 2014 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. #ifndef COMPONENTS_OS_CRYPT_IE7_PASSWORD_WIN_H_ #define COMPONENTS_OS_CRYPT_IE7_PASSWORD_WIN_H_ #include <windows.h> #include <string> #include <vector> #include "base/basictypes.h" #include "base/time/time.h" // Contains the information read from the IE7/IE8 Storage2 key in the registry. struct IE7PasswordInfo { // Hash of the url. std::wstring url_hash; // Encrypted data containing the username, password and some more undocumented // fields. std::vector<unsigned char> encrypted_data; // When the login was imported. base::Time date_created; }; namespace ie7_password { struct DecryptedCredentials { std::wstring username; std::wstring password; }; // Parses a data structure to find passwords and usernames. // The collection of bytes in |data| is interpreted as a special PasswordEntry // structure. IE saves the login information as a binary dump of this structure. // Credentials extracted from |data| end up in |credentials|. bool GetUserPassFromData(const std::vector<unsigned char>& data, std::vector<DecryptedCredentials>* credentials); // Decrypts usernames and passwords for a given data vector using the url as // the key. // Output ends up in |credentials|. bool DecryptPasswords(const std::wstring& url, const std::vector<unsigned char>& data, std::vector<DecryptedCredentials>* credentials); // Returns the hash of a url. std::wstring GetUrlHash(const std::wstring& url); } // namespace ie7_password #endif // COMPONENTS_OS_CRYPT_IE7_PASSWORD_WIN_H_