Files
qt6-migration-pipeline/external/rti_connext_dds-7.7.0/include/ndds/security/security_default.h
T
torstenandCopilot 342ffd3e5c Update submodule to latest BUILD_RTI fixes
- HandlerMinelayerData: BUILD_RTI Guards für RTI-Abhängigkeiten
- svcTabCommon: Export-Header-Fix via Fallback-Target
- TrainingAreaBase: Stub-Header für BUILD_RTI=OFF
- ddsfts: Include-Pfad und Dependency-Fixes
- BUILD_RTI=OFF Compilation vollständig unterstützt

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Entire-Checkpoint: 01M0JNZA586SACX1PRZ2DJAE5S
2026-08-21 19:30:20 +02:00

264 lines
10 KiB
C

/**
* (c) Copyright, Real-Time Innovations, 2011-2016.
* All rights reserved.
* No duplications, whole or partial, manual or electronic, may be made
* without express written permission. Any such copies, or
* revisions thereof, must display this notice unaltered.
* This code contains trade secrets of Real-Time Innovations, Inc.
*
* Description
* -----------
* Default create functions for security plugins
* =====================================================================
*/
#ifndef security_default_h
#define security_default_h
#include "security/security_infrastructure.h"
#include "security/security_cryptography.h"
typedef DDS_TopicTrustAttributes DDS_TopicSecurityAttributes;
#define DDS_TOPIC_SECURITY_ATTRIBUTES_DEFAULT \
DDS_TOPIC_TRUST_ATTRIBUTES_DEFAULT
typedef DDS_PublicationBuiltinTopicDataTrust DDS_PublicationBuiltinTopicDataSecure;
typedef DDS_SubscriptionBuiltinTopicDataTrust DDS_SubscriptionBuiltinTopicDataSecure;
#define RTI_SECURITY_BUILTIN_PLUGIN_PROPERTY_NAME \
RTI_TRUST_PLUGIN_PROPERTY_PREFIX "secure"
#define RTI_SECURITY_OPENSSL_ENGINE_PROPERTY "openssl_engine"
#define DDS_SECURITY_FILE_PREFIX "file:"
#define RTI_SECURITY_FILE_PREFIX_LEN (5)
/*
* The comma is for furthering compliance with RFC 2397. We don't support
* putting content between the colon and the comma, but we at least need the
* comma to be consistent with the example URIs in the DDS Security
* specification.
*/
#define DDS_SECURITY_DATA_PREFIX "data:,"
#define RTI_SECURITY_DATA_PREFIX_LEN (6)
#define RTI_SECURITY_BUILTIN_PLUGIN_GMCLASSID_PREFIX \
DDS_GMCLASSID_TRUST_RTI_PLUGIN_PREFIX
#define RTI_SECURITY_EXCEPTION_CODE_OK 0
#define RTI_SECURITY_EXCEPTION_CODE_CA_READ_FAIL 1
#define RTI_SECURITY_EXCEPTION_CODE_CERT_READ_FAIL 2
#define RTI_SECURITY_EXCEPTION_CODE_PRIVATE_KEY_READ_FAIL 3
#define RTI_SECURITY_EXCEPTION_CODE_MISSING_KEY 4
#define RTI_SECURITY_EXCEPTION_CODE_INVALID_CIPHER 5
#define RTI_SECURITY_EXCEPTION_CODE_CERTIFICATE_DECODE_FAIL 6
#define RTI_SECURITY_EXCEPTION_CODE_CERTIFICATE_VERIFY_FAIL 7
#define RTI_SECURITY_EXCEPTION_CODE_PRIVATE_SIGN_FAIL 8
#define RTI_SECURITY_EXCEPTION_CODE_CHALLENGE_VERIFY_FAIL 9
#define RTI_SECURITY_EXCEPTION_CODE_PUBLIC_ENCRYPT_FAIL 10
#define RTI_SECURITY_EXCEPTION_CODE_PRIVATE_DECRYPT_FAIL 11
#define RTI_SECURITY_EXCEPTION_CODE_KEY_GENERATION_FAIL 12
#define RTI_SECURITY_EXCEPTION_CODE_INSUFFICIENT_MEMORY 13
#define RTI_SECURITY_EXCEPTION_CODE_RNG_FAIL 14
#define RTI_SECURITY_EXCEPTION_CODE_KEY_IMPORT_FAIL 15
#define RTI_SECURITY_EXCEPTION_CODE_UPDATE_FAIL 16
#define RTI_SECURITY_EXCEPTION_CODE_IV_FAIL 17
#define RTI_SECURITY_EXCEPTION_CODE_FINAL_FAIL 18
#define RTI_SECURITY_EXCEPTION_CODE_RECEIVER_SPECIFIC_MAC_FAIL 19
#define RTI_SECURITY_EXCEPTION_CODE_GENERATE_OCSP_REQUEST_FAIL 20
#define RTI_SECURITY_EXCEPTION_CODE_HTTP_QUERY_FAIL 21
#define RTI_SECURITY_EXCEPTION_CODE_NOT_SUPPORTED 22
#define RTI_SECURITY_EXCEPTION_CODE_PENDING_AUTHENTICATION \
DDS_TRUST_EXCEPTION_CODE_PENDING_AUTHENTICATION
#define RTI_SECURITY_EXCEPTION_CODE_INCONSISTENT_PROPERTIES \
DDS_TRUST_EXCEPTION_CODE_INCONSISTENT_PROPERTIES
/* ------------------------------------------------------------------------- */
/* ---- Cryptographic Algorithms ------------------------------------------- */
/* ------------------------------------------------------------------------- */
typedef DDS_TrustAlgorithmBit DDS_CryptoAlgorithmBit;
typedef DDS_TrustAlgorithmSet DDS_CryptoAlgorithmSet;
#define DDS_CRYPTO_ALGORITHM_BIT_COMPATIBILITY_MODE \
DDS_TRUST_ALGORITHM_BIT_COMPATIBILITY_MODE
#define DDS_CryptoAlgorithmSet_isCompatible( \
supportedMask__, \
requiredMask__) \
( \
(((requiredMask__) & (supportedMask__)) == (requiredMask__)) \
|| ((((requiredMask__) & (supportedMask__)) != 0 ) \
&& (((requiredMask__) & DDS_CRYPTO_ALGORITHM_BIT_COMPATIBILITY_MODE) != 0)) \
)
/*
* The types here must have the same memory mapping as their DDS counterparts.
*
* DDS_CryptoAlgorithmRequirements: DDS_TrustAlgorithmRequirements.
* DDS_ParticipantSecurityAlgorithmInfo: DDS_ParticipantTrustAlgorithmInfo.
* DDS_ParticipantSecurityDigitalSignatureAlgorithmInfo:
* DDS_ParticipantTrustSignatureAlgorithmInfo
* DDS_ParticipantSecurityKeyEstablishmentAlgorithmInfo:
* DDS_ParticipantTrustKeyEstablishmentAlgorithmInfo
* DDS_ParticipantSecuritySymmetricCipherAlgorithmInfo:
* DDS_ParticipantTrustInterceptorAlgorithmInfo
* DDS_ParticipantSecurityVendorProtectionInfo:
* DDS_ParticipantTrustVendorProtectionInfo
*/
typedef struct {
DDS_CryptoAlgorithmSet supported_mask;
DDS_CryptoAlgorithmSet required_mask;
} DDS_CryptoAlgorithmRequirements;
typedef struct {
DDS_CryptoAlgorithmRequirements trust_chain;
DDS_CryptoAlgorithmRequirements message_auth;
} DDS_ParticipantSecurityDigitalSignatureAlgorithmInfo;
typedef struct {
DDS_CryptoAlgorithmRequirements shared_secret;
} DDS_ParticipantSecurityKeyEstablishmentAlgorithmInfo;
typedef struct {
DDS_CryptoAlgorithmSet supported_mask;
DDS_CryptoAlgorithmSet builtin_endpoints_required_mask;
DDS_CryptoAlgorithmSet builtin_kx_endpoints_required_mask;
DDS_CryptoAlgorithmSet user_endpoints_default_required_mask;
} DDS_ParticipantSecuritySymmetricCipherAlgorithmInfo;
typedef struct {
DDS_ParticipantSecurityDigitalSignatureAlgorithmInfo digital_signature;
DDS_ParticipantSecurityKeyEstablishmentAlgorithmInfo key_establishment;
DDS_ParticipantSecuritySymmetricCipherAlgorithmInfo symmetric_cipher;
} DDS_ParticipantSecurityAlgorithmInfo;
/* ------------------------------------------------------------------------- */
typedef DDS_PluginParticipantTrustAttributesMask
DDS_PluginParticipantSecurityAttributesMask;
typedef DDS_PluginEndpointTrustAttributesMask
DDS_PluginEndpointSecurityAttributesMask;
typedef DDS_ParticipantTrustVendorProtectionInfoMask
DDS_ParticipantSecurityVendorProtectionInfoMask;
typedef struct {
/*
* The bitmask represents the RTI-vendor-specific participant protection
* configuration. Regardless of whether a field is set explicitly by the
* user, of its protection kind is inherited from a different field, this
* bitmask always corresponds to the actual configuration in use.
*/
DDS_ParticipantSecurityVendorProtectionInfoMask bitmask;
/*
* The above bitmask corresponds to the actual configuration of the
* user. This bitmask contains the bits that do not match their
* corresponding derived value from other fields (for example,
* IS_SERVICE_REQUEST_PROTECTED is derived from IS_DISCOVERY_PROTECTED).
* This is not sent on the wire.
*/
DDS_ParticipantSecurityVendorProtectionInfoMask non_derived_bitmask; /* @non-serialized */
} DDS_ParticipantSecurityVendorProtectionInfo;
typedef DDS_VendorEndpointTrustAttributesMask
DDS_VendorEndpointSecurityAttributesMask;
/*
* The types here must have the same memory mapping as their DDS counterparts.
* DDS_ParticipantSecurityAttributes:
* DDS_ParticipantTrustAttributes
* DDS_EndpointSecuritySymmetricCipherAlgorithmInfo:
* DDS_EndpointTrustInterceptorAlgorithmInfo
* DDS_EndpointSecurityAlgorithmInfo: DDS_EndpointTrustAlgorithmInfo
* DDS_EndpointSecurityAttributes: DDS_EndpointTrustAttributes
* DDS_ParticipantSecurityVendorProtectionInfo:
* DDS_ParticipantTrustVendorProtectionInfo
*/
typedef struct {
DDS_Boolean allow_unauthenticated_participants;
DDS_Boolean is_access_protected;
/* axk: Authenticated participant eXchanged Key. */
DDS_Boolean is_rtps_axk_protected;
/* psk: Pre-Shared Key. */
DDS_Boolean is_rtps_psk_protected;
DDS_Boolean is_discovery_protected;
DDS_Boolean is_liveliness_protected;
DDS_Boolean is_key_revision_enabled;
DDS_PluginParticipantSecurityAttributesMask plugin_participant_attributes;
struct DDS_PropertySeq ac_participant_properties;
DDS_ParticipantSecurityAlgorithmInfo algorithm_info;
DDS_ParticipantSecurityVendorProtectionInfo vendor_participant_protection_info;
DDS_RequirementKind ocsp_requirement_kind;
DDS_RequirementKind crl_requirement_kind;
} DDS_ParticipantSecurityAttributes;
#define DDS_ParticipantSecurityAttributes_INITIALIZER \
DDS_ParticipantTrustAttributes_INITIALIZER
typedef struct {
DDS_CryptoAlgorithmSet required_mask;
DDS_CryptoAlgorithmSet supported_mask; /* @non_serialized */
} DDS_EndpointSecuritySymmetricCipherAlgorithmInfo;
typedef struct {
DDS_EndpointSecuritySymmetricCipherAlgorithmInfo symmetric_cipher;
} DDS_EndpointSecurityAlgorithmInfo;
typedef struct {
DDS_TopicSecurityAttributes parent;
DDS_Boolean is_submessage_protected;
DDS_Boolean is_payload_protected;
DDS_Boolean is_key_protected;
DDS_PluginEndpointSecurityAttributesMask plugin_endpoint_attributes;
DDS_VendorEndpointSecurityAttributesMask vendor_endpoint_attributes;
struct DDS_PropertySeq ac_endpoint_properties;
DDS_EndpointSecurityAlgorithmInfo algorithm_info;
} DDS_EndpointSecurityAttributes;
#define DDS_EndpointSecurityAttributes_INITIALIZER \
DDS_EndpointTrustAttributes_INITIALIZER
/* ------------------------------------------------------------------------- */
#ifdef __cplusplus
extern "C" {
#endif
struct RTI_Security_PluginSuite;
/*
* This API initializes (or retrieves if it already exists) the thread context
* for the current thread. Thread context is Thread Specific Storage (TSS) used
* by Core and the Security Plugins to store state.
*
* @return A handle to the thread context from the current thread's TSS.
*/
extern DDS_ThreadContextHandle
RTI_Security_PluginSuiteUtils_getThreadContextHandle(void);
/*
* This API returns the process CryptoContext thread context accessor. The
* Security Plugins use process thread context accessors in combination with a
* ThreadContextHandle to retrieve specific parts of a thread's TSS.
*
* @return A handle to the CryptoContext accessor for this process.
*/
extern RTI_Security_ThreadContextAccessorHandle
RTI_Security_PluginSuiteUtils_getCryptoContextAccessor(void);
extern RTISecurityDllExport
void RTI_Security_PluginSuite_create(
struct RTI_Security_PluginSuite **securityPluginSuite,
const struct DDS_PropertyQosPolicy *properties);
extern RTISecurityDllExport
void RTI_SecurityLightweight_PluginSuite_create(
struct RTI_Security_PluginSuite **security,
const struct DDS_PropertyQosPolicy *properties);
#ifdef __cplusplus
} /* extern "C" */
#endif
#endif /* security_default_h */