Problem
Some legacy PLCs return only a key-family identifier such as 00, 01 or 03 instead of the complete family:key-id fingerprint.
Our parser requires the complete fingerprint, so authentication is skipped even when the correct family keys are present. The active .NET implementation now tries known family candidates on fresh connections and caches the successful key.
Scope
- Distinguish complete fingerprints from family-only identifiers.
- Enumerate only public keys belonging to the reported family.
- Try each candidate on a fresh connection/session because a failed setup may invalidate the current one.
- Cache a confirmed mapping for subsequent connections.
- Provide an option to disable fallback where deterministic/no-probing behavior is required.
- Bound attempts and log key identifiers without exposing key material.
Acceptance criteria
- Existing complete-fingerprint selection remains unchanged.
- Family-only responses can authenticate using a matching catalog key.
- A failed candidate is never retried in the same invalidated session.
- Unknown families and exhausted candidates fail clearly.
- Tests cover complete, family-only, unknown-family, disabled-fallback and cached-success paths.
References
Problem
Some legacy PLCs return only a key-family identifier such as
00,01or03instead of the completefamily:key-idfingerprint.Our parser requires the complete fingerprint, so authentication is skipped even when the correct family keys are present. The active .NET implementation now tries known family candidates on fresh connections and caches the successful key.
Scope
Acceptance criteria
References