def __uncompress_public_key(public_key: bytes) -> bytes:
        """
        Uncompress the compressed public key.
        :param public_key: compressed public key
        :return: uncompressed public key
        """
        is_even = public_key.startswith(b'\x02')
        x = string_to_number(public_key[1:])

        curve = NIST256p.curve
        order = NIST256p.order
        p = curve.p()
        alpha = (pow(x, 3, p) + (curve.a() * x) + curve.b()) % p
        beta = square_root_mod_prime(alpha, p)
        if is_even == bool(beta & 1):
            y = p - beta
        else:
            y = beta
        point = Point(curve, x, y, order)
        return b''.join([number_to_string(point.x(), order), number_to_string(point.y(), order)])
def __uncompress_public_key ( public_key : bytes ) -> bytes : is_even = public_key . startswith ( b'\x02' ) x = string_to_number ( public_key [ 1 : ] ) curve = NIST256p . curve order = NIST256p . order p = curve . p ( ) alpha = ( pow ( x , 3 , p ) + ( curve . a ( ) * x ) + curve . b ( ) ) % p beta = square_root_mod_prime ( alpha , p ) if is_even == bool ( beta & 1 ) : y = p - beta else : y = beta point = Point ( curve , x , y , order ) return b'' . join ( [ number_to_string ( point . x ( ) , order ) , number_to_string ( point . y ( ) , order ) ] )
Uncompress the compressed public key.
        :param public_key: compressed public key
        :return: uncompressed public key