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}