OpenDDS  Snapshot(2023/04/07-19:43)
Public Types | Public Member Functions | Private Attributes | List of all members
OpenDDS::Security::LocalAuthCredentialData Class Reference

#include <LocalAuthCredentialData.h>

Inheritance diagram for OpenDDS::Security::LocalAuthCredentialData:
Inheritance graph
[legend]
Collaboration diagram for OpenDDS::Security::LocalAuthCredentialData:
Collaboration graph
[legend]

Public Types

typedef DCPS::RcHandle< LocalAuthCredentialDatashared_ptr
 

Public Member Functions

 LocalAuthCredentialData ()
 
virtual ~LocalAuthCredentialData ()
 
bool load_access_permissions (const DDS::Security::PermissionsCredentialToken &src, DDS::Security::SecurityException &ex)
 
bool load_credentials (const DDS::PropertySeq &props, DDS::Security::SecurityException &ex)
 
const SSL::Certificateget_ca_cert () const
 
const SSL::Certificateget_participant_cert () const
 
const SSL::PrivateKeyget_participant_private_key () const
 
const DDS::OctetSeqget_access_permissions () const
 
bool validate () const
 
- Public Member Functions inherited from OpenDDS::DCPS::RcObject
virtual ~RcObject ()
 
virtual void _add_ref ()
 
virtual void _remove_ref ()
 
long ref_count () const
 
WeakObject_get_weak_object () const
 

Private Attributes

SSL::Certificate::unique_ptr ca_cert_
 
SSL::Certificate::unique_ptr participant_cert_
 
SSL::PrivateKey::unique_ptr participant_pkey_
 
DDS::OctetSeq access_permissions_
 

Additional Inherited Members

- Protected Member Functions inherited from OpenDDS::DCPS::RcObject
 RcObject ()
 

Detailed Description

Definition at line 42 of file LocalAuthCredentialData.h.

Member Typedef Documentation

◆ shared_ptr

Definition at line 44 of file LocalAuthCredentialData.h.

Constructor & Destructor Documentation

◆ LocalAuthCredentialData()

OpenDDS::Security::LocalAuthCredentialData::LocalAuthCredentialData ( )

Definition at line 68 of file LocalAuthCredentialData.cpp.

69 {
70 }

◆ ~LocalAuthCredentialData()

OpenDDS::Security::LocalAuthCredentialData::~LocalAuthCredentialData ( )
virtual

Definition at line 72 of file LocalAuthCredentialData.cpp.

73 {
74 }

Member Function Documentation

◆ get_access_permissions()

const DDS::OctetSeq& OpenDDS::Security::LocalAuthCredentialData::get_access_permissions ( ) const
inline

◆ get_ca_cert()

const SSL::Certificate& OpenDDS::Security::LocalAuthCredentialData::get_ca_cert ( ) const
inline

◆ get_participant_cert()

const SSL::Certificate& OpenDDS::Security::LocalAuthCredentialData::get_participant_cert ( ) const
inline

◆ get_participant_private_key()

const SSL::PrivateKey& OpenDDS::Security::LocalAuthCredentialData::get_participant_private_key ( ) const
inline

◆ load_access_permissions()

bool OpenDDS::Security::LocalAuthCredentialData::load_access_permissions ( const DDS::Security::PermissionsCredentialToken src,
DDS::Security::SecurityException ex 
)

Definition at line 76 of file LocalAuthCredentialData.cpp.

References OpenDDS::Security::TokenReader::get_property_value(), and OpenDDS::Security::CommonUtilities::set_security_error().

78 {
79  const char* cperm = TokenReader(src).get_property_value("dds.perm.cert");
80  if (!cperm) {
81  set_security_error(ex, -1, 0,
82  "LocalAuthCredentialData::load_access_permissions: "
83  "no 'dds.perm.cert' property provided");
84  return false;
85  }
86 
87  const size_t len = std::strlen(cperm);
88  access_permissions_.length(static_cast<CORBA::ULong>(len + 1));
89  std::memcpy(&access_permissions_[0], cperm, len + 1); // copies the NULL
90 
91  return true;
92 }
bool set_security_error(DDS::Security::SecurityException &ex, int code, int minor_code, const char *message)

◆ load_credentials()

bool OpenDDS::Security::LocalAuthCredentialData::load_credentials ( const DDS::PropertySeq props,
DDS::Security::SecurityException ex 
)

Definition at line 94 of file LocalAuthCredentialData.cpp.

