authorgravatar for 124872+jedisct1@users.noreply.github.comFrank Denis <124872+jedisct1@users.noreply.github.com> 2021-12-27 18:29:25+01:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2021-12-27 14:42:58-08:00
log3abe464b06ab7d75954abda18dc41bf7af4a3839
treed5c9e1883854de1e228493086cfb77652626130a
parent4266795743d86efc763ecadbc155d068ca1ec45a

crypto/edwards25519: faster point decompression

Make recovery of the x-coordinate slightly faster. See https://mailarchive.ietf.org/arch/msg/cfrg/qlKpMBqxXZYmDpXXIx6LO3Oznv4/ for details.

1 files changed, 1 insertions(+), 2 deletions(-)

lib/std/crypto/25519/edwards25519.zig+1-2
...@@ -34,8 +34,7 @@ pub const Edwards25519 = struct {...@@ -34,8 +34,7 @@ pub const Edwards25519 = struct {
34 var v = u.mul(Fe.edwards25519d);34 var v = u.mul(Fe.edwards25519d);
35 u = u.sub(z);35 u = u.sub(z);
36 v = v.add(z);36 v = v.add(z);
37 const v3 = v.sq().mul(v);37 var x = u.mul(v).pow2523().mul(u);
38 var x = v3.sq().mul(v).mul(u).pow2523().mul(v3).mul(u);
39 const vxx = x.sq().mul(v);38 const vxx = x.sq().mul(v);
40 const has_m_root = vxx.sub(u).isZero();39 const has_m_root = vxx.sub(u).isZero();
41 const has_p_root = vxx.add(u).isZero();40 const has_p_root = vxx.add(u).isZero();