|
@@ -62,30 +62,29 @@ const UA_ConnectionConfig UA_ConnectionConfig_default = {
|
|
|
STRINGIFY(MAJOR) "." STRINGIFY(MINOR) "." STRINGIFY(PATCH) LABEL
|
|
|
|
|
|
static UA_StatusCode
|
|
|
-createSecurityPolicyNoneEndpoint(UA_ServerConfig *conf, UA_Endpoint *endpoint,
|
|
|
- const UA_ByteString localCertificate) {
|
|
|
- UA_EndpointDescription_init(&endpoint->endpointDescription);
|
|
|
-
|
|
|
- UA_SecurityPolicy_None(&endpoint->securityPolicy, NULL, localCertificate, &conf->logger);
|
|
|
- endpoint->endpointDescription.securityMode = UA_MESSAGESECURITYMODE_NONE;
|
|
|
- endpoint->endpointDescription.securityPolicyUri =
|
|
|
- UA_STRING_ALLOC("http://opcfoundation.org/UA/SecurityPolicy#None");
|
|
|
- endpoint->endpointDescription.transportProfileUri =
|
|
|
+createEndpoint(UA_ServerConfig *conf, UA_EndpointDescription *endpoint,
|
|
|
+ const UA_SecurityPolicy *securityPolicy,
|
|
|
+ UA_MessageSecurityMode securityMode) {
|
|
|
+ UA_EndpointDescription_init(endpoint);
|
|
|
+
|
|
|
+ endpoint->securityMode = securityMode;
|
|
|
+ UA_String_copy(&securityPolicy->policyUri, &endpoint->securityPolicyUri);
|
|
|
+ endpoint->transportProfileUri =
|
|
|
UA_STRING_ALLOC("http://opcfoundation.org/UA-Profile/Transport/uatcp-uasc-uabinary");
|
|
|
|
|
|
|
|
|
UA_StatusCode retval = UA_Array_copy(conf->accessControl.userTokenPolicies,
|
|
|
conf->accessControl.userTokenPoliciesSize,
|
|
|
- (void **)&endpoint->endpointDescription.userIdentityTokens,
|
|
|
+ (void **)&endpoint->userIdentityTokens,
|
|
|
&UA_TYPES[UA_TYPES_USERTOKENPOLICY]);
|
|
|
if(retval != UA_STATUSCODE_GOOD)
|
|
|
return retval;
|
|
|
- endpoint->endpointDescription.userIdentityTokensSize =
|
|
|
+ endpoint->userIdentityTokensSize =
|
|
|
conf->accessControl.userTokenPoliciesSize;
|
|
|
|
|
|
- UA_String_copy(&localCertificate, &endpoint->endpointDescription.serverCertificate);
|
|
|
+ UA_String_copy(&securityPolicy->localCertificate, &endpoint->serverCertificate);
|
|
|
UA_ApplicationDescription_copy(&conf->applicationDescription,
|
|
|
- &endpoint->endpointDescription.server);
|
|
|
+ &endpoint->server);
|
|
|
|
|
|
return UA_STATUSCODE_GOOD;
|
|
|
}
|
|
@@ -98,89 +97,6 @@ UA_ServerConfig_set_customHostname(UA_ServerConfig *config, const UA_String cust
|
|
|
UA_String_copy(&customHostname, &config->customHostname);
|
|
|
}
|
|
|
|
|
|
-#ifdef UA_ENABLE_ENCRYPTION
|
|
|
-
|
|
|
-static UA_StatusCode
|
|
|
-createSecurityPolicyBasic128Rsa15Endpoint(UA_ServerConfig *const conf,
|
|
|
- UA_Endpoint *endpoint,
|
|
|
- UA_MessageSecurityMode securityMode,
|
|
|
- const UA_ByteString localCertificate,
|
|
|
- const UA_ByteString localPrivateKey) {
|
|
|
- UA_EndpointDescription_init(&endpoint->endpointDescription);
|
|
|
-
|
|
|
- UA_StatusCode retval =
|
|
|
- UA_SecurityPolicy_Basic128Rsa15(&endpoint->securityPolicy, &conf->certificateVerification,
|
|
|
- localCertificate, localPrivateKey, &conf->logger);
|
|
|
- if(retval != UA_STATUSCODE_GOOD) {
|
|
|
- endpoint->securityPolicy.deleteMembers(&endpoint->securityPolicy);
|
|
|
- return retval;
|
|
|
- }
|
|
|
-
|
|
|
- endpoint->endpointDescription.securityMode = securityMode;
|
|
|
- endpoint->endpointDescription.securityPolicyUri =
|
|
|
- UA_STRING_ALLOC("http://opcfoundation.org/UA/SecurityPolicy#Basic128Rsa15");
|
|
|
- endpoint->endpointDescription.transportProfileUri =
|
|
|
- UA_STRING_ALLOC("http://opcfoundation.org/UA-Profile/Transport/uatcp-uasc-uabinary");
|
|
|
-
|
|
|
-
|
|
|
- retval = UA_Array_copy(conf->accessControl.userTokenPolicies,
|
|
|
- conf->accessControl.userTokenPoliciesSize,
|
|
|
- (void **)&endpoint->endpointDescription.userIdentityTokens,
|
|
|
- &UA_TYPES[UA_TYPES_USERTOKENPOLICY]);
|
|
|
- if(retval != UA_STATUSCODE_GOOD)
|
|
|
- return retval;
|
|
|
- endpoint->endpointDescription.userIdentityTokensSize =
|
|
|
- conf->accessControl.userTokenPoliciesSize;
|
|
|
-
|
|
|
- UA_String_copy(&localCertificate, &endpoint->endpointDescription.serverCertificate);
|
|
|
- UA_ApplicationDescription_copy(&conf->applicationDescription,
|
|
|
- &endpoint->endpointDescription.server);
|
|
|
-
|
|
|
- return UA_STATUSCODE_GOOD;
|
|
|
-}
|
|
|
-
|
|
|
-static UA_StatusCode
|
|
|
-createSecurityPolicyBasic256Sha256Endpoint(UA_ServerConfig *const conf,
|
|
|
- UA_Endpoint *endpoint,
|
|
|
- UA_MessageSecurityMode securityMode,
|
|
|
- const UA_ByteString localCertificate,
|
|
|
- const UA_ByteString localPrivateKey) {
|
|
|
- UA_EndpointDescription_init(&endpoint->endpointDescription);
|
|
|
-
|
|
|
- UA_StatusCode retval =
|
|
|
- UA_SecurityPolicy_Basic256Sha256(&endpoint->securityPolicy,
|
|
|
- &conf->certificateVerification, localCertificate,
|
|
|
- localPrivateKey, &conf->logger);
|
|
|
- if(retval != UA_STATUSCODE_GOOD) {
|
|
|
- endpoint->securityPolicy.deleteMembers(&endpoint->securityPolicy);
|
|
|
- return retval;
|
|
|
- }
|
|
|
-
|
|
|
- endpoint->endpointDescription.securityMode = securityMode;
|
|
|
- endpoint->endpointDescription.securityPolicyUri =
|
|
|
- UA_STRING_ALLOC("http://opcfoundation.org/UA/SecurityPolicy#Basic256Sha256");
|
|
|
- endpoint->endpointDescription.transportProfileUri =
|
|
|
- UA_STRING_ALLOC("http://opcfoundation.org/UA-Profile/Transport/uatcp-uasc-uabinary");
|
|
|
-
|
|
|
-
|
|
|
- retval = UA_Array_copy(conf->accessControl.userTokenPolicies,
|
|
|
- conf->accessControl.userTokenPoliciesSize,
|
|
|
- (void **)&endpoint->endpointDescription.userIdentityTokens,
|
|
|
- &UA_TYPES[UA_TYPES_USERTOKENPOLICY]);
|
|
|
- if(retval != UA_STATUSCODE_GOOD)
|
|
|
- return retval;
|
|
|
- endpoint->endpointDescription.userIdentityTokensSize =
|
|
|
- conf->accessControl.userTokenPoliciesSize;
|
|
|
-
|
|
|
- UA_String_copy(&localCertificate, &endpoint->endpointDescription.serverCertificate);
|
|
|
- UA_ApplicationDescription_copy(&conf->applicationDescription,
|
|
|
- &endpoint->endpointDescription.server);
|
|
|
-
|
|
|
- return UA_STATUSCODE_GOOD;
|
|
|
-}
|
|
|
-
|
|
|
-#endif
|
|
|
-
|
|
|
const size_t usernamePasswordsSize = 2;
|
|
|
UA_UsernamePasswordLogin usernamePasswords[2] = {
|
|
|
{UA_STRING_STATIC("user1"), UA_STRING_STATIC("password")},
|
|
@@ -353,8 +269,27 @@ UA_ServerConfig_new_customBuffer(UA_UInt16 portNumber,
|
|
|
return NULL;
|
|
|
}
|
|
|
|
|
|
+
|
|
|
+ conf->securityPoliciesSize = 1;
|
|
|
+ conf->securityPolicies = (UA_SecurityPolicy *)UA_malloc(sizeof(UA_SecurityPolicy));
|
|
|
+ if(!conf->securityPolicies) {
|
|
|
+ UA_ServerConfig_delete(conf);
|
|
|
+ return NULL;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ UA_ByteString localCertificate = UA_BYTESTRING_NULL;
|
|
|
+ if(certificate)
|
|
|
+ localCertificate = *certificate;
|
|
|
+ retval =
|
|
|
+ UA_SecurityPolicy_None(&conf->securityPolicies[0], NULL, localCertificate, &conf->logger);
|
|
|
+ if(retval != UA_STATUSCODE_GOOD) {
|
|
|
+ UA_ServerConfig_delete(conf);
|
|
|
+ return NULL;
|
|
|
+ }
|
|
|
+
|
|
|
|
|
|
- conf->endpoints = (UA_Endpoint *)UA_malloc(sizeof(UA_Endpoint));
|
|
|
+ conf->endpoints = (UA_EndpointDescription *)UA_malloc(sizeof(UA_EndpointDescription));
|
|
|
if(!conf->endpoints) {
|
|
|
UA_ServerConfig_delete(conf);
|
|
|
return NULL;
|
|
@@ -362,11 +297,9 @@ UA_ServerConfig_new_customBuffer(UA_UInt16 portNumber,
|
|
|
conf->endpointsSize = 1;
|
|
|
|
|
|
|
|
|
- UA_ByteString localCertificate = UA_BYTESTRING_NULL;
|
|
|
- if(certificate)
|
|
|
- localCertificate = *certificate;
|
|
|
retval =
|
|
|
- createSecurityPolicyNoneEndpoint(conf, &conf->endpoints[0], localCertificate);
|
|
|
+ createEndpoint(conf, &conf->endpoints[0], &conf->securityPolicies[0],
|
|
|
+ UA_MESSAGESECURITYMODE_NONE);
|
|
|
if(retval != UA_STATUSCODE_GOOD) {
|
|
|
UA_ServerConfig_delete(conf);
|
|
|
return NULL;
|
|
@@ -410,9 +343,41 @@ UA_ServerConfig_new_basic128rsa15(UA_UInt16 portNumber,
|
|
|
UA_LOG_WARNING(UA_Log_Stdout, UA_LOGCATEGORY_USERLAND,
|
|
|
"No CA trust-list provided. Any remote certificate will be accepted.");
|
|
|
|
|
|
+
|
|
|
+ conf->securityPoliciesSize = 0;
|
|
|
+ conf->securityPolicies = (UA_SecurityPolicy *)UA_malloc(sizeof(UA_SecurityPolicy) * 2);
|
|
|
+ if(!conf->securityPolicies) {
|
|
|
+ UA_ServerConfig_delete(conf);
|
|
|
+ return NULL;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ UA_ByteString localCertificate = UA_BYTESTRING_NULL;
|
|
|
+ UA_ByteString localPrivateKey = UA_BYTESTRING_NULL;
|
|
|
+ if(certificate)
|
|
|
+ localCertificate = *certificate;
|
|
|
+ if(privateKey)
|
|
|
+ localPrivateKey = *privateKey;
|
|
|
+
|
|
|
+ ++conf->securityPoliciesSize;
|
|
|
+ retval =
|
|
|
+ UA_SecurityPolicy_None(&conf->securityPolicies[0], NULL, localCertificate, &conf->logger);
|
|
|
+ if(retval != UA_STATUSCODE_GOOD) {
|
|
|
+ UA_ServerConfig_delete(conf);
|
|
|
+ return NULL;
|
|
|
+ }
|
|
|
+ ++conf->securityPoliciesSize;
|
|
|
+ retval =
|
|
|
+ UA_SecurityPolicy_Basic128Rsa15(&conf->securityPolicies[1], &conf->certificateVerification,
|
|
|
+ localCertificate, localPrivateKey, &conf->logger);
|
|
|
+ if(retval != UA_STATUSCODE_GOOD) {
|
|
|
+ UA_ServerConfig_delete(conf);
|
|
|
+ return NULL;
|
|
|
+ }
|
|
|
+
|
|
|
|
|
|
conf->endpointsSize = 0;
|
|
|
- conf->endpoints = (UA_Endpoint *)UA_malloc(sizeof(UA_Endpoint) * 3);
|
|
|
+ conf->endpoints = (UA_EndpointDescription *)UA_malloc(sizeof(UA_EndpointDescription) * 3);
|
|
|
if(!conf->endpoints) {
|
|
|
UA_ServerConfig_delete(conf);
|
|
|
return NULL;
|
|
@@ -420,25 +385,24 @@ UA_ServerConfig_new_basic128rsa15(UA_UInt16 portNumber,
|
|
|
|
|
|
|
|
|
++conf->endpointsSize;
|
|
|
- retval = createSecurityPolicyNoneEndpoint(conf, &conf->endpoints[0], *certificate);
|
|
|
+ retval = createEndpoint(conf, &conf->endpoints[0], &conf->securityPolicies[0],
|
|
|
+ UA_MESSAGESECURITYMODE_NONE);
|
|
|
if(retval != UA_STATUSCODE_GOOD) {
|
|
|
UA_ServerConfig_delete(conf);
|
|
|
return NULL;
|
|
|
}
|
|
|
|
|
|
++conf->endpointsSize;
|
|
|
- retval = createSecurityPolicyBasic128Rsa15Endpoint(conf, &conf->endpoints[1],
|
|
|
- UA_MESSAGESECURITYMODE_SIGN, *certificate,
|
|
|
- *privateKey);
|
|
|
+ retval = createEndpoint(conf, &conf->endpoints[1], &conf->securityPolicies[1],
|
|
|
+ UA_MESSAGESECURITYMODE_SIGN);
|
|
|
if(retval != UA_STATUSCODE_GOOD) {
|
|
|
UA_ServerConfig_delete(conf);
|
|
|
return NULL;
|
|
|
}
|
|
|
|
|
|
++conf->endpointsSize;
|
|
|
- retval = createSecurityPolicyBasic128Rsa15Endpoint(conf, &conf->endpoints[2],
|
|
|
- UA_MESSAGESECURITYMODE_SIGNANDENCRYPT, *certificate,
|
|
|
- *privateKey);
|
|
|
+ retval = createEndpoint(conf, &conf->endpoints[2], &conf->securityPolicies[1],
|
|
|
+ UA_MESSAGESECURITYMODE_SIGNANDENCRYPT);
|
|
|
if(retval != UA_STATUSCODE_GOOD) {
|
|
|
UA_ServerConfig_delete(conf);
|
|
|
return NULL;
|
|
@@ -480,9 +444,40 @@ UA_ServerConfig_new_basic256sha256(UA_UInt16 portNumber,
|
|
|
UA_LOG_WARNING(UA_Log_Stdout, UA_LOGCATEGORY_USERLAND,
|
|
|
"No CA trust-list provided. Any remote certificate will be accepted.");
|
|
|
|
|
|
+
|
|
|
+ conf->securityPoliciesSize = 0;
|
|
|
+ conf->securityPolicies = (UA_SecurityPolicy *)UA_malloc(sizeof(UA_SecurityPolicy) * 2);
|
|
|
+ if(!conf->securityPolicies) {
|
|
|
+ UA_ServerConfig_delete(conf);
|
|
|
+ return NULL;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ UA_ByteString localCertificate = UA_BYTESTRING_NULL;
|
|
|
+ UA_ByteString localPrivateKey = UA_BYTESTRING_NULL;
|
|
|
+ if(certificate)
|
|
|
+ localCertificate = *certificate;
|
|
|
+ if(privateKey)
|
|
|
+ localPrivateKey = *privateKey;
|
|
|
+ ++conf->securityPoliciesSize;
|
|
|
+ retval =
|
|
|
+ UA_SecurityPolicy_None(&conf->securityPolicies[0], NULL, localCertificate, &conf->logger);
|
|
|
+ if(retval != UA_STATUSCODE_GOOD) {
|
|
|
+ UA_ServerConfig_delete(conf);
|
|
|
+ return NULL;
|
|
|
+ }
|
|
|
+ ++conf->securityPoliciesSize;
|
|
|
+ retval =
|
|
|
+ UA_SecurityPolicy_Basic256Sha256(&conf->securityPolicies[1], &conf->certificateVerification,
|
|
|
+ localCertificate, localPrivateKey, &conf->logger);
|
|
|
+ if(retval != UA_STATUSCODE_GOOD) {
|
|
|
+ UA_ServerConfig_delete(conf);
|
|
|
+ return NULL;
|
|
|
+ }
|
|
|
+
|
|
|
|
|
|
conf->endpointsSize = 0;
|
|
|
- conf->endpoints = (UA_Endpoint *)UA_malloc(sizeof(UA_Endpoint) * 3);
|
|
|
+ conf->endpoints = (UA_EndpointDescription *)UA_malloc(sizeof(UA_EndpointDescription) * 3);
|
|
|
if(!conf->endpoints) {
|
|
|
UA_ServerConfig_delete(conf);
|
|
|
return NULL;
|
|
@@ -490,25 +485,24 @@ UA_ServerConfig_new_basic256sha256(UA_UInt16 portNumber,
|
|
|
|
|
|
|
|
|
++conf->endpointsSize;
|
|
|
- retval = createSecurityPolicyNoneEndpoint(conf, &conf->endpoints[0], *certificate);
|
|
|
+ retval = createEndpoint(conf, &conf->endpoints[0], &conf->securityPolicies[0],
|
|
|
+ UA_MESSAGESECURITYMODE_NONE);
|
|
|
if(retval != UA_STATUSCODE_GOOD) {
|
|
|
UA_ServerConfig_delete(conf);
|
|
|
return NULL;
|
|
|
}
|
|
|
|
|
|
++conf->endpointsSize;
|
|
|
- retval = createSecurityPolicyBasic256Sha256Endpoint(conf, &conf->endpoints[1],
|
|
|
- UA_MESSAGESECURITYMODE_SIGN, *certificate,
|
|
|
- *privateKey);
|
|
|
+ retval = createEndpoint(conf, &conf->endpoints[1], &conf->securityPolicies[1],
|
|
|
+ UA_MESSAGESECURITYMODE_SIGN);
|
|
|
if(retval != UA_STATUSCODE_GOOD) {
|
|
|
UA_ServerConfig_delete(conf);
|
|
|
return NULL;
|
|
|
}
|
|
|
|
|
|
++conf->endpointsSize;
|
|
|
- retval = createSecurityPolicyBasic256Sha256Endpoint(conf, &conf->endpoints[2],
|
|
|
- UA_MESSAGESECURITYMODE_SIGNANDENCRYPT, *certificate,
|
|
|
- *privateKey);
|
|
|
+ retval = createEndpoint(conf, &conf->endpoints[2], &conf->securityPolicies[1],
|
|
|
+ UA_MESSAGESECURITYMODE_SIGNANDENCRYPT);
|
|
|
if(retval != UA_STATUSCODE_GOOD) {
|
|
|
UA_ServerConfig_delete(conf);
|
|
|
return NULL;
|
|
@@ -550,52 +544,88 @@ UA_ServerConfig_new_allSecurityPolicies(UA_UInt16 portNumber,
|
|
|
UA_LOG_WARNING(UA_Log_Stdout, UA_LOGCATEGORY_USERLAND,
|
|
|
"No CA trust-list provided. Any remote certificate will be accepted.");
|
|
|
|
|
|
+
|
|
|
+ conf->securityPoliciesSize = 0;
|
|
|
+ conf->securityPolicies = (UA_SecurityPolicy *)UA_malloc(sizeof(UA_SecurityPolicy) * 3);
|
|
|
+ if(!conf->securityPolicies) {
|
|
|
+ UA_ServerConfig_delete(conf);
|
|
|
+ return NULL;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ UA_ByteString localCertificate = UA_BYTESTRING_NULL;
|
|
|
+ UA_ByteString localPrivateKey = UA_BYTESTRING_NULL;
|
|
|
+ if(certificate)
|
|
|
+ localCertificate = *certificate;
|
|
|
+ if(privateKey)
|
|
|
+ localPrivateKey = *privateKey;
|
|
|
+ ++conf->securityPoliciesSize;
|
|
|
+ retval =
|
|
|
+ UA_SecurityPolicy_None(&conf->securityPolicies[0], NULL, localCertificate, &conf->logger);
|
|
|
+ if(retval != UA_STATUSCODE_GOOD) {
|
|
|
+ UA_ServerConfig_delete(conf);
|
|
|
+ return NULL;
|
|
|
+ }
|
|
|
+ ++conf->securityPoliciesSize;
|
|
|
+ retval =
|
|
|
+ UA_SecurityPolicy_Basic128Rsa15(&conf->securityPolicies[1], &conf->certificateVerification,
|
|
|
+ localCertificate, localPrivateKey, &conf->logger);
|
|
|
+ if(retval != UA_STATUSCODE_GOOD) {
|
|
|
+ UA_ServerConfig_delete(conf);
|
|
|
+ return NULL;
|
|
|
+ }
|
|
|
+ ++conf->securityPoliciesSize;
|
|
|
+ retval =
|
|
|
+ UA_SecurityPolicy_Basic256Sha256(&conf->securityPolicies[2], &conf->certificateVerification,
|
|
|
+ localCertificate, localPrivateKey, &conf->logger);
|
|
|
+ if(retval != UA_STATUSCODE_GOOD) {
|
|
|
+ UA_ServerConfig_delete(conf);
|
|
|
+ return NULL;
|
|
|
+ }
|
|
|
+
|
|
|
|
|
|
conf->endpointsSize = 0;
|
|
|
- conf->endpoints = (UA_Endpoint *)UA_malloc(sizeof(UA_Endpoint) * 5);
|
|
|
+ conf->endpoints = (UA_EndpointDescription *)UA_malloc(sizeof(UA_EndpointDescription) * 5);
|
|
|
if(!conf->endpoints) {
|
|
|
UA_ServerConfig_delete(conf);
|
|
|
return NULL;
|
|
|
}
|
|
|
|
|
|
|
|
|
- retval = createSecurityPolicyNoneEndpoint(conf, &conf->endpoints[conf->endpointsSize], *certificate);
|
|
|
+ retval = createEndpoint(conf, &conf->endpoints[conf->endpointsSize], &conf->securityPolicies[0],
|
|
|
+ UA_MESSAGESECURITYMODE_NONE);
|
|
|
++conf->endpointsSize;
|
|
|
if(retval != UA_STATUSCODE_GOOD) {
|
|
|
UA_ServerConfig_delete(conf);
|
|
|
return NULL;
|
|
|
}
|
|
|
|
|
|
- retval = createSecurityPolicyBasic128Rsa15Endpoint(conf, &conf->endpoints[conf->endpointsSize],
|
|
|
- UA_MESSAGESECURITYMODE_SIGN, *certificate,
|
|
|
- *privateKey);
|
|
|
+ retval = createEndpoint(conf, &conf->endpoints[conf->endpointsSize], &conf->securityPolicies[1],
|
|
|
+ UA_MESSAGESECURITYMODE_SIGN);
|
|
|
++conf->endpointsSize;
|
|
|
if(retval != UA_STATUSCODE_GOOD) {
|
|
|
UA_ServerConfig_delete(conf);
|
|
|
return NULL;
|
|
|
}
|
|
|
|
|
|
- retval = createSecurityPolicyBasic128Rsa15Endpoint(conf, &conf->endpoints[conf->endpointsSize],
|
|
|
- UA_MESSAGESECURITYMODE_SIGNANDENCRYPT, *certificate,
|
|
|
- *privateKey);
|
|
|
+ retval = createEndpoint(conf, &conf->endpoints[conf->endpointsSize], &conf->securityPolicies[1],
|
|
|
+ UA_MESSAGESECURITYMODE_SIGNANDENCRYPT);
|
|
|
++conf->endpointsSize;
|
|
|
if(retval != UA_STATUSCODE_GOOD) {
|
|
|
UA_ServerConfig_delete(conf);
|
|
|
return NULL;
|
|
|
}
|
|
|
|
|
|
- retval = createSecurityPolicyBasic256Sha256Endpoint(conf, &conf->endpoints[conf->endpointsSize],
|
|
|
- UA_MESSAGESECURITYMODE_SIGN, *certificate,
|
|
|
- *privateKey);
|
|
|
+ retval = createEndpoint(conf, &conf->endpoints[conf->endpointsSize], &conf->securityPolicies[2],
|
|
|
+ UA_MESSAGESECURITYMODE_SIGN);
|
|
|
++conf->endpointsSize;
|
|
|
if(retval != UA_STATUSCODE_GOOD) {
|
|
|
UA_ServerConfig_delete(conf);
|
|
|
return NULL;
|
|
|
}
|
|
|
|
|
|
- retval = createSecurityPolicyBasic256Sha256Endpoint(conf, &conf->endpoints[conf->endpointsSize],
|
|
|
- UA_MESSAGESECURITYMODE_SIGNANDENCRYPT, *certificate,
|
|
|
- *privateKey);
|
|
|
+ retval = createEndpoint(conf, &conf->endpoints[conf->endpointsSize], &conf->securityPolicies[2],
|
|
|
+ UA_MESSAGESECURITYMODE_SIGNANDENCRYPT);
|
|
|
++conf->endpointsSize;
|
|
|
if(retval != UA_STATUSCODE_GOOD) {
|
|
|
UA_ServerConfig_delete(conf);
|
|
@@ -640,11 +670,17 @@ UA_ServerConfig_delete(UA_ServerConfig *config) {
|
|
|
UA_String_deleteMembers(&config->customHostname);
|
|
|
config->customHostname = UA_STRING_NULL;
|
|
|
|
|
|
- for(size_t i = 0; i < config->endpointsSize; ++i) {
|
|
|
- UA_SecurityPolicy *policy = &config->endpoints[i].securityPolicy;
|
|
|
+ for(size_t i = 0; i < config->securityPoliciesSize; ++i) {
|
|
|
+ UA_SecurityPolicy *policy = &config->securityPolicies[i];
|
|
|
policy->deleteMembers(policy);
|
|
|
- UA_EndpointDescription_deleteMembers(&config->endpoints[i].endpointDescription);
|
|
|
}
|
|
|
+ UA_free(config->securityPolicies);
|
|
|
+ config->securityPolicies = NULL;
|
|
|
+ config->securityPoliciesSize = 0;
|
|
|
+
|
|
|
+ for(size_t i = 0; i < config->endpointsSize; ++i)
|
|
|
+ UA_EndpointDescription_deleteMembers(&config->endpoints[i]);
|
|
|
+
|
|
|
UA_free(config->endpoints);
|
|
|
config->endpoints = NULL;
|
|
|
config->endpointsSize = 0;
|