References ACE_DEBUG, DDS::Security::Properties::AuthIdentityCA, DDS::Security::Properties::AuthIdentityCertificate, DDS::Security::Properties::AuthPassword, DDS::Security::Properties::AuthPrivateKey, OpenDDS::DCPS::DCPS_debug_level, LM_DEBUG, name, OPENDDS_END_VERSIONED_NAMESPACE_DECL, OpenDDS::Security::CommonUtilities::set_security_error(), and value.

95 {
97  ACE_DEBUG((LM_DEBUG, "(%P|%t) LocalAuthCredentialData::load: Number of Properties: %i\n", props.length()));
98  }
99 
100  std::string pkey_uri, password;
101  for (unsigned int i = 0; i < props.length(); ++i) {
102  const std::string name = props[i].name.in(), value = props[i].value.in();
103 
105  ACE_DEBUG((LM_DEBUG, "(%P|%t) LocalAuthCredentialData::load: property %i: %C: %C\n",
106  i, name.c_str(), value.c_str()));
107  }
108 
110  ca_cert_.reset(new SSL::Certificate(value));
111 
112  } else if (name == DDS::Security::Properties::AuthPrivateKey) {
113  pkey_uri = value;
114 
116  participant_cert_.reset(new SSL::Certificate(value));
117 
118  } else if (name == DDS::Security::Properties::AuthPassword) {
119  password = value;
120 
121  }
122  }
123 
124  if (!pkey_uri.empty()) {
125  participant_pkey_.reset(new SSL::PrivateKey(pkey_uri, password));
126  }
127 
128  if (!ca_cert_) {
129  set_security_error(ex, -1, 0, "LocalAuthCredentialData::load: failed to load CA certificate");
130  return false;
131 
132  } else if (!participant_cert_) {
133  set_security_error(ex, -1, 0, "LocalAuthCredentialData::load: failed to load participant certificate");
134  return false;
135 
136  } else if (!participant_pkey_) {
137  set_security_error(ex, -1, 0, "LocalAuthCredentialData::load: failed to load participant private key");
138  return false;
139  }
140 
141  return true;
142 }
#define ACE_DEBUG(X)
const LogLevel::Value value
Definition: debug.cpp:61
const char AuthPassword[]
Definition: Properties.h:22
bool set_security_error(DDS::Security::SecurityException &ex, int code, int minor_code, const char *message)
const char AuthPrivateKey[]
Definition: Properties.h:23
const char AuthIdentityCA[]
Definition: Properties.h:20
OpenDDS_Dcps_Export unsigned int DCPS_debug_level
Definition: debug.cpp:30
const char *const name
Definition: debug.cpp:60
const char AuthIdentityCertificate[]
Definition: Properties.h:21

◆ validate()

bool OpenDDS::Security::LocalAuthCredentialData::validate ( ) const
inline

Definition at line 75 of file LocalAuthCredentialData.h.

References ACE_ERROR, and LM_WARNING.

76  {
77  if (!participant_cert_) {
78  ACE_ERROR((LM_WARNING,
79  "(%P|%t) LocalAuthCredentialData::validate(): WARNING: participant_cert_ is null,"
80  " some of the security properties might be missing!\n"));
81  return false;
82  }
83  if (!ca_cert_) {
84  ACE_ERROR((LM_WARNING,
85  "(%P|%t) LocalAuthCredentialData::validate(): WARNING: ca_cert_ is null,"
86  " some of the security properties might be missing!\n"));
87  return false;
88  }
89  return X509_V_OK == participant_cert_->validate(*ca_cert_);
90  }
#define ACE_ERROR(X)

Member Data Documentation

◆ access_permissions_

DDS::OctetSeq OpenDDS::Security::LocalAuthCredentialData::access_permissions_
private

Definition at line 97 of file LocalAuthCredentialData.h.

◆ ca_cert_

SSL::Certificate::unique_ptr OpenDDS::Security::LocalAuthCredentialData::ca_cert_
private

Definition at line 94 of file LocalAuthCredentialData.h.

◆ participant_cert_

SSL::Certificate::unique_ptr OpenDDS::Security::LocalAuthCredentialData::participant_cert_
private

Definition at line 95 of file LocalAuthCredentialData.h.

◆ participant_pkey_

SSL::PrivateKey::unique_ptr OpenDDS::Security::LocalAuthCredentialData::participant_pkey_
private

Definition at line 96 of file LocalAuthCredentialData.h.


The documentation for this class was generated from the following files: