|
|
package ecc
import ( "fmt" "math/big" "testing" )
func TestECC(t *testing.T) { ec := NewEC(0, 7, 11) p1, p1_, err := ec.At(big.NewInt(int64(7))) if err != nil { t.Errorf(err.Error()) } if !p1.Equal(Point{big.NewInt(int64(7)), big.NewInt(int64(3))}) { t.Errorf("p1!=(7, 11)") } if !p1_.Equal(Point{big.NewInt(int64(7)), big.NewInt(int64(8))}) { t.Errorf("p1_!=(7, 8)") } } func TestNeg(t *testing.T) { ec := NewEC(0, 7, 11) p1, p1_, err := ec.At(big.NewInt(int64(7))) if err != nil { t.Errorf(err.Error()) } p1Neg := ec.Neg(p1) if !p1Neg.Equal(p1_) { t.Errorf("p1Neg!=p1_") }
} func TestAdd(t *testing.T) { fmt.Println("y^2 = x^3 + 7") fmt.Print("ec: ") ec := NewEC(0, 7, 11) fmt.Println(ec) p1, _, err := ec.At(big.NewInt(int64(7))) if err != nil { t.Errorf(err.Error()) } fmt.Print("p1: ") fmt.Println(p1) p2, _, err := ec.At(big.NewInt(int64(6))) if err != nil { t.Errorf(err.Error()) } fmt.Print("p2: ") fmt.Println(p2)
q, err := ec.Add(p1, p2) if err != nil { t.Errorf(err.Error()) } fmt.Print("q: ") fmt.Println(q) if !q.Equal(Point{big.NewInt(int64(2)), big.NewInt(int64(9))}) { t.Errorf("q!=(2, 9)") }
// check that q exists on the elliptic curve
pt, pt_, err := ec.At(q.X) if err != nil { t.Errorf(err.Error()) } if !q.Equal(pt) && !q.Equal(pt_) { t.Errorf("q not exist on the elliptic curve") }
}
|