Add a method to map values to points on the curve #148
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.
In this PR, we implement a method
map_to_pointto map a u64 input value to a point on the curve. Likewise, we implement aunmap_from_pointmethod, to be able to recover the original value.The mapping we implemented is probabilistic, meaning that trying to find a correct map can require several tries, until finding a real point on the curve, that lies also on the correct subgroup.
To achieve such an outcome, we craft a 32-bytes representation of a point as follows:
target_point = (random_value[31..8] || u64_input_value)given that, we check if this point is valid or not. If that's not, we keep iterating and checking again, by adding
u64_size + 1each iteration.