func (sn *Node) VerifyAllProofs(view int, chm *ChallengeMessage, proofForClient proof.Proof) { sn.roundLock.RLock() round := sn.Rounds[chm.Round] sn.roundLock.RUnlock() // proof from client to my root proof.CheckProof(sn.Suite().Hash, round.MTRoot, round.LocalMTRoot, round.Proofs["local"]) // proof from my root to big root log.Println(sn.Name(), "veryfing for view", view) proof.CheckProof(sn.Suite().Hash, chm.MTRoot, round.MTRoot, chm.Proof) // proof from client to big root proof.CheckProof(sn.Suite().Hash, chm.MTRoot, round.LocalMTRoot, proofForClient) }
func (s *Server) OnDone() sign.DoneFunc { return func(view int, SNRoot hashid.HashId, LogHash hashid.HashId, p proof.Proof) { s.mux.Lock() for i, msg := range s.Queue[s.PROCESSING] { // proof to get from s.Root to big root combProof := make(proof.Proof, len(p)) copy(combProof, p) // add my proof to get from a leaf message to my root s.Root combProof = append(combProof, s.Proofs[i]...) // proof that i can get from a leaf message to the big root if sign.DEBUG == true { proof.CheckProof(s.Signer.(*sign.Node).Suite().Hash, SNRoot, s.Leaves[i], combProof) } respMessg := TimeStampMessage{ Type: StampReplyType, ReqNo: msg.Tsm.ReqNo, Srep: &StampReply{Sig: SNRoot, Prf: combProof}} s.PutToClient(msg.To, respMessg) } s.mux.Unlock() } }