| /* |
| * 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 <memory> |
| |
| #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<int, int> GetLocation() { return msg_.GetLocation(); } |
| bool IsSecure() const { return is_secure_; } |
| |
| private: |
| ConfUiUserTouchMessage msg_; |
| bool is_secure_; |
| }; |
| |
| std::unique_ptr<ConfUiSecureUserSelectionMessage> ToSecureSelectionMessage( |
| const ConfUiUserSelectionMessage& msg, const bool secure); |
| std::unique_ptr<ConfUiSecureUserTouchMessage> ToSecureTouchMessage( |
| const ConfUiUserTouchMessage& msg, const bool secure); |
| } // end of namespace confui |
| } // end of namespace cuttlefish |