/* * Copyright (C) 2022 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 "common/libs/confui/confui.h" /** ConfUiUserSelectionMessage with a security flag * * Inputs generated by something that belong to (virtualized) TEE is regarded * as secure. Otherwise (e.g. inputs generated by the guest calling * deliverSecureInputEvent), it is regarded as insecure. * * The host marks the security field, and use it internally and exclusively. * */ namespace cuttlefish { namespace confui { class ConfUiSecureUserSelectionMessage : public ConfUiMessage { public: ConfUiSecureUserSelectionMessage(const ConfUiUserSelectionMessage& msg, const bool secure) : ConfUiMessage(msg.GetSessionId()), msg_(msg), is_secure_(secure) {} ConfUiSecureUserSelectionMessage() = delete; virtual ~ConfUiSecureUserSelectionMessage() = default; std::string ToString() const override { return msg_.ToString(); } ConfUiCmd GetType() const override { return msg_.GetType(); } auto GetResponse() const { return msg_.GetResponse(); } // SendOver is between guest and host, so it doesn't send the is_secure_ bool SendOver(SharedFD fd) override { return msg_.SendOver(fd); } bool IsSecure() const { return is_secure_; } // SetSecure() might be needed later on but not now. private: ConfUiUserSelectionMessage msg_; bool is_secure_; }; class ConfUiSecureUserTouchMessage : public ConfUiMessage { public: ConfUiSecureUserTouchMessage(const ConfUiUserTouchMessage& msg, const bool secure) : ConfUiMessage(msg.GetSessionId()), msg_(msg), is_secure_(secure) {} virtual ~ConfUiSecureUserTouchMessage() = default; std::string ToString() const override { return msg_.ToString(); } ConfUiCmd GetType() const override { return msg_.GetType(); } auto GetResponse() const { return msg_.GetResponse(); } bool SendOver(SharedFD fd) override { return msg_.SendOver(fd); } std::pair GetLocation() { return msg_.GetLocation(); } bool IsSecure() const { return is_secure_; } private: ConfUiUserTouchMessage msg_; bool is_secure_; }; std::unique_ptr ToSecureSelectionMessage( const ConfUiUserSelectionMessage& msg, const bool secure); std::unique_ptr ToSecureTouchMessage( const ConfUiUserTouchMessage& msg, const bool secure); } // end of namespace confui } // end of namespace cuttlefish