blob: 756bb7261803e2d495fcad77b6a6944ad05950cb [file] [log] [blame]
//
// Copyright (C) 2020 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.
#include "gatekeeper_responder.h"
#include <android-base/logging.h>
#include <gatekeeper/gatekeeper_messages.h>
namespace cuttlefish {
GatekeeperResponder::GatekeeperResponder(
cuttlefish::GatekeeperChannel& channel, gatekeeper::GateKeeper& gatekeeper)
: channel_(channel), gatekeeper_(gatekeeper) {
}
bool GatekeeperResponder::ProcessMessage() {
auto request = channel_.ReceiveMessage();
if (!request) {
LOG(ERROR) << "Could not receive message";
return false;
}
const uint8_t* buffer = request->payload;
const uint8_t* buffer_end = request->payload + request->payload_size;
switch(request->cmd) {
using namespace gatekeeper;
case ENROLL: {
EnrollRequest enroll_request;
auto rc = enroll_request.Deserialize(buffer, buffer_end);
if (rc != ERROR_NONE) {
LOG(ERROR) << "Failed to deserialize Enroll Request";
return false;
}
EnrollResponse response;
gatekeeper_.Enroll(enroll_request, &response);
return channel_.SendResponse(ENROLL, response);
}
case VERIFY: {
VerifyRequest verify_request;
auto rc = verify_request.Deserialize(buffer, buffer_end);
if (rc != ERROR_NONE) {
LOG(ERROR) << "Failed to deserialize Verify Request";
return false;
}
VerifyResponse response;
gatekeeper_.Verify(verify_request, &response);
return channel_.SendResponse(VERIFY, response);
}
default:
LOG(ERROR) << "Unrecognized message id " << request->cmd;
return false;
}
}
} // namespace cuttlefish