diff options
author | nkostylev@chromium.org <nkostylev@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-11-11 09:42:08 +0000 |
---|---|---|
committer | nkostylev@chromium.org <nkostylev@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-11-11 09:42:08 +0000 |
commit | 8b79e74dad80aa07556216cca5a5088f9b931179 (patch) | |
tree | 1f5ca7db91bacbfe8983d700adb553120258b401 /chrome/browser/chromeos | |
parent | 1132905c1fb73cfaef7668f3b0dfba734be80f95 (diff) | |
download | chromium_src-8b79e74dad80aa07556216cca5a5088f9b931179.zip chromium_src-8b79e74dad80aa07556216cca5a5088f9b931179.tar.gz chromium_src-8b79e74dad80aa07556216cca5a5088f9b931179.tar.bz2 |
[cros] Clear TPM password after EULA has been accepted.
BUG=chromium-os:7298
TEST=Manual. TPM ownership asquired, EULA hasn't been accepted, TPM password is always there. After EULA was accepted password is empty.
Review URL: http://codereview.chromium.org/4721002
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@65787 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/chromeos')
-rw-r--r-- | chrome/browser/chromeos/login/eula_view.cc | 17 | ||||
-rw-r--r-- | chrome/browser/chromeos/login/wizard_controller.cc | 6 |
2 files changed, 15 insertions, 8 deletions
diff --git a/chrome/browser/chromeos/login/eula_view.cc b/chrome/browser/chromeos/login/eula_view.cc index 42bad5f..a464795 100644 --- a/chrome/browser/chromeos/login/eula_view.cc +++ b/chrome/browser/chromeos/login/eula_view.cc @@ -196,18 +196,19 @@ void TpmInfoView::PullPassword() { chromeos::CryptohomeLibrary* cryptohome = chromeos::CrosLibrary::Get()->GetCryptohomeLibrary(); - bool password_was_cleared = false; + bool password_acquired = false; if (password_->empty() && cryptohome->TpmIsReady()) { - bool password_acquired = cryptohome->TpmGetPassword(password_); - if (password_acquired) { - cryptohome->TpmClearStoredPassword(); - if (password_->empty()) - password_was_cleared = true; - } else { + password_acquired = cryptohome->TpmGetPassword(password_); + if (!password_acquired) { password_->clear(); + } else if (password_->empty()) { + // For a fresh OOBE flow TPM is uninitialized, + // ownership process is started at the EULA screen, + // password is cleared after EULA is accepted. + LOG(ERROR) << "TPM returned an empty password."; } } - if (password_->empty() && !password_was_cleared) { + if (password_->empty() && !password_acquired) { // Password hasn't been acquired, reschedule pulling. MessageLoop::current()->PostDelayedTask( FROM_HERE, diff --git a/chrome/browser/chromeos/login/wizard_controller.cc b/chrome/browser/chromeos/login/wizard_controller.cc index 1962a29..54f12c2 100644 --- a/chrome/browser/chromeos/login/wizard_controller.cc +++ b/chrome/browser/chromeos/login/wizard_controller.cc @@ -17,6 +17,7 @@ #include "base/logging.h" #include "chrome/browser/browser_process.h" #include "chrome/browser/chromeos/cros/cros_library.h" +#include "chrome/browser/chromeos/cros/cryptohome_library.h" #include "chrome/browser/chromeos/cros/input_method_library.h" #include "chrome/browser/chromeos/cros/login_library.h" #include "chrome/browser/chromeos/cros/system_library.h" @@ -578,6 +579,11 @@ void WizardController::OnUpdateCompleted() { void WizardController::OnEulaAccepted() { MarkEulaAccepted(); + if (chromeos::CrosLibrary::Get()->EnsureLoaded()) { + // TPM password could be seen on EULA screen, now it's safe to clear it. + chromeos::CrosLibrary::Get()-> + GetCryptohomeLibrary()->TpmClearStoredPassword(); + } InitiateOOBEUpdate(); } |