summaryrefslogtreecommitdiffstats
path: root/chrome/browser/chromeos
diff options
context:
space:
mode:
authornkostylev@chromium.org <nkostylev@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-11-11 09:42:08 +0000
committernkostylev@chromium.org <nkostylev@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-11-11 09:42:08 +0000
commit8b79e74dad80aa07556216cca5a5088f9b931179 (patch)
tree1f5ca7db91bacbfe8983d700adb553120258b401 /chrome/browser/chromeos
parent1132905c1fb73cfaef7668f3b0dfba734be80f95 (diff)
downloadchromium_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.cc17
-rw-r--r--chrome/browser/chromeos/login/wizard_controller.cc6
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();
}