<feed xmlns='http://www.w3.org/2005/Atom'>
<title>BobinkCOpcUa/src/common.h, branch master</title>
<subtitle>OPC UA applications in C</subtitle>
<id>http://git.tvcloud.fr/BobinkCOpcUa/atom/src/common.h?h=master</id>
<link rel='self' href='http://git.tvcloud.fr/BobinkCOpcUa/atom/src/common.h?h=master'/>
<link rel='alternate' type='text/html' href='http://git.tvcloud.fr/BobinkCOpcUa/'/>
<updated>2026-02-18T23:47:37Z</updated>
<entry>
<title>Rename print_endpoint to print_endpoint_description and fix clone URL</title>
<updated>2026-02-18T23:47:37Z</updated>
<author>
<name>Thomas Vanbesien</name>
<email>tvanbesi@proton.me</email>
</author>
<published>2026-02-18T23:43:50Z</published>
<link rel='alternate' type='text/html' href='http://git.tvcloud.fr/BobinkCOpcUa/commit/?id=37c0fee672afd3701ea3ed87958da4d548bf1be3'/>
<id>urn:sha1:37c0fee672afd3701ea3ed87958da4d548bf1be3</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Drop auth parameter from create_unsecure_client_config</title>
<updated>2026-02-18T23:38:47Z</updated>
<author>
<name>Thomas Vanbesien</name>
<email>tvanbesi@proton.me</email>
</author>
<published>2026-02-18T23:38:47Z</published>
<link rel='alternate' type='text/html' href='http://git.tvcloud.fr/BobinkCOpcUa/commit/?id=9fe1d1f41069eda254e11746512d6be032db81d5'/>
<id>urn:sha1:9fe1d1f41069eda254e11746512d6be032db81d5</id>
<content type='text'>
Credentials over plaintext SecurityPolicy#None are insecure, so the
unsecure client path now always uses anonymous authentication.
</content>
</entry>
<entry>
<title>Rename all identifiers to strict Linux snake_case</title>
<updated>2026-02-18T22:23:44Z</updated>
<author>
<name>Thomas Vanbesien</name>
<email>tvanbesi@proton.me</email>
</author>
<published>2026-02-18T22:23:44Z</published>
<link rel='alternate' type='text/html' href='http://git.tvcloud.fr/BobinkCOpcUa/commit/?id=3d30c8499ae37ca0ff837e9deaad359de0297765'/>
<id>urn:sha1:3d30c8499ae37ca0ff837e9deaad359de0297765</id>
<content type='text'>
Types PascalCase→snake_case, functions camelCase→snake_case,
static functions get _s_ prefix, globals get g_ prefix,
struct members and locals to snake_case.
</content>
</entry>
<entry>
<title>Extract configureAccessControl() into common</title>
<updated>2026-02-18T21:45:06Z</updated>
<author>
<name>Thomas Vanbesien</name>
<email>tvanbesi@proton.me</email>
</author>
<published>2026-02-18T21:45:06Z</published>
<link rel='alternate' type='text/html' href='http://git.tvcloud.fr/BobinkCOpcUa/commit/?id=74f18c6264618187386a5dc8b1152faa8727bf53'/>
<id>urn:sha1:74f18c6264618187386a5dc8b1152faa8727bf53</id>
<content type='text'>
The access-control switch block was duplicated in server_lds.c and
server_register.c.  Move it to a shared helper in common.c with a
Doxygen block that consolidates the rationale from both call sites.
</content>
</entry>
<entry>
<title>Refactor auth and security params into aggregate types</title>
<updated>2026-02-18T21:01:05Z</updated>
<author>
<name>Thomas Vanbesien</name>
<email>tvanbesi@proton.me</email>
</author>
<published>2026-02-18T21:01:05Z</published>
<link rel='alternate' type='text/html' href='http://git.tvcloud.fr/BobinkCOpcUa/commit/?id=4a0e0ff8cca00a6e4b4557d468894682d1b91333'/>
<id>urn:sha1:4a0e0ff8cca00a6e4b4557d468894682d1b91333</id>
<content type='text'>
Introduce AuthConfig tagged union (AUTH_ANONYMOUS/AUTH_USER/AUTH_CERT)
and SecurityConfig struct to replace scattered parameters. Add
parseSecurityConfig helper to consolidate duplicated security parsing
across all three programs. Simplify opReadTime by moving all auth
handling into the client config factory functions.
</content>
</entry>
<entry>
<title>Add X509 certificate identity token authentication</title>
<updated>2026-02-18T20:44:17Z</updated>
<author>
<name>Thomas Vanbesien</name>
<email>tvanbesi@proton.me</email>
</author>
<published>2026-02-18T20:44:17Z</published>
<link rel='alternate' type='text/html' href='http://git.tvcloud.fr/BobinkCOpcUa/commit/?id=deaabd1464784a6fddbfa9e1ac6cb0e1148a8c34'/>
<id>urn:sha1:deaabd1464784a6fddbfa9e1ac6cb0e1148a8c34</id>
<content type='text'>
Support authMode=cert alongside anonymous and user. The client
reuses its application certificate as the X509 identity token
(open62541 requires both to match). Server-side access control
advertises the certificate token policy automatically when
sessionPKI is configured.
</content>
</entry>
<entry>
<title>Extract createUnsecureClientConfig, fix None endpoint negotiation</title>
<updated>2026-02-18T19:30:33Z</updated>
<author>
<name>Thomas Vanbesien</name>
<email>tvanbesi@proton.me</email>
</author>
<published>2026-02-18T19:30:33Z</published>
<link rel='alternate' type='text/html' href='http://git.tvcloud.fr/BobinkCOpcUa/commit/?id=70381b3381d77845dbc04fd521b729b7098134a5'/>
<id>urn:sha1:70381b3381d77845dbc04fd521b729b7098134a5</id>
<content type='text'>
UA_ClientConfig_setDefault leaves securityMode at SignAndEncrypt,
so unsecure clients failed endpoint negotiation when the LDS only
offered None endpoints.  Extract the unsecure client setup into
createUnsecureClientConfig() which explicitly sets securityMode and
securityPolicyUri to None.

