Authentication/LocalCredentialData.h

Go to the documentation of this file.
00001 /*
00002  * Distributed under the OpenDDS License.
00003  * See: http://www.OpenDDS.org/license.html
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
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines

Generated on 10 Aug 2018 for OpenDDS by  doxygen 1.6.1