File access_control_spi.hpp
File List > astutedds > security > access_control_spi.hpp
Go to the documentation of this file
//
// Copyright (c) 2026, Astute Systems PTY LTD
//
// This file is part of the Astute DDS developed by Astute Systems.
//
// See the commercial LICENSE file in the project root for full license details.
//
#pragma once
#include "authentication_spi.hpp"
#include "security_types.hpp"
#include <astutedds/rtps/rtps_types.hpp>
#include <memory>
namespace astutedds::security
{
class AccessControlPlugin
{
public:
virtual ~AccessControlPlugin() = default;
virtual PermissionsHandle validate_local_permissions(const AuthenticationPlugin& auth_plugin,
IdentityHandle local_identity_handle, uint32_t domain_id,
const PropertySeq& participant_qos, SecurityException& ex) = 0;
virtual PermissionsHandle validate_remote_permissions(const AuthenticationPlugin& auth_plugin,
IdentityHandle local_identity_handle,
IdentityHandle remote_identity_handle,
const Token& remote_permissions_token,
const Token& remote_credential_token,
SecurityException& ex) = 0;
virtual bool check_create_datawriter(PermissionsHandle permissions_handle, uint32_t domain_id,
const std::string& topic_name, SecurityException& ex) = 0;
virtual bool check_create_datareader(PermissionsHandle permissions_handle, uint32_t domain_id,
const std::string& topic_name, SecurityException& ex) = 0;
virtual bool check_remote_datareader(PermissionsHandle writer_permissions_handle,
PermissionsHandle reader_permissions_handle,
const PropertySeq& publication_data, const PropertySeq& subscription_data,
SecurityException& ex) = 0;
virtual bool check_remote_datawriter(PermissionsHandle reader_permissions_handle,
PermissionsHandle writer_permissions_handle,
const PropertySeq& subscription_data, const PropertySeq& publication_data,
SecurityException& ex) = 0;
virtual bool check_relay_topic(PermissionsHandle permissions_handle, const std::string& topic_name,
SecurityException& ex) = 0;
virtual Token get_permissions_token(PermissionsHandle permissions_handle, SecurityException& ex) = 0;
virtual Token get_permissions_credential_token(PermissionsHandle permissions_handle, SecurityException& ex) = 0;
virtual bool return_permissions_handle(PermissionsHandle permissions_handle, SecurityException& ex) = 0;
virtual ParticipantSecurityAttributes get_participant_sec_attributes(PermissionsHandle permissions_handle,
SecurityException& ex) = 0;
virtual EndpointSecurityAttributes get_endpoint_sec_attributes(PermissionsHandle permissions_handle,
const std::string& topic_name,
SecurityException& ex) = 0;
};
using AccessControlPluginPtr = std::shared_ptr<AccessControlPlugin>;
} // namespace astutedds::security