def gen_keys(prv_key: Optional[PrvKey] = None, ec: Curve = secp256k1) -> Tuple[int, Point]: "Return a private/public (int, Point) key-pair." if prv_key is None: # q in the range [1, ec.n-1] q = 1 + secrets.randbelow(ec.n - 1) else: q = int_from_prv_key(prv_key, ec) QJ = _mult(q, ec.GJ, ec) Q = ec.aff_from_jac(QJ) return q, Q
def gen_keys_(prv_key: Optional[PrvKey] = None, ec: Curve = secp256k1) -> Tuple[int, int, JacPoint]: "Return a BIP340 private/public (int, JacPoint) key-pair." if prv_key is None: q = 1 + secrets.randbelow(ec.n - 1) else: q = int_from_prv_key(prv_key, ec) QJ = _mult(q, ec.GJ, ec) x_Q, y_Q = ec.aff_from_jac(QJ) if y_Q % 2: q = ec.n - q QJ = ec.negate_jac(QJ) return q, x_Q, QJ