fix: use issubclass instead of isinstance in _set_signature_type#800
Merged
fix: use issubclass instead of isinstance in _set_signature_type#800
Conversation
Replace isinstance(signing_algorithm_info, type(ec.EllipticCurve)) with issubclass(signing_algorithm_info, ec.EllipticCurve) wrapped in try/except TypeError. The old check used isinstance against ABCMeta which was fragile and semantically incorrect for checking class hierarchy. Update tests to use real EC curve classes (ec.SECP256R1, ec.SECP384R1) instead of MagicMock with spec=ec.EllipticCurve, which masked the bug. Based on PR #794.
0dbd106 to
062e19a
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Replace
isinstance(signing_algorithm_info, type(ec.EllipticCurve))withissubclass(signing_algorithm_info, ec.EllipticCurve)wrapped intry/except TypeErrorin_PrehashingAuthenticator._set_signature_type.The old check used
isinstanceagainstABCMetawhich was fragile and semantically incorrect for checking class hierarchy.Changes
_set_signature_typeto useissubclasswithTypeErrorguardtest_set_signature_type_elliptic_curve_known_valueec.SECP256R1forsigning_algorithm_infoTesting
All 4228 unit tests pass.
Based on #794, extended to also fix signer/verifier tests that used the same broken mock pattern.
Closes #794 ; stages #793 for release.