-
Notifications
You must be signed in to change notification settings - Fork 267
Optimize untwisted <-> twisted Edwards conversions #1316
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
6be4fad to
89af1be
Compare
89af1be to
08150d9
Compare
|
The 4-isogeny described in #1349 appears to be more efficient and avoids inversions entirely |
tarcieri
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Per your comments on #1349 I'm curious why the twisted-to-untwisted map from libgoldilocks isn't working.
That said, the one you've implemented is both well-cited and has reduced the number of inversions to one, which is certainly a big improvement.
I'm gonna spend some time figuring out how to make it work. I didn't dive into the mathematical gymnastics done in https://github.com/otrv4/libgoldilocks/blob/d07cb5b423995bae1155702aa949846c95d855c1/src/goldilocks.c#L980-L994 as well, but I would prefer to understand what has been done there instead of just leaving a comment saying "copied code from XYZ". |
|
I'm going to go ahead and merge this but leave #1349 open |
|
@daxpedda here's the paper that Mike Hamburg cites on Edwards 4-isogenies: https://eprint.iacr.org/2011/135.pdf |
That's the isogeny from this Mike Hamburg paper: https://eprint.iacr.org/2014/027.pdf
...except it's in extended Edwards coordinates, so |
|
Yeah, just figured that out as well. |

This PR optimizes the Edwards isogeny map. No special algorithms was used, just variables cached and the common denominator calculated to save an inversion.