5.2.4 Point Addition (Addizione di punti)
5.2.4 Point Addition (Addizione di punti)
Per l'addizione di punti si raccomanda il metodo seguente. Un punto (x,y) è rappresentato in coordinate proiettive (X, Y, Z), con x = X/Z, y = Y/Z.
Il punto neutro è (0,1), o equivalentemente in coordinate proiettive (0, Z, Z) per qualsiasi Z non nullo.
Le formule seguenti per sommare due punti (x3,y3) = (x1,y1)+(x2,y2) su curva di Edwards non twistata (cioè a=1) con d non quadrato sono descritte nella Sezione 4 di [Faster-ECC] e in [EFD-ADD]. Sono complete, cioè funzionano per ogni coppia di punti di ingresso validi.
A = Z1*Z2
B = A^2
C = X1*X2
D = Y1*Y2
E = d*C*D
F = B-E
G = B+E
H = (X1+Y1)*(X2+Y2)
X3 = A*F*(H-C-D)
Y3 = A*G*(D-C)
Z3 = F*G
Di nuovo, analogamente all'altra curva, le formule di raddoppio si ottengono sostituendo punti uguali, trasformando quattro moltiplicazioni in quadrati. Tuttavia questo non è affatto ottimale; le formule seguenti descritte nella Sezione 4 di [Faster-ECC] e in [EFD-DBL] risparmiano più moltiplicazioni.
B = (X1+Y1)^2
C = X1^2
D = Y1^2
E = C+D
H = Z1^2
J = E-2*H
X3 = (B-E)*J
Y3 = E*(C-D)
Z3 = E*J