mirror of
https://github.com/emmansun/gmsm.git
synced 2025-04-26 04:06:18 +08:00
sm9: optimize mul line
This commit is contained in:
parent
de6e4c2464
commit
0cf7d640c5
@ -7,7 +7,6 @@ func lineFunctionAdd(r, p *twistPoint, q *curvePoint, r2 *gfP2) (a, b, c *gfP2,
|
|||||||
B := (&gfP2{}).Mul(&p.x, &r.t) // B = Xp * Zr^2
|
B := (&gfP2{}).Mul(&p.x, &r.t) // B = Xp * Zr^2
|
||||||
|
|
||||||
D := (&gfP2{}).Mul(&r.z, &r.x)
|
D := (&gfP2{}).Mul(&r.z, &r.x)
|
||||||
|
|
||||||
D = (&gfP2{}).Add(&p.y, &r.z) // D = Yp + Zr
|
D = (&gfP2{}).Add(&p.y, &r.z) // D = Yp + Zr
|
||||||
D.Square(D).Sub(D, r2).Sub(D, &r.t).Mul(D, &r.t) // D = ((Yp + Zr)^2 - Zr^2 - Yp^2)*Zr^2 = 2Yp*Zr^3
|
D.Square(D).Sub(D, r2).Sub(D, &r.t).Mul(D, &r.t) // D = ((Yp + Zr)^2 - Zr^2 - Yp^2)*Zr^2 = 2Yp*Zr^3
|
||||||
|
|
||||||
@ -95,23 +94,21 @@ func lineFunctionDouble(r *twistPoint, q *curvePoint) (a, b, c *gfP2, rOut *twis
|
|||||||
}
|
}
|
||||||
|
|
||||||
func mulLine(ret *gfP12, a, b, c *gfP2) {
|
func mulLine(ret *gfP12, a, b, c *gfP2) {
|
||||||
tx, ty, tz, t, bx, bz := &gfP4{}, &gfP4{}, &gfP4{}, &gfP4{}, &gfP4{}, &gfP4{}
|
t1, tz, t, bz := &gfP4{}, &gfP4{}, &gfP4{}, &gfP4{}
|
||||||
bx.x.SetZero()
|
|
||||||
bx.y.Set(b)
|
|
||||||
bz.x.Set(c)
|
bz.x.Set(c)
|
||||||
bz.y.Set(a)
|
bz.y.Set(a)
|
||||||
|
|
||||||
tz.Mul(&ret.z, bz)
|
tz.Mul(&ret.z, bz)
|
||||||
t.MulV(&ret.y, bx)
|
t.MulScalar(&ret.y, b).MulV1(t)
|
||||||
tz.Add(tz, t)
|
tz.Add(tz, t)
|
||||||
|
|
||||||
ty.Mul(&ret.y, bz)
|
t1.Mul(&ret.y, bz)
|
||||||
t.MulV(&ret.x, bx)
|
t.MulScalar(&ret.x, b).MulV1(t)
|
||||||
ret.y.Add(ty, t)
|
ret.y.Add(t1, t)
|
||||||
|
|
||||||
tx.Mul(&ret.z, bx)
|
t1.MulScalar(&ret.z, b)
|
||||||
t.Mul(&ret.x, bz)
|
t.Mul(&ret.x, bz)
|
||||||
ret.x.Add(tx, t)
|
ret.x.Add(t1, t)
|
||||||
|
|
||||||
ret.z.Set(tz)
|
ret.z.Set(tz)
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user