arnaucube
arnaucube/cryptofunPublic Self-hosted repository
cryptofun/ecc/ecc_test.go
ecc/ecc_test.goRaw
 1package ecc
 2
 3import (
 4	"fmt"
 5	"math/big"
 6	"testing"
 7)
 8
 9func TestECC(t *testing.T) {
10	ec := NewEC(0, 7, 11)
11	p1, p1_, err := ec.At(big.NewInt(int64(7)))
12	if err != nil {
13		t.Errorf(err.Error())
14	}
15	if !p1.Equal(Point{big.NewInt(int64(7)), big.NewInt(int64(3))}) {
16		t.Errorf("p1!=(7, 11)")
17	}
18	if !p1_.Equal(Point{big.NewInt(int64(7)), big.NewInt(int64(8))}) {
19		t.Errorf("p1_!=(7, 8)")
20	}
21}
22func TestNeg(t *testing.T) {
23	ec := NewEC(0, 7, 11)
24	p1, p1_, err := ec.At(big.NewInt(int64(7)))
25	if err != nil {
26		t.Errorf(err.Error())
27	}
28	p1Neg := ec.Neg(p1)
29	if !p1Neg.Equal(p1_) {
30		t.Errorf("p1Neg!=p1_")
31	}
32
33}
34func TestAdd(t *testing.T) {
35	fmt.Println("y^2 = x^3 + 7")
36	fmt.Print("ec: ")
37	ec := NewEC(0, 7, 11)
38	fmt.Println(ec)
39	p1, _, err := ec.At(big.NewInt(int64(7)))
40	if err != nil {
41		t.Errorf(err.Error())
42	}
43	fmt.Print("p1: ")
44	fmt.Println(p1)
45	p2, _, err := ec.At(big.NewInt(int64(6)))
46	if err != nil {
47		t.Errorf(err.Error())
48	}
49	fmt.Print("p2: ")
50	fmt.Println(p2)
51
52	q, err := ec.Add(p1, p2)
53	if err != nil {
54		t.Errorf(err.Error())
55	}
56	fmt.Print("q: ")
57	fmt.Println(q)
58	if !q.Equal(Point{big.NewInt(int64(2)), big.NewInt(int64(9))}) {
59		t.Errorf("q!=(2, 9)")
60	}
61
62	// check that q exists on the elliptic curve
63	pt, pt_, err := ec.At(q.X)
64	if err != nil {
65		t.Errorf(err.Error())
66	}
67	if !q.Equal(pt) && !q.Equal(pt_) {
68		t.Errorf("q not exist on the elliptic curve")
69	}
70
71}