package bls12-381

  1. Overview
  2. Docs

BLS signatures instantiation minimizing the size of the signatures (48 bytes) but use longer public keys (96 bytes).

type pk

Type of the public keys

val pk_size_in_bytes : int

The size of a serialized value pk

val unsafe_pk_of_bytes : Bytes.t -> pk

Build a value of type pk without performing any check on the input. It is safe to use this function when verifying a signature as the signature function verifies if the point is in the prime subgroup. Using unsafe_pk_of_bytes removes a verification performed twice when used pk_of_bytes_exn or pk_of_bytes_opt.

The expected bytes format are the compressed form of a point on G2.

val pk_of_bytes_exn : Bytes.t -> pk

Build a value of type pk safely, i.e. the function checks the bytes given in parameters represents a point on the curve and in the prime subgroup. Raise Invalid_argument if the bytes are not in the correct format or does not represent a point in the prime subgroup.

The expected bytes format are the compressed form of a point on G2.

val pk_of_bytes_opt : Bytes.t -> pk option

Build a value of type pk safely, i.e. the function checks the bytes given in parameters represents a point on the curve and in the prime subgroup. Return None if the bytes are not in the correct format or does not represent a point in the prime subgroup.

The expected bytes format are the compressed form of a point on G2.

val pk_to_bytes : pk -> Bytes.t

Returns a bytes representation of a value of type pk. The output is the compressed form a the point G2.t the pk represents.

val derive_pk : sk -> pk

derive_pk sk derives the corresponding public key of sk.

type signature

Type of the signatures

val signature_size_in_bytes : int

The size of a serialized value signature

val unsafe_signature_of_bytes : Bytes.t -> signature

Build a value of type signature without performing any check on the input. It is safe to use this function when verifying a signature as the signature function verifies if the point is in the prime subgroup. Using unsafe_signature_of_bytes removes a verification performed twice when used signature_of_bytes_exn or signature_of_bytes_opt.

The expected bytes format are the compressed form of a point on G1.

val signature_of_bytes_exn : Bytes.t -> signature

Build a value of type signature safely, i.e. the function checks the bytes given in parameters represents a point on the curve and in the prime subgroup. Raise Invalid_argument if the bytes are not in the correct format or does not represent a point in the prime subgroup.

The expected bytes format are the compressed form of a point on G1.

val signature_of_bytes_opt : Bytes.t -> signature option

Build a value of type signature safely, i.e. the function checks the bytes given in parameters represents a point on the curve and in the prime subgroup. Return None if the bytes are not in the correct format or does not represent a point in the prime subgroup.

The expected bytes format are the compressed form of a point on G1.

val signature_to_bytes : signature -> Bytes.t

Returns a bytes representation of a value of type signature. The output is the compressed form a the point G1.t the signature represents.

val aggregate_signature_opt : signature list -> signature option

aggregate_signature_opt signatures aggregates the signatures signatures, following https://datatracker.ietf.org/doc/html/draft-irtf-cfrg-bls-signature-04#section-2.8. Return None if INVALID is expected in the specification

module Basic : sig ... end

Follow https://datatracker.ietf.org/doc/html/draft-irtf-cfrg-bls-signature-04#section-3.1

module Aug : sig ... end

Follow https://datatracker.ietf.org/doc/html/draft-irtf-cfrg-bls-signature-04#section-3.2

module Pop : sig ... end

Follow https://datatracker.ietf.org/doc/html/draft-irtf-cfrg-bls-signature-04#section-3.3