This repository was archived by the owner on Jun 7, 2026. It is now read-only.
Commit 2f1ea2e
authored
Add back
Computes a sum-of-products `aA + bB + ...` in variable time with w-NAF
multi-exponentiation using the interleaved window method, also known
as Straus' method.
The key insight is that when computing this sum by means of additions
and doublings, the doublings can be shared by performing the additions
within an inner loop.
The API and implementation are inspired in part by `curve25519-dalek`,
namely the `VartimeMultiscalarMul` trait and corresponding
implementation in `straus.rs`.
This results in ~28% speedup on `p256` for a 3 scalar/point input:
ProjectivePoint operations/point-scalar lincomb (variable-time)
time: [149.13 µs 149.80 µs 150.84 µs]
change: [−27.999% −27.645% −27.267%] (p = 0.00 < 0.05)WnafBase::multiscalar_mul (#23)1 parent a40270e commit 2f1ea2e
1 file changed
Lines changed: 44 additions & 8 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
156 | 156 | | |
157 | 157 | | |
158 | 158 | | |
| 159 | + | |
159 | 160 | | |
160 | | - | |
| 161 | + | |
| 162 | + | |
| 163 | + | |
| 164 | + | |
| 165 | + | |
| 166 | + | |
| 167 | + | |
| 168 | + | |
| 169 | + | |
| 170 | + | |
| 171 | + | |
| 172 | + | |
| 173 | + | |
| 174 | + | |
| 175 | + | |
| 176 | + | |
| 177 | + | |
161 | 178 | | |
| 179 | + | |
162 | 180 | | |
163 | 181 | | |
164 | | - | |
| 182 | + | |
| 183 | + | |
165 | 184 | | |
166 | 185 | | |
167 | 186 | | |
168 | 187 | | |
169 | | - | |
170 | | - | |
| 188 | + | |
| 189 | + | |
| 190 | + | |
| 191 | + | |
171 | 192 | | |
172 | | - | |
173 | | - | |
174 | | - | |
175 | | - | |
| 193 | + | |
| 194 | + | |
| 195 | + | |
| 196 | + | |
| 197 | + | |
176 | 198 | | |
177 | 199 | | |
178 | 200 | | |
| |||
505 | 527 | | |
506 | 528 | | |
507 | 529 | | |
| 530 | + | |
| 531 | + | |
| 532 | + | |
| 533 | + | |
| 534 | + | |
| 535 | + | |
| 536 | + | |
| 537 | + | |
| 538 | + | |
| 539 | + | |
| 540 | + | |
| 541 | + | |
| 542 | + | |
| 543 | + | |
508 | 544 | | |
509 | 545 | | |
510 | 546 | | |
| |||
0 commit comments