Signature.Bls
Tezos - BLS12-381 cryptography
include Tezos_stdlib.Compare.S
with type t := Bls12_381_signature.MinPk.signature
aggregate_check pk_msg_list signature
returns true
if the signature
is a valid aggregate signature of the signatures produced by signing message msg
(with optional watermark
) with the secret key of pk
for each element (pk, watermark, msg)
of the list pk_msg_list
.
aggregate_signature_opt sig_list
creates an aggregated signature using the list of signatures sig_list
. If subgroup_check
is set, the function also checks if the points are in the prime subgroup.
aggregate_signature_weighted_opt [(w_1, s_1);(w_1, s_2);...]
aggregates the signatures s_i
multiplied by their weights w_i
, i.e it returns the sum of w_i * s_i
. Return None
if deserialization of signatures fails. If subgroup_check
is set, the function also checks if the points are in the prime subgroup.
val aggregate_public_key_opt :
?subgroup_check:bool ->
{Public_key}34.t list ->
{Public_key}34.t option
aggregate_public_key_opt ?subgroup_check pks
aggregates the public keys pks
. If subgroup_check
is set, the function also checks if the points are in the prime subgroup.
val aggregate_public_key_weighted_opt :
?subgroup_check:bool ->
(Z.t * {Public_key}34.t) list ->
{Public_key}34.t option
aggregate_public_key_weighted_opt [(w_1, pk_1);(w_2, pk_2);...]
aggregates the public keys pk_i
multiplied by their weights w_i
, i.e it returns the sum of w_i * pk_i
. If subgroup_check
is set, the function also checks if the points are in the prime subgroup.
module Public_key_hash : sig ... end
module Public_key : sig ... end
module Secret_key : sig ... end
val pp : Stdlib.Format.formatter -> t -> unit
include Tezos_stdlib.Compare.S with type t := t
val to_b58check : t -> string
val to_short_b58check : t -> string
val of_b58check : string -> t Tezos_error_monad.Error_monad.tzresult
val of_b58check_exn : string -> t
val of_b58check_opt : string -> t option
val b58check_encoding : t Base58.encoding
val encoding : t Data_encoding.t
val rpc_arg : t Tezos_rpc.Arg.t
val zero : t
val sign : ?watermark:watermark -> Secret_key.t -> Stdlib.Bytes.t -> t
sign ?watermark sk message
produce the signature of message
(with possibly watermark
) using sk
.
val check : ?watermark:watermark -> Public_key.t -> t -> Stdlib.Bytes.t -> bool
check pk ?watermark signature message
check that signature
is the signature produced by signing message
(with possibly watermark
) with the secret key of pk
.
val generate_key :
?seed:Stdlib.Bytes.t ->
unit ->
Public_key_hash.t * Public_key.t * Secret_key.t
val deterministic_nonce : Secret_key.t -> Stdlib.Bytes.t -> Stdlib.Bytes.t
deterministic_nonce sk msg
returns a nonce that is determined by sk
and msg
val deterministic_nonce_hash : Secret_key.t -> Stdlib.Bytes.t -> Stdlib.Bytes.t
deterministic_nonce_hash sk msg
returns the BLAKE2b hash of a nonce that is determined by sk
and msg
.
In other words, Blake2b.digest (deterministic_nonce sk msg) =
deterministic_nonce_hash sk msg
share_secret_key sk m n
shares a secret key sk
between n
participants so that any m
participants can collaboratively sign messages, while fewer than m
participants cannot produce a valid signature. Each participant is assigned a unique identifier id_i
in range 1; n
.
val generate_threshold_key :
Secret_key.t ->
m:int ->
n:int ->
Public_key.t * Public_key_hash.t * Stdlib.Bytes.t * (int * Secret_key.t) list
generate_threshold_key sk m n
is the same as share_secret_key
sk m n
but also returns a public key, a public key hash and a proof of possession corresponding to a secret key sk
.
threshold_signature_opt [(id_x, s_x);(id_y, s_y);...]
reconstructs a signature if at least m
valid signatures s_i
produced by participants id_i
are provided.
val to_hex : t -> Tezos_stdlib.Hex.t
val of_hex : Tezos_stdlib.Hex.t -> t Tezos_error_monad.Error_monad.tzresult
val of_hex_opt : Tezos_stdlib.Hex.t -> t option
val of_hex_exn : Tezos_stdlib.Hex.t -> t
val to_string : t -> string
val of_string : string -> t Tezos_error_monad.Error_monad.tzresult
val of_string_opt : string -> t option
val of_string_exn : string -> t
val to_bytes : t -> Stdlib.Bytes.t
val of_bytes : Stdlib.Bytes.t -> t Tezos_error_monad.Error_monad.tzresult
val of_bytes_opt : Stdlib.Bytes.t -> t option
val of_bytes_exn : Stdlib.Bytes.t -> t
module Primitive : sig ... end
Module to access/expose the primitives of BLS12-381
val sign_aug : ?watermark:watermark -> Bls12_381_signature.sk -> watermark -> t
val check_aug : ?watermark:watermark -> Public_key.t -> t -> watermark -> bool
val pop_prove : ?msg:Public_key.t -> Bls12_381_signature.sk -> Stdlib.Bytes.t
val pop_verify : Public_key.t -> ?msg:Public_key.t -> Stdlib.Bytes.t -> bool