func (sr *BlockReply) UnmarshalJSON(dataJSON []byte) error { type Alias BlockReply //log.Print("Starting unmarshal") suite, err := suites.StringToSuite(sr.SuiteStr) if err != nil { return err } aux := &struct { SignatureInfo []byte Response abstract.Scalar Challenge abstract.Scalar AggCommit abstract.Point AggPublic abstract.Point *Alias }{ Response: suite.Scalar(), Challenge: suite.Scalar(), AggCommit: suite.Point(), AggPublic: suite.Point(), Alias: (*Alias)(sr), } //log.Print("Doing JSON unmarshal") if err := json.Unmarshal(dataJSON, &aux); err != nil { return err } if err := suite.Read(bytes.NewReader(aux.SignatureInfo), &sr.Response, &sr.Challenge, &sr.AggCommit, &sr.AggPublic); err != nil { log.Fatal("decoding signature Response / Challenge / AggCommit: ", err) return err } return nil }
func (sr *BlockReply) MarshalJSON() ([]byte, error) { type Alias BlockReply var b bytes.Buffer suite, err := suites.StringToSuite(sr.SuiteStr) if err != nil { return nil, err } //log.Print("Preparing abstracts") if err := suite.Write(&b, sr.Response, sr.Challenge, sr.AggCommit, sr.AggPublic); err != nil { log.Lvl1("encoding stampreply response/challenge/AggCommit:", err) return nil, err } //log.Print("Returning helper-struct") return json.Marshal(&struct { SignatureInfo []byte *Alias }{ SignatureInfo: b.Bytes(), Alias: (*Alias)(sr), }) }