// 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. #include "crypto/scoped_test_nss_chromeos_user.h" #include "base/logging.h" #include "crypto/nss_util.h" #include "crypto/nss_util_internal.h" namespace crypto { ScopedTestNSSChromeOSUser::ScopedTestNSSChromeOSUser( const std::string& username_hash) : username_hash_(username_hash), constructed_successfully_(false) { if (!temp_dir_.CreateUniqueTempDir()) return; // This opens a software DB in the given folder. In production code that is in // the home folder, but for testing the temp folder is used. constructed_successfully_ = InitializeNSSForChromeOSUser( username_hash, username_hash, temp_dir_.path()); } ScopedTestNSSChromeOSUser::~ScopedTestNSSChromeOSUser() { if (constructed_successfully_) CloseChromeOSUserForTesting(username_hash_); } void ScopedTestNSSChromeOSUser::FinishInit() { DCHECK(constructed_successfully_); if (!ShouldInitializeTPMForChromeOSUser(username_hash_)) return; WillInitializeTPMForChromeOSUser(username_hash_); InitializePrivateSoftwareSlotForChromeOSUser(username_hash_); } } // namespace crypto