Extract BSON/JSON code to separate package #4

Merged
nkuba merged 6 commits from master into master 2018-06-23 09:11:19 -04:00
8 changed files with 43 additions and 63 deletions
Showing only changes of commit d331cd9df5 - Show all commits

No files matched your search

+7 -11
View File
@@ -1,5 +1,3 @@
// Package bson provides functions for serialization and deserialization between
// paillier objects and BSON
package bson package bson
import ( import (
@@ -11,7 +9,7 @@ import (
"gopkg.in/mgo.v2/bson" "gopkg.in/mgo.v2/bson"
) )
type Cypher paillier.Cypher type SerializableCypher paillier.Cypher
// Serializes Cypher to BSON // Serializes Cypher to BSON
func SerializeCypher(cypher *paillier.Cypher) ([]byte, error) { func SerializeCypher(cypher *paillier.Cypher) ([]byte, error) {
@@ -20,7 +18,7 @@ func SerializeCypher(cypher *paillier.Cypher) ([]byte, error) {
// Deserializes BSON to Cypher // Deserializes BSON to Cypher
func DeserializeCypher(data []byte) (*paillier.Cypher, error) { func DeserializeCypher(data []byte) (*paillier.Cypher, error) {
serializable := new(Cypher) serializable := new(SerializableCypher)
if err := bson.Unmarshal(data, serializable); err != nil { if err := bson.Unmarshal(data, serializable); err != nil {
return nil, err return nil, err
} }
@@ -28,14 +26,12 @@ func DeserializeCypher(data []byte) (*paillier.Cypher, error) {
return toOriginalCypher(serializable), nil return toOriginalCypher(serializable), nil
} }
// Changes original Cypher to serializable Cypher func toSerializableCypher(cypher *paillier.Cypher) *SerializableCypher {
func toSerializableCypher(cypher *paillier.Cypher) *Cypher { serializable := SerializableCypher(*cypher)
serializable := Cypher(*cypher)
return &serializable return &serializable
} }
// Changes serializable Cypher to original Cypher func toOriginalCypher(serializable *SerializableCypher) *paillier.Cypher {
func toOriginalCypher(serializable *Cypher) *paillier.Cypher {
original := paillier.Cypher(*serializable) original := paillier.Cypher(*serializable)
return &original return &original
} }
@@ -44,11 +40,11 @@ type dbCypher struct {
C string C string
} }
func (cypher *Cypher) GetBSON() (interface{}, error) { func (cypher *SerializableCypher) GetBSON() (interface{}, error) {
return &dbCypher{fmt.Sprintf("%x", cypher.C)}, nil return &dbCypher{fmt.Sprintf("%x", cypher.C)}, nil
} }
func (cypher *Cypher) SetBSON(raw bson.Raw) error { func (cypher *SerializableCypher) SetBSON(raw bson.Raw) error {
c := dbCypher{} c := dbCypher{}
if err := raw.Unmarshal(&c); err != nil { if err := raw.Unmarshal(&c); err != nil {
return err return err
+10 -14
View File
@@ -1,5 +1,3 @@
// Package bson provides functions for serialization and deserialization between
// paillier objects and BSON
package bson package bson
import ( import (
@@ -12,7 +10,7 @@ import (
"gopkg.in/mgo.v2/bson" "gopkg.in/mgo.v2/bson"
) )
type PartialDecryptionZKP paillier.PartialDecryptionZKP type SerializablePartialDecryptionZKP paillier.PartialDecryptionZKP
// Serializes PartialDecryptionZKP to BSON // Serializes PartialDecryptionZKP to BSON
func SerializePartialDecryptionZKP(pdzkp *paillier.PartialDecryptionZKP) ([]byte, error) { func SerializePartialDecryptionZKP(pdzkp *paillier.PartialDecryptionZKP) ([]byte, error) {
@@ -21,7 +19,7 @@ func SerializePartialDecryptionZKP(pdzkp *paillier.PartialDecryptionZKP) ([]byte
// Deserializes BSON to PartialDecryptionZKP // Deserializes BSON to PartialDecryptionZKP
func DeserializePartialDecryptionZKP(data []byte) (*paillier.PartialDecryptionZKP, error) { func DeserializePartialDecryptionZKP(data []byte) (*paillier.PartialDecryptionZKP, error) {
serializable := new(PartialDecryptionZKP) serializable := new(SerializablePartialDecryptionZKP)
if err := bson.Unmarshal(data, serializable); err != nil { if err := bson.Unmarshal(data, serializable); err != nil {
return nil, err return nil, err
} }
@@ -36,7 +34,7 @@ func JsonSerializePartialDecryptionZKP(pdzkp *paillier.PartialDecryptionZKP) ([]
// Deserializes JSON to PartialDecryptionZKP // Deserializes JSON to PartialDecryptionZKP
func JsonDeserializePartialDecryptionZKP(data []byte) (*paillier.PartialDecryptionZKP, error) { func JsonDeserializePartialDecryptionZKP(data []byte) (*paillier.PartialDecryptionZKP, error) {
serializable := new(PartialDecryptionZKP) serializable := new(SerializablePartialDecryptionZKP)
if err := json.Unmarshal(data, serializable); err != nil { if err := json.Unmarshal(data, serializable); err != nil {
return nil, err return nil, err
} }
@@ -44,14 +42,12 @@ func JsonDeserializePartialDecryptionZKP(data []byte) (*paillier.PartialDecrypti
return toOriginalPartialDecryptionZKP(serializable), nil return toOriginalPartialDecryptionZKP(serializable), nil
} }
// Changes original PartialDecryptionZKP to serializable PartialDecryptionZKP func toSerializablePartialDecryptionZKP(pdzkp *paillier.PartialDecryptionZKP) *SerializablePartialDecryptionZKP {
func toSerializablePartialDecryptionZKP(pdzkp *paillier.PartialDecryptionZKP) *PartialDecryptionZKP { serializable := SerializablePartialDecryptionZKP(*pdzkp)
serializable := PartialDecryptionZKP(*pdzkp)
return &serializable return &serializable
} }
// Changes serializable PartialDecryptionZKP to original PartialDecryptionZKP func toOriginalPartialDecryptionZKP(serializable *SerializablePartialDecryptionZKP) *paillier.PartialDecryptionZKP {
func toOriginalPartialDecryptionZKP(serializable *PartialDecryptionZKP) *paillier.PartialDecryptionZKP {
original := paillier.PartialDecryptionZKP(*serializable) original := paillier.PartialDecryptionZKP(*serializable)
return &original return &original
} }
@@ -69,13 +65,13 @@ type dbPartialDecryptionZKP struct {
Threshold int `json:"threshold"` Threshold int `json:"threshold"`
} }
func (pdzkp *PartialDecryptionZKP) GetBSON() (interface{}, error) { func (pdzkp *SerializablePartialDecryptionZKP) GetBSON() (interface{}, error) {
db := new(dbPartialDecryptionZKP) db := new(dbPartialDecryptionZKP)
db.fromPartialDecryptionZKP(pdzkp) db.fromPartialDecryptionZKP(pdzkp)
return db, nil return db, nil
} }
func (pdzkp *PartialDecryptionZKP) SetBSON(raw bson.Raw) error { func (pdzkp *SerializablePartialDecryptionZKP) SetBSON(raw bson.Raw) error {
db := new(dbPartialDecryptionZKP) db := new(dbPartialDecryptionZKP)
if err := raw.Unmarshal(db); err != nil { if err := raw.Unmarshal(db); err != nil {
return err return err
@@ -83,7 +79,7 @@ func (pdzkp *PartialDecryptionZKP) SetBSON(raw bson.Raw) error {
return db.toPartialDecryptionZKP(pdzkp) return db.toPartialDecryptionZKP(pdzkp)
} }
func (dbPDZKP *dbPartialDecryptionZKP) fromPartialDecryptionZKP(pdzkp *PartialDecryptionZKP) { func (dbPDZKP *dbPartialDecryptionZKP) fromPartialDecryptionZKP(pdzkp *SerializablePartialDecryptionZKP) {
dbPDZKP.Id = pdzkp.Id dbPDZKP.Id = pdzkp.Id
dbPDZKP.TotalNumberOfDecryptionServers = pdzkp.Key.TotalNumberOfDecryptionServers dbPDZKP.TotalNumberOfDecryptionServers = pdzkp.Key.TotalNumberOfDecryptionServers
dbPDZKP.Threshold = pdzkp.Key.Threshold dbPDZKP.Threshold = pdzkp.Key.Threshold
@@ -99,7 +95,7 @@ func (dbPDZKP *dbPartialDecryptionZKP) fromPartialDecryptionZKP(pdzkp *PartialDe
} }
} }
func (dbPDZKP *dbPartialDecryptionZKP) toPartialDecryptionZKP(pdzkp *PartialDecryptionZKP) error { func (dbPDZKP *dbPartialDecryptionZKP) toPartialDecryptionZKP(pdzkp *SerializablePartialDecryptionZKP) error {
pdzkp.Key = new(paillier.ThresholdPublicKey) pdzkp.Key = new(paillier.ThresholdPublicKey)
var oks = make([]bool, 6) var oks = make([]bool, 6)
+7 -11
View File
@@ -1,5 +1,3 @@
// Package bson provides functions for serialization and deserialization between
// paillier objects and BSON
package bson package bson
import ( import (
@@ -9,7 +7,7 @@ import (
"gopkg.in/mgo.v2/bson" "gopkg.in/mgo.v2/bson"
) )
type PrivateKey paillier.PrivateKey type SerializablePrivateKey paillier.PrivateKey
// Serializes PrivateKey to BSON // Serializes PrivateKey to BSON
func SerializePrivateKey(key *paillier.PrivateKey) ([]byte, error) { func SerializePrivateKey(key *paillier.PrivateKey) ([]byte, error) {
@@ -18,7 +16,7 @@ func SerializePrivateKey(key *paillier.PrivateKey) ([]byte, error) {
// Deserializes BSON to PrivateKey // Deserializes BSON to PrivateKey
func DeserializePrivateKey(data []byte) (*paillier.PrivateKey, error) { func DeserializePrivateKey(data []byte) (*paillier.PrivateKey, error) {
serializable := new(PrivateKey) serializable := new(SerializablePrivateKey)
if err := bson.Unmarshal(data, serializable); err != nil { if err := bson.Unmarshal(data, serializable); err != nil {
return nil, err return nil, err
} }
@@ -26,14 +24,12 @@ func DeserializePrivateKey(data []byte) (*paillier.PrivateKey, error) {
return toOriginalPrivateKey(serializable), nil return toOriginalPrivateKey(serializable), nil
} }
// Changes original PrivateKey to serializable PrivateKey func toSerializablePrivateKey(key *paillier.PrivateKey) *SerializablePrivateKey {
func toSerializablePrivateKey(key *paillier.PrivateKey) *PrivateKey { serializable := SerializablePrivateKey(*key)
serializable := PrivateKey(*key)
return &serializable return &serializable
} }
// Changes serializable PrivateKey to original PrivateKey func toOriginalPrivateKey(serializable *SerializablePrivateKey) *paillier.PrivateKey {
func toOriginalPrivateKey(serializable *PrivateKey) *paillier.PrivateKey {
original := paillier.PrivateKey(*serializable) original := paillier.PrivateKey(*serializable)
return &original return &original
} }
@@ -44,7 +40,7 @@ type dbPrivateKey struct {
Mu string `bson:",omitempty"` Mu string `bson:",omitempty"`
} }
func (privateKey *PrivateKey) GetBSON() (interface{}, error) { func (privateKey *SerializablePrivateKey) GetBSON() (interface{}, error) {
m := make(map[string]string) m := make(map[string]string)
if privateKey.N != nil { if privateKey.N != nil {
@@ -56,7 +52,7 @@ func (privateKey *PrivateKey) GetBSON() (interface{}, error) {
return m, nil return m, nil
} }
func (privateKey *PrivateKey) SetBSON(raw bson.Raw) error { func (privateKey *SerializablePrivateKey) SetBSON(raw bson.Raw) error {
var err error = nil var err error = nil
c := new(dbPrivateKey) c := new(dbPrivateKey)
raw.Unmarshal(c) raw.Unmarshal(c)
+1 -1
View File
@@ -7,7 +7,7 @@ import (
"github.com/keep-network/paillier" "github.com/keep-network/paillier"
) )
func TestSetPrivateKeyBson(t *testing.T) { func TestPrivateKeyBsonSerialization(t *testing.T) {
key := &paillier.PrivateKey{ key := &paillier.PrivateKey{
PublicKey: paillier.PublicKey{ PublicKey: paillier.PublicKey{
N: (b(345)), N: (b(345)),
+7 -11
View File
@@ -1,5 +1,3 @@
// Package bson provides functions for serialization and deserialization between
// paillier objects and BSON
package bson package bson
import ( import (
@@ -9,7 +7,7 @@ import (
"gopkg.in/mgo.v2/bson" "gopkg.in/mgo.v2/bson"
) )
type PublicKey paillier.PublicKey type SerializablePublicKey paillier.PublicKey
// Serializes PublicKey to BSON // Serializes PublicKey to BSON
func SerializePublicKey(publicKey *paillier.PublicKey) ([]byte, error) { func SerializePublicKey(publicKey *paillier.PublicKey) ([]byte, error) {
@@ -18,7 +16,7 @@ func SerializePublicKey(publicKey *paillier.PublicKey) ([]byte, error) {
// Deserializes BSON to PublicKey // Deserializes BSON to PublicKey
func DeserializePublicKey(data []byte) (*paillier.PublicKey, error) { func DeserializePublicKey(data []byte) (*paillier.PublicKey, error) {
serializable := new(PublicKey) serializable := new(SerializablePublicKey)
if err := bson.Unmarshal(data, serializable); err != nil { if err := bson.Unmarshal(data, serializable); err != nil {
return nil, err return nil, err
} }
@@ -26,14 +24,12 @@ func DeserializePublicKey(data []byte) (*paillier.PublicKey, error) {
return toOriginalPublicKey(serializable), nil return toOriginalPublicKey(serializable), nil
} }
// Changes original PublicKey to serializable PublicKey func toSerializablePublicKey(publicKey *paillier.PublicKey) *SerializablePublicKey {
func toSerializablePublicKey(publicKey *paillier.PublicKey) *PublicKey { serializable := SerializablePublicKey(*publicKey)
serializable := PublicKey(*publicKey)
return &serializable return &serializable
} }
// Changes serializable PublicKey to original PublicKey func toOriginalPublicKey(serializable *SerializablePublicKey) *paillier.PublicKey {
func toOriginalPublicKey(serializable *PublicKey) *paillier.PublicKey {
original := paillier.PublicKey(*serializable) original := paillier.PublicKey(*serializable)
return &original return &original
} }
@@ -42,13 +38,13 @@ type dbPublicKey struct {
N string `bson:",omitempty"` N string `bson:",omitempty"`
} }
func (publicKey *PublicKey) GetBSON() (interface{}, error) { func (publicKey *SerializablePublicKey) GetBSON() (interface{}, error) {
m := make(map[string]string) m := make(map[string]string)
m["n"] = fmt.Sprintf("%x", publicKey.N) m["n"] = fmt.Sprintf("%x", publicKey.N)
return m, nil return m, nil
} }
func (publicKey *PublicKey) SetBSON(raw bson.Raw) error { func (publicKey *SerializablePublicKey) SetBSON(raw bson.Raw) error {
var err error = nil var err error = nil
c := new(dbPublicKey) c := new(dbPublicKey)
raw.Unmarshal(c) raw.Unmarshal(c)
+1 -1
View File
@@ -7,7 +7,7 @@ import (
"github.com/keep-network/paillier" "github.com/keep-network/paillier"
) )
func TestSetPublicKeyBson(t *testing.T) { func TestPublicKeyBsonSerialization(t *testing.T) {
key := &paillier.PublicKey{ key := &paillier.PublicKey{
N: (b(345)), N: (b(345)),
} }
+9 -13
View File
@@ -1,5 +1,3 @@
// Package bson provides functions for serialization and deserialization between
// paillier objects and BSON
package bson package bson
import ( import (
@@ -11,7 +9,7 @@ import (
"gopkg.in/mgo.v2/bson" "gopkg.in/mgo.v2/bson"
) )
type ThresholdPublicKey paillier.ThresholdPublicKey type SerializableThresholdPublicKey paillier.ThresholdPublicKey
// Serializes ThresholdPublicKey to BSON // Serializes ThresholdPublicKey to BSON
func SerializeThresholdPublicKey(key *paillier.ThresholdPublicKey) ([]byte, error) { func SerializeThresholdPublicKey(key *paillier.ThresholdPublicKey) ([]byte, error) {
@@ -20,7 +18,7 @@ func SerializeThresholdPublicKey(key *paillier.ThresholdPublicKey) ([]byte, erro
// Deserializes BSON to ThresholdPublicKey // Deserializes BSON to ThresholdPublicKey
func DeserializeThresholdPublicKey(data []byte) (*paillier.ThresholdPublicKey, error) { func DeserializeThresholdPublicKey(data []byte) (*paillier.ThresholdPublicKey, error) {
serializable := new(ThresholdPublicKey) serializable := new(SerializableThresholdPublicKey)
if err := bson.Unmarshal(data, serializable); err != nil { if err := bson.Unmarshal(data, serializable); err != nil {
return nil, err return nil, err
} }
@@ -28,25 +26,23 @@ func DeserializeThresholdPublicKey(data []byte) (*paillier.ThresholdPublicKey, e
return toOriginalThresholdPublicKey(serializable), nil return toOriginalThresholdPublicKey(serializable), nil
} }
// Changes original ThresholdPublicKey to serializable ThresholdPublicKey func toSerializableThresholdPublicKey(key *paillier.ThresholdPublicKey) *SerializableThresholdPublicKey {
func toSerializableThresholdPublicKey(key *paillier.ThresholdPublicKey) *ThresholdPublicKey { serializable := SerializableThresholdPublicKey(*key)
serializable := ThresholdPublicKey(*key)
return &serializable return &serializable
} }
// Changes serializable ThresholdPublicKey to original ThresholdPublicKey func toOriginalThresholdPublicKey(serializable *SerializableThresholdPublicKey) *paillier.ThresholdPublicKey {
func toOriginalThresholdPublicKey(serializable *ThresholdPublicKey) *paillier.ThresholdPublicKey {
original := paillier.ThresholdPublicKey(*serializable) original := paillier.ThresholdPublicKey(*serializable)
return &original return &original
} }
func (thresholdPublicKey *ThresholdPublicKey) GetBSON() (interface{}, error) { func (thresholdPublicKey *SerializableThresholdPublicKey) GetBSON() (interface{}, error) {
r := new(dbThresholdKey) r := new(dbThresholdKey)
r.fromThresholdPublicKey(thresholdPublicKey) r.fromThresholdPublicKey(thresholdPublicKey)
return r, nil return r, nil
} }
func (thresholdPublicKey *ThresholdPublicKey) SetBSON(raw bson.Raw) error { func (thresholdPublicKey *SerializableThresholdPublicKey) SetBSON(raw bson.Raw) error {
r := new(dbThresholdKey) r := new(dbThresholdKey)
if err := raw.Unmarshal(r); err != nil { if err := raw.Unmarshal(r); err != nil {
return err return err
@@ -62,7 +58,7 @@ type dbThresholdKey struct {
N string N string
} }
func (dbThresholdKey *dbThresholdKey) fromThresholdPublicKey(key *ThresholdPublicKey) { func (dbThresholdKey *dbThresholdKey) fromThresholdPublicKey(key *SerializableThresholdPublicKey) {
dbThresholdKey.TotalNumberOfDecryptionServers = key.TotalNumberOfDecryptionServers dbThresholdKey.TotalNumberOfDecryptionServers = key.TotalNumberOfDecryptionServers
dbThresholdKey.Threshold = key.Threshold dbThresholdKey.Threshold = key.Threshold
dbThresholdKey.V = fmt.Sprintf("%x", key.V) dbThresholdKey.V = fmt.Sprintf("%x", key.V)
@@ -73,7 +69,7 @@ func (dbThresholdKey *dbThresholdKey) fromThresholdPublicKey(key *ThresholdPubli
} }
} }
func (dbThresholdKey *dbThresholdKey) toThresholdPublicKey(key *ThresholdPublicKey) error { func (dbThresholdKey *dbThresholdKey) toThresholdPublicKey(key *SerializableThresholdPublicKey) error {
key.TotalNumberOfDecryptionServers = dbThresholdKey.TotalNumberOfDecryptionServers key.TotalNumberOfDecryptionServers = dbThresholdKey.TotalNumberOfDecryptionServers
key.Threshold = dbThresholdKey.Threshold key.Threshold = dbThresholdKey.Threshold
oks := make([]bool, 2) oks := make([]bool, 2)
+1 -1
View File
@@ -8,7 +8,7 @@ import (
"github.com/keep-network/paillier" "github.com/keep-network/paillier"
) )
func TestThresholdKeyBSON(t *testing.T) { func TestThresholdKeySerialization(t *testing.T) {
key := &paillier.ThresholdPublicKey{ key := &paillier.ThresholdPublicKey{
PublicKey: paillier.PublicKey{b(9)}, PublicKey: paillier.PublicKey{b(9)},
TotalNumberOfDecryptionServers: 7, TotalNumberOfDecryptionServers: 7,