From 97a2fe01fc7f87bdbd173cbf8a2c77e82f4d31e5 Mon Sep 17 00:00:00 2001 From: Marc Date: Sat, 24 Oct 2026 16:04:29 +0200 Subject: [PATCH] Synchronize bundled async identity migration guidance --- .../references/stack-migration/identity.md | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/.agents/skills/opcua-v20-migration/references/stack-migration/identity.md b/.agents/skills/opcua-v20-migration/references/stack-migration/identity.md index 66bff8141c..93f3fe61f7 100644 --- a/.agents/skills/opcua-v20-migration/references/stack-migration/identity.md +++ b/.agents/skills/opcua-v20-migration/references/stack-migration/identity.md @@ -38,7 +38,10 @@ and await `EncryptAsync`, `DecryptAsync`, `SignAsync`, or `VerifyAsync`. Handler are not disposable. The current signatures, including optional certificate and ephemeral-key arguments, are defined by [`IUserIdentityTokenHandler`](https://github.com/OPCFoundation/UA-.NETStandard/blob/master/src/Opc.Ua.Core/Stack/Types/IUserIdentityTokenHandler.cs). -Do not replace the asynchronous operations with blocking waits. +When constructing an X.509 handler directly from a certificate identifier, use +`X509IdentityTokenHandler.CreateAsync(...)`; the constructor is retained for +compatibility but may synchronously wait for a certificate-store miss. Do not +replace asynchronous operations with blocking waits. ### Earlier 2.0 previews @@ -52,7 +55,7 @@ have used. | `UserIdentity : IDisposable` | Drop `using` on identities; manage certificate and secret ownership through their providers. | | Synchronous `handler.Encrypt`, `Decrypt`, `Sign`, `Verify` | Await the corresponding `*Async` operation. | | `new UserIdentity(Certificate)` | Use `UserIdentity.CreateAsync(certificateIdentifier, passwordProvider, certificateProvider, ct)`. | -| `new X509IdentityTokenHandler(Certificate)` | Use the `CertificateIdentifier`, `ICertificatePasswordProvider`, and `ICertificateProvider` constructor. | +| `new X509IdentityTokenHandler(Certificate)` | Use `X509IdentityTokenHandler.CreateAsync(certificateIdentifier, passwordProvider, certificateProvider, ct)`. | | `UserIdentity.CreateAsync(certId, passwordProvider, telemetry, ct)` | Pass an `ICertificateProvider` instead of the telemetry argument. | The current handler types are `AnonymousIdentityTokenHandler`,