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 <stdint.h>
20
21#include <optional>
22#include <vector>
23
25
26namespace cuttlefish {
27namespace confui {
28enum class SignMessageError : uint8_t {
29 kOk = 0,
30 kUnknownError = 1,
31};
32
35 std::vector<uint8_t> payload_;
36};
37} // end of namespace confui
38
40 // status and its mask bits
41 using ReceiveError = uint8_t;
42 static const ReceiveError kIoError = 1;
43 static const ReceiveError kLogicError = 2;
44
45 public:
47
48 bool IsIoError() const { return (kIoError & sign_status_) != 0; }
49
50 bool IsLogicError() const { return (kLogicError & sign_status_) != 0; }
51
52 bool IsOk() const { return !IsIoError() && !IsLogicError(); }
53
54 // set the sign_status_ if there was an error
55 // TODO(kwstephenkim@): use android::base::Result. aosp/1940753
57 const std::vector<uint8_t>& payload);
58 std::optional<confui::SignRawMessage> Receive(SharedFD input);
59
60 private:
62};
63
64/*
65 * secure_env will use this in order:
66 *
67 * Receive() // receive request
68 * Send() // send signature
69 */
72
73 public:
75
76 // note that the error is IO error
77 std::optional<confui::SignRawMessage> Receive();
78 bool Send(SignMessageError error, const std::vector<uint8_t>& encoded_hmac);
79
80 bool IsOk() const { return impl_.IsOk(); }
81 bool IsIoError() const { return impl_.IsIoError(); }
82 bool IsLogicError() const { return impl_.IsLogicError(); }
83
84 private:
87};
88
97
98 public:
100 bool Request(const std::vector<uint8_t>& message);
101 std::optional<confui::SignRawMessage> Receive();
102
103 private:
106};
107} // end of namespace cuttlefish
Definition: confui_sign.h:95
SharedFD client_fd_
Definition: confui_sign.h:104
std::optional< confui::SignRawMessage > Receive()
Definition: confui_sign.cpp:109
ConfUiSignRequester(SharedFD fd)
Definition: confui_sign.h:99
ConfUiSignerImpl impl_
Definition: confui_sign.h:105
bool Request(const std::vector< uint8_t > &message)
Definition: confui_sign.cpp:104
Definition: confui_sign.h:70
ConfUiSignSender(SharedFD fd)
Definition: confui_sign.h:74
ConfUiSignerImpl impl_
Definition: confui_sign.h:86
bool IsLogicError() const
Definition: confui_sign.h:82
SharedFD server_fd_
Definition: confui_sign.h:85
bool Send(SignMessageError error, const std::vector< uint8_t > &encoded_hmac)
Definition: confui_sign.cpp:95
confui::SignMessageError SignMessageError
Definition: confui_sign.h:71
bool IsOk() const
Definition: confui_sign.h:80
bool IsIoError() const
Definition: confui_sign.h:81
std::optional< confui::SignRawMessage > Receive()
Definition: confui_sign.cpp:91
Definition: confui_sign.h:39
ConfUiSignerImpl()
Definition: confui_sign.h:46
std::optional< confui::SignRawMessage > Receive(SharedFD input)
Definition: confui_sign.cpp:58
bool IsLogicError() const
Definition: confui_sign.h:50
bool IsOk() const
Definition: confui_sign.h:52
bool Send(SharedFD output, confui::SignMessageError error, const std::vector< uint8_t > &payload)
Definition: confui_sign.cpp:28
ReceiveError sign_status_
Definition: confui_sign.h:61
bool IsIoError() const
Definition: confui_sign.h:48
static const ReceiveError kLogicError
Definition: confui_sign.h:43
static const ReceiveError kIoError
Definition: confui_sign.h:42
uint8_t ReceiveError
Definition: confui_sign.h:41
Definition: shared_fd.h:124
#define error(format, args...)
Definition: fec_private.h:201
SignMessageError
Definition: confui_sign.h:28
Definition: alloc_driver.h:20
uint32_t payload
Definition: pairing_connection.cpp:2
Definition: confui_sign.h:33
SignMessageError error_
Definition: confui_sign.h:34
std::vector< uint8_t > payload_
Definition: confui_sign.h:35