docs: def verify(self, message, pubkey, rnum, snum):
          """
          Verify the signature
          for message m, pubkey Y, signature (r,s)
          r = xcoord(R)
          verify that :  G*m+Y*r=R*s
          this is true because: { Y=G*x, and R=G*k, s=(m+x*r)/k }
  
          G*m+G*x*r = G*k*(m+x*r)/k  ->
          G*(m+x*r) = G*(m+x*r)
          several ways to do the verification:
              r == xcoord[ G*(m/s) + Y*(r/s) ]  <<< the standard way
              R * s == G*m + Y*r
              r == xcoord[ (G*m + Y*r)/s) ]
  
          """
          m = self.GFn.value(message)
          r = self.GFn.value(rnum)
          s = self.GFn.value(snum)
  
          R = self.G * (m / s) + pubkey * (r / s)
  
          # alternative methods of verifying
          # RORG= self.ec.decompress(r, 0)
          # RR = self.G * m + pubkey * r
          # print "#1: %s .. %s"  % (RR, RORG*s)
          # print "#2: %s .. %s"  % (RR*(1/s), r)
          # print "#3: %s .. %s"  % (R, r)
  
          return R.x == r