112 lines
3.9 KiB
C++
112 lines
3.9 KiB
C++
//
|
|
// Copyright (C) 2014 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.
|
|
//
|
|
|
|
#ifndef ATTESTATION_SERVER_DBUS_SERVICE_H_
|
|
#define ATTESTATION_SERVER_DBUS_SERVICE_H_
|
|
|
|
#include <memory>
|
|
|
|
#include <brillo/dbus/dbus_method_response.h>
|
|
#include <brillo/dbus/dbus_object.h>
|
|
#include <dbus/bus.h>
|
|
|
|
#include "attestation/common/attestation_interface.h"
|
|
|
|
namespace attestation {
|
|
|
|
using CompletionAction =
|
|
brillo::dbus_utils::AsyncEventSequencer::CompletionAction;
|
|
|
|
// Handles D-Bus calls to the attestation daemon.
|
|
class DBusService {
|
|
public:
|
|
// DBusService does not take ownership of |service|; it must remain valid for
|
|
// the lifetime of the DBusService instance.
|
|
DBusService(const scoped_refptr<dbus::Bus>& bus,
|
|
AttestationInterface* service);
|
|
virtual ~DBusService() = default;
|
|
|
|
// Connects to D-Bus system bus and exports methods.
|
|
void Register(const CompletionAction& callback);
|
|
|
|
// Useful for testing.
|
|
void set_service(AttestationInterface* service) { service_ = service; }
|
|
|
|
private:
|
|
friend class DBusServiceTest;
|
|
|
|
// Handles a CreateGoogleAttestedKey D-Bus call.
|
|
void HandleCreateGoogleAttestedKey(
|
|
std::unique_ptr<brillo::dbus_utils::DBusMethodResponse<
|
|
const CreateGoogleAttestedKeyReply&>> response,
|
|
const CreateGoogleAttestedKeyRequest& request);
|
|
|
|
// Handles a GetKeyInfo D-Bus call.
|
|
void HandleGetKeyInfo(std::unique_ptr<brillo::dbus_utils::DBusMethodResponse<
|
|
const GetKeyInfoReply&>> response,
|
|
const GetKeyInfoRequest& request);
|
|
|
|
// Handles a GetEndorsementInfo D-Bus call.
|
|
void HandleGetEndorsementInfo(
|
|
std::unique_ptr<brillo::dbus_utils::DBusMethodResponse<
|
|
const GetEndorsementInfoReply&>> response,
|
|
const GetEndorsementInfoRequest& request);
|
|
|
|
// Handles a GetAttestationKeyInfo D-Bus call.
|
|
void HandleGetAttestationKeyInfo(
|
|
std::unique_ptr<brillo::dbus_utils::DBusMethodResponse<
|
|
const GetAttestationKeyInfoReply&>> response,
|
|
const GetAttestationKeyInfoRequest& request);
|
|
|
|
// Handles a ActivateAttestationKey D-Bus call.
|
|
void HandleActivateAttestationKey(
|
|
std::unique_ptr<brillo::dbus_utils::DBusMethodResponse<
|
|
const ActivateAttestationKeyReply&>> response,
|
|
const ActivateAttestationKeyRequest& request);
|
|
|
|
// Handles a CreateCertifiableKey D-Bus call.
|
|
void HandleCreateCertifiableKey(
|
|
std::unique_ptr<brillo::dbus_utils::DBusMethodResponse<
|
|
const CreateCertifiableKeyReply&>> response,
|
|
const CreateCertifiableKeyRequest& request);
|
|
|
|
// Handles a Decrypt D-Bus call.
|
|
void HandleDecrypt(
|
|
std::unique_ptr<
|
|
brillo::dbus_utils::DBusMethodResponse<const DecryptReply&>> response,
|
|
const DecryptRequest& request);
|
|
|
|
// Handles a Sign D-Bus call.
|
|
void HandleSign(
|
|
std::unique_ptr<brillo::dbus_utils::DBusMethodResponse<const SignReply&>>
|
|
response,
|
|
const SignRequest& request);
|
|
|
|
// Handles a RegisterKeyWithChapsToken D-Bus call.
|
|
void HandleRegisterKeyWithChapsToken(
|
|
std::unique_ptr<brillo::dbus_utils::DBusMethodResponse<
|
|
const RegisterKeyWithChapsTokenReply&>> response,
|
|
const RegisterKeyWithChapsTokenRequest& request);
|
|
|
|
brillo::dbus_utils::DBusObject dbus_object_;
|
|
AttestationInterface* service_;
|
|
|
|
DISALLOW_COPY_AND_ASSIGN(DBusService);
|
|
};
|
|
|
|
} // namespace attestation
|
|
|
|
#endif // ATTESTATION_SERVER_DBUS_SERVICE_H_
|