Home | History | Annotate | Download | only in login
      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 
     20 namespace chromeos {
     21 
     22 class 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 
     45 class 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