def add
import bend-collections-laws-crypto@1.0.0.0/src/crypto/ed25519/point.bend as Pointimport Base
import bend-collections-laws-crypto@1.0.0.0/src/crypto/curve25519/field.bend as F
66# RFC 8032 5.1.4, addition
67def add(+c: Cs, p: Pt, q: Pt) -> Pt:
68 match p q:
69 case Pt{+x1, +y1, +z1, +t1} Pt{+x2, +y2, +z2, +t2}:
70 +a = F.mul(F.sub(y1, x1), F.sub(y2, x2))
71 +b = F.mul(F.add(y1, x1), F.add(y2, x2))
72 +cc = F.mul(F.mul(t1, cs_d2(c)), t2)
73 +dd = F.mul(F.add(z1, z1), z2)
74 +e = F.sub(b, a)
75 +f = F.sub(dd, cc)
76 +g = F.add(dd, cc)
77 +h = F.add(b, a)
78 Pt{F.mul(e, f), F.mul(g, h), F.mul(f, g), F.mul(e, h)}
Uses (6)
- bend-collections-laws-crypto@1.0.0.0/src/crypto/curve25519/field:mul
- bend-collections-laws-crypto@1.0.0.0/src/crypto/ed25519/point:Pt
- bend-collections-laws-crypto@1.0.0.0/src/crypto/ed25519/point:Cs
- bend-collections-laws-crypto@1.0.0.0/src/crypto/curve25519/field:sub
- bend-collections-laws-crypto@1.0.0.0/src/crypto/curve25519/field:add
- …
Used by (5)
- bend-collections-laws-crypto@1.0.0.0/src/crypto/ed25519/ed25519:check
- bend-collections-laws-crypto@1.0.0.0/src/crypto/ed25519/point:smul
- bend-collections-laws-crypto@1.0.0.0/proofs/crypto/ed25519/prel:add_rel
- bend-collections-laws-crypto@1.0.0.0/proofs/crypto/ed25519/prel:smul_rel
- bend-collections-laws-crypto@1.0.0.0/proofs/crypto/ed25519/top:check_some