From 87e374b550902efc7e7abd19298972601c0aed98 Mon Sep 17 00:00:00 2001 From: Adam Lock Date: Wed, 29 Jan 2020 23:37:59 +0000 Subject: [PATCH] Documentation changes --- CHANGELOG.md | 9 +++++---- docs/compatibility.md | 12 ++++++++---- docs/design.md | 3 ++- 3 files changed, 15 insertions(+), 9 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3f45a3952..21c7f0cf5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -16,8 +16,6 @@ Planned future work is listed at the bottom. - Prevent nested arrays from being deserialized. - Multiple chunk support in client and server, sending and receiving. - Add more session diagnostics to the address space - - Update Tokio/Futures for `async`/`await` - Rust 2018 will implement new async functionality over time - and this project will reflect best practice. - More asynchronous actions internal to the server and client, possibly also the client api and some callbacks. - Better access control, i.e. user access level reflecting the active session - Certificate trust via signed certificate chain / trusted cert store @@ -183,16 +181,19 @@ Planned future work is listed at the bottom. An aspirational list of things that would be nice to implement in the future: ## Short term - - Support Aes128-Sha256-RsaOaep and Aes256-Sha256-RsaPss security policies + - Support Aes128-Sha256-RsaOaep security policy + - Support Aes256-Sha256-RsaPss security policy - note that the RSA-PSS padding makes it more complex than Aes128-Sha256-RsaOaep - ReadValueId and HistoryReadValueId should check the data_encoding field, validate it and attempt to return the DataValue with the value encoding as per spec. - ReadValueId should check the index_range field to return an element or range of elements from an array. ## Longer term + - Update Tokio/Futures for `async`/`await` - Rust 2018 will implement new async functionality over time + and this project will reflect best practice. A new version of Tokio needs to drop for this to happen. - User-level permission model, i.e. ability to limit access to address space based on identity - Replace more OpenSSL with a native Rust equivalent library. Must support all the crypto, hashing / digest and key - creation APIs required by the lib. + creation APIs required by the lib. See this [doc](./docs/crypto.md) for the effort required. - Tokio codec - use a codec and frame writer to write message chunks - Model enforcement rules for address space data coherence. At present, the server is expected to just know what it is doing. Perhaps that is a reasonable thing to assume. diff --git a/docs/compatibility.md b/docs/compatibility.md index 79fb2998f..bff80c371 100644 --- a/docs/compatibility.md +++ b/docs/compatibility.md @@ -2,9 +2,10 @@ ## OPC UA Binary Transport Protocol -This implementation implement the `opc.tcp://` binary format. Binary over `https://` might happen at a later time. +This implementation supports the `opc.tcp://` binary protocol. Binary over `https://` is not supported although it is +conceivable that it could be supported. -It will **not** implement OPC UA over XML. XML hasn't see much adoption so this is no great impediment. +The implement will **not** implement OPC UA over XML. XML hasn't see much adoption so this is no great impediment. ## Server @@ -64,12 +65,15 @@ The following services are supported: * Method service set * Call -Other service calls are unsupported. Calling an unsupported service will terminate the session. +Other service / method calls are unsupported. Calling an unsupported service will terminate the session. Calling +an unsupported method will generate a service fault. ### Address Space / Nodeset The standard OPC UA address space is exposed. OPC UA for Rust uses a script to generate code to create and -populate the standard address space. +populate the standard address space. This functionality is controlled by a server build feature `generated-address-space` +that defaults to on but can be disabled if the full address space is not required. When disabled, the address space +will be empty apart from some root objects. ### Current limitations diff --git a/docs/design.md b/docs/design.md index b2e9f6e9c..eb24bab64 100644 --- a/docs/design.md +++ b/docs/design.md @@ -28,7 +28,8 @@ OPC UA for Rust is split over several crates which are periodically published: * [`opcua-certificate-creator`](../tools/certificate-creator) - a command-line tool for creating OPC UA compatible public cert and private key. These are all published on [crates.io](https://crates.io). Generally speaking there is a 4-6 month gap between releases -unless a breaking bug is found. Releases tend to be very substantially improved between releases. +unless a breaking bug is found. The API tend to receive breaking changes between releases but the functionality grows +and becomes more complete. The workspace also contains some other folders: