arnaucube
arnaucube/cryptofunPublic Self-hosted repository
cryptofun/ElGamal/elGamal_test.go
ElGamal/elGamal_test.goRaw
 1package elgamal
 2
 3import (
 4	"math/big"
 5	"testing"
 6
 7	ecc "../ecc"
 8)
 9
10func TestNewEG(t *testing.T) {
11	ec := ecc.NewEC(1, 18, 19)
12	g := ecc.Point{big.NewInt(int64(7)), big.NewInt(int64(11))}
13	eg, err := NewEG(ec, g)
14	if err != nil {
15		t.Errorf(err.Error())
16	}
17	privK := 5
18	pubK, err := eg.PubK(privK)
19	if err != nil {
20		t.Errorf(err.Error())
21	}
22	if !pubK.Equal(ecc.Point{big.NewInt(int64(13)), big.NewInt(int64(9))}) {
23		t.Errorf("pubK!=(13, 9)")
24	}
25}
26func TestEGEncrypt(t *testing.T) {
27	ec := ecc.NewEC(1, 18, 19)
28	g := ecc.Point{big.NewInt(int64(7)), big.NewInt(int64(11))}
29	eg, err := NewEG(ec, g)
30	if err != nil {
31		t.Errorf(err.Error())
32	}
33	privK := 5
34	pubK, err := eg.PubK(privK)
35	if err != nil {
36		t.Errorf(err.Error())
37	}
38	// m: point to encrypt
39	m := ecc.Point{big.NewInt(int64(11)), big.NewInt(int64(12))}
40	c, err := eg.Encrypt(m, pubK, 15)
41	if err != nil {
42		t.Errorf(err.Error())
43	}
44	if !c[0].Equal(ecc.Point{big.NewInt(int64(8)), big.NewInt(int64(5))}) {
45		t.Errorf("c[0] != (8, 5), encryption failed")
46	}
47	if !c[1].Equal(ecc.Point{big.NewInt(int64(2)), big.NewInt(int64(16))}) {
48		t.Errorf("c[1] != (2, 16), encryption failed")
49	}
50}
51
52func TestEGDecrypt(t *testing.T) {
53	ec := ecc.NewEC(1, 18, 19)
54	g := ecc.Point{big.NewInt(int64(7)), big.NewInt(int64(11))}
55	eg, err := NewEG(ec, g)
56	if err != nil {
57		t.Errorf(err.Error())
58	}
59	privK := 5
60	pubK, err := eg.PubK(privK)
61	if err != nil {
62		t.Errorf(err.Error())
63	}
64	// m: point to encrypt
65	m := ecc.Point{big.NewInt(int64(11)), big.NewInt(int64(12))}
66	c, err := eg.Encrypt(m, pubK, 15)
67	if err != nil {
68		t.Errorf(err.Error())
69	}
70	d, err := eg.Decrypt(c, privK)
71	if err != nil {
72		t.Errorf(err.Error())
73	}
74	if !m.Equal(d) {
75		t.Errorf("m != d, decrypting failed")
76	}
77}