You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

54 lines
1.1 KiB

package paillier
import (
"bytes"
"fmt"
"math/big"
"testing"
"github.com/stretchr/testify/assert"
)
func TestEncryptDecrypt(t *testing.T) {
key, err := GenerateKeyPair()
assert.Nil(t, err)
mBytes := []byte("Hi")
m := new(big.Int).SetBytes(mBytes)
c := Encrypt(m, key.PubK)
d := Decrypt(c, key.PubK, key.PrivK)
if m == d {
fmt.Println(key)
t.Errorf("m not equal to decrypted")
}
}
func TestHomomorphicAddition(t *testing.T) {
// key, err := GenerateKeyPair()
// assert.Nil(t, err)
// key harcoded for tests
pubK := PublicKey{
N: big.NewInt(204223),
G: big.NewInt(24929195694),
}
privK := PrivateKey{
Lambda: big.NewInt(101660),
Mu: big.NewInt(117648),
}
key := Key{
PubK: pubK,
PrivK: privK,
}
n1 := big.NewInt(int64(110))
n2 := big.NewInt(int64(150))
c1 := Encrypt(n1, key.PubK)
c2 := Encrypt(n2, key.PubK)
c3c4 := HomomorphicAddition(c1, c2, key.PubK)
d := Decrypt(c3c4, key.PubK, key.PrivK)
if !bytes.Equal(new(big.Int).Add(n1, n2).Bytes(), d.Bytes()) {
fmt.Println(key)
t.Errorf("decrypted result not equal to original result")
}
}