Module MinPk.Basic

Basic scheme described in section 3.1

In a basic scheme, rogue key attacks are handled by requiring all messages signed by an aggregate signature to be distinct. This requirement is enforced in the definition of AggregateVerify.

Basic.sign and Basic.verify implements the algorithms CoreSign and CoreVerify, respectively.

val sign : sk -> Stdlib.Bytes.t -> signature
val verify : pk -> Stdlib.Bytes.t -> signature -> bool
val aggregate_verify : (pk * Stdlib.Bytes.t) list -> signature -> bool

aggregate_verify pks msg aggregated_signature performs a aggregate signature verification. It implements the AggregateVerify algorithm specified in section 3.1.1. Raise Invalid_argument if the messages are not distinct.