Also enable discovery-only None endpoint on ServerRegister so
unencrypted clients can discover it, and update the unsecure_anonymous
test configs to run fully without encryption.
</content>
</entry>
<entry>
<title>Make discovery-only None endpoint a createServer option</title>
<updated>2026-02-18T16:21:36Z</updated>
<author>
<name>Thomas Vanbesien</name>
<email>tvanbesi@proton.me</email>
</author>
<published>2026-02-18T16:21:36Z</published>
<link rel='alternate' type='text/html' href='http://git.tvcloud.fr/BobinkCOpcUa/commit/?id=02e518fd27b43d0d452a264304de7b3d38a58ef6'/>
<id>urn:sha1:02e518fd27b43d0d452a264304de7b3d38a58ef6</id>
<content type='text'>
Add a discoveryOnly parameter to createServer(). All secure servers
still get the None security policy (needed for the client's initial
GetEndpoints handshake) and securityPolicyNoneDiscoveryOnly, but only
the LDS registers a None endpoint so purely unencrypted clients can
discover it. ServerRegister no longer advertises a None endpoint.
</content>
</entry>
<entry>
<title>Make client/server encryption optional, rename tests to full names</title>
<updated>2026-02-18T14:39:29Z</updated>
<author>
<name>Thomas Vanbesien</name>
<email>tvanbesi@proton.me</email>
</author>
<published>2026-02-18T14:39:29Z</published>
<link rel='alternate' type='text/html' href='http://git.tvcloud.fr/BobinkCOpcUa/commit/?id=99b5b4416193fafaa815746ea756900d2ab26917'/>
<id>urn:sha1:99b5b4416193fafaa815746ea756900d2ab26917</id>
<content type='text'>
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.
</content>
</entry>
<entry>
<title>Extract createServer and parseAuthConfig, simplify programs</title>
<updated>2026-02-17T22:52:06Z</updated>
<author>
<name>Thomas Vanbesien</name>
<email>tvanbesi@proton.me</email>
</author>
<published>2026-02-17T22:52:06Z</published>
<link rel='alternate' type='text/html' href='http://git.tvcloud.fr/BobinkCOpcUa/commit/?id=7648a256d97abda40edbdc0d7bf59edd0a09fb95'/>
<id>urn:sha1:7648a256d97abda40edbdc0d7bf59edd0a09fb95</id>
<content type='text'>
Rename createSecureServer to createServer and add an unsecure path
(UA_ServerConfig_setMinimal) when certPath is NULL, eliminating the
if/else server creation blocks in server_lds.c and server_register.c.

Add parseAuthConfig() to common.c to replace four near-identical
authMode parsing blocks across the three programs.

Restructure server_register.c error handling with goto cleanup,
removing ~20 duplicated cleanup sequences.

Rename the CMake library target from DiscoveryCommon to common.
</content>
</entry>
</feed>
