1// Copyright 2015 The Android Open Source Project 2// 3// Licensed under the Apache License, Version 2.0 (the "License"); 4// you may not use this file except in compliance with the License. 5// You may obtain a copy of the License at 6// 7// http://www.apache.org/licenses/LICENSE-2.0 8// 9// Unless required by applicable law or agreed to in writing, software 10// distributed under the License is distributed on an "AS IS" BASIS, 11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12// See the License for the specific language governing permissions and 13// limitations under the License. 14 15#ifndef KEYSTORE_KEYSTORE_CLIENT_MOCK_H_ 16#define KEYSTORE_KEYSTORE_CLIENT_MOCK_H_ 17 18#include "gmock/gmock.h" 19#include "keystore/keystore_client.h" 20 21using testing::_; 22 23namespace keystore { 24 25// A mock implementation of KeystoreClient. By default all methods do nothing 26// and return KM_ERROR_OK (or false). 27class KeystoreClientMock : public KeystoreClient { 28 public: 29 KeystoreClientMock() = default; 30 ~KeystoreClientMock() = default; 31 32 MOCK_METHOD3(encryptWithAuthentication, 33 bool(const std::string& key_name, const std::string& data, 34 std::string* encrypted_data)); 35 MOCK_METHOD3(decryptWithAuthentication, 36 bool(const std::string& key_name, const std::string& encrypted_data, 37 std::string* data)); 38 MOCK_METHOD7(oneShotOperation, 39 bool(keymaster_purpose_t purpose, const std::string& key_name, 40 const keymaster::AuthorizationSet& input_parameters, 41 const std::string& input_data, const std::string& signature_to_verify, 42 keymaster::AuthorizationSet* output_parameters, std::string* output_data)); 43 MOCK_METHOD1(addRandomNumberGeneratorEntropy, int32_t(const std::string& entropy)); 44 MOCK_METHOD4(generateKey, 45 int32_t(const std::string& key_name, 46 const keymaster::AuthorizationSet& key_parameters, 47 keymaster::AuthorizationSet* hardware_enforced_characteristics, 48 keymaster::AuthorizationSet* software_enforced_characteristics)); 49 MOCK_METHOD3(getKeyCharacteristics, 50 int32_t(const std::string& key_name, 51 keymaster::AuthorizationSet* hardware_enforced_characteristics, 52 keymaster::AuthorizationSet* software_enforced_characteristics)); 53 MOCK_METHOD6(importKey, 54 int32_t(const std::string& key_name, 55 const keymaster::AuthorizationSet& key_parameters, 56 keymaster_key_format_t key_format, const std::string& key_data, 57 keymaster::AuthorizationSet* hardware_enforced_characteristics, 58 keymaster::AuthorizationSet* software_enforced_characteristics)); 59 MOCK_METHOD3(exportKey, int32_t(keymaster_key_format_t export_format, 60 const std::string& key_name, std::string* export_data)); 61 MOCK_METHOD1(deleteKey, int32_t(const std::string& key_name)); 62 MOCK_METHOD0(deleteAllKeys, int32_t()); 63 MOCK_METHOD5(beginOperation, int32_t(keymaster_purpose_t purpose, const std::string& key_name, 64 const keymaster::AuthorizationSet& input_parameters, 65 keymaster::AuthorizationSet* output_parameters, 66 keymaster_operation_handle_t* handle)); 67 MOCK_METHOD6(updateOperation, 68 int32_t(keymaster_operation_handle_t handle, 69 const keymaster::AuthorizationSet& input_parameters, 70 const std::string& input_data, size_t* num_input_bytes_consumed, 71 keymaster::AuthorizationSet* output_parameters, std::string* output_data)); 72 MOCK_METHOD5(finishOperation, 73 int32_t(keymaster_operation_handle_t handle, 74 const keymaster::AuthorizationSet& input_parameters, 75 const std::string& signature_to_verify, 76 keymaster::AuthorizationSet* output_parameters, std::string* output_data)); 77 MOCK_METHOD1(abortOperation, int32_t(keymaster_operation_handle_t handle)); 78 MOCK_METHOD1(doesKeyExist, bool(const std::string& key_name)); 79 MOCK_METHOD2(listKeys, 80 bool(const std::string& prefix, std::vector<std::string>* key_name_list)); 81 82 private: 83 DISALLOW_COPY_AND_ASSIGN(KeystoreClientMock); 84}; 85 86} // namespace keystore 87 88#endif // KEYSTORE_KEYSTORE_CLIENT_MOCK_H_ 89