mirror of
https://github.com/emmansun/gmsm.git
synced 2025-04-23 18:56:17 +08:00
111 lines
2.6 KiB
Go
111 lines
2.6 KiB
Go
package sm9
|
|
|
|
import (
|
|
"testing"
|
|
)
|
|
|
|
func TestIsOnCurve(t *testing.T) {
|
|
if !twistGen.IsOnCurve() {
|
|
t.Errorf("twist gen point should be on curve")
|
|
}
|
|
a := &twistPoint{}
|
|
a.SetInfinity()
|
|
if !a.IsOnCurve() {
|
|
t.Errorf("infinity zero point should be on curve")
|
|
}
|
|
}
|
|
|
|
func TestAddNeg(t *testing.T) {
|
|
neg := &twistPoint{}
|
|
neg.Neg(twistGen)
|
|
res := &twistPoint{}
|
|
res.Add(twistGen, neg)
|
|
if !res.IsInfinity() {
|
|
t.Errorf("a add its neg should be zero")
|
|
}
|
|
}
|
|
|
|
func Test_TwistFrobeniusP(t *testing.T) {
|
|
ret1, ret2 := &twistPoint{}, &twistPoint{}
|
|
ret1.Frobenius(twistGen)
|
|
ret1.MakeAffine()
|
|
|
|
ret2.x.Conjugate(&twistGen.x)
|
|
ret2.x.MulScalar(&ret2.x, betaToNegPPlus1Over3)
|
|
|
|
ret2.y.Conjugate(&twistGen.y)
|
|
ret2.y.MulScalar(&ret2.y, betaToNegPPlus1Over2)
|
|
ret2.z.SetOne()
|
|
ret2.t.SetOne()
|
|
if !ret2.IsOnCurve() {
|
|
t.Errorf("point should be on curve")
|
|
}
|
|
|
|
if ret1.x != ret2.x || ret1.y != ret2.y || ret1.z != ret2.z || ret1.t != ret2.t {
|
|
t.Errorf("not same")
|
|
}
|
|
}
|
|
|
|
func Test_TwistFrobeniusP2(t *testing.T) {
|
|
ret1, ret2 := &twistPoint{}, &twistPoint{}
|
|
ret1.Frobenius(twistGen)
|
|
ret1.Frobenius(ret1)
|
|
if !ret1.IsOnCurve() {
|
|
t.Errorf("point should be on curve")
|
|
}
|
|
|
|
ret2.FrobeniusP2(twistGen)
|
|
if !ret2.IsOnCurve() {
|
|
t.Errorf("point should be on curve")
|
|
}
|
|
if ret1.x != ret2.x || ret1.y != ret2.y || ret1.z != ret2.z || ret1.t != ret2.t {
|
|
t.Errorf("not same")
|
|
}
|
|
}
|
|
|
|
func Test_TwistFrobeniusP2_Case2(t *testing.T) {
|
|
ret1, ret2 := &twistPoint{}, &twistPoint{}
|
|
ret1.x.Set(&twistGen.x)
|
|
ret1.x.MulScalar(&ret1.x, betaToNegP2Plus1Over3)
|
|
|
|
ret1.y.Set(&twistGen.y)
|
|
ret1.y.MulScalar(&ret1.y, betaToNegP2Plus1Over2)
|
|
ret1.z.SetOne()
|
|
ret1.t.SetOne()
|
|
if !ret1.IsOnCurve() {
|
|
t.Errorf("point should be on curve")
|
|
}
|
|
|
|
ret2.FrobeniusP2(twistGen)
|
|
ret2.MakeAffine()
|
|
if !ret2.IsOnCurve() {
|
|
t.Errorf("point should be on curve")
|
|
}
|
|
if ret1.x != ret2.x || ret1.y != ret2.y || ret1.z != ret2.z || ret1.t != ret2.t {
|
|
t.Errorf("not same")
|
|
}
|
|
}
|
|
|
|
func Test_TwistNegFrobeniusP2_Case2(t *testing.T) {
|
|
ret1, ret2 := &twistPoint{}, &twistPoint{}
|
|
ret1.x.Set(&twistGen.x)
|
|
ret1.x.MulScalar(&ret1.x, betaToNegP2Plus1Over3)
|
|
|
|
ret1.y.Neg(&twistGen.y)
|
|
ret1.y.MulScalar(&ret1.y, betaToNegP2Plus1Over2)
|
|
ret1.z.SetOne()
|
|
ret1.t.SetOne()
|
|
if !ret1.IsOnCurve() {
|
|
t.Errorf("point should be on curve")
|
|
}
|
|
|
|
ret2.NegFrobeniusP2(twistGen)
|
|
ret2.MakeAffine()
|
|
if !ret2.IsOnCurve() {
|
|
t.Errorf("point should be on curve")
|
|
}
|
|
if ret1.x != ret2.x || ret1.y != ret2.y || ret1.z != ret2.z || ret1.t != ret2.t {
|
|
t.Errorf("not same")
|
|
}
|
|
}
|