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	"github.com/arnaucube/cryptofun/ecc"
 8	"github.com/stretchr/testify/assert"
 9)
10
11func TestNewEG(t *testing.T) {
12	ec := ecc.NewEC(big.NewInt(int64(1)), big.NewInt(int64(18)), big.NewInt(int64(19)))
13	g := ecc.Point{big.NewInt(int64(7)), big.NewInt(int64(11))}
14	eg, err := NewEG(ec, g)
15	assert.Nil(t, err)
16
17	privK := big.NewInt(int64(5))
18	pubK, err := eg.PubK(privK)
19	assert.Nil(t, err)
20
21	if !pubK.Equal(ecc.Point{big.NewInt(int64(13)), big.NewInt(int64(9))}) {
22		t.Errorf("pubK!=(13, 9)")
23	}
24}
25func TestEGEncrypt(t *testing.T) {
26	ec := ecc.NewEC(big.NewInt(int64(1)), big.NewInt(int64(18)), big.NewInt(int64(19)))
27	g := ecc.Point{big.NewInt(int64(7)), big.NewInt(int64(11))}
28	eg, err := NewEG(ec, g)
29	assert.Nil(t, err)
30
31	privK := big.NewInt(int64(5))
32	pubK, err := eg.PubK(privK)
33	assert.Nil(t, err)
34
35	// m: point to encrypt
36	m := ecc.Point{big.NewInt(int64(11)), big.NewInt(int64(12))}
37	c, err := eg.Encrypt(m, pubK, big.NewInt(int64(15)))
38	assert.Nil(t, err)
39
40	if !c[0].Equal(ecc.Point{big.NewInt(int64(8)), big.NewInt(int64(5))}) {
41		t.Errorf("c[0] != (8, 5), encryption failed")
42	}
43	if !c[1].Equal(ecc.Point{big.NewInt(int64(2)), big.NewInt(int64(16))}) {
44		t.Errorf("c[1] != (2, 16), encryption failed")
45	}
46}
47
48func TestEGDecrypt(t *testing.T) {
49	ec := ecc.NewEC(big.NewInt(int64(1)), big.NewInt(int64(18)), big.NewInt(int64(19)))
50	g := ecc.Point{big.NewInt(int64(7)), big.NewInt(int64(11))}
51	eg, err := NewEG(ec, g)
52	assert.Nil(t, err)
53
54	privK := big.NewInt(int64(5))
55	pubK, err := eg.PubK(privK)
56	assert.Nil(t, err)
57
58	// m: point to encrypt
59	m := ecc.Point{big.NewInt(int64(11)), big.NewInt(int64(12))}
60	c, err := eg.Encrypt(m, pubK, big.NewInt(int64(15)))
61	assert.Nil(t, err)
62
63	d, err := eg.Decrypt(c, privK)
64	assert.Nil(t, err)
65
66	if !m.Equal(d) {
67		t.Errorf("m != d, decrypting failed")
68	}
69}