Use the constant_time_eq
crate instead of our bespoke implementation
#5706
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.
The newer versions of the
volatile
crate have a completely different API from what we were using it for, and theconstant_time_eq
provides a timing-safe comparison that is more verified to work properly. The only difference is that it makes no attempt to be constant-time if the strings are of different lengths, unlike our function which was based on CPython's implementation. However, I don't think that's actually an important property, considering this is intended to be used for hashed digests, which are inherently a fixed length. (and if you're using RustPython in a security-critical context where you're worried about timing attacks, you're probably doing something wrong.)