Second round of bson extraction
This commit is contained in:
6 files changed
+18
-377
No files matched your search
@@ -0,0 +1,134 @@
|
||||
package bson
|
||||
|
||||
import (
|
||||
"crypto/rand"
|
||||
"encoding/json"
|
||||
"math/big"
|
||||
"reflect"
|
||||
"testing"
|
||||
|
||||
"github.com/keep-network/paillier"
|
||||
"gopkg.in/mgo.v2/bson"
|
||||
)
|
||||
|
||||
func AssertBSONIsGood(object, dump interface{}, t *testing.T) {
|
||||
data, err := bson.Marshal(object)
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
return
|
||||
}
|
||||
if err = bson.Unmarshal(data, dump); err != nil {
|
||||
t.Error(err)
|
||||
return
|
||||
}
|
||||
if !reflect.DeepEqual(object, dump) {
|
||||
t.Errorf("Object: %v doesn't equal dump: %v", object, dump)
|
||||
}
|
||||
}
|
||||
|
||||
func AssertJSONIsGood(object, dump interface{}, t *testing.T) {
|
||||
data, err := json.Marshal(object)
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
return
|
||||
}
|
||||
if err = json.Unmarshal(data, dump); err != nil {
|
||||
t.Error(err)
|
||||
return
|
||||
}
|
||||
if !reflect.DeepEqual(object, dump) {
|
||||
t.Errorf("Object: %v doesn't equal dump: %v", object, dump)
|
||||
}
|
||||
}
|
||||
|
||||
func TestCypherGetBSON(t *testing.T) {
|
||||
key := paillier.CreatePrivateKey(big.NewInt(101), big.NewInt(113))
|
||||
cypherOriginal, err := key.Encrypt(big.NewInt(100), rand.Reader)
|
||||
|
||||
cypher := new(Cypher)
|
||||
cypher.C = cypherOriginal.C
|
||||
|
||||
data, err := bson.Marshal(cypher)
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
return
|
||||
}
|
||||
cypher2 := new(Cypher)
|
||||
if err = bson.Unmarshal(data, cypher2); err != nil {
|
||||
t.Error(err)
|
||||
return
|
||||
}
|
||||
if !reflect.DeepEqual(cypher, cypher2) {
|
||||
t.Errorf("%v not equal %v", cypher, cypher2)
|
||||
}
|
||||
}
|
||||
|
||||
func TestThresholdKeyBSON(t *testing.T) {
|
||||
key := &ThresholdPublicKey{
|
||||
PublicKey: paillier.PublicKey{b(9)},
|
||||
TotalNumberOfDecryptionServers: 7,
|
||||
Threshold: 6,
|
||||
V: b(3),
|
||||
Vi: []*big.Int{b(2), b(34)},
|
||||
}
|
||||
AssertBSONIsGood(key, new(ThresholdPublicKey), t)
|
||||
}
|
||||
|
||||
func TestSetPrivateKeyBson(t *testing.T) {
|
||||
var key = new(PrivateKey)
|
||||
var keyOriginal = paillier.CreatePrivateKey(big.NewInt(101), big.NewInt(113))
|
||||
|
||||
key.PublicKey = keyOriginal.PublicKey
|
||||
key.Lambda = keyOriginal.Lambda
|
||||
|
||||
dump := new(PrivateKey)
|
||||
|
||||
AssertBSONIsGood(key, dump, t)
|
||||
}
|
||||
|
||||
func TestGetBSONEmptyKey(t *testing.T) {
|
||||
key := new(PrivateKey)
|
||||
m, err := key.GetBSON()
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
if !reflect.DeepEqual(make(map[string]string), m) {
|
||||
t.Error(m)
|
||||
}
|
||||
}
|
||||
|
||||
func TestPartialDecryptionZKPJsonification(t *testing.T) {
|
||||
pd := new(PartialDecryptionZKP)
|
||||
pd.Key = new(paillier.ThresholdPublicKey)
|
||||
pd.Key.Threshold = 98
|
||||
pd.Key.TotalNumberOfDecryptionServers = 230
|
||||
pd.Id = 1
|
||||
pd.Key.Vi = []*big.Int{b(77), b(67)}
|
||||
pd.Key.N = b(131)
|
||||
pd.Key.V = b(101)
|
||||
pd.Decryption = b(171)
|
||||
pd.E = b(112)
|
||||
pd.C = b(99)
|
||||
pd.Key.N = b(345)
|
||||
pd.Z = b(88)
|
||||
|
||||
AssertJSONIsGood(pd, new(PartialDecryptionZKP), t)
|
||||
}
|
||||
|
||||
func TestPartialDecryptionZKPBSONification(t *testing.T) {
|
||||
pd := new(PartialDecryptionZKP)
|
||||
pd.Key = new(paillier.ThresholdPublicKey)
|
||||
pd.Key.Threshold = 98
|
||||
pd.Key.TotalNumberOfDecryptionServers = 230
|
||||
pd.Id = 1
|
||||
pd.Key.Vi = []*big.Int{b(77), b(67)} // vi is 67
|
||||
pd.Key.N = b(131)
|
||||
pd.Key.V = b(101)
|
||||
pd.Decryption = b(171)
|
||||
pd.E = b(112)
|
||||
pd.C = b(99)
|
||||
pd.Key.N = b(345)
|
||||
pd.Z = b(88)
|
||||
|
||||
AssertBSONIsGood(pd, new(PartialDecryptionZKP), t)
|
||||
}
|
||||
Reference in new issue
Block a user