Android-cuttlefish cvd tool
confui_sign.h
Go to the documentation of this file.
1/*
2 * Copyright 2022 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17#pragma once
18
19#include <optional>
20#include <vector>
21
23
24namespace cuttlefish {
25namespace confui {
26enum class SignMessageError : std::uint8_t {
27 kOk = 0,
28 kUnknownError = 1,
29};
30
33 std::vector<std::uint8_t> payload_;
34};
35} // end of namespace confui
36
38 // status and its mask bits
39 using ReceiveError = std::uint8_t;
40 static const ReceiveError kIoError = 1;
41 static const ReceiveError kLogicError = 2;
42
43 public:
45
46 bool IsIoError() const { return (kIoError & sign_status_) != 0; }
47
48 bool IsLogicError() const { return (kLogicError & sign_status_) != 0; }
49
50 bool IsOk() const { return !IsIoError() && !IsLogicError(); }
51
52 // set the sign_status_ if there was an error
53 // TODO(kwstephenkim@): use android::base::Result. aosp/1940753
55 const std::vector<std::uint8_t>& payload);
56 std::optional<confui::SignRawMessage> Receive(SharedFD input);
57
58 private:
60};
61
62/*
63 * secure_env will use this in order:
64 *
65 * Receive() // receive request
66 * Send() // send signature
67 */
70
71 public:
73
74 // note that the error is IO error
75 std::optional<confui::SignRawMessage> Receive();
76 bool Send(const SignMessageError error,
77 const std::vector<std::uint8_t>& encoded_hmac);
78
79 bool IsOk() const { return impl_.IsOk(); }
80 bool IsIoError() const { return impl_.IsIoError(); }
81 bool IsLogicError() const { return impl_.IsLogicError(); }
82
83 private:
86};
87
96
97 public:
99 bool Request(const std::vector<std::uint8_t>& message);
100 std::optional<confui::SignRawMessage> Receive();
101
102 private:
105};
106} // end of namespace cuttlefish
Definition: confui_sign.h:94
bool Request(const std::vector< std::uint8_t > &message)
Definition: confui_sign.cpp:104
SharedFD client_fd_
Definition: confui_sign.h:103
std::optional< confui::SignRawMessage > Receive()
Definition: confui_sign.cpp:109
ConfUiSignRequester(SharedFD fd)
Definition: confui_sign.h:98
ConfUiSignerImpl impl_
Definition: confui_sign.h:104
Definition: confui_sign.h:68
bool Send(const SignMessageError error, const std::vector< std::uint8_t > &encoded_hmac)
Definition: confui_sign.cpp:95
ConfUiSignSender(SharedFD fd)
Definition: confui_sign.h:72
ConfUiSignerImpl impl_
Definition: confui_sign.h:85
bool IsLogicError() const
Definition: confui_sign.h:81
SharedFD server_fd_
Definition: confui_sign.h:84
confui::SignMessageError SignMessageError
Definition: confui_sign.h:69
bool IsOk() const
Definition: confui_sign.h:79
bool IsIoError() const
Definition: confui_sign.h:80
std::optional< confui::SignRawMessage > Receive()
Definition: confui_sign.cpp:91
Definition: confui_sign.h:37
ConfUiSignerImpl()
Definition: confui_sign.h:44
std::optional< confui::SignRawMessage > Receive(SharedFD input)
Definition: confui_sign.cpp:58
std::uint8_t ReceiveError
Definition: confui_sign.h:39
bool IsLogicError() const
Definition: confui_sign.h:48
bool IsOk() const
Definition: confui_sign.h:50
ReceiveError sign_status_
Definition: confui_sign.h:59
bool IsIoError() const
Definition: confui_sign.h:46
static const ReceiveError kLogicError
Definition: confui_sign.h:41
bool Send(SharedFD output, const confui::SignMessageError error, const std::vector< std::uint8_t > &payload)
Definition: confui_sign.cpp:28
static const ReceiveError kIoError
Definition: confui_sign.h:40
Definition: shared_fd.h:129
#define error(format, args...)
Definition: fec_private.h:201
SignMessageError
Definition: confui_sign.h:26
Definition: alloc_utils.cpp:23
uint32_t payload
Definition: pairing_connection.cpp:2
Definition: confui_sign.h:31
std::vector< std::uint8_t > payload_
Definition: confui_sign.h:33
SignMessageError error_
Definition: confui_sign.h:32