package bls12-381-gen

  1. Overview
  2. Docs

Module G2.MakeSource

Parameters

module Scalar : Fr.T
module Stubs : RAW

Signature

include Elliptic_curve_sig.T with module Scalar = Scalar
Sourceexception Not_on_curve of Bytes.t
Sourcetype t

The type of the element in the elliptic curve

Sourceval size_in_bytes : int

The size of a point representation, in bytes

Sourcemodule Scalar = Scalar
Sourceval empty : unit -> t

Create an empty value to store an element of the curve. DO NOT USE THIS TO DO COMPUTATIONS WITH, UNDEFINED BEHAVIORS MAY HAPPEN

Sourceval check_bytes : Bytes.t -> bool

Check if a point, represented as a byte array, is on the curve *

Sourceval of_bytes_opt : Bytes.t -> t option

Attempt to construct a point from a byte array of length size_in_bytes.

Sourceval of_bytes_exn : Bytes.t -> t

Attempt to construct a point from a byte array of length size_in_bytes. Raise Not_on_curve if the point is not on the curve

Sourceval of_compressed_bytes_opt : Bytes.t -> t option

Allocates a new point from a byte of length size_in_bytes / 2 array representing a point in compressed form.

Sourceval of_compressed_bytes_exn : Bytes.t -> t

Allocates a new point from a byte array of length size_in_bytes / 2 representing a point in compressed form. Raise Not_on_curve if the point is not on the curve.

Sourceval to_bytes : t -> Bytes.t

Return a representation in bytes

Sourceval to_compressed_bytes : t -> Bytes.t

Return a compressed bytes representation

Sourceval zero : t

Zero of the elliptic curve

Sourceval one : t

A fixed generator of the elliptic curve

Sourceval is_zero : t -> bool

Return true if the given element is zero

Sourceval random : ?state:Random.State.t -> unit -> t

Generate a random element. The element is on the curve and in the prime subgroup.

Sourceval add : t -> t -> t

Return the addition of two element

Sourceval double : t -> t

double g returns 2g

Sourceval negate : t -> t

Return the opposite of the element

Sourceval eq : t -> t -> bool

Return true if the two elements are algebraically the same

Sourceval mul : t -> Scalar.t -> t

Multiply an element by a scalar

Sourceval fft : domain:Scalar.t array -> points:t list -> t list

fft ~domain ~points performs a Fourier transform on points using domain The domain should be of the form w^{i} where w is a principal root of unity. If the domain is of size n, w must be a n-th principal root of unity. The number of points can be smaller than the domain size, but not larger. The complexity is in O(n log(m)) where n is the domain size and m the number of points.

Sourceval ifft : domain:Scalar.t array -> points:t list -> t list

ifft ~domain ~points performs an inverse Fourier transform on points using domain. The domain should be of the form w^{-i} (i.e the "inverse domain") where w is a principal root of unity. If the domain is of size n, w must be a n-th principal root of unity. The domain size must be exactly the same than the number of points. The complexity is O(n log(n)) where n is the domain size.

Sourceval of_z_opt : x:(Z.t * Z.t) -> y:(Z.t * Z.t) -> t option

Create a point from the coordinates. If the point is not on the curve, None is return. The points must be given modulo the order of Fq. The points are in the form (c0, c1) where x = c1 * X + c0 and y = c1 * X + c0. To create the point at infinity, use zero ()

OCaml

Innovation. Community. Security.