#include <LocalCredentialData.h>
Public Types | |
typedef DCPS::RcHandle < LocalAccessCredentialData > | shared_ptr |
Public Member Functions | |
LocalAccessCredentialData () | |
~LocalAccessCredentialData () | |
CORBA::Boolean | load (const DDS::PropertySeq &props,::DDS::Security::SecurityException &ex) |
const SSL::Certificate & | get_ca_cert () |
const SSL::SignedDocument & | get_governance_doc () |
const SSL::SignedDocument & | get_permissions_doc () |
Private Member Functions | |
std::string | extract_file_name (const std::string &file_parm) |
::CORBA::Boolean | file_exists (const std::string &name) |
Private Attributes | |
SSL::Certificate::unique_ptr | ca_cert_ |
SSL::SignedDocument::unique_ptr | governance_doc_ |
SSL::SignedDocument::unique_ptr | permissions_doc_ |
Definition at line 20 of file AccessControl/LocalCredentialData.h.
typedef DCPS::RcHandle<LocalAccessCredentialData> OpenDDS::Security::LocalAccessCredentialData::shared_ptr |
Definition at line 22 of file AccessControl/LocalCredentialData.h.
OpenDDS::Security::LocalAccessCredentialData::LocalAccessCredentialData | ( | ) |
Definition at line 17 of file AccessControl/LocalCredentialData.cpp.
OpenDDS::Security::LocalAccessCredentialData::~LocalAccessCredentialData | ( | ) |
Definition at line 22 of file AccessControl/LocalCredentialData.cpp.
std::string OpenDDS::Security::LocalAccessCredentialData::extract_file_name | ( | const std::string & | file_parm | ) | [private] |
Definition at line 123 of file AccessControl/LocalCredentialData.cpp.
Referenced by load().
00124 { 00125 std::string del = ":"; 00126 u_long pos = file_parm.find_last_of(del); 00127 if ((pos > 0UL) && (pos != file_parm.length() - 1)) { 00128 return file_parm.substr(pos + 1); 00129 } 00130 else { 00131 return std::string(""); 00132 } 00133 }
CORBA::Boolean OpenDDS::Security::LocalAccessCredentialData::file_exists | ( | const std::string & | name | ) | [private] |
Definition at line 135 of file AccessControl/LocalCredentialData.cpp.
Referenced by load().
const SSL::Certificate& OpenDDS::Security::LocalAccessCredentialData::get_ca_cert | ( | ) | [inline] |
Definition at line 33 of file AccessControl/LocalCredentialData.h.
References ca_cert_.
00034 { 00035 return *ca_cert_; 00036 }
const SSL::SignedDocument& OpenDDS::Security::LocalAccessCredentialData::get_governance_doc | ( | ) | [inline] |
Definition at line 38 of file AccessControl/LocalCredentialData.h.
References governance_doc_.
00039 { 00040 return *governance_doc_; 00041 }
const SSL::SignedDocument& OpenDDS::Security::LocalAccessCredentialData::get_permissions_doc | ( | ) | [inline] |
Definition at line 43 of file AccessControl/LocalCredentialData.h.
References permissions_doc_.
00044 { 00045 return *permissions_doc_; 00046 }
CORBA::Boolean OpenDDS::Security::LocalAccessCredentialData::load | ( | const DDS::PropertySeq & | props, | |
::DDS::Security::SecurityException & | ex | |||
) |
Definition at line 27 of file AccessControl/LocalCredentialData.cpp.
References ca_cert_, extract_file_name(), file, file_exists(), governance_doc_, permissions_doc_, OpenDDS::DCPS::unique_ptr< T, Deleter >::reset(), and OpenDDS::Security::CommonUtilities::set_security_error().
00029 { 00030 const std::string file("file:"); 00031 bool permission = false, 00032 governance = false, 00033 ca = false; 00034 00035 for (size_t i = 0; i < props.length(); ++i) { 00036 const std::string name = props[i].name.in(); 00037 const std::string value = props[i].value.in(); 00038 00039 if (name == "dds.sec.access.permissions_ca") { 00040 if (value.length() > 0) { 00041 if (value.find(file) != std::string::npos) { 00042 std::string fn = extract_file_name(value); 00043 00044 if (!fn.empty()) { 00045 if (!file_exists(fn)) { 00046 CommonUtilities::set_security_error(ex, -1, 0, "AccessControlBuiltInImpl::validate_local_permissions: Certificate file could not be found"); 00047 return false; 00048 } 00049 } 00050 } 00051 } 00052 else { 00053 CommonUtilities::set_security_error(ex, -1, 0, "AccessControlBuiltInImpl::validate_local_permissions: Certificate filename not provided"); 00054 return false; 00055 } 00056 00057 ca_cert_.reset(new SSL::Certificate(value)); 00058 ca = true; 00059 } else if (name == "dds.sec.access.governance") { 00060 if (value.length() > 0) { 00061 if (value.find(file) != std::string::npos) { 00062 std::string fn = extract_file_name(value); 00063 00064 if (!fn.empty()) { 00065 if (!file_exists(fn)) { 00066 CommonUtilities::set_security_error(ex, -1, 0, "AccessControlBuiltInImpl::validate_local_permissions: Governance file could not be found"); 00067 return false; 00068 } 00069 } 00070 } 00071 } 00072 else { 00073 CommonUtilities::set_security_error(ex, -1, 0, "AccessControlBuiltInImpl::validate_local_permissions: Governance filename not provided"); 00074 return false; 00075 } 00076 00077 governance_doc_.reset(new SSL::SignedDocument(value)); 00078 governance = true; 00079 } else if (name == "dds.sec.access.permissions") { 00080 if (value.length() > 0) { 00081 if (value.find(file) != std::string::npos) { 00082 std::string fn = extract_file_name(value); 00083 00084 if (!fn.empty()) { 00085 if (!file_exists(fn)) { 00086 CommonUtilities::set_security_error(ex, -1, 0, "AccessControlBuiltInImpl::validate_local_permissions: Permissions file could not be found"); 00087 return false; 00088 } 00089 } 00090 } 00091 } 00092 else { 00093 CommonUtilities::set_security_error(ex, -1, 0, "AccessControlBuiltInImpl::validate_local_permissions: Permissions filename not provided"); 00094 return false; 00095 } 00096 00097 permissions_doc_.reset(new SSL::SignedDocument(value)); 00098 permission = true; 00099 } 00100 } 00101 00102 // If props did not have all 3 properties in it, set the missing properties to an empty string 00103 if (props.length() != 3) { 00104 if (!permission) { 00105 CommonUtilities::set_security_error(ex, -1, 0, "AccessControlBuiltInImpl::validate_local_permissions: Certificate data not provided"); 00106 return false; 00107 } 00108 00109 if (!governance) { 00110 CommonUtilities::set_security_error(ex, -1, 0, "AccessControlBuiltInImpl::validate_local_permissions: Governance data not provided"); 00111 return false; 00112 } 00113 00114 if (!ca) { 00115 CommonUtilities::set_security_error(ex, -1, 0, "AccessControlBuiltInImpl::validate_local_permissions: Permissions data not provided"); 00116 return false; 00117 } 00118 } 00119 00120 return true; 00121 }
Definition at line 50 of file AccessControl/LocalCredentialData.h.
Referenced by get_ca_cert(), and load().
SSL::SignedDocument::unique_ptr OpenDDS::Security::LocalAccessCredentialData::governance_doc_ [private] |
Definition at line 51 of file AccessControl/LocalCredentialData.h.
Referenced by get_governance_doc(), and load().
SSL::SignedDocument::unique_ptr OpenDDS::Security::LocalAccessCredentialData::permissions_doc_ [private] |
Definition at line 52 of file AccessControl/LocalCredentialData.h.
Referenced by get_permissions_doc(), and load().