aboutsummaryrefslogtreecommitdiffstats
path: root/src/common.c
diff options
context:
space:
mode:
authorThomas Vanbesien <tvanbesi@proton.me>2026-02-18 15:39:29 +0100
committerThomas Vanbesien <tvanbesi@proton.me>2026-02-18 15:39:29 +0100
commit99b5b4416193fafaa815746ea756900d2ab26917 (patch)
tree7d1ab48fcc2e8406df8d2606b691ee9e6911dcd0 /src/common.c
parent12989671c9f43707701a8cef8e77e34b1bf24a37 (diff)
downloadBobinkCOpcUa-99b5b4416193fafaa815746ea756900d2ab26917.tar.gz
BobinkCOpcUa-99b5b4416193fafaa815746ea756900d2ab26917.zip
Make client/server encryption optional, rename tests to full names
Make encryption optional for both ServerRegister's LDS client connection and the server side of ServerLDS/ServerRegister: when certificate, privateKey, and trustStore are omitted the programs run with SecurityPolicy#None only. Secure servers also add a discovery-only None endpoint so unencrypted clients can still call FindServers and GetEndpoints. Consolidate tests from 5 policy-specific cases (nosec_anon, none_user, basic256sha256_anon, aes256_anon, aes128_user) down to 3 that cover the important axes: unsecure_anonymous, secure_anonymous, secure_user. Rename directories to use full names. Auto-generate certificates and trust stores in run_test.sh. Update readme and CLAUDE.md to reflect the current program interface (unified Client binary, split ServerRegister configs) and the new test names.
Diffstat (limited to 'src/common.c')
-rw-r--r--src/common.c12
1 files changed, 11 insertions, 1 deletions
diff --git a/src/common.c b/src/common.c
index 39a2a68..f8b08a1 100644
--- a/src/common.c
+++ b/src/common.c
@@ -356,10 +356,20 @@ createServer (UA_UInt16 port, const char *applicationUri, const char *certPath,
for (size_t i = 0; i < trustSize; i++)
trustList[i] = loadFile (trustPaths[i]);
- *retval = UA_ServerConfig_setDefaultWithSecurityPolicies (
+ *retval = UA_ServerConfig_setDefaultWithSecureSecurityPolicies (
config, port, &certificate, &privateKey, trustList, trustSize, NULL,
0, NULL, 0);
+ /* Also offer SecurityPolicy#None, but restricted to discovery
+ services (FindServers, GetEndpoints) so that unencrypted clients
+ can still discover the server without being able to open a
+ full session. */
+ if (*retval == UA_STATUSCODE_GOOD)
+ {
+ UA_ServerConfig_addSecurityPolicyNone (config, &certificate);
+ config->securityPolicyNoneDiscoveryOnly = true;
+ }
+
UA_ByteString_clear (&certificate);
UA_ByteString_clear (&privateKey);
for (size_t i = 0; i < trustSize; i++)