Function addMixed [src]

Add P256 points, the second being specified using affine coordinates.

Prototype

pub fn addMixed(p: P256, q: AffineCoordinates) P256

Parameters

p: P256q: AffineCoordinates

Source

pub fn addMixed(p: P256, q: AffineCoordinates) P256 { var t0 = p.x.mul(q.x); var t1 = p.y.mul(q.y); var t3 = q.x.add(q.y); var t4 = p.x.add(p.y); t3 = t3.mul(t4); t4 = t0.add(t1); t3 = t3.sub(t4); t4 = q.y.mul(p.z); t4 = t4.add(p.y); var Y3 = q.x.mul(p.z); Y3 = Y3.add(p.x); var Z3 = B.mul(p.z); var X3 = Y3.sub(Z3); Z3 = X3.dbl(); X3 = X3.add(Z3); Z3 = t1.sub(X3); X3 = t1.add(X3); Y3 = B.mul(Y3); t1 = p.z.dbl(); var t2 = t1.add(p.z); Y3 = Y3.sub(t2); Y3 = Y3.sub(t0); t1 = Y3.dbl(); Y3 = t1.add(Y3); t1 = t0.dbl(); t0 = t1.add(t0); t0 = t0.sub(t2); t1 = t4.mul(Y3); t2 = t0.mul(Y3); Y3 = X3.mul(Z3); Y3 = Y3.add(t2); X3 = t3.mul(X3); X3 = X3.sub(t1); Z3 = t4.mul(Z3); t1 = t3.mul(t0); Z3 = Z3.add(t1); var ret = P256{ .x = X3, .y = Y3, .z = Z3, }; ret.cMov(p, @intFromBool(q.x.isZero())); return ret; }