// this function produces a signature given a response from the server. func SchnorrMComputeSignatureFromResponses(suite abstract.Suite, cc []byte, responses []SchnorrMResponse) SchnorrSignature { hct := suite.Cipher(cc) c := suite.Secret().Pick(hct) // H(m||r) var r abstract.Secret = responses[0].R for _, response := range responses[1:] { r.Add(r, response.R) } return SchnorrSignature{S: r, E: c} }