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