Skip to content

Curve448 with full coordinates #1306

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

Open
wants to merge 23 commits into
base: master
Choose a base branch
from

Conversation

daxpedda
Copy link
Contributor

@daxpedda daxpedda commented Jul 19, 2025

This PR implements a set of types for Montgomery points with a full coordinate system and corresponding Curve448 type with a CurveArithmetic implementation. Our current MontgomeryPoint x-coordinate only remains in place for use with X448 and is renamed to MontgomeryXpoint.

For context: the x-only coordinate system can't implement a full set of arithmetic operations because of the missing y-coordinate. While the y-coordinate could be recovered, it is costly and is missing the sign. Some protocols exist that set the sign of the y-coordinate, which is why we have some methods in place for MontgomeryXpoint to do exactly that.

I made sure to add a full set of conversion methods between the new types.

I'm aware that I'm proposing very large changes that has not previously been discussed. I'm happy to take any feedback.
It should be much easier to review than #1291 on account that it can done commit by commit.

Take 2 on #1291.

@carloskiki
Copy link
Contributor

Do you have any protocol in mind where this would be used?

@daxpedda
Copy link
Contributor Author

daxpedda commented Jul 20, 2025

Yes, I am planning on using it with OPRF inside OPAQUE.

@daxpedda daxpedda requested a review from tarcieri July 26, 2025 12:59
@daxpedda daxpedda force-pushed the curve448-4 branch 2 times, most recently from dce0a03 to ce00799 Compare July 30, 2025 09:56
@daxpedda daxpedda force-pushed the curve448-4 branch 2 times, most recently from 227d8d8 to 44f8c53 Compare August 3, 2025 01:07
@daxpedda daxpedda mentioned this pull request Aug 3, 2025
46 tasks
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.

4 participants