169a3dbc2bbbe0b304eb91376ff7f79c8bde995a1Darren Krahn// Copyright 2015 The Android Open Source Project 269a3dbc2bbbe0b304eb91376ff7f79c8bde995a1Darren Krahn// 369a3dbc2bbbe0b304eb91376ff7f79c8bde995a1Darren Krahn// Licensed under the Apache License, Version 2.0 (the "License"); 469a3dbc2bbbe0b304eb91376ff7f79c8bde995a1Darren Krahn// you may not use this file except in compliance with the License. 569a3dbc2bbbe0b304eb91376ff7f79c8bde995a1Darren Krahn// You may obtain a copy of the License at 669a3dbc2bbbe0b304eb91376ff7f79c8bde995a1Darren Krahn// 769a3dbc2bbbe0b304eb91376ff7f79c8bde995a1Darren Krahn// http://www.apache.org/licenses/LICENSE-2.0 869a3dbc2bbbe0b304eb91376ff7f79c8bde995a1Darren Krahn// 969a3dbc2bbbe0b304eb91376ff7f79c8bde995a1Darren Krahn// Unless required by applicable law or agreed to in writing, software 1069a3dbc2bbbe0b304eb91376ff7f79c8bde995a1Darren Krahn// distributed under the License is distributed on an "AS IS" BASIS, 1169a3dbc2bbbe0b304eb91376ff7f79c8bde995a1Darren Krahn// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1269a3dbc2bbbe0b304eb91376ff7f79c8bde995a1Darren Krahn// See the License for the specific language governing permissions and 1369a3dbc2bbbe0b304eb91376ff7f79c8bde995a1Darren Krahn// limitations under the License. 1469a3dbc2bbbe0b304eb91376ff7f79c8bde995a1Darren Krahn 1569a3dbc2bbbe0b304eb91376ff7f79c8bde995a1Darren Krahn#ifndef KEYSTORE_KEYSTORE_CLIENT_MOCK_H_ 1669a3dbc2bbbe0b304eb91376ff7f79c8bde995a1Darren Krahn#define KEYSTORE_KEYSTORE_CLIENT_MOCK_H_ 1769a3dbc2bbbe0b304eb91376ff7f79c8bde995a1Darren Krahn 1869a3dbc2bbbe0b304eb91376ff7f79c8bde995a1Darren Krahn#include "gmock/gmock.h" 1969a3dbc2bbbe0b304eb91376ff7f79c8bde995a1Darren Krahn#include "keystore/keystore_client.h" 2069a3dbc2bbbe0b304eb91376ff7f79c8bde995a1Darren Krahn 2169a3dbc2bbbe0b304eb91376ff7f79c8bde995a1Darren Krahnusing testing::_; 2269a3dbc2bbbe0b304eb91376ff7f79c8bde995a1Darren Krahn 2369a3dbc2bbbe0b304eb91376ff7f79c8bde995a1Darren Krahnnamespace keystore { 2469a3dbc2bbbe0b304eb91376ff7f79c8bde995a1Darren Krahn 2569a3dbc2bbbe0b304eb91376ff7f79c8bde995a1Darren Krahn// A mock implementation of KeystoreClient. By default all methods do nothing 2669a3dbc2bbbe0b304eb91376ff7f79c8bde995a1Darren Krahn// and return KM_ERROR_OK (or false). 2769a3dbc2bbbe0b304eb91376ff7f79c8bde995a1Darren Krahnclass KeystoreClientMock : public KeystoreClient { 2869a3dbc2bbbe0b304eb91376ff7f79c8bde995a1Darren Krahn public: 2969a3dbc2bbbe0b304eb91376ff7f79c8bde995a1Darren Krahn KeystoreClientMock() = default; 3069a3dbc2bbbe0b304eb91376ff7f79c8bde995a1Darren Krahn ~KeystoreClientMock() = default; 3169a3dbc2bbbe0b304eb91376ff7f79c8bde995a1Darren Krahn 32251cb28132e456f81374c8f8a983a5a9ad9aaee8Darren Krahn MOCK_METHOD3(encryptWithAuthentication, 33251cb28132e456f81374c8f8a983a5a9ad9aaee8Darren Krahn bool(const std::string& key_name, const std::string& data, 34251cb28132e456f81374c8f8a983a5a9ad9aaee8Darren Krahn std::string* encrypted_data)); 35251cb28132e456f81374c8f8a983a5a9ad9aaee8Darren Krahn MOCK_METHOD3(decryptWithAuthentication, 36251cb28132e456f81374c8f8a983a5a9ad9aaee8Darren Krahn bool(const std::string& key_name, const std::string& encrypted_data, 37251cb28132e456f81374c8f8a983a5a9ad9aaee8Darren Krahn std::string* data)); 38251cb28132e456f81374c8f8a983a5a9ad9aaee8Darren Krahn MOCK_METHOD7(oneShotOperation, 39251cb28132e456f81374c8f8a983a5a9ad9aaee8Darren Krahn bool(keymaster_purpose_t purpose, const std::string& key_name, 40251cb28132e456f81374c8f8a983a5a9ad9aaee8Darren Krahn const keymaster::AuthorizationSet& input_parameters, 41251cb28132e456f81374c8f8a983a5a9ad9aaee8Darren Krahn const std::string& input_data, const std::string& signature_to_verify, 42251cb28132e456f81374c8f8a983a5a9ad9aaee8Darren Krahn keymaster::AuthorizationSet* output_parameters, std::string* output_data)); 4369a3dbc2bbbe0b304eb91376ff7f79c8bde995a1Darren Krahn MOCK_METHOD1(addRandomNumberGeneratorEntropy, int32_t(const std::string& entropy)); 4469a3dbc2bbbe0b304eb91376ff7f79c8bde995a1Darren Krahn MOCK_METHOD4(generateKey, 4569a3dbc2bbbe0b304eb91376ff7f79c8bde995a1Darren Krahn int32_t(const std::string& key_name, 4669a3dbc2bbbe0b304eb91376ff7f79c8bde995a1Darren Krahn const keymaster::AuthorizationSet& key_parameters, 4769a3dbc2bbbe0b304eb91376ff7f79c8bde995a1Darren Krahn keymaster::AuthorizationSet* hardware_enforced_characteristics, 4869a3dbc2bbbe0b304eb91376ff7f79c8bde995a1Darren Krahn keymaster::AuthorizationSet* software_enforced_characteristics)); 4969a3dbc2bbbe0b304eb91376ff7f79c8bde995a1Darren Krahn MOCK_METHOD3(getKeyCharacteristics, 5069a3dbc2bbbe0b304eb91376ff7f79c8bde995a1Darren Krahn int32_t(const std::string& key_name, 5169a3dbc2bbbe0b304eb91376ff7f79c8bde995a1Darren Krahn keymaster::AuthorizationSet* hardware_enforced_characteristics, 5269a3dbc2bbbe0b304eb91376ff7f79c8bde995a1Darren Krahn keymaster::AuthorizationSet* software_enforced_characteristics)); 5369a3dbc2bbbe0b304eb91376ff7f79c8bde995a1Darren Krahn MOCK_METHOD6(importKey, 5469a3dbc2bbbe0b304eb91376ff7f79c8bde995a1Darren Krahn int32_t(const std::string& key_name, 5569a3dbc2bbbe0b304eb91376ff7f79c8bde995a1Darren Krahn const keymaster::AuthorizationSet& key_parameters, 5669a3dbc2bbbe0b304eb91376ff7f79c8bde995a1Darren Krahn keymaster_key_format_t key_format, const std::string& key_data, 5769a3dbc2bbbe0b304eb91376ff7f79c8bde995a1Darren Krahn keymaster::AuthorizationSet* hardware_enforced_characteristics, 5869a3dbc2bbbe0b304eb91376ff7f79c8bde995a1Darren Krahn keymaster::AuthorizationSet* software_enforced_characteristics)); 5969a3dbc2bbbe0b304eb91376ff7f79c8bde995a1Darren Krahn MOCK_METHOD3(exportKey, int32_t(keymaster_key_format_t export_format, 6069a3dbc2bbbe0b304eb91376ff7f79c8bde995a1Darren Krahn const std::string& key_name, std::string* export_data)); 6169a3dbc2bbbe0b304eb91376ff7f79c8bde995a1Darren Krahn MOCK_METHOD1(deleteKey, int32_t(const std::string& key_name)); 6269a3dbc2bbbe0b304eb91376ff7f79c8bde995a1Darren Krahn MOCK_METHOD0(deleteAllKeys, int32_t()); 6369a3dbc2bbbe0b304eb91376ff7f79c8bde995a1Darren Krahn MOCK_METHOD5(beginOperation, int32_t(keymaster_purpose_t purpose, const std::string& key_name, 6469a3dbc2bbbe0b304eb91376ff7f79c8bde995a1Darren Krahn const keymaster::AuthorizationSet& input_parameters, 6569a3dbc2bbbe0b304eb91376ff7f79c8bde995a1Darren Krahn keymaster::AuthorizationSet* output_parameters, 6669a3dbc2bbbe0b304eb91376ff7f79c8bde995a1Darren Krahn keymaster_operation_handle_t* handle)); 6769a3dbc2bbbe0b304eb91376ff7f79c8bde995a1Darren Krahn MOCK_METHOD6(updateOperation, 6869a3dbc2bbbe0b304eb91376ff7f79c8bde995a1Darren Krahn int32_t(keymaster_operation_handle_t handle, 6969a3dbc2bbbe0b304eb91376ff7f79c8bde995a1Darren Krahn const keymaster::AuthorizationSet& input_parameters, 7069a3dbc2bbbe0b304eb91376ff7f79c8bde995a1Darren Krahn const std::string& input_data, size_t* num_input_bytes_consumed, 7169a3dbc2bbbe0b304eb91376ff7f79c8bde995a1Darren Krahn keymaster::AuthorizationSet* output_parameters, std::string* output_data)); 7269a3dbc2bbbe0b304eb91376ff7f79c8bde995a1Darren Krahn MOCK_METHOD5(finishOperation, 7369a3dbc2bbbe0b304eb91376ff7f79c8bde995a1Darren Krahn int32_t(keymaster_operation_handle_t handle, 7469a3dbc2bbbe0b304eb91376ff7f79c8bde995a1Darren Krahn const keymaster::AuthorizationSet& input_parameters, 7569a3dbc2bbbe0b304eb91376ff7f79c8bde995a1Darren Krahn const std::string& signature_to_verify, 7669a3dbc2bbbe0b304eb91376ff7f79c8bde995a1Darren Krahn keymaster::AuthorizationSet* output_parameters, std::string* output_data)); 7769a3dbc2bbbe0b304eb91376ff7f79c8bde995a1Darren Krahn MOCK_METHOD1(abortOperation, int32_t(keymaster_operation_handle_t handle)); 7869a3dbc2bbbe0b304eb91376ff7f79c8bde995a1Darren Krahn MOCK_METHOD1(doesKeyExist, bool(const std::string& key_name)); 7969a3dbc2bbbe0b304eb91376ff7f79c8bde995a1Darren Krahn MOCK_METHOD2(listKeys, 8069a3dbc2bbbe0b304eb91376ff7f79c8bde995a1Darren Krahn bool(const std::string& prefix, std::vector<std::string>* key_name_list)); 8169a3dbc2bbbe0b304eb91376ff7f79c8bde995a1Darren Krahn 8269a3dbc2bbbe0b304eb91376ff7f79c8bde995a1Darren Krahn private: 8369a3dbc2bbbe0b304eb91376ff7f79c8bde995a1Darren Krahn DISALLOW_COPY_AND_ASSIGN(KeystoreClientMock); 8469a3dbc2bbbe0b304eb91376ff7f79c8bde995a1Darren Krahn}; 8569a3dbc2bbbe0b304eb91376ff7f79c8bde995a1Darren Krahn 8669a3dbc2bbbe0b304eb91376ff7f79c8bde995a1Darren Krahn} // namespace keystore 8769a3dbc2bbbe0b304eb91376ff7f79c8bde995a1Darren Krahn 8869a3dbc2bbbe0b304eb91376ff7f79c8bde995a1Darren Krahn#endif // KEYSTORE_KEYSTORE_CLIENT_MOCK_H_ 89