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//
1630a5bba00647d29e324111005deb76a0466f8c6bDarren Krahn
17745de272a4afde07cd3b3a7c376976bd0a972b36Darren Krahn#ifndef ATTESTATION_COMMON_MOCK_CRYPTO_UTILITY_H_
18745de272a4afde07cd3b3a7c376976bd0a972b36Darren Krahn#define ATTESTATION_COMMON_MOCK_CRYPTO_UTILITY_H_
1930a5bba00647d29e324111005deb76a0466f8c6bDarren Krahn
20745de272a4afde07cd3b3a7c376976bd0a972b36Darren Krahn#include "attestation/common/crypto_utility.h"
2130a5bba00647d29e324111005deb76a0466f8c6bDarren Krahn
2230a5bba00647d29e324111005deb76a0466f8c6bDarren Krahn#include <string>
2330a5bba00647d29e324111005deb76a0466f8c6bDarren Krahn
2430a5bba00647d29e324111005deb76a0466f8c6bDarren Krahn#include <gmock/gmock.h>
2530a5bba00647d29e324111005deb76a0466f8c6bDarren Krahn
2630a5bba00647d29e324111005deb76a0466f8c6bDarren Krahnnamespace attestation {
2730a5bba00647d29e324111005deb76a0466f8c6bDarren Krahn
2830a5bba00647d29e324111005deb76a0466f8c6bDarren Krahnclass MockCryptoUtility : public CryptoUtility {
2930a5bba00647d29e324111005deb76a0466f8c6bDarren Krahn public:
30d66389850c33614ffbbbbc3f768621182fd853baDarren Krahn  MockCryptoUtility();
31d66389850c33614ffbbbbc3f768621182fd853baDarren Krahn  ~MockCryptoUtility() override;
32d66389850c33614ffbbbbc3f768621182fd853baDarren Krahn
33d66389850c33614ffbbbbc3f768621182fd853baDarren Krahn  MOCK_CONST_METHOD2(GetRandom, bool(size_t, std::string*));
3430a5bba00647d29e324111005deb76a0466f8c6bDarren Krahn
35d569cf62b11f74b7ca2ff2db53414927f7e2d66aDarren Krahn  MOCK_METHOD2(CreateSealedKey, bool(std::string* aes_key,
36d569cf62b11f74b7ca2ff2db53414927f7e2d66aDarren Krahn                                     std::string* sealed_key));
3730a5bba00647d29e324111005deb76a0466f8c6bDarren Krahn
38d569cf62b11f74b7ca2ff2db53414927f7e2d66aDarren Krahn  MOCK_METHOD4(EncryptData, bool(const std::string& data,
39d569cf62b11f74b7ca2ff2db53414927f7e2d66aDarren Krahn                                 const std::string& aes_key,
40d569cf62b11f74b7ca2ff2db53414927f7e2d66aDarren Krahn                                 const std::string& sealed_key,
41d569cf62b11f74b7ca2ff2db53414927f7e2d66aDarren Krahn                                 std::string* encrypted_data));
4230a5bba00647d29e324111005deb76a0466f8c6bDarren Krahn
43d569cf62b11f74b7ca2ff2db53414927f7e2d66aDarren Krahn  MOCK_METHOD3(UnsealKey, bool(const std::string& encrypted_data,
44d569cf62b11f74b7ca2ff2db53414927f7e2d66aDarren Krahn                               std::string* aes_key,
45d569cf62b11f74b7ca2ff2db53414927f7e2d66aDarren Krahn                               std::string* sealed_key));
4630a5bba00647d29e324111005deb76a0466f8c6bDarren Krahn
47d569cf62b11f74b7ca2ff2db53414927f7e2d66aDarren Krahn  MOCK_METHOD3(DecryptData, bool(const std::string& encrypted_data,
48d569cf62b11f74b7ca2ff2db53414927f7e2d66aDarren Krahn                                 const std::string& aes_key,
49d569cf62b11f74b7ca2ff2db53414927f7e2d66aDarren Krahn                                 std::string* data));
506222defa52eb13c0d90673f642f2647f7753478bDarren Krahn  MOCK_METHOD2(GetRSASubjectPublicKeyInfo, bool(const std::string&,
516222defa52eb13c0d90673f642f2647f7753478bDarren Krahn                                                std::string*));
522e89ba764046e015ae90a1668f7cb3eb29cf509dDarren Krahn  MOCK_METHOD2(GetRSAPublicKey, bool(const std::string&, std::string*));
532e89ba764046e015ae90a1668f7cb3eb29cf509dDarren Krahn  MOCK_METHOD4(EncryptIdentityCredential, bool(const std::string&,
542e89ba764046e015ae90a1668f7cb3eb29cf509dDarren Krahn                                               const std::string&,
552e89ba764046e015ae90a1668f7cb3eb29cf509dDarren Krahn                                               const std::string&,
562e89ba764046e015ae90a1668f7cb3eb29cf509dDarren Krahn                                               EncryptedIdentityCredential*));
57bc0c74963418442991072b2c87baec839eec9c20Darren Krahn  MOCK_METHOD3(EncryptForUnbind, bool(const std::string&,
58bc0c74963418442991072b2c87baec839eec9c20Darren Krahn                                      const std::string&,
59bc0c74963418442991072b2c87baec839eec9c20Darren Krahn                                      std::string*));
60ccf90703bb6989e659b12a6494e84fdb921008edDarren Krahn  MOCK_METHOD3(VerifySignature, bool(const std::string&,
61ccf90703bb6989e659b12a6494e84fdb921008edDarren Krahn                                     const std::string&,
62ccf90703bb6989e659b12a6494e84fdb921008edDarren Krahn                                     const std::string&));
6330a5bba00647d29e324111005deb76a0466f8c6bDarren Krahn};
6430a5bba00647d29e324111005deb76a0466f8c6bDarren Krahn
6530a5bba00647d29e324111005deb76a0466f8c6bDarren Krahn}  // namespace attestation
6630a5bba00647d29e324111005deb76a0466f8c6bDarren Krahn
67745de272a4afde07cd3b3a7c376976bd0a972b36Darren Krahn#endif  // ATTESTATION_COMMON_MOCK_CRYPTO_UTILITY_H_
68