示例#1
0
 def set_rvals_p(self, rvals, r0val, rZval):
     assert self.nbits == len(rvals)
     if self.v1bits > 0:
         mvals = VerifierIOMLExt.compute_beta(rvals[:self.v1bits],
                                              self.com.rec_q)
         assert len(mvals) == len(self.tvals)
         assert len(mvals) == len(self.svals)
         self.avals = util.vector_times_matrix(self.tvals, mvals,
                                               self.com.rec_q)
         self.rAval = util.dot_product(self.svals, mvals, self.com.rec_q)
     else:
         self.avals = self.tvals[0]
         self.rAval = self.svals[0]
     self.bvals = VerifierIOMLExt.compute_beta(rvals[self.v1bits:],
                                               self.com.rec_q, r0val)
     self.rZval = rZval
示例#2
0
    def eval_finish(self, chal, szeta):
        # clean up for reuse of this object by V
        self.nbits = None

        zvals = util.vector_times_matrix(self.tvals, self.v1vals,
                                         self.com.rec_q)
        zvals = [(chal * z + d) % self.gops.q
                 for (d, z) in izip(self.dvals, zvals)]

        zh = chal * sum((si * v1i) % self.gops.q
                        for (si, v1i) in izip(self.svals, self.v1vals))
        zh += self.rhval
        zh %= self.gops.q

        zc = (chal * szeta + self.rcval) % self.gops.q

        if self.com.rec:
            self.com.rec_q.did_mul(len(zvals) + 2)
            self.com.rec_q.did_add(len(zvals) + len(self.svals) + 1)

        return (zvals, zh, zc)