/* * Copyright 2019, The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #pragma once #include #include #include #include #include "secure_input_tracker.h" #include "trusty_confirmation_ui.h" #include "trusty_time_stamper.h" class TrustyOperation : public teeui::Operation { public: TrustyOperation() : Operation() {} int handleMsg(void* msg, uint32_t msglen, void* reponse, uint32_t* responselen); /* * teeui::Operation expects the following hooks to be implemented. See * teeui/generic_operation.h for more details. */ teeui::ResponseCode initHook(); void abortHook(); void finalizeHook(); teeui::ResponseCode testCommandHook(teeui::TestModeCommands testCmd); teeui::WriteStream extendedProtocolHook(teeui::Protocol proto, teeui::ReadStream in, teeui::WriteStream out); /* * teeui::Operation expects hmac256() and now() to be implemented. */ static teeui::optional hmac256( const teeui::AuthTokenKey& key, std::initializer_list buffers); using TimeStamp = monotonic_time_stamper::TimeStamp; static TimeStamp now() { return monotonic_time_stamper::now(); } private: TrustyConfirmationUI gui_; InputTracker input_tracker_; };