1ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen// Copyright (c) 2011 The Chromium Authors. All rights reserved. 2bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen// Use of this source code is governed by a BSD-style license that can be 3bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen// found in the LICENSE file. 4bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen 5bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen#ifndef CHROME_BROWSER_CHROMEOS_LOGIN_MOCK_OWNER_KEY_UTILS_H_ 6bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen#define CHROME_BROWSER_CHROMEOS_LOGIN_MOCK_OWNER_KEY_UTILS_H_ 7bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen#pragma once 8bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen 9bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen#include <vector> 10bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen 11bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen#include "base/basictypes.h" 12bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen#include "base/file_path.h" 13ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "crypto/rsa_private_key.h" 14bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen#include "chrome/browser/chromeos/cros/login_library.h" 15bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen#include "chrome/browser/chromeos/login/owner_key_utils.h" 16dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen#include "content/browser/browser_thread.h" 17bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen#include "testing/gmock/include/gmock/gmock.h" 18bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen#include "testing/gtest/include/gtest/gtest.h" 19bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen 20bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsennamespace chromeos { 21bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen 22bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsenclass MockKeyUtils : public OwnerKeyUtils { 23bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen public: 24bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen MockKeyUtils() {} 25bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen MOCK_METHOD2(ImportPublicKey, bool(const FilePath& key_file, 26bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen std::vector<uint8>* output)); 27bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen MOCK_METHOD3(Verify, bool(const std::string& data, 28bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen const std::vector<uint8> signature, 29bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen const std::vector<uint8> public_key)); 30bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen MOCK_METHOD3(Sign, bool(const std::string& data, 31bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen std::vector<uint8>* OUT_signature, 32ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen crypto::RSAPrivateKey* key)); 33ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen MOCK_METHOD1(FindPrivateKey, 34ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen crypto::RSAPrivateKey*(const std::vector<uint8>& key)); 35bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen MOCK_METHOD0(GetOwnerKeyFilePath, FilePath()); 36ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen MOCK_METHOD2(ExportPublicKeyToFile, bool(crypto::RSAPrivateKey* pair, 37dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen const FilePath& key_file)); 38bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen protected: 39bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen virtual ~MockKeyUtils() {} 40bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen 41bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen private: 42bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen DISALLOW_COPY_AND_ASSIGN(MockKeyUtils); 43bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen}; 44bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen 45bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsenclass MockInjector : public OwnerKeyUtils::Factory { 46bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen public: 47bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen // Takes ownership of |mock|. 48bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen explicit MockInjector(MockKeyUtils* mock) : transient_(mock) { 49bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen } 50bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen 51bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen virtual ~MockInjector() {} 52bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen 53bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen // If this is called, its caller takes ownership of |transient_|. 54bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen // If it's never called, |transient_| remains our problem. 55bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen OwnerKeyUtils* CreateOwnerKeyUtils() { 56bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen return transient_.get(); 57bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen } 58bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen 59bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen private: 60bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen scoped_refptr<MockKeyUtils> transient_; 61bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen DISALLOW_COPY_AND_ASSIGN(MockInjector); 62bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen}; 63bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen 64bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen} // namespace chromeos 65bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen 66bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen#endif // CHROME_BROWSER_CHROMEOS_LOGIN_MOCK_OWNER_KEY_UTILS_H_ 67