| Index: chrome/browser/chromeos/cros/cryptohome_library.cc
|
| diff --git a/chrome/browser/chromeos/cros/cryptohome_library.cc b/chrome/browser/chromeos/cros/cryptohome_library.cc
|
| index 29c62c96612cf97a2fac328786938eb9bb357aca..98cf83dc8142f366c097c29492fab13c5a49c766 100644
|
| --- a/chrome/browser/chromeos/cros/cryptohome_library.cc
|
| +++ b/chrome/browser/chromeos/cros/cryptohome_library.cc
|
| @@ -20,37 +20,40 @@ namespace chromeos {
|
| // This class handles the interaction with the ChromeOS cryptohome library APIs.
|
| class CryptohomeLibraryImpl : public CryptohomeLibrary {
|
| public:
|
| - CryptohomeLibraryImpl() {
|
| - if (CrosLibrary::Get()->EnsureLoaded())
|
| - Init();
|
| - }
|
| + CryptohomeLibraryImpl() {}
|
| virtual ~CryptohomeLibraryImpl() {}
|
|
|
| - bool CheckKey(const std::string& user_email, const std::string& passhash) {
|
| + virtual void Init() OVERRIDE {
|
| + DCHECK(CrosLibrary::Get()->libcros_loaded());
|
| + cryptohome_connection_ = chromeos::CryptohomeMonitorSession(&Handler, this);
|
| + }
|
| +
|
| + virtual bool CheckKey(
|
| + const std::string& user_email, const std::string& passhash) OVERRIDE {
|
| return chromeos::CryptohomeCheckKey(user_email.c_str(), passhash.c_str());
|
| }
|
|
|
| - bool AsyncCheckKey(const std::string& user_email,
|
| - const std::string& passhash,
|
| - Delegate* d) {
|
| + virtual bool AsyncCheckKey(const std::string& user_email,
|
| + const std::string& passhash,
|
| + Delegate* d) OVERRIDE {
|
| return CacheCallback(
|
| chromeos::CryptohomeAsyncCheckKey(user_email.c_str(), passhash.c_str()),
|
| d,
|
| "Couldn't initiate async check of user's key.");
|
| }
|
|
|
| - bool MigrateKey(const std::string& user_email,
|
| - const std::string& old_hash,
|
| - const std::string& new_hash) {
|
| + virtual bool MigrateKey(const std::string& user_email,
|
| + const std::string& old_hash,
|
| + const std::string& new_hash) OVERRIDE {
|
| return chromeos::CryptohomeMigrateKey(user_email.c_str(),
|
| old_hash.c_str(),
|
| new_hash.c_str());
|
| }
|
|
|
| - bool AsyncMigrateKey(const std::string& user_email,
|
| + virtual bool AsyncMigrateKey(const std::string& user_email,
|
| const std::string& old_hash,
|
| const std::string& new_hash,
|
| - Delegate* d) {
|
| + Delegate* d) OVERRIDE {
|
| return CacheCallback(
|
| chromeos::CryptohomeAsyncMigrateKey(user_email.c_str(),
|
| old_hash.c_str(),
|
| @@ -59,18 +62,18 @@ class CryptohomeLibraryImpl : public CryptohomeLibrary {
|
| "Couldn't initiate aync migration of user's key");
|
| }
|
|
|
| - bool Mount(const std::string& user_email,
|
| - const std::string& passhash,
|
| - int* error_code) {
|
| + virtual bool Mount(const std::string& user_email,
|
| + const std::string& passhash,
|
| + int* error_code) OVERRIDE {
|
| return chromeos::CryptohomeMountAllowFail(user_email.c_str(),
|
| passhash.c_str(),
|
| error_code);
|
| }
|
|
|
| - bool AsyncMount(const std::string& user_email,
|
| - const std::string& passhash,
|
| - const bool create_if_missing,
|
| - Delegate* d) {
|
| + virtual bool AsyncMount(const std::string& user_email,
|
| + const std::string& passhash,
|
| + const bool create_if_missing,
|
| + Delegate* d) OVERRIDE {
|
| return CacheCallback(
|
| chromeos::CryptohomeAsyncMountSafe(user_email.c_str(),
|
| passhash.c_str(),
|
| @@ -81,36 +84,37 @@ class CryptohomeLibraryImpl : public CryptohomeLibrary {
|
| "Couldn't initiate async mount of cryptohome.");
|
| }
|
|
|
| - bool MountForBwsi(int* error_code) {
|
| + virtual bool MountForBwsi(int* error_code) OVERRIDE {
|
| return chromeos::CryptohomeMountGuest(error_code);
|
| }
|
|
|
| - bool AsyncMountForBwsi(Delegate* d) {
|
| + virtual bool AsyncMountForBwsi(Delegate* d) OVERRIDE {
|
| return CacheCallback(chromeos::CryptohomeAsyncMountGuest(),
|
| d,
|
| "Couldn't initiate async mount of cryptohome.");
|
| }
|
|
|
| - bool Unmount() {
|
| + virtual bool Unmount() OVERRIDE {
|
| return chromeos::CryptohomeUnmount();
|
| }
|
|
|
| - bool Remove(const std::string& user_email) {
|
| + virtual bool Remove(const std::string& user_email) OVERRIDE {
|
| return chromeos::CryptohomeRemove(user_email.c_str());
|
| }
|
|
|
| - bool AsyncRemove(const std::string& user_email, Delegate* d) {
|
| + virtual bool AsyncRemove(
|
| + const std::string& user_email, Delegate* d) OVERRIDE {
|
| return CacheCallback(
|
| chromeos::CryptohomeAsyncRemove(user_email.c_str()),
|
| d,
|
| "Couldn't initiate async removal of cryptohome.");
|
| }
|
|
|
| - bool IsMounted() {
|
| + virtual bool IsMounted() OVERRIDE {
|
| return chromeos::CryptohomeIsMounted();
|
| }
|
|
|
| - CryptohomeBlob GetSystemSalt() {
|
| + virtual CryptohomeBlob GetSystemSalt() OVERRIDE {
|
| CryptohomeBlob system_salt;
|
| char* salt_buf;
|
| int salt_len;
|
| @@ -127,37 +131,38 @@ class CryptohomeLibraryImpl : public CryptohomeLibrary {
|
| return system_salt;
|
| }
|
|
|
| - bool AsyncDoAutomaticFreeDiskSpaceControl(Delegate* d) {
|
| + virtual bool AsyncDoAutomaticFreeDiskSpaceControl(Delegate* d) OVERRIDE {
|
| return CacheCallback(
|
| chromeos::CryptohomeAsyncDoAutomaticFreeDiskSpaceControl(),
|
| d,
|
| "Couldn't do automatic free disk space control.");
|
| }
|
|
|
| - bool AsyncSetOwnerUser(const std::string& username, Delegate* d) {
|
| + virtual bool AsyncSetOwnerUser(
|
| + const std::string& username, Delegate* d) OVERRIDE {
|
| return CacheCallback(
|
| chromeos::CryptohomeAsyncSetOwnerUser(username.c_str()),
|
| d,
|
| "Couldn't do set owner user in Cryptohomed.");
|
| }
|
|
|
| - bool TpmIsReady() {
|
| + virtual bool TpmIsReady() OVERRIDE {
|
| return chromeos::CryptohomeTpmIsReady();
|
| }
|
|
|
| - bool TpmIsEnabled() {
|
| + virtual bool TpmIsEnabled() OVERRIDE {
|
| return chromeos::CryptohomeTpmIsEnabled();
|
| }
|
|
|
| - bool TpmIsOwned() {
|
| + virtual bool TpmIsOwned() OVERRIDE {
|
| return chromeos::CryptohomeTpmIsOwned();
|
| }
|
|
|
| - bool TpmIsBeingOwned() {
|
| + virtual bool TpmIsBeingOwned() OVERRIDE {
|
| return chromeos::CryptohomeTpmIsBeingOwned();
|
| }
|
|
|
| - bool TpmGetPassword(std::string* password) {
|
| + virtual bool TpmGetPassword(std::string* password) OVERRIDE {
|
| char *password_buf;
|
| bool result = chromeos::CryptohomeTpmGetPasswordSafe(&password_buf);
|
| *password = password_buf;
|
| @@ -165,15 +170,16 @@ class CryptohomeLibraryImpl : public CryptohomeLibrary {
|
| return result;
|
| }
|
|
|
| - void TpmCanAttemptOwnership() {
|
| + virtual void TpmCanAttemptOwnership() OVERRIDE {
|
| chromeos::CryptohomeTpmCanAttemptOwnership();
|
| }
|
|
|
| - void TpmClearStoredPassword() {
|
| + virtual void TpmClearStoredPassword() OVERRIDE {
|
| chromeos::CryptohomeTpmClearStoredPassword();
|
| }
|
|
|
| - bool InstallAttributesGet(const std::string& name, std::string* value) {
|
| + virtual bool InstallAttributesGet(
|
| + const std::string& name, std::string* value) OVERRIDE {
|
| char* local_value;
|
| bool done =
|
| chromeos::CryptohomeInstallAttributesGet(name.c_str(), &local_value);
|
| @@ -184,40 +190,42 @@ class CryptohomeLibraryImpl : public CryptohomeLibrary {
|
| return done;
|
| }
|
|
|
| - bool InstallAttributesSet(const std::string& name, const std::string& value) {
|
| + virtual bool InstallAttributesSet(
|
| + const std::string& name, const std::string& value) OVERRIDE {
|
| return chromeos::CryptohomeInstallAttributesSet(name.c_str(),
|
| value.c_str());
|
| }
|
|
|
| - int InstallAttributesCount() {
|
| + virtual int InstallAttributesCount() OVERRIDE {
|
| return chromeos::CryptohomeInstallAttributesCount();
|
| }
|
|
|
| - bool InstallAttributesFinalize() {
|
| + virtual bool InstallAttributesFinalize() OVERRIDE {
|
| return chromeos::CryptohomeInstallAttributesFinalize();
|
| }
|
|
|
| - bool InstallAttributesIsReady() {
|
| + virtual bool InstallAttributesIsReady() OVERRIDE {
|
| return chromeos::CryptohomeInstallAttributesIsReady();
|
| }
|
|
|
| - bool InstallAttributesIsSecure() {
|
| + virtual bool InstallAttributesIsSecure() OVERRIDE {
|
| return chromeos::CryptohomeInstallAttributesIsSecure();
|
| }
|
|
|
| - bool InstallAttributesIsInvalid() {
|
| + virtual bool InstallAttributesIsInvalid() OVERRIDE {
|
| return chromeos::CryptohomeInstallAttributesIsInvalid();
|
| }
|
|
|
| - bool InstallAttributesIsFirstInstall() {
|
| + virtual bool InstallAttributesIsFirstInstall() OVERRIDE {
|
| return chromeos::CryptohomeInstallAttributesIsFirstInstall();
|
| }
|
|
|
| - void Pkcs11GetTpmTokenInfo(std::string* label, std::string* user_pin) {
|
| + virtual void Pkcs11GetTpmTokenInfo(
|
| + std::string* label, std::string* user_pin) OVERRIDE {
|
| chromeos::CryptohomePkcs11GetTpmTokenInfo(label, user_pin);
|
| }
|
|
|
| - bool Pkcs11IsTpmTokenReady() {
|
| + virtual bool Pkcs11IsTpmTokenReady() OVERRIDE {
|
| return chromeos::CryptohomePkcs11IsTpmTokenReady();
|
| }
|
|
|
| @@ -229,10 +237,6 @@ class CryptohomeLibraryImpl : public CryptohomeLibrary {
|
| library->Dispatch(event);
|
| }
|
|
|
| - void Init() {
|
| - cryptohome_connection_ = chromeos::CryptohomeMonitorSession(&Handler, this);
|
| - }
|
| -
|
| void Dispatch(const chromeos::CryptohomeAsyncCallStatus& event) {
|
| const CallbackMap::iterator callback = callback_map_.find(event.async_id);
|
| if (callback == callback_map_.end()) {
|
| @@ -268,38 +272,41 @@ class CryptohomeLibraryStubImpl : public CryptohomeLibrary {
|
| : locked_(false) {}
|
| virtual ~CryptohomeLibraryStubImpl() {}
|
|
|
| - bool CheckKey(const std::string& user_email, const std::string& passhash) {
|
| + virtual void Init() OVERRIDE {}
|
| +
|
| + virtual bool CheckKey(
|
| + const std::string& user_email, const std::string& passhash) OVERRIDE {
|
| return true;
|
| }
|
|
|
| - bool AsyncCheckKey(const std::string& user_email,
|
| - const std::string& passhash,
|
| - Delegate* callback) {
|
| + virtual bool AsyncCheckKey(const std::string& user_email,
|
| + const std::string& passhash,
|
| + Delegate* callback) OVERRIDE {
|
| BrowserThread::PostTask(
|
| BrowserThread::UI, FROM_HERE,
|
| NewRunnableFunction(&DoStubCallback, callback));
|
| return true;
|
| }
|
|
|
| - bool MigrateKey(const std::string& user_email,
|
| - const std::string& old_hash,
|
| - const std::string& new_hash) {
|
| + virtual bool MigrateKey(const std::string& user_email,
|
| + const std::string& old_hash,
|
| + const std::string& new_hash) OVERRIDE {
|
| return true;
|
| }
|
|
|
| - bool AsyncMigrateKey(const std::string& user_email,
|
| - const std::string& old_hash,
|
| - const std::string& new_hash,
|
| - Delegate* callback) {
|
| + virtual bool AsyncMigrateKey(const std::string& user_email,
|
| + const std::string& old_hash,
|
| + const std::string& new_hash,
|
| + Delegate* callback) OVERRIDE {
|
| BrowserThread::PostTask(
|
| BrowserThread::UI, FROM_HERE,
|
| NewRunnableFunction(&DoStubCallback, callback));
|
| return true;
|
| }
|
|
|
| - bool Mount(const std::string& user_email,
|
| - const std::string& passhash,
|
| - int* error_code) {
|
| + virtual bool Mount(const std::string& user_email,
|
| + const std::string& passhash,
|
| + int* error_code) OVERRIDE {
|
| // For testing password change.
|
| if (user_email ==
|
| CommandLine::ForCurrentProcess()->GetSwitchValueASCII(
|
| @@ -311,47 +318,48 @@ class CryptohomeLibraryStubImpl : public CryptohomeLibrary {
|
| return true;
|
| }
|
|
|
| - bool AsyncMount(const std::string& user_email,
|
| - const std::string& passhash,
|
| - const bool create_if_missing,
|
| - Delegate* callback) {
|
| + virtual bool AsyncMount(const std::string& user_email,
|
| + const std::string& passhash,
|
| + const bool create_if_missing,
|
| + Delegate* callback) OVERRIDE {
|
| BrowserThread::PostTask(
|
| BrowserThread::UI, FROM_HERE,
|
| NewRunnableFunction(&DoStubCallback, callback));
|
| return true;
|
| }
|
|
|
| - bool MountForBwsi(int* error_code) {
|
| + virtual bool MountForBwsi(int* error_code) OVERRIDE {
|
| return true;
|
| }
|
|
|
| - bool AsyncMountForBwsi(Delegate* callback) {
|
| + virtual bool AsyncMountForBwsi(Delegate* callback) OVERRIDE {
|
| BrowserThread::PostTask(
|
| BrowserThread::UI, FROM_HERE,
|
| NewRunnableFunction(&DoStubCallback, callback));
|
| return true;
|
| }
|
|
|
| - bool Unmount() {
|
| + virtual bool Unmount() OVERRIDE {
|
| return true;
|
| }
|
|
|
| - bool Remove(const std::string& user_email) {
|
| + virtual bool Remove(const std::string& user_email) OVERRIDE {
|
| return true;
|
| }
|
|
|
| - bool AsyncRemove(const std::string& user_email, Delegate* callback) {
|
| + virtual bool AsyncRemove(
|
| + const std::string& user_email, Delegate* callback) OVERRIDE {
|
| BrowserThread::PostTask(
|
| BrowserThread::UI, FROM_HERE,
|
| NewRunnableFunction(&DoStubCallback, callback));
|
| return true;
|
| }
|
|
|
| - bool IsMounted() {
|
| + virtual bool IsMounted() OVERRIDE {
|
| return true;
|
| }
|
|
|
| - CryptohomeBlob GetSystemSalt() {
|
| + virtual CryptohomeBlob GetSystemSalt() OVERRIDE {
|
| CryptohomeBlob salt = CryptohomeBlob();
|
| for (size_t i = 0; i < strlen(kStubSystemSalt); i++)
|
| salt.push_back(static_cast<unsigned char>(kStubSystemSalt[i]));
|
| @@ -359,14 +367,16 @@ class CryptohomeLibraryStubImpl : public CryptohomeLibrary {
|
| return salt;
|
| }
|
|
|
| - bool AsyncDoAutomaticFreeDiskSpaceControl(Delegate* callback) {
|
| + virtual bool AsyncDoAutomaticFreeDiskSpaceControl(
|
| + Delegate* callback) OVERRIDE {
|
| BrowserThread::PostTask(
|
| BrowserThread::UI, FROM_HERE,
|
| NewRunnableFunction(&DoStubCallback, callback));
|
| return true;
|
| }
|
|
|
| - bool AsyncSetOwnerUser(const std::string& username, Delegate* callback) {
|
| + virtual bool AsyncSetOwnerUser(
|
| + const std::string& username, Delegate* callback) OVERRIDE {
|
| BrowserThread::PostTask(
|
| BrowserThread::UI, FROM_HERE,
|
| NewRunnableFunction(&DoStubCallback, callback));
|
| @@ -374,33 +384,34 @@ class CryptohomeLibraryStubImpl : public CryptohomeLibrary {
|
| }
|
|
|
| // Tpm begin ready after 20-th call.
|
| - bool TpmIsReady() {
|
| + virtual bool TpmIsReady() OVERRIDE {
|
| static int counter = 0;
|
| return ++counter > 20;
|
| }
|
|
|
| - bool TpmIsEnabled() {
|
| + virtual bool TpmIsEnabled() OVERRIDE {
|
| return true;
|
| }
|
|
|
| - bool TpmIsOwned() {
|
| + virtual bool TpmIsOwned() OVERRIDE {
|
| return true;
|
| }
|
|
|
| - bool TpmIsBeingOwned() {
|
| + virtual bool TpmIsBeingOwned() OVERRIDE {
|
| return true;
|
| }
|
|
|
| - bool TpmGetPassword(std::string* password) {
|
| + virtual bool TpmGetPassword(std::string* password) OVERRIDE {
|
| *password = "Stub-TPM-password";
|
| return true;
|
| }
|
|
|
| - void TpmCanAttemptOwnership() {}
|
| + virtual void TpmCanAttemptOwnership() OVERRIDE {}
|
|
|
| - void TpmClearStoredPassword() {}
|
| + virtual void TpmClearStoredPassword() OVERRIDE {}
|
|
|
| - bool InstallAttributesGet(const std::string& name, std::string* value) {
|
| + virtual bool InstallAttributesGet(
|
| + const std::string& name, std::string* value) OVERRIDE {
|
| if (install_attrs_.find(name) != install_attrs_.end()) {
|
| *value = install_attrs_[name];
|
| return true;
|
| @@ -408,43 +419,44 @@ class CryptohomeLibraryStubImpl : public CryptohomeLibrary {
|
| return false;
|
| }
|
|
|
| - bool InstallAttributesSet(const std::string& name, const std::string& value) {
|
| + virtual bool InstallAttributesSet(
|
| + const std::string& name, const std::string& value) OVERRIDE {
|
| install_attrs_[name] = value;
|
| return true;
|
| }
|
|
|
| - int InstallAttributesCount() {
|
| + virtual int InstallAttributesCount() OVERRIDE {
|
| return install_attrs_.size();
|
| }
|
|
|
| - bool InstallAttributesFinalize() {
|
| + virtual bool InstallAttributesFinalize() OVERRIDE {
|
| locked_ = true;
|
| return true;
|
| }
|
|
|
| - bool InstallAttributesIsReady() {
|
| + virtual bool InstallAttributesIsReady() OVERRIDE {
|
| return true;
|
| }
|
|
|
| - bool InstallAttributesIsSecure() {
|
| + virtual bool InstallAttributesIsSecure() OVERRIDE {
|
| return false;
|
| }
|
|
|
| - bool InstallAttributesIsInvalid() {
|
| + virtual bool InstallAttributesIsInvalid() OVERRIDE {
|
| return false;
|
| }
|
|
|
| - bool InstallAttributesIsFirstInstall() {
|
| + virtual bool InstallAttributesIsFirstInstall() OVERRIDE {
|
| return !locked_;
|
| }
|
|
|
| - void Pkcs11GetTpmTokenInfo(std::string* label,
|
| - std::string* user_pin) {
|
| + virtual void Pkcs11GetTpmTokenInfo(std::string* label,
|
| + std::string* user_pin) OVERRIDE {
|
| *label = "Stub TPM Token";
|
| *user_pin = "012345";
|
| }
|
|
|
| - bool Pkcs11IsTpmTokenReady() { return true; }
|
| + virtual bool Pkcs11IsTpmTokenReady() OVERRIDE { return true; }
|
|
|
| private:
|
| static void DoStubCallback(Delegate* callback) {
|
| @@ -462,10 +474,13 @@ CryptohomeLibrary::~CryptohomeLibrary() {}
|
|
|
| // static
|
| CryptohomeLibrary* CryptohomeLibrary::GetImpl(bool stub) {
|
| + CryptohomeLibrary* impl;
|
| if (stub)
|
| - return new CryptohomeLibraryStubImpl();
|
| + impl = new CryptohomeLibraryStubImpl();
|
| else
|
| - return new CryptohomeLibraryImpl();
|
| + impl = new CryptohomeLibraryImpl();
|
| + impl->Init();
|
| + return impl;
|
| }
|
|
|
| } // namespace chromeos
|
|
|