Merge branch 'master' into security
Signed-off-by: Erik Boasson <eb@ilities.com>
This commit is contained in:
		
						commit
						ad58db0721
					
				
					 158 changed files with 6915 additions and 3361 deletions
				
			
		| 
						 | 
				
			
			@ -14,7 +14,7 @@
 | 
			
		|||
#define DDS_SECURITY_FSM_H
 | 
			
		||||
 | 
			
		||||
#include "dds/ddsrt/time.h"
 | 
			
		||||
#include "dds/ddsi/q_globals.h"
 | 
			
		||||
#include "dds/ddsi/ddsi_domaingv.h"
 | 
			
		||||
 | 
			
		||||
#if defined (__cplusplus)
 | 
			
		||||
extern "C" {
 | 
			
		||||
| 
						 | 
				
			
			@ -176,7 +176,7 @@ dds_security_fsm_free(struct dds_security_fsm *fsm);
 | 
			
		|||
 * @return Returns the new fsm control on success. Null on failure.
 | 
			
		||||
 */
 | 
			
		||||
DDS_EXPORT struct dds_security_fsm_control *
 | 
			
		||||
dds_security_fsm_control_create (struct q_globals *gv);
 | 
			
		||||
dds_security_fsm_control_create (struct ddsi_domaingv *gv);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Frees the fsm control and the allocated fsm's.
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -66,7 +66,7 @@ struct dds_security_fsm_control
 | 
			
		|||
  ddsrt_mutex_t lock;
 | 
			
		||||
  ddsrt_cond_t cond;
 | 
			
		||||
  struct thread_state1 *ts;
 | 
			
		||||
  struct q_globals *gv;
 | 
			
		||||
  struct ddsi_domaingv *gv;
 | 
			
		||||
  struct dds_security_fsm *first_fsm;
 | 
			
		||||
  struct dds_security_fsm *last_fsm;
 | 
			
		||||
  struct fsm_event *event_queue;
 | 
			
		||||
| 
						 | 
				
			
			@ -456,7 +456,7 @@ static void fsm_delete (struct dds_security_fsm_control *control, struct dds_sec
 | 
			
		|||
  ddsrt_free(fsm);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
struct dds_security_fsm_control * dds_security_fsm_control_create (struct q_globals *gv)
 | 
			
		||||
struct dds_security_fsm_control * dds_security_fsm_control_create (struct ddsi_domaingv *gv)
 | 
			
		||||
{
 | 
			
		||||
  struct dds_security_fsm_control *control;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -20,7 +20,7 @@
 | 
			
		|||
#include "dds/ddsrt/environ.h"
 | 
			
		||||
#include "dds/ddsrt/heap.h"
 | 
			
		||||
#include "dds/ddsi/q_misc.h"
 | 
			
		||||
#include "dds/ddsi/q_xqos.h"
 | 
			
		||||
#include "dds/ddsi/ddsi_xqos.h"
 | 
			
		||||
 | 
			
		||||
#include "dds/security/dds_security_api_defs.h"
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -39,6 +39,32 @@
 | 
			
		|||
  " initFunction=\"init_access_control\"" \
 | 
			
		||||
  " finalizeFunction=\"finalize_access_control\" />"
 | 
			
		||||
 | 
			
		||||
#define PROPLIST(auth, crypto, ac, pre_str, post_str, binprops)         \
 | 
			
		||||
  "property_list={" pre_str                                             \
 | 
			
		||||
  "0:\"dds.sec.auth.library.path\":\""auth"\","                         \
 | 
			
		||||
  "0:\"dds.sec.auth.library.init\":\"init_authentication\","            \
 | 
			
		||||
  "0:\"dds.sec.auth.library.finalize\":\"finalize_authentication\","    \
 | 
			
		||||
  "0:\"dds.sec.crypto.library.path\":\""crypto"\","                     \
 | 
			
		||||
  "0:\"dds.sec.crypto.library.init\":\"init_crypto\","                  \
 | 
			
		||||
  "0:\"dds.sec.crypto.library.finalize\":\"finalize_crypto\","          \
 | 
			
		||||
  "0:\"dds.sec.access.library.path\":\""ac"\","                         \
 | 
			
		||||
  "0:\"dds.sec.access.library.init\":\"init_access_control\","          \
 | 
			
		||||
  "0:\"dds.sec.access.library.finalize\":\"finalize_access_control\","  \
 | 
			
		||||
  "0:\"dds.sec.auth.identity_ca\":\"testtext_IdentityCA_testtext\","    \
 | 
			
		||||
  "0:\"dds.sec.auth.private_key\":\"testtext_PrivateKey_testtext\","    \
 | 
			
		||||
  "0:\"dds.sec.auth.identity_certificate\":\"testtext_IdentityCertificate_testtext\"," \
 | 
			
		||||
  "0:\"dds.sec.access.permissions_ca\":\"file:Permissions_CA.pem\","    \
 | 
			
		||||
  "0:\"dds.sec.access.governance\":\"file:Governance.p7s\","            \
 | 
			
		||||
  "0:\"dds.sec.access.permissions\":\"file:Permissions.p7s\""           \
 | 
			
		||||
  post_str "}:{" binprops "}"
 | 
			
		||||
#define PARTICIPANT_QOS(auth, crypto, ac, pre_str, post_str, binprops)  \
 | 
			
		||||
  "PARTICIPANT * QOS={*" PROPLIST (auth, crypto, ac, pre_str, post_str, binprops) "*"
 | 
			
		||||
#define PARTICIPANT_QOS_ALL_OK(pre_str, post_str, binprops)             \
 | 
			
		||||
  PARTICIPANT_QOS (MOCKLIB_PATH ("dds_security_authentication_all_ok"), \
 | 
			
		||||
                   MOCKLIB_PATH ("dds_security_cryptography_all_ok"),   \
 | 
			
		||||
                   MOCKLIB_PATH ("dds_security_access_control_all_ok"), \
 | 
			
		||||
                   pre_str, post_str, binprops)
 | 
			
		||||
 | 
			
		||||
#define URI_VARIABLE DDS_PROJECT_NAME_NOSPACE_CAPS"_URI"
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
| 
						 | 
				
			
			@ -52,6 +78,7 @@ static uint32_t found;
 | 
			
		|||
static void logger(void *ptr, const dds_log_data_t *data)
 | 
			
		||||
{
 | 
			
		||||
  char **expected = (char**)ptr;
 | 
			
		||||
  fputs (data->message, stdout);
 | 
			
		||||
  for (uint32_t i = 0; expected[i] != NULL; i++) {
 | 
			
		||||
    if (ddsi2_patmatch(expected[i], data->message)) {
 | 
			
		||||
      found |= (uint32_t)(1 << i);
 | 
			
		||||
| 
						 | 
				
			
			@ -196,23 +223,7 @@ CU_Test(ddsc_security_config, all, .init = ddsrt_init, .fini = ddsrt_fini)
 | 
			
		|||
    "config: Domain/DDSSecurity/Cryptographic/Library[@initFunction]: init_crypto*",
 | 
			
		||||
    "config: Domain/DDSSecurity/Cryptographic/Library[@finalizeFunction]: finalize_crypto*",
 | 
			
		||||
    /* The config should have been parsed into the participant QoS. */
 | 
			
		||||
    "PARTICIPANT * QOS={*property_list={value={{dds.sec.auth.library.path,"MOCKLIB_PATH("dds_security_authentication_all_ok")",0},"
 | 
			
		||||
    "{dds.sec.auth.library.init,init_authentication,0},"
 | 
			
		||||
    "{dds.sec.auth.library.finalize,finalize_authentication,0},"
 | 
			
		||||
    "{dds.sec.crypto.library.path,"MOCKLIB_PATH("dds_security_cryptography_all_ok")",0},"
 | 
			
		||||
    "{dds.sec.crypto.library.init,init_crypto,0},"
 | 
			
		||||
    "{dds.sec.crypto.library.finalize,finalize_crypto,0},"
 | 
			
		||||
    "{dds.sec.access.library.path,"MOCKLIB_PATH("dds_security_access_control_all_ok")",0},"
 | 
			
		||||
    "{dds.sec.access.library.init,init_access_control,0},"
 | 
			
		||||
    "{dds.sec.access.library.finalize,finalize_access_control,0},"
 | 
			
		||||
    "{dds.sec.auth.identity_ca,testtext_IdentityCA_testtext,0},"
 | 
			
		||||
    "{dds.sec.auth.private_key,testtext_PrivateKey_testtext,0},"
 | 
			
		||||
    "{dds.sec.auth.identity_certificate,testtext_IdentityCertificate_testtext,0},"
 | 
			
		||||
    "{dds.sec.access.permissions_ca,file:Permissions_CA.pem,0},"
 | 
			
		||||
    "{dds.sec.access.governance,file:Governance.p7s,0},"
 | 
			
		||||
    "{dds.sec.access.permissions,file:Permissions.p7s,0},"
 | 
			
		||||
    "{dds.sec.auth.password,testtext_Password_testtext,0},"
 | 
			
		||||
    "{dds.sec.auth.trusted_ca_dir,testtext_Dir_testtext,0}}binary_value={}}*}*",
 | 
			
		||||
    PARTICIPANT_QOS_ALL_OK ("", ",0:\"dds.sec.auth.password\":\"testtext_Password_testtext\",0:\"dds.sec.auth.trusted_ca_dir\":\"testtext_Dir_testtext\"", ""),
 | 
			
		||||
    NULL
 | 
			
		||||
  };
 | 
			
		||||
  const char *sec_config =
 | 
			
		||||
| 
						 | 
				
			
			@ -287,23 +298,7 @@ CU_Test(ddsc_security_config, security, .init = ddsrt_init, .fini = ddsrt_fini)
 | 
			
		|||
    "config: Domain/DDSSecurity/Cryptographic/Library[@initFunction]: init_crypto*",
 | 
			
		||||
    "config: Domain/DDSSecurity/Cryptographic/Library[@finalizeFunction]: finalize_crypto*",
 | 
			
		||||
    /* The config should have been parsed into the participant QoS. */
 | 
			
		||||
    "PARTICIPANT * QOS={*property_list={value={{dds.sec.auth.library.path,"MOCKLIB_PATH("dds_security_authentication_all_ok")",0},"
 | 
			
		||||
    "{dds.sec.auth.library.init,init_authentication,0},"
 | 
			
		||||
    "{dds.sec.auth.library.finalize,finalize_authentication,0},"
 | 
			
		||||
    "{dds.sec.crypto.library.path,"MOCKLIB_PATH("dds_security_cryptography_all_ok")",0},"
 | 
			
		||||
    "{dds.sec.crypto.library.init,init_crypto,0},"
 | 
			
		||||
    "{dds.sec.crypto.library.finalize,finalize_crypto,0},"
 | 
			
		||||
    "{dds.sec.access.library.path,"MOCKLIB_PATH("dds_security_access_control_all_ok")",0},"
 | 
			
		||||
    "{dds.sec.access.library.init,init_access_control,0},"
 | 
			
		||||
    "{dds.sec.access.library.finalize,finalize_access_control,0},"
 | 
			
		||||
    "{dds.sec.auth.identity_ca,testtext_IdentityCA_testtext,0},"
 | 
			
		||||
    "{dds.sec.auth.private_key,testtext_PrivateKey_testtext,0},"
 | 
			
		||||
    "{dds.sec.auth.identity_certificate,testtext_IdentityCertificate_testtext,0},"
 | 
			
		||||
    "{dds.sec.access.permissions_ca,file:Permissions_CA.pem,0},"
 | 
			
		||||
    "{dds.sec.access.governance,file:Governance.p7s,0},"
 | 
			
		||||
    "{dds.sec.access.permissions,file:Permissions.p7s,0},"
 | 
			
		||||
    "{dds.sec.auth.password,,0},"
 | 
			
		||||
    "{dds.sec.auth.trusted_ca_dir,,0}}binary_value={}}*}*",
 | 
			
		||||
    PARTICIPANT_QOS_ALL_OK ("", ",0:\"dds.sec.auth.password\":\"\",0:\"dds.sec.auth.trusted_ca_dir\":\"\"", ""),
 | 
			
		||||
    NULL
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -373,22 +368,7 @@ CU_Test(ddsc_security_config, deprecated, .init = ddsrt_init, .fini = ddsrt_fini
 | 
			
		|||
    "config: Domain/DDSSecurity/Cryptographic/Library[@initFunction]: init_crypto*",
 | 
			
		||||
    "config: Domain/DDSSecurity/Cryptographic/Library[@finalizeFunction]: finalize_crypto*",
 | 
			
		||||
    /* The config should have been parsed into the participant QoS. */
 | 
			
		||||
    "PARTICIPANT * QOS={*property_list={value={"
 | 
			
		||||
    "{dds.sec.auth.library.path,"MOCKLIB_PATH("dds_security_authentication_all_ok")",0},"
 | 
			
		||||
    "{dds.sec.auth.library.init,init_authentication,0},"
 | 
			
		||||
    "{dds.sec.auth.library.finalize,finalize_authentication,0},"
 | 
			
		||||
    "{dds.sec.crypto.library.path,"MOCKLIB_PATH("dds_security_cryptography_all_ok")",0},"
 | 
			
		||||
    "{dds.sec.crypto.library.init,init_crypto,0},"
 | 
			
		||||
    "{dds.sec.crypto.library.finalize,finalize_crypto,0},"
 | 
			
		||||
    "{dds.sec.access.library.path,"MOCKLIB_PATH("dds_security_access_control_all_ok")",0},"
 | 
			
		||||
    "{dds.sec.access.library.init,init_access_control,0},{dds.sec.access.library.finalize,finalize_access_control,0},{dds.sec.auth.identity_ca,testtext_IdentityCA_testtext,0},"
 | 
			
		||||
    "{dds.sec.auth.private_key,testtext_PrivateKey_testtext,0},"
 | 
			
		||||
    "{dds.sec.auth.identity_certificate,testtext_IdentityCertificate_testtext,0},"
 | 
			
		||||
    "{dds.sec.access.permissions_ca,file:Permissions_CA.pem,0},"
 | 
			
		||||
    "{dds.sec.access.governance,file:Governance.p7s,0},"
 | 
			
		||||
    "{dds.sec.access.permissions,file:Permissions.p7s,0},"
 | 
			
		||||
    "{dds.sec.auth.password,testtext_Password_testtext,0},"
 | 
			
		||||
    "{dds.sec.auth.trusted_ca_dir,testtext_Dir_testtext,0}}binary_value={}}*}*",
 | 
			
		||||
    PARTICIPANT_QOS_ALL_OK ("", ",0:\"dds.sec.auth.password\":\"testtext_Password_testtext\",0:\"dds.sec.auth.trusted_ca_dir\":\"testtext_Dir_testtext\"", ""),
 | 
			
		||||
    NULL
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -444,24 +424,7 @@ CU_Test(ddsc_security_config, qos, .init = ddsrt_init, .fini = ddsrt_fini)
 | 
			
		|||
  /* Expected traces when creating participant with the security elements. */
 | 
			
		||||
  const char *log_expected[] = {
 | 
			
		||||
    /* The config should have been parsed into the participant QoS. */
 | 
			
		||||
    "PARTICIPANT * QOS={*property_list={value={"
 | 
			
		||||
    "{dds.sec.auth.identity_ca,testtext_IdentityCA_testtext,0},"
 | 
			
		||||
    "{dds.sec.auth.private_key,testtext_PrivateKey_testtext,0},"
 | 
			
		||||
    "{dds.sec.auth.identity_certificate,testtext_IdentityCertificate_testtext,0},"
 | 
			
		||||
    "{dds.sec.access.permissions_ca,file:Permissions_CA.pem,0},"
 | 
			
		||||
    "{dds.sec.access.governance,file:Governance.p7s,0},"
 | 
			
		||||
    "{dds.sec.access.permissions,file:Permissions.p7s,0},"
 | 
			
		||||
    "{dds.sec.auth.password,testtext_Password_testtext,0},"
 | 
			
		||||
    "{dds.sec.auth.trusted_ca_dir,file:/test/dir,0},"
 | 
			
		||||
    "{dds.sec.auth.library.path,"MOCKLIB_PATH("dds_security_authentication_all_ok")",0},"
 | 
			
		||||
    "{dds.sec.auth.library.init,init_authentication,0},"
 | 
			
		||||
    "{dds.sec.auth.library.finalize,finalize_authentication,0},"
 | 
			
		||||
    "{dds.sec.crypto.library.path,"MOCKLIB_PATH("dds_security_cryptography_all_ok")",0},"
 | 
			
		||||
    "{dds.sec.crypto.library.init,init_crypto,0},"
 | 
			
		||||
    "{dds.sec.crypto.library.finalize,finalize_crypto,0},"
 | 
			
		||||
    "{dds.sec.access.library.path,"MOCKLIB_PATH("dds_security_access_control_all_ok")",0},"
 | 
			
		||||
    "{dds.sec.access.library.init,init_access_control,0},"
 | 
			
		||||
    "{dds.sec.access.library.finalize,finalize_access_control,0}}binary_value={}}*}*",
 | 
			
		||||
    PARTICIPANT_QOS_ALL_OK ("", ",0:\"dds.sec.auth.password\":\"testtext_Password_testtext\",0:\"dds.sec.auth.trusted_ca_dir\":\"file:/test/dir\"", ""),
 | 
			
		||||
    NULL
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -473,16 +436,9 @@ CU_Test(ddsc_security_config, qos, .init = ddsrt_init, .fini = ddsrt_fini)
 | 
			
		|||
  dds_set_log_sink(&logger, (void*)log_expected);
 | 
			
		||||
  dds_set_trace_sink(&logger, (void*)log_expected);
 | 
			
		||||
 | 
			
		||||
  /* Create the qos */
 | 
			
		||||
  /* Create the qos -- the properties are dumped in the order in which they are set, so for
 | 
			
		||||
     PARTICIPANT_QOS_ALL_OK to work, the order must match that one */
 | 
			
		||||
  CU_ASSERT_FATAL((qos = dds_create_qos()) != NULL);
 | 
			
		||||
  dds_qset_prop(qos, "dds.sec.auth.identity_ca", "testtext_IdentityCA_testtext");
 | 
			
		||||
  dds_qset_prop(qos, "dds.sec.auth.private_key", "testtext_PrivateKey_testtext");
 | 
			
		||||
  dds_qset_prop(qos, "dds.sec.auth.identity_certificate", "testtext_IdentityCertificate_testtext");
 | 
			
		||||
  dds_qset_prop(qos, "dds.sec.access.permissions_ca", "file:Permissions_CA.pem");
 | 
			
		||||
  dds_qset_prop(qos, "dds.sec.access.governance", "file:Governance.p7s");
 | 
			
		||||
  dds_qset_prop(qos, "dds.sec.access.permissions", "file:Permissions.p7s");
 | 
			
		||||
  dds_qset_prop(qos, "dds.sec.auth.password", "testtext_Password_testtext");
 | 
			
		||||
  dds_qset_prop(qos, "dds.sec.auth.trusted_ca_dir", "file:/test/dir");
 | 
			
		||||
  dds_qset_prop(qos, "dds.sec.auth.library.path", ""MOCKLIB_PATH("dds_security_authentication_all_ok")"");
 | 
			
		||||
  dds_qset_prop(qos, "dds.sec.auth.library.init", "init_authentication");
 | 
			
		||||
  dds_qset_prop(qos, "dds.sec.auth.library.finalize", "finalize_authentication");
 | 
			
		||||
| 
						 | 
				
			
			@ -492,6 +448,14 @@ CU_Test(ddsc_security_config, qos, .init = ddsrt_init, .fini = ddsrt_fini)
 | 
			
		|||
  dds_qset_prop(qos, "dds.sec.access.library.path", ""MOCKLIB_PATH("dds_security_access_control_all_ok")"");
 | 
			
		||||
  dds_qset_prop(qos, "dds.sec.access.library.init", "init_access_control");
 | 
			
		||||
  dds_qset_prop(qos, "dds.sec.access.library.finalize", "finalize_access_control");
 | 
			
		||||
  dds_qset_prop(qos, "dds.sec.auth.identity_ca", "testtext_IdentityCA_testtext");
 | 
			
		||||
  dds_qset_prop(qos, "dds.sec.auth.private_key", "testtext_PrivateKey_testtext");
 | 
			
		||||
  dds_qset_prop(qos, "dds.sec.auth.identity_certificate", "testtext_IdentityCertificate_testtext");
 | 
			
		||||
  dds_qset_prop(qos, "dds.sec.access.permissions_ca", "file:Permissions_CA.pem");
 | 
			
		||||
  dds_qset_prop(qos, "dds.sec.access.governance", "file:Governance.p7s");
 | 
			
		||||
  dds_qset_prop(qos, "dds.sec.access.permissions", "file:Permissions.p7s");
 | 
			
		||||
  dds_qset_prop(qos, "dds.sec.auth.password", "testtext_Password_testtext");
 | 
			
		||||
  dds_qset_prop(qos, "dds.sec.auth.trusted_ca_dir", "file:/test/dir");
 | 
			
		||||
 | 
			
		||||
  /* Create participant with security config in qos. */
 | 
			
		||||
  found = 0;
 | 
			
		||||
| 
						 | 
				
			
			@ -513,27 +477,8 @@ CU_Test(ddsc_security_config, qos_props, .init = ddsrt_init, .fini = ddsrt_fini)
 | 
			
		|||
  /* Expected traces when creating participant with the security elements. */
 | 
			
		||||
  const char *log_expected[] = {
 | 
			
		||||
    /* The config should have been parsed into the participant QoS. */
 | 
			
		||||
    "PARTICIPANT * QOS={*property_list={value={"
 | 
			
		||||
    "{test.prop1,testtext_value1_testtext,0},"
 | 
			
		||||
    "{dds.sec.auth.identity_ca,testtext_IdentityCA_testtext,0},"
 | 
			
		||||
    "{dds.sec.auth.private_key,testtext_PrivateKey_testtext,0},"
 | 
			
		||||
    "{dds.sec.auth.identity_certificate,testtext_IdentityCertificate_testtext,0},"
 | 
			
		||||
    "{dds.sec.access.permissions_ca,file:Permissions_CA.pem,0},"
 | 
			
		||||
    "{dds.sec.access.governance,file:Governance.p7s,0},"
 | 
			
		||||
    "{dds.sec.access.permissions,file:Permissions.p7s,0},"
 | 
			
		||||
    "{dds.sec.auth.password,testtext_Password_testtext,0},"
 | 
			
		||||
    "{dds.sec.auth.trusted_ca_dir,file:/test/dir,0},"
 | 
			
		||||
    "{dds.sec.auth.library.path,"MOCKLIB_PATH("dds_security_authentication_all_ok")",0},"
 | 
			
		||||
    "{dds.sec.auth.library.init,init_authentication,0},"
 | 
			
		||||
    "{dds.sec.auth.library.finalize,finalize_authentication,0},"
 | 
			
		||||
    "{dds.sec.crypto.library.path,"MOCKLIB_PATH("dds_security_cryptography_all_ok")",0},"
 | 
			
		||||
    "{dds.sec.crypto.library.init,init_crypto,0},"
 | 
			
		||||
    "{dds.sec.crypto.library.finalize,finalize_crypto,0},"
 | 
			
		||||
    "{dds.sec.access.library.path,"MOCKLIB_PATH("dds_security_access_control_all_ok")",0},"
 | 
			
		||||
    "{dds.sec.access.library.init,init_access_control,0},"
 | 
			
		||||
    "{dds.sec.access.library.finalize,finalize_access_control,0},"
 | 
			
		||||
    "{test.prop2,testtext_value2_testtext,0}}"
 | 
			
		||||
    "binary_value={{test.bprop1,(3,*),0}}}*}*",
 | 
			
		||||
    PARTICIPANT_QOS_ALL_OK ("", ",0:\"dds.sec.auth.password\":\"testtext_Password_testtext\",0:\"dds.sec.auth.trusted_ca_dir\":\"file:/test/dir\",0:\"test.prop1\":\"testtext_value1_testtext\",0:\"test.prop2\":\"testtext_value2_testtext\"",
 | 
			
		||||
                            "0:\"test.bprop1\":3<1,2,3>"),
 | 
			
		||||
    NULL
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -545,19 +490,10 @@ CU_Test(ddsc_security_config, qos_props, .init = ddsrt_init, .fini = ddsrt_fini)
 | 
			
		|||
  dds_set_log_sink(&logger, (void*)log_expected);
 | 
			
		||||
  dds_set_trace_sink(&logger, (void*)log_expected);
 | 
			
		||||
 | 
			
		||||
  /* Create the qos */
 | 
			
		||||
  /* Create the qos -- the properties are dumped in the order in which they are set, so for
 | 
			
		||||
     PARTICIPANT_QOS_ALL_OK to work, the order must match that one */
 | 
			
		||||
  unsigned char bvalue[3] = { 0x01, 0x02, 0x03 };
 | 
			
		||||
  CU_ASSERT_FATAL((qos = dds_create_qos()) != NULL);
 | 
			
		||||
  dds_qset_prop(qos, "test.prop1", "testtext_value1_testtext");
 | 
			
		||||
  dds_qset_prop(qos, "dds.sec.auth.identity_ca", "testtext_IdentityCA_testtext");
 | 
			
		||||
  dds_qset_prop(qos, "dds.sec.auth.private_key", "testtext_PrivateKey_testtext");
 | 
			
		||||
  dds_qset_prop(qos, "dds.sec.auth.identity_certificate", "testtext_IdentityCertificate_testtext");
 | 
			
		||||
  dds_qset_prop(qos, "dds.sec.access.permissions_ca", "file:Permissions_CA.pem");
 | 
			
		||||
  dds_qset_prop(qos, "dds.sec.access.governance", "file:Governance.p7s");
 | 
			
		||||
  dds_qset_prop(qos, "dds.sec.access.permissions", "file:Permissions.p7s");
 | 
			
		||||
  dds_qset_prop(qos, "dds.sec.auth.password", "testtext_Password_testtext");
 | 
			
		||||
  dds_qset_prop(qos, "dds.sec.auth.trusted_ca_dir", "file:/test/dir");
 | 
			
		||||
 | 
			
		||||
  dds_qset_prop(qos, "dds.sec.auth.library.path", ""MOCKLIB_PATH("dds_security_authentication_all_ok")"");
 | 
			
		||||
  dds_qset_prop(qos, "dds.sec.auth.library.init", "init_authentication");
 | 
			
		||||
  dds_qset_prop(qos, "dds.sec.auth.library.finalize", "finalize_authentication");
 | 
			
		||||
| 
						 | 
				
			
			@ -567,10 +503,17 @@ CU_Test(ddsc_security_config, qos_props, .init = ddsrt_init, .fini = ddsrt_fini)
 | 
			
		|||
  dds_qset_prop(qos, "dds.sec.access.library.path", ""MOCKLIB_PATH("dds_security_access_control_all_ok")"");
 | 
			
		||||
  dds_qset_prop(qos, "dds.sec.access.library.init", "init_access_control");
 | 
			
		||||
  dds_qset_prop(qos, "dds.sec.access.library.finalize", "finalize_access_control");
 | 
			
		||||
 | 
			
		||||
  dds_qset_prop(qos, "test.prop2", "testtext_value2_testtext");
 | 
			
		||||
 | 
			
		||||
  dds_qset_prop(qos, "dds.sec.auth.identity_ca", "testtext_IdentityCA_testtext");
 | 
			
		||||
  dds_qset_prop(qos, "dds.sec.auth.private_key", "testtext_PrivateKey_testtext");
 | 
			
		||||
  dds_qset_prop(qos, "dds.sec.auth.identity_certificate", "testtext_IdentityCertificate_testtext");
 | 
			
		||||
  dds_qset_prop(qos, "dds.sec.access.permissions_ca", "file:Permissions_CA.pem");
 | 
			
		||||
  dds_qset_prop(qos, "dds.sec.access.governance", "file:Governance.p7s");
 | 
			
		||||
  dds_qset_prop(qos, "dds.sec.access.permissions", "file:Permissions.p7s");
 | 
			
		||||
  dds_qset_prop(qos, "dds.sec.auth.password", "testtext_Password_testtext");
 | 
			
		||||
  dds_qset_prop(qos, "dds.sec.auth.trusted_ca_dir", "file:/test/dir");
 | 
			
		||||
 | 
			
		||||
  dds_qset_prop(qos, "test.prop1", "testtext_value1_testtext");
 | 
			
		||||
  dds_qset_prop(qos, "test.prop2", "testtext_value2_testtext");
 | 
			
		||||
 | 
			
		||||
  dds_qset_bprop(qos, "test.bprop1", bvalue, 3);
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -595,23 +538,7 @@ CU_Test(ddsc_security_config, config_qos, .init = ddsrt_init, .fini = ddsrt_fini
 | 
			
		|||
  const char *log_expected[] = {
 | 
			
		||||
    /* The security settings from qos properties should have been parsed into the participant QoS. */
 | 
			
		||||
    "new_participant(*): using security settings from QoS*",
 | 
			
		||||
    "PARTICIPANT * QOS={*property_list={value={"
 | 
			
		||||
    "{dds.sec.auth.identity_ca,testtext_QOS_IdentityCA_testtext,0},"
 | 
			
		||||
    "{dds.sec.auth.private_key,testtext_QOS_PrivateKey_testtext,0},"
 | 
			
		||||
    "{dds.sec.auth.identity_certificate,testtext_QOS_IdentityCertificate_testtext,0},"
 | 
			
		||||
    "{dds.sec.access.permissions_ca,file:QOS_Permissions_CA.pem,0},"
 | 
			
		||||
    "{dds.sec.access.governance,file:QOS_Governance.p7s,0},"
 | 
			
		||||
    "{dds.sec.access.permissions,file:QOS_Permissions.p7s,0},"
 | 
			
		||||
    "{dds.sec.auth.library.path,"MOCKLIB_PATH("dds_security_authentication_all_ok")",0},"
 | 
			
		||||
    "{dds.sec.auth.library.init,init_authentication,0},"
 | 
			
		||||
    "{dds.sec.auth.library.finalize,finalize_authentication,0},"
 | 
			
		||||
    "{dds.sec.crypto.library.path,"MOCKLIB_PATH("dds_security_cryptography_all_ok")",0},"
 | 
			
		||||
    "{dds.sec.crypto.library.init,init_crypto,0},"
 | 
			
		||||
    "{dds.sec.crypto.library.finalize,finalize_crypto,0},"
 | 
			
		||||
    "{dds.sec.access.library.path,"MOCKLIB_PATH("dds_security_access_control_all_ok")",0},"
 | 
			
		||||
    "{dds.sec.access.library.init,init_access_control,0},"
 | 
			
		||||
    "{dds.sec.access.library.finalize,finalize_access_control,0}"
 | 
			
		||||
    "}binary_value={}}*}*",
 | 
			
		||||
    PARTICIPANT_QOS_ALL_OK ("", "", ""),
 | 
			
		||||
    NULL
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -633,23 +560,24 @@ CU_Test(ddsc_security_config, config_qos, .init = ddsrt_init, .fini = ddsrt_fini
 | 
			
		|||
  dds_entity_t participant;
 | 
			
		||||
  dds_qos_t * qos;
 | 
			
		||||
 | 
			
		||||
  /* Create the qos -- the properties are dumped in the order in which they are set, so for
 | 
			
		||||
     PARTICIPANT_QOS_ALL_OK to work, the order must match that one */
 | 
			
		||||
  CU_ASSERT_FATAL((qos = dds_create_qos()) != NULL);
 | 
			
		||||
  dds_qset_prop(qos, "dds.sec.auth.identity_ca", "testtext_QOS_IdentityCA_testtext");
 | 
			
		||||
  dds_qset_prop(qos, "dds.sec.auth.private_key", "testtext_QOS_PrivateKey_testtext");
 | 
			
		||||
  dds_qset_prop(qos, "dds.sec.auth.identity_certificate", "testtext_QOS_IdentityCertificate_testtext");
 | 
			
		||||
  dds_qset_prop(qos, "dds.sec.access.permissions_ca", "file:QOS_Permissions_CA.pem");
 | 
			
		||||
  dds_qset_prop(qos, "dds.sec.access.governance", "file:QOS_Governance.p7s");
 | 
			
		||||
  dds_qset_prop(qos, "dds.sec.access.permissions", "file:QOS_Permissions.p7s");
 | 
			
		||||
 | 
			
		||||
  dds_qset_prop(qos, DDS_SEC_PROP_AUTH_LIBRARY_PATH, ""MOCKLIB_PATH("dds_security_authentication_all_ok")"");
 | 
			
		||||
  dds_qset_prop(qos, DDS_SEC_PROP_AUTH_LIBRARY_INIT, "init_authentication");
 | 
			
		||||
  dds_qset_prop(qos, DDS_SEC_PROP_AUTH_LIBRARY_FINALIZE, "finalize_authentication");
 | 
			
		||||
  dds_qset_prop(qos, DDS_SEC_PROP_CRYPTO_LIBRARY_PATH, ""MOCKLIB_PATH("dds_security_cryptography_all_ok")"");
 | 
			
		||||
  dds_qset_prop(qos, DDS_SEC_PROP_CRYPTO_LIBRARY_INIT, "init_crypto");
 | 
			
		||||
  dds_qset_prop(qos, DDS_SEC_PROP_CRYPTO_LIBRARY_FINALIZE, "finalize_crypto");
 | 
			
		||||
  dds_qset_prop(qos, DDS_SEC_PROP_ACCESS_LIBRARY_PATH, ""MOCKLIB_PATH("dds_security_access_control_all_ok")"");
 | 
			
		||||
  dds_qset_prop(qos, DDS_SEC_PROP_ACCESS_LIBRARY_INIT, "init_access_control");
 | 
			
		||||
  dds_qset_prop(qos, DDS_SEC_PROP_ACCESS_LIBRARY_FINALIZE, "finalize_access_control");
 | 
			
		||||
  dds_qset_prop(qos, "dds.sec.auth.library.path", ""MOCKLIB_PATH("dds_security_authentication_all_ok")"");
 | 
			
		||||
  dds_qset_prop(qos, "dds.sec.auth.library.init", "init_authentication");
 | 
			
		||||
  dds_qset_prop(qos, "dds.sec.auth.library.finalize", "finalize_authentication");
 | 
			
		||||
  dds_qset_prop(qos, "dds.sec.crypto.library.path", ""MOCKLIB_PATH("dds_security_cryptography_all_ok")"");
 | 
			
		||||
  dds_qset_prop(qos, "dds.sec.crypto.library.init", "init_crypto");
 | 
			
		||||
  dds_qset_prop(qos, "dds.sec.crypto.library.finalize", "finalize_crypto");
 | 
			
		||||
  dds_qset_prop(qos, "dds.sec.access.library.path", ""MOCKLIB_PATH("dds_security_access_control_all_ok")"");
 | 
			
		||||
  dds_qset_prop(qos, "dds.sec.access.library.init", "init_access_control");
 | 
			
		||||
  dds_qset_prop(qos, "dds.sec.access.library.finalize", "finalize_access_control");
 | 
			
		||||
  dds_qset_prop(qos, "dds.sec.auth.identity_ca", "testtext_IdentityCA_testtext");
 | 
			
		||||
  dds_qset_prop(qos, "dds.sec.auth.private_key", "testtext_PrivateKey_testtext");
 | 
			
		||||
  dds_qset_prop(qos, "dds.sec.auth.identity_certificate", "testtext_IdentityCertificate_testtext");
 | 
			
		||||
  dds_qset_prop(qos, "dds.sec.access.permissions_ca", "file:Permissions_CA.pem");
 | 
			
		||||
  dds_qset_prop(qos, "dds.sec.access.governance", "file:Governance.p7s");
 | 
			
		||||
  dds_qset_prop(qos, "dds.sec.access.permissions", "file:Permissions.p7s");
 | 
			
		||||
 | 
			
		||||
  /* Set up the trace sinks to detect the config parsing. */
 | 
			
		||||
  dds_set_log_mask(DDS_LC_FATAL | DDS_LC_ERROR | DDS_LC_WARNING | DDS_LC_CONFIG);
 | 
			
		||||
| 
						 | 
				
			
			@ -677,24 +605,7 @@ CU_Test(ddsc_security_config, other_prop, .init = ddsrt_init, .fini = ddsrt_fini
 | 
			
		|||
   * qos containing only non-security properties. */
 | 
			
		||||
  const char *log_expected[] = {
 | 
			
		||||
    /* The security settings from config should have been parsed into the participant QoS. */
 | 
			
		||||
    "PARTICIPANT * QOS={*property_list={value={{test.dds.sec.prop1,testtext_value1_testtext,0},"
 | 
			
		||||
    "{dds.sec.auth.library.path,"MOCKLIB_PATH("dds_security_authentication_all_ok")",0},"
 | 
			
		||||
    "{dds.sec.auth.library.init,init_authentication,0},"
 | 
			
		||||
    "{dds.sec.auth.library.finalize,finalize_authentication,0},"
 | 
			
		||||
    "{dds.sec.crypto.library.path,"MOCKLIB_PATH("dds_security_cryptography_all_ok")",0},"
 | 
			
		||||
    "{dds.sec.crypto.library.init,init_crypto,0},"
 | 
			
		||||
    "{dds.sec.crypto.library.finalize,finalize_crypto,0},"
 | 
			
		||||
    "{dds.sec.access.library.path,"MOCKLIB_PATH("dds_security_access_control_all_ok")",0},"
 | 
			
		||||
    "{dds.sec.access.library.init,init_access_control,0},"
 | 
			
		||||
    "{dds.sec.access.library.finalize,finalize_access_control,0},"
 | 
			
		||||
    "{dds.sec.auth.identity_ca,testtext_IdentityCA_testtext,0},"
 | 
			
		||||
    "{dds.sec.auth.private_key,testtext_PrivateKey_testtext,0},"
 | 
			
		||||
    "{dds.sec.auth.identity_certificate,testtext_IdentityCertificate_testtext,0},"
 | 
			
		||||
    "{dds.sec.access.permissions_ca,file:Permissions_CA.pem,0},"
 | 
			
		||||
    "{dds.sec.access.governance,file:Governance.p7s,0},"
 | 
			
		||||
    "{dds.sec.access.permissions,file:Permissions.p7s,0},"
 | 
			
		||||
    "{dds.sec.auth.password,testtext_Password_testtext,0},"
 | 
			
		||||
    "{dds.sec.auth.trusted_ca_dir,testtext_Dir_testtext,0}}binary_value={}}*}*",
 | 
			
		||||
    PARTICIPANT_QOS_ALL_OK ("0:\"test.dds.sec.prop1\":\"testtext_value1_testtext\",", ",0:\"dds.sec.auth.password\":\"testtext_Password_testtext\",0:\"dds.sec.auth.trusted_ca_dir\":\"testtext_Dir_testtext\"", ""),
 | 
			
		||||
    NULL
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue