Functor.MakeProjectiveWeierstrass
module Fq : Mavryk_bls12_381.Ff_sig.PRIME
module Fp : Mavryk_bls12_381.Ff_sig.PRIME
module Params : sig ... end
Represents an element on the curve. In the case of a curve with a cofactor, the element is not necessarily in the prime subgroup.
module Scalar : Mavryk_bls12_381.Ff_sig.PRIME with type t = Fp.t
module Base : Mavryk_bls12_381.Ff_sig.PRIME with type t = Fq.t
Check if a point, represented as a byte array, is on the curve *
val of_bytes_opt : Stdlib.Bytes.t -> t option
Attempt to construct a point from a byte array
val of_bytes_exn : Stdlib.Bytes.t -> t
Attempt to construct a point from a byte array. Raise Not_on_curve
if the point is not on the curve
val to_bytes : t -> Stdlib.Bytes.t
Return a representation in bytes
val zero : t
Zero of the elliptic curve
val one : t
A fixed generator of the elliptic curve
val is_zero : t -> bool
Return true
if the given element is zero
val random : ?state:Stdlib.Random.State.t -> unit -> t
Generate a random element
val a : Base.t
val b : Base.t
is_on_curve ~x ~y ~z
returns true
if the coordinates (x, y, z)
represents a point on the curve. It does not check the point is in the prime subgroup.
is_in_prime_subgroup ~x ~y ~z
returns true
if the coordinates (x, y, z)
represents a point in the prime subgroup. The coordinates must be a point on the curve.
Build a point from the affine coordinates. If the point is not on the curve and in the subgroup, returns None
Build a point from the affine coordinates. If the point is not on the curve and in the subgroup, raise Not_on_curve
.