arnaucube
arnaucube/cryptofunPublic Self-hosted repository
cryptofun/rsa/rsa_test.go
rsa/rsa_test.goRaw
 1package rsa
 2
 3import (
 4	"bytes"
 5	"math/big"
 6	"testing"
 7
 8	"github.com/stretchr/testify/assert"
 9)
10
11func TestEncryptDecrypt(t *testing.T) {
12	key, err := GenerateKeyPair()
13	assert.Nil(t, err)
14
15	mBytes := []byte("Hi")
16	m := new(big.Int).SetBytes(mBytes)
17	c := Encrypt(m, key.PubK)
18
19	d := Decrypt(c, key.PrivK)
20	if m == d {
21		t.Errorf("m not equal to decrypted")
22	}
23}
24func TestBlindSignature(t *testing.T) {
25	key, err := GenerateKeyPair()
26	assert.Nil(t, err)
27
28	mBytes := []byte("Hi")
29	m := new(big.Int).SetBytes(mBytes)
30	c := Encrypt(m, key.PubK)
31
32	d := Decrypt(c, key.PrivK)
33	if m == d {
34		t.Errorf("decrypted d not equal to original m")
35	}
36	rVal := big.NewInt(int64(101))
37	mBlinded := Blind(m, rVal, key.PubK)
38	sigma := BlindSign(mBlinded, key.PrivK)
39	mSigned := Unblind(sigma, rVal, key.PubK)
40	verified := Verify(m, mSigned, key.PubK)
41	if !verified {
42		t.Errorf("false, signature not verified")
43	}
44}
45
46func TestHomomorphicMultiplication(t *testing.T) {
47	key, err := GenerateKeyPair()
48	assert.Nil(t, err)
49
50	n1 := big.NewInt(int64(11))
51	n2 := big.NewInt(int64(15))
52	c1 := Encrypt(n1, key.PubK)
53	c2 := Encrypt(n2, key.PubK)
54	c3c4 := HomomorphicMul(c1, c2, key.PubK)
55	d := Decrypt(c3c4, key.PrivK)
56	if !bytes.Equal(new(big.Int).Mul(n1, n2).Bytes(), d.Bytes()) {
57		t.Errorf("decrypted result not equal to original result")
58	}
59}