OpenDDS  Snapshot(2023/04/28-20:55)
LocalAccessCredentialData.cpp
Go to the documentation of this file.
1 /*
2  * Distributed under the OpenDDS License.
3  * See: http://www.OpenDDS.org/license.html
4  */
5 
7 
10 
11 #include "dds/DCPS/debug.h"
12 
14 
15 namespace OpenDDS {
16 namespace Security {
17 
19 {
20 
21 }
22 
24 {
25 }
26 
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 }
66 
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 }
85 
86 }
87 }
88 
bool load(const std::string &uri, DDS::Security::SecurityException &ex)
#define ACE_DEBUG(X)
const LogLevel::Value value
Definition: debug.cpp:61
bool verify(DDS::Security::SecurityException &ex)
bool load(const DDS::PropertySeq &props, DDS::Security::SecurityException &ex)
LM_DEBUG
const char AccessGovernance[]
Definition: Properties.h:17
const char AccessPermissionsCA[]
Definition: Properties.h:19
DDS::PropertySeq PropertySeq
Definition: RtpsCore.idl:49
const char *const name
Definition: debug.cpp:60
ACE_TEXT("TCP_Factory")
bool verify(const Certificate &ca)
OpenDDS_Dcps_Export unsigned int DCPS_debug_level
Definition: debug.cpp:30
const DDS::OctetSeq & original() const
#define OPENDDS_END_VERSIONED_NAMESPACE_DECL
const char AccessPermissions[]
Definition: Properties.h:18
bool set_security_error(DDS::Security::SecurityException &ex, int code, int minor_code, const char *message)
The Internal API and Implementation of OpenDDS.
Definition: AddressCache.h:28