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}