arnaucube
arnaucube/cryptofunPublic Self-hosted repository
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	fmt.Println(key)
16	mBytes := []byte("Hi")
17	m := new(big.Int).SetBytes(mBytes)
18	c := Encrypt(m, key.PubK)
19	d := Decrypt(c, key.PubK, key.PrivK)
20	if m == d {
21		fmt.Println(key)
22		t.Errorf("m not equal to decrypted")
23	}
24}
25
26func TestHomomorphicAddition(t *testing.T) {
27	key, err := GenerateKeyPair()
28	if err != nil {
29		t.Errorf(err.Error())
30	}
31	n1 := big.NewInt(int64(110))
32	n2 := big.NewInt(int64(150))
33	c1 := Encrypt(n1, key.PubK)
34	c2 := Encrypt(n2, key.PubK)
35	c3c4 := HomomorphicAddition(c1, c2, key.PubK)
36	d := Decrypt(c3c4, key.PubK, key.PrivK)
37	if !bytes.Equal(new(big.Int).Add(n1, n2).Bytes(), d.Bytes()) {
38		fmt.Println(key)
39		t.Errorf("decrypted result not equal to original result")
40	}
41}