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