demonstrate using subtle-ng-derive with ConstantTimeCmp #478
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.
Problem
In #469 we decided to take a look at whether we could upstream some extensions to the
subtle
crate to supportOrdering
comparisons. After creating zkcrypto/subtle-ng#5, I created this PR to demonstrate how adoptingsubtle::ConstantTimeCmp
from that change could improve the code.Solution
subtle-ng-derive
crate in order to derive constant-time comparisons for aggregate structs using the technique developed in reduce boilerplate implementing comparisons for user-defined types zkcrypto/subtle-ng#6.subtle-ng
which contained the changes from define and implementConstantTime{Partial,}Ord
traits zkcrypto/subtle-ng#5.Result
It is now possible to
#[derive(ConstEq, ConstOrd, ConstantTimeEq, ConstantTimeCmp)]
to get constant-timeEq
andOrd
implementations for several structs, which allows us to removeutils.rs
.