Skip to content

secp256k1: Refactor constant time selection function.#3711

Merged
davecgh merged 3 commits into
decred:masterfrom
davecgh:secp256k1_consttimesel
Jul 6, 2026
Merged

secp256k1: Refactor constant time selection function.#3711
davecgh merged 3 commits into
decred:masterfrom
davecgh:secp256k1_consttimesel

Conversation

@davecgh

@davecgh davecgh commented Jun 24, 2026

Copy link
Copy Markdown
Member

This requires #3708.

This introduces a new function for selecting between two uint64s in constant time and modifies code that manually performs the selection to make use of the function to improve readability along with tests to ensure proper functionality. The function gets inlined, so there is no loss of performance.

The order of the condition is also reversed to match the typical hardware intrinsic which also resembles the ternary operator.

It also separates out the various other functions for comparing in constant time to a separate file since they are no longer limited to only being used in mod n scalars.

@davecgh davecgh added this to the 2.2.0 milestone Jun 24, 2026
@davecgh davecgh force-pushed the secp256k1_consttimesel branch 2 times, most recently from 207a977 to efeff72 Compare June 28, 2026 09:18
davecgh added 3 commits July 5, 2026 22:57
The various functions for comparing in constant time are no longer
limited to only being used in mod n scalars, so move them into their own
file.
This introduces a new function for selecting between two uint64s in
constant time and modifies code that manually performs the selection to
make use of the function to improve readability.  The function gets
inlined, so there is no loss of performance.

The order of the condition is also reversed to match the typical
hardware intrinsic which also resembles the ternary operator.
This adds a test for the new constantTimeSelect64 function to help
ensure proper behavior.
@davecgh davecgh force-pushed the secp256k1_consttimesel branch from efeff72 to 5b993e0 Compare July 6, 2026 03:57
@davecgh davecgh merged commit 5b993e0 into decred:master Jul 6, 2026
32 checks passed
@davecgh davecgh deleted the secp256k1_consttimesel branch July 6, 2026 04:01
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants