1 /* 2 * 3 * Copyright 2019, The Android Open Source Project 4 * 5 * Licensed under the Apache License, Version 2.0 (the "License"); 6 * you may not use this file except in compliance with the License. 7 * You may obtain a copy of the License at 8 * 9 * http://www.apache.org/licenses/LICENSE-2.0 10 * 11 * Unless required by applicable law or agreed to in writing, software 12 * distributed under the License is distributed on an "AS IS" BASIS, 13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 * See the License for the specific language governing permissions and 15 * limitations under the License. 16 */ 17 18 #pragma once 19 20 #include <secure_input/evdev.h> 21 #include <secure_input/secure_input_proto.h> 22 #include <stdint.h> 23 #include <teeui/utils.h> 24 25 #include <functional> 26 #include <memory> 27 #include <tuple> 28 29 namespace secure_input { 30 31 class SecureInput { 32 public: 33 using KeyEvent = DTupKeyEvent; 34 35 using HsBeginCb = std::function<std::tuple<teeui::ResponseCode, Nonce>()>; 36 using HsFinalizeCb = std::function<teeui::ResponseCode(const Signature&, const Nonce&)>; 37 using DeliverEventCb = 38 std::function<std::tuple<teeui::ResponseCode, secure_input::InputResponse>( 39 KeyEvent, const Signature&)>; 40 using InputResultCb = std::function<void(teeui::ResponseCode)>; 41 ~SecureInput()42 virtual ~SecureInput() {} 43 44 virtual void handleEvent(const EventDev& evdev) = 0; 45 virtual operator bool() const = 0; 46 virtual void start() = 0; 47 }; 48 49 std::shared_ptr<SecureInput> createSecureInput(SecureInput::HsBeginCb hsBeginCb, 50 SecureInput::HsFinalizeCb hsFinalizeCb, 51 SecureInput::DeliverEventCb deliverEventCb, 52 SecureInput::InputResultCb inputResultCb); 53 54 } // namespace secure_input 55