func (sm *SigningMessage) UnmarshalBinary(data []byte) error { var cons = make(protobuf.Constructors) var point abstract.Point var secret abstract.Secret cons[reflect.TypeOf(&point).Elem()] = func() interface{} { return msgSuite.Point() } cons[reflect.TypeOf(&secret).Elem()] = func() interface{} { return msgSuite.Secret() } return protobuf.DecodeWithConstructors(data, sm, cons) }
func (v *Vote) UnmarshalBinary(data []byte) error { var cons = make(protobuf.Constructors) var point abstract.Point var secret abstract.Secret var suite = nist.NewAES128SHA256P256() cons[reflect.TypeOf(&point).Elem()] = func() interface{} { return suite.Point() } cons[reflect.TypeOf(&secret).Elem()] = func() interface{} { return suite.Secret() } return protobuf.DecodeWithConstructors(data, v, cons) }
func (sm *SigningMessage) UnmarshalBinarySuite(jdata *JSONdata) error { suite := GetSuite(jdata.Suite) var cons = make(protobuf.Constructors) var point abstract.Point var secret abstract.Secret cons[reflect.TypeOf(&point).Elem()] = func() interface{} { return suite.Point() } cons[reflect.TypeOf(&secret).Elem()] = func() interface{} { return suite.Secret() } return protobuf.DecodeWithConstructors(jdata.Data, sm, cons) }
func ProtobufDecodePointList(bytes []byte) []abstract.Point { var aPoint abstract.Point var tPoint = reflect.TypeOf(&aPoint).Elem() suite := nist.NewAES128SHA256QR512() cons := protobuf.Constructors{ tPoint: func() interface{} { return suite.Point() }, } var msg PointList if err := protobuf.DecodeWithConstructors(bytes, &msg, cons); err != nil { log.Fatal(err) } return msg.Points }
// UnmarshalRegisteredType returns the type, the data and an error trying to // decode a message from a buffer. // The type must be registered to the network library in order to be decodable. func UnmarshalRegisteredType(buf []byte, constructors protobuf.Constructors) (MessageTypeID, Body, error) { b := bytes.NewBuffer(buf) var tID MessageTypeID if err := binary.Read(b, globalOrder, &tID); err != nil { return ErrorType, nil, err } typ, ok := registry.get(tID) if !ok { return ErrorType, nil, fmt.Errorf("Type %s not registered.", typ.Name()) } ptrVal := reflect.New(typ) ptr := ptrVal.Interface() if err := protobuf.DecodeWithConstructors(b.Bytes(), ptr, constructors); err != nil { return tID, ptrVal.Elem().Interface(), err } return tID, ptrVal.Elem().Interface(), nil }