Index: chrome/browser/chromeos/login/ownership_service.cc |
diff --git a/chrome/browser/chromeos/login/ownership_service.cc b/chrome/browser/chromeos/login/ownership_service.cc |
new file mode 100644 |
index 0000000000000000000000000000000000000000..5c62f7c4e8e6f1e0d8bba2e1bdbf6fb98864c2c1 |
--- /dev/null |
+++ b/chrome/browser/chromeos/login/ownership_service.cc |
@@ -0,0 +1,94 @@ |
+// Copyright (c) 2010 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. |
+ |
+#include "chrome/browser/chromeos/login/ownership_service.h" |
+ |
+#include "base/file_path.h" |
+#include "base/file_util.h" |
+#include "chrome/browser/chrome_thread.h" |
+#include "chrome/common/notification_service.h" |
+#include "chrome/common/notification_type.h" |
+ |
+namespace chromeos { |
+ |
+// static |
+OwnershipService* OwnershipService::GetSharedInstance() { |
+ return Singleton<OwnershipService>::get(); |
+} |
+ |
+OwnershipService::OwnershipService() |
+ : manager_(new OwnerManager), |
+ utils_(OwnerKeyUtils::Create()) { |
+} |
+ |
+OwnershipService::~OwnershipService() {} |
+ |
+ |
+bool OwnershipService::IsAlreadyOwned() { |
+ return file_util::PathExists(utils_->GetOwnerKeyFilePath()); |
+} |
+ |
+bool OwnershipService::StartLoadOwnerKeyAttempt() { |
+ if (!IsAlreadyOwned()) { |
+ LOG(ERROR) << "Device not yet owned"; |
+ return false; |
+ } |
+ ChromeThread::PostTask( |
+ ChromeThread::FILE, FROM_HERE, |
+ NewRunnableMethod(manager_.get(), &OwnerManager::LoadOwnerKey)); |
+ return true; |
+} |
+ |
+bool OwnershipService::StartTakeOwnershipAttempt() { |
+ if (IsAlreadyOwned()) { |
+ LOG(ERROR) << "Device is already owned"; |
+ return false; |
+ } |
+ ChromeThread::PostTask( |
+ ChromeThread::FILE, FROM_HERE, |
+ NewRunnableMethod(manager_.get(), |
+ &OwnerManager::GenerateKeysAndExportPublic)); |
+ return true; |
+} |
+ |
+bool OwnershipService::StartSigningAttempt(const std::string& data, |
+ OwnerManager::Delegate* d) { |
+ if (!IsAlreadyOwned()) { |
+ LOG(ERROR) << "Device not yet owned"; |
+ return false; |
+ } |
+ ChromeThread::ID thread_id; |
+ if (!ChromeThread::GetCurrentThreadIdentifier(&thread_id)) |
+ thread_id = ChromeThread::UI; |
+ ChromeThread::PostTask( |
+ ChromeThread::FILE, FROM_HERE, |
+ NewRunnableMethod(manager_.get(), |
+ &OwnerManager::Sign, |
+ thread_id, |
+ data, d)); |
+ return true; |
+} |
+ |
+bool OwnershipService::StartVerifyAttempt(const std::string& data, |
+ const std::string& signature, |
+ OwnerManager::Delegate* d) { |
+ if (!IsAlreadyOwned()) { |
+ LOG(ERROR) << "Device not yet owned"; |
+ return false; |
+ } |
+ ChromeThread::ID thread_id; |
+ if (!ChromeThread::GetCurrentThreadIdentifier(&thread_id)) |
+ thread_id = ChromeThread::UI; |
+ ChromeThread::PostTask( |
+ ChromeThread::FILE, FROM_HERE, |
+ NewRunnableMethod(manager_.get(), |
+ &OwnerManager::Verify, |
+ thread_id, |
+ data, |
+ signature, |
+ d)); |
+ return true; |
+} |
+ |
+} // namespace chromeos |