");    prepare_endpoint_security_attributes(&datareader_security_attributes);    /* Now call the function. */   result = crypto->crypto_key_factory->register_local_datareader(       crypto->crypto_key_factory,       local_participant_crypto_handle,       &datareader_properties,       &datareader_security_attributes,       &exception);    if (exception.code != 0)     printf("register_local_datareader: %s\n", exception.message ? exception.message : "Error message missing");    /* A valid handle to be returned */   CU_ASSERT(result != 0);   CU_ASSERT(exception.code == DDS_SECURITY_ERR_OK_CODE);   assert(result != 0); // for Clang's static analyzer    /* NOTE: It would be better to check if the keys have been generated but there is no interface to get them from handle */   reader_crypto = (local_datareader_crypto *)result;   CU_ASSERT_FATAL(reader_crypto->reader_key_material != NULL);   CU_ASSERT(master_salt_not_empty(reader_crypto->reader_key_material));   CU_ASSERT(master_key_not_empty(reader_crypto->reader_key_material));   CU_ASSERT(reader_crypto->metadata_protectionKind == DDS_SECURITY_PROTECTION_KIND_ENCRYPT);   