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}