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}