# py_ecc.bls12_381 package

## Submodules

## py_ecc.bls12_381.bls12_381_curve module

py_ecc.bls12_381.bls12_381_curve.add(p1: Tuple[Field, Field] | None, p2: Tuple[Field, Field] | None) → Tuple[Field, Field] | None

py_ecc.bls12_381.bls12_381_curve.double(pt: Tuple[Field, Field] | None) → Tuple[Field, Field] | None

py_ecc.bls12_381.bls12_381_curve.eq(p1: Tuple[Field, Field] | None | Tuple[Field, Field, Field], p2: Tuple[Field, Field] | None | Tuple[Field, Field, Field]) → bool

py_ecc.bls12_381.bls12_381_curve.is_inf(pt: Tuple[Field, Field] | None | Tuple[Field, Field, Field]) → bool

py_ecc.bls12_381.bls12_381_curve.is_on_curve(pt: Tuple[Field, Field] | None, b: Field) → bool

py_ecc.bls12_381.bls12_381_curve.multiply(pt: Tuple[Field, Field] | None, n: int) → Tuple[Field, Field] | None

py_ecc.bls12_381.bls12_381_curve.neg(pt: Tuple[Field, Field] | None) → Tuple[Field, Field] | None

py_ecc.bls12_381.bls12_381_curve.twist(pt: Tuple[bls12_381_FQP, bls12_381_FQP] | None) → Tuple[bls12_381_FQ12, bls12_381_FQ12] | None

## py_ecc.bls12_381.bls12_381_pairing module

py_ecc.bls12_381.bls12_381_pairing.cast_point_to_fq12(pt: Tuple[bls12_381_FQ, bls12_381_FQ] | None) → Tuple[bls12_381_FQ12, bls12_381_FQ12] | None

py_ecc.bls12_381.bls12_381_pairing.final_exponentiate(p: Field) → Field

py_ecc.bls12_381.bls12_381_pairing.linefunc(P1: Tuple[Field, Field] | None, P2: Tuple[Field, Field] | None, T: Tuple[Field, Field] | None) → Field

py_ecc.bls12_381.bls12_381_pairing.miller_loop(Q: Tuple[bls12_381_FQ12, bls12_381_FQ12] | None, P: Tuple[bls12_381_FQ12, bls12_381_FQ12] | None) → bls12_381_FQ12

py_ecc.bls12_381.bls12_381_pairing.pairing(Q: Tuple[bls12_381_FQ2, bls12_381_FQ2] | None, P: Tuple[bls12_381_FQ, bls12_381_FQ] | None) → bls12_381_FQ12

## Module contents