-
Notifications
You must be signed in to change notification settings - Fork 420
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
Multiscalar multiplication with precomputation #125
Comments
I think that a basic version of this would be easy to implement using the existing scalar mul code, but I'm not sure if it's worth doing before |
Some work-in-progress on this is in the https://github.com/dalek-cryptography/curve25519-dalek/tree/feature/multiscalar-traits branch. This has an additional upshot: by eliminating the bare functions and the |
Work-in-progress traits for constant-time and variable-time multiscalar multiplication here: 8f659c3 @isislovecruft does this look generally okay? One thing I'm wondering about is how we would like to expose this API. For the multiscalar multiplication without precomputation (also WIP in that branch), the trait is implemented externally on For multiscalar multiplication with precomputation, should we take the same strategy, exposing structs like |
Since this is a new API, not a change to an existing one, we can add it after |
One reason to do this before |
scratch work now located here: https://github.com/hdevalence/curve25519-dalek/tree/lost-precomputaton-branch-rebased |
Closed by #230 and released in |
Update `crypto_box` URL
The current multiscalar API looks like:
This takes an iterator of scalars and an iterator of points, and computes
Q = c_1 P_1 + \cdots + c_n P_n
. This is super-flexible and very useful (it makes it easy to combine statements), but it doesn't allow precomputation.To do that, we could create a struct (not sure about naming, let's say
MultiscalarPrecomputation
for now) that looks like:This API would let us cover every combination of static/dynamic points, and because the precomputation is opaque, it means that we can pick what kind of static data we want to use depending on the backend implementation. This would supersede #79.
The text was updated successfully, but these errors were encountered: