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

#include <LocalAccessCredentialData.h>

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

Public Types

typedef DCPS::RcHandle< LocalAccessCredentialDatashared_ptr
 

Public Member Functions

 LocalAccessCredentialData ()
 
 ~LocalAccessCredentialData ()
 
bool load (const DDS::PropertySeq &props, DDS::Security::SecurityException &ex)
 
bool verify (DDS::Security::SecurityException &ex)
 
const SSL::Certificateget_ca_cert () const
 
const SSL::SignedDocumentget_governance_doc () const
 
const SSL::SignedDocumentget_permissions_doc () 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::SignedDocument governance_doc_
 
SSL::SignedDocument permissions_doc_
 

Additional Inherited Members

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

Detailed Description

Definition at line 22 of file LocalAccessCredentialData.h.

Member Typedef Documentation

◆ shared_ptr

Definition at line 24 of file LocalAccessCredentialData.h.

Constructor & Destructor Documentation

◆ LocalAccessCredentialData()

OpenDDS::Security::LocalAccessCredentialData::LocalAccessCredentialData ( )

Definition at line 18 of file LocalAccessCredentialData.cpp.

19 {
20 
21 }

◆ ~LocalAccessCredentialData()

OpenDDS::Security::LocalAccessCredentialData::~LocalAccessCredentialData ( )

Definition at line 23 of file LocalAccessCredentialData.cpp.

24 {
25 }

Member Function Documentation

◆ get_ca_cert()

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

Definition at line 33 of file LocalAccessCredentialData.h.

References ca_cert_.

34  {
35  return *ca_cert_;
36  }

◆ get_governance_doc()

const SSL::SignedDocument& OpenDDS::Security::LocalAccessCredentialData::get_governance_doc ( ) const
inline

Definition at line 38 of file LocalAccessCredentialData.h.

References governance_doc_.

39  {
40  return governance_doc_;
41  }

◆ get_permissions_doc()

const SSL::SignedDocument& OpenDDS::Security::LocalAccessCredentialData::get_permissions_doc ( ) const
inline

Definition at line 43 of file LocalAccessCredentialData.h.

References permissions_doc_.

44  {
45  return permissions_doc_;
46  }

◆ load()

bool OpenDDS::Security::LocalAccessCredentialData::load ( const DDS::PropertySeq props,
DDS::Security::SecurityException ex 
)

Definition at line 27 of file LocalAccessCredentialData.cpp.

References DDS::Security::Properties::AccessGovernance, DDS::Security::Properties::AccessPermissions, DDS::Security::Properties::AccessPermissionsCA, ca_cert_, governance_doc_, OpenDDS::Security::SSL::SignedDocument::load(), name, OpenDDS::Security::SSL::SignedDocument::original(), permissions_doc_, OpenDDS::DCPS::unique_ptr< T, Deleter >::reset(), OpenDDS::Security::CommonUtilities::set_security_error(), and value.

29 {
30  for (unsigned int i = 0; i < props.length(); ++i) {
31  const std::string name(props[i].name);
32  const std::string value(props[i].value);
33 
35  ca_cert_.reset(new SSL::Certificate(value));
36 
38  if (!governance_doc_.load(value, ex)) {
39  return false;
40  }
41 
43  if (!permissions_doc_.load(value, ex)) {
44  return false;
45  }
46  }
47  }
48 
49  if (! ca_cert_) {
50  CommonUtilities::set_security_error(ex, -1, 0, "LocalAccessCredentialData::load: CA certificate data not provided");
51  return false;
52  }
53 
54  if (governance_doc_.original().length() == 0) {
55  CommonUtilities::set_security_error(ex, -1, 0, "LocalAccessCredentialData::load: Governance data not provided");
56  return false;
57  }
58 
59  if (permissions_doc_.original().length() == 0) {
60  CommonUtilities::set_security_error(ex, -1, 0, "LocalAccessCredentialData::load: Permissions data not provided");
61  return false;
62  }
63 
64  return true;
65 }
const char AccessGovernance[]
Definition: Properties.h:17
const LogLevel::Value value
Definition: debug.cpp:61
bool set_security_error(DDS::Security::SecurityException &ex, int code, int minor_code, const char *message)
const DDS::OctetSeq & original() const
bool load(const std::string &uri, DDS::Security::SecurityException &ex)
const char AccessPermissions[]
Definition: Properties.h:18
const char *const name
Definition: debug.cpp:60
const char AccessPermissionsCA[]
Definition: Properties.h:19

◆ verify()

bool OpenDDS::Security::LocalAccessCredentialData::verify ( DDS::Security::SecurityException ex)

Definition at line 67 of file LocalAccessCredentialData.cpp.

References ACE_DEBUG, ACE_TEXT(), ca_cert_, OpenDDS::DCPS::DCPS_debug_level, governance_doc_, LM_DEBUG, OPENDDS_END_VERSIONED_NAMESPACE_DECL, permissions_doc_, OpenDDS::Security::CommonUtilities::set_security_error(), and OpenDDS::Security::SSL::SignedDocument::verify().

68 {
70  CommonUtilities::set_security_error(ex, -1, 0, "LocalAccessCredentialData::verify: Governance signature not verified");
71  return false;
72  } else if (DCPS::DCPS_debug_level) {
73  ACE_DEBUG((LM_DEBUG, ACE_TEXT("(%P|%t) LocalAccessCredentialData::verify: Governance signature verified\n")));
74  }
75 
77  CommonUtilities::set_security_error(ex, -1, 0, "LocalAccessCredentialData::verify: Permissions signature not verified");
78  return false;
79  } else if (DCPS::DCPS_debug_level) {
80  ACE_DEBUG((LM_DEBUG, ACE_TEXT("(%P|%t) AccessControlBuiltInImpl::validate_local_permissions: Permissions signature verified\n")));
81  }
82 
83  return true;
84 }
#define ACE_DEBUG(X)
bool verify(const Certificate &ca)
bool set_security_error(DDS::Security::SecurityException &ex, int code, int minor_code, const char *message)
OpenDDS_Dcps_Export unsigned int DCPS_debug_level
Definition: debug.cpp:30
ACE_TEXT("TCP_Factory")

Member Data Documentation

◆ ca_cert_

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

Definition at line 50 of file LocalAccessCredentialData.h.

Referenced by get_ca_cert(), load(), and verify().

◆ governance_doc_

SSL::SignedDocument OpenDDS::Security::LocalAccessCredentialData::governance_doc_
private

Definition at line 51 of file LocalAccessCredentialData.h.

Referenced by get_governance_doc(), load(), and verify().

◆ permissions_doc_

SSL::SignedDocument OpenDDS::Security::LocalAccessCredentialData::permissions_doc_
private

Definition at line 52 of file LocalAccessCredentialData.h.

Referenced by get_permissions_doc(), load(), and verify().


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