13daa5a0d71ba8facd8be9370df54c20c23be6d8dUtkarsh Sanghi//
23daa5a0d71ba8facd8be9370df54c20c23be6d8dUtkarsh Sanghi// Copyright (C) 2015 The Android Open Source Project
33daa5a0d71ba8facd8be9370df54c20c23be6d8dUtkarsh Sanghi//
43daa5a0d71ba8facd8be9370df54c20c23be6d8dUtkarsh Sanghi// Licensed under the Apache License, Version 2.0 (the "License");
53daa5a0d71ba8facd8be9370df54c20c23be6d8dUtkarsh Sanghi// you may not use this file except in compliance with the License.
63daa5a0d71ba8facd8be9370df54c20c23be6d8dUtkarsh Sanghi// You may obtain a copy of the License at
73daa5a0d71ba8facd8be9370df54c20c23be6d8dUtkarsh Sanghi//
83daa5a0d71ba8facd8be9370df54c20c23be6d8dUtkarsh Sanghi//      http://www.apache.org/licenses/LICENSE-2.0
93daa5a0d71ba8facd8be9370df54c20c23be6d8dUtkarsh Sanghi//
103daa5a0d71ba8facd8be9370df54c20c23be6d8dUtkarsh Sanghi// Unless required by applicable law or agreed to in writing, software
113daa5a0d71ba8facd8be9370df54c20c23be6d8dUtkarsh Sanghi// distributed under the License is distributed on an "AS IS" BASIS,
123daa5a0d71ba8facd8be9370df54c20c23be6d8dUtkarsh Sanghi// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
133daa5a0d71ba8facd8be9370df54c20c23be6d8dUtkarsh Sanghi// See the License for the specific language governing permissions and
143daa5a0d71ba8facd8be9370df54c20c23be6d8dUtkarsh Sanghi// limitations under the License.
153daa5a0d71ba8facd8be9370df54c20c23be6d8dUtkarsh Sanghi//
16d66389850c33614ffbbbbc3f768621182fd853baDarren Krahn
17745de272a4afde07cd3b3a7c376976bd0a972b36Darren Krahn#include "attestation/common/mock_crypto_utility.h"
18d66389850c33614ffbbbbc3f768621182fd853baDarren Krahn
19d66389850c33614ffbbbbc3f768621182fd853baDarren Krahnusing ::testing::_;
20d66389850c33614ffbbbbc3f768621182fd853baDarren Krahnusing ::testing::Invoke;
21d66389850c33614ffbbbbc3f768621182fd853baDarren Krahnusing ::testing::Return;
22d66389850c33614ffbbbbc3f768621182fd853baDarren Krahnusing ::testing::WithArgs;
23d66389850c33614ffbbbbc3f768621182fd853baDarren Krahn
24d66389850c33614ffbbbbc3f768621182fd853baDarren Krahnnamespace {
25d66389850c33614ffbbbbc3f768621182fd853baDarren Krahn
26d66389850c33614ffbbbbc3f768621182fd853baDarren Krahnbool FakeRandom(size_t num_bytes, std::string* output) {
27d66389850c33614ffbbbbc3f768621182fd853baDarren Krahn  *output = std::string(num_bytes, 'A');
28d66389850c33614ffbbbbc3f768621182fd853baDarren Krahn  return true;
29d66389850c33614ffbbbbc3f768621182fd853baDarren Krahn}
30d66389850c33614ffbbbbc3f768621182fd853baDarren Krahn
31d66389850c33614ffbbbbc3f768621182fd853baDarren Krahnbool CopyString(const std::string& s1, std::string* s2) {
32d66389850c33614ffbbbbc3f768621182fd853baDarren Krahn  *s2 = s1;
33d66389850c33614ffbbbbc3f768621182fd853baDarren Krahn  return true;
34d66389850c33614ffbbbbc3f768621182fd853baDarren Krahn}
35d66389850c33614ffbbbbc3f768621182fd853baDarren Krahn
36d66389850c33614ffbbbbc3f768621182fd853baDarren Krahn}  // namespace
37d66389850c33614ffbbbbc3f768621182fd853baDarren Krahn
38d66389850c33614ffbbbbc3f768621182fd853baDarren Krahnnamespace attestation {
39d66389850c33614ffbbbbc3f768621182fd853baDarren Krahn
40d66389850c33614ffbbbbc3f768621182fd853baDarren KrahnMockCryptoUtility::MockCryptoUtility() {
41d66389850c33614ffbbbbc3f768621182fd853baDarren Krahn  ON_CALL(*this, GetRandom(_, _)).WillByDefault(Invoke(FakeRandom));
42d66389850c33614ffbbbbc3f768621182fd853baDarren Krahn  ON_CALL(*this, CreateSealedKey(_, _)).WillByDefault(Return(true));
43d66389850c33614ffbbbbc3f768621182fd853baDarren Krahn  ON_CALL(*this, UnsealKey(_, _, _)).WillByDefault(Return(true));
44d66389850c33614ffbbbbc3f768621182fd853baDarren Krahn  ON_CALL(*this, EncryptData(_, _, _, _))
45d66389850c33614ffbbbbc3f768621182fd853baDarren Krahn      .WillByDefault(WithArgs<0, 3>(Invoke(CopyString)));
46d66389850c33614ffbbbbc3f768621182fd853baDarren Krahn  ON_CALL(*this, DecryptData(_, _, _))
47d66389850c33614ffbbbbc3f768621182fd853baDarren Krahn      .WillByDefault(WithArgs<0, 2>(Invoke(CopyString)));
486222defa52eb13c0d90673f642f2647f7753478bDarren Krahn  ON_CALL(*this, GetRSASubjectPublicKeyInfo(_, _))
496222defa52eb13c0d90673f642f2647f7753478bDarren Krahn      .WillByDefault(Invoke(CopyString));
50d66389850c33614ffbbbbc3f768621182fd853baDarren Krahn}
51d66389850c33614ffbbbbc3f768621182fd853baDarren Krahn
52d66389850c33614ffbbbbc3f768621182fd853baDarren KrahnMockCryptoUtility::~MockCryptoUtility() {}
53d66389850c33614ffbbbbc3f768621182fd853baDarren Krahn
54d66389850c33614ffbbbbc3f768621182fd853baDarren Krahn}  // namespace attestation
55