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
 9func TestEncryptDecrypt(t *testing.T) {
10	key := GenerateKeyPair()
11
12	mBytes := []byte("Hi")
13	m := new(big.Int).SetBytes(mBytes)
14	c := Encrypt(m, key.PubK)
15
16	d := Decrypt(c, key.PrivK)
17	if m == d {
18		t.Errorf("m not equal to decrypted")
19	}
20}
21func TestBlindSignature(t *testing.T) {
22	key := GenerateKeyPair()
23
24	mBytes := []byte("Hi")
25	m := new(big.Int).SetBytes(mBytes)
26	c := Encrypt(m, key.PubK)
27
28	d := Decrypt(c, key.PrivK)
29	if m == d {
30		t.Errorf("decrypted d not equal to original m")
31	}
32	rVal := big.NewInt(int64(101))
33	mBlinded := Blind(m, rVal, key.PubK)
34	sigma := BlindSign(mBlinded, key.PrivK)
35	mSigned := Unblind(sigma, rVal, key.PubK)
36	verified := Verify(m, mSigned, key.PubK)
37	if !verified {
38		t.Errorf("false, signature not verified")
39	}
40}
41
42func TestHomomorphiMultiplication(t *testing.T) {
43	key := GenerateKeyPair()
44
45	n1 := big.NewInt(int64(11))
46	n2 := big.NewInt(int64(15))
47	c1 := Encrypt(n1, key.PubK)
48	c2 := Encrypt(n2, key.PubK)
49	c3c4 := HomomorphicMul(c1, c2, key.PubK)
50	d := Decrypt(c3c4, key.PrivK)
51	if !bytes.Equal(new(big.Int).Mul(n1, n2).Bytes(), d.Bytes()) {
52		t.Errorf("decrypted result not equal to original result")
53	}
54}