zerodds-opcua-uacp

OPC-UA stack. OPC UA Connection Protocol (UACP, Part 6 §7.1) and SecureChannel (Part 6 §6.7): the opc.tcp message framing for the client/server stack.

zerodds-opcua-uacp is the wire layer under zerodds-opcua-server. Every UACP message starts with an 8-byte header (MessageType, ChunkType, MessageSize). On top of that come the SecureChannel chunks OPN, MSG and CLO, the common service headers and the OpenSecureChannel service. SecurityMode None works without the crypto feature; the secured SecurityPolicies sit on top through SecuritySession. The Part 6 §5 binary codec is reused from zerodds-opcua-pubsub; UaReader, UaWriter, DecodeError and EncodeError are re-exported.

  • connection — MessageHeader, MessageType, ChunkType, HelloMessage, AcknowledgeMessage, ErrorMessage, ReverseHelloMessage.
  • securechannel — chunk framing with the asymmetric security header (OPN) and the symmetric one (MSG/CLO), SequenceHeader, ChannelSecurityToken, RequestHeader/ResponseHeader, OpenSecureChannelRequest/Response, parse_chunk; open_incoming reassembles messages from intermediate (C), final (F) and abort (A) chunks; split_messages splits a byte stream by MessageSize.
  • crypto (feature) — SecurityPolicies Basic256Sha256, Aes128_Sha256_RsaOaep, Aes256_Sha256_RsaPss: P-SHA256 key derivation, AES-128/256-CBC with HMAC-SHA256 for symmetric chunks, RSA-OAEP with RSA-PKCS#1-v1.5 or RSA-PSS signatures for OPN, SHA-1 certificate thumbprint. The caller supplies the CSPRNG.

Spec anchors

  • OPC UA Part 6 §7.1.2 (UACP; §7.1.2.2 message header, Hello, Acknowledge, Error, ReverseHello), §6.7 (SecureChannel; §6.7.2 chunk security layout, §6.7.3 abort, §6.7.6 key derivation), §5.2 (binary encoding).
  • OPC UA Part 4 §5.6.2 (OpenSecureChannel, ChannelSecurityToken), §7.32 (RequestHeader), §7.33 (ResponseHeader).
  • OPC UA Part 7 SecurityPolicies Basic256Sha256, Aes128_Sha256_RsaOaep, Aes256_Sha256_RsaPss.
  • Coverage: opcua-client-server-1.05.

Consumers

  • zerodds-opcua-server.
  • zerodds-opcua-bridge (passes crypto through).

Features

  • std (default) — enables alloc and the std features of zerodds-opcua-pubsub and zerodds-opcua-gateway; adds std::error::Error for CryptoError.
  • alloc — enables the alloc features of the same two crates.
  • crypto — pulls in aes, cbc, hmac, sha2, sha1, rsa (RustCrypto); compiles the crypto module and SecuritySession. Does not require std.

Status

  • no_std with alloc unless std is enabled.
  • forbid(unsafe_code).
  • Library only, no binaries.
  • 23 test functions in the source (src/).

zerodds-opcua-uacp

OPC-UA-Stack. OPC UA Connection Protocol (UACP, Part 6 §7.1) und SecureChannel (Part 6 §6.7): die Rahmung der opc.tcp-Nachrichten für den Client/Server-Stack.

zerodds-opcua-uacp ist die Übertragungsschicht unter zerodds-opcua-server. Jede UACP-Nachricht beginnt mit einem 8 Byte langen Kopf (MessageType, ChunkType, MessageSize). Darauf setzen die Chunks des SecureChannel OPN, MSG und CLO, die gemeinsamen Dienstköpfe und der Dienst OpenSecureChannel auf. SecurityMode None funktioniert ohne das Feature crypto; die gesicherten SecurityPolicies setzen über SecuritySession darauf auf. Der binäre Codec aus Part 6 §5 wird aus zerodds-opcua-pubsub übernommen; UaReader, UaWriter, DecodeError und EncodeError werden reexportiert.

  • connection — MessageHeader, MessageType, ChunkType, HelloMessage, AcknowledgeMessage, ErrorMessage, ReverseHelloMessage.
  • securechannel — Rahmung der Chunks mit asymmetrischem Sicherheitskopf (OPN) und symmetrischem (MSG/CLO), SequenceHeader, ChannelSecurityToken, RequestHeader/ResponseHeader, OpenSecureChannelRequest/Response, parse_chunk; open_incoming setzt Nachrichten aus Chunks der Arten Zwischenteil (C), Schluss (F) und Abbruch (A) zusammen; split_messages teilt einen Bytestrom anhand von MessageSize.
  • crypto (Feature) — SecurityPolicies Basic256Sha256, Aes128_Sha256_RsaOaep, Aes256_Sha256_RsaPss: Schlüsselableitung mit P-SHA256, AES-128/256-CBC mit HMAC-SHA256 für symmetrische Chunks, RSA-OAEP mit Signaturen nach RSA-PKCS#1-v1.5 oder RSA-PSS für OPN, SHA-1-Fingerabdruck des Zertifikats. Den CSPRNG liefert der Aufrufer.

Spec-Anker

  • OPC UA Part 6 §7.1.2 (UACP; §7.1.2.2 Nachrichtenkopf, Hello, Acknowledge, Error, ReverseHello), §6.7 (SecureChannel; §6.7.2 Sicherheitsaufbau der Chunks, §6.7.3 Abbruch, §6.7.6 Schlüsselableitung), §5.2 (binäre Kodierung).
  • OPC UA Part 4 §5.6.2 (OpenSecureChannel, ChannelSecurityToken), §7.32 (RequestHeader), §7.33 (ResponseHeader).
  • OPC UA Part 7 SecurityPolicies Basic256Sha256, Aes128_Sha256_RsaOaep, Aes256_Sha256_RsaPss.
  • Abdeckung: opcua-client-server-1.05.

Konsumenten

  • zerodds-opcua-server.
  • zerodds-opcua-bridge (reicht crypto durch).

Features

  • std (Standard) — aktiviert alloc und die Features std von zerodds-opcua-pubsub und zerodds-opcua-gateway; ergänzt std::error::Error für CryptoError.
  • alloc — aktiviert die Features alloc derselben beiden Crates.
  • crypto — bindet aes, cbc, hmac, sha2, sha1, rsa (RustCrypto) ein; kompiliert das Modul crypto und SecuritySession. Setzt std nicht voraus.

Status

  • no_std mit alloc, solange std nicht aktiviert ist.
  • forbid(unsafe_code).
  • Nur Bibliothek, keine Binaries.
  • 23 Testfunktionen im Quelltext (src/).