test/functional/test_framework/key.py
def add_mixed(self, p1, p2):
        """Add a Jacobian tuple p1 and an affine tuple p2"""
        x1, y1, z1 = p1
        x2, y2, z2 = p2
        assert(z2 == 1)
        if z1 == 0:
            return p2
        z1_2 = (z1**2) % self.p
        z1_3 = (z1_2 * z1) % self.p
        u2 = (x2 * z1_2) % self.p
        s2 = (y2 * z1_3) % self.p
        if x1 == u2:
            if (y1 != s2):
                return (0, 1, 0)
            return self.double(p1)
        h = u2 - x1
        r = s2 - y1
        h_2 = (h**2) % self.p
        h_3 = (h_2 * h) % self.p
        u1_h_2 = (x1 * h_2) % self.p
        x3 = (r**2 - h_3 - 2 * u1_h_2) % self.p
        y3 = (r * (u1_h_2 - x3) - y1 * h_3) % self.p
        z3 = (h * z1) % self.p
        return (x3, y3, z3)
Add a Jacobian tuple p1 and an affine tuple p2
Add a Jacobian tuple p1 and an affine tuple p2
Add a Jacobian tuple p1 and an affine tuple p2
def add_mixed(self, p1, p2):
        x1, y1, z1 = p1
        x2, y2, z2 = p2
        assert(z2 == 1)
        if z1 == 0:
            return p2
        z1_2 = (z1**2) % self.p
        z1_3 = (z1_2 * z1) % self.p
        u2 = (x2 * z1_2) % self.p
        s2 = (y2 * z1_3) % self.p
        if x1 == u2:
            if (y1 != s2):
                return (0, 1, 0)
            return self.double(p1)
        h = u2 - x1
        r = s2 - y1
        h_2 = (h**2) % self.p
        h_3 = (h_2 * h) % self.p
        u1_h_2 = (x1 * h_2) % self.p
        x3 = (r**2 - h_3 - 2 * u1_h_2) % self.p
        y3 = (r * (u1_h_2 - x3) - y1 * h_3) % self.p
        z3 = (h * z1) % self.p
        return (x3, y3, z3)
def add_mixed ( self , p1 , p2 ) : x1 , y1 , z1 = p1 x2 , y2 , z2 = p2 assert ( z2 == 1 ) if z1 == 0 : return p2 z1_2 = ( z1 ** 2 ) % self . p z1_3 = ( z1_2 * z1 ) % self . p u2 = ( x2 * z1_2 ) % self . p s2 = ( y2 * z1_3 ) % self . p if x1 == u2 : if ( y1 != s2 ) : return ( 0 , 1 , 0 ) return self . double ( p1 ) h = u2 - x1 r = s2 - y1 h_2 = ( h ** 2 ) % self . p h_3 = ( h_2 * h ) % self . p u1_h_2 = ( x1 * h_2 ) % self . p x3 = ( r ** 2 - h_3 - 2 * u1_h_2 ) % self . p y3 = ( r * ( u1_h_2 - x3 ) - y1 * h_3 ) % self . p z3 = ( h * z1 ) % self . p return ( x3 , y3 , z3 )
Add a Jacobian tuple p1 and an affine tuple p2
Add a Jacobian tuple p1 and an affine tuple p2
"""Add a Jacobian tuple p1 and an affine tuple p2"""
self
p1
p2