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}