// the find
linshenqi/UA-AnsiC
UA ANSI C Stack reference implementation for OPC UA
The OPC Foundation's official ANSI C implementation of the OPC UA stack — the industrial protocol for machine-to-machine communication in factory automation. This is the reference implementation, meaning it's what you'd port to an embedded or constrained device where you can't run a managed runtime. Target audience is embedded/IIoT developers who need OPC UA on bare metal or RTOS environments.
Clean platform abstraction layer — the core stack is isolated from OS specifics, with win32 and linux platform layers that are easy to follow as a porting template. The securechannel implementation covers the full OPC UA security model including certificates, message signing, and encryption via OpenSSL. The directory layout maps directly to the OPC UA spec layers (transport, securechannel, stackcore), which makes it easier to cross-reference against the spec when something breaks. Tested with GCC sanitizers (asan, tsan, ubsan) — unusual care for a C project of this era.
Dead since 2016 — last commit was a decade ago, and OPC UA has moved significantly since then (PubSub, WebSockets transport, UA over TSN). Using this in a new project means inheriting a frozen codebase. Hard dependency on OpenSSL 1.0.1/1.0.2, which is end-of-life and has known CVEs; porting to a modern OpenSSL 3.x or mbedTLS requires non-trivial work in the platform crypto layer. The sample server is explicitly 'not fully supported', so there's no real getting-started path beyond reading the source. The OPC Foundation has since released open62541, an actively maintained C99 stack — there's almost no reason to start a new project on this one.