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