Authentication/LocalCredentialData.h
Go to the documentation of this file.00001
00002
00003
00004
00005
00006 #ifndef DDS_DCPS_AUTHENTICATION_LOCAL_CREDENTIAL_DATA_H
00007 #define DDS_DCPS_AUTHENTICATION_LOCAL_CREDENTIAL_DATA_H
00008
00009 #include <string>
00010
00011 #include "dds/DCPS/security/SSL/Certificate.h"
00012 #include "dds/DCPS/security/SSL/PrivateKey.h"
00013 #include "dds/DCPS/security/SSL/DiffieHellman.h"
00014 #include "dds/DCPS/security/SSL/Utils.h"
00015
00016 #include "dds/DCPS/RcObject.h"
00017 #include "dds/DdsDcpsCoreC.h"
00018 #include "dds/DdsSecurityCoreC.h"
00019
00020 namespace OpenDDS {
00021 namespace Security {
00022
00023 class DdsSecurity_Export CredentialHash
00024 {
00025 public:
00026 CredentialHash(const SSL::Certificate& cid, const SSL::DiffieHellman& dh, const DDS::OctetSeq& cpdata, const DDS::OctetSeq& cperm) :
00027 pubcert_(cid), dh_(dh), participant_topic_data_(cpdata), permissions_data_(cperm)
00028 {
00029
00030 }
00031
00032 int operator()(DDS::OctetSeq& dst) const;
00033
00034 private:
00035 const SSL::Certificate& pubcert_;
00036 const SSL::DiffieHellman& dh_;
00037 const DDS::OctetSeq& participant_topic_data_;
00038 const DDS::OctetSeq& permissions_data_;
00039 };
00040
00041 class DdsSecurity_Export LocalAuthCredentialData : public DCPS::RcObject {
00042 public:
00043 typedef DCPS::RcHandle<LocalAuthCredentialData> shared_ptr;
00044
00045 LocalAuthCredentialData();
00046
00047 virtual ~LocalAuthCredentialData();
00048
00049 bool load_access_permissions(const DDS::Security::PermissionsCredentialToken& src,
00050 DDS::Security::SecurityException& ex);
00051
00052 bool load_credentials(const DDS::PropertySeq& props, DDS::Security::SecurityException& ex);
00053
00054 const SSL::Certificate& get_ca_cert() const
00055 {
00056 return *ca_cert_;
00057 }
00058
00059 const SSL::Certificate& get_participant_cert() const
00060 {
00061 return *participant_cert_;
00062 }
00063
00064 const SSL::PrivateKey& get_participant_private_key() const
00065 {
00066 return *participant_pkey_;
00067 }
00068
00069 const DDS::OctetSeq& get_access_permissions() const
00070 {
00071 return access_permissions_;
00072 }
00073
00074 bool validate() const
00075 {
00076 if (!participant_cert_) {
00077 ACE_ERROR((LM_WARNING,
00078 "(%P|%t) LocalAuthCredentialData::validate(): WARNING: participant_cert_ is null,"
00079 " some of the security properties might be missing!\n"));
00080 return false;
00081 }
00082 if (!ca_cert_) {
00083 ACE_ERROR((LM_WARNING,
00084 "(%P|%t) LocalAuthCredentialData::validate(): WARNING: ca_cert_ is null,"
00085 " some of the security properties might be missing!\n"));
00086 return false;
00087 }
00088 return (X509_V_OK == participant_cert_->validate(*ca_cert_));
00089 }
00090
00091 private:
00092
00093 SSL::Certificate::unique_ptr ca_cert_;
00094 SSL::Certificate::unique_ptr participant_cert_;
00095 SSL::PrivateKey::unique_ptr participant_pkey_;
00096 DDS::OctetSeq access_permissions_;
00097 };
00098
00099 }
00100 }
00101
00102 #endif