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