blob: 99fff024dfeebef226441c492a1af5c5a3c4d87a [file] [log] [blame]
Janis Danisevskis3a1eb672019-03-29 11:14:31 -07001/*
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#ifndef GATEKEEPERD_INCLUDE_GATEKEEPER_GATEKEEPERRESPONSE_H_
19#define GATEKEEPERD_INCLUDE_GATEKEEPER_GATEKEEPERRESPONSE_H_
20
21#include <binder/Parcelable.h>
22
23namespace android {
24namespace service {
25namespace gatekeeper {
26
27enum class ResponseCode : int32_t {
28 ERROR = -1,
29 OK = 0,
30 RETRY = 1,
31};
32
33class GateKeeperResponse : public ::android::Parcelable {
34 GateKeeperResponse(ResponseCode response_code, int32_t timeout = 0,
35 std::vector<uint8_t> payload = {}, bool should_reenroll = false)
36 : response_code_(response_code),
37 timeout_(timeout),
38 payload_(std::move(payload)),
39 should_reenroll_(should_reenroll) {}
40
41 public:
42 GateKeeperResponse() = default;
43 GateKeeperResponse(GateKeeperResponse&&) = default;
44 GateKeeperResponse(const GateKeeperResponse&) = default;
45 GateKeeperResponse& operator=(GateKeeperResponse&&) = default;
46
47 static GateKeeperResponse error() { return GateKeeperResponse(ResponseCode::ERROR); }
48 static GateKeeperResponse retry(int32_t timeout) {
49 return GateKeeperResponse(ResponseCode::RETRY, timeout);
50 }
51 static GateKeeperResponse ok(std::vector<uint8_t> payload, bool reenroll = false) {
52 return GateKeeperResponse(ResponseCode::OK, 0, std::move(payload), reenroll);
53 }
54
55 status_t readFromParcel(const Parcel* in) override;
56 status_t writeToParcel(Parcel* out) const override;
57
58 const std::vector<uint8_t>& payload() const { return payload_; }
59
60 void payload(std::vector<uint8_t> payload) { payload_ = payload; }
61
62 ResponseCode response_code() const { return response_code_; }
63
64 void response_code(ResponseCode response_code) { response_code_ = response_code; }
65
66 bool should_reenroll() const { return should_reenroll_; }
67
68 void should_reenroll(bool should_reenroll) { should_reenroll_ = should_reenroll; }
69
70 int32_t timeout() const { return timeout_; }
71
72 void timeout(int32_t timeout) { timeout_ = timeout; }
73
74 private:
75 ResponseCode response_code_;
76 int32_t timeout_;
77 std::vector<uint8_t> payload_;
78 bool should_reenroll_;
79};
80
81} // namespace gatekeeper
82} // namespace service
83} // namespace android
84
85#endif // GATEKEEPERD_INCLUDE_GATEKEEPER_GATEKEEPERRESPONSE_H_