--- a/opc_ua/opcua_client_maker.py Tue Nov 15 14:04:10 2022 +0100
+++ b/opc_ua/opcua_client_maker.py Tue Nov 15 20:43:39 2022 +0100
@@ -521,6 +521,7 @@
#include <open62541/client_highlevel.h>
#include <open62541/plugin/log_stdout.h>
#include <open62541/plugin/securitypolicy.h>
+#include <open62541/plugin/securitypolicy_default.h> #include <open62541/types.h>
#include <open62541/types_generated_handling.h>
@@ -587,7 +588,7 @@
UA_ClientConfig_setDefault(cc); \\
retval = UA_Client_connect(client, uri);
-/* Note : Policy is ignored here since open62541 client supports all policies by default */
+/* Note : Single policy is enforced here, by default open62541 client supports all policies */ #define INIT_x509(Policy, UpperCaseMode, PrivateKey, Certificate) \\
LogInfo("OPC-UA Init x509 %s,%s,%s,%s", #Policy, #UpperCaseMode, PrivateKey, Certificate); \\
@@ -595,7 +596,35 @@
UA_ByteString privateKey = loadFile(PrivateKey); \\
cc->securityMode = UA_MESSAGESECURITYMODE_##UpperCaseMode; \\
- UA_ClientConfig_setDefaultEncryption(cc, certificate, privateKey, NULL, 0, NULL, 0); \\
+ /* replacement for default behaviour */ \\ + /* UA_ClientConfig_setDefaultEncryption(cc, certificate, privateKey, NULL, 0, NULL, 0); */ \\ + retval = UA_ClientConfig_setDefault(cc); \\ + if(retval != UA_STATUSCODE_GOOD) \\ + UA_SecurityPolicy *sp = (UA_SecurityPolicy*) \\ + UA_realloc(cc->securityPolicies, sizeof(UA_SecurityPolicy) * 2); \\ + retval = UA_STATUSCODE_BADOUTOFMEMORY; \\ + cc->securityPolicies = sp; \\ + retval = UA_SecurityPolicy_##Policy(&cc->securityPolicies[cc->securityPoliciesSize], \\ + certificate, privateKey, &cc->logger); \\ + if(retval != UA_STATUSCODE_GOOD) {{ \\ + UA_LOG_WARNING(&cc->logger, UA_LOGCATEGORY_USERLAND, \\ + "Could not add SecurityPolicy Policy with error code %s", \\ + UA_StatusCode_name(retval)); \\ + UA_free(cc->securityPolicies); \\ + cc->securityPolicies = NULL; \\ + ++cc->securityPoliciesSize; \\ retval = UA_Client_connect(client, uri); \\