def add

bend-collections@1.0.0.0 · src/crypto/ed25519/point.bend:66

import bend-collections@1.0.0.0/src/crypto/ed25519/point.bend as Point
import Base
import bend-collections@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)

Used by (2)