cryptofun/paillier/paillier_test.go
paillier/paillier_test.goRaw
1package paillier
2
3import (
4 "bytes"
5 "fmt"
6 "math/big"
7 "testing"
8)
9
10func TestEncryptDecrypt(t *testing.T) {
11 key, err := GenerateKeyPair()
12 if err != nil {
13 t.Errorf(err.Error())
14 }
15 mBytes := []byte("Hi")
16 m := new(big.Int).SetBytes(mBytes)
17 c := Encrypt(m, key.PubK)
18 d := Decrypt(c, key.PubK, key.PrivK)
19 if m == d {
20 fmt.Println(key)
21 t.Errorf("m not equal to decrypted")
22 }
23}
24
25func TestHomomorphicAddition(t *testing.T) {
26 key, err := GenerateKeyPair()
27 if err != nil {
28 t.Errorf(err.Error())
29 }
30 n1 := big.NewInt(int64(110))
31 n2 := big.NewInt(int64(150))
32 c1 := Encrypt(n1, key.PubK)
33 c2 := Encrypt(n2, key.PubK)
34 c3c4 := HomomorphicAddition(c1, c2, key.PubK)
35 d := Decrypt(c3c4, key.PubK, key.PrivK)
36 if !bytes.Equal(new(big.Int).Add(n1, n2).Bytes(), d.Bytes()) {
37 fmt.Println(key)
38 t.Errorf("decrypted result not equal to original result")
39 }
